Commit c6395548a314e640966a7fd0cbca530018f03018

Authored by Perry Werneck
1 parent 9b94498c
Exists in master and in 1 other branch develop

Adjustments on print dialog & callback.

src/dialogs/colorscheme.c
@@ -316,6 +316,7 @@ @@ -316,6 +316,7 @@
316 { 316 {
317 if(!gdk_rgba_equal(colora+f,colorb+f)) 317 if(!gdk_rgba_equal(colora+f,colorb+f))
318 { 318 {
  319 +/*
319 #ifdef DEBUG 320 #ifdef DEBUG
320 g_autofree gchar * cla = gdk_rgba_to_string(colora+f); 321 g_autofree gchar * cla = gdk_rgba_to_string(colora+f);
321 g_autofree gchar * clb = gdk_rgba_to_string(colorb+f); 322 g_autofree gchar * clb = gdk_rgba_to_string(colorb+f);
@@ -328,7 +329,7 @@ @@ -328,7 +329,7 @@
328 clb 329 clb
329 ); 330 );
330 #endif // DEBUG 331 #endif // DEBUG
331 - 332 +*/
332 return FALSE; 333 return FALSE;
333 } 334 }
334 } 335 }
@@ -378,7 +379,7 @@ @@ -378,7 +379,7 @@
378 gtk_tree_model_get_value(model,&iter,1,&value); 379 gtk_tree_model_get_value(model,&iter,1,&value);
379 clr = g_value_get_pointer(&value); 380 clr = g_value_get_pointer(&value);
380 381
381 - debug("%p",clr); 382 +// debug("%p",clr);
382 383
383 if(clr && compare_colors(clr,colors)) 384 if(clr && compare_colors(clr,colors))
384 { 385 {
src/dialogs/print/print.c
@@ -207,29 +207,42 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT @@ -207,29 +207,42 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT
207 207
208 /*--[ Convenience ]----------------------------------------------------------------------------------*/ 208 /*--[ Convenience ]----------------------------------------------------------------------------------*/
209 209
210 - void v3270_print(GtkWidget *widget, LIB3270_PRINT_MODE mode) 210 + int v3270_print(GtkWidget *widget, LIB3270_PRINT_MODE mode, GError **error)
211 { 211 {
212 - g_autoptr(GError) err = NULL; 212 + if(*error)
  213 + {
  214 + return -1;
  215 + }
  216 +
  217 + lib3270_trace_event(v3270_get_session(widget),"print action activated (type=%d)",(int) mode);
  218 +
  219 + if(v3270_is_connected(widget))
  220 + {
  221 + V3270PrintOperation * operation = v3270_print_operation_new(widget, mode);
  222 + gtk_print_operation_run(GTK_PRINT_OPERATION(operation),GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,GTK_WINDOW(gtk_widget_get_toplevel(widget)),error);
  223 + g_object_unref(operation);
  224 + return (*error != NULL);
  225 + }
  226 +
  227 + *error = g_error_new(g_quark_from_static_string(PACKAGE_NAME),ENOTCONN,"%s",strerror(ENOTCONN));
213 228
214 - V3270PrintOperation * operation = v3270_print_operation_new(widget, mode);  
215 - gtk_print_operation_run(GTK_PRINT_OPERATION(operation),GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,GTK_WINDOW(gtk_widget_get_toplevel(widget)),&err);  
216 - g_object_unref(operation); 229 + return -1;
217 230
218 } 231 }
219 232
220 - void v3270_print_all(GtkWidget *widget) 233 + int v3270_print_all(GtkWidget *widget, GError **error)
221 { 234 {
222 - v3270_print(widget,LIB3270_PRINT_ALL); 235 + return v3270_print(widget,LIB3270_PRINT_ALL,error);
223 } 236 }
224 237
225 - void v3270_print_selected(GtkWidget *widget) 238 + int v3270_print_selected(GtkWidget *widget, GError **error)
226 { 239 {
227 - v3270_print(widget,LIB3270_PRINT_SELECTED); 240 + return v3270_print(widget,LIB3270_PRINT_SELECTED,error);
228 } 241 }
229 242
230 - void v3270_print_copy(GtkWidget *widget) 243 + int v3270_print_copy(GtkWidget *widget, GError **error)
231 { 244 {
232 - v3270_print(widget,LIB3270_PRINT_COPY); 245 + return v3270_print(widget,LIB3270_PRINT_COPY,error);
233 } 246 }
234 247
235 void V3270PrintOperation_set_text_by_mode(V3270PrintOperation * operation, LIB3270_PRINT_MODE mode) 248 void V3270PrintOperation_set_text_by_mode(V3270PrintOperation * operation, LIB3270_PRINT_MODE mode)
src/include/v3270.h
@@ -263,10 +263,11 @@ @@ -263,10 +263,11 @@
263 LIB3270_EXPORT void v3270_select_host(GtkWidget *widget); 263 LIB3270_EXPORT void v3270_select_host(GtkWidget *widget);
264 264
265 // Print 265 // Print
266 - LIB3270_EXPORT void v3270_print(GtkWidget *widget, LIB3270_PRINT_MODE mode);  
267 - LIB3270_EXPORT void v3270_print_all(GtkWidget *widget);  
268 - LIB3270_EXPORT void v3270_print_selected(GtkWidget *widget);  
269 - LIB3270_EXPORT void v3270_print_copy(GtkWidget *widget); 266 + LIB3270_EXPORT int v3270_print(GtkWidget *widget, LIB3270_PRINT_MODE mode, GError **error);
  267 +
  268 + LIB3270_EXPORT int v3270_print_all(GtkWidget *widget, GError **error);
  269 + LIB3270_EXPORT int v3270_print_selected(GtkWidget *widget, GError **error);
  270 + LIB3270_EXPORT int v3270_print_copy(GtkWidget *widget, GError **error);
270 271
271 G_END_DECLS 272 G_END_DECLS
272 273
src/testprogram/testprogram.c
@@ -125,26 +125,13 @@ static void color_scheme_changed(GtkWidget G_GNUC_UNUSED(*widget), const GdkRGBA @@ -125,26 +125,13 @@ static void color_scheme_changed(GtkWidget G_GNUC_UNUSED(*widget), const GdkRGBA
125 125
126 static void print_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) 126 static void print_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal)
127 { 127 {
128 - debug("%s",__FUNCTION__);  
129 - v3270_print_all(terminal); 128 + lib3270_print_all(v3270_get_session(terminal));
130 } 129 }
131 130
132 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { 131 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
133 132
134 - /*  
135 - const gchar * search[] = {  
136 -  
137 - g_get_user_config_dir(),  
138 - g_get_user_data_dir(),  
139 - g_get_home_dir(),  
140 - NULL  
141 -  
142 - };  
143 - */  
144 -  
145 GtkWidget * window = gtk_application_window_new(app); 133 GtkWidget * window = gtk_application_window_new(app);
146 GtkWidget * terminal = v3270_new(); 134 GtkWidget * terminal = v3270_new();
147 -// gchar * filename = NULL;  
148 GValue val = G_VALUE_INIT; 135 GValue val = G_VALUE_INIT;
149 136
150 g_signal_connect(terminal,"field_clicked",G_CALLBACK(field_clicked),window); 137 g_signal_connect(terminal,"field_clicked",G_CALLBACK(field_clicked),window);
src/v3270/callbacks.c
@@ -329,7 +329,30 @@ static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const @@ -329,7 +329,30 @@ static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const
329 329
330 static int print(H3270 *session, LIB3270_PRINT_MODE mode) 330 static int print(H3270 *session, LIB3270_PRINT_MODE mode)
331 { 331 {
332 - v3270_print(GTK_WIDGET(lib3270_get_user_data(session)), mode); 332 + GtkWidget *widget = GTK_WIDGET(lib3270_get_user_data(session));
  333 + g_autoptr(GError) error = NULL;
  334 +
  335 + v3270_print(widget, mode, &error);
  336 +
  337 + if(error)
  338 + {
  339 + GtkWidget *dialog =
  340 + gtk_message_dialog_new_with_markup(
  341 + GTK_WINDOW(gtk_widget_get_toplevel(widget)),
  342 + GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE,
  343 + _( "Operation has failed" ));
  344 +
  345 + gtk_window_set_title(GTK_WINDOW(dialog),_("Can't print"));
  346 +
  347 + gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",error->message);
  348 +
  349 + gtk_dialog_run(GTK_DIALOG(dialog));
  350 + gtk_widget_destroy(dialog);
  351 +
  352 + return -1;
  353 +
  354 + }
  355 +
333 return 0; 356 return 0;
334 } 357 }
335 358