static void script_fu_console_save_dialog (ConsoleInterface *console) { if (! console->save_dialog) { console->save_dialog = gtk_file_chooser_dialog_new (_("Save Script-Fu Console Output"), GTK_WINDOW (console->dialog), GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"), GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (console->save_dialog), GTK_RESPONSE_OK); gimp_dialog_set_alternative_button_order (GTK_DIALOG (console->save_dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (console->save_dialog), TRUE); g_object_add_weak_pointer (G_OBJECT (console->save_dialog), (gpointer) &console->save_dialog); g_signal_connect (console->save_dialog, "response", G_CALLBACK (script_fu_console_save_response), console); } gtk_window_present (GTK_WINDOW (console->save_dialog)); }
static void savebrush (GtkWidget *wg, gpointer data) { GtkWidget *dialog = NULL; GList *thispath = parsepath (); gchar *path; if (! PPM_IS_INITED (&brushppm)) { g_message ( _("Can only save drawables!")); return; } dialog = gtk_file_chooser_dialog_new (_("Save Brush"), GTK_WINDOW (gtk_widget_get_toplevel (wg)), GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"), GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); path = g_build_filename ((gchar *)thispath->data, "Brushes", NULL); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), path); g_free (path); g_signal_connect (dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &dialog); g_signal_connect (dialog, "response", G_CALLBACK (savebrush_response), NULL); gtk_widget_show (dialog); }
DefaultDialog_t * make_default_dialog (const gchar *title) { DefaultDialog_t *data = g_new0 (DefaultDialog_t, 1); data->ok_cb = NULL; data->apply_cb = NULL; data->cancel_cb = NULL; data->dialog = gimp_dialog_new (title, PLUG_IN_ROLE, get_dialog(), 0, gimp_standard_help_func, PLUG_IN_PROC, NULL); data->apply = gtk_dialog_add_button (GTK_DIALOG (data->dialog), _("_Apply"), GTK_RESPONSE_APPLY); data->cancel = gtk_dialog_add_button (GTK_DIALOG (data->dialog), _("_Cancel"), GTK_RESPONSE_CANCEL); data->ok = gtk_dialog_add_button (GTK_DIALOG (data->dialog), _("_OK"), GTK_RESPONSE_OK); gimp_dialog_set_alternative_button_order (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, GTK_RESPONSE_APPLY, GTK_RESPONSE_CANCEL, -1); g_signal_connect (data->dialog, "response", G_CALLBACK (dialog_response), data); g_signal_connect (data->dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &data->dialog); data->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (data->vbox), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))), data->vbox, TRUE, TRUE, 0); gtk_widget_show (data->vbox); return data; }
static void script_fu_browse_callback (GtkWidget *widget, ConsoleInterface *console) { if (! console->proc_browser) { console->proc_browser = gimp_proc_browser_dialog_new (_("Script-Fu Procedure Browser"), "script-fu-procedure-browser", gimp_standard_help_func, PROC_NAME, _("_Apply"), GTK_RESPONSE_APPLY, _("_Close"), GTK_RESPONSE_CLOSE, NULL); gtk_dialog_set_default_response (GTK_DIALOG (console->proc_browser), GTK_RESPONSE_APPLY); gimp_dialog_set_alternative_button_order (GTK_DIALOG (console->proc_browser), GTK_RESPONSE_CLOSE, GTK_RESPONSE_APPLY, -1); g_object_add_weak_pointer (G_OBJECT (console->proc_browser), (gpointer) &console->proc_browser); g_signal_connect (console->proc_browser, "response", G_CALLBACK (script_fu_browse_response), console); g_signal_connect (console->proc_browser, "row-activated", G_CALLBACK (script_fu_browse_row_activated), console); } gtk_window_present (GTK_WINDOW (console->proc_browser)); }
void gradients_save_as_pov_ray_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContext *context; GimpGradient *gradient; GtkWidget *dialog; context = gimp_container_view_get_context (editor->view); gradient = gimp_context_get_gradient (context); if (! gradient) return; #define SAVE_AS_POV_DIALOG_KEY "gimp-save-as-pov-ray-dialog" dialog = dialogs_get_dialog (G_OBJECT (gradient), SAVE_AS_POV_DIALOG_KEY); if (! dialog) { gchar *title = g_strdup_printf (_("Save '%s' as POV-Ray"), gimp_object_get_name (gradient)); dialog = gtk_file_chooser_dialog_new (title, NULL, GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"), GTK_RESPONSE_OK, NULL); g_free (title); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); g_object_set_data (G_OBJECT (dialog), "gimp", context->gimp); gtk_window_set_screen (GTK_WINDOW (dialog), gtk_widget_get_screen (GTK_WIDGET (editor))); gtk_window_set_role (GTK_WINDOW (dialog), "gimp-gradient-save-pov"); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); g_signal_connect (dialog, "response", G_CALLBACK (gradients_save_as_pov_ray_response), gradient); g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_true), NULL); g_signal_connect_object (dialog, "destroy", G_CALLBACK (g_object_unref), g_object_ref (gradient), G_CONNECT_SWAPPED); gimp_help_connect (dialog, gimp_standard_help_func, GIMP_HELP_GRADIENT_SAVE_AS_POV, NULL); dialogs_attach_dialog (G_OBJECT (gradient), SAVE_AS_POV_DIALOG_KEY, dialog); } gtk_window_present (GTK_WINDOW (dialog)); }
static void script_fu_console_interface (void) { ConsoleInterface console = { 0, }; GtkWidget *vbox; GtkWidget *button; GtkWidget *scrolled_window; GtkWidget *hbox; gimp_ui_init ("script-fu", FALSE); console.history_max = 50; console.dialog = gimp_dialog_new (_("Script-Fu Console"), "gimp-script-fu-console", NULL, 0, gimp_standard_help_func, PROC_NAME, _("_Save"), RESPONSE_SAVE, _("C_lear"), RESPONSE_CLEAR, _("_Close"), GTK_RESPONSE_CLOSE, NULL); gimp_dialog_set_alternative_button_order (GTK_DIALOG (console.dialog), GTK_RESPONSE_CLOSE, RESPONSE_CLEAR, RESPONSE_SAVE, -1); g_object_add_weak_pointer (G_OBJECT (console.dialog), (gpointer) &console.dialog); g_signal_connect (console.dialog, "response", G_CALLBACK (script_fu_console_response), &console); /* The main vbox */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (console.dialog))), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); /* The output text widget */ scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0); gtk_widget_show (scrolled_window); console.console = gtk_text_buffer_new (NULL); console.text_view = gtk_text_view_new_with_buffer (console.console); g_object_unref (console.console); gtk_text_view_set_editable (GTK_TEXT_VIEW (console.text_view), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (console.text_view), GTK_WRAP_WORD); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (console.text_view), 6); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (console.text_view), 6); gtk_widget_set_size_request (console.text_view, TEXT_WIDTH, TEXT_HEIGHT); gtk_container_add (GTK_CONTAINER (scrolled_window), console.text_view); gtk_widget_show (console.text_view); gtk_text_buffer_create_tag (console.console, "strong", "weight", PANGO_WEIGHT_BOLD, "scale", PANGO_SCALE_LARGE, NULL); gtk_text_buffer_create_tag (console.console, "emphasis", "style", PANGO_STYLE_OBLIQUE, NULL); { const gchar * const greetings[] = { "strong", N_("Welcome to TinyScheme"), NULL, "\n", NULL, "Copyright (c) Dimitrios Souflis", NULL, "\n", "strong", N_("Script-Fu Console"), NULL, " - ", "emphasis", N_("Interactive Scheme Development"), NULL, "\n" }; GtkTextIter cursor; gint i; gtk_text_buffer_get_end_iter (console.console, &cursor); for (i = 0; i < G_N_ELEMENTS (greetings); i += 2) { if (greetings[i]) gtk_text_buffer_insert_with_tags_by_name (console.console, &cursor, gettext (greetings[i + 1]), -1, greetings[i], NULL); else gtk_text_buffer_insert (console.console, &cursor, gettext (greetings[i + 1]), -1); } } /* The current command */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); console.cc = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox), console.cc, TRUE, TRUE, 0); gtk_widget_grab_focus (console.cc); gtk_widget_show (console.cc); g_signal_connect (console.cc, "key-press-event", G_CALLBACK (script_fu_cc_key_function), &console); button = gtk_button_new_with_mnemonic (_("_Browse...")); g_object_set (gtk_bin_get_child (GTK_BIN (button)), "margin-start", 2, "margin-end", 2, NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (script_fu_browse_callback), &console); /* Initialize the history */ console.history = g_list_append (console.history, NULL); console.history_len = 1; gtk_widget_show (console.dialog); gtk_main (); if (console.save_dialog) gtk_widget_destroy (console.save_dialog); if (console.dialog) gtk_widget_destroy (console.dialog); }
/** * gimp_display_shell_scale_dialog: * @shell: the #GimpDisplayShell * * Constructs and displays a dialog allowing the user to enter a * custom display scale. **/ void gimp_display_shell_scale_dialog (GimpDisplayShell *shell) { ScaleDialogData *data; GimpImage *image; GtkWidget *toplevel; GtkWidget *hbox; GtkWidget *grid; GtkWidget *spin; GtkWidget *label; gint num, denom, row; g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell)); if (shell->scale_dialog) { gtk_window_present (GTK_WINDOW (shell->scale_dialog)); return; } if (SCALE_EQUALS (shell->other_scale, 0.0)) { /* other_scale not yet initialized */ shell->other_scale = gimp_zoom_model_get_factor (shell->zoom); } image = gimp_display_get_image (shell->display); data = g_slice_new (ScaleDialogData); data->shell = shell; data->model = g_object_new (GIMP_TYPE_ZOOM_MODEL, "value", fabs (shell->other_scale), NULL); shell->scale_dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (image), gimp_get_user_context (shell->display->gimp), _("Zoom Ratio"), "display_scale", "zoom-original", _("Select Zoom Ratio"), GTK_WIDGET (shell), gimp_standard_help_func, GIMP_HELP_VIEW_ZOOM_OTHER, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gimp_dialog_set_alternative_button_order (GTK_DIALOG (shell->scale_dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); g_object_weak_ref (G_OBJECT (shell->scale_dialog), (GWeakNotify) gimp_display_shell_scale_dialog_free, data); g_object_weak_ref (G_OBJECT (shell->scale_dialog), (GWeakNotify) g_object_unref, data->model); g_object_add_weak_pointer (G_OBJECT (shell->scale_dialog), (gpointer) &shell->scale_dialog); toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell)); gtk_window_set_transient_for (GTK_WINDOW (shell->scale_dialog), GTK_WINDOW (toplevel)); gtk_window_set_destroy_with_parent (GTK_WINDOW (shell->scale_dialog), TRUE); g_signal_connect (shell->scale_dialog, "response", G_CALLBACK (gimp_display_shell_scale_dialog_response), data); grid = gtk_grid_new (); gtk_container_set_border_width (GTK_CONTAINER (grid), 12); gtk_grid_set_column_spacing (GTK_GRID (grid), 6); gtk_grid_set_row_spacing (GTK_GRID (grid), 6); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (shell->scale_dialog))), grid, TRUE, TRUE, 0); gtk_widget_show (grid); row = 0; hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gimp_grid_attach_aligned (GTK_GRID (grid), 0, row++, _("Zoom ratio:"), 0.0, 0.5, hbox, 1); gimp_zoom_model_get_fraction (data->model, &num, &denom); data->num_adj = gtk_adjustment_new (num, 1, 256, 1, 8, 0); spin = gimp_spin_button_new (data->num_adj, 1.0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spin), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (spin), TRUE); gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0); gtk_widget_show (spin); label = gtk_label_new (":"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); data->denom_adj = gtk_adjustment_new (denom, 1, 256, 1, 8, 0); spin = gimp_spin_button_new (data->denom_adj, 1.0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spin), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (spin), TRUE); gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0); gtk_widget_show (spin); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gimp_grid_attach_aligned (GTK_GRID (grid), 0, row++, _("Zoom:"), 0.0, 0.5, hbox, 1); data->scale_adj = gtk_adjustment_new (fabs (shell->other_scale) * 100, 100.0 / 256.0, 25600.0, 10, 50, 0); spin = gimp_spin_button_new (data->scale_adj, 1.0, 2); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spin), TRUE); gtk_entry_set_activates_default (GTK_ENTRY (spin), TRUE); gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0); gtk_widget_show (spin); label = gtk_label_new ("%"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); g_signal_connect (data->scale_adj, "value-changed", G_CALLBACK (update_zoom_values), data); g_signal_connect (data->num_adj, "value-changed", G_CALLBACK (update_zoom_values), data); g_signal_connect (data->denom_adj, "value-changed", G_CALLBACK (update_zoom_values), data); gtk_widget_show (shell->scale_dialog); }
static gboolean webpage_dialog (void) { GtkWidget *dialog; GtkWidget *hbox; GtkWidget *vbox; GtkWidget *image; GtkWidget *label; GtkWidget *entry; GtkSizeGroup *sizegroup; GtkAdjustment *adjustment; GtkWidget *spinbutton; GtkWidget *combo; gint active; gint status; gboolean ret = FALSE; gimp_ui_init (PLUG_IN_BINARY, FALSE); dialog = gimp_dialog_new (_("Create from webpage"), PLUG_IN_ROLE, NULL, 0, gimp_standard_help_func, PLUG_IN_PROC, _("_Cancel"), GTK_RESPONSE_CANCEL, _("Cre_ate"), GTK_RESPONSE_OK, NULL); gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gimp_window_set_transient (GTK_WINDOW (dialog)); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_container_set_border_width (GTK_CONTAINER (hbox), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); gtk_widget_show (vbox); image = gtk_image_new_from_icon_name (GIMP_ICON_WEB, GTK_ICON_SIZE_BUTTON); gtk_box_pack_start (GTK_BOX (vbox), image, FALSE, FALSE, 0); gtk_widget_show (image); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); label = gtk_label_new (_("Enter location (URI):")); gtk_label_set_xalign (GTK_LABEL (label), 0.0); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); gtk_widget_show (label); entry = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE); gtk_widget_set_size_request (entry, 400, -1); gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); if (webpagevals.url) gtk_entry_set_text (GTK_ENTRY (entry), webpagevals.url); gtk_widget_show (entry); sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); /* Width */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); label = gtk_label_new (_("Width (pixels):")); gtk_size_group_add_widget (sizegroup, label); gtk_label_set_xalign (GTK_LABEL (label), 0.0); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); adjustment = gtk_adjustment_new (webpagevals.width, 1, 8192, 1, 10, 0); spinbutton = gtk_spin_button_new (adjustment, 1.0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_box_pack_start (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); /* Font size */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); label = gtk_label_new (_("Font size:")); gtk_size_group_add_widget (sizegroup, label); gtk_label_set_xalign (GTK_LABEL (label), 0.0); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); combo = gimp_int_combo_box_new (_("Huge"), 16, _("Large"), 14, C_("web-page", "Default"), 12, _("Small"), 10, _("Tiny"), 8, NULL); switch (webpagevals.font_size) { case 16: case 14: case 12: case 10: case 8: active = webpagevals.font_size; break; default: active = 12; } gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (combo), active); gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0); gtk_widget_show (combo); g_object_unref (sizegroup); status = gimp_dialog_run (GIMP_DIALOG (dialog)); if (status == GTK_RESPONSE_OK) { g_free (webpagevals.url); webpagevals.url = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry))); webpagevals.width = (gint) gtk_adjustment_get_value (adjustment); gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (combo), &webpagevals.font_size); ret = TRUE; } gtk_widget_destroy (dialog); return ret; }
void window_open_display_cmd_callback (GtkAction *action, gpointer data) { GtkWidget *widget; GtkWidget *dialog; GtkWidget *entry; return_if_no_widget (widget, data); dialog = gimp_message_dialog_new ("Open Display", GIMP_ICON_WILBER_EEK, widget, GTK_DIALOG_MODAL, NULL, NULL, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box, "Experimental multi-display stuff!\n" "Click OK and have fun crashing GIMP..."); gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box, "Please enter the name of the new display:"); entry = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE); gtk_box_pack_start (GTK_BOX (GIMP_MESSAGE_DIALOG (dialog)->box), entry, TRUE, TRUE, 0); gtk_widget_grab_focus (entry); gtk_widget_show_all (dialog); while (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { gchar *screen_name; screen_name = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1); if (strcmp (screen_name, "")) { GdkDisplay *display; gtk_widget_set_sensitive (dialog, FALSE); display = gdk_display_open (screen_name); if (! display) gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box, "Can't open display '%s'. " "Please try another one:", screen_name); g_free (screen_name); gtk_widget_set_sensitive (dialog, TRUE); if (display) break; } gtk_widget_grab_focus (entry); } gtk_widget_destroy (dialog); }
static gint despeckle_dialog (void) { GtkWidget *dialog; GtkWidget *main_vbox; GtkWidget *vbox; GtkWidget *grid; GtkWidget *frame; GtkWidget *button; GtkAdjustment *adj; gboolean run; gimp_ui_init (PLUG_IN_BINARY, TRUE); dialog = gimp_dialog_new (_("Despeckle"), PLUG_IN_ROLE, NULL, 0, gimp_standard_help_func, PLUG_IN_PROC, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gimp_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gimp_window_set_transient (GTK_WINDOW (dialog)); main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), main_vbox, TRUE, TRUE, 0); gtk_widget_show (main_vbox); preview = gimp_drawable_preview_new_from_drawable_id (drawable->drawable_id); gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0); gtk_widget_show (preview); g_signal_connect (preview, "invalidated", G_CALLBACK (preview_update), NULL); frame = gimp_frame_new (_("Median")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); button = gtk_check_button_new_with_mnemonic (_("_Adaptive")); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), filter_type & FILTER_ADAPTIVE); gtk_widget_show (button); g_signal_connect (button, "toggled", G_CALLBACK (dialog_adaptive_callback), NULL); button = gtk_check_button_new_with_mnemonic (_("R_ecursive")); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), filter_type & FILTER_RECURSIVE); gtk_widget_show (button); g_signal_connect (button, "toggled", G_CALLBACK (dialog_recursive_callback), NULL); grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (grid), 6); gtk_grid_set_column_spacing (GTK_GRID (grid), 6); gtk_box_pack_start (GTK_BOX (main_vbox), grid, FALSE, FALSE, 0); gtk_widget_show (grid); /* * Box size (diameter) control... */ adj = gimp_scale_entry_new (GTK_GRID (grid), 0, 0, _("_Radius:"), SCALE_WIDTH, ENTRY_WIDTH, despeckle_radius, 1, MAX_RADIUS, 1, 5, 0, TRUE, 0, 0, NULL, NULL); g_signal_connect (adj, "value-changed", G_CALLBACK (gimp_int_adjustment_update), &despeckle_radius); g_signal_connect_swapped (adj, "value-changed", G_CALLBACK (gimp_preview_invalidate), preview); /* * Black level control... */ adj = gimp_scale_entry_new (GTK_GRID (grid), 0, 1, _("_Black level:"), SCALE_WIDTH, ENTRY_WIDTH, black_level, -1, 255, 1, 8, 0, TRUE, 0, 0, NULL, NULL); g_signal_connect (adj, "value-changed", G_CALLBACK (gimp_int_adjustment_update), &black_level); g_signal_connect_swapped (adj, "value-changed", G_CALLBACK (gimp_preview_invalidate), preview); /* * White level control... */ adj = gimp_scale_entry_new (GTK_GRID (grid), 0, 2, _("_White level:"), SCALE_WIDTH, ENTRY_WIDTH, white_level, 0, 256, 1, 8, 0, TRUE, 0, 0, NULL, NULL); g_signal_connect (adj, "value-changed", G_CALLBACK (gimp_int_adjustment_update), &white_level); g_signal_connect_swapped (adj, "value-changed", G_CALLBACK (gimp_preview_invalidate), preview); /* * Show it and wait for the user to do something... */ gtk_widget_show (dialog); run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK); gtk_widget_destroy (dialog); /* * Return ok/cancel... */ return run; }