static void gtk_font_button_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GtkFontButton *font_button = GTK_FONT_BUTTON (object); switch (param_id) { case PROP_TITLE: gtk_font_button_set_title (font_button, g_value_get_string (value)); break; case PROP_FONT_NAME: gtk_font_button_set_font_name (font_button, g_value_get_string (value)); break; case PROP_USE_FONT: gtk_font_button_set_use_font (font_button, g_value_get_boolean (value)); break; case PROP_USE_SIZE: gtk_font_button_set_use_size (font_button, g_value_get_boolean (value)); break; case PROP_SHOW_STYLE: gtk_font_button_set_show_style (font_button, g_value_get_boolean (value)); break; case PROP_SHOW_SIZE: gtk_font_button_set_show_size (font_button, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } }
JNIEXPORT void JNICALL Java_org_gnome_gtk_GtkFontButton_gtk_1font_1button_1set_1show_1size ( JNIEnv* env, jclass cls, jlong _self, jboolean _showSize ) { GtkFontButton* self; gboolean showSize; // convert parameter self self = (GtkFontButton*) _self; // convert parameter showSize showSize = (gboolean) _showSize; // call function gtk_font_button_set_show_size(self, showSize); // cleanup parameter self // cleanup parameter showSize }
bool wxFontButton::Create( wxWindow *parent, wxWindowID id, const wxFont &initial, const wxPoint &pos, const wxSize &size, long style, const wxValidator& validator, const wxString &name ) { if (!gtk_check_version(2,4,0)) { m_needParent = true; m_acceptsFocus = true; if (!PreCreation( parent, pos, size ) || !wxControl::CreateBase(parent, id, pos, size, style, validator, name)) { wxFAIL_MSG( wxT("wxFontButton creation failed") ); return false; } m_widget = gtk_font_button_new(); // set initial font m_selectedFont = initial.IsOk() ? initial : *wxNORMAL_FONT; UpdateFont(); // honour the fontbutton styles bool showall = (style & wxFNTP_FONTDESC_AS_LABEL) != 0, usefont = (style & wxFNTP_USEFONT_FOR_LABEL) != 0; gtk_font_button_set_show_style(GTK_FONT_BUTTON(m_widget), showall); gtk_font_button_set_show_size(GTK_FONT_BUTTON(m_widget), showall); gtk_font_button_set_use_size(GTK_FONT_BUTTON(m_widget), usefont); gtk_font_button_set_use_font(GTK_FONT_BUTTON(m_widget), usefont); gtk_widget_show( GTK_WIDGET(m_widget) ); // GtkFontButton signals g_signal_connect(m_widget, "font-set", G_CALLBACK(gtk_fontbutton_setfont_callback), this); m_parent->DoAddChild( this ); PostCreation(size); SetInitialSize(size); } else return wxGenericFontButton::Create(parent, id, initial, pos, size, style, validator, name); return true; }
int clip_GTK_FONTBUTTONSETSHOWSIZE(ClipMachine * ClipMachineMemory) { C_widget *cbtn = _fetch_cw_arg(ClipMachineMemory); gboolean show_size = _clip_parl(ClipMachineMemory, 2); CHECKCWID(cbtn, GTK_IS_FONT_BUTTON); CHECKARG(2, LOGICAL_type_of_ClipVarType); gtk_font_button_set_show_size(GTK_FONT_BUTTON(cbtn->widget), show_size); return 0; err: return 1; }
static void gtk_font_button_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GtkFontButton *font_button = GTK_FONT_BUTTON (object); switch (param_id) { case GTK_FONT_CHOOSER_PROP_PREVIEW_TEXT: gtk_font_button_set_preview_text (font_button, g_value_get_string (value)); break; case GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY: gtk_font_button_set_show_preview_entry (font_button, g_value_get_boolean (value)); break; case PROP_TITLE: gtk_font_button_set_title (font_button, g_value_get_string (value)); break; case GTK_FONT_CHOOSER_PROP_FONT_DESC: gtk_font_button_take_font_desc (font_button, g_value_dup_boxed (value)); break; case GTK_FONT_CHOOSER_PROP_FONT: case PROP_FONT_NAME: gtk_font_button_set_font_name (font_button, g_value_get_string (value)); break; case PROP_USE_FONT: gtk_font_button_set_use_font (font_button, g_value_get_boolean (value)); break; case PROP_USE_SIZE: gtk_font_button_set_use_size (font_button, g_value_get_boolean (value)); break; case PROP_SHOW_STYLE: gtk_font_button_set_show_style (font_button, g_value_get_boolean (value)); break; case PROP_SHOW_SIZE: gtk_font_button_set_show_size (font_button, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } }
GtkWidget * build_tblock(MtxTextBlock *tblock, gint index) { /* MUCH faster that the glade way unfortunately */ GtkWidget *notebook = NULL; GtkWidget *table = NULL; GtkWidget *subtable = NULL; GtkWidget *widget = NULL; GtkWidget *x_spin = NULL; GtkWidget *y_spin = NULL; GtkWidget *hbox = NULL; GtkWidget *img = NULL; GtkWidget *label = NULL; GtkWidget *minitable = NULL; gchar * tmpbuf = NULL; table = gtk_table_new(2,2,FALSE); /* Close button */ widget = gtk_button_new(); img = gtk_image_new_from_stock("gtk-close",GTK_ICON_SIZE_MENU); gtk_container_add(GTK_CONTAINER(widget),img); OBJ_SET((widget),"tblock_index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"clicked", G_CALLBACK(remove_tblock),NULL); gtk_table_attach(GTK_TABLE(table),widget,0,1,0,4,0,0,0,0); notebook = gtk_notebook_new(); gtk_table_attach(GTK_TABLE(table),notebook,1,2,0,1,GTK_EXPAND|GTK_FILL,0,0,0); /* text, color buttons */ subtable = gtk_table_new(1,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Text & Color"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Text:"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_FILL,0,0,0); widget = gtk_entry_new(); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_TEXT)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); gtk_entry_set_width_chars(GTK_ENTRY(widget),12); gtk_entry_set_text(GTK_ENTRY(widget),tblock->text); g_signal_connect(G_OBJECT(widget),"changed",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_EXPAND|GTK_FILL,0,0,0); widget = gtk_color_button_new_with_color(&tblock->color[MTX_DAY]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_COLOR_DAY)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,0,1,GTK_FILL,0,0,0); widget = gtk_color_button_new_with_color(&tblock->color[MTX_NITE]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_COLOR_NITE)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,0,1,GTK_FILL,0,0,0); /* font, font scale spinner */ subtable = gtk_table_new(1,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Font"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Font:"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_FILL,0,0,0); widget = gtk_font_button_new(); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_FONT)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); tmpbuf = g_strdup_printf("%s 12",tblock->font); gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget),tmpbuf); gtk_font_button_set_show_size(GTK_FONT_BUTTON(widget),FALSE); gtk_font_button_set_use_size(GTK_FONT_BUTTON(widget),FALSE); gtk_font_button_set_use_font(GTK_FONT_BUTTON(widget),FALSE); g_free(tmpbuf); g_signal_connect(G_OBJECT(widget),"font_set",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_EXPAND|GTK_FILL,0,0,0); widget = gtk_label_new("Font\nScale"); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,0,1,0,0,0,0); widget = gtk_spin_button_new_with_range(0.001,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_FONT_SCALE)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tblock->font_scale, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,0,1,0,0,0,0); /* Location Tab: Edit button, X/Y position spinners */ subtable = gtk_table_new(1,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Location"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Position:"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_FILL,0,0,0); /* X position minilayout table */ minitable = gtk_table_new(1,2,FALSE); gtk_table_attach(GTK_TABLE(subtable),minitable,2,3,0,1,GTK_EXPAND,0,0,0); widget = gtk_label_new("X:"); gtk_table_attach(GTK_TABLE(minitable),widget,0,1,0,1,GTK_FILL,0,0,0); widget = gtk_spin_button_new_with_range(-1.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_X_POS)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tblock->x_pos, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(minitable),widget,1,2,0,1,GTK_FILL,0,0,0); x_spin = widget; /* Y position minilayout table */ minitable = gtk_table_new(1,2,FALSE); gtk_table_attach(GTK_TABLE(subtable),minitable,3,4,0,1,GTK_FILL|GTK_EXPAND,0,0,0); widget = gtk_label_new("Y:"); gtk_table_attach(GTK_TABLE(minitable),widget,0,1,0,1,GTK_FILL,0,0,0); widget = gtk_spin_button_new_with_range(-1.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_Y_POS)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tblock->y_pos, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(minitable),widget,1,2,0,1,GTK_FILL,0,0,0); y_spin = widget; widget = gtk_button_new(); OBJ_SET(widget,"x_spin",x_spin); OBJ_SET(widget,"y_spin",y_spin); hbox = gtk_hbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(widget),hbox); img = gtk_image_new_from_stock("gtk-edit",GTK_ICON_SIZE_MENU); gtk_box_pack_start(GTK_BOX(hbox),img,FALSE,FALSE,0); label = gtk_label_new("Edit"); gtk_box_pack_start(GTK_BOX(hbox),label,TRUE,TRUE,0); g_signal_connect(G_OBJECT(widget),"clicked",G_CALLBACK(grab_coords_event),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_EXPAND|GTK_FILL,0,0,0); /* Layer Tab: Layer */ subtable = gtk_table_new(1,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Layer"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Layer:"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_FILL,0,0,0); widget = gtk_spin_button_new_with_range(0.0,10.0,1.0); OBJ_SET(widget,"handler",GINT_TO_POINTER(TB_LAYER)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 1.0, "digits", 0, "numeric", TRUE, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),(gfloat)tblock->layer); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tblock_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_FILL,0,0,0); widget = gtk_hseparator_new(); gtk_table_attach(GTK_TABLE(table),widget,0,2,1,2,GTK_FILL,0,0,0); return table; }
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; int line = 0; self->widget = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(self->widget), DT_BAUHAUS_SPACE); gtk_grid_set_column_spacing(GTK_GRID(self->widget), DT_PIXEL_APPLY_DPI(10)); gtk_grid_attach(GTK_GRID(self->widget), dt_ui_section_label_new(_("content")), 0, line++, 3, 1); // Add the marker combobox gchar configdir[PATH_MAX] = { 0 }; gchar datadir[PATH_MAX] = { 0 }; dt_loc_get_datadir(datadir, sizeof(datadir)); dt_loc_get_user_config_dir(configdir, sizeof(configdir)); GtkWidget *label = dtgtk_reset_label_new(_("marker"), self, &p->filename, sizeof(p->filename)); g->watermarks = dt_bauhaus_combobox_new(self); gtk_widget_set_hexpand(GTK_WIDGET(g->watermarks), TRUE); char *tooltip = g_strdup_printf(_("SVG watermarks in %s/watermarks or %s/watermarks"), configdir, datadir); gtk_widget_set_tooltip_text(g->watermarks, tooltip); g_free(tooltip); g->refresh = dtgtk_button_new(dtgtk_cairo_paint_refresh, CPF_STYLE_FLAT | CPF_DO_NOT_USE_BORDER); gtk_grid_attach(GTK_GRID(self->widget), label, 0, line++, 1, 1); gtk_grid_attach_next_to(GTK_GRID(self->widget), g->watermarks, label, GTK_POS_RIGHT, 1, 1); gtk_grid_attach_next_to(GTK_GRID(self->widget), g->refresh, g->watermarks, GTK_POS_RIGHT, 1, 1); // Watermark color float red = dt_conf_get_float("plugins/darkroom/watermark/color_red"); float green = dt_conf_get_float("plugins/darkroom/watermark/color_green"); float blue = dt_conf_get_float("plugins/darkroom/watermark/color_blue"); GdkRGBA color = (GdkRGBA){.red = red, .green = green, .blue = blue, .alpha = 1.0 }; label = dtgtk_reset_label_new(_("color"), self, &p->color, 3 * sizeof(float)); g->colorpick = gtk_color_button_new_with_rgba(&color); gtk_widget_set_tooltip_text(g->colorpick, _("watermark color, tag:\n$(WATERMARK_COLOR)")); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(g->colorpick), FALSE); gtk_widget_set_size_request(GTK_WIDGET(g->colorpick), DT_PIXEL_APPLY_DPI(24), DT_PIXEL_APPLY_DPI(24)); gtk_color_button_set_title(GTK_COLOR_BUTTON(g->colorpick), _("select watermark color")); gtk_grid_attach(GTK_GRID(self->widget), label, 0, line++, 1, 1); gtk_grid_attach_next_to(GTK_GRID(self->widget), g->colorpick, label, GTK_POS_RIGHT, 2, 1); // Simple text label = gtk_label_new(_("text")); gtk_widget_set_halign(label, GTK_ALIGN_START); g->text = gtk_entry_new(); gtk_entry_set_width_chars(GTK_ENTRY(g->text), 1); gtk_widget_set_tooltip_text(g->text, _("text string, tag:\n$(WATERMARK_TEXT)")); dt_gui_key_accel_block_on_focus_connect(g->text); gtk_grid_attach(GTK_GRID(self->widget), label, 0, line++, 1, 1); gtk_grid_attach_next_to(GTK_GRID(self->widget), g->text, label, GTK_POS_RIGHT, 2, 1); gchar *str = dt_conf_get_string("plugins/darkroom/watermark/text"); gtk_entry_set_text(GTK_ENTRY(g->text), str); g_free(str); // Text font label = dtgtk_reset_label_new(_("font"), self, &p->font, sizeof(p->font)); str = dt_conf_get_string("plugins/darkroom/watermark/font"); g->fontsel = gtk_font_button_new_with_font(str==NULL?"DejaVu Sans 10":str); GList *childs = gtk_container_get_children(GTK_CONTAINER(gtk_bin_get_child(GTK_BIN(g->fontsel)))); gtk_label_set_ellipsize(GTK_LABEL(childs->data), PANGO_ELLIPSIZE_MIDDLE); g_list_free(childs); gtk_widget_set_tooltip_text(g->fontsel, _("text font, tags:\n$(WATERMARK_FONT_FAMILY)\n" "$(WATERMARK_FONT_STYLE)\n$(WATERMARK_FONT_WEIGHT)")); gtk_font_button_set_show_size (GTK_FONT_BUTTON(g->fontsel), FALSE); g_free(str); gtk_grid_attach(GTK_GRID(self->widget), label, 0, line++, 1, 1); gtk_grid_attach_next_to(GTK_GRID(self->widget), g->fontsel, label, GTK_POS_RIGHT, 2, 1); gtk_grid_attach(GTK_GRID(self->widget), dt_ui_section_label_new(_("properties")), 0, line++, 3, 1); // Add opacity/scale sliders to table g->opacity = dt_bauhaus_slider_new_with_range(self, 0.0, 100.0, 1.0, p->opacity, 0); dt_bauhaus_slider_set_format(g->opacity, "%.f%%"); dt_bauhaus_widget_set_label(g->opacity, NULL, _("opacity")); g->scale = dt_bauhaus_slider_new_with_range(self, 1.0, 100.0, 1.0, p->scale, 0); dt_bauhaus_slider_enable_soft_boundaries(g->scale, 1.0, 500.0); dt_bauhaus_slider_set_format(g->scale, "%.f%%"); dt_bauhaus_widget_set_label(g->scale, NULL, _("scale")); g->rotate = dt_bauhaus_slider_new_with_range(self, -180.0, 180.0, 1.0, p->rotate, 2); dt_bauhaus_slider_set_format(g->rotate, "%.02f°"); dt_bauhaus_widget_set_label(g->rotate, NULL, _("rotation")); gtk_grid_attach(GTK_GRID(self->widget), g->opacity, 0, line++, 3, 1); gtk_grid_attach(GTK_GRID(self->widget), g->scale, 0, line++, 3, 1); gtk_grid_attach(GTK_GRID(self->widget), g->rotate, 0, line++, 3, 1); g->sizeto = dt_bauhaus_combobox_new(self); dt_bauhaus_combobox_add(g->sizeto, C_("size", "image")); dt_bauhaus_combobox_add(g->sizeto, _("larger border")); dt_bauhaus_combobox_add(g->sizeto, _("smaller border")); dt_bauhaus_combobox_set(g->sizeto, p->sizeto); dt_bauhaus_widget_set_label(g->sizeto, NULL, _("scale on")); gtk_widget_set_tooltip_text(g->sizeto, _("size is relative to")); gtk_grid_attach(GTK_GRID(self->widget), g->sizeto, 0, line++, 3, 1); gtk_grid_attach(GTK_GRID(self->widget), dt_ui_section_label_new(_("position")), 0, line++, 3, 1); // Create the 3x3 gtk table toggle button table... label = dtgtk_reset_label_new(_("alignment"), self, &p->alignment, sizeof(p->alignment)); GtkWidget *bat = gtk_grid_new(); gtk_grid_set_row_spacing(GTK_GRID(bat), DT_PIXEL_APPLY_DPI(3)); gtk_grid_set_column_spacing(GTK_GRID(bat), DT_PIXEL_APPLY_DPI(3)); for(int i = 0; i < 9; i++) { g->align[i] = dtgtk_togglebutton_new(dtgtk_cairo_paint_alignment, CPF_STYLE_FLAT | (CPF_SPECIAL_FLAG << i)); gtk_widget_set_size_request(GTK_WIDGET(g->align[i]), DT_PIXEL_APPLY_DPI(16), DT_PIXEL_APPLY_DPI(16)); gtk_grid_attach(GTK_GRID(bat), GTK_WIDGET(g->align[i]), i%3, i/3, 1, 1); g_signal_connect(G_OBJECT(g->align[i]), "toggled", G_CALLBACK(alignment_callback), self); } gtk_grid_attach(GTK_GRID(self->widget), label, 0, line++, 1, 1); gtk_grid_attach_next_to(GTK_GRID(self->widget), bat, label, GTK_POS_RIGHT, 2, 1); // x/y offset g->x_offset = dt_bauhaus_slider_new_with_range(self, -1.0, 1.0, 0.001, p->xoffset, 3); dt_bauhaus_slider_set_format(g->x_offset, "%.3f"); dt_bauhaus_widget_set_label(g->x_offset, NULL, _("x offset")); g->y_offset = dt_bauhaus_slider_new_with_range(self, -1.0, 1.0, 0.001, p->yoffset, 3); dt_bauhaus_slider_set_format(g->y_offset, "%.3f"); dt_bauhaus_widget_set_label(g->y_offset, NULL, _("y offset")); gtk_grid_attach(GTK_GRID(self->widget), g->x_offset, 0, line++, 3, 1); gtk_grid_attach(GTK_GRID(self->widget), g->y_offset, 0, line++, 3, 1); // Let's add some tooltips and hook up some signals... gtk_widget_set_tooltip_text(g->opacity, _("the opacity of the watermark")); gtk_widget_set_tooltip_text(g->scale, _("the scale of the watermark")); gtk_widget_set_tooltip_text(g->rotate, _("the rotation of the watermark")); g_signal_connect(G_OBJECT(g->opacity), "value-changed", G_CALLBACK(opacity_callback), self); g_signal_connect(G_OBJECT(g->scale), "value-changed", G_CALLBACK(scale_callback), self); g_signal_connect(G_OBJECT(g->rotate), "value-changed", G_CALLBACK(rotate_callback), self); g_signal_connect(G_OBJECT(g->x_offset), "value-changed", G_CALLBACK(xoffset_callback), self); g_signal_connect(G_OBJECT(g->y_offset), "value-changed", G_CALLBACK(yoffset_callback), self); g_signal_connect(G_OBJECT(g->refresh), "clicked", G_CALLBACK(refresh_callback), self); refresh_watermarks(self); g_signal_connect(G_OBJECT(g->watermarks), "value-changed", G_CALLBACK(watermark_callback), self); g_signal_connect(G_OBJECT(g->sizeto), "value-changed", G_CALLBACK(sizeto_callback), self); g_signal_connect(G_OBJECT(g->text), "changed", G_CALLBACK(text_callback), self); g_signal_connect(G_OBJECT(g->colorpick), "color-set", G_CALLBACK(colorpick_color_set), self); g_signal_connect(G_OBJECT(g->fontsel), "font-set", G_CALLBACK(fontsel_callback), self); } void gui_cleanup(struct dt_iop_module_t *self) { free(self->gui_data); self->gui_data = NULL; }
static void fcitx_config_widget_setup_ui(FcitxConfigWidget *self) { FcitxConfigFileDesc* cfdesc = self->cfdesc; GtkWidget *cvbox = GTK_WIDGET(self); GtkWidget *configNotebook = gtk_notebook_new(); gtk_box_pack_start(GTK_BOX(cvbox), configNotebook, TRUE, TRUE, 0); if (cfdesc) { bindtextdomain(cfdesc->domain, LOCALEDIR); bind_textdomain_codeset(cfdesc->domain, "UTF-8"); FILE *fp; fp = FcitxXDGGetFileWithPrefix(self->prefix, self->name, "r", NULL); self->gconfig.configFile = FcitxConfigParseConfigFileFp(fp, cfdesc); FcitxConfigGroupDesc *cgdesc = NULL; FcitxConfigOptionDesc *codesc = NULL; for (cgdesc = cfdesc->groupsDesc; cgdesc != NULL; cgdesc = (FcitxConfigGroupDesc*)cgdesc->hh.next) { codesc = cgdesc->optionsDesc; if (codesc == NULL) continue; GtkWidget* hbox = gtk_hbox_new(FALSE, 0); GtkWidget *table = gtk_table_new(2, HASH_COUNT(codesc), FALSE); GtkWidget *plabel = gtk_label_new(D_(cfdesc->domain, cgdesc->groupName)); GtkWidget *scrollwnd = gtk_scrolled_window_new(NULL, NULL); gtk_container_set_border_width(GTK_CONTAINER(table), 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwnd), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwnd), table); gtk_box_pack_start(GTK_BOX(hbox), scrollwnd, TRUE, TRUE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(configNotebook), hbox, plabel); int i = 0; for (; codesc != NULL; codesc = (FcitxConfigOptionDesc*)codesc->hh.next, i++) { const char *s; if (codesc->desc && strlen(codesc->desc) != 0) s = D_(cfdesc->domain, codesc->desc); else s = D_(cfdesc->domain, codesc->optionName); GtkWidget *inputWidget = NULL; void *argument = NULL; switch (codesc->type) { case T_Integer: inputWidget = gtk_spin_button_new_with_range(-1.0, 10000.0, 1.0); argument = inputWidget; break; case T_Color: inputWidget = gtk_color_button_new(); argument = inputWidget; break; case T_Boolean: inputWidget = gtk_check_button_new(); argument = inputWidget; break; case T_Font: { inputWidget = gtk_hbox_new(FALSE, 0); argument = gtk_font_button_new(); GtkWidget *button = gtk_button_new_with_label(_("Clear font setting")); gtk_box_pack_start(GTK_BOX(inputWidget), argument, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(inputWidget), button, FALSE, FALSE, 0); gtk_font_button_set_use_size(GTK_FONT_BUTTON(argument), FALSE); gtk_font_button_set_show_size(GTK_FONT_BUTTON(argument), FALSE); g_signal_connect(G_OBJECT(button), "clicked", (GCallback) set_none_font_clicked, argument); } break; case T_Enum: { int i; FcitxConfigEnum *e = &codesc->configEnum; #if GTK_CHECK_VERSION(2, 24, 0) inputWidget = gtk_combo_box_text_new(); for (i = 0; i < e->enumCount; i ++) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(inputWidget), D_(cfdesc->domain, e->enumDesc[i])); } #else inputWidget = gtk_combo_box_new_text(); for (i = 0; i < e->enumCount; i ++) { gtk_combo_box_append_text(GTK_COMBO_BOX(inputWidget), D_(cfdesc->domain, e->enumDesc[i])); } #endif argument = inputWidget; } break; case T_Hotkey: { GtkWidget *button[2]; button[0] = keygrab_button_new(); button[1] = keygrab_button_new(); inputWidget = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(inputWidget), button[0], FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(inputWidget), button[1], FALSE, TRUE, 0); argument = g_array_new(FALSE, FALSE, sizeof(void*)); g_array_append_val(argument, button[0]); g_array_append_val(argument, button[1]); } break; case T_File: case T_Char: case T_String: inputWidget = gtk_entry_new(); argument = inputWidget; break; default: break; } if (inputWidget) { GtkWidget* label = gtk_label_new(s); g_object_set(label, "xalign", 0.0f, NULL); gtk_table_attach(GTK_TABLE(table), label, 0, 1, i, i + 1, GTK_FILL, GTK_SHRINK, 5, 5); gtk_table_attach(GTK_TABLE(table), inputWidget, 1, 2, i, i + 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 4); FcitxConfigBindValue(self->gconfig.configFile, cgdesc->groupName, codesc->optionName, NULL, sync_filter, argument); } } } FcitxConfigBindSync(&self->gconfig); } if (self->parser) { GHashTable* subconfigs = self->parser->subconfigs; if (g_hash_table_size(subconfigs) != 0) { GtkWidget *table = gtk_table_new(2, g_hash_table_size(subconfigs), FALSE); GtkWidget *plabel = gtk_label_new(_("Other")); GtkWidget *scrollwnd = gtk_scrolled_window_new(NULL, NULL); GtkWidget *viewport = gtk_viewport_new(NULL, NULL); gtk_container_set_border_width(GTK_CONTAINER(table), 4); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwnd), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(scrollwnd), viewport); gtk_container_add(GTK_CONTAINER(viewport), table); gtk_notebook_append_page(GTK_NOTEBOOK(configNotebook), scrollwnd, plabel); HashForeachContext context; context.i = 0; context.table = table; context.widget = self; g_hash_table_foreach(subconfigs, hash_foreach_cb, &context); } } gtk_widget_set_size_request(configNotebook, 500, -1); gtk_notebook_set_scrollable(GTK_NOTEBOOK(configNotebook), TRUE); }
static void fcitx_wizard_candidate_widget_setup_ui(FcitxWizardCandidateWidget *self) { int row = 0; GtkWidget *cvbox = GTK_WIDGET(self); GtkWidget *hbox; GtkWidget *grid = gtk_grid_new(); gtk_widget_set_margin_left(grid, 0); gtk_widget_set_margin_top(grid, 6); gtk_grid_set_row_spacing(GTK_GRID(grid), 12); gtk_grid_set_column_spacing(GTK_GRID(grid), 6); GtkWidget* label = gtk_label_new(("Candidate Word Number")); g_object_set(label, "xalign", 0.0f, NULL); self->candidate_word_number_spin_button = gtk_spin_button_new_with_range( 1, 10, 1.0); g_object_set(self->candidate_word_number_spin_button, "hexpand", TRUE, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, row, 1, 1); gtk_grid_attach(GTK_GRID(grid), self->candidate_word_number_spin_button, 1, row, 1, 1); row ++; label = gtk_label_new(("Font Size")); g_object_set(label, "xalign", 0.0f, NULL); self->font_size_spin_button = gtk_spin_button_new_with_range( 0, 72, 1.0); g_object_set(self->font_size_spin_button, "hexpand", TRUE, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, row, 1, 1); gtk_grid_attach(GTK_GRID(grid), self->font_size_spin_button, 1, row, 1, 1); row ++; label = gtk_label_new(("Font")); g_object_set(label, "xalign", 0.0f, NULL); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); self->font_button = gtk_font_button_new(); GtkWidget *button = gtk_button_new_with_label(_("Clear font setting")); gtk_box_pack_start(GTK_BOX(hbox), self->font_button, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_font_button_set_use_size(GTK_FONT_BUTTON(self->font_button), FALSE); gtk_font_button_set_show_size(GTK_FONT_BUTTON(self->font_button), FALSE); g_signal_connect(G_OBJECT(button), "clicked", (GCallback) set_none_font_clicked, self->font_button); gtk_grid_attach(GTK_GRID(grid), label, 0, row, 1, 1); gtk_grid_attach(GTK_GRID(grid), hbox, 1, row, 1, 1); row ++; label = gtk_label_new(("Vertical Candidate Word List")); g_object_set(label, "xalign", 0.0f, NULL); self->vertical_candidate_button = gtk_check_button_new(); g_object_set(self->vertical_candidate_button, "hexpand", TRUE, NULL); gtk_grid_attach(GTK_GRID(grid), label, 0, row, 1, 1); gtk_grid_attach(GTK_GRID(grid), self->vertical_candidate_button, 1, row, 1, 1); gtk_box_pack_start(GTK_BOX(cvbox), grid, TRUE, TRUE, 0); fcitx_wizard_candidate_widget_load_conf(self); g_signal_connect(G_OBJECT(self->candidate_word_number_spin_button), "value-changed", G_CALLBACK(candidate_word_number_value_changed), self); g_signal_connect(G_OBJECT(self->font_size_spin_button), "value-changed", G_CALLBACK(font_size_value_changed), self); g_signal_connect(G_OBJECT(self->font_button), "font-set", G_CALLBACK(font_button_font_set), self); g_signal_connect(G_OBJECT(self->vertical_candidate_button), "toggled", G_CALLBACK(vertical_candidate_button_toggled), self); }
GtkWidget * build_tgroup(MtxTickGroup *tgroup, gint index) { /* MUCH faster that the ui way unfortunately */ GtkWidget *notebook = NULL; GtkWidget *table = NULL; GtkWidget *subtable = NULL; GtkWidget *widget = NULL; GtkWidget *x_spin = NULL; GtkWidget *y_spin = NULL; GtkWidget *hbox = NULL; GtkWidget *img = NULL; GtkWidget *label = NULL; GtkWidget *start = NULL; GtkWidget *sweep = NULL; GtkWidget *low = NULL; GtkWidget *high = NULL; gchar * tmpbuf = NULL; table = gtk_table_new(2,2,FALSE); /* Close button */ widget = gtk_button_new(); img = gtk_image_new_from_stock("gtk-close",GTK_ICON_SIZE_MENU); gtk_container_add(GTK_CONTAINER(widget),img); OBJ_SET((widget),"tgroup_index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"clicked", G_CALLBACK(remove_tgroup),NULL); gtk_table_attach(GTK_TABLE(table),widget,0,1,0,4,0,0,0,0); notebook = gtk_notebook_new(); gtk_table_attach(GTK_TABLE(table),notebook,1,2,0,1,GTK_EXPAND|GTK_FILL,0,0,0); /* Text/Color Tab */ subtable = gtk_table_new(2,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Text & Color"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Text:"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,2,GTK_FILL,GTK_EXPAND|GTK_FILL,0,0); widget = gtk_entry_new(); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_TEXT)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); gtk_entry_set_width_chars(GTK_ENTRY(widget),12); gtk_entry_set_text(GTK_ENTRY(widget),tgroup->text); g_signal_connect(G_OBJECT(widget),"changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,2,GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,0,0); widget = gtk_label_new("Day"); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,0,1,0,GTK_FILL,0,0); widget = gtk_color_button_new_with_color(&tgroup->text_color[MTX_DAY]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_TEXT_COLOR_DAY)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,1,2,GTK_FILL,GTK_EXPAND,0,0); widget = gtk_label_new("Night"); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,0,1,0,GTK_FILL,0,0); widget = gtk_color_button_new_with_color(&tgroup->text_color[MTX_NITE]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_TEXT_COLOR_NITE)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,1,2,GTK_FILL,GTK_EXPAND,0,0); /* Font Tab */ subtable = gtk_table_new(1,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Font"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Font:"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_FILL,GTK_EXPAND,0,0); widget = gtk_font_button_new(); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_FONT)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); tmpbuf = g_strdup_printf("%s 12",tgroup->font); gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget),tmpbuf); gtk_font_button_set_show_size(GTK_FONT_BUTTON(widget),FALSE); gtk_font_button_set_use_size(GTK_FONT_BUTTON(widget),FALSE); gtk_font_button_set_use_font(GTK_FONT_BUTTON(widget),FALSE); g_free(tmpbuf); g_signal_connect(G_OBJECT(widget),"font_set",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_EXPAND|GTK_FILL,GTK_EXPAND,0,0); widget = gtk_label_new("Font\nScale"); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,0,1,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.001,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_FONT_SCALE)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->font_scale, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,0,1,0,GTK_EXPAND,0,0); widget = gtk_label_new("Text\nInset"); gtk_table_attach(GTK_TABLE(subtable),widget,4,5,0,1,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.001,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_TEXT_INSET)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->text_inset, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,5,6,0,1,0,GTK_EXPAND,0,0); /* Major Ticks Tab */ subtable = gtk_table_new(2,6,FALSE); /*gtk_table_set_col_spacings(GTK_TABLE(subtable),5);*/ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label),"<b>Major</b> Ticks"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); /* Labels */ widget = gtk_label_new("Total Ticks"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Length"); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Width"); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Inset"); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Day"); gtk_table_attach(GTK_TABLE(subtable),widget,4,5,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Night"); gtk_table_attach(GTK_TABLE(subtable),widget,5,6,0,1,GTK_EXPAND,GTK_EXPAND,0,0); /* Spinners */ widget = gtk_spin_button_new_with_range(0.0,100.0,1); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_NUM_MAJ_TICKS)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 1.0, "digits", 0, "numeric", TRUE, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),tgroup->num_maj_ticks); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,1,2,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MAJ_TICK_LENGTH)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->maj_tick_length, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,1,2,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MAJ_TICK_WIDTH)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->maj_tick_width, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,1,2,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MAJ_TICK_INSET)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->maj_tick_inset, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,1,2,0,GTK_EXPAND,0,0); widget = gtk_color_button_new_with_color(&tgroup->maj_tick_color[MTX_DAY]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MAJ_TICK_COLOR_DAY)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,4,5,1,2,GTK_FILL,GTK_EXPAND,0,0); widget = gtk_color_button_new_with_color(&tgroup->maj_tick_color[MTX_NITE]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MAJ_TICK_COLOR_NITE)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,5,6,1,2,GTK_FILL,GTK_EXPAND,0,0); /* Minor Ticks Tab */ subtable = gtk_table_new(2,6,FALSE); /*gtk_table_set_col_spacings(GTK_TABLE(subtable),5);*/ label = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(label),"<b>Minor</b> Ticks"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); /* Labels */ widget = gtk_label_new("Total Ticks"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Length"); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Width"); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Inset"); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Day"); gtk_table_attach(GTK_TABLE(subtable),widget,4,5,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Night"); gtk_table_attach(GTK_TABLE(subtable),widget,5,6,0,1,GTK_EXPAND,GTK_EXPAND,0,0); /* Spinners */ widget = gtk_spin_button_new_with_range(0.0,100.0,1); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_NUM_MIN_TICKS)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 1.0, "digits", 0, "numeric", TRUE, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),tgroup->num_min_ticks); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,1,2,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MIN_TICK_LENGTH)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->min_tick_length, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,1,2,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MIN_TICK_WIDTH)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->min_tick_width, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,1,2,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(0.0,1.0,0.001); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MIN_TICK_INSET)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 0.001, "digits", 3, "numeric", TRUE, "value", tgroup->min_tick_inset, NULL); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,1,2,0,GTK_EXPAND,0,0); widget = gtk_color_button_new_with_color(&tgroup->min_tick_color[MTX_DAY]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MIN_TICK_COLOR_DAY)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,4,5,1,2,GTK_FILL,GTK_EXPAND,0,0); widget = gtk_color_button_new_with_color(&tgroup->min_tick_color[MTX_NITE]); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_MIN_TICK_COLOR_NITE)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_signal_connect(G_OBJECT(widget),"color_set",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,5,6,1,2,GTK_FILL,GTK_EXPAND,0,0); /* Tick Span Tab */ subtable = gtk_table_new(3,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Tick Span"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Angular Span (deg.)"); gtk_table_attach(GTK_TABLE(subtable),widget,0,2,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Span (Gauge Units)"); gtk_table_attach(GTK_TABLE(subtable),widget,2,4,0,1,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Start Angle"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,1,2,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Sweep Angle"); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,1,2,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("Low Point"); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,1,2,GTK_EXPAND,GTK_EXPAND,0,0); widget = gtk_label_new("High Point"); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,1,2,GTK_EXPAND,GTK_EXPAND,0,0); /* Span Spinners */ widget = gtk_spin_button_new_with_range(-360.0,360.0,0.1); start = widget; OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_START_ANGLE)); OBJ_SET(widget,"spin_handler",GINT_TO_POINTER(ADJ_LOW_UNIT_PARTNER)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,2,3,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(-360.0,360.0,0.1); sweep = widget; OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_SWEEP_ANGLE)); OBJ_SET(widget,"spin_handler",GINT_TO_POINTER(ADJ_HIGH_UNIT_PARTNER)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,2,3,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(-99999.0,99999.0,0.1); low = widget; OBJ_SET(widget,"handler",GINT_TO_POINTER(ADJ_START_ANGLE_PARTNER)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(low),"climb-rate", 0.1, "digits", 1, "numeric", TRUE, NULL); g_signal_connect(G_OBJECT(low),"value-changed",G_CALLBACK(tg_spin_button_handler),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,2,3,2,3,0,GTK_EXPAND,0,0); widget = gtk_spin_button_new_with_range(-99999.0,99999.0,0.1); high = widget; OBJ_SET(widget,"handler",GINT_TO_POINTER(ADJ_SWEEP_ANGLE_PARTNER)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(high),"climb-rate", 0.1, "digits", 1, "numeric", TRUE, NULL); g_signal_connect(G_OBJECT(high),"value-changed",G_CALLBACK(tg_spin_button_handler),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,3,4,2,3,0,GTK_EXPAND,0,0); /* Start/Sweep <-> Low/High interconnectedness * This is done like shit and I don't like it.. */ OBJ_SET(start,"lowpartner",low); OBJ_SET(start,"highpartner",high); OBJ_SET(start,"high_angle",sweep); OBJ_SET(sweep,"highpartner",high); OBJ_SET(sweep,"low_angle",start); OBJ_SET(low,"lowpartner",start); OBJ_SET(high,"highpartner",sweep); OBJ_SET(high,"start_angle",start); /* Connect the signals, then set the values to trigger the linked * spinners to update, THEN enable change handlers, as the gauge * ALREADY has the info, no need to set it again.. */ g_signal_connect(G_OBJECT(start),"value-changed",G_CALLBACK(tg_spin_button_handler),NULL); g_signal_connect(G_OBJECT(sweep),"value-changed",G_CALLBACK(tg_spin_button_handler),NULL); g_object_set(G_OBJECT(start),"climb-rate", 0.1, "digits", 1, "numeric", TRUE, "value", tgroup->start_angle, NULL); g_object_set(G_OBJECT(sweep),"climb-rate", 0.1, "digits", 1, "numeric", TRUE, "value", tgroup->sweep_angle, NULL); g_signal_connect(G_OBJECT(start),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); g_signal_connect(G_OBJECT(sweep),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); /* Layer Tab: Layer */ subtable = gtk_table_new(1,4,FALSE); gtk_table_set_col_spacings(GTK_TABLE(subtable),5); label = gtk_label_new("Layer"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),subtable,label); gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(notebook),subtable,TRUE,TRUE,GTK_PACK_START); widget = gtk_label_new("Layer:"); gtk_table_attach(GTK_TABLE(subtable),widget,0,1,0,1,GTK_FILL,0,0,0); widget = gtk_spin_button_new_with_range(0.0,10.0,1.0); OBJ_SET(widget,"handler",GINT_TO_POINTER(TG_LAYER)); OBJ_SET(widget,"index",GINT_TO_POINTER(index)); g_object_set(G_OBJECT(widget),"climb-rate", 1.0, "digits", 0, "numeric", TRUE, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),(gfloat)tgroup->layer); g_signal_connect(G_OBJECT(widget),"value-changed",G_CALLBACK(alter_tgroup_data),NULL); gtk_table_attach(GTK_TABLE(subtable),widget,1,2,0,1,GTK_FILL,0,0,0); widget = gtk_hseparator_new(); gtk_table_attach(GTK_TABLE(table),widget,0,2,1,2,GTK_FILL,0,0,0); return table; }
void dpr(GtkWidget *wgt, gpointer dta) { AtkObject *awg, *all; gchar *str; GdkColor cl1, cl2; gdouble iv; gint val; GtkAdjustment *adj; GtkPlot *pt; GtkPlotLinear *plt; GtkWidget *btt, *hbx, *hwn, *lbl, *spr, *tbl, *vbx; guint16 alp, alp2; hwn=gtk_dialog_new_with_buttons(_("Display Properties"), GTK_WINDOW(dta), GTK_DIALOG_DESTROY_WITH_PARENT, NULL); g_signal_connect_swapped(G_OBJECT(hwn), "destroy", G_CALLBACK(gtk_widget_destroy), G_OBJECT(hwn)); btt=gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_widget_show(btt); g_signal_connect_swapped(G_OBJECT(btt), "clicked", G_CALLBACK(gtk_widget_destroy), G_OBJECT(hwn)); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(hwn)->action_area), btt); btt=gtk_button_new_from_stock(GTK_STOCK_APPLY); gtk_widget_show(btt); g_signal_connect(G_OBJECT(btt), "clicked", G_CALLBACK(dpa), NULL); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(hwn)->action_area), btt); nb2=gtk_notebook_new(); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(nb2), GTK_POS_TOP); tbl=gtk_table_new(4, 2, FALSE); gtk_widget_show(tbl); plt=GTK_PLOT_LINEAR(pt1); pt=GTK_PLOT(pt1); lbl=gtk_label_new(_("Axis label font:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 1, 2, 0, 1, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); str=pango_font_description_to_string(pt->lfont); bt1=gtk_font_button_new_with_font(str); g_free(str); gtk_font_button_set_show_style(GTK_FONT_BUTTON(bt1), TRUE); gtk_font_button_set_show_size(GTK_FONT_BUTTON(bt1), TRUE); gtk_font_button_set_use_font(GTK_FONT_BUTTON(bt1), TRUE); gtk_font_button_set_use_size(GTK_FONT_BUTTON(bt1), FALSE); gtk_font_button_set_title(GTK_FONT_BUTTON(bt1), _("Font Selection for Axis Labels")); gtk_widget_show(bt1); gtk_table_attach(GTK_TABLE(tbl), bt1, 1, 2, 1, 2, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(bt1); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new(_("Tick label font:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 1, 2, 2, 3, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); str=pango_font_description_to_string(pt->afont); bt2=gtk_font_button_new_with_font(str); g_free(str); gtk_font_button_set_show_style(GTK_FONT_BUTTON(bt2), TRUE); gtk_font_button_set_show_size(GTK_FONT_BUTTON(bt2), TRUE); gtk_font_button_set_use_font(GTK_FONT_BUTTON(bt2), TRUE); gtk_font_button_set_use_size(GTK_FONT_BUTTON(bt2), FALSE); gtk_font_button_set_title(GTK_FONT_BUTTON(bt2), _("Font Selection for Tick Mark Labels")); gtk_widget_show(bt2); gtk_table_attach(GTK_TABLE(tbl), bt2, 1, 2, 3, 4, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(bt2); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new(_("X axis text:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 0, 1, 0, 1, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); en1=gtk_entry_new(); str=g_strdup(plt->xlab); gtk_entry_set_text(GTK_ENTRY(en1), str); g_free(str); gtk_widget_show(en1); gtk_table_attach(GTK_TABLE(tbl), en1, 0, 1, 1, 2, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(en1); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new(_("Y axis text:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 0, 1, 2, 3, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); en2=gtk_entry_new(); str=g_strdup(plt->ylab); gtk_entry_set_text(GTK_ENTRY(en2), str); g_free(str); gtk_widget_show(en2); gtk_table_attach(GTK_TABLE(tbl), en2, 0, 1, 3, 4, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(en2); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new("Index of Plot:"); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 0, 1, 4, 5, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); adj=(GtkAdjustment*) gtk_adjustment_new(0, 0, 1, 1.0, 1.0, 0.0); jix=gtk_spin_button_new(adj, 0, 0); g_signal_connect(G_OBJECT(jix), "value-changed", G_CALLBACK(upj), NULL); gtk_table_attach(GTK_TABLE(tbl), jix, 1, 2, 4, 5, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); gtk_widget_show(jix); awg=gtk_widget_get_accessible(jix); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); vbx=gtk_vbox_new(FALSE, 2); gtk_widget_show(vbx); gtk_box_pack_start(GTK_BOX(vbx), tbl, FALSE, FALSE, 2); spr=gtk_vseparator_new(); gtk_widget_show(spr); cmp=gdk_colormap_get_system(); (cl1.red)=(guint16) (65535*g_array_index((pt->rd), gdouble, 0)); (cl1.green)=(guint16) (65535*g_array_index((pt->gr), gdouble, 0)); (cl1.blue)=(guint16) (65535*g_array_index((pt->bl), gdouble, 0)); alp=(guint16) (65535*g_array_index((pt->al), gdouble, 0)); gdk_colormap_alloc_color(cmp, &cl1, FALSE, TRUE); cs1=gtk_color_selection_new(); gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(cs1), TRUE); gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(cs1), &cl1); gtk_color_selection_set_has_palette(GTK_COLOR_SELECTION(cs1), TRUE); gtk_color_selection_set_current_alpha(GTK_COLOR_SELECTION(cs1), alp); gtk_widget_show(cs1); hbx=gtk_hbox_new(FALSE, 2); gtk_widget_show(hbx); gtk_box_pack_start(GTK_BOX(hbx), vbx, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(hbx), spr, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(hbx), cs1, FALSE, FALSE, 2); lbl=gtk_label_new(_("Spectrum")); gtk_notebook_append_page(GTK_NOTEBOOK(nb2), hbx, lbl); tbl=gtk_table_new(4, 2, FALSE); gtk_widget_show(tbl); plt=GTK_PLOT_LINEAR(pt2); pt=GTK_PLOT(pt2); lbl=gtk_label_new(_("Axis label font:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 1, 2, 0, 1, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); str=pango_font_description_to_string(pt->lfont); bt3=gtk_font_button_new_with_font(str); g_free(str); gtk_font_button_set_show_style(GTK_FONT_BUTTON(bt3), TRUE); gtk_font_button_set_show_size(GTK_FONT_BUTTON(bt3), TRUE); gtk_font_button_set_use_font(GTK_FONT_BUTTON(bt3), TRUE); gtk_font_button_set_use_size(GTK_FONT_BUTTON(bt3), FALSE); gtk_font_button_set_title(GTK_FONT_BUTTON(bt3), _("Font Selection for Axis Labels")); gtk_widget_show(bt3); gtk_table_attach(GTK_TABLE(tbl), bt3, 1, 2, 1, 2, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(bt3); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new(_("Tick label font:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 1, 2, 2, 3, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); str=pango_font_description_to_string(pt->afont); bt4=gtk_font_button_new_with_font(str); g_free(str); gtk_font_button_set_show_style(GTK_FONT_BUTTON(bt4), TRUE); gtk_font_button_set_show_size(GTK_FONT_BUTTON(bt4), TRUE); gtk_font_button_set_use_font(GTK_FONT_BUTTON(bt4), TRUE); gtk_font_button_set_use_size(GTK_FONT_BUTTON(bt4), FALSE); gtk_font_button_set_title(GTK_FONT_BUTTON(bt4), _("Font Selection for Tick Mark Labels")); gtk_widget_show(bt4); gtk_table_attach(GTK_TABLE(tbl), bt4, 1, 2, 3, 4, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(bt4); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new(_("X axis text:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 0, 1, 0, 1, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); en3=gtk_entry_new(); str=g_strdup(plt->xlab); gtk_entry_set_text(GTK_ENTRY(en3), str); g_free(str); gtk_widget_show(en3); gtk_table_attach(GTK_TABLE(tbl), en3, 0, 1, 1, 2, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(en3); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new(_("Y axis text:")); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 0, 1, 2, 3, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); en4=gtk_entry_new(); str=g_strdup(plt->ylab); gtk_entry_set_text(GTK_ENTRY(en4), str); g_free(str); gtk_widget_show(en4); gtk_table_attach(GTK_TABLE(tbl), en4, 0, 1, 3, 4, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); awg=gtk_widget_get_accessible(en4); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); lbl=gtk_label_new("Index of Plot:"); gtk_widget_show(lbl); gtk_table_attach(GTK_TABLE(tbl), lbl, 0, 1, 4, 5, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); adj=(GtkAdjustment*) gtk_adjustment_new(0, 0, 1, 1.0, 1.0, 0.0); jix2=gtk_spin_button_new(adj, 0, 0); g_signal_connect(G_OBJECT(jix2), "value-changed", G_CALLBACK(upj2), NULL); gtk_table_attach(GTK_TABLE(tbl), jix2, 1, 2, 4, 5, GTK_FILL|GTK_SHRINK|GTK_EXPAND, GTK_FILL|GTK_SHRINK|GTK_EXPAND, 2, 2); gtk_widget_show(jix2); awg=gtk_widget_get_accessible(jix2); all=gtk_widget_get_accessible(GTK_WIDGET(lbl)); atk_object_add_relationship(all, ATK_RELATION_LABEL_FOR, awg); atk_object_add_relationship(awg, ATK_RELATION_LABELLED_BY, all); vbx=gtk_vbox_new(FALSE, 2); gtk_widget_show(vbx); gtk_box_pack_start(GTK_BOX(vbx), tbl, FALSE, FALSE, 2); spr=gtk_vseparator_new(); gtk_widget_show(spr); cs2=gtk_color_selection_new(); (cl2.red)=(guint16) (65535*g_array_index((pt->rd), gdouble, 0)); (cl2.green)=(guint16) (65535*g_array_index((pt->gr), gdouble, 0)); (cl2.blue)=(guint16) (65535*g_array_index((pt->bl), gdouble, 0)); alp2=(guint16) (65535*g_array_index((pt->al), gdouble, 0)); gdk_colormap_alloc_color(cmp, &cl2, FALSE, TRUE); gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(cs2), TRUE); gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(cs2), &cl2); gtk_color_selection_set_has_palette(GTK_COLOR_SELECTION(cs2), TRUE); gtk_color_selection_set_current_alpha(GTK_COLOR_SELECTION(cs2), alp2); gtk_widget_show(cs2); hbx=gtk_hbox_new(FALSE, 2); gtk_widget_show(hbx); gtk_box_pack_start(GTK_BOX(hbx), vbx, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(hbx), spr, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(hbx), cs2, FALSE, FALSE, 2); lbl=gtk_label_new(_("Spatial Structure")); gtk_notebook_append_page(GTK_NOTEBOOK(nb2), hbx, lbl); val=gtk_notebook_get_current_page(GTK_NOTEBOOK(nbk)); gtk_notebook_set_current_page(GTK_NOTEBOOK(nb2), val); gtk_widget_show(nb2); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(hwn)->vbox), nb2); gtk_widget_show(hwn); }
static void fcitx_config_widget_create_option_widget( FcitxConfigWidget *self, FcitxConfigGroupDesc* cgdesc, FcitxConfigOptionDesc* codesc, char** label, char** tooltip, GtkWidget** inputWidget, void** newarg) { FcitxConfigFileDesc* cfdesc = self->cfdesc; FcitxConfigOptionDesc2* codesc2 = (FcitxConfigOptionDesc2*) codesc; void* oldarg = NULL; void* argument = NULL; char* name = g_strdup_printf("%s/%s", cgdesc->groupName, codesc->optionName); oldarg = g_hash_table_lookup(self->argmap, name); if (codesc->desc && strlen(codesc->desc) != 0) { *label = strdup(D_(cfdesc->domain, codesc->desc)); } else { *label = strdup(D_(cfdesc->domain, codesc->optionName)); } if (codesc2->longDesc && codesc2->longDesc[0]) { *tooltip = strdup(D_(cfdesc->domain, codesc2->longDesc)); } switch (codesc->type) { case T_Integer: *inputWidget = gtk_spin_button_new_with_range( codesc2->constrain.integerConstrain.min, codesc2->constrain.integerConstrain.max, 1.0); g_object_set(*inputWidget, "hexpand", TRUE, NULL); if (oldarg) { g_object_bind_property(*inputWidget, "value", oldarg, "value", G_BINDING_BIDIRECTIONAL); } else { g_signal_connect(*inputWidget, "notify::value", (GCallback) _fcitx_config_widget_changed, self); argument = *inputWidget; } break; case T_Color: *inputWidget = gtk_color_button_new(); g_object_set(*inputWidget, "hexpand", TRUE, NULL); if (oldarg) { g_object_bind_property(*inputWidget, "color", oldarg, "color", G_BINDING_BIDIRECTIONAL); } else { g_signal_connect(*inputWidget, "notify::color", (GCallback) _fcitx_config_widget_changed, self); argument = *inputWidget; } break; case T_Boolean: *inputWidget = gtk_check_button_new(); g_object_set(*inputWidget, "hexpand", TRUE, NULL); if (oldarg) { g_object_bind_property(*inputWidget, "active", oldarg, "active", G_BINDING_BIDIRECTIONAL); } else { g_signal_connect(*inputWidget, "notify::active", (GCallback) _fcitx_config_widget_changed, self); argument = *inputWidget; } break; case T_Font: { *inputWidget = gtk_grid_new(); g_object_set(*inputWidget, "hexpand", TRUE, NULL); GtkWidget* arg = gtk_font_button_new(); GtkWidget *button = gtk_button_new_with_label(_("Clear font setting")); g_object_set(arg, "hexpand", TRUE, NULL); gtk_grid_attach(GTK_GRID(*inputWidget), arg, 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(*inputWidget), button, 1, 0, 2, 1); gtk_font_button_set_use_size(GTK_FONT_BUTTON(arg), FALSE); gtk_font_button_set_show_size(GTK_FONT_BUTTON(arg), FALSE); g_signal_connect(G_OBJECT(button), "clicked", (GCallback) set_none_font_clicked, arg); if (oldarg) { g_object_bind_property(arg, "font-name", oldarg, "font-name", G_BINDING_BIDIRECTIONAL); } else { g_signal_connect(arg, "notify::font-name", (GCallback) _fcitx_config_widget_changed, self); argument = arg; } } break; case T_Enum: { int i; FcitxConfigEnum *e = &codesc->configEnum; *inputWidget = gtk_combo_box_text_new(); for (i = 0; i < e->enumCount; i ++) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(*inputWidget), D_(cfdesc->domain, e->enumDesc[i])); } g_object_set(*inputWidget, "hexpand", TRUE, NULL); if (oldarg) { g_object_bind_property(*inputWidget, "active", oldarg, "active", G_BINDING_BIDIRECTIONAL); } else { g_signal_connect(*inputWidget, "notify::active", (GCallback) _fcitx_config_widget_changed, self); argument = *inputWidget; } } break; case T_Hotkey: { GtkWidget *button[2]; button[0] = keygrab_button_new(); button[1] = keygrab_button_new(); *inputWidget = gtk_grid_new(); gtk_grid_attach(GTK_GRID(*inputWidget), button[0], 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(*inputWidget), button[1], 1, 0, 2, 1); g_object_set(G_OBJECT(button[0]), "hexpand", TRUE, NULL); g_object_set(G_OBJECT(button[1]), "hexpand", TRUE, NULL); if (oldarg) { GArray* array = oldarg; int j; for (j = 0; j < 2; j ++) { GtkWidget *oldbutton = g_array_index(array, GtkWidget*, j); g_signal_connect(oldbutton, "changed", (GCallback) sync_hotkey, button[j]); g_signal_connect(button[j], "changed", (GCallback) sync_hotkey, oldbutton); } } else { argument = g_array_new(FALSE, FALSE, sizeof(void*)); int j; for (j = 0; j < 2; j ++) { g_signal_connect(button[j], "changed", (GCallback) _fcitx_config_widget_hotkey_changed, self); g_array_append_val(argument, button[j]); } } } break; case T_File: case T_Char: case T_String: *inputWidget = gtk_entry_new(); g_object_set(*inputWidget, "hexpand", TRUE, NULL); if (oldarg) { g_object_bind_property(*inputWidget, "text", oldarg, "text", G_BINDING_BIDIRECTIONAL); } else { g_signal_connect(*inputWidget, "notify::text", (GCallback) _fcitx_config_widget_changed, self); argument = *inputWidget; } break; default: break; }