void gui_init (dt_iop_module_t *self) { // init the slider (more sophisticated layouts are possible with gtk tables and boxes): self->gui_data = malloc(sizeof(dt_iop_colorcontrast_gui_data_t)); dt_iop_colorcontrast_gui_data_t *g = (dt_iop_colorcontrast_gui_data_t *)self->gui_data; dt_iop_colorcontrast_params_t *p = (dt_iop_colorcontrast_params_t *)self->params; g->a_scale = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 0.0, 5.0, 0.01, p->a_steepness, 2)); dtgtk_slider_set_label(g->a_scale,_("green vs magenta")); g->b_scale = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 0.0, 5.0, 0.01, p->b_steepness, 2)); dtgtk_slider_set_label(g->b_scale,_("blue vs yellow")); self->widget = GTK_WIDGET(gtk_hbox_new(FALSE, 0)); g->vbox = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->vbox), TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->a_scale), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->b_scale), TRUE, TRUE, 0); g_object_set(G_OBJECT(g->a_scale), "tooltip-text", _("steepness of the a* curve in Lab"), (char *)NULL); g_object_set(G_OBJECT(g->b_scale), "tooltip-text", _("steepness of the b* curve in Lab"), (char *)NULL); g_signal_connect(G_OBJECT(g->a_scale), "value-changed", G_CALLBACK(a_slider_callback), self); g_signal_connect(G_OBJECT(g->b_scale), "value-changed", G_CALLBACK(b_slider_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_grain_gui_data_t)); dt_iop_grain_gui_data_t *g = (dt_iop_grain_gui_data_t *)self->gui_data; dt_iop_grain_params_t *p = (dt_iop_grain_params_t *)self->params; self->widget = GTK_WIDGET(gtk_hbox_new(FALSE, 0)); g->vbox = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->vbox), TRUE, TRUE, 5); g->scale1 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 100.0, 3200.0, 20.0, p->scale*53.3, 0)); dtgtk_slider_set_snap(g->scale1, 20); g->scale2 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 0.0, 100.0, 1.0, p->strength, 2)); dtgtk_slider_set_format_type(g->scale2,DARKTABLE_SLIDER_FORMAT_PERCENT); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale1), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale2), TRUE, TRUE, 0); g_object_set(G_OBJECT(g->scale1), "tooltip-text", _("the grain size (~iso of the film)"), (char *)NULL); g_object_set(G_OBJECT(g->scale2), "tooltip-text", _("the strength of applied grain"), (char *)NULL); dtgtk_slider_set_label(g->scale1,_("coarseness")); dtgtk_slider_set_unit(g->scale1,"ISO"); dtgtk_slider_set_label(g->scale2,_("strength")); dtgtk_slider_set_unit(g->scale2,"%"); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (scale_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (strength_callback), self); }
void gui_init(struct dt_iop_module_t *self) { // init the slider (more sophisticated layouts are possible with gtk tables and boxes): self->gui_data = malloc(sizeof(dt_iop_anlfyeni_gui_data_t)); dt_iop_anlfyeni_gui_data_t *g = (dt_iop_anlfyeni_gui_data_t *)self->gui_data; dt_iop_anlfyeni_params_t *p = (dt_iop_anlfyeni_params_t *)self->params; self->widget = GTK_WIDGET(gtk_hbox_new(FALSE, 0)); g->vbox = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->vbox), TRUE, TRUE, 5); g->scale1 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.001, 0.07, 0.001, p->alpha, 3)); g_object_set (GTK_OBJECT(g->scale1), "tooltip-text", _("sensitivity of edge detection"), (char *)NULL); dtgtk_slider_set_label(g->scale1,_("sensitivity")); // dtgtk_slider_set_accel(g->scale1,darktable.control->accels_darkroom,"<Darktable>/darkroom/modules/local_contrast_2/sensitivity"); g->scale2 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 6.0000, 0.010, p->scale, 3)); g_object_set (GTK_OBJECT(g->scale2), "tooltip-text", _("spatial extent of the effect around edges"), (char *)NULL); dtgtk_slider_set_label(g->scale2,_("scale")); // dtgtk_slider_set_accel(g->scale2,darktable.control->accels_darkroom,"<Darktable>/darkroom/modules/local_contrast_2/scale"); g->scale3 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 10.0000, 0.001, p->strength, 3)); g_object_set (GTK_OBJECT(g->scale3), "tooltip-text", _("strength of the local contrast"), (char *)NULL); dtgtk_slider_set_label(g->scale3,_("strength")); // dtgtk_slider_set_accel(g->scale3,darktable.control->accels_darkroom,"<Darktable>/darkroom/modules/local_contrast_2/strength"); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale1), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale2), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale3), TRUE, TRUE, 0); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (alpha_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (scale_callback), self); g_signal_connect (G_OBJECT (g->scale3), "value-changed", G_CALLBACK (strength_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_relight_gui_data_t)); dt_iop_relight_gui_data_t *g = (dt_iop_relight_gui_data_t *)self->gui_data; dt_iop_relight_params_t *p = (dt_iop_relight_params_t *)self->params; self->widget = gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING); g_signal_connect (G_OBJECT (self->widget), "expose-event", G_CALLBACK (expose), self); /* adding the labels */ g->scale1 = DTGTK_SLIDER (dtgtk_slider_new_with_range (DARKTABLE_SLIDER_BAR,-2.0, 2.0,0.05, p->ev, 2)); g->scale2 = DTGTK_SLIDER (dtgtk_slider_new_with_range (DARKTABLE_SLIDER_BAR,2, 10, 0.5, p->width, 1)); dtgtk_slider_set_label(g->scale1, _("exposure")); dtgtk_slider_set_unit(g->scale1, "EV"); dtgtk_slider_set_force_sign(g->scale1, TRUE); dtgtk_slider_set_label(g->scale2, _("width")); /* lightnessslider */ GtkBox *hbox=GTK_BOX (gtk_hbox_new (FALSE,2)); int lightness=32768; g->gslider1=DTGTK_GRADIENT_SLIDER (dtgtk_gradient_slider_new_with_color ((GdkColor) { 0,0,0,0 },(GdkColor) { 0,lightness,lightness,lightness })); g_object_set(G_OBJECT (g->gslider1), "tooltip-text", _("select the center of fill-light"), (char *)NULL); g_signal_connect (G_OBJECT (g->gslider1), "value-changed", G_CALLBACK (center_callback), self); g->tbutton1 = DTGTK_TOGGLEBUTTON (dtgtk_togglebutton_new (dtgtk_cairo_paint_colorpicker, CPF_STYLE_FLAT)); gtk_widget_set_size_request(GTK_WIDGET(g->tbutton1),22,22); g_signal_connect (G_OBJECT (g->tbutton1), "toggled", G_CALLBACK (picker_callback), self); gtk_box_pack_start (hbox,GTK_WIDGET (g->gslider1),TRUE,TRUE,0); gtk_box_pack_start (hbox,GTK_WIDGET (g->tbutton1),FALSE,FALSE,0); /* add controls to widget ui */ gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET (g->scale1),TRUE,FALSE,0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET (hbox), TRUE,FALSE,0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET (g->scale2),TRUE,FALSE,0); g_object_set(G_OBJECT(g->tbutton1), "tooltip-text", _("toggle tool for picking median lightness in image"), (char *)NULL); g_object_set(G_OBJECT(g->scale1), "tooltip-text", _("the fill-light in EV"), (char *)NULL); /* xgettext:no-c-format */ g_object_set(G_OBJECT(g->scale2), "tooltip-text", _("width of fill-light area defined in zones"), (char *)NULL); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (ev_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (width_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_channelmixer_gui_data_t)); dt_iop_channelmixer_gui_data_t *g = (dt_iop_channelmixer_gui_data_t *)self->gui_data; dt_iop_channelmixer_params_t *p = (dt_iop_channelmixer_params_t *)self->params; self->widget = GTK_WIDGET(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); g->dtlabel1 = DTGTK_LABEL( dtgtk_label_new(_("output channel"), DARKTABLE_LABEL_TAB | DARKTABLE_LABEL_ALIGN_RIGHT) ); g->combo1 = GTK_COMBO_BOX( gtk_combo_box_new_text() ); gtk_combo_box_append_text(g->combo1,_("hue")); gtk_combo_box_append_text(g->combo1,_("saturation")); gtk_combo_box_append_text(g->combo1,_("lightness")); gtk_combo_box_append_text(g->combo1,_("red")); gtk_combo_box_append_text(g->combo1,_("green")); gtk_combo_box_append_text(g->combo1,_("blue")); gtk_combo_box_append_text(g->combo1,_("gray")); gtk_combo_box_set_active(g->combo1, CHANNEL_RED ); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->dtlabel1), TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->combo1), TRUE, TRUE, 5); g->dtlabel2 = DTGTK_LABEL( dtgtk_label_new(_("source channels"), DARKTABLE_LABEL_TAB | DARKTABLE_LABEL_ALIGN_RIGHT) ); GtkBox *hbox = GTK_BOX( gtk_hbox_new(FALSE, 0)); g->vbox = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(g->vbox), TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->dtlabel2), TRUE, TRUE, 5); g->scale1 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,-2.0, 2.0, 0.005, p->red[CHANNEL_RED] , 3)); g_object_set (GTK_OBJECT(g->scale1), "tooltip-text", _("amount of red channel in the output channel"), (char *)NULL); dtgtk_slider_set_label(g->scale1,_("red")); g->scale2 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,-2.0, 2.0, 0.005, p->green[CHANNEL_RED] , 3)); g_object_set (GTK_OBJECT(g->scale2), "tooltip-text", _("amount of green channel in the output channel"), (char *)NULL); dtgtk_slider_set_label(g->scale2,_("green")); g->scale3 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,-2.0, 2.0, 0.005, p->blue[CHANNEL_RED] , 3)); g_object_set (GTK_OBJECT(g->scale3), "tooltip-text", _("amount of blue channel in the output channel"), (char *)NULL); dtgtk_slider_set_label(g->scale3,_("blue")); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale1), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale2), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox), GTK_WIDGET(g->scale3), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(hbox), TRUE, TRUE, 5); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (red_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (green_callback), self); g_signal_connect (G_OBJECT (g->scale3), "value-changed", G_CALLBACK (blue_callback), self); g_signal_connect (G_OBJECT (g->combo1), "changed", G_CALLBACK (output_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_shrecovery_gui_data_t)); dt_iop_shrecovery_gui_data_t *g = (dt_iop_shrecovery_gui_data_t *)self->gui_data; dt_iop_shrecovery_params_t *p = (dt_iop_shrecovery_params_t *)self->params; self->widget = gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING); g->scale1 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,-2.0, 6.0, 0.01, p->strength, 2)); g->scale2 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.1, 0.9, 0.01, p->mu, 2)); g->scale3 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.05, 0.6, 0.01, p->sigma, 2)); g->scale4 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 2.0, 64.0, 1, p->size_limit, 0)); dtgtk_slider_set_snap(g->scale4, 1); dtgtk_slider_set_label(g->scale1,_("strength")); dtgtk_slider_set_label(g->scale2,_("mean")); dtgtk_slider_set_label(g->scale3,_("deviation")); dtgtk_slider_set_label(g->scale4,_("minimal pyramid limit")); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->scale1), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->scale2), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->scale3), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->scale4), TRUE, TRUE, 0); g_object_set(G_OBJECT(g->scale1), "tooltip-text", _("the strength of lighten"), (char *)NULL); g_object_set(G_OBJECT(g->scale2), "tooltip-text", _("optimal exposedness"), (char *)NULL); g_object_set(G_OBJECT(g->scale3), "tooltip-text", _("exposedness deviation"), (char *)NULL); g_object_set(G_OBJECT(g->scale4), "tooltip-text", _("minimal pyramid limit size"), (char *)NULL); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (strength_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (mu_callback), self); g_signal_connect (G_OBJECT (g->scale3), "value-changed", G_CALLBACK (sigma_callback), self); g_signal_connect (G_OBJECT (g->scale4), "value-changed", G_CALLBACK (size_limit_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_lowlight_gui_data_t)); dt_iop_lowlight_gui_data_t *c = (dt_iop_lowlight_gui_data_t *)self->gui_data; dt_iop_lowlight_params_t *p = (dt_iop_lowlight_params_t *)self->params; c->transition_curve = dt_draw_curve_new(0.0, 1.0, CATMULL_ROM); (void)dt_draw_curve_add_point(c->transition_curve, p->transition_x[DT_IOP_LOWLIGHT_BANDS-2]-1.0, p->transition_y[DT_IOP_LOWLIGHT_BANDS-2]); for(int k=0; k<DT_IOP_LOWLIGHT_BANDS; k++) (void)dt_draw_curve_add_point(c->transition_curve, p->transition_x[k], p->transition_y[k]); (void)dt_draw_curve_add_point(c->transition_curve, p->transition_x[1]+1.0, p->transition_y[1]); c->mouse_x = c->mouse_y = c->mouse_pick = -1.0; c->dragging = 0; c->x_move = -1; c->mouse_radius = 1.0/DT_IOP_LOWLIGHT_BANDS; self->widget = GTK_WIDGET(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); c->area = GTK_DRAWING_AREA(gtk_drawing_area_new()); gtk_drawing_area_size(c->area, 195, 195); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(c->area),FALSE, FALSE, 0); gtk_widget_add_events(GTK_WIDGET(c->area), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect (G_OBJECT (c->area), "expose-event", G_CALLBACK (lowlight_expose), self); g_signal_connect (G_OBJECT (c->area), "button-press-event", G_CALLBACK (lowlight_button_press), self); g_signal_connect (G_OBJECT (c->area), "button-release-event", G_CALLBACK (lowlight_button_release), self); g_signal_connect (G_OBJECT (c->area), "motion-notify-event", G_CALLBACK (lowlight_motion_notify), self); g_signal_connect (G_OBJECT (c->area), "leave-notify-event", G_CALLBACK (lowlight_leave_notify), self); g_signal_connect (G_OBJECT (c->area), "scroll-event", G_CALLBACK (lowlight_scrolled), self); c->scale_blueness = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 100.0, 5.0, p->blueness, 2)); dtgtk_slider_set_default_value(c->scale_blueness, p->blueness); dtgtk_slider_set_label(c->scale_blueness,_("blue shift")); dtgtk_slider_set_unit(c->scale_blueness,"%"); dtgtk_slider_set_format_type(c->scale_blueness,DARKTABLE_SLIDER_FORMAT_PERCENT); g_object_set(G_OBJECT(c->scale_blueness), "tooltip-text", _("blueness in shadows"), (char *)NULL); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(c->scale_blueness), TRUE, TRUE, 5); g_signal_connect (G_OBJECT (c->scale_blueness), "value-changed", G_CALLBACK (blueness_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_profile_gamma_gui_data_t)); dt_iop_profile_gamma_gui_data_t *g = (dt_iop_profile_gamma_gui_data_t *)self->gui_data; dt_iop_profile_gamma_params_t *p = (dt_iop_profile_gamma_params_t *)self->params; self->widget = GTK_WIDGET(gtk_hbox_new(FALSE, 0)); GtkWidget *vbox = gtk_vbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(vbox), TRUE, TRUE, 5); g->scale1 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 1.0, 0.0001,p->linear,4)); g_object_set (GTK_OBJECT(g->scale1), "tooltip-text", _("linear part"), (char *)NULL); dtgtk_slider_set_label(g->scale1,_("linear")); g->scale2 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 1.0, 0.0001,p->gamma,4)); g_object_set (GTK_OBJECT(g->scale2), "tooltip-text", _("gamma exponential factor"), (char *)NULL); dtgtk_slider_set_label(g->scale2,_("gamma")); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(g->scale1), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(g->scale2), TRUE, TRUE, 0); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (linear_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (gamma_callback), self); }
// TODO: some quality/compression stuff in case "off" is selected void gui_init(dt_imageio_module_format_t *self) { dt_imageio_j2k_gui_t *gui = (dt_imageio_j2k_gui_t *)malloc(sizeof(dt_imageio_j2k_gui_t)); self->gui_data = (void *)gui; self->widget = gtk_vbox_new(TRUE, 5); GtkWidget *hbox = gtk_hbox_new(TRUE, 5); gtk_box_pack_start(GTK_BOX(self->widget), hbox, TRUE, TRUE, 0); int format_last = dt_conf_get_int("plugins/imageio/format/j2k/format"); int preset_last = dt_conf_get_int("plugins/imageio/format/j2k/preset"); int quality_last = dt_conf_get_int("plugins/imageio/format/j2k/quality"); GtkWidget *radiobutton = gtk_radio_button_new_with_label(NULL, _("jp2")); gui->jp2 = GTK_TOGGLE_BUTTON(radiobutton); gtk_box_pack_start(GTK_BOX(hbox), radiobutton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(radiobutton), "toggled", G_CALLBACK(radiobutton_changed), (gpointer)JP2_CFMT); if(format_last == JP2_CFMT) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radiobutton), TRUE); radiobutton = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radiobutton), _("j2k")); gui->j2k = GTK_TOGGLE_BUTTON(radiobutton); gtk_box_pack_start(GTK_BOX(hbox), radiobutton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(radiobutton), "toggled", G_CALLBACK(radiobutton_changed), (gpointer)J2K_CFMT); if(format_last == J2K_CFMT) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radiobutton), TRUE); gui->quality = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 1, 100, 1, 97, 0)); dtgtk_slider_set_label(gui->quality,_("quality")); dtgtk_slider_set_default_value(gui->quality, 97); if(quality_last > 0 && quality_last <= 100) dtgtk_slider_set_value(gui->quality, quality_last); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(gui->quality), TRUE, TRUE, 0); g_signal_connect (G_OBJECT (gui->quality), "value-changed", G_CALLBACK (quality_changed), (gpointer)0); hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(self->widget), hbox, TRUE, TRUE, 0); GtkWidget *label = gtk_label_new(_("dcp mode")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); GtkWidget *combo = gtk_combo_box_new_text(); gui->preset = GTK_COMBO_BOX(combo); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("off")); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("cinema2k, 24fps")); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("cinema2k, 48fps")); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("cinema4k, 24fps")); gtk_combo_box_set_active(GTK_COMBO_BOX(combo), preset_last); gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(combo), "changed", G_CALLBACK(combobox_changed), NULL); // TODO: options for "off" }
void gui_init (dt_imageio_module_format_t *self) { dt_imageio_jpeg_gui_data_t *g = (dt_imageio_jpeg_gui_data_t *)malloc(sizeof(dt_imageio_jpeg_gui_data_t)); self->gui_data = g; // construct gui with jpeg specific options: GtkWidget *box = gtk_hbox_new(FALSE, 20); self->widget = box; // quality slider g->quality = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR, 0, 100, 1, 97, 0)); dtgtk_slider_set_label(g->quality,_("quality")); dtgtk_slider_set_default_value(g->quality, 97); gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(g->quality), TRUE, TRUE, 0); g_signal_connect (G_OBJECT (g->quality), "value-changed", G_CALLBACK (quality_changed), (gpointer)0); // TODO: add more options: subsample dreggn }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_vibrance_gui_data_t)); dt_iop_vibrance_gui_data_t *g = (dt_iop_vibrance_gui_data_t *)self->gui_data; dt_iop_vibrance_params_t *p = (dt_iop_vibrance_params_t *)self->params; self->widget = GTK_WIDGET(gtk_hbox_new(FALSE, 0)); GtkVBox *vbox = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(vbox), TRUE, TRUE, 5); g->amount_scale = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 100.0, 1, p->amount, 0)); dtgtk_slider_set_format_type(g->amount_scale,DARKTABLE_SLIDER_FORMAT_PERCENT); dtgtk_slider_set_label(g->amount_scale,_("vibrance")); dtgtk_slider_set_unit(g->amount_scale,"%"); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(g->amount_scale), TRUE, TRUE, 0); g_object_set(G_OBJECT(g->amount_scale), "tooltip-text", _("the amount of vibrance"), (char *)NULL); g_signal_connect (G_OBJECT (g->amount_scale), "value-changed", G_CALLBACK (amount_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_colorize_gui_data_t)); dt_iop_colorize_gui_data_t *g = (dt_iop_colorize_gui_data_t *)self->gui_data; dt_iop_colorize_params_t *p = (dt_iop_colorize_params_t *)self->params; self->widget = GTK_WIDGET(gtk_vbox_new(FALSE, 0)); g->colorpick1 = DTGTK_BUTTON(dtgtk_button_new(dtgtk_cairo_paint_color,CPF_IGNORE_FG_STATE|CPF_STYLE_FLAT|CPF_DO_NOT_USE_BORDER)); gtk_widget_set_size_request(GTK_WIDGET(g->colorpick1),32,32); GtkWidget *hbox = GTK_WIDGET(gtk_hbox_new(FALSE, 0)); g->vbox1 = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); g->vbox2 = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(g->vbox1), FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(g->vbox2), TRUE, TRUE, 5); gtk_box_pack_end(GTK_BOX(hbox),GTK_WIDGET(g->colorpick1),FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(hbox), TRUE, TRUE, 5); g->label1 = dtgtk_reset_label_new (_("hue"), self, &p->hue, sizeof(float)); g->label2 = dtgtk_reset_label_new (_("saturation"), self, &p->saturation, sizeof(float)); gtk_box_pack_start(GTK_BOX(g->vbox1), GTK_WIDGET(g->label1), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox1), GTK_WIDGET(g->label2), TRUE, TRUE, 0); int lightness=32768; g->gslider1 = DTGTK_GRADIENT_SLIDER(dtgtk_gradient_slider_new_with_color((GdkColor) { 0,lightness,0,0 },(GdkColor) { 0,lightness,0,0 })); dtgtk_gradient_slider_set_stop(g->gslider1,0.166,(GdkColor) { 0,lightness,lightness,0 }); dtgtk_gradient_slider_set_stop(g->gslider1,0.332,(GdkColor) { 0,0,lightness,0 }); dtgtk_gradient_slider_set_stop(g->gslider1,0.498,(GdkColor) { 0,0,lightness,lightness }); dtgtk_gradient_slider_set_stop(g->gslider1,0.664,(GdkColor) { 0,0,0,lightness }); dtgtk_gradient_slider_set_stop(g->gslider1,0.83,(GdkColor) { 0,lightness,0,lightness }); gtk_box_pack_start(GTK_BOX(g->vbox2), GTK_WIDGET(g->gslider1), TRUE, TRUE, 0); g_object_set(G_OBJECT(g->gslider1), "tooltip-text", _("select the hue tone"), (char *)NULL); g->gslider2=DTGTK_GRADIENT_SLIDER(dtgtk_gradient_slider_new_with_color((GdkColor) { 0,lightness,lightness,lightness },(GdkColor) { 0,lightness,lightness,lightness })); gtk_box_pack_start(GTK_BOX(g->vbox2), GTK_WIDGET(g->gslider2), TRUE, TRUE, 0); g_object_set(G_OBJECT(g->gslider2), "tooltip-text", _("select the saturation shadow tone"), (char *)NULL); // Additional paramters hbox=GTK_WIDGET(gtk_hbox_new(FALSE, 0)); g->vbox2 = GTK_VBOX(gtk_vbox_new(FALSE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(g->vbox2), TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(hbox), TRUE, TRUE, 5); g->scale1 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 100.0, 0.1, p->lightness*100.0, 2)); dtgtk_slider_set_format_type(g->scale1,DARKTABLE_SLIDER_FORMAT_PERCENT); dtgtk_slider_set_label(g->scale1,_("lightness")); dtgtk_slider_set_unit(g->scale1,"%"); gtk_box_pack_start(GTK_BOX(g->vbox2), GTK_WIDGET(g->scale1), TRUE, TRUE, 0); g->scale2 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 100.0, 0.1, p->source_lightness_mix, 2)); dtgtk_slider_set_format_type(g->scale2,DARKTABLE_SLIDER_FORMAT_PERCENT); dtgtk_slider_set_label(g->scale2,_("source mix")); dtgtk_slider_set_unit(g->scale2,"%"); gtk_box_pack_start(GTK_BOX(g->vbox2), GTK_WIDGET(g->scale2), TRUE, TRUE, 0); g_object_set(G_OBJECT(g->scale1), "tooltip-text", _("lightness of color"), (char *)NULL); g_object_set(G_OBJECT(g->scale2), "tooltip-text", _("mix value of source lightness"), (char *)NULL); g_signal_connect (G_OBJECT (g->gslider1), "value-changed", G_CALLBACK (hue_callback), self); g_signal_connect (G_OBJECT (g->gslider2), "value-changed", G_CALLBACK (saturation_callback), self); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (lightness_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (source_lightness_mix_callback), self); g_signal_connect (G_OBJECT (g->colorpick1), "clicked", G_CALLBACK (colorpick_callback), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_exposure_gui_data_t)); dt_iop_exposure_gui_data_t *g = (dt_iop_exposure_gui_data_t *)self->gui_data; dt_iop_exposure_params_t *p = (dt_iop_exposure_params_t *)self->params; /* register hooks with current dev so that histogram can interact with this module. */ darktable.develop->proxy.exposure.module = self; darktable.develop->proxy.exposure.set_white = dt_iop_exposure_set_white; darktable.develop->proxy.exposure.get_white = dt_iop_exposure_get_white; darktable.develop->proxy.exposure.set_black = dt_iop_exposure_set_black; darktable.develop->proxy.exposure.get_black = dt_iop_exposure_get_black; self->request_color_pick = 0; self->widget = GTK_WIDGET(gtk_hbox_new(FALSE, 0)); g->vbox2 = GTK_VBOX(gtk_vbox_new(TRUE, DT_GUI_IOP_MODULE_CONTROL_SPACING)); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(g->vbox2), TRUE, TRUE, 5); g->black = DTGTK_SLIDER(dtgtk_slider_new_with_range( DARKTABLE_SLIDER_BAR, -0.1, 0.1, .001, p->black, 3)); g_object_set(G_OBJECT(g->black), "tooltip-text", _("adjust the black level"), (char *)NULL); dtgtk_slider_set_label(g->black,_("black")); g->exposure = DTGTK_SLIDER(dtgtk_slider_new_with_range( DARKTABLE_SLIDER_BAR, -9.0, 9.0, .02, p->exposure, 3)); g_object_set(G_OBJECT(g->exposure), "tooltip-text", _("adjust the exposure correction"), (char *)NULL); dtgtk_slider_set_label(g->exposure,_("exposure")); dtgtk_slider_set_unit(g->exposure,"EV"); gtk_box_pack_start(GTK_BOX(g->vbox2), GTK_WIDGET(g->black), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox2), GTK_WIDGET(g->exposure), TRUE, TRUE, 0); g->autoexp = GTK_CHECK_BUTTON(gtk_check_button_new_with_label(_("auto"))); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(g->autoexp), FALSE); g->autoexpp = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 0.2, .001, 0.01,3)); g_object_set(G_OBJECT(g->autoexpp), "tooltip-text", _("percentage of bright values clipped out"), (char *)NULL); gtk_widget_set_sensitive(GTK_WIDGET(g->autoexpp), FALSE); GtkHBox *hbox = GTK_HBOX(gtk_hbox_new(FALSE, 0)); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(g->autoexp), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(g->autoexpp), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(g->vbox2), GTK_WIDGET(hbox), TRUE, TRUE, 0); darktable.gui->reset = 1; self->gui_update(self); darktable.gui->reset = 0; g_signal_connect (G_OBJECT (g->black), "value-changed", G_CALLBACK (black_callback), self); g_signal_connect (G_OBJECT (g->exposure), "value-changed", G_CALLBACK (exposure_callback), self); // g_signal_connect (G_OBJECT (g->scale3), "value-changed", // G_CALLBACK (gain_callback), self); g_signal_connect (G_OBJECT (g->autoexpp), "value-changed", G_CALLBACK (autoexpp_callback), self); g_signal_connect (G_OBJECT (g->autoexp), "toggled", G_CALLBACK (autoexp_callback), self); g_signal_connect (G_OBJECT(self->widget), "expose-event", G_CALLBACK(expose), self); }
void gui_init(struct dt_iop_module_t *self) { self->gui_data = malloc(sizeof(dt_iop_watermark_gui_data_t)); dt_iop_watermark_gui_data_t *g = (dt_iop_watermark_gui_data_t *)self->gui_data; dt_iop_watermark_params_t *p = (dt_iop_watermark_params_t *)self->params; self->widget = gtk_hbox_new(FALSE,0); GtkWidget *vbox = gtk_vbox_new(FALSE,DT_GUI_IOP_MODULE_CONTROL_SPACING); gtk_box_pack_start(GTK_BOX(self->widget), GTK_WIDGET(vbox), TRUE, TRUE, 5); GtkWidget *label1 = dtgtk_reset_label_new(_("marker"), self, &p->filename, sizeof(char)*64); GtkWidget *label4 = dtgtk_reset_label_new(_("alignment"), self, &p->alignment, sizeof(int)); // Add the marker combobox GtkWidget *hbox= gtk_hbox_new(FALSE,0); g->combobox1 = GTK_COMBO_BOX(gtk_combo_box_new_text()); g->dtbutton1 = DTGTK_BUTTON(dtgtk_button_new(dtgtk_cairo_paint_refresh, CPF_STYLE_FLAT|CPF_DO_NOT_USE_BORDER)); gtk_box_pack_start(GTK_BOX(hbox),GTK_WIDGET(label1),TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(hbox),GTK_WIDGET(g->combobox1),TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(hbox),GTK_WIDGET(g->dtbutton1),FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(hbox), TRUE, TRUE, 0); // Add opacity/scale sliders to table g->scale1 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,0.0, 100.0, 1.0, p->opacity, 0.5)); g->scale2 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_BAR,1.0, 100.0, 1.0, p->scale, 0.5)); dtgtk_slider_set_format_type(g->scale1,DARKTABLE_SLIDER_FORMAT_PERCENT); dtgtk_slider_set_format_type(g->scale2,DARKTABLE_SLIDER_FORMAT_PERCENT); dtgtk_slider_set_label(g->scale1,_("opacity")); dtgtk_slider_set_unit(g->scale1,"%"); dtgtk_slider_set_label(g->scale2,_("scale")); dtgtk_slider_set_unit(g->scale2,"%"); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(g->scale1), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(g->scale2), TRUE, TRUE, 0); // Create the 3x3 gtk table toggle button table... GtkTable *bat = GTK_TABLE( gtk_table_new(3,3,TRUE)); for(int i=0; i<9; i++) { g->dtba[i] = DTGTK_TOGGLEBUTTON (dtgtk_togglebutton_new (dtgtk_cairo_paint_alignment,CPF_STYLE_FLAT|(CPF_SPECIAL_FLAG<<(i+1)))); gtk_widget_set_size_request (GTK_WIDGET (g->dtba[i]),16,16); gtk_table_attach (GTK_TABLE (bat), GTK_WIDGET (g->dtba[i]), (i%3),(i%3)+1,(i/3),(i/3)+1,0,0,0,0); g_signal_connect (G_OBJECT (g->dtba[i]), "toggled",G_CALLBACK (alignment_callback), self); } GtkWidget *hbox2 = gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(hbox2),GTK_WIDGET(label4),TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(hbox2), GTK_WIDGET(bat), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(hbox2), TRUE, TRUE, 0); // x/y offset g->scale3 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_VALUE,-1.0, 1.0,0.001, p->xoffset,3)); g->scale4 = DTGTK_SLIDER(dtgtk_slider_new_with_range(DARKTABLE_SLIDER_VALUE,-1.0, 1.0,0.001, p->yoffset, 3)); dtgtk_slider_set_label(g->scale3,_("x offset")); dtgtk_slider_set_label(g->scale4,_("y offset")); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(g->scale3), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(g->scale4), TRUE, TRUE, 0); // Let's add some tooltips and hook up some signals... g_object_set(G_OBJECT(g->scale1), "tooltip-text", _("the opacity of the watermark"), (char *)NULL); g_object_set(G_OBJECT(g->scale2), "tooltip-text", _("the scale of the watermark"), (char *)NULL); g_signal_connect (G_OBJECT (g->scale1), "value-changed", G_CALLBACK (opacity_callback), self); g_signal_connect (G_OBJECT (g->scale2), "value-changed", G_CALLBACK (scale_callback), self); g_signal_connect (G_OBJECT (g->scale3), "value-changed", G_CALLBACK (xoffset_callback), self); g_signal_connect (G_OBJECT (g->scale4), "value-changed", G_CALLBACK (yoffset_callback), self); g_signal_connect (G_OBJECT (g->dtbutton1), "clicked",G_CALLBACK (refresh_callback), self); refresh_watermarks( self ); g_signal_connect (G_OBJECT (g->combobox1), "changed", G_CALLBACK (watermark_callback), self); }