/** * gimp_export_dialog_new: * @format_name: The short name of the image_format (e.g. JPEG or PNG). * @role: The dialog's @role which will be set with * gtk_window_set_role(). * @help_id: The GIMP help id. * * Creates a new export dialog. All file plug-ins should use this * dialog to get a consistent look on the export dialogs. Use * gimp_export_dialog_get_content_area() to get a #GtkVBox to be * filled with export options. The export dialog is a wrapped * #GimpDialog. * * The dialog response when the user clicks on the Export button is * %GTK_RESPONSE_OK, and when the Cancel button is clicked it is * %GTK_RESPONSE_CANCEL. * * Returns: The new export dialog. * * Since: 2.8 **/ GtkWidget * gimp_export_dialog_new (const gchar *format_name, const gchar *role, const gchar *help_id) { GtkWidget *dialog = NULL; GtkWidget *button = NULL; gchar *title = g_strconcat (_("Export Image as "), format_name, NULL); dialog = gimp_dialog_new (title, role, NULL, 0, gimp_standard_help_func, help_id, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); button = gimp_dialog_add_button (GIMP_DIALOG (dialog), _("_Export"), GTK_RESPONSE_OK); gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_icon_name ("document-save", GTK_ICON_SIZE_BUTTON)); gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gimp_window_set_transient (GTK_WINDOW (dialog)); g_free (title); return dialog; }
/** * gimp_dialog_add_buttons_valist: * @dialog: The @dialog to add buttons to. * @args: The buttons as va_list. * * This function is essentially the same as gimp_dialog_add_buttons() * except it takes a va_list instead of '...' **/ void gimp_dialog_add_buttons_valist (GimpDialog *dialog, va_list args) { const gchar *button_text; gint response_id; g_return_if_fail (GIMP_IS_DIALOG (dialog)); while ((button_text = va_arg (args, const gchar *))) { response_id = va_arg (args, gint); gimp_dialog_add_button (dialog, button_text, response_id); } }
/* -------------------------- * p_align_dialog * -------------------------- */ static void p_align_dialog(AlignDialogVals *advPtr) { GtkWidget *dialog; GtkWidget *main_vbox; GtkWidget *label; GtkWidget *button; GtkWidget *table; GtkWidget *vbox1; GSList *vbox1_group = NULL; GtkWidget *radiobutton; gint row; advPtr->runExactAlign = FALSE; gimp_ui_init (GAP_EXACT_ALIGNER_PLUG_IN_NAME_BINARY, TRUE); dialog = gimp_dialog_new (_("Transform Layer via 4 (or 2) point Alignment"), GAP_EXACT_ALIGNER_PLUG_IN_NAME_BINARY, NULL, 0, gimp_standard_help_func, GAP_EXACT_ALIGNER_PLUG_IN_NAME, GTK_STOCK_REFRESH, GAP_RESPONSE_REFRESH_PATH, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); advPtr->shell = dialog; button = gimp_dialog_add_button (GIMP_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK); advPtr->okButton = button; gtk_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_vbox_new (FALSE, 12); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), main_vbox); gtk_widget_show (main_vbox); g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (on_exact_align_response), advPtr); /* Controls */ table = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_box_pack_start (GTK_BOX (main_vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); row = 0; /* info label */ label = gtk_label_new ("--"); advPtr->infoLabel = label; gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5); row++; /* pointOrder radiobutton * POINT_ORDER_MODE_31_42: compatible to the exact aligner script (from the plugin registry) */ label = gtk_label_new (_("Path Point Order:")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); /* vbox for radio group */ vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_table_attach (GTK_TABLE (table), vbox1, 1, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); /* Order Mode the radio buttons */ radiobutton = gtk_radio_button_new_with_label (vbox1_group, _("( 3 --> 1 ) ( 4 --> 2 )\nTarget is marked by points 1&2 ")); advPtr->radio_order_mode_31_42 = radiobutton; vbox1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton)); gtk_widget_show (radiobutton); gtk_box_pack_start (GTK_BOX (vbox1), radiobutton, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (radiobutton), "clicked", G_CALLBACK (on_order_mode_radio_callback), advPtr); if(advPtr->pointOrder == POINT_ORDER_MODE_31_42) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radiobutton), TRUE); } radiobutton = gtk_radio_button_new_with_label (vbox1_group, "( 2 --> 1 ) ( 4 --> 3 )\nTarget is marked by points 1&3"); advPtr->radio_order_mode_21_43 = radiobutton; vbox1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton)); gtk_widget_show (radiobutton); gtk_box_pack_start (GTK_BOX (vbox1), radiobutton, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (radiobutton), "clicked", G_CALLBACK (on_order_mode_radio_callback), advPtr); if(advPtr->pointOrder == POINT_ORDER_MODE_21_43) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (radiobutton), TRUE); } p_refresh_and_update_infoLabel(NULL, advPtr); /* Done */ gtk_widget_show (dialog); gtk_main (); gdk_flush (); } /* end p_align_dialog */