Changeset 542

Show
Ignore:
Timestamp:
03/06/08 08:00:20 (6 months ago)
Author:
kickback
Message:

sweep: scheme menu previews plus some more code cleanage

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sweep/trunk/src/question_dialogs.c

    r540 r542  
    9797  GtkWidget * label; 
    9898  GtkWidget * pixmap; 
    99   GtkWidget * button_label; 
    100   GtkWidget * image; 
    10199  GtkWidget * button_hbox; 
    102100 
  • sweep/trunk/src/schemes.c

    r540 r542  
    311311schemes_refresh_color_scheme_menu_cb (GtkMenuItem * menuitem, gpointer user_data) 
    312312{ 
    313   if ((menuitem == NULL) || 
    314      (!GTK_IS_MENU_ITEM (menuitem))) 
    315     return FALSE; 
     313  g_return_val_if_fail (menuitem != NULL, FALSE); 
     314  g_return_val_if_fail (GTK_IS_MENU_ITEM (menuitem), FALSE); 
    316315                                         
    317316  gtk_menu_item_set_submenu (menuitem, NULL); 
     
    363362  gint          element; 
    364363  gchar       * default_name; 
     364  GdkColor    *color; 
    365365     
    366366  if (length != SCHEME_ELEMENT_LAST) 
     
    369369  scheme = sweep_scheme_new (); 
    370370  scheme->name = g_strdup(group); 
     371   
     372  color = g_new0 (GdkColor, 1); 
    371373     
    372374  FOR_EACH_ELEMENT { 
     
    379381    if ((string_list != NULL)  &&  
    380382      ((gint)num_strings == 3) &&  /* color, style-type and toggle */ 
    381       (gdk_color_parse (string_list[0], scheme->scheme_colors[element]))) { 
     383      (gdk_color_parse (string_list[0], color))) { 
     384           
     385      sweep_scheme_set_element_color (scheme, element, color); 
    382386    
    383387      scheme->element_enabled[element] =  
     
    394398      g_strfreev (string_list); 
    395399    } else { 
    396       //unref scheme 
     400      g_object_unref ((gpointer)scheme); 
    397401      return NULL; 
    398402    } 
    399403  } 
     404     
     405  g_free (color); 
     406     
    400407  return scheme; 
    401408} 
     
    405412{ 
    406413  gboolean ret; 
    407      
    408   if (scheme != NULL) { 
     414    
     415  g_return_if_fail (scheme != NULL); 
    409416       
    410417    if (prepend) 
     
    419426      g_signal_emit_by_name ((gpointer)menu_item_proxy, "event", NULL, &ret, NULL); 
    420427    } 
    421   } 
    422428} 
    423429 
     
    427433  gboolean ret; 
    428434     
     435  g_return_if_fail (scheme != NULL); 
     436     
    429437  // unref scheme triggering signals etc 
    430438  schemes_list = g_list_remove (schemes_list, scheme); 
    431   //g_object_unref ((gpointer) scheme); 
     439  g_object_unref ((gpointer) scheme); 
    432440  schemes_modified = TRUE; 
    433441  schemes_refresh_combo (0); 
     
    525533  SweepScheme * scheme = NULL; 
    526534     
     535  g_return_val_if_fail ((name != NULL), NULL); 
     536     
    527537  for (list = schemes_list; list; list = list->next) 
    528538  { 
     
    546556  gint     i; 
    547557  SweepScheme * scheme; 
    548      
    549558     
    550559  groups = g_key_file_get_groups (key_file, &groups_length); 
     
    720729{ 
    721730  GtkWidget * menuitem; 
     731  GtkWidget * hbox; 
     732  GtkWidget * label; 
     733  GtkWidget * image; 
    722734  GtkWidget * submenu; 
    723735  GList     * list; 
     
    728740  gtk_menu_item_set_submenu(GTK_MENU_ITEM(parent_menuitem), submenu); 
    729741 
    730   menuitem = gtk_menu_item_new_with_label (_("Show color scheme editor ...")); 
     742  menuitem = gtk_menu_item_new_with_label (_("Color scheme editor ...")); 
    731743  gtk_menu_append (GTK_MENU(submenu), menuitem); 
    732744   
     
    748760  for (list = schemes_list; list; list = list->next) { 
    749761         
    750     menuitem = gtk_menu_item_new_with_label (SWEEP_SCHEME (list->data)->name); 
     762    hbox  = gtk_hbox_new (FALSE, 0);  
     763    image = gtk_image_new_from_pixmap (SWEEP_SCHEME (list->data)->preview_icon, 
     764                                       NULL); 
     765    gtk_misc_set_alignment (GTK_MISC (image), 1, 0.5); 
     766    label = gtk_label_new (SWEEP_SCHEME (list->data)->name); 
     767     
     768     
     769    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2); 
     770    gtk_box_pack_start (GTK_BOX (hbox), image, TRUE, TRUE, 2); 
     771    gtk_widget_show_all (hbox); 
     772       
     773    menuitem = gtk_menu_item_new (); 
     774    gtk_container_add (GTK_CONTAINER (menuitem), hbox);  
    751775     
    752776    g_object_set_data (G_OBJECT(menuitem), "scheme",  
     
    776800    sweep_set_window_icon (GTK_WINDOW (window)); 
    777801   
    778     //attach_window_close_accel(window); 
     802    attach_window_close_accel (GTK_WINDOW (window)); 
    779803     
    780804    gtk_window_set_title (GTK_WINDOW (window), _("Sweep: Color Scheme Options")); 
     
    10281052                    NULL); 
    10291053  gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (schemes_combo), TRUE, TRUE, 0); 
     1054  gtk_tooltips_set_tip (tooltips, hbox,  
     1055                          _("Select a color scheme to edit"), 
     1056                          _("Select a color scheme to edit")); 
    10301057     
    10311058  /* new scheme button */ 
     
    12791306 
    12801307  colorselection = gtk_color_selection_new (); 
    1281   gtk_color_selection_set_update_policy (GTK_COLOR_SELECTION (colorselection), 
    1282                                          GTK_UPDATE_DELAYED); 
     1308 
    12831309  gtk_color_selection_set_has_opacity_control (GTK_COLOR_SELECTION (colorselection), FALSE); 
    12841310  gtk_container_add (GTK_CONTAINER (notebook1), colorselection); 
  • sweep/trunk/src/sweep-scheme.c

    r538 r542  
    8282  gint element; 
    8383  SweepScheme * scheme = SWEEP_SCHEME (object); 
     84  g_object_unref ((gpointer) scheme->preview_icon); 
    8485     
    8586  g_free (scheme->name); 
     
    9091  } 
    9192  g_free (scheme); 
     93     
     94  if (G_OBJECT_CLASS (sweep_scheme_parent_class)->finalize) 
     95    G_OBJECT_CLASS (sweep_scheme_parent_class)->finalize (object); 
    9296       
    9397} 
     
    97101   
    98102  gint element; 
    99  
     103  GdkVisual *visual; 
     104 
     105  visual = gdk_screen_get_system_visual (gdk_screen_get_default ()); 
    100106  scheme->modified = FALSE; 
    101107  scheme->is_default = FALSE; 
    102   scheme->preview_icon = NULL
     108  scheme->preview_icon = gdk_pixmap_new (NULL, 16, 16, visual->depth)
    103109 
    104110  for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
     
    137143                  g_cclosure_marshal_VOID__VOID, 
    138144                  G_TYPE_NONE, 0); 
     145  /* this may not be necessary */ 
     146  object_signals[CHANGED] = 
     147    g_signal_new ("preview-changed", 
     148                  G_TYPE_FROM_CLASS (gobject_class), 
     149                  G_SIGNAL_RUN_CLEANUP | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 
     150                  G_STRUCT_OFFSET (SweepSchemeClass, changed), 
     151                  NULL, NULL, 
     152                  g_cclosure_marshal_VOID__VOID, 
     153                  G_TYPE_NONE, 0); 
    139154     
    140155  klass->changed = NULL; 
     156  klass->preview_changed = NULL; 
    141157     
    142158} 
     
    148164    return g_object_new (SWEEP_TYPE_SCHEME, NULL); 
    149165     
     166} 
     167 
     168static void 
     169update_scheme_preview (SweepScheme * scheme) 
     170{ 
     171  GdkDrawable * preview_icon = GDK_DRAWABLE (scheme->preview_icon); 
     172  GdkGC       * gc = gdk_gc_new (preview_icon); 
     173     
     174  gdk_gc_set_rgb_fg_color (gc, scheme->scheme_colors[SCHEME_ELEMENT_BG]); 
     175  gdk_draw_rectangle (preview_icon,  
     176                      gc, 
     177                      TRUE, 0, 0, 16, 16); 
     178     
     179  gdk_gc_set_rgb_fg_color (gc, scheme->scheme_colors[SCHEME_ELEMENT_FG]); 
     180  gdk_draw_rectangle (preview_icon,  
     181                      gc, 
     182                      TRUE, 4, 4, 8, 8); 
     183    
     184  g_signal_emit_by_name ((gpointer) scheme, "preview-changed"); 
     185     
     186  g_object_unref ((gpointer) gc); 
    150187} 
    151188 
     
    173210        scheme_copy->element_enabled[element]      = scheme->element_enabled[element];  
    174211    } 
     212    update_scheme_preview (scheme_copy); 
    175213 
    176214  } 
     
    184222                                GdkColor * color) 
    185223{ 
    186     GdkColor * old_color; 
    187      
    188     if ((scheme != NULL) || 
    189         (color != NULL)) { 
     224  GdkColor * old_color; 
     225     
     226  if ((scheme != NULL) || 
     227      (color != NULL)) { 
    190228         
    191         if ((element < 0) || (element >= SCHEME_ELEMENT_LAST)) 
    192           return; 
    193          
    194         old_color = scheme->scheme_colors[element]; 
    195         scheme->scheme_colors[element] = copy_gdk_colour (color); 
    196         g_free (old_color); 
    197              
    198         g_signal_emit_by_name ((gpointer) scheme, "changed"); 
    199          
    200     } 
     229    if ((element < 0) || (element >= SCHEME_ELEMENT_LAST)) 
     230      return; 
     231       
     232    old_color = scheme->scheme_colors[element]; 
     233    scheme->scheme_colors[element] = copy_gdk_colour (color); 
     234    g_free (old_color); 
     235           
     236    g_signal_emit_by_name ((gpointer) scheme, "changed"); 
     237       
     238  if ((element == SCHEME_ELEMENT_FG) || (element == SCHEME_ELEMENT_BG)) 
     239    update_scheme_preview (scheme); 
     240  }  
    201241     
    202242} 
     
    217257             
    218258    g_signal_emit_by_name ((gpointer) scheme, "changed"); 
    219          
    220259  }  
    221260} 
     
    238277             
    239278    g_signal_emit_by_name ((gpointer) scheme, "changed"); 
    240          
     279       
     280    if ((element == SCHEME_ELEMENT_FG) || (element == SCHEME_ELEMENT_BG)) 
     281      update_scheme_preview (scheme); 
    241282  }  
    242283     
    243284} 
     285 
     286 
     287 
  • sweep/trunk/src/sweep-scheme.h

    r540 r542  
    8282struct _SweepScheme { 
    8383   
    84   GObject    parent; 
    85   GdkColor * scheme_colors[SCHEME_ELEMENT_LAST]; 
    86   gboolean   element_enabled[SCHEME_ELEMENT_LAST]; /* always true for some elements */ 
    87   gint       element_style[SCHEME_ELEMENT_LAST]; /* overrides custom colors if > 0 */ 
    88   gchar    * name; 
    89   gboolean   modified; 
    90   gboolean   is_default; 
    91   GdkPixbuf * preview_icon; 
    92  
    93    
     84  GObject     parent; 
     85  GdkColor  * scheme_colors[SCHEME_ELEMENT_LAST]; 
     86  gboolean    element_enabled[SCHEME_ELEMENT_LAST]; /* always true for some elements */ 
     87  gint        element_style[SCHEME_ELEMENT_LAST]; /* overrides custom colors if > 0 */ 
     88  gchar     * name; 
     89  gboolean    modified; 
     90  gboolean    is_default; 
     91  GdkPixmap * preview_icon; 
    9492}; 
    9593 
     
    10199  void (* destroy) (SweepScheme * object); 
    102100  void (* changed) (SweepScheme * object); 
     101  void (* preview_changed) (SweepScheme * object); 
    103102}; 
    104103