Changeset 576
- Timestamp:
- 05/19/08 13:32:57 (4 months ago)
- Files:
-
- sweep/branches/sweep-unstable/src/callbacks.c (modified) (1 diff)
- sweep/branches/sweep-unstable/src/callbacks.h (modified) (1 diff)
- sweep/branches/sweep-unstable/src/schemes.c (modified) (13 diffs)
- sweep/branches/sweep-unstable/src/schemes.h (modified) (1 diff)
- sweep/branches/sweep-unstable/src/sweep-scheme.c (modified) (1 diff)
- sweep/branches/sweep-unstable/src/sweep-scheme.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sweep/branches/sweep-unstable/src/callbacks.c
r575 r576 1051 1051 #endif 1052 1052 1053 void1054 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 void1064 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 void1081 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 void1128 schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data)1129 {1130 1131 }1132 1133 void1134 schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data)1135 {1136 1137 }1138 1139 void1140 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 void1149 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 void1159 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 void1181 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 gboolean1193 schemes_ed_delete_event_cb ( GtkWidget *widget,1194 GdkEvent *event,1195 gpointer data ) {1196 1197 return FALSE;1198 1199 }1200 1201 void1202 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 void1209 schemes_ed_color_changed_cb (GtkColorSelection *colorselection,1210 gpointer user_data)1211 {1212 schemes_set_active_element_color (colorselection);1213 }1214 1215 void1216 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 void1242 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 298 298 #endif 299 299 300 void301 schemes_ed_new_clicked_cb (GtkButton *button, gpointer user_data);302 void303 schemes_ed_copy_clicked_cb (GtkButton *button, gpointer user_data);304 305 void306 schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data);307 308 void309 schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data);310 311 void312 schemes_ed_delete_clicked_cb (GtkButton *button, gpointer user_data);313 void314 schemes_ed_close_clicked_cb (GtkButton *button, gpointer user_data);315 void316 schemes_ed_combo_changed_cb (GtkComboBox *widget, gpointer user_data);317 gboolean318 schemes_ed_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data);319 void320 schemes_ed_destroy_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data);321 void322 schemes_ed_radio_toggled_cb (GtkToggleButton *togglebutton, gpointer user_data);323 324 void325 schemes_ed_color_changed_cb (GtkColorSelection *colorselection,326 gpointer user_data);327 328 void329 schemes_ed_treeview_selection_changed_cb (GtkTreeSelection *treeselection,330 gpointer user_data);331 void332 schemes_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data);333 334 void335 schemes_ed_default_button_toggled_cb (GtkToggleButton *togglebutton,336 gpointer user_data);337 338 339 300 #endif /* __CALLBACKS_H__ */ sweep/branches/sweep-unstable/src/schemes.c
r575 r576 80 80 extern gchar * element_names[]; 81 81 extern gchar * element_keys[]; 82 SweepScheme * default_scheme = NULL; 83 gboolean schemes_modified = FALSE; 82 SweepScheme * default_scheme = NULL, *revert_scheme = NULL, *edited_scheme = NULL; 83 gboolean schemes_modified = FALSE; 84 GSList * lock_widgets = NULL; 85 86 84 87 #define FOR_EACH_ELEMENT for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 85 88 … … 179 182 } 180 183 } 184 185 typedef enum 186 { 187 SCHEME_NOP, 188 SCHEME_REVERT, 189 SCHEME_SAVE 190 } scheme_operation_t; 191 192 static void 193 schemes_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 254 void 255 schemes_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 264 void 265 schemes_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 281 void 282 schemes_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 327 void 328 schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data) 329 { 330 schemes_ed_update_edit_status (SCHEME_REVERT); 331 } 332 333 void 334 schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data) 335 { 336 schemes_ed_update_edit_status (SCHEME_SAVE); 337 } 338 339 void 340 schemes_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 348 void 349 schemes_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 358 void 359 schemes_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 380 void 381 schemes_ed_destroy_cb (GtkWidget *widget, 382 GdkEvent *event, 383 gpointer user_data) 384 { 385 386 gtk_widget_destroy (widget); 387 388 } 389 390 391 392 gboolean 393 schemes_ed_delete_event_cb ( GtkWidget *widget, 394 GdkEvent *event, 395 gpointer data ) { 396 397 return FALSE; 398 399 } 400 401 void 402 schemes_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 408 void 409 schemes_ed_color_changed_cb (GtkColorSelection *colorselection, 410 gpointer user_data) 411 { 412 schemes_set_active_element_color (colorselection); 413 } 414 415 void 416 schemes_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 441 void 442 schemes_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 181 466 182 467 /* … … 892 1177 return; 893 1178 1179 edited_scheme = scheme; 1180 894 1181 FOR_EACH_ELEMENT { 895 1182 … … 912 1199 void 913 1200 schemes_color_chooser_set_color (SweepScheme * scheme, gint element) 914 { 915 SweepScheme *scheme_undo; 916 1201 { 917 1202 if ((colorselection == NULL) || 918 1203 (scheme == NULL) || … … 920 1205 (element >= SCHEME_ELEMENT_LAST)) 921 1206 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);929 1207 930 1208 g_signal_handlers_block_by_func (colorselection, … … 994 1272 ELEMENT_NUMBER_COLUMN, &element, 995 1273 -1); 1274 1275 schemes_ed_update_edit_status (SCHEME_NOP); 1276 996 1277 color = g_new (GdkColor, 1); 1278 997 1279 gtk_color_selection_get_current_color (colorselection, 998 1280 color); … … 1067 1349 1068 1350 hbox = gtk_hbox_new (FALSE, 0); 1351 1352 lock_widgets = g_slist_append (lock_widgets, hbox); 1353 1069 1354 gtk_widget_show (hbox); 1070 1355 gtk_box_pack_start (GTK_BOX (editor_vbox), hbox, FALSE, FALSE, 3); 1071 1356 gtk_container_set_border_width (GTK_CONTAINER (hbox), 2); 1072 1357 1073 1358 label = gtk_label_new (_("<b>Selected scheme</b>")); 1074 1359 gtk_misc_set_padding (GTK_MISC (label), 3, 0); … … 1141 1426 G_CALLBACK (schemes_ed_update_default_button_cb), 1142 1427 checkbutton); 1143 1144 1428 1145 1429 /** color swatches and color selection **/ … … 1176 1460 1177 1461 button = gtk_button_new_from_stock ("gtk-close"); 1462 1463 lock_widgets = g_slist_append (lock_widgets, button); 1464 1178 1465 gtk_container_add (GTK_CONTAINER (hbuttonbox), button); 1179 1466 gtk_container_set_border_width (GTK_CONTAINER (button), 1); … … 1186 1473 1187 1474 hbuttonbox = gtk_hbutton_box_new (); 1475 1476 gtk_widget_set_sensitive (hbuttonbox, FALSE); 1477 1478 lock_widgets = g_slist_append (lock_widgets, hbuttonbox); 1479 1188 1480 gtk_box_pack_start (GTK_BOX (editor_vbox), hbuttonbox, FALSE, FALSE, 0); 1189 1481 gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox), 4); … … 1203 1495 gtk_container_set_border_width (GTK_CONTAINER (button), 1); 1204 1496 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); 1205 gtk_widget_set_sensitive (button, FALSE);1206 1497 1207 1498 /* save scheme button */ … … 1218 1509 gtk_container_set_border_width (GTK_CONTAINER (button), 1); 1219 1510 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); 1220 gtk_widget_set_sensitive (button, FALSE); 1221 1511 1222 1512 /** general tab option widgets **/ 1223 1513 … … 1419 1709 return scrollwindow; 1420 1710 } 1711 sweep/branches/sweep-unstable/src/schemes.h
r540 r576 113 113 schemes_set_active_element_color (GtkColorSelection * selection); 114 114 115 void 116 schemes_ed_new_clicked_cb (GtkButton *button, gpointer user_data); 117 void 118 schemes_ed_copy_clicked_cb (GtkButton *button, gpointer user_data); 119 120 void 121 schemes_ed_revert_clicked_cb (GtkButton *button, gpointer user_data); 122 123 void 124 schemes_ed_save_clicked_cb (GtkButton *button, gpointer user_data); 125 126 void 127 schemes_ed_delete_clicked_cb (GtkButton *button, gpointer user_data); 128 void 129 schemes_ed_close_clicked_cb (GtkButton *button, gpointer user_data); 130 void 131 schemes_ed_combo_changed_cb (GtkComboBox *widget, gpointer user_data); 132 gboolean 133 schemes_ed_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data); 134 void 135 schemes_ed_destroy_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data); 136 void 137 schemes_ed_radio_toggled_cb (GtkToggleButton *togglebutton, gpointer user_data); 138 139 void 140 schemes_ed_color_changed_cb (GtkColorSelection *colorselection, 141 gpointer user_data); 142 143 void 144 schemes_ed_treeview_selection_changed_cb (GtkTreeSelection *treeselection, 145 gpointer user_data); 146 void 147 schemes_ed_update_default_button_cb (GtkComboBox *widget, gpointer user_data); 148 149 void 150 schemes_ed_default_button_toggled_cb (GtkToggleButton *togglebutton, 151 gpointer user_data); 115 152 116 153 #endif /* __SCHEMES_H__ */ sweep/branches/sweep-unstable/src/sweep-scheme.c
r546 r576 181 181 } 182 182 183 void 184 sweep_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 183 211 SweepScheme * 184 212 sweep_scheme_copy (SweepScheme *scheme) 185 213 { 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 210 218 return scheme_copy; 211 219 sweep/branches/sweep-unstable/src/sweep-scheme.h
r545 r576 105 105 sweep_scheme_new (void); 106 106 107 void 108 sweep_scheme_set_from_scheme (SweepScheme *src, 109 SweepScheme *dest); 110 107 111 SweepScheme * 108 112 sweep_scheme_copy (SweepScheme *scheme);
