Commit b3926a49b21900b25f087bf2bf1f248570571069

Authored by Perry Werneck
1 parent f4743ff8

Linux custom print widget is now managed by libv3270.

src/pw3270/linux/print.c
@@ -37,6 +37,7 @@ @@ -37,6 +37,7 @@
37 37
38 /*--[ Implement ]------------------------------------------------------------------------------------*/ 38 /*--[ Implement ]------------------------------------------------------------------------------------*/
39 39
  40 +/*
40 static GtkWidget * create_custom_widget(GtkPrintOperation *prt, gpointer G_GNUC_UNUSED(dunno)) 41 static GtkWidget * create_custom_widget(GtkPrintOperation *prt, gpointer G_GNUC_UNUSED(dunno))
41 { 42 {
42 GtkWidget * widget = gtk_frame_new(""); 43 GtkWidget * widget = gtk_frame_new("");
@@ -70,31 +71,24 @@ @@ -70,31 +71,24 @@
70 71
71 return widget; 72 return widget;
72 } 73 }
  74 +*/
73 75
  76 +/*
74 static void custom_widget_apply(GtkPrintOperation *prt, GtkWidget *widget, gpointer G_GNUC_UNUSED(dunno)) 77 static void custom_widget_apply(GtkPrintOperation *prt, GtkWidget *widget, gpointer G_GNUC_UNUSED(dunno))
75 { 78 {
76 GtkWidget * settings = gtk_bin_get_child(GTK_BIN(widget)); 79 GtkWidget * settings = gtk_bin_get_child(GTK_BIN(widget));
77 -  
78 v3270_print_operation_apply_settings(prt,settings); 80 v3270_print_operation_apply_settings(prt,settings);
79 -  
80 - // Store font family  
81 - g_autofree gchar * font_family = v3270_print_settings_get_font_family(settings);  
82 - set_string_to_config("print",FONT_CONFIG,font_family);  
83 -  
84 - // Store save color settings  
85 - g_autofree gchar * colors = v3270_print_settings_get_color_scheme(settings);  
86 - set_string_to_config("print","colors","%s",colors);  
87 -  
88 } 81 }
  82 +*/
89 83
90 - void setup_print_dialog(GtkPrintOperation * operation) 84 + void load_print_operation_settings(GtkPrintOperation * operation)
91 { 85 {
92 GtkPrintSettings * settings = gtk_print_settings_new(); 86 GtkPrintSettings * settings = gtk_print_settings_new();
93 GtkPageSetup * setup = gtk_page_setup_new(); 87 GtkPageSetup * setup = gtk_page_setup_new();
94 GtkPaperSize * papersize = NULL; 88 GtkPaperSize * papersize = NULL;
95 89
96 - g_signal_connect(operation,"create-custom-widget",G_CALLBACK(create_custom_widget),NULL);  
97 - g_signal_connect(operation,"custom-widget-apply",G_CALLBACK(custom_widget_apply), NULL); 90 +// g_signal_connect(operation,"create-custom-widget",G_CALLBACK(create_custom_widget),NULL);
  91 +// g_signal_connect(operation,"custom-widget-apply",G_CALLBACK(custom_widget_apply), NULL);
98 92
99 // Load page and print settings 93 // Load page and print settings
100 GKeyFile * conf = get_application_keyfile(); 94 GKeyFile * conf = get_application_keyfile();
@@ -138,5 +132,36 @@ @@ -138,5 +132,36 @@
138 gtk_page_setup_set_paper_size_and_default_margins(setup,papersize); 132 gtk_page_setup_set_paper_size_and_default_margins(setup,papersize);
139 gtk_print_operation_set_default_page_setup(operation,setup); 133 gtk_print_operation_set_default_page_setup(operation,setup);
140 134
  135 + // Load font and colors
  136 + g_autofree gchar * font_family = get_string_from_config("print",FONT_CONFIG,DEFAULT_FONT);
  137 + if(font_family && *font_family)
  138 + v3270_print_operation_set_font_family(operation,font_family);
  139 +
  140 + g_autofree gchar * color_scheme = get_string_from_config("print","colors","");
  141 + if(color_scheme && *color_scheme)
  142 + v3270_print_operation_set_color_scheme(operation,color_scheme);
  143 +
141 } 144 }
142 145
  146 + void save_print_operation_settings(GtkPrintOperation * operation)
  147 + {
  148 + GtkPrintSettings * settings = gtk_print_operation_get_print_settings(operation);
  149 + GtkPageSetup * pgsetup = gtk_print_operation_get_default_page_setup(operation);
  150 + GtkPaperSize * papersize = gtk_page_setup_get_paper_size(pgsetup);
  151 +
  152 + g_message("Saving print settings");
  153 +
  154 + GKeyFile * conf = get_application_keyfile();
  155 + gtk_print_settings_to_key_file(settings,conf,"print_settings");
  156 + gtk_page_setup_to_key_file(pgsetup,conf,"page_setup");
  157 + gtk_paper_size_to_key_file(papersize,conf,"paper_size");
  158 +
  159 + // Store font family
  160 + g_autofree gchar * font_family = v3270_print_operation_get_font_family(operation);
  161 + set_string_to_config("print",FONT_CONFIG,font_family);
  162 +
  163 + // Store save color settings
  164 + g_autofree gchar * colors = v3270_print_operation_get_color_scheme(operation);
  165 + set_string_to_config("print","colors","%s",colors);
  166 +
  167 + }
