Commit 14e4ac2001f6ce1f56693eae6157f6fe9f58d360

Authored by Perry Werneck
1 parent 111e4359
Exists in v5.2

Fixing print settings.

Showing 1 changed file with 58 additions and 48 deletions   Show diff stats
src/pw3270/print.c
@@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
33 #include <v3270/dialogs.h> 33 #include <v3270/dialogs.h>
34 #include <lib3270/selection.h> 34 #include <lib3270/selection.h>
35 #include <lib3270/trace.h> 35 #include <lib3270/trace.h>
  36 + #include <lib3270/log.h>
36 37
37 #define FONT_CONFIG "font-family" 38 #define FONT_CONFIG "font-family"
38 #define DEFAULT_FONT "Courier New" 39 #define DEFAULT_FONT "Courier New"
@@ -54,6 +55,54 @@ @@ -54,6 +55,54 @@
54 pw3270_print(widget,G_OBJECT(action),GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, LIB3270_CONTENT_COPY); 55 pw3270_print(widget,G_OBJECT(action),GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, LIB3270_CONTENT_COPY);
55 } 56 }
56 57
  58 + static void done(GtkPrintOperation *operation, GtkPrintOperationResult result, GtkWidget *terminal)
  59 + {
  60 + debug("%s(%u)",__FUNCTION__,(unsigned int) result);
  61 +
  62 + switch(result)
  63 + {
  64 + case GTK_PRINT_OPERATION_RESULT_ERROR: // An error has occurred.
  65 + {
  66 + // Get error code
  67 + GError * err = NULL;
  68 +
  69 + gtk_print_operation_get_error(operation,&err);
  70 +
  71 + v3270_error_popup(
  72 + terminal,
  73 + _("Operation has failed"),
  74 + _( "Unable to complete print job" ),
  75 + err->message
  76 + );
  77 +
  78 + g_error_free(err);
  79 +
  80 + }
  81 + break;
  82 +
  83 + case GTK_PRINT_OPERATION_RESULT_APPLY: // The print settings should be stored.
  84 + trace("%s","GTK_PRINT_OPERATION_RESULT_APPLY");
  85 + save_print_operation_settings(operation);
  86 + break;
  87 +
  88 + case GTK_PRINT_OPERATION_RESULT_CANCEL: // The print operation has been canceled, the print settings should not be stored.
  89 + trace("%s","GTK_PRINT_OPERATION_RESULT_CANCEL");
  90 + g_message("Print operation was cancelled");
  91 + break;
  92 +
  93 + case GTK_PRINT_OPERATION_RESULT_IN_PROGRESS: // The print operation is not complete yet. This value will only be returned when running asynchronously.
  94 + trace("%s","GTK_PRINT_OPERATION_RESULT_IN_PROGRESS");
  95 + g_message("Print operation is in progress");
  96 + break;
  97 +
  98 + default:
  99 + trace("%s","Unexpected");
  100 + g_warning("Unexpected print operation result: %d",(int) result);
  101 +
  102 + }
  103 +
  104 + }
  105 +
57 LIB3270_EXPORT int pw3270_print(GtkWidget *widget, GObject *action, GtkPrintOperationAction oper, LIB3270_CONTENT_OPTION src) 106 LIB3270_EXPORT int pw3270_print(GtkWidget *widget, GObject *action, GtkPrintOperationAction oper, LIB3270_CONTENT_OPTION src)
58 { 107 {
59 int rc = 0; 108 int rc = 0;
@@ -67,9 +116,17 @@ @@ -67,9 +116,17 @@
67 // Create and setup dialog 116 // Create and setup dialog
68 // 117 //
69 GtkPrintOperation * operation = v3270_print_operation_new(widget,src); 118 GtkPrintOperation * operation = v3270_print_operation_new(widget,src);
  119 + if(!operation)
  120 + {
  121 + g_message("Can't create print operation");
  122 + return -1;
  123 + }
  124 +
  125 + g_signal_connect(operation,"done",G_CALLBACK(done),widget);
  126 +
70 { 127 {
71 // Setup async mode 128 // Setup async mode
72 - gboolean async = get_boolean_from_config("terminal","allow_async_print",FALSE); 129 + gboolean async = get_boolean_from_config("terminal","allow_async_print",TRUE);
73 gtk_print_operation_set_allow_async(operation,async); 130 gtk_print_operation_set_allow_async(operation,async);
74 } 131 }
75 132
@@ -99,53 +156,6 @@ @@ -99,53 +156,6 @@
99 g_error_free(err); 156 g_error_free(err);
100 rc = -1; 157 rc = -1;
101 } 158 }
102 - else  
103 - {  
104 - trace("Print operation result was %u",(unsigned int) result);  
105 -  
106 - switch(result)  
107 - {  
108 - case GTK_PRINT_OPERATION_RESULT_ERROR: // An error has occurred.  
109 - {  
110 - // Get error code  
111 - GError * err = NULL;  
112 -  
113 - gtk_print_operation_get_error(operation,&err);  
114 -  
115 - v3270_error_popup(  
116 - widget,  
117 - _("Operation has failed"),  
118 - _( "Unable to complete print job" ),  
119 - err->message  
120 - );  
121 -  
122 - g_error_free(err);  
123 - rc = -1;  
124 -  
125 - }  
126 - break;  
127 -  
128 - case GTK_PRINT_OPERATION_RESULT_APPLY: // The print settings should be stored.  
129 - trace("%s","GTK_PRINT_OPERATION_RESULT_APPLY");  
130 - save_print_operation_settings(operation);  
131 - break;  
132 -  
133 - case GTK_PRINT_OPERATION_RESULT_CANCEL: // The print operation has been canceled, the print settings should not be stored.  
134 - trace("%s","GTK_PRINT_OPERATION_RESULT_CANCEL");  
135 - g_message("Print operation was cancelled");  
136 - break;  
137 -  
138 - case GTK_PRINT_OPERATION_RESULT_IN_PROGRESS: // The print operation is not complete yet. This value will only be returned when running asynchronously.  
139 - trace("%s","GTK_PRINT_OPERATION_RESULT_IN_PROGRESS");  
140 - g_message("Print operation is in progress");  
141 - break;  
142 -  
143 - default:  
144 - trace("%s","Unexpected");  
145 - g_warning("Unexpected print operation result: %d",(int) result);  
146 -  
147 - }  
148 - }  
149 159
150 g_object_unref(operation); 160 g_object_unref(operation);
151 161