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 316 {
317 317 if(!gdk_rgba_equal(colora+f,colorb+f))
318 318 {
  319 +/*
319 320 #ifdef DEBUG
320 321 g_autofree gchar * cla = gdk_rgba_to_string(colora+f);
321 322 g_autofree gchar * clb = gdk_rgba_to_string(colorb+f);
... ... @@ -328,7 +329,7 @@
328 329 clb
329 330 );
330 331 #endif // DEBUG
331   -
  332 +*/
332 333 return FALSE;
333 334 }
334 335 }
... ... @@ -378,7 +379,7 @@
378 379 gtk_tree_model_get_value(model,&iter,1,&value);
379 380 clr = g_value_get_pointer(&value);
380 381  
381   - debug("%p",clr);
  382 +// debug("%p",clr);
382 383  
383 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 207  
208 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 248 void V3270PrintOperation_set_text_by_mode(V3270PrintOperation * operation, LIB3270_PRINT_MODE mode)
... ...
src/include/v3270.h
... ... @@ -263,10 +263,11 @@
263 263 LIB3270_EXPORT void v3270_select_host(GtkWidget *widget);
264 264  
265 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 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 125  
126 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 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 133 GtkWidget * window = gtk_application_window_new(app);
146 134 GtkWidget * terminal = v3270_new();
147   -// gchar * filename = NULL;
148 135 GValue val = G_VALUE_INIT;
149 136  
150 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 329  
330 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 356 return 0;
334 357 }
335 358  
... ...