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 259 // Save settings
260 260 GtkPrintSettings * settings = gtk_print_operation_get_print_settings(prt);
261 261 GtkPageSetup * pgsetup = gtk_print_operation_get_default_page_setup(prt);
  262 + GtkPaperSize * papersize = gtk_page_setup_get_paper_size(pgsetup);
262 263  
263 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 291  
291 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 311 RegCloseKey(hPaperSize);
315 312 }
316 313 RegCloseKey(hKey);
... ... @@ -322,6 +319,7 @@ static gchar * enum_to_string(GType type, guint enum_value)
322 319 GKeyFile * conf = get_application_keyfile();
323 320 gtk_print_settings_to_key_file(settings,conf,"print_settings");
324 321 gtk_page_setup_to_key_file(pgsetup,conf,"page_setup");
  322 + gtk_paper_size_to_key_file(papersize,conf,"paper_size");
325 323 #endif
326 324 }
327 325  
... ... @@ -547,6 +545,7 @@ static gchar * enum_to_string(GType type, guint enum_value)
547 545 GtkPrintOperation * print = gtk_print_operation_new();
548 546 GtkPrintSettings * settings = gtk_print_settings_new();
549 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 550 *info = g_new0(PRINT_INFO,1);
552 551 (*info)->session = v3270_get_session(widget);
... ... @@ -630,6 +629,7 @@ static gchar * enum_to_string(GType type, guint enum_value)
630 629  
631 630 // Finish settings
632 631 gtk_print_operation_set_print_settings(print,settings);
  632 + gtk_page_setup_set_paper_size_and_default_margins(setup,papersize);
633 633 gtk_print_operation_set_default_page_setup(print,setup);
634 634  
635 635 trace("%s ends",__FUNCTION__);
... ...