Commit c75488a894697377d48679673a08c0234164c454
1 parent
7823717c
Exists in
master
and in
5 other branches
Diálogo de impressão não estava salvando o tamanho do papel
Showing
1 changed file
with
20 additions
and
20 deletions
Show diff stats
src/pw3270/print.c
@@ -259,6 +259,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | @@ -259,6 +259,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | ||
259 | // Save settings | 259 | // Save settings |
260 | GtkPrintSettings * settings = gtk_print_operation_get_print_settings(prt); | 260 | GtkPrintSettings * settings = gtk_print_operation_get_print_settings(prt); |
261 | GtkPageSetup * pgsetup = gtk_print_operation_get_default_page_setup(prt); | 261 | GtkPageSetup * pgsetup = gtk_print_operation_get_default_page_setup(prt); |
262 | + GtkPaperSize * papersize = gtk_page_setup_get_paper_size(pgsetup); | ||
262 | 263 | ||
263 | trace("Saving settings PrintSettings=%p page_setup=%p",settings,pgsetup); | 264 | trace("Saving settings PrintSettings=%p page_setup=%p",settings,pgsetup); |
264 | 265 | ||
@@ -290,27 +291,23 @@ static gchar * enum_to_string(GType type, guint enum_value) | @@ -290,27 +291,23 @@ static gchar * enum_to_string(GType type, guint enum_value) | ||
290 | 291 | ||
291 | g_free (orientation); | 292 | g_free (orientation); |
292 | 293 | ||
293 | - if(RegCreateKeyEx(hKey,"papersize",0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hPaperSize,&disp) == ERROR_SUCCESS) | 294 | + if(papersize && RegCreateKeyEx(hKey,"papersize",0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hPaperSize,&disp) == ERROR_SUCCESS) |
294 | { | 295 | { |
295 | - GtkPaperSize *size = gtk_page_setup_get_paper_size(pgsetup); | ||
296 | - if(size) | ||
297 | - { | ||
298 | - // From http://git.gnome.org/browse/gtk+/tree/gtk/gtkpapersize.c | ||
299 | - const gchar *name = gtk_paper_size_get_name(size); | ||
300 | - const gchar *display_name = gtk_paper_size_get_display_name(size); | ||
301 | - const gchar *ppd_name = gtk_paper_size_get_ppd_name(size); | ||
302 | - | ||
303 | - if (ppd_name != NULL) | ||
304 | - save_string(hPaperSize,"PPDName", ppd_name); | ||
305 | - else | ||
306 | - save_string(hPaperSize,"Name", name); | ||
307 | - | ||
308 | - if (display_name) | ||
309 | - save_string(hPaperSize,"DisplayName", display_name); | ||
310 | - | ||
311 | - save_double(hPaperSize, "Width", gtk_paper_size_get_width (size, GTK_UNIT_MM)); | ||
312 | - save_double(hPaperSize, "Height", gtk_paper_size_get_height (size, GTK_UNIT_MM)); | ||
313 | - } | 296 | + // From http://git.gnome.org/browse/gtk+/tree/gtk/gtkpapersize.c |
297 | + const gchar *name = gtk_paper_size_get_name(papersize); | ||
298 | + const gchar *display_name = gtk_paper_size_get_display_name(papersize); | ||
299 | + const gchar *ppd_name = gtk_paper_size_get_ppd_name(papersize); | ||
300 | + | ||
301 | + if (ppd_name != NULL) | ||
302 | + save_string(hPaperSize,"PPDName", ppd_name); | ||
303 | + else | ||
304 | + save_string(hPaperSize,"Name", name); | ||
305 | + | ||
306 | + if (display_name) | ||
307 | + save_string(hPaperSize,"DisplayName", display_name); | ||
308 | + | ||
309 | + save_double(hPaperSize, "Width", gtk_paper_size_get_width (size, GTK_UNIT_MM)); | ||
310 | + save_double(hPaperSize, "Height", gtk_paper_size_get_height (size, GTK_UNIT_MM)); | ||
314 | RegCloseKey(hPaperSize); | 311 | RegCloseKey(hPaperSize); |
315 | } | 312 | } |
316 | RegCloseKey(hKey); | 313 | RegCloseKey(hKey); |
@@ -322,6 +319,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | @@ -322,6 +319,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | ||
322 | GKeyFile * conf = get_application_keyfile(); | 319 | GKeyFile * conf = get_application_keyfile(); |
323 | gtk_print_settings_to_key_file(settings,conf,"print_settings"); | 320 | gtk_print_settings_to_key_file(settings,conf,"print_settings"); |
324 | gtk_page_setup_to_key_file(pgsetup,conf,"page_setup"); | 321 | gtk_page_setup_to_key_file(pgsetup,conf,"page_setup"); |
322 | + gtk_paper_size_to_key_file(papersize,conf,"paper_size"); | ||
325 | #endif | 323 | #endif |
326 | } | 324 | } |
327 | 325 | ||
@@ -547,6 +545,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | @@ -547,6 +545,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | ||
547 | GtkPrintOperation * print = gtk_print_operation_new(); | 545 | GtkPrintOperation * print = gtk_print_operation_new(); |
548 | GtkPrintSettings * settings = gtk_print_settings_new(); | 546 | GtkPrintSettings * settings = gtk_print_settings_new(); |
549 | GtkPageSetup * setup = gtk_page_setup_new(); | 547 | GtkPageSetup * setup = gtk_page_setup_new(); |
548 | + GtkPaperSize * papersize = gtk_paper_size_new((const gchar *) g_object_get_data(obj,"papersize")); | ||
550 | 549 | ||
551 | *info = g_new0(PRINT_INFO,1); | 550 | *info = g_new0(PRINT_INFO,1); |
552 | (*info)->session = v3270_get_session(widget); | 551 | (*info)->session = v3270_get_session(widget); |
@@ -630,6 +629,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | @@ -630,6 +629,7 @@ static gchar * enum_to_string(GType type, guint enum_value) | ||
630 | 629 | ||
631 | // Finish settings | 630 | // Finish settings |
632 | gtk_print_operation_set_print_settings(print,settings); | 631 | gtk_print_operation_set_print_settings(print,settings); |
632 | + gtk_page_setup_set_paper_size_and_default_margins(setup,papersize); | ||
633 | gtk_print_operation_set_default_page_setup(print,setup); | 633 | gtk_print_operation_set_default_page_setup(print,setup); |
634 | 634 | ||
635 | trace("%s ends",__FUNCTION__); | 635 | trace("%s ends",__FUNCTION__); |