gboolean dt_colorlabels_key_accel_callback(GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier, gpointer data) { const int mode = GPOINTER_TO_INT(data); int32_t selected; selected = dt_view_get_image_to_act_on(); if(selected <= 0) { switch(mode) { case 0: case 1: case 2: case 3: case 4: // colors red, yellow, green, blue, purple dt_colorlabels_toggle_label_selection(mode); break; case 5: default: // remove all selected dt_colorlabels_remove_labels_selection(); break; } } else { switch(mode) { case 0: case 1: case 2: case 3: case 4: // colors red, yellow, green, blue, purple dt_colorlabels_toggle_label(selected, mode); break; case 5: default: // remove all selected dt_colorlabels_remove_labels(selected); break; } } // synch to file: // TODO: move color labels to image_t cache and sync via write_get! dt_image_synch_xmp(selected); dt_control_signal_raise(darktable.signals, DT_SIGNAL_FILMROLLS_CHANGED); dt_control_queue_redraw_center(); return TRUE; }
void dt_colorlabels_key_accel_callback(GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier, gpointer data) { const long int mode = (long int)data; int selected; DT_CTL_GET_GLOBAL(selected, lib_image_mouse_over_id); if(selected <= 0) { switch(mode) { case 0: case 1: case 2: case 3: case 4: // colors red, yellow, green, blue, purple dt_colorlabels_toggle_label_selection(mode); break; case 5: default: // remove all selected dt_colorlabels_remove_labels_selection(); break; } } else { switch(mode) { case 0: case 1: case 2: case 3: case 4: // colors red, yellow, green, blue, purple dt_colorlabels_toggle_label(selected, mode); break; case 5: default: // remove all selected dt_colorlabels_remove_labels(selected); break; } } // synch to file: // TODO: move color labels to image_t cache and sync via write_get! dt_image_synch_xmp(selected); dt_control_queue_redraw_center(); }