static void menuitem_delete_preset (GtkMenuItem *menuitem, dt_lib_module_info_t *minfo) { sqlite3_stmt *stmt; gchar *name = get_active_preset_name(minfo); if(name == NULL) return; GtkWidget *window = dt_ui_main_window(darktable.gui->ui); GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("do you really want to delete the preset `%s'?"), name); gtk_window_set_title(GTK_WINDOW (dialog), _("delete preset?")); if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) { char tmp_path[1024]; snprintf(tmp_path,1024,"%s/%s",_("preset"), name); dt_accel_deregister_lib(minfo->module,tmp_path); DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "delete from presets where name=?1 and operation=?2 and op_version=?3 and writeprotect=0", -1, &stmt, NULL); DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 1, name, strlen(name), SQLITE_TRANSIENT); DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 2, minfo->plugin_name, strlen(minfo->plugin_name), SQLITE_TRANSIENT); DT_DEBUG_SQLITE3_BIND_INT(stmt, 3, minfo->version); sqlite3_step(stmt); sqlite3_finalize(stmt); } g_free(name); gtk_widget_destroy (dialog); }
void dt_accel_rename_preset_lib(dt_lib_module_t *module,const gchar *path,const gchar *new_path) { dt_accel_t *accel; GSList * l = module->accel_closures; char build_path[1024]; dt_accel_path_lib(build_path, 1024, module->plugin_name, path); while(l) { accel = (dt_accel_t*)l->data; if(!strncmp(accel->path, build_path, 1024)) { GtkAccelKey tmp_key = *(gtk_accel_group_find(darktable.control->accelerators,find_accel_internal,accel->closure)); dt_accel_deregister_lib(module,path); snprintf(build_path,1024,"%s/%s",_("preset"),new_path); dt_accel_register_lib(module,build_path,tmp_key.accel_key,tmp_key.accel_mods); dt_accel_connect_preset_lib(module,new_path); l = NULL; } else { l = g_slist_next(l); } } }