Commit c6395548a314e640966a7fd0cbca530018f03018
1 parent
9b94498c
Exists in
master
and in
1 other branch
Adjustments on print dialog & callback.
Showing
5 changed files
with
57 additions
and
32 deletions
Show diff stats
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 | |
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 | ... | ... |