static gboolean _lib_ratings_button_press_callback(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { dt_lib_module_t *self = (dt_lib_module_t *)user_data; dt_lib_ratings_t *d = (dt_lib_ratings_t *)self->data; if(d->current > 0) { int32_t mouse_over_id; mouse_over_id = dt_view_get_image_to_act_on(); if(mouse_over_id <= 0) { dt_ratings_apply_to_selection(d->current); } else { dt_ratings_apply_to_image(mouse_over_id, d->current); // dt_control_log(ngettext("applying rating %d to %d image", "applying rating %d to %d images", 1), // d->current, 1); //FIXME: Change the message after release } dt_control_queue_redraw_center(); } return TRUE; }
static void export_button_clicked (GtkWidget *widget, gpointer user_data) { char style[128]; // Let's get the max dimension restriction if any... // TODO: pass the relevant values directly, not using the conf ... int max_width = dt_conf_get_int ("plugins/lighttable/export/width"); int max_height = dt_conf_get_int ("plugins/lighttable/export/height"); char *format_name = dt_conf_get_string("plugins/lighttable/export/format_name"); char *storage_name = dt_conf_get_string("plugins/lighttable/export/storage_name"); int format_index = dt_imageio_get_index_of_format(dt_imageio_get_format_by_name(format_name)); int storage_index = dt_imageio_get_index_of_storage(dt_imageio_get_storage_by_name(storage_name)); g_free(format_name); g_free(storage_name); gboolean high_quality = dt_conf_get_bool("plugins/lighttable/export/high_quality_processing"); char* tmp = dt_conf_get_string("plugins/lighttable/export/style"); if (tmp) { g_strlcpy(style, tmp, sizeof(style)); g_free(tmp); } int imgid = dt_view_get_image_to_act_on(); GList *list = NULL; if (imgid != -1) list = g_list_append (list, GINT_TO_POINTER(imgid)); else list = dt_collection_get_selected(darktable.collection, -1); dt_control_export(list, max_width, max_height, format_index, storage_index, high_quality,style); }
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; }
/* enumerator of selected images */ void dt_control_image_enumerator_job_selected_init(dt_control_image_enumerator_t *t) { GList *list = NULL; long int imgid = dt_view_get_image_to_act_on(); if(imgid < 0) { /* get sorted list of selected images */ t->index = dt_collection_get_selected(darktable.collection); } else { /* Create a list with only one image */ list = g_list_append (list, (gpointer)imgid); t->index = list; } }
static int act_on_cb(lua_State *L) { int32_t imgid = dt_view_get_image_to_act_on(); lua_newtable(L); if(imgid != -1) { luaA_push(L,dt_lua_image_t,&imgid); luaL_ref(L,-2); return 1; } else { GList *image = dt_collection_get_selected(darktable.collection, -1); while(image) { luaA_push(L,dt_lua_image_t,&image->data); luaL_ref(L,-2); image = g_list_delete_link(image, image); } return 1; } }
static void detach_selected_tag(dt_lib_module_t *self, dt_lib_tagging_t *d) { GtkTreeIter iter; GtkTreeModel *model = NULL; GtkTreeView *view = d->current; GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view)); if(!gtk_tree_selection_get_selected(selection, &model, &iter)) return; guint tagid; gtk_tree_model_get(model, &iter, DT_LIB_TAGGING_COL_ID, &tagid, -1); int imgsel = -1; if(tagid <= 0) return; imgsel = dt_view_get_image_to_act_on(); dt_tag_detach(tagid, imgsel); dt_image_synch_xmp(imgsel); dt_control_signal_raise(darktable.signals, DT_SIGNAL_TAG_CHANGED); }
static void attach_selected_tag(dt_lib_module_t *self, dt_lib_tagging_t *d) { GtkTreeIter iter; GtkTreeModel *model = NULL; GtkTreeView *view = d->related; GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view)); if(!gtk_tree_selection_get_selected(selection, &model, &iter) && !gtk_tree_model_get_iter_first(model, &iter)) return; guint tagid; gtk_tree_model_get (model, &iter, DT_LIB_TAGGING_COL_ID, &tagid, -1); int imgsel = -1; if(tagid <= 0) return; imgsel = dt_view_get_image_to_act_on(); dt_tag_attach(tagid,imgsel); dt_image_synch_xmp(imgsel); dt_collection_hint_message(darktable.collection); }