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 | ... | ... |