GtkTreeModel *model,
GtkTreeIter *iter,
gpointer data);
+static gboolean set_active_printer (GtkPrintUnixDialog *dialog,
+ const gchar *printer_name);
/* GtkBuildable */
static void gtk_print_unix_dialog_buildable_init (GtkBuildableIface *iface);
GtkPrinter *printer = NULL;
GtkWindow *toplevel = NULL;
GtkWidget *dialog = NULL;
- gchar *filename = NULL;
+ GFile *file = NULL;
gchar *basename = NULL;
gchar *dirname = NULL;
int response;
if (option != NULL &&
option->type == GTK_PRINTER_OPTION_TYPE_FILESAVE)
{
- filename = g_filename_from_uri (option->value, NULL, NULL);
+ file = g_file_new_for_uri (option->value);
- if (filename != NULL &&
- g_file_test (filename, G_FILE_TEST_EXISTS))
+ if (file != NULL &&
+ g_file_query_exists (file, NULL))
{
toplevel = get_toplevel (GTK_WIDGET (print_dialog));
- basename = g_path_get_basename (filename);
- dirname = g_path_get_dirname (filename);
+ basename = g_file_get_basename (file);
+ dirname = g_file_get_parse_name (g_file_get_parent (file));
dialog = gtk_message_dialog_new (toplevel,
GTK_DIALOG_MODAL |
gtk_widget_destroy (dialog);
+ g_free (dirname);
+ g_free (basename);
+
if (response != GTK_RESPONSE_ACCEPT)
{
g_signal_stop_emission_by_name (print_dialog, "response");
+ g_object_unref (file);
return TRUE;
}
-
- g_free (dirname);
- g_free (basename);
}
- g_free (filename);
+ g_object_unref (file);
}
}
}
* of GTK_RESPONSE_OK button inside of selected_printer_changed function. */
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->printer_treeview));
selected_printer_changed (selection, dialog);
+
+ if (gtk_print_backend_printer_list_is_done (backend) &&
+ gtk_printer_is_default (printer) &&
+ (gtk_tree_selection_count_selected_rows (selection) == 0))
+ set_active_printer (dialog, gtk_printer_get_name (printer));
}
static void
gtk_widget_set_sensitive (range, active);
}
+static void
+emit_ok_response (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer *user_data)
+{
+ GtkPrintUnixDialog *print_dialog;
+
+ print_dialog = (GtkPrintUnixDialog *) user_data;
+
+ gtk_dialog_response (GTK_DIALOG (print_dialog), GTK_RESPONSE_OK);
+}
+
static void
create_main_page (GtkPrintUnixDialog *dialog)
{
GtkTreeViewColumn *column;
GtkTreeSelection *selection;
GtkWidget *custom_input;
+ const gchar *range_tooltip;
main_vbox = gtk_vbox_new (FALSE, 18);
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
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);
0, 0);
radio = gtk_radio_button_new_with_mnemonic (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("Pag_es:"));
- gtk_widget_set_tooltip_text (radio, _("Specify one or more page ranges,\n e.g. 1-3,7,11"));
+ 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);
0, 1, 2, 3, GTK_FILL, 0,
0, 0);
entry = gtk_entry_new ();
+ gtk_widget_set_tooltip_text (entry, range_tooltip);
priv->page_range_entry = entry;
gtk_widget_show (entry);
gtk_table_attach (GTK_TABLE (table), entry,
GtkPrintUnixDialogPrivate *priv = dialog->priv;
GtkPrintCapabilities caps;
GtkNumberUpLayout layout;
- GtkTextDirection text_direction;
const gchar *val;
+ GEnumClass *enum_class;
+ GEnumValue *enum_value;
val = gtk_printer_option_widget_get_value (priv->number_up_layout);
- text_direction = gtk_widget_get_default_direction ();
caps = priv->manual_capabilities | priv->printer_capabilities;
- if (caps & GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT)
- {
- if (text_direction == GTK_TEXT_DIR_LTR)
- layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
- else
- layout = GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
- }
- else
+ if ((caps & GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT) == 0)
+ return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
+
+ if (gtk_widget_get_direction (GTK_WIDGET (dialog)) == GTK_TEXT_DIR_LTR)
layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
+ else
+ layout = GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
if (val == NULL)
return layout;
- if (strcmp (val, "lrtb") == 0)
- return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
-
- if (strcmp (val, "lrbt") == 0)
- return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP;
-
- if (strcmp (val, "rltb") == 0)
- return GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
-
- if (strcmp (val, "rlbt") == 0)
- return GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP;
-
- if (strcmp (val, "tblr") == 0)
- return GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT;
-
- if (strcmp (val, "tbrl") == 0)
- return GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT;
-
- if (strcmp (val, "btlr") == 0)
- return GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT;
-
- if (strcmp (val, "btrl") == 0)
- return GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT;
+ enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
+ enum_value = g_enum_get_value_by_nick (enum_class, val);
+ if (enum_value)
+ layout = enum_value->value;
+ g_type_class_unref (enum_class);
return layout;
}
(orientation == GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE);
number_up_layout = dialog_get_number_up_layout (dialog);
-
+
cr = gdk_cairo_create (widget->window);
cairo_translate (cr, widget->allocation.x, widget->allocation.y);
if (dialog_get_pages_per_sheet (dialog) != 1)
{
+ GEnumClass *enum_class;
+ GEnumValue *enum_value;
+ enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
+
if (dialog_get_pages_per_sheet (dialog) == 2)
{
option = priv->number_up_layout_2_option;
layout == GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP ||
layout == GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT ||
layout == GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT)
- gtk_printer_option_set (option, "lrtb");
+ enum_value = g_enum_get_value (enum_class, GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM);
else
- gtk_printer_option_set (option, "rltb");
+ enum_value = g_enum_get_value (enum_class, GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM);
}
else
{
option = priv->number_up_layout_n_option;
- switch (layout)
- {
- case GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM:
- gtk_printer_option_set (option, "lrtb");
- break;
- case GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP:
- gtk_printer_option_set (option, "lrbt");
- break;
- case GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM:
- gtk_printer_option_set (option, "rltb");
- break;
- case GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP:
- gtk_printer_option_set (option, "rlbt");
- break;
- case GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT:
- gtk_printer_option_set (option, "tblr");
- break;
- case GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT:
- gtk_printer_option_set (option, "tbrl");
- break;
- case GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT:
- gtk_printer_option_set (option, "btlr");
- break;
- case GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT:
- gtk_printer_option_set (option, "btrl");
- break;
- }
+ enum_value = g_enum_get_value (enum_class, layout);
}
+ g_assert (enum_value != NULL);
+ gtk_printer_option_set (option, enum_value->value_nick);
+ g_type_class_unref (enum_class);
+
gtk_printer_option_set_add (set, option);
}
}
GtkWidget *main_table, *label;
GtkWidget *frame, *table, *radio;
GtkWidget *entry, *widget;
+ const gchar *at_tooltip;
+ const gchar *on_hold_tooltip;
main_table = gtk_table_new (2, 2, FALSE);
gtk_container_set_border_width (GTK_CONTAINER (main_table), 12);
*/
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_table_attach (GTK_TABLE (table), radio,
0, 0);
entry = gtk_entry_new ();
+ gtk_widget_set_tooltip_text (entry, at_tooltip);
priv->print_at_entry = entry;
gtk_widget_show (entry);
gtk_table_attach (GTK_TABLE (table), entry,
*/
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_table_attach (GTK_TABLE (table), radio,