gboolean dt_lib_is_visible(dt_lib_module_t *module) { char key[512]; g_snprintf(key, sizeof(key), "plugins/lighttable/%s/visible", module->plugin_name); if(dt_conf_key_exists(key)) return dt_conf_get_bool(key); /* if not key found, always make module visible */ return TRUE; }
void *get_params(dt_imageio_module_format_t *self) { dt_imageio_tiff_t *d = (dt_imageio_tiff_t *)calloc(1, sizeof(dt_imageio_tiff_t)); d->bpp = dt_conf_get_int("plugins/imageio/format/tiff/bpp"); if(d->bpp == 16) d->bpp = 16; else if(d->bpp == 32) d->bpp = 32; else d->bpp = 8; d->compress = dt_conf_get_int("plugins/imageio/format/tiff/compress"); // TIFF compression level might actually be zero, handle this if(!dt_conf_key_exists("plugins/imageio/format/tiff/compresslevel")) d->compresslevel = 5; else { d->compresslevel = dt_conf_get_int("plugins/imageio/format/tiff/compresslevel"); if(d->compresslevel < 0 || d->compresslevel > 9) d->compresslevel = 5; } return d; }
static int register_pref(lua_State*L) { // to avoid leaks, we need to first get all params (which could raise errors) then alloc and fill the struct // this is complicated, but needed pref_element * built_elt = malloc(sizeof(pref_element)); memset(built_elt,0,sizeof(pref_element)); int cur_param =1; if(!lua_isstring(L,cur_param)) goto error; built_elt->script = strdup(lua_tostring(L,cur_param)); cur_param++; if(!lua_isstring(L,cur_param)) goto error; built_elt->name = strdup(lua_tostring(L,cur_param)); cur_param++; int i; const char* type_name = lua_tostring(L,cur_param); if(!type_name) goto error; for (i=0; pref_type_name[i]; i++) if (strcmp(pref_type_name[i], type_name) == 0) { built_elt->type =i; break; } if(!pref_type_name[i]) goto error; cur_param++; if(!lua_isstring(L,cur_param)) goto error; built_elt->label = strdup(lua_tostring(L,cur_param)); cur_param++; if(!lua_isstring(L,cur_param)) goto error; built_elt->tooltip = strdup(lua_tostring(L,cur_param)); cur_param++; char pref_name[1024]; get_pref_name(pref_name,1024,built_elt->script,built_elt->name); switch(built_elt->type) { case pref_string: if(!lua_isstring(L,cur_param)) goto error; built_elt->string_data.default_value = strdup(lua_tostring(L,cur_param)); cur_param++; if(!dt_conf_key_exists(pref_name)) dt_conf_set_string(pref_name,built_elt->string_data.default_value); break; case pref_bool: if(!lua_isboolean(L,cur_param)) goto error; built_elt->bool_data.default_value = lua_toboolean(L,cur_param); cur_param++; if(!dt_conf_key_exists(pref_name)) dt_conf_set_bool(pref_name,built_elt->bool_data.default_value); break; case pref_int: if(!lua_isnumber(L,cur_param)) goto error; built_elt->int_data.default_value = lua_tointeger(L,cur_param); cur_param++; if(!lua_isnumber(L,cur_param)) goto error; built_elt->int_data.min = lua_tointeger(L,cur_param); cur_param++; if(!lua_isnumber(L,cur_param)) goto error; built_elt->int_data.max = lua_tointeger(L,cur_param); cur_param++; if(!dt_conf_key_exists(pref_name)) dt_conf_set_int(pref_name,built_elt->int_data.default_value); break; } built_elt->next = pref_list; pref_list = built_elt; return 0; error: destroy_pref_element(built_elt); return luaL_argerror(L,cur_param,NULL); }
void init_widgets() { GtkWidget* container; GtkWidget* widget; // Creating the main window widget = gtk_window_new(GTK_WINDOW_TOPLEVEL); darktable.gui->ui->main_window = widget; gtk_window_set_default_size(GTK_WINDOW(widget), 900, 500); gtk_window_set_icon_name(GTK_WINDOW(widget), "darktable"); gtk_window_set_title(GTK_WINDOW(widget), "Darktable"); g_signal_connect (G_OBJECT (widget), "delete_event", G_CALLBACK (dt_control_quit), NULL); g_signal_connect (G_OBJECT (widget), "key-press-event", G_CALLBACK (key_pressed_override), NULL); g_signal_connect (G_OBJECT (widget), "key-release-event", G_CALLBACK (key_released), NULL); container = widget; // Adding the outermost vbox widget = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(container), widget); gtk_widget_show(widget); /* connect to signal redraw all */ dt_control_signal_connect(darktable.signals, DT_SIGNAL_CONTROL_REDRAW_ALL, G_CALLBACK(_ui_widget_redraw_callback), darktable.gui->ui->main_window); container = widget; // Initializing the top border widget = gtk_drawing_area_new(); darktable.gui->widgets.top_border = widget; gtk_box_pack_start(GTK_BOX(container), widget, FALSE, TRUE, 0); gtk_widget_set_size_request(widget, -1, 10); gtk_widget_set_app_paintable(widget, TRUE); gtk_widget_set_events(widget, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK | GDK_SCROLL_MASK); gtk_widget_show(widget); // Initializing the main table init_main_table(container); // Initializing the bottom border widget = gtk_drawing_area_new(); darktable.gui->widgets.bottom_border = widget; gtk_box_pack_start(GTK_BOX(container), widget, FALSE, TRUE, 0); gtk_widget_set_size_request(widget, -1, 10); gtk_widget_set_app_paintable(widget, TRUE); gtk_widget_set_events(widget, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK | GDK_SCROLL_MASK); gtk_widget_show(widget); // Showing everything gtk_widget_show_all(dt_ui_main_window(darktable.gui->ui)); /* hide panels depending on last ui state */ for(int k=0;k<DT_UI_PANEL_SIZE;k++) { /* prevent show all */ gtk_widget_set_no_show_all(GTK_WIDGET(darktable.gui->ui->containers[k]), TRUE); /* check last visible state of panel */ char key[512]; g_snprintf(key, 512, "ui_last/%s/visible", _ui_panel_config_names[k]); /* if no key, lets default to TRUE*/ if(!dt_conf_key_exists(key)) dt_conf_set_bool(key,TRUE); if (!dt_conf_get_bool(key)) gtk_widget_set_visible(darktable.gui->ui->panels[k],FALSE); } }