void dt_accel_register_slider_iop(dt_iop_module_so_t *so, gboolean local, const gchar *path) { gchar increase_path[256]; gchar decrease_path[256]; gchar reset_path[256]; gchar edit_path[256]; gchar increase_path_trans[256]; gchar decrease_path_trans[256]; gchar reset_path_trans[256]; gchar edit_path_trans[256]; char *paths[] = {increase_path, decrease_path, reset_path, edit_path}; char *paths_trans[] = {increase_path_trans, decrease_path_trans, reset_path_trans, edit_path_trans }; int i = 0; dt_accel_t *accel = NULL; dt_accel_paths_slider_iop(paths, 256, so->op, path); dt_accel_paths_slider_iop_translated(paths_trans, 256, so, path); for(i = 0; i < 4; i++) { gtk_accel_map_add_entry(paths[i], 0, 0); accel = (dt_accel_t*)malloc(sizeof(dt_accel_t)); strcpy(accel->path, paths[i]); strcpy(accel->translated_path, paths_trans[i]); strcpy(accel->module, so->op); accel->local = local; accel->views = DT_VIEW_DARKROOM; darktable.control->accelerator_list = g_slist_prepend(darktable.control->accelerator_list, accel); } }
void dt_accel_connect_slider_iop(dt_iop_module_t *module, const gchar *path, GtkWidget *slider) { // just make this callback safe for bauhaus sliders for now: // TODO: implement it for these widgets, too! // (we check for their inheritance from gtk drawing area, that's simpler) if(GTK_IS_DRAWING_AREA(slider)) return; gchar increase_path[256]; gchar decrease_path[256]; gchar reset_path[256]; gchar edit_path[256]; dt_accel_t *accel = NULL; GClosure *closure; char *paths[] = {increase_path, decrease_path, reset_path, edit_path}; dt_accel_paths_slider_iop(paths, 256, module->op, path); closure = g_cclosure_new(G_CALLBACK(slider_increase_callback), (gpointer)slider, NULL); accel = _lookup_accel(increase_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, increase_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } closure = g_cclosure_new(G_CALLBACK(slider_decrease_callback), (gpointer)slider, NULL); accel = _lookup_accel(decrease_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, decrease_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } closure = g_cclosure_new(G_CALLBACK(slider_reset_callback), (gpointer)slider, NULL); accel = _lookup_accel(reset_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, reset_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } closure = g_cclosure_new(G_CALLBACK(slider_edit_callback), (gpointer)slider, NULL); accel = _lookup_accel(edit_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, edit_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } }
void dt_accel_connect_slider_iop(dt_iop_module_t *module, const gchar *path, GtkWidget *slider) { gchar increase_path[256]; gchar decrease_path[256]; gchar reset_path[256]; gchar edit_path[256]; dt_accel_t *accel = NULL; GClosure *closure; char *paths[] = {increase_path, decrease_path, reset_path, edit_path}; dt_accel_paths_slider_iop(paths, 256, module->op, path); if (DT_IS_BAUHAUS_WIDGET(slider)) { closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_increase_callback), (gpointer)slider, NULL); } else { closure = g_cclosure_new(G_CALLBACK(slider_increase_callback), (gpointer)slider, NULL); } accel = _lookup_accel(increase_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, increase_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } if (DT_IS_BAUHAUS_WIDGET(slider)) { closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_decrease_callback), (gpointer)slider, NULL); } else { closure = g_cclosure_new(G_CALLBACK(slider_decrease_callback), (gpointer)slider, NULL); } accel = _lookup_accel(decrease_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, decrease_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } if (DT_IS_BAUHAUS_WIDGET(slider)) { closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_reset_callback), (gpointer)slider, NULL); } else { closure = g_cclosure_new(G_CALLBACK(slider_reset_callback), (gpointer)slider, NULL); } accel = _lookup_accel(reset_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, reset_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } if (DT_IS_BAUHAUS_WIDGET(slider)) { closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_edit_callback), (gpointer)slider, NULL); } else { closure = g_cclosure_new(G_CALLBACK(slider_edit_callback), (gpointer)slider, NULL); } accel = _lookup_accel(edit_path); if (accel) accel->closure = closure; if(accel && accel->local) { _connect_local_accel(module, accel); } else { gtk_accel_group_connect_by_path(darktable.control->accelerators, edit_path, closure); module->accel_closures = g_slist_prepend(module->accel_closures, accel); } }