Changeset 538

Show
Ignore:
Timestamp:
03/01/08 10:52:31 (6 months ago)
Author:
kickback
Message:

sweep: implement default scheme selection. tweak keyfile parser

Files:

Legend:

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

    r536 r538  
    11821182} 
    11831183 
    1184  
     1184void 
     1185scheme_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data) 
     1186
     1187    GtkToggleButton * default_check_button; 
     1188    gint index; 
     1189    SweepScheme *scheme; 
     1190     
     1191    default_check_button = GTK_TOGGLE_BUTTON (user_data); 
     1192     
     1193    if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) != -1) { 
     1194      scheme = schemes_get_nth (index); 
     1195      if (scheme != NULL) 
     1196        g_signal_handlers_block_by_func (default_check_button, 
     1197                                         scheme_ed_default_button_toggled_cb, 
     1198                                         widget); 
     1199                                          
     1200        gtk_toggle_button_set_active (default_check_button, scheme->is_default); 
     1201         
     1202        g_signal_handlers_unblock_by_func (default_check_button, 
     1203                                         scheme_ed_default_button_toggled_cb, 
     1204                                         widget); 
     1205    } 
     1206
     1207 
     1208void 
     1209scheme_ed_default_button_toggled_cb (GtkToggleButton *togglebutton, 
     1210                                     gpointer user_data) 
     1211
     1212    gint index; 
     1213    gboolean toggled; 
     1214    SweepScheme *scheme, *old_default_scheme; 
     1215 
     1216    toggled = gtk_toggle_button_get_active (togglebutton); 
     1217    index = gtk_combo_box_get_active (GTK_COMBO_BOX (user_data)); 
     1218     
     1219    if (index != -1) { 
     1220      scheme = schemes_get_nth (index); 
     1221     
     1222      if (scheme != NULL) { 
     1223          old_default_scheme = schemes_get_scheme_user_default (); 
     1224          old_default_scheme->is_default = FALSE; 
     1225          scheme->is_default = toggled; 
     1226          prefs_set_string ("user-default-scheme", scheme->name); 
     1227        } 
     1228    } 
     1229
  • sweep/trunk/src/callbacks.h

    r536 r538  
    329329schemes_ed_treeview_selection_changed_cb (GtkTreeSelection *treeselection, 
    330330                                         gpointer user_data); 
     331void 
     332scheme_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data); 
     333 
     334void 
     335scheme_ed_default_button_toggled_cb (GtkToggleButton *togglebutton, 
     336                                     gpointer user_data); 
    331337 
    332338 
  • sweep/trunk/src/schemes.c

    r537 r538  
    361361  gsize         num_strings;  
    362362  gint          element; 
     363  gchar       * default_name; 
    363364     
    364365  if (length != SCHEME_ELEMENT_LAST) 
     
    368369  scheme->name = g_strdup(group); 
    369370     
    370     FOR_EACH_ELEMENT { 
    371          
    372       string_list = g_key_file_get_string_list (key_file, 
    373                                        group, 
    374                                        keys[element], 
    375                                        &num_strings, 
    376                                        &error); 
    377       if (string_list == NULL) 
    378         return NULL; 
    379          
    380       if ((gint)num_strings != 3) { /* color, style-type and toggle */ 
    381         g_strfreev (string_list); 
    382         return NULL; 
     371  FOR_EACH_ELEMENT { 
     372         
     373    string_list = g_key_file_get_string_list (key_file, 
     374                                     group, 
     375                                     keys[element], 
     376                                     &num_strings, 
     377                                     &error); 
     378    if ((string_list != NULL)  &&  
     379      ((gint)num_strings == 3) &&  /* color, style-type and toggle */ 
     380      (gdk_color_parse (string_list[0], scheme->scheme_colors[element]))) { 
     381    
     382      scheme->element_enabled[element] =  
     383       (g_ascii_strncasecmp (string_list[2], "ENABLED", 7) == 0) ? TRUE : FALSE; 
     384     
     385      scheme->element_style[element]   = element_get_style_type (string_list[1]); 
     386       
     387      default_name = prefs_get_string ("user-default-scheme"); 
     388       
     389      if (default_name != NULL) { 
     390        if (g_utf8_collate (default_name, scheme->name) == 0) 
     391          scheme->is_default = TRUE; 
    383392      } 
    384        
    385       if (!gdk_color_parse (string_list[0], scheme->scheme_colors[element])) 
    386         return NULL; 
    387      
    388       scheme->element_enabled[element] =  
    389         (g_ascii_strncasecmp (string_list[2], "ENABLED", 7) == 0) ? TRUE : FALSE; 
    390         
    391       scheme->element_style[element]   = element_get_style_type (string_list[1]); 
    392  
     393      g_strfreev (string_list); 
     394    } else { 
     395      //unref scheme 
     396      return NULL; 
     397    } 
    393398  } 
    394399  return scheme; 
    395400} 
     401 
    396402void  
    397403schemes_add_scheme (SweepScheme * scheme, gboolean prepend)  
     
    10841090                          _("Toggle whether the selected scheme is the default")); 
    10851091     
     1092  g_signal_connect ((gpointer) checkbutton, "toggled", 
     1093                    G_CALLBACK (scheme_ed_default_button_toggled_cb), 
     1094                    schemes_combo); 
     1095  /* sync with selected scheme */ 
     1096  g_signal_connect ((gpointer) schemes_combo, "changed", 
     1097                    G_CALLBACK (scheme_ed_update_default_button_cb), 
     1098                    checkbutton); 
     1099     
    10861100   
    10871101  /** color swatches and color selection **/ 
  • sweep/trunk/src/schemes.h

    r532 r538  
    7474schemes_get_scheme_system_default (void); 
    7575 
     76SweepScheme * 
     77schemes_get_scheme_user_default (void); 
     78 
    7679void 
    7780schemes_remove_scheme (SweepScheme *scheme); 
  • sweep/trunk/src/sweep-scheme.c

    r536 r538  
    7777 
    7878static void 
    79 sweep_scheme_finalize (GObject *object)  
     79sweep_scheme_finalize (GObject * object)  
    8080{ 
    8181     
    8282  gint element; 
    83   SweepScheme *scheme = SWEEP_SCHEME (object); 
     83  SweepScheme * scheme = SWEEP_SCHEME (object); 
    8484     
    8585  g_free (scheme->name); 
     
    9393} 
    9494static void 
    95 sweep_scheme_init (SweepScheme *scheme) 
     95sweep_scheme_init (SweepScheme * scheme) 
    9696{ 
    9797   
     
    9999 
    100100  scheme->modified = FALSE; 
     101  scheme->is_default = FALSE; 
    101102  scheme->preview_icon = NULL; 
    102103 
     
    109110 
    110111static void 
    111 sweep_scheme_class_init (SweepSchemeClass *klass)  
     112sweep_scheme_class_init (SweepSchemeClass * klass)  
    112113{ 
    113114 
     
    154155   
    155156  gint element; 
    156   SweepScheme *scheme_copy; 
     157  SweepScheme * scheme_copy; 
    157158     
    158159  if (!SWEEP_IS_SCHEME (scheme)) 
     
    161162    scheme_copy = sweep_scheme_new (); 
    162163     
    163     scheme_copy->name     = g_strdup (scheme->name); 
    164     scheme_copy->modified = scheme->modified; 
     164    scheme_copy->name       = g_strdup (scheme->name); 
     165    scheme_copy->modified   = FALSE; //scheme->modified;  
     166    scheme_copy->is_default = FALSE; 
    165167       
    166168    for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
     
    178180 
    179181void 
    180 sweep_scheme_set_element_color (SweepScheme *scheme, 
     182sweep_scheme_set_element_color (SweepScheme * scheme, 
    181183                                gint element, 
    182                                 GdkColor *color) 
    183 { 
    184     GdkColor *old_color; 
     184                                GdkColor * color) 
     185{ 
     186    GdkColor * old_color; 
    185187     
    186188    if ((scheme != NULL) || 
     
    201203 
    202204void 
    203 sweep_scheme_set_element_enabled (SweepScheme *scheme, 
     205sweep_scheme_set_element_enabled (SweepScheme * scheme, 
    204206                                  gint element, 
    205207                                  gboolean is_enabled) 
     
    220222 
    221223void 
    222 sweep_scheme_set_element_style (SweepScheme *scheme, 
     224sweep_scheme_set_element_style (SweepScheme * scheme, 
    223225                                gint element, 
    224226                                gint style) 
  • sweep/trunk/src/sweep-scheme.h

    r536 r538  
    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   GdkPixbuf *preview_icon; 
     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; 
    9192 
    9293   
     
    9899  GObjectClass parent_class; 
    99100     
    100   void (*destroy) (SweepScheme *object); 
    101   void (*changed) (SweepScheme *object); 
     101  void (* destroy) (SweepScheme * object); 
     102  void (* changed) (SweepScheme * object); 
    102103}; 
    103104 
    104 SweepScheme  
    105 *sweep_scheme_new (void); 
     105SweepScheme * 
     106sweep_scheme_new (void); 
    106107 
    107108SweepScheme * 
     
    112113 
    113114void 
    114 sweep_scheme_set_element_color (SweepScheme *scheme, 
     115sweep_scheme_set_element_color (SweepScheme * scheme, 
    115116                                gint element, 
    116                                 GdkColor *color); 
     117                                GdkColor * color); 
    117118void 
    118 sweep_scheme_set_element_enabled (SweepScheme *scheme, 
     119sweep_scheme_set_element_enabled (SweepScheme * scheme, 
    119120                                  gint element, 
    120121                                  gboolean is_enabled); 
    121122void 
    122 sweep_scheme_set_element_style (SweepScheme *scheme, 
     123sweep_scheme_set_element_style (SweepScheme * scheme, 
    123124                                gint element, 
    124125                                gint style); 
  • sweep/trunk/src/sweep_sample.c

    r532 r538  
    19171917    /* OK */ 
    19181918     
    1919     ok_button = gtk_button_new_with_label (_("OK")); 
     1919    ok_button = gtk_button_new_from_stock ("gtk-ok"); 
    19201920    GTK_WIDGET_SET_FLAGS (GTK_WIDGET (ok_button), GTK_CAN_DEFAULT); 
    19211921    gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->action_area), ok_button,