src/pw3270/print.c
@@ -24,8 +24,6 @@ @@ -24,8 +24,6 @@
24 * 24 *
25 * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) 25 * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) 26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
27 - * licinio@bb.com.br (Licínio Luis Branco)  
28 - * kraucer@bb.com.br (Kraucer Fernandes Mazuco)  
29 * 27 *
30 */ 28 */
31 29
@@ -183,18 +181,19 @@ @@ -183,18 +181,19 @@
183 181
184 gtk_print_operation_set_allow_async(operation,get_boolean_from_config("print","allow_async",TRUE)); 182 gtk_print_operation_set_allow_async(operation,get_boolean_from_config("print","allow_async",TRUE));
185 183
186 - setup_print_dialog(operation); 184 + load_print_operation_settings(operation);
187 185
188 // 186 //
189 // Run print dialog 187 // Run print dialog
190 // 188 //
191 GError *err = NULL; 189 GError *err = NULL;
192 - gtk_print_operation_run( 190 + GtkPrintOperationResult result =
  191 + gtk_print_operation_run(
193 operation, 192 operation,
194 GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, 193 GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
195 GTK_WINDOW(gtk_widget_get_toplevel(widget)), 194 GTK_WINDOW(gtk_widget_get_toplevel(widget)),
196 &err 195 &err
197 - ); 196 + );
198 197
199 if(err) 198 if(err)
200 { 199 {
@@ -216,6 +215,33 @@ @@ -216,6 +215,33 @@
216 215
217 rc = -1; 216 rc = -1;
218 } 217 }
  218 + else
  219 + {
  220 + switch(result)
  221 + {
  222 + case GTK_PRINT_OPERATION_RESULT_ERROR: // An error has occurred.
  223 + g_message("Print operation has failed");
  224 + break;
  225 +
  226 + case GTK_PRINT_OPERATION_RESULT_APPLY: // The print settings should be stored.
  227 + save_print_operation_settings(operation);
  228 + break;
  229 +
  230 + case GTK_PRINT_OPERATION_RESULT_CANCEL: // The print operation has been canceled, the print settings should not be stored.
  231 + g_message("Print operation was cancelled");
  232 + break;
  233 +
  234 + case GTK_PRINT_OPERATION_RESULT_IN_PROGRESS: // The print operation is not complete yet. This value will only be returned when running asynchronously.
  235 + g_message("Print operation is in progress");
  236 + break;
  237 +
  238 + default:
  239 + g_warning("Unexpected print operation result: %d",(int) result);
  240 +
  241 + }
  242 + }
  243 +
  244 + g_object_unref(operation);
219 245
220 return rc; 246 return rc;
221 247
src/pw3270/private.h
@@ -77,7 +77,8 @@ @@ -77,7 +77,8 @@
77 G_GNUC_INTERNAL void run_security_dialog(GtkWidget *widget); 77 G_GNUC_INTERNAL void run_security_dialog(GtkWidget *widget);
78 78
79 // Tools 79 // Tools
80 - G_GNUC_INTERNAL void setup_print_dialog(GtkPrintOperation * operation); 80 + G_GNUC_INTERNAL void load_print_operation_settings(GtkPrintOperation * operation);
  81 + G_GNUC_INTERNAL void save_print_operation_settings(GtkPrintOperation * operation);
81 82
82 // actions 83 // actions
83 G_GNUC_INTERNAL void paste_file_action(GtkAction *action, GtkWidget *widget); 84 G_GNUC_INTERNAL void paste_file_action(GtkAction *action, GtkWidget *widget);
src/pw3270/windows/print.c
@@ -100,7 +100,7 @@ static gchar * enum_to_string(GType type, guint enum_value) @@ -100,7 +100,7 @@ static gchar * enum_to_string(GType type, guint enum_value)
100 } 100 }
101 } 101 }
102 102
103 - void setup_print_dialog(GtkPrintOperation * operation) 103 + void load_print_operation_settings(GtkPrintOperation * operation)
104 { 104 {
105 GtkPrintSettings * settings = gtk_print_settings_new(); 105 GtkPrintSettings * settings = gtk_print_settings_new();
106 GtkPageSetup * setup = gtk_page_setup_new(); 106 GtkPageSetup * setup = gtk_page_setup_new();
@@ -222,3 +222,8 @@ static gchar * enum_to_string(GType type, guint enum_value) @@ -222,3 +222,8 @@ static gchar * enum_to_string(GType type, guint enum_value)
222 222
223 } 223 }
224 224
  225 + void save_print_operation_settings(GtkPrintOperation * operation)
  226 + {
  227 +
  228 +
  229 + }