Changeset 576

Show
Ignore:
Timestamp:
05/19/08 13:32:57 (4 months ago)
Author:
kickback
Message:

sweep-unstable: move schemes_ed_* callbacks into schemes.c/h implement simple undo for scheme edits (revert to saved)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sweep/branches/sweep-unstable/src/callbacks.c

    r575 r576  
    10511051#endif 
    10521052 
    1053 void 
    1054 schemes_ed_new_clicked_cb (GtkButton *button, gpointer user_data) 
    1055 { 
    1056   SweepScheme *scheme; 
    1057      
    1058   scheme = schemes_get_scheme_system_default (); 
    1059   schemes_copy_scheme (scheme, _("New Scheme")); 
    1060    
    1061 } 
    1062  
    1063 void 
    1064 schemes_ed_copy_clicked_cb (GtkButton *button, gpointer user_data) 
    1065 { 
    1066      
    1067   gint index; 
    1068   SweepScheme *scheme; 
    1069      
    1070   if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (user_data))) != -1) 
    1071   { 
    1072       scheme = schemes_get_nth (index); 
    1073       if (scheme != NULL) 
    1074         schemes_copy_scheme (scheme, NULL); 
    1075   } 
    1076      
    1077 } 
    1078  
    1079  
    1080 void 
    1081 schemes_ed_delete_clicked_cb (GtkButton *button, gpointer user_data) 
    1082 { 
    1083      
    1084   gint index, result; 
    1085   GtkWindow *dialog; 
    1086   SweepScheme *scheme; 
    1087   GtkWidget *parent, *message, *icon, *hbox; 
    1088      
    1089   if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (user_data))) != -1) 
    1090   { 
    1091      
    1092     if ((parent = g_object_get_data (G_OBJECT (button), "parent")) == NULL) 
    1093       return; 
    1094        
    1095     dialog = gtk_dialog_new_with_buttons (_("Confirm delete"), 
    1096                                             parent, 
    1097                                             GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, 
    1098                                             GTK_STOCK_DELETE, 
    1099                                             GTK_RESPONSE_ACCEPT, 
    1100                                             GTK_STOCK_CANCEL, 
    1101                                             GTK_RESPONSE_REJECT, 
    1102                                             NULL); 
    1103     message = gtk_label_new (_("Are you sure you want to permanently delete this scheme?")); 
    1104     gtk_misc_set_padding (GTK_MISC (message), 10, 10); 
    1105  
    1106     icon    = gtk_image_new_from_stock ("gtk-dialog-warning", GTK_ICON_SIZE_DIALOG); 
    1107     gtk_misc_set_padding (GTK_MISC (icon), 10, 10); 
    1108  
    1109     hbox    = gtk_hbox_new (FALSE, 6); 
    1110     gtk_box_pack_start_defaults (GTK_BOX (hbox), icon); 
    1111     gtk_box_pack_start_defaults (GTK_BOX (hbox), message); 
    1112     gtk_box_pack_start_defaults ((GTK_DIALOG (dialog)->vbox), hbox); 
    1113     gtk_widget_show_all (GTK_DIALOG (dialog)->vbox); 
    1114     result = gtk_dialog_run (GTK_DIALOG (dialog)); 
    1115     gtk_widget_destroy (dialog); 
    1116        
    1117     if (result != GTK_RESPONSE_ACCEPT) 
    1118       return; 
    1119  
    1120     scheme = schemes_get_nth (index); 
    1121     if (scheme != NULL) 
    1122       schemes_remove_scheme (scheme); 
    1123   } 
    1124      
    1125 } 
    1126  
    1127 void 
    1128 schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data) 
    1129 { 
    1130  
    1131 } 
    1132  
    1133 void 
    1134 schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data) 
    1135 { 
    1136  
    1137 } 
    1138  
    1139 void 
    1140 schemes_ed_close_clicked_cb (GtkButton *button, gpointer user_data) 
    1141 { 
    1142   GtkWidget *widget = GTK_WIDGET (user_data); 
    1143   GtkWidget *parent = gtk_widget_get_parent (widget); 
    1144   
    1145   gtk_widget_destroy (parent); 
    1146 } 
    1147  
    1148 void 
    1149 schemes_ed_combo_changed_cb (GtkComboBox *widget, gpointer user_data) 
    1150 { 
    1151      
    1152     gint index; 
    1153      
    1154     if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) != -1) 
    1155         schemes_refresh_list_store (index); 
    1156 } 
    1157  
    1158 void 
    1159 schemes_ed_treeview_selection_changed_cb (GtkTreeSelection *selection, 
    1160                                          gpointer user_data) 
    1161 { 
    1162   GtkTreeIter iter; 
    1163   GtkTreeModel *model; 
    1164   gint element; 
    1165   SweepScheme *scheme; 
    1166      
    1167   if (gtk_tree_selection_get_selected (selection, 
    1168                                         &model, 
    1169                                         &iter)) { 
    1170     gtk_tree_model_get (model, 
    1171                         &iter, 
    1172                         SCHEME_OBJECT_COLUMN, &scheme, 
    1173                         ELEMENT_NUMBER_COLUMN, &element, 
    1174                         -1); 
    1175          
    1176     schemes_color_chooser_set_color (scheme, element); 
    1177   } 
    1178 } 
    1179  
    1180 void 
    1181 schemes_ed_destroy_cb                (GtkWidget       *widget, 
    1182                                       GdkEvent        *event, 
    1183                                       gpointer         user_data) 
    1184 { 
    1185  
    1186     gtk_widget_destroy (widget); 
    1187  
    1188 } 
    1189  
    1190  
    1191  
    1192 gboolean  
    1193 schemes_ed_delete_event_cb         ( GtkWidget *widget, 
    1194                                      GdkEvent  *event, 
    1195                                      gpointer   data ) { 
    1196  
    1197     return FALSE; 
    1198  
    1199 } 
    1200  
    1201 void 
    1202 schemes_ed_radio_toggled_cb (GtkToggleButton *togglebutton, gpointer user_data) 
    1203 { 
    1204     if (gtk_toggle_button_get_active (togglebutton)) 
    1205       prefs_set_int ("scheme-selection-method", GPOINTER_TO_INT (user_data)); 
    1206 } 
    1207  
    1208 void 
    1209 schemes_ed_color_changed_cb (GtkColorSelection *colorselection, 
    1210                           gpointer user_data) 
    1211 { 
    1212     schemes_set_active_element_color (colorselection); 
    1213 } 
    1214  
    1215 void 
    1216 schemes_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data) 
    1217 { 
    1218     GtkToggleButton * default_check_button; 
    1219     gint index; 
    1220     SweepScheme *scheme; 
    1221      
    1222     default_check_button = GTK_TOGGLE_BUTTON (user_data); 
    1223      
    1224     if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) != -1) { 
    1225       scheme = schemes_get_nth (index); 
    1226       if (scheme != NULL) 
    1227         g_signal_handlers_block_by_func (default_check_button, 
    1228                                          schemes_ed_default_button_toggled_cb, 
    1229                                          widget); 
    1230                                           
    1231         gtk_toggle_button_set_active (default_check_button, scheme->is_default); 
    1232         gtk_widget_set_sensitive (GTK_WIDGET (default_check_button), 
    1233                                   !scheme->is_default); 
    1234          
    1235         g_signal_handlers_unblock_by_func (default_check_button, 
    1236                                          schemes_ed_default_button_toggled_cb, 
    1237                                          widget); 
    1238     } 
    1239 } 
    1240  
    1241 void 
    1242 schemes_ed_default_button_toggled_cb (GtkToggleButton *togglebutton, 
    1243                                      gpointer user_data) 
    1244 { 
    1245     gint index; 
    1246     gboolean toggled; 
    1247     SweepScheme *scheme, *old_default_scheme; 
    1248  
    1249     toggled = gtk_toggle_button_get_active (togglebutton); 
    1250     index = gtk_combo_box_get_active (GTK_COMBO_BOX (user_data)); 
    1251      
    1252     if (index != -1) { 
    1253       scheme = schemes_get_nth (index); 
    1254      
    1255       if (scheme != NULL) { 
    1256           old_default_scheme = schemes_get_scheme_user_default (); 
    1257           old_default_scheme->is_default = FALSE; 
    1258           scheme->is_default = toggled; 
    1259           prefs_set_string ("user-default-scheme", scheme->name); 
    1260           gtk_widget_set_sensitive (GTK_WIDGET (togglebutton), 
    1261                                     !scheme->is_default); 
    1262         } 
    1263     } 
    1264 } 
  • sweep/branches/sweep-unstable/src/callbacks.h

    r575 r576  
    298298#endif 
    299299 
    300 void 
    301 schemes_ed_new_clicked_cb (GtkButton *button, gpointer user_data); 
    302 void 
    303 schemes_ed_copy_clicked_cb (GtkButton *button, gpointer user_data); 
    304  
    305 void 
    306 schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data); 
    307  
    308 void 
    309 schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data); 
    310  
    311 void 
    312 schemes_ed_delete_clicked_cb (GtkButton *button, gpointer user_data); 
    313 void 
    314 schemes_ed_close_clicked_cb (GtkButton *button, gpointer user_data); 
    315 void 
    316 schemes_ed_combo_changed_cb (GtkComboBox *widget, gpointer user_data); 
    317 gboolean  
    318 schemes_ed_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data); 
    319 void 
    320 schemes_ed_destroy_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data); 
    321 void 
    322 schemes_ed_radio_toggled_cb (GtkToggleButton *togglebutton, gpointer user_data); 
    323  
    324 void 
    325 schemes_ed_color_changed_cb  (GtkColorSelection *colorselection, 
    326                               gpointer user_data); 
    327  
    328 void 
    329 schemes_ed_treeview_selection_changed_cb (GtkTreeSelection *treeselection, 
    330                                          gpointer user_data); 
    331 void 
    332 schemes_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data); 
    333  
    334 void 
    335 schemes_ed_default_button_toggled_cb (GtkToggleButton *togglebutton, 
    336                                      gpointer user_data); 
    337  
    338  
    339300#endif /* __CALLBACKS_H__ */ 
  • sweep/branches/sweep-unstable/src/schemes.c

    r575 r576  
    8080extern gchar * element_names[]; 
    8181extern gchar * element_keys[]; 
    82 SweepScheme  * default_scheme = NULL; 
    83 gboolean schemes_modified = FALSE;  
     82SweepScheme  * default_scheme = NULL, *revert_scheme = NULL, *edited_scheme = NULL; 
     83gboolean       schemes_modified = FALSE; 
     84GSList       * lock_widgets = NULL; 
     85 
     86 
    8487#define FOR_EACH_ELEMENT for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
    8588 
     
    179182  } 
    180183} 
     184 
     185typedef enum  
     186{ 
     187    SCHEME_NOP, 
     188    SCHEME_REVERT, 
     189    SCHEME_SAVE 
     190} scheme_operation_t; 
     191 
     192static void 
     193schemes_ed_update_edit_status (scheme_operation_t op)  
     194{ 
     195  GtkWidget        * widget;   
     196  GSList           * list; 
     197  gboolean           sensitive, swap_status = FALSE; 
     198  GtkTreeSelection * selection; 
     199  GtkTreeModel     * model; 
     200  GtkTreeIter        iter; 
     201  gint               element; 
     202  SweepScheme      * scheme; 
     203     
     204  if ((revert_scheme == NULL) && (op == SCHEME_NOP)) { 
     205    revert_scheme = sweep_scheme_copy (edited_scheme); 
     206    swap_status = TRUE; 
     207  } 
     208     
     209  else if ((revert_scheme != NULL) && (op == SCHEME_SAVE)) {    
     210    g_object_unref (G_OBJECT (revert_scheme)); 
     211    revert_scheme = NULL; 
     212    swap_status = TRUE; 
     213  } 
     214     
     215  else if ((revert_scheme != NULL) && (op == SCHEME_REVERT)) {   
     216    sweep_scheme_set_from_scheme (revert_scheme, edited_scheme); 
     217       
     218    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); 
     219     
     220    if (gtk_tree_selection_get_selected (selection, 
     221                                        &model, 
     222                                        &iter)) { 
     223    gtk_tree_model_get (model, 
     224                        &iter, 
     225                        SCHEME_OBJECT_COLUMN, &scheme, 
     226                        ELEMENT_NUMBER_COLUMN, &element, 
     227                        -1); 
     228                                             
     229    gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (colorselection), 
     230                                         scheme->colors[element]); 
     231    gtk_color_selection_set_previous_color (GTK_COLOR_SELECTION (colorselection), 
     232                                         scheme->colors[element]); 
     233    }         
     234 
     235    g_object_unref (G_OBJECT (revert_scheme)); 
     236    revert_scheme = NULL; 
     237    swap_status = TRUE; 
     238  }   
     239   
     240  if (swap_status) { 
     241       
     242    for (list = lock_widgets; list; list = list->next) { 
     243      widget = GTK_WIDGET (list->data); 
     244      sensitive = GTK_WIDGET_IS_SENSITIVE (widget); 
     245      gtk_widget_set_sensitive (widget, !sensitive); 
     246    } 
     247  } 
     248} 
     249 
     250 
     251 
     252/* callbacks */ 
     253 
     254void 
     255schemes_ed_new_clicked_cb (GtkButton *button, gpointer user_data) 
     256{ 
     257  SweepScheme *scheme; 
     258     
     259  scheme = schemes_get_scheme_system_default (); 
     260  schemes_copy_scheme (scheme, _("New Scheme")); 
     261   
     262} 
     263 
     264void 
     265schemes_ed_copy_clicked_cb (GtkButton *button, gpointer user_data) 
     266{ 
     267     
     268  gint index; 
     269  SweepScheme *scheme; 
     270     
     271  if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (user_data))) != -1) 
     272  { 
     273      scheme = schemes_get_nth (index); 
     274      if (scheme != NULL) 
     275        schemes_copy_scheme (scheme, NULL); 
     276  } 
     277     
     278} 
     279 
     280 
     281void 
     282schemes_ed_delete_clicked_cb (GtkButton *button, gpointer user_data) 
     283{ 
     284     
     285  gint index, result; 
     286  GtkWidget *dialog; 
     287  SweepScheme *scheme; 
     288  GtkWidget *parent, *message, *icon, *hbox; 
     289     
     290  if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (user_data))) != -1) 
     291  { 
     292     
     293    if ((parent = g_object_get_data (G_OBJECT (button), "parent")) == NULL) 
     294      return; 
     295       
     296    dialog = gtk_dialog_new_with_buttons (_("Confirm delete"), 
     297                                            GTK_WINDOW (parent), 
     298                                            GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, 
     299                                            GTK_STOCK_CANCEL, 
     300                                            GTK_RESPONSE_REJECT, 
     301                                            GTK_STOCK_DELETE, 
     302                                            GTK_RESPONSE_ACCEPT, 
     303                                            NULL); 
     304    message = GTK_WIDGET (gtk_label_new (_("Are you sure you want to permanently delete this scheme?"))); 
     305 
     306    icon    = GTK_WIDGET (gtk_image_new_from_stock ("gtk-dialog-warning", GTK_ICON_SIZE_DIALOG)); 
     307    gtk_misc_set_padding (GTK_MISC (icon), 10, 10); 
     308 
     309    hbox    = gtk_hbox_new (FALSE, 6); 
     310    gtk_box_pack_start_defaults (GTK_BOX (hbox), icon); 
     311    gtk_box_pack_start_defaults (GTK_BOX (hbox), message); 
     312    gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox); 
     313    gtk_widget_show_all (GTK_DIALOG (dialog)->vbox); 
     314    result = gtk_dialog_run (GTK_DIALOG (dialog)); 
     315    gtk_widget_destroy (GTK_WIDGET (dialog)); 
     316       
     317    if (result != GTK_RESPONSE_ACCEPT) 
     318      return; 
     319 
     320    scheme = schemes_get_nth (index); 
     321    if (scheme != NULL) 
     322      schemes_remove_scheme (scheme); 
     323  } 
     324     
     325} 
     326 
     327void 
     328schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data) 
     329{ 
     330  schemes_ed_update_edit_status (SCHEME_REVERT); 
     331} 
     332 
     333void 
     334schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data) 
     335{ 
     336  schemes_ed_update_edit_status (SCHEME_SAVE); 
     337} 
     338 
     339void 
     340schemes_ed_close_clicked_cb (GtkButton *button, gpointer user_data) 
     341{ 
     342  GtkWidget *widget = GTK_WIDGET (user_data); 
     343  GtkWidget *parent = gtk_widget_get_parent (widget); 
     344  
     345  gtk_widget_destroy (parent); 
     346} 
     347 
     348void 
     349schemes_ed_combo_changed_cb (GtkComboBox *widget, gpointer user_data) 
     350{ 
     351     
     352    gint index; 
     353     
     354    if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) != -1) 
     355        schemes_refresh_list_store (index); 
     356} 
     357 
     358void 
     359schemes_ed_treeview_selection_changed_cb (GtkTreeSelection *selection, 
     360                                         gpointer user_data) 
     361{ 
     362  GtkTreeIter iter; 
     363  GtkTreeModel *model; 
     364  gint element; 
     365  SweepScheme *scheme; 
     366     
     367  if (gtk_tree_selection_get_selected (selection, 
     368                                        &model, 
     369                                        &iter)) { 
     370    gtk_tree_model_get (model, 
     371                        &iter, 
     372                        SCHEME_OBJECT_COLUMN, &scheme, 
     373                        ELEMENT_NUMBER_COLUMN, &element, 
     374                        -1); 
     375         
     376    schemes_color_chooser_set_color (scheme, element); 
     377  } 
     378} 
     379 
     380void 
     381schemes_ed_destroy_cb                (GtkWidget       *widget, 
     382                                      GdkEvent        *event, 
     383                                      gpointer         user_data) 
     384{ 
     385 
     386    gtk_widget_destroy (widget); 
     387 
     388} 
     389 
     390 
     391 
     392gboolean  
     393schemes_ed_delete_event_cb         ( GtkWidget *widget, 
     394                                     GdkEvent  *event, 
     395                                     gpointer   data ) { 
     396 
     397    return FALSE; 
     398 
     399} 
     400 
     401void 
     402schemes_ed_radio_toggled_cb (GtkToggleButton *togglebutton, gpointer user_data) 
     403{ 
     404    if (gtk_toggle_button_get_active (togglebutton)) 
     405      prefs_set_int ("scheme-selection-method", GPOINTER_TO_INT (user_data)); 
     406} 
     407 
     408void 
     409schemes_ed_color_changed_cb (GtkColorSelection *colorselection, 
     410                          gpointer user_data) 
     411{ 
     412    schemes_set_active_element_color (colorselection); 
     413} 
     414 
     415void 
     416schemes_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data) 
     417{ 
     418    GtkToggleButton * default_check_button; 
     419    gint index; 
     420    SweepScheme *scheme; 
     421     
     422    default_check_button = GTK_TOGGLE_BUTTON (user_data); 
     423     
     424    if ((index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) != -1) { 
     425      scheme = schemes_get_nth (index); 
     426      if (scheme != NULL) 
     427        g_signal_handlers_block_by_func (default_check_button, 
     428                                         schemes_ed_default_button_toggled_cb, 
     429                                         widget); 
     430                                          
     431        gtk_toggle_button_set_active (default_check_button, scheme->is_default); 
     432        gtk_widget_set_sensitive (GTK_WIDGET (default_check_button), 
     433                                  !scheme->is_default); 
     434         
     435        g_signal_handlers_unblock_by_func (default_check_button, 
     436                                         schemes_ed_default_button_toggled_cb, 
     437                                         widget); 
     438    } 
     439} 
     440 
     441void 
     442schemes_ed_default_button_toggled_cb (GtkToggleButton *togglebutton, 
     443                                     gpointer user_data) 
     444{ 
     445    gint index; 
     446    gboolean toggled; 
     447    SweepScheme *scheme, *old_default_scheme; 
     448 
     449    toggled = gtk_toggle_button_get_active (togglebutton); 
     450    index = gtk_combo_box_get_active (GTK_COMBO_BOX (user_data)); 
     451     
     452    if (index != -1) { 
     453      scheme = schemes_get_nth (index); 
     454     
     455      if (scheme != NULL) { 
     456          old_default_scheme = schemes_get_scheme_user_default (); 
     457          old_default_scheme->is_default = FALSE; 
     458          scheme->is_default = toggled; 
     459          prefs_set_string ("user-default-scheme", scheme->name); 
     460          gtk_widget_set_sensitive (GTK_WIDGET (togglebutton), 
     461                                    !scheme->is_default); 
     462        } 
     463    } 
     464} 
     465 
    181466 
    182467/* 
     
    8921177    return; 
    8931178 
     1179  edited_scheme = scheme; 
     1180   
    8941181  FOR_EACH_ELEMENT { 
    8951182       
     
    9121199void 
    9131200schemes_color_chooser_set_color (SweepScheme * scheme, gint element) 
    914 
    915   SweepScheme *scheme_undo;   
    916    
     1201{   
    9171202  if ((colorselection == NULL) || 
    9181203      (scheme == NULL) || 
     
    9201205      (element >= SCHEME_ELEMENT_LAST)) 
    9211206    return; 
    922      
    923   scheme_undo = g_object_get_data (G_OBJECT (colorselection), "scheme-undo"); 
    924      
    925   //if (scheme != scheme_undo) 
    926                                        // } 
    927   /* could use global vars here given the single editor instance, but nm */ 
    928   //g_object_set_data (G_OBJECT (colorselection), "scheme-undo", scheme);   
    9291207   
    9301208  g_signal_handlers_block_by_func     (colorselection,  
     
    9941272                        ELEMENT_NUMBER_COLUMN, &element, 
    9951273                        -1); 
     1274                                             
     1275    schemes_ed_update_edit_status (SCHEME_NOP); 
     1276                                             
    9961277    color = g_new (GdkColor, 1); 
     1278     
    9971279    gtk_color_selection_get_current_color (colorselection,  
    9981280                                          color);   
     
    10671349     
    10681350  hbox = gtk_hbox_new (FALSE, 0); 
     1351     
     1352  lock_widgets = g_slist_append (lock_widgets, hbox); 
     1353 
    10691354  gtk_widget_show (hbox); 
    10701355  gtk_box_pack_start (GTK_BOX (editor_vbox), hbox, FALSE, FALSE, 3); 
    10711356  gtk_container_set_border_width (GTK_CONTAINER (hbox), 2); 
    1072      
     1357       
    10731358  label = gtk_label_new (_("<b>Selected scheme</b>")); 
    10741359  gtk_misc_set_padding (GTK_MISC (label), 3, 0); 
     
    11411426                    G_CALLBACK (schemes_ed_update_default_button_cb), 
    11421427                    checkbutton); 
    1143      
    11441428   
    11451429  /** color swatches and color selection **/ 
     
    11761460 
    11771461  button = gtk_button_new_from_stock ("gtk-close"); 
     1462   
     1463  lock_widgets = g_slist_append (lock_widgets, button);   
     1464   
    11781465  gtk_container_add (GTK_CONTAINER (hbuttonbox), button); 
    11791466  gtk_container_set_border_width (GTK_CONTAINER (button), 1); 
     
    11861473     
    11871474  hbuttonbox = gtk_hbutton_box_new (); 
     1475     
     1476  gtk_widget_set_sensitive (hbuttonbox, FALSE); 
     1477   
     1478  lock_widgets = g_slist_append (lock_widgets, hbuttonbox);   
     1479   
    11881480  gtk_box_pack_start (GTK_BOX (editor_vbox), hbuttonbox, FALSE, FALSE, 0); 
    11891481  gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox), 4); 
     
    12031495  gtk_container_set_border_width (GTK_CONTAINER (button), 1); 
    12041496  GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); 
    1205   gtk_widget_set_sensitive (button, FALSE); 
    12061497     
    12071498  /* save scheme button */ 
     
    12181509  gtk_container_set_border_width (GTK_CONTAINER (button), 1); 
    12191510  GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); 
    1220   gtk_widget_set_sensitive (button, FALSE); 
    1221      
     1511 
    12221512  /** general tab option widgets **/ 
    12231513     
     
    14191709  return scrollwindow; 
    14201710} 
     1711 
  • sweep/branches/sweep-unstable/src/schemes.h

    r540 r576  
    113113schemes_set_active_element_color (GtkColorSelection * selection); 
    114114 
     115void 
     116schemes_ed_new_clicked_cb (GtkButton *button, gpointer user_data); 
     117void 
     118schemes_ed_copy_clicked_cb (GtkButton *button, gpointer user_data); 
     119 
     120void 
     121schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data); 
     122 
     123void 
     124schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data); 
     125 
     126void 
     127schemes_ed_delete_clicked_cb (GtkButton *button, gpointer user_data); 
     128void 
     129schemes_ed_close_clicked_cb (GtkButton *button, gpointer user_data); 
     130void 
     131schemes_ed_combo_changed_cb (GtkComboBox *widget, gpointer user_data); 
     132gboolean  
     133schemes_ed_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data); 
     134void 
     135schemes_ed_destroy_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data); 
     136void 
     137schemes_ed_radio_toggled_cb (GtkToggleButton *togglebutton, gpointer user_data); 
     138 
     139void 
     140schemes_ed_color_changed_cb  (GtkColorSelection *colorselection, 
     141                              gpointer user_data); 
     142 
     143void 
     144schemes_ed_treeview_selection_changed_cb (GtkTreeSelection *treeselection, 
     145                                         gpointer user_data); 
     146void 
     147schemes_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data); 
     148 
     149void 
     150schemes_ed_default_button_toggled_cb (GtkToggleButton *togglebutton, 
     151                                     gpointer user_data); 
    115152 
    116153#endif /* __SCHEMES_H__ */ 
  • sweep/branches/sweep-unstable/src/sweep-scheme.c

    r546 r576  
    181181} 
    182182 
     183void 
     184sweep_scheme_set_from_scheme (SweepScheme *src, SweepScheme *dest) 
     185{ 
     186  gint element; 
     187     
     188  if (!SWEEP_IS_SCHEME (src) || !SWEEP_IS_SCHEME (dest)) 
     189    return; 
     190 
     191 
     192  if (dest->name != NULL) g_free (dest->name); 
     193  dest->name       = g_strdup (src->name); 
     194  dest->modified   = TRUE; /* possibly FALSE via reverted changes but.. nps */  
     195  dest->is_default = src->is_default; 
     196  src->is_default = FALSE; /* FIXME: blerg. only one default though */ 
     197       
     198  for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
     199  { 
     200      dest->colors[element]->red   = src->colors[element]->red; 
     201      dest->colors[element]->green = src->colors[element]->green; 
     202      dest->colors[element]->blue  = src->colors[element]->blue; 
     203      dest->enabled[element]       = src->enabled[element]; 
     204      dest->styles[element]        = src->styles[element]; 
     205  } 
     206  update_scheme_preview (dest); 
     207     
     208  g_signal_emit_by_name ((gpointer) dest, "changed"); 
     209} 
     210 
    183211SweepScheme * 
    184212sweep_scheme_copy (SweepScheme *scheme) 
    185213{ 
    186    
    187   gint element; 
    188   SweepScheme * scheme_copy; 
    189      
    190   if (!SWEEP_IS_SCHEME (scheme)) 
    191     return NULL; 
    192   else { 
    193     scheme_copy = sweep_scheme_new (); 
    194      
    195     scheme_copy->name       = g_strdup (scheme->name); 
    196     scheme_copy->modified   = FALSE; //scheme->modified;  
    197     scheme_copy->is_default = FALSE; 
    198        
    199     for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
    200     { 
    201         scheme_copy->colors[element]->red   = scheme->colors[element]->red; 
    202         scheme_copy->colors[element]->green = scheme->colors[element]->green; 
    203         scheme_copy->colors[element]->blue  = scheme->colors[element]->blue; 
    204         scheme_copy->enabled[element]       = scheme->enabled[element]; 
    205         scheme_copy->styles[element]        = scheme->styles[element]; 
    206     } 
    207     update_scheme_preview (scheme_copy); 
    208  
    209   } 
     214  SweepScheme *scheme_copy = sweep_scheme_new (); 
     215 
     216  sweep_scheme_set_from_scheme (scheme, scheme_copy); 
     217 
    210218  return scheme_copy; 
    211219 
  • sweep/branches/sweep-unstable/src/sweep-scheme.h

    r545 r576  
    105105sweep_scheme_new (void); 
    106106 
     107void 
     108sweep_scheme_set_from_scheme (SweepScheme *src,  
     109                        SweepScheme *dest); 
     110 
    107111SweepScheme * 
    108112sweep_scheme_copy (SweepScheme *scheme);