Commit c75488a894697377d48679673a08c0234164c454

Authored by perry.werneck@gmail.com
1 parent 7823717c

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__);