Add new capability GTK_PRINT_CAPABILITY_NUMBER_UP.

2007-05-28  Carlos Garcia Campos  <carlosgc@gnome.org>
	* gtk/gtkprinter.[ch]: Add new capability
	GTK_PRINT_CAPABILITY_NUMBER_UP.
	* docs/reference/gtk/tmpl/gtkprintunixdialog.sgml: 
	* gtk/gtkprintunixdialog.c: (update_dialog_from_capabilities):
	* modules/printbackends/file/gtkprintbackendfile.c:
	(file_printer_get_options), (file_printer_get_settings_from_options):
	* modules/printbackends/cups/gtkprintbackendcups.c:
	(cups_printer_get_capabilities): Add a new print capability to specify
	whether print dialog will offer printing multiple pages per sheet. (#398414)

svn path=/trunk/; revision=17963
This commit is contained in:
Carlos Garcia Campos
2007-05-28 10:41:09 +00:00
committed by Carlos Garcia Campos
parent e95f511143
commit eb7f97bb9b
7 changed files with 33 additions and 7 deletions

View File

@ -1,3 +1,15 @@
2007-05-28 Carlos Garcia Campos <carlosgc@gnome.org>
* gtk/gtkprinter.[ch]: Add new capability
GTK_PRINT_CAPABILITY_NUMBER_UP.
* docs/reference/gtk/tmpl/gtkprintunixdialog.sgml:
* gtk/gtkprintunixdialog.c: (update_dialog_from_capabilities):
* modules/printbackends/file/gtkprintbackendfile.c:
(file_printer_get_options), (file_printer_get_settings_from_options):
* modules/printbackends/cups/gtkprintbackendcups.c:
(cups_printer_get_capabilities): Add a new print capability to specify
whether print dialog will offer printing multiple pages per sheet. (#398414)
2007-05-28 Matthias Clasen <mclasen@redhat.com> 2007-05-28 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkwidget.c: Document some more signals * gtk/gtkwidget.c: Document some more signals

View File

@ -159,7 +159,7 @@ Printing support was added in GTK+ 2.10.
<!-- ##### ENUM GtkPrintCapabilities ##### --> <!-- ##### ENUM GtkPrintCapabilities ##### -->
<para> <para>
An enum for specifying which features the print dialog should offer. An enum for specifying which features the print dialog should offer.
I neither %GTK_PRINT_CAPABILITY_GENERATE_PDF nor %GTK_PRINT_CAPABILITY_GENERATE_PS is If neither %GTK_PRINT_CAPABILITY_GENERATE_PDF nor %GTK_PRINT_CAPABILITY_GENERATE_PS is
specified, GTK+ assumes that all formats are supported. specified, GTK+ assumes that all formats are supported.
</para> </para>
@ -171,7 +171,7 @@ specified, GTK+ assumes that all formats are supported.
@GTK_PRINT_CAPABILITY_GENERATE_PDF: The program will send the document to the printer in PDF format @GTK_PRINT_CAPABILITY_GENERATE_PDF: The program will send the document to the printer in PDF format
@GTK_PRINT_CAPABILITY_GENERATE_PS: The program will send the document to the printer in Postscript format @GTK_PRINT_CAPABILITY_GENERATE_PS: The program will send the document to the printer in Postscript format
@GTK_PRINT_CAPABILITY_PREVIEW: @GTK_PRINT_CAPABILITY_PREVIEW:
@GTK_PRINT_CAPABILITY_NUMBER_UP: Print dialog will offer printing multiple pages per sheet. Since 2.12
<!-- ##### FUNCTION gtk_print_unix_dialog_set_manual_capabilities ##### --> <!-- ##### FUNCTION gtk_print_unix_dialog_set_manual_capabilities ##### -->
<para> <para>

View File

@ -1086,6 +1086,7 @@ gtk_print_capabilities_get_type (void)
{ GTK_PRINT_CAPABILITY_GENERATE_PDF, "GTK_PRINT_CAPABILITY_GENERATE_PDF", "generate-pdf" }, { GTK_PRINT_CAPABILITY_GENERATE_PDF, "GTK_PRINT_CAPABILITY_GENERATE_PDF", "generate-pdf" },
{ GTK_PRINT_CAPABILITY_GENERATE_PS, "GTK_PRINT_CAPABILITY_GENERATE_PS", "generate-ps" }, { GTK_PRINT_CAPABILITY_GENERATE_PS, "GTK_PRINT_CAPABILITY_GENERATE_PS", "generate-ps" },
{ GTK_PRINT_CAPABILITY_PREVIEW, "GTK_PRINT_CAPABILITY_PREVIEW", "preview" }, { GTK_PRINT_CAPABILITY_PREVIEW, "GTK_PRINT_CAPABILITY_PREVIEW", "preview" },
{ GTK_PRINT_CAPABILITY_NUMBER_UP, "GTK_PRINT_CAPABILITY_NUMBER_UP", "number-up"},
{ 0, NULL, NULL } { 0, NULL, NULL }
}; };

View File

@ -40,7 +40,8 @@ typedef enum
GTK_PRINT_CAPABILITY_SCALE = 1 << 4, GTK_PRINT_CAPABILITY_SCALE = 1 << 4,
GTK_PRINT_CAPABILITY_GENERATE_PDF = 1 << 5, GTK_PRINT_CAPABILITY_GENERATE_PDF = 1 << 5,
GTK_PRINT_CAPABILITY_GENERATE_PS = 1 << 6, GTK_PRINT_CAPABILITY_GENERATE_PS = 1 << 6,
GTK_PRINT_CAPABILITY_PREVIEW = 1 << 7 GTK_PRINT_CAPABILITY_PREVIEW = 1 << 7,
GTK_PRINT_CAPABILITY_NUMBER_UP = 1 << 8
} GtkPrintCapabilities; } GtkPrintCapabilities;
GType gtk_print_capabilities_get_type (void) G_GNUC_CONST; GType gtk_print_capabilities_get_type (void) G_GNUC_CONST;

View File

@ -1058,6 +1058,8 @@ update_dialog_from_capabilities (GtkPrintUnixDialog *dialog)
caps & GTK_PRINT_CAPABILITY_REVERSE); caps & GTK_PRINT_CAPABILITY_REVERSE);
gtk_widget_set_sensitive (priv->scale_spin, gtk_widget_set_sensitive (priv->scale_spin,
caps & GTK_PRINT_CAPABILITY_SCALE); caps & GTK_PRINT_CAPABILITY_SCALE);
gtk_widget_set_sensitive (GTK_WIDGET (priv->pages_per_sheet),
caps & GTK_PRINT_CAPABILITY_NUMBER_UP);
if (caps & GTK_PRINT_CAPABILITY_PREVIEW) if (caps & GTK_PRINT_CAPABILITY_PREVIEW)
gtk_widget_show (priv->preview_button); gtk_widget_show (priv->preview_button);

View File

@ -2875,5 +2875,6 @@ cups_printer_get_capabilities (GtkPrinter *printer)
return return
GTK_PRINT_CAPABILITY_COPIES | GTK_PRINT_CAPABILITY_COPIES |
GTK_PRINT_CAPABILITY_COLLATE | GTK_PRINT_CAPABILITY_COLLATE |
GTK_PRINT_CAPABILITY_REVERSE; GTK_PRINT_CAPABILITY_REVERSE |
GTK_PRINT_CAPABILITY_NUMBER_UP;
} }

View File

@ -480,7 +480,8 @@ file_printer_get_options (GtkPrinter *printer,
{ {
GtkPrinterOptionSet *set; GtkPrinterOptionSet *set;
GtkPrinterOption *option; GtkPrinterOption *option;
const gchar *n_up[] = { "1" }; const gchar *n_up[] = {"1", "2", "4", "6", "9", "16" };
const gchar *pages_per_sheet = NULL;
const gchar *format_names[N_FORMATS] = { N_("PDF"), N_("Postscript") }; const gchar *format_names[N_FORMATS] = { N_("PDF"), N_("Postscript") };
const gchar *supported_formats[N_FORMATS]; const gchar *supported_formats[N_FORMATS];
gchar *display_format_names[N_FORMATS]; gchar *display_format_names[N_FORMATS];
@ -496,7 +497,12 @@ file_printer_get_options (GtkPrinter *printer,
option = gtk_printer_option_new ("gtk-n-up", _("Pages per _sheet:"), GTK_PRINTER_OPTION_TYPE_PICKONE); option = gtk_printer_option_new ("gtk-n-up", _("Pages per _sheet:"), GTK_PRINTER_OPTION_TYPE_PICKONE);
gtk_printer_option_choices_from_array (option, G_N_ELEMENTS (n_up), gtk_printer_option_choices_from_array (option, G_N_ELEMENTS (n_up),
(char **) n_up, (char **) n_up /* FIXME i18n (localised digits)! */); (char **) n_up, (char **) n_up /* FIXME i18n (localised digits)! */);
gtk_printer_option_set (option, "1"); if (settings)
pages_per_sheet = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_NUMBER_UP);
if (pages_per_sheet)
gtk_printer_option_set (option, pages_per_sheet);
else
gtk_printer_option_set (option, "1");
gtk_printer_option_set_add (set, option); gtk_printer_option_set_add (set, option);
g_object_unref (option); g_object_unref (option);
@ -573,6 +579,9 @@ file_printer_get_settings_from_options (GtkPrinter *printer,
if (option) if (option)
gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT, option->value); gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT, option->value);
option = gtk_printer_option_set_lookup (options, "gtk-n-up");
if (option)
gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_NUMBER_UP, option->value);
} }
static void static void