void dt_accel_rename_preset_iop(dt_iop_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_iop(build_path, 1024, module->op, 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)); gboolean local = accel->local; dt_accel_deregister_iop(module,path); snprintf(build_path,1024,"%s/%s",_("preset"),new_path); dt_accel_register_iop(module->so,local,build_path,tmp_key.accel_key,tmp_key.accel_mods); dt_accel_connect_preset_iop(module,new_path); l = NULL; } else { l = g_slist_next(l); } } }
static void menuitem_delete_preset(GtkMenuItem *menuitem, dt_iop_module_t *module) { sqlite3_stmt *stmt; gchar *name = get_active_preset_name(module); 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, sizeof(tmp_path), "%s/%s", _("preset"), name); dt_accel_deregister_iop(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, -1, SQLITE_TRANSIENT); DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 2, module->op, -1, SQLITE_TRANSIENT); DT_DEBUG_SQLITE3_BIND_INT(stmt, 3, module->version()); sqlite3_step(stmt); sqlite3_finalize(stmt); } g_free(name); gtk_widget_destroy(dialog); }