diff options
| author | Tristan Van Berkom <tristanvb@openismus.com> | 2013-03-28 06:06:05 (GMT) |
|---|---|---|
| committer | Tristan Van Berkom <tristanvb@openismus.com> | 2013-04-08 12:19:29 (GMT) |
| commit | 9accb95b9f1b12a2a69625d4638a308840df584d (patch) | |
| tree | 7f7b631a1eb6e1121def213f7b8f1756c98ae90b | |
| parent | 0f16d7c6d536129382554a44ea4bd72256eb2747 (diff) | |
| download | gtk+-9accb95b9f1b12a2a69625d4638a308840df584d.zip gtk+-9accb95b9f1b12a2a69625d4638a308840df584d.tar.xz | |
GtkPrintUnixDialog: Define children with a GtkBuilder template
| -rw-r--r-- | gtk/Makefile.am | 1 | ||||
| -rw-r--r-- | gtk/gtk.gresource.xml | 1 | ||||
| -rw-r--r-- | gtk/gtkprintunixdialog.c | 962 | ||||
| -rw-r--r-- | gtk/gtkprintunixdialog.ui | 1733 | ||||
| -rw-r--r-- | gtk/tests/templates.c | 10 |
5 files changed, 1954 insertions, 753 deletions
diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 4318ad6..40516d1 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -1110,6 +1110,7 @@ COMPOSITE_TEMPLATES = \ gtklockbutton.ui \ gtkmessagedialog.ui \ gtkpagesetupunixdialog.ui \ + gtkprintunixdialog.ui \ gtkrecentchooserdefault.ui \ gtkscalebutton.ui \ gtkstatusbar.ui diff --git a/gtk/gtk.gresource.xml b/gtk/gtk.gresource.xml index 31c4728..46347d9 100644 --- a/gtk/gtk.gresource.xml +++ b/gtk/gtk.gresource.xml @@ -25,6 +25,7 @@ <file compressed="true">gtklockbutton.ui</file> <file compressed="true">gtkmessagedialog.ui</file> <file compressed="true">gtkpagesetupunixdialog.ui</file> + <file compressed="true">gtkprintunixdialog.ui</file> <file compressed="true">gtkrecentchooserdefault.ui</file> <file compressed="true">gtkscalebutton.ui</file> <file compressed="true">gtkstatusbar.ui</file> diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c index c4ac913..6f30579 100644 --- a/gtk/gtkprintunixdialog.c +++ b/gtk/gtkprintunixdialog.c @@ -145,7 +145,6 @@ static void gtk_print_unix_dialog_get_property (GObject *object, GValue *value, GParamSpec *pspec); static void gtk_print_unix_dialog_style_updated (GtkWidget *widget); -static void populate_dialog (GtkPrintUnixDialog *dialog); static void unschedule_idle_mark_conflicts (GtkPrintUnixDialog *dialog); static void selected_printer_changed (GtkTreeSelection *selection, GtkPrintUnixDialog *dialog); @@ -161,6 +160,43 @@ static void printer_status_cb (GtkPrintBackend *backend, GtkPrintUnixDialog *dialog); static void update_collate_icon (GtkToggleButton *toggle_button, GtkPrintUnixDialog *dialog); +static gboolean error_dialogs (GtkPrintUnixDialog *print_dialog, + gint print_dialog_response_id, + gpointer data); +static void emit_ok_response (GtkTreeView *tree_view, + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer *user_data); +static void update_page_range_entry_sensitivity(GtkWidget *button, + GtkPrintUnixDialog *dialog); +static void update_print_at_entry_sensitivity (GtkWidget *button, + GtkPrintUnixDialog *dialog); +static void update_print_at_option (GtkPrintUnixDialog *dialog); +static void update_dialog_from_capabilities (GtkPrintUnixDialog *dialog); +static gboolean draw_collate_cb (GtkWidget *widget, + cairo_t *cr, + GtkPrintUnixDialog *dialog); +static gboolean is_printer_active (GtkTreeModel *model, + GtkTreeIter *iter, + GtkPrintUnixDialog *dialog); +static gint default_printer_list_sort_func (GtkTreeModel *model, + GtkTreeIter *a, + GtkTreeIter *b, + gpointer user_data); +static gboolean paper_size_row_is_separator (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data); +static void page_name_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data); +static void update_number_up_layout (GtkPrintUnixDialog *dialog); +static gboolean draw_page_cb (GtkWidget *widget, + cairo_t *cr, + GtkPrintUnixDialog *dialog); + + static gboolean dialog_get_collate (GtkPrintUnixDialog *dialog); static gboolean dialog_get_reverse (GtkPrintUnixDialog *dialog); static gint dialog_get_n_copies (GtkPrintUnixDialog *dialog); @@ -173,6 +209,7 @@ static void set_cell_sensitivity_func (GtkTreeViewColumn *tree_colu static gboolean set_active_printer (GtkPrintUnixDialog *dialog, const gchar *printer_name); static void redraw_page_layout_preview (GtkPrintUnixDialog *dialog); +static void load_print_backends (GtkPrintUnixDialog *dialog); /* GtkBuildable */ static void gtk_print_unix_dialog_buildable_init (GtkBuildableIface *iface); @@ -195,12 +232,24 @@ static const gchar const common_paper_sizes[][16] = { "iso_a3", }; +/* Keep in line with liststore defined in gtkprintunixdialog.ui */ enum { PAGE_SETUP_LIST_COL_PAGE_SETUP, PAGE_SETUP_LIST_COL_IS_SEPARATOR, PAGE_SETUP_LIST_N_COLS }; +/* Keep in line with liststore defined in gtkprintunixdialog.ui */ +enum { + PRINTER_LIST_COL_ICON, + PRINTER_LIST_COL_NAME, + PRINTER_LIST_COL_STATE, + PRINTER_LIST_COL_JOBS, + PRINTER_LIST_COL_LOCATION, + PRINTER_LIST_COL_PRINTER_OBJ, + PRINTER_LIST_N_COLS +}; + enum { PROP_0, PROP_PAGE_SETUP, @@ -213,21 +262,19 @@ enum { PROP_EMBED_PAGE_SETUP }; -enum { - PRINTER_LIST_COL_ICON, - PRINTER_LIST_COL_NAME, - PRINTER_LIST_COL_STATE, - PRINTER_LIST_COL_JOBS, - PRINTER_LIST_COL_LOCATION, - PRINTER_LIST_COL_PRINTER_OBJ, - PRINTER_LIST_N_COLS -}; - struct GtkPrintUnixDialogPrivate { GtkWidget *notebook; GtkWidget *printer_treeview; + GtkTreeViewColumn *printer_icon_column; + GtkTreeViewColumn *printer_name_column; + GtkTreeViewColumn *printer_location_column; + GtkTreeViewColumn *printer_status_column; + GtkCellRenderer *printer_icon_renderer; + GtkCellRenderer *printer_name_renderer; + GtkCellRenderer *printer_location_renderer; + GtkCellRenderer *printer_status_renderer; GtkPrintCapabilities manual_capabilities; GtkPrintCapabilities printer_capabilities; @@ -265,6 +312,7 @@ struct GtkPrintUnixDialogPrivate GtkWidget *preview_button; GtkWidget *paper_size_combo; GtkWidget *paper_size_combo_label; + GtkCellRenderer *paper_size_renderer; GtkWidget *orientation_combo; GtkWidget *orientation_combo_label; gboolean internal_page_setup_change; @@ -427,6 +475,93 @@ gtk_print_unix_dialog_class_init (GtkPrintUnixDialogClass *class) FALSE, GTK_PARAM_READWRITE)); + /* Bind class to template + */ + gtk_widget_class_set_template_from_resource (widget_class, + "/org/gtk/libgtk/gtkprintunixdialog.ui"); + + /* GtkTreeView / GtkTreeModel */ + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_treeview); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_list); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_list_filter); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, page_setup_list); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, custom_paper_list); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_icon_column); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_name_column); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_location_column); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_status_column); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_icon_renderer); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_name_renderer); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_location_renderer); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, printer_status_renderer); + + /* General Widgetry */ + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, notebook); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, all_pages_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, all_pages_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, current_page_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, selection_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, range_table); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, page_range_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, page_range_entry); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, copies_spin); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, collate_check); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, reverse_check); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, collate_image); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, page_layout_preview); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, scale_spin); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, page_set_combo); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, print_now_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, print_at_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, print_at_entry); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, print_hold_radio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, preview_button); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, paper_size_combo); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, paper_size_combo_label); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, paper_size_renderer); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, orientation_combo); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, orientation_combo_label); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, conflicts_widget); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, job_page); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, finishing_table); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, finishing_page); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, image_quality_table); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, image_quality_page); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, color_table); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, color_page); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, advanced_vbox); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, advanced_page); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, extension_point); + + /* GtkPrinterOptionWidgets... */ + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, pages_per_sheet); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, duplex); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, paper_type); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, paper_source); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, output_tray); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, job_prio); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, billing_info); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, cover_before); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, cover_after); + gtk_widget_class_bind_child (widget_class, GtkPrintUnixDialogPrivate, number_up_layout); + + /* Callbacks handled in the UI */ + gtk_widget_class_bind_callback (widget_class, gtk_print_unix_dialog_destroy); + gtk_widget_class_bind_callback (widget_class, redraw_page_layout_preview); + gtk_widget_class_bind_callback (widget_class, error_dialogs); + gtk_widget_class_bind_callback (widget_class, emit_ok_response); + gtk_widget_class_bind_callback (widget_class, selected_printer_changed); + gtk_widget_class_bind_callback (widget_class, update_page_range_entry_sensitivity); + gtk_widget_class_bind_callback (widget_class, update_print_at_entry_sensitivity); + gtk_widget_class_bind_callback (widget_class, update_print_at_option); + gtk_widget_class_bind_callback (widget_class, update_dialog_from_capabilities); + gtk_widget_class_bind_callback (widget_class, update_collate_icon); + gtk_widget_class_bind_callback (widget_class, draw_collate_cb); + gtk_widget_class_bind_callback (widget_class, redraw_page_layout_preview); + gtk_widget_class_bind_callback (widget_class, update_number_up_layout); + gtk_widget_class_bind_callback (widget_class, redraw_page_layout_preview); + gtk_widget_class_bind_callback (widget_class, draw_page_cb); + g_type_class_add_private (class, sizeof (GtkPrintUnixDialogPrivate)); } @@ -597,6 +732,7 @@ static void gtk_print_unix_dialog_init (GtkPrintUnixDialog *dialog) { GtkPrintUnixDialogPrivate *priv; + GtkTreeSortable *sort; dialog->priv = G_TYPE_INSTANCE_GET_PRIVATE (dialog, GTK_TYPE_PRINT_UNIX_DIALOG, @@ -616,42 +752,56 @@ gtk_print_unix_dialog_init (GtkPrintUnixDialog *dialog) priv->support_selection = FALSE; priv->has_selection = FALSE; - g_signal_connect (dialog, "destroy", - (GCallback) gtk_print_unix_dialog_destroy, NULL); + gtk_widget_init_template (GTK_WIDGET (dialog)); - g_signal_connect (dialog, "response", - (GCallback) error_dialogs, NULL); + /* Treeview auxilary functions need to be setup here */ + gtk_tree_model_filter_set_visible_func (priv->printer_list_filter, + (GtkTreeModelFilterVisibleFunc) is_printer_active, + dialog, + NULL); - g_signal_connect (dialog, "notify::page-setup", - (GCallback) redraw_page_layout_preview, NULL); + sort = GTK_TREE_SORTABLE (priv->printer_list); + gtk_tree_sortable_set_default_sort_func (sort, + default_printer_list_sort_func, + NULL, + NULL); - priv->preview_button = gtk_button_new_from_stock (GTK_STOCK_PRINT_PREVIEW); - gtk_widget_show (priv->preview_button); + gtk_tree_sortable_set_sort_column_id (sort, + GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, + GTK_SORT_ASCENDING); - gtk_dialog_add_action_widget (GTK_DIALOG (dialog), - priv->preview_button, - GTK_RESPONSE_APPLY); - gtk_dialog_add_buttons (GTK_DIALOG (dialog), - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_PRINT, GTK_RESPONSE_OK, - NULL); - gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), - GTK_RESPONSE_APPLY, - GTK_RESPONSE_OK, - GTK_RESPONSE_CANCEL, - -1); + gtk_tree_view_column_set_cell_data_func (priv->printer_icon_column, + priv->printer_icon_renderer, + set_cell_sensitivity_func, NULL, NULL); - gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); - gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE); + gtk_tree_view_column_set_cell_data_func (priv->printer_name_column, + priv->printer_name_renderer, + set_cell_sensitivity_func, NULL, NULL); - priv->page_setup_list = gtk_list_store_new (PAGE_SETUP_LIST_N_COLS, - G_TYPE_OBJECT, - G_TYPE_BOOLEAN); + gtk_tree_view_column_set_cell_data_func (priv->printer_location_column, + priv->printer_location_renderer, + set_cell_sensitivity_func, NULL, NULL); - priv->custom_paper_list = gtk_list_store_new (1, G_TYPE_OBJECT); - _gtk_print_load_custom_papers (priv->custom_paper_list); + gtk_tree_view_column_set_cell_data_func (priv->printer_status_column, + priv->printer_status_renderer, + set_cell_sensitivity_func, NULL, NULL); + + + /* Paper size combo auxilary funcs */ + gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (priv->paper_size_combo), + paper_size_row_is_separator, NULL, NULL); + gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (priv->paper_size_combo), + priv->paper_size_renderer, + page_name_func, NULL, NULL); + + /* Preview drawing area has no window */ + gtk_widget_set_has_window (priv->page_layout_preview, FALSE); - populate_dialog (dialog); + /* Load backends */ + load_print_backends (dialog); + + /* Load custom papers */ + _gtk_print_load_custom_papers (priv->custom_paper_list); } static void @@ -1100,43 +1250,6 @@ default_printer_list_sort_func (GtkTreeModel *model, return result; } -static void -create_printer_list_model (GtkPrintUnixDialog *dialog) -{ - GtkPrintUnixDialogPrivate *priv = dialog->priv; - GtkListStore *model; - GtkTreeSortable *sort; - - model = gtk_list_store_new (PRINTER_LIST_N_COLS, - G_TYPE_STRING, - G_TYPE_STRING, - G_TYPE_STRING, - G_TYPE_INT, - G_TYPE_STRING, - G_TYPE_OBJECT); - - priv->printer_list = (GtkTreeModel *)model; - priv->printer_list_filter = (GtkTreeModelFilter *) gtk_tree_model_filter_new ((GtkTreeModel *)model, - NULL); - - gtk_tree_model_filter_set_visible_func (priv->printer_list_filter, - (GtkTreeModelFilterVisibleFunc) is_printer_active, - dialog, - NULL); - - sort = GTK_TREE_SORTABLE (model); - gtk_tree_sortable_set_default_sort_func (sort, - default_printer_list_sort_func, - NULL, - NULL); - - gtk_tree_sortable_set_sort_column_id (sort, - GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, - GTK_SORT_ASCENDING); - -} - - static GtkWidget * wrap_in_frame (const gchar *label, GtkWidget *child) @@ -2105,17 +2218,33 @@ gtk_print_unix_dialog_style_updated (GtkWidget *widget) } static void -update_entry_sensitivity (GtkWidget *button, - GtkWidget *range) +update_page_range_entry_sensitivity (GtkWidget *button, + GtkPrintUnixDialog *dialog) { + GtkPrintUnixDialogPrivate *priv = dialog->priv; gboolean active; active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)); - gtk_widget_set_sensitive (range, active); + gtk_widget_set_sensitive (priv->page_range_entry, active); if (active) - gtk_widget_grab_focus (range); + gtk_widget_grab_focus (priv->page_range_entry); +} + +static void +update_print_at_entry_sensitivity (GtkWidget *button, + GtkPrintUnixDialog *dialog) +{ + GtkPrintUnixDialogPrivate *priv = dialog->priv; + gboolean active; + + active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)); + + gtk_widget_set_sensitive (priv->print_at_entry, active); + + if (active) + gtk_widget_grab_focus (priv->print_at_entry); } static void @@ -2131,196 +2260,6 @@ emit_ok_response (GtkTreeView *tree_view, gtk_dialog_response (GTK_DIALOG (print_dialog), GTK_RESPONSE_OK); } -static void -create_main_page (GtkPrintUnixDialog *dialog) -{ - GtkPrintUnixDialogPrivate *priv = dialog->priv; - GtkWidget *main_vbox, *label, *vbox, *hbox; - GtkWidget *scrolled, *treeview, *frame, *table; - GtkWidget *entry, *spinbutton; - GtkWidget *radio, *check, *image; - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - GtkTreeSelection *selection; - GtkWidget *custom_input; - const gchar *range_tooltip; - - main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 18); - gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); - gtk_widget_show (main_vbox); - - vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); - gtk_box_pack_start (GTK_BOX (main_vbox), vbox, TRUE, TRUE, 0); - gtk_widget_show (vbox); - - scrolled = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled), - GTK_SHADOW_IN); - gtk_widget_show (scrolled); - gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 0); - - treeview = gtk_tree_view_new_with_model ((GtkTreeModel *) priv->printer_list_filter); - priv->printer_treeview = treeview; - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), TRUE); - gtk_tree_view_set_search_column (GTK_TREE_VIEW (treeview), PRINTER_LIST_COL_NAME); - gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeview), TRUE); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); - gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); - g_signal_connect (selection, "changed", G_CALLBACK (selected_printer_changed), dialog); - - renderer = gtk_cell_renderer_pixbuf_new (); - column = gtk_tree_view_column_new_with_attributes ("", - renderer, - "icon-name", - PRINTER_LIST_COL_ICON, - NULL); - gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (_("Printer"), - renderer, - "text", - PRINTER_LIST_COL_NAME, - NULL); - gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); - - renderer = gtk_cell_renderer_text_new (); - /* Translators: this is the header for the location column in the print dialog */ - column = gtk_tree_view_column_new_with_attributes (_("Location"), - renderer, - "text", - PRINTER_LIST_COL_LOCATION, - NULL); - gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); - - renderer = gtk_cell_renderer_text_new (); - g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); - /* Translators: this is the header for the printer status column in the print dialog */ - column = gtk_tree_view_column_new_with_attributes (_("Status"), - renderer, - "text", - PRINTER_LIST_COL_STATE, - NULL); - gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); - - g_signal_connect (GTK_TREE_VIEW (treeview), "row-activated", G_CALLBACK (emit_ok_response), dialog); - - gtk_widget_show (treeview); - gtk_container_add (GTK_CONTAINER (scrolled), treeview); - - custom_input = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 18); - gtk_widget_show (custom_input); - gtk_box_pack_start (GTK_BOX (vbox), custom_input, FALSE, FALSE, 0); - priv->extension_point = custom_input; - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 18); - gtk_widget_show (hbox); - gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); - - table = gtk_grid_new (); - priv->range_table = table; - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - frame = wrap_in_frame (_("Range"), table); - gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); - gtk_widget_show (table); - - radio = gtk_radio_button_new_with_mnemonic (NULL, _("_All Pages")); - priv->all_pages_radio = radio; - gtk_widget_show (radio); - gtk_grid_attach (GTK_GRID (table), radio, 0, 0, 2, 1); - radio = gtk_radio_button_new_with_mnemonic (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), - _("C_urrent Page")); - if (priv->current_page == -1) - gtk_widget_set_sensitive (radio, FALSE); - priv->current_page_radio = radio; - gtk_widget_show (radio); - gtk_grid_attach (GTK_GRID (table), radio, 0, 1, 2, 1); - - radio = gtk_radio_button_new_with_mnemonic (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), - _("Se_lection")); - - gtk_widget_set_sensitive (radio, priv->has_selection); - priv->selection_radio = radio; - gtk_grid_attach (GTK_GRID (table), radio, 0, 2, 2, 1); - - radio = gtk_radio_button_new_with_mnemonic (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("Pag_es:")); - range_tooltip = _("Specify one or more page ranges,\n e.g. 1-3,7,11"); - gtk_widget_set_tooltip_text (radio, range_tooltip); - - priv->page_range_radio = radio; - gtk_widget_show (radio); - gtk_grid_attach (GTK_GRID (table), radio, 0, 3, 1, 1); - entry = gtk_entry_new (); - gtk_widget_set_tooltip_text (entry, range_tooltip); - gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE); - atk_object_set_name (gtk_widget_get_accessible (entry), _("Pages")); - atk_object_set_description (gtk_widget_get_accessible (entry), range_tooltip); - priv->page_range_entry = entry; - gtk_widget_show (entry); - gtk_grid_attach (GTK_GRID (table), entry, 1, 3, 1, 1); - g_signal_connect (radio, "toggled", G_CALLBACK (update_entry_sensitivity), entry); - update_entry_sensitivity (radio, entry); - - table = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - frame = wrap_in_frame (_("Copies"), table); - gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); - gtk_widget_show (table); - - /* FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns */ - label = gtk_label_new_with_mnemonic (_("Copie_s:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); - spinbutton = gtk_spin_button_new_with_range (1.0, 100.0, 1.0); - gtk_entry_set_activates_default (GTK_ENTRY (spinbutton), TRUE); - priv->copies_spin = spinbutton; - gtk_widget_show (spinbutton); - gtk_grid_attach (GTK_GRID (table), spinbutton, 1, 0, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinbutton); - g_signal_connect_swapped (spinbutton, "value-changed", - G_CALLBACK (update_dialog_from_capabilities), dialog); - g_signal_connect_swapped (spinbutton, "changed", - G_CALLBACK (update_dialog_from_capabilities), dialog); - - check = gtk_check_button_new_with_mnemonic (_("C_ollate")); - priv->collate_check = check; - g_signal_connect (check, "toggled", G_CALLBACK (update_collate_icon), dialog); - gtk_widget_show (check); - gtk_grid_attach (GTK_GRID (table), check, 0, 1, 1, 1); - - check = gtk_check_button_new_with_mnemonic (_("_Reverse")); - g_signal_connect (check, "toggled", G_CALLBACK (update_collate_icon), dialog); - priv->reverse_check = check; - gtk_widget_show (check); - gtk_grid_attach (GTK_GRID (table), check, 0, 2, 1, 1); - - image = gtk_drawing_area_new (); - gtk_widget_set_has_window (image, FALSE); - - priv->collate_image = image; - gtk_widget_show (image); - gtk_widget_set_size_request (image, 70, 90); - gtk_grid_attach (GTK_GRID (table), image, 1, 1, 1, 2); - g_signal_connect (image, "draw", - G_CALLBACK (draw_collate_cb), dialog); - - label = gtk_label_new (_("General")); - gtk_widget_show (label); - - gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), main_vbox, label); -} - static gboolean is_range_separator (gchar c) { @@ -3329,489 +3268,6 @@ page_name_func (GtkCellLayout *cell_layout, g_object_set (cell, "text", _("Manage Custom Sizes…"), NULL); } -static void -create_page_setup_page (GtkPrintUnixDialog *dialog) -{ - GtkPrintUnixDialogPrivate *priv = dialog->priv; - GtkWidget *main_vbox, *label, *hbox, *hbox2; - GtkWidget *frame, *table, *widget; - GtkWidget *combo, *spinbutton, *draw; - GtkCellRenderer *cell; - - main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 18); - gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); - gtk_widget_show (main_vbox); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 18); - gtk_widget_show (hbox); - gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); - - table = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - frame = wrap_in_frame (_("Layout"), table); - gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); - gtk_widget_show (table); - - label = gtk_label_new_with_mnemonic (_("T_wo-sided:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->duplex = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 0, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - label = gtk_label_new_with_mnemonic (_("Pages per _side:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - g_signal_connect_swapped (widget, "changed", G_CALLBACK (redraw_page_layout_preview), dialog); - g_signal_connect_swapped (widget, "changed", G_CALLBACK (update_number_up_layout), dialog); - priv->pages_per_sheet = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 1, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - label = gtk_label_new_with_mnemonic (_("Page or_dering:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - g_signal_connect_swapped (widget, "changed", G_CALLBACK (redraw_page_layout_preview), dialog); - priv->number_up_layout = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 2, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - label = gtk_label_new_with_mnemonic (_("_Only print:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 3, 1, 1); - - combo = gtk_combo_box_text_new (); - priv->page_set_combo = combo; - gtk_widget_show (combo); - gtk_grid_attach (GTK_GRID (table), combo, 1, 3, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); - /* In enum order */ - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("All sheets")); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Even sheets")); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Odd sheets")); - gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); - - label = gtk_label_new_with_mnemonic (_("Sc_ale:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 4, 1, 1); - - hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - gtk_widget_show (hbox2); - gtk_grid_attach (GTK_GRID (table), hbox2, 1, 4, 1, 1); - - spinbutton = gtk_spin_button_new_with_range (1.0, 1000.0, 1.0); - priv->scale_spin = spinbutton; - gtk_spin_button_set_digits (GTK_SPIN_BUTTON (spinbutton), 1); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton), 100.0); - gtk_box_pack_start (GTK_BOX (hbox2), spinbutton, FALSE, FALSE, 0); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinbutton); - gtk_widget_show (spinbutton); - label = gtk_label_new ("%"); /* FIXMEchpe does there exist any language where % needs to be translated? */ - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0); - - table = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - frame = wrap_in_frame (_("Paper"), table); - gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 6); - gtk_widget_show (table); - - label = gtk_label_new_with_mnemonic (_("Paper _type:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->paper_type = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 0, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - label = gtk_label_new_with_mnemonic (_("Paper _source:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->paper_source = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 1, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - label = gtk_label_new_with_mnemonic (_("Output t_ray:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->output_tray = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 2, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - - label = gtk_label_new_with_mnemonic (_("_Paper size:")); - priv->paper_size_combo_label = GTK_WIDGET (label); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 3, 1, 1); - - combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (priv->page_setup_list)); - priv->paper_size_combo = GTK_WIDGET (combo); - gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo), - paper_size_row_is_separator, NULL, NULL); - cell = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE); - gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo), cell, - page_name_func, NULL, NULL); - gtk_grid_attach (GTK_GRID (table), combo, 1, 3, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); - gtk_widget_set_sensitive (combo, FALSE); - gtk_widget_show (combo); - - label = gtk_label_new_with_mnemonic (_("Or_ientation:")); - priv->orientation_combo_label = GTK_WIDGET (label); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 4, 1, 1); - - combo = gtk_combo_box_text_new (); - priv->orientation_combo = GTK_WIDGET (combo); - gtk_grid_attach (GTK_GRID (table), combo, 1, 4, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); - /* In enum order */ - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Portrait")); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Landscape")); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Reverse portrait")); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Reverse landscape")); - gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); - gtk_widget_set_sensitive (combo, FALSE); - gtk_widget_show (combo); - - /* Add the page layout preview */ - hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_widget_show (hbox2); - gtk_box_pack_start (GTK_BOX (main_vbox), hbox2, TRUE, TRUE, 0); - - draw = gtk_drawing_area_new (); - gtk_widget_set_has_window (draw, FALSE); - priv->page_layout_preview = draw; - gtk_widget_set_size_request (draw, 280, 160); - g_signal_connect (draw, "draw", G_CALLBACK (draw_page_cb), dialog); - gtk_widget_show (draw); - - gtk_box_pack_start (GTK_BOX (hbox2), draw, TRUE, FALSE, 0); - - label = gtk_label_new (_("Page Setup")); - gtk_widget_show (label); - - gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), - main_vbox, label); -} - -static void -create_job_page (GtkPrintUnixDialog *dialog) -{ - GtkPrintUnixDialogPrivate *priv = dialog->priv; - GtkWidget *main_table, *label; - GtkWidget *frame, *table, *radio; - GtkWidget *entry, *widget; - const gchar *at_tooltip; - const gchar *on_hold_tooltip; - - main_table = gtk_grid_new (); - gtk_container_set_border_width (GTK_CONTAINER (main_table), 12); - gtk_grid_set_row_spacing (GTK_GRID (main_table), 18); - gtk_grid_set_column_spacing (GTK_GRID (main_table), 18); - - table = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - frame = wrap_in_frame (_("Job Details"), table); - gtk_grid_attach (GTK_GRID (main_table), frame, 0, 0, 1, 1); - gtk_widget_show (table); - - label = gtk_label_new_with_mnemonic (_("Pri_ority:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->job_prio = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 0, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - label = gtk_label_new_with_mnemonic (_("_Billing info:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->billing_info = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 1, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - table = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - frame = wrap_in_frame (_("Print Document"), table); - gtk_grid_attach (GTK_GRID (main_table), frame, 0, 1, 1, 1); - gtk_widget_show (table); - - /* Translators: this is one of the choices for the print at option - * in the print dialog - */ - radio = gtk_radio_button_new_with_mnemonic (NULL, _("_Now")); - priv->print_now_radio = radio; - gtk_widget_show (radio); - gtk_grid_attach (GTK_GRID (table), radio, 0, 0, 2, 1); - /* Translators: this is one of the choices for the print at option - * in the print dialog. It also serves as the label for an entry that - * allows the user to enter a time. - */ - radio = gtk_radio_button_new_with_mnemonic (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), - _("A_t:")); - - /* Translators: Ability to parse the am/pm format depends on actual locale. - * You can remove the am/pm values below for your locale if they are not - * supported. - */ - at_tooltip = _("Specify the time of print,\n e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm"); - gtk_widget_set_tooltip_text (radio, at_tooltip); - priv->print_at_radio = radio; - gtk_widget_show (radio); - gtk_grid_attach (GTK_GRID (table), radio, 0, 1, 1, 1); - - entry = gtk_entry_new (); - gtk_widget_set_tooltip_text (entry, at_tooltip); - atk_object_set_name (gtk_widget_get_accessible (entry), _("Time of print")); - atk_object_set_description (gtk_widget_get_accessible (entry), at_tooltip); - priv->print_at_entry = entry; - gtk_widget_show (entry); - gtk_grid_attach (GTK_GRID (table), entry, 1, 1, 1, 1); - - g_signal_connect (radio, "toggled", G_CALLBACK (update_entry_sensitivity), entry); - update_entry_sensitivity (radio, entry); - - /* Translators: this is one of the choices for the print at option - * in the print dialog. It means that the print job will not be - * printed until it explicitly gets 'released'. - */ - radio = gtk_radio_button_new_with_mnemonic (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), - _("On _hold")); - on_hold_tooltip = _("Hold the job until it is explicitly released"); - gtk_widget_set_tooltip_text (radio, on_hold_tooltip); - priv->print_hold_radio = radio; - gtk_widget_show (radio); - gtk_grid_attach (GTK_GRID (table), radio, 0, 2, 2, 1); - - g_signal_connect_swapped (priv->print_now_radio, "toggled", - G_CALLBACK (update_print_at_option), dialog); - g_signal_connect_swapped (priv->print_at_radio, "toggled", - G_CALLBACK (update_print_at_option), dialog); - g_signal_connect_swapped (priv->print_at_entry, "changed", - G_CALLBACK (update_print_at_option), dialog); - g_signal_connect_swapped (priv->print_hold_radio, "toggled", - G_CALLBACK (update_print_at_option), dialog); - - table = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - frame = wrap_in_frame (_("Add Cover Page"), table); - gtk_grid_attach (GTK_GRID (main_table), frame, 1, 0, 1, 1); - gtk_widget_show (table); - - /* Translators, this is the label used for the option in the print - * dialog that controls the front cover page. - */ - label = gtk_label_new_with_mnemonic (_("Be_fore:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->cover_before = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 0, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - /* Translators, this is the label used for the option in the print - * dialog that controls the back cover page. - */ - label = gtk_label_new_with_mnemonic (_("_After:")); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_widget_show (label); - gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1); - - widget = gtk_printer_option_widget_new (NULL); - priv->cover_after = GTK_PRINTER_OPTION_WIDGET (widget); - gtk_widget_show (widget); - gtk_grid_attach (GTK_GRID (table), widget, 1, 1, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - - /* Translators: this is the tab label for the notebook tab containing - * job-specific options in the print dialog - */ - label = gtk_label_new (_("Job")); - gtk_widget_show (label); - - priv->job_page = main_table; - gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), - main_table, label); -} - -static void -create_optional_page (GtkPrintUnixDialog *dialog, - const gchar *text, - GtkWidget **table_out, - GtkWidget **page_out) -{ - GtkPrintUnixDialogPrivate *priv = dialog->priv; - GtkWidget *table, *label, *scrolled; - - scrolled = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), - GTK_POLICY_NEVER, - GTK_POLICY_AUTOMATIC); - - table = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (table), 6); - gtk_grid_set_column_spacing (GTK_GRID (table), 12); - gtk_container_set_border_width (GTK_CONTAINER (table), 12); - gtk_widget_show (table); - - gtk_container_add (GTK_CONTAINER (scrolled), table); - gtk_viewport_set_shadow_type (GTK_VIEWPORT (gtk_bin_get_child (GTK_BIN (scrolled))), - GTK_SHADOW_NONE); - - label = gtk_label_new (text); - gtk_widget_show (label); - - gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), - scrolled, label); - - *table_out = table; - *page_out = scrolled; -} - -static void -create_advanced_page (GtkPrintUnixDialog *dialog) -{ - GtkPrintUnixDialogPrivate *priv = dialog->priv; - GtkWidget *main_vbox, *label, *scrolled; - - scrolled = gtk_scrolled_window_new (NULL, NULL); - priv->advanced_page = scrolled; - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), - GTK_POLICY_NEVER, - GTK_POLICY_AUTOMATIC); - - main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 18); - gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); - gtk_widget_show (main_vbox); - - gtk_container_add (GTK_CONTAINER (scrolled), main_vbox); - gtk_viewport_set_shadow_type (GTK_VIEWPORT (gtk_bin_get_child (GTK_BIN (scrolled))), - GTK_SHADOW_NONE); - - priv->advanced_vbox = main_vbox; - - label = gtk_label_new (_("Advanced")); - gtk_widget_show (label); - - gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), - scrolled, label); -} - -static void -populate_dialog (GtkPrintUnixDialog *print_dialog) -{ - GtkPrintUnixDialogPrivate *priv = print_dialog->priv; - GtkDialog *dialog = GTK_DIALOG (print_dialog); - GtkWidget *vbox, *conflict_hbox, *image, *label; - GtkWidget *action_area, *content_area; - - content_area = gtk_dialog_get_content_area (dialog); - action_area = gtk_dialog_get_action_area (dialog); - - gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); - gtk_box_set_spacing (GTK_BOX (content_area), 2); /* 2 * 5 + 2 = 12 */ - gtk_container_set_border_width (GTK_CONTAINER (action_area), 5); - gtk_box_set_spacing (GTK_BOX (action_area), 6); - - vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); - gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0); - gtk_widget_show (vbox); - - priv->notebook = gtk_notebook_new (); - gtk_box_pack_start (GTK_BOX (vbox), priv->notebook, TRUE, TRUE, 0); - gtk_widget_show (priv->notebook); - - create_printer_list_model (print_dialog); - - create_main_page (print_dialog); - create_page_setup_page (print_dialog); - create_job_page (print_dialog); - /* Translators: this will appear as tab label in print dialog. */ - create_optional_page (print_dialog, _("Image Quality"), - &priv->image_quality_table, - &priv->image_quality_page); - /* Translators: this will appear as tab label in print dialog. */ - create_optional_page (print_dialog, _("Color"), - &priv->color_table, - &priv->color_page); - /* Translators: this will appear as tab label in print dialog. */ - /* It's a typographical term, as in "Binding and finishing" */ - create_optional_page (print_dialog, _("Finishing"), - &priv->finishing_table, - &priv->finishing_page); - create_advanced_page (print_dialog); - - priv->conflicts_widget = conflict_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); - gtk_box_pack_end (GTK_BOX (vbox), conflict_hbox, FALSE, FALSE, 0); - image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_MENU); - gtk_widget_show (image); - gtk_box_pack_start (GTK_BOX (conflict_hbox), image, FALSE, TRUE, 0); - label = gtk_label_new (_("Some of the settings in the dialog conflict")); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (conflict_hbox), label, FALSE, TRUE, 0); - - load_print_backends (print_dialog); -} - /** * gtk_print_unix_dialog_new: * @title: (allow-none): Title of the dialog, or %NULL diff --git a/gtk/gtkprintunixdialog.ui b/gtk/gtkprintunixdialog.ui new file mode 100644 index 0000000..532a090 --- /dev/null +++ b/gtk/gtkprintunixdialog.ui @@ -0,0 +1,1733 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface domain="gtk30"> + <!-- interface-requires gtk+ 3.6 --> + <!-- interface-requires gtkprivate 3.10 --> + <object class="GtkAdjustment" id="copies_spin_adjustment"> + <property name="lower">1</property> + <property name="upper">100</property> + <property name="value">1</property> + <property name="step_increment">1</property> + </object> + <object class="GtkListStore" id="custom_paper_list"> + <columns> + <!-- column-name custom --> + <column type="GObject"/> + </columns> + </object> + <object class="GtkListStore" id="page_setup_list"> + <columns> + <!-- column-name page-setup --> + <column type="GObject"/> + <!-- column-name is-separator --> + <column type="gboolean"/> + </columns> + </object> + <object class="GtkListStore" id="printer_list"> + <columns> + <!-- column-name icon --> + <column type="gchararray"/> + <!-- column-name name --> + <column type="gchararray"/> + <!-- column-name state --> + <column type="gchararray"/> + <!-- column-name jobs --> + <column type="gint"/> + <!-- column-name location --> + <column type="gchararray"/> + <!-- column-name printer --> + <column type="GObject"/> + </columns> + </object> + <object class="GtkTreeModelFilter" id="printer_list_filter"> + <property name="child_model">printer_list</property> + </object> + <object class="GtkAdjustment" id="scale_spin_adjustment"> + <property name="lower">1</property> + <property name="upper">1000</property> + <property name="value">100</property> + <property name="step_increment">1</property> + </object> + <template class="GtkPrintUnixDialog" parent="GtkDialog"> + <property name="can_focus">False</property> + <property name="type_hint">normal</property> + <signal name="destroy" handler="gtk_print_unix_dialog_destroy" swapped="no"/> + <signal name="notify::page-setup" handler="redraw_page_layout_preview" swapped="no"/> + <signal name="response" handler="error_dialogs" swapped="no"/> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox1"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">2</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="preview_button"> + <property name="label">gtk-print-preview</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="cancel_button"> + <property name="label">gtk-cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="print_button"> + <property name="label">gtk-print</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkNotebook" id="notebook"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <object class="GtkBox" id="general_main_box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkBox" id="box2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkScrolledWindow" id="printer_swin"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="printer_treeview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="model">printer_list_filter</property> + <property name="search_column">1</property> + <signal name="row-activated" handler="emit_ok_response" swapped="no"/> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection1"> + <property name="mode">browse</property> + <signal name="changed" handler="selected_printer_changed" swapped="no"/> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="printer_icon_column"> + <child> + <object class="GtkCellRendererPixbuf" id="printer_icon_renderer"/> + <attributes> + <attribute name="icon-name">0</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="printer_name_column"> + <property name="title" translatable="yes">Printer</property> + <child> + <object class="GtkCellRendererText" id="printer_name_renderer"/> + <attributes> + <attribute name="text">1</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="printer_location_column"> + <property name="title" translatable="yes" comments="this is the header for the location column in the print dialog">Location</property> + <child> + <object class="GtkCellRendererText" id="printer_location_renderer"/> + <attributes> + <attribute name="text">4</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="printer_status_column"> + <property name="title" translatable="yes" comments="this is the header for the printer status column in the print dialog">Status</property> + <child> + <object class="GtkCellRendererText" id="printer_status_renderer"> + <property name="ellipsize">end</property> + </object> + <attributes> + <attribute name="text">2</attribute> + </attributes> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="extension_point"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">18</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">18</property> + <child> + <object class="GtkBox" id="frame_template1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label_widget1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Range</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="range_table"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkRadioButton" id="all_pages_radio"> + <property name="label" translatable="yes">_All Pages</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="current_page_radio"> + <property name="label" translatable="yes">C_urrent Page</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">all_pages_radio</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="selection_radio"> + <property name="label" translatable="yes">Se_lection</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">all_pages_radio</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="page_range_radio"> + <property name="label" translatable="yes">Pag_es:</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_text" translatable="yes">Specify one or more page ranges, + e.g. 1-3,7,11</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">all_pages_radio</property> + <signal name="toggled" handler="update_page_range_entry_sensitivity" swapped="no"/> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="page_range_entry"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">Specify one or more page ranges, + e.g. 1-3,7,11</property> + <property name="invisible_char">•</property> + <property name="activates_default">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="page_range_entry-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes">Pages</property> + <property name="AtkObject::accessible-description" translatable="yes">Specify one or more page ranges, + e.g. 1-3,7,11</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="frame_template2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label_widget2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Copies</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Copie_s:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">copies_spin</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="copies_spin"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">•</property> + <property name="activates_default">True</property> + <property name="adjustment">copies_spin_adjustment</property> + <signal name="changed" handler="update_dialog_from_capabilities" object="GtkPrintUnixDialog" swapped="yes"/> + <signal name="value-changed" handler="update_dialog_from_capabilities" object="GtkPrintUnixDialog" swapped="yes"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="collate_check"> + <property name="label" translatable="yes">C_ollate</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="update_collate_icon" swapped="no"/> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="reverse_check"> + <property name="label" translatable="yes">_Reverse</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="update_collate_icon" swapped="no"/> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkDrawingArea" id="collate_image"> + <property name="width_request">70</property> + <property name="height_request">90</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <signal name="draw" handler="draw_collate_cb" swapped="no"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">General</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkBox" id="page_setup_main_box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkBox" id="box4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">18</property> + <child> + <object class="GtkBox" id="frame_template3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label_widget3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Layout</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">T_wo-sided:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">duplex</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="duplex"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Pages per _side:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">pages_per_sheet</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="pages_per_sheet"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <signal name="changed" handler="redraw_page_layout_preview" object="GtkPrintUnixDialog" swapped="yes"/> + <signal name="changed" handler="update_number_up_layout" object="GtkPrintUnixDialog" swapped="yes"/> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Page or_dering:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">number_up_layout</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="number_up_layout"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <signal name="changed" handler="redraw_page_layout_preview" object="GtkPrintUnixDialog" swapped="yes"/> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label8"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">_Only print:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">page_set_combo</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="page_set_combo"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="active">0</property> + <property name="entry_text_column">0</property> + <property name="id_column">1</property> + <items> + <item translatable="yes">All sheets</item> + <item translatable="yes">Even sheets</item> + <item translatable="yes">Odd sheets</item> + </items> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Sc_ale:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">scale_spin</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">4</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <child> + <object class="GtkSpinButton" id="scale_spin"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">•</property> + <property name="adjustment">scale_spin_adjustment</property> + <property name="digits">1</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label">%</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">4</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="frame_template4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label_widget4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Paper</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">start</property> + <property name="label" translatable="yes">Paper _type:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">paper_type</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="paper_type"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label12"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">start</property> + <property name="label" translatable="yes">Paper _source:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">paper_source</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="paper_source"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label13"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">start</property> + <property name="label" translatable="yes">Output t_ray:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">output_tray</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="output_tray"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="paper_size_combo_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">start</property> + <property name="label" translatable="yes">_Paper size:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">paper_size_combo</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="paper_size_combo"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="model">page_setup_list</property> + <child> + <object class="GtkCellRendererText" id="paper_size_renderer"/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">3</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="orientation_combo_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">start</property> + <property name="label" translatable="yes">Or_ientation:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">orientation_combo</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">4</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="orientation_combo"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="active">0</property> + <property name="entry_text_column">0</property> + <property name="id_column">1</property> + <items> + <item translatable="yes">Portrait</item> + <item translatable="yes">Landscape</item> + <item translatable="yes">Reverse portrait</item> + <item translatable="yes">Reverse landscape</item> + </items> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">4</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="padding">6</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkDrawingArea" id="page_layout_preview"> + <property name="width_request">280</property> + <property name="height_request">160</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <signal name="draw" handler="draw_page_cb" swapped="no"/> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Page Setup</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="job_page"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="row_spacing">18</property> + <property name="column_spacing">18</property> + <child> + <object class="GtkBox" id="frame_template5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label_widget5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Job Details</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Pri_ority:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">job_prio</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="job_prio"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">_Billing info:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">billing_info</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="billing_info"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkBox" id="frame_template6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label_widget6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Print Document</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkRadioButton" id="print_now_radio"> + <property name="label" translatable="yes" comments="this is one of the choices for the print at option in the print dialog">_Now</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="update_print_at_option" object="GtkPrintUnixDialog" swapped="yes"/> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="print_at_radio"> + <property name="label" translatable="yes" comments="this is one of the choices for the print at option in the print dialog. It also serves as the label for an entry that allows the user to enter a time.">A_t:</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Specify the time of print, + e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm</property> + <property name="tooltip_text" translatable="yes" comments="Ability to parse the am/pm format depends on actual locale. You can remove the am/pm values below for your locale if they are not supported.">Specify the time of print, + e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <property name="group">print_now_radio</property> + <signal name="toggled" handler="update_print_at_entry_sensitivity" swapped="no"/> + <signal name="toggled" handler="update_print_at_option" object="GtkPrintUnixDialog" swapped="yes"/> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="print_at_entry"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Specify the time of print, + e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm</property> + <property name="tooltip_text" translatable="yes" comments="Ability to parse the am/pm format depends on actual locale. You can remove the am/pm values below for your locale if they are not supported.">Specify the time of print, + e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm</property> + <property name="invisible_char">•</property> + <property name="invisible_char_set">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="print_at_entry-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes">Time of print</property> + <property name="AtkObject::accessible-description" translatable="yes">Specify the time of print, + e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm</property> + </object> + </child> + <signal name="changed" handler="update_print_at_option" object="GtkPrintUnixDialog" swapped="yes"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="print_hold_radio"> + <property name="label" translatable="yes" comments="this is one of the choices for the print at option in the print dialog. It means that the print job will not be printed until it explicitly gets 'released'.">On _hold</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Hold the job until it is explicitly released</property> + <property name="tooltip_text" translatable="yes">Hold the job until it is explicitly released</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <property name="group">print_now_radio</property> + <signal name="toggled" handler="update_print_at_option" object="GtkPrintUnixDialog" swapped="yes"/> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkBox" id="frame_template7"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label_widget7"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes">Add Cover Page</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid7"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkLabel" id="label18"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes" comments="this is the label used for the option in the print dialog that controls the front cover page.">Be_fore:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">cover_before</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="cover_before"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label19"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="valign">center</property> + <property name="label" translatable="yes" comments="this is the label used for the option in the print dialog that controls the back cover page.">_After:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">cover_after</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkPrinterOptionWidget" id="cover_after"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Job</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="image_quality_page"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkViewport" id="viewport1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkGrid" id="image_quality_table"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label20"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" comments="This will appear as a tab label in the print dialog.">Image Quality</property> + </object> + <packing> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="color_page"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkViewport" id="viewport2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkGrid" id="color_table"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="position">4</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label21"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" comments="This will appear as a tab label in the print dialog.">Color</property> + </object> + <packing> + <property name="position">4</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="finishing_page"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkViewport" id="viewport3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkGrid" id="finishing_table"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="position">5</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label22"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" comments="This will appear as a tab label in the print dialog. It's a typographical term, as in "Binding and finishing"">Finishing</property> + </object> + <packing> + <property name="position">5</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="advanced_page"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkViewport" id="viewport4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkBox" id="advanced_vbox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="position">6</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label23"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Advanced</property> + </object> + <packing> + <property name="position">6</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="conflicts_widget"> + <property name="can_focus">False</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-dialog-warning</property> + <property name="icon_size">1</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label24"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Some of the settings in the dialog conflict</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="-10">preview_button</action-widget> + <action-widget response="-6">cancel_button</action-widget> + <action-widget response="-5">print_button</action-widget> + </action-widgets> + </template> +</interface> diff --git a/gtk/tests/templates.c b/gtk/tests/templates.c index 776ed0b..6d6d6ef 100644 --- a/gtk/tests/templates.c +++ b/gtk/tests/templates.c @@ -269,6 +269,15 @@ test_page_setup_unix_dialog_basic (void) gtk_widget_destroy (widget); } +static void +test_print_unix_dialog_basic (void) +{ + GtkWidget *widget; + + widget = gtk_print_unix_dialog_new ("Go Print !", NULL); + g_assert (GTK_IS_PRINT_UNIX_DIALOG (widget)); + gtk_widget_destroy (widget); +} #endif int @@ -303,6 +312,7 @@ main (int argc, char **argv) #ifdef HAVE_UNIX_PRINT_WIDGETS g_test_add_func ("/Template/UnixPrint/GtkPageSetupUnixDialog/Basic", test_page_setup_unix_dialog_basic); + g_test_add_func ("/Template/UnixPrint/GtkPrintUnixDialog/Basic", test_print_unix_dialog_basic); #endif return g_test_run(); |
