Commit 1c2b276912917735c52be04ced4f3cff1bb09795
1 parent
9ad60a5b
Exists in
master
and in
1 other branch
Addint methods to get/set properties on the print operation dialog.
Showing
5 changed files
with
74 additions
and
46 deletions
Show diff stats
src/dialogs/colorscheme.c
... | ... | @@ -363,33 +363,40 @@ |
363 | 363 | gchar * v3270_color_scheme_get_text(GtkWidget *widget) |
364 | 364 | { |
365 | 365 | GdkRGBA * clr = NULL; |
366 | - GValue value = { 0, }; | |
366 | + gchar * rc = NULL; | |
367 | + GValue value = { 0, }; | |
367 | 368 | GtkTreeIter iter; |
368 | - int f; | |
369 | 369 | |
370 | 370 | if(!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget),&iter)) |
371 | 371 | return NULL; |
372 | 372 | |
373 | 373 | gtk_tree_model_get_value(gtk_combo_box_get_model(GTK_COMBO_BOX(widget)),&iter,1,&value); |
374 | 374 | clr = g_value_get_pointer(&value); |
375 | - GString *str = g_string_new(""); | |
376 | 375 | |
377 | 376 | if(clr) |
377 | + rc = v3270_translate_rgba_to_text(clr); | |
378 | + | |
379 | + g_value_unset(&value); | |
380 | + | |
381 | + return rc; | |
382 | + | |
383 | + } | |
384 | + | |
385 | + gchar * v3270_translate_rgba_to_text(GdkRGBA *clr) | |
386 | + { | |
387 | + int f; | |
388 | + GString *str = g_string_new(""); | |
389 | + | |
390 | + for(f=0;f<V3270_COLOR_COUNT;f++) | |
378 | 391 | { |
379 | - for(f=0;f<V3270_COLOR_COUNT;f++) | |
380 | - { | |
381 | - if(f) | |
382 | - g_string_append_c(str,';'); | |
392 | + if(f) | |
393 | + g_string_append_c(str,';'); | |
383 | 394 | |
384 | - g_autofree gchar * color = gdk_rgba_to_string(clr+f); | |
385 | - g_string_append_printf(str,"%s",color); | |
386 | - } | |
395 | + g_autofree gchar * color = gdk_rgba_to_string(clr+f); | |
396 | + g_string_append_printf(str,"%s",color); | |
387 | 397 | } |
388 | 398 | |
389 | - g_value_unset(&value); | |
390 | - | |
391 | 399 | return g_string_free(str,FALSE); |
392 | - | |
393 | 400 | } |
394 | 401 | |
395 | 402 | void v3270_color_scheme_set_rgba(GtkWidget *widget, const GdkRGBA *colors) |
... | ... | @@ -416,14 +423,22 @@ |
416 | 423 | } while(gtk_tree_model_iter_next(model,&iter)); |
417 | 424 | } |
418 | 425 | |
419 | - debug("%s: Can't identify color scheme", __FUNCTION__); | |
426 | + g_message("Can't find color scheme for %s",colors); | |
420 | 427 | gtk_combo_box_set_active(GTK_COMBO_BOX(widget),-1); |
421 | 428 | |
429 | + // TODO: Create an entry for this scheme as "custom" and select it. | |
430 | + | |
422 | 431 | } |
423 | 432 | |
424 | 433 | void v3270_color_scheme_set_text(GtkWidget *widget, const gchar *colors) |
425 | 434 | { |
426 | - GdkRGBA clr[V3270_COLOR_COUNT]; | |
435 | + GdkRGBA clr[V3270_COLOR_COUNT]; | |
436 | + v3270_translate_text_to_rgba(colors,clr); | |
437 | + v3270_color_scheme_set_rgba(widget,clr); | |
438 | + } | |
439 | + | |
440 | + void v3270_translate_text_to_rgba(const gchar *colors, GdkRGBA *clr) | |
441 | + { | |
427 | 442 | gchar **str = g_strsplit(colors,";",V3270_COLOR_BASE); |
428 | 443 | size_t f; |
429 | 444 | |
... | ... | @@ -456,8 +471,6 @@ |
456 | 471 | |
457 | 472 | g_strfreev(str); |
458 | 473 | |
459 | - v3270_color_scheme_set_rgba(widget,clr); | |
460 | - | |
461 | 474 | } |
462 | 475 | |
463 | 476 | int v3270_color_scheme_get_rgba(GtkWidget *widget, GdkRGBA *colors, size_t num_colors) | ... | ... |
src/dialogs/print/convenience.c
... | ... | @@ -43,34 +43,6 @@ |
43 | 43 | return errno = EINVAL; |
44 | 44 | } |
45 | 45 | |
46 | - /* | |
47 | - if(!v3270_is_connected(widget)) | |
48 | - { | |
49 | - if(error) | |
50 | - { | |
51 | - *error = g_error_new(g_quark_from_static_string(PACKAGE_NAME),ENOTCONN,"%s",strerror(ENOTCONN)); | |
52 | - } | |
53 | - else | |
54 | - { | |
55 | - GtkWidget *popup = gtk_message_dialog_new_with_markup( | |
56 | - GTK_WINDOW(gtk_widget_get_toplevel(widget)), | |
57 | - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, | |
58 | - GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE, | |
59 | - _("Can't print data") | |
60 | - ); | |
61 | - | |
62 | - gtk_window_set_title(GTK_WINDOW(popup),_("Operation has failed")); | |
63 | - | |
64 | - gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(popup),"%s",strerror(ENOTCONN)); | |
65 | - | |
66 | - gtk_dialog_run(GTK_DIALOG(popup)); | |
67 | - gtk_widget_destroy(popup); | |
68 | - } | |
69 | - | |
70 | - return errno = ENOTCONN; | |
71 | - } | |
72 | - */ | |
73 | - | |
74 | 46 | lib3270_trace_event(v3270_get_session(widget),"print action activated (type=%d)",(int) mode); |
75 | 47 | |
76 | 48 | // Print operation. | ... | ... |
src/dialogs/print/print.c
... | ... | @@ -235,3 +235,35 @@ GtkPrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT |
235 | 235 | return GTK_PRINT_OPERATION(operation); |
236 | 236 | } |
237 | 237 | |
238 | +gboolean v3270_print_operation_set_font_family(GtkPrintOperation *operation, const gchar *fontname) | |
239 | +{ | |
240 | + g_return_val_if_fail(GTK_IS_V3270_PRINT_OPERATION(operation),FALSE); | |
241 | + | |
242 | + V3270PrintOperation * opr = GTK_V3270_PRINT_OPERATION(operation); | |
243 | + | |
244 | + if(opr->font.name) | |
245 | + g_free(opr->font.name); | |
246 | + | |
247 | + opr->font.name = g_strdup(fontname); | |
248 | + | |
249 | + return TRUE; | |
250 | + | |
251 | +} | |
252 | + | |
253 | +gchar * v3270_print_operation_get_font_family(GtkPrintOperation *operation) | |
254 | +{ | |
255 | + g_return_val_if_fail(GTK_IS_V3270_PRINT_OPERATION(operation),NULL); | |
256 | + return g_strdup(GTK_V3270_PRINT_OPERATION(operation)->font.name); | |
257 | +} | |
258 | + | |
259 | +void v3270_print_operation_set_color_scheme(GtkPrintOperation *operation, const gchar *colors) | |
260 | +{ | |
261 | + g_return_if_fail(GTK_IS_V3270_PRINT_OPERATION(operation)); | |
262 | + v3270_translate_text_to_rgba(colors,GTK_V3270_PRINT_OPERATION(operation)->settings.colors); | |
263 | +} | |
264 | + | |
265 | +gchar * v3270_print_operation_get_color_scheme(GtkPrintOperation *operation) | |
266 | +{ | |
267 | + g_return_val_if_fail(GTK_IS_V3270_PRINT_OPERATION(operation),NULL); | |
268 | + return v3270_translate_rgba_to_text(GTK_V3270_PRINT_OPERATION(operation)->settings.colors); | |
269 | +} | ... | ... |
src/include/internals.h
... | ... | @@ -238,6 +238,10 @@ |
238 | 238 | G_GNUC_INTERNAL GSource * IO_source_new(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*call)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata); |
239 | 239 | G_GNUC_INTERNAL void IO_source_set_state(GSource *source, gboolean enable); |
240 | 240 | |
241 | + // Tools | |
242 | + G_GNUC_INTERNAL void v3270_translate_text_to_rgba(const gchar *colors, GdkRGBA *clr); | |
243 | + G_GNUC_INTERNAL gchar * v3270_translate_rgba_to_text(GdkRGBA *clr); | |
244 | + | |
241 | 245 | G_END_DECLS |
242 | 246 | |
243 | 247 | #endif // V3270_INTERNALS_H_INCLUDED | ... | ... |
src/include/v3270/print.h
... | ... | @@ -64,9 +64,16 @@ |
64 | 64 | |
65 | 65 | LIB3270_EXPORT GType V3270PrintOperation_get_type(void); |
66 | 66 | LIB3270_EXPORT GtkPrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode); |
67 | - LIB3270_EXPORT GtkWidget * v3270_print_operation_get_terminal(GtkPrintOperation *operation); | |
68 | 67 | LIB3270_EXPORT void v3270_print_operation_apply_settings(GtkPrintOperation *operation, GtkWidget *settings); |
69 | 68 | |
69 | + LIB3270_EXPORT GtkWidget * v3270_print_operation_get_terminal(GtkPrintOperation *operation); | |
70 | + | |
71 | + LIB3270_EXPORT gboolean v3270_print_operation_set_font_family(GtkPrintOperation *operation, const gchar *fontname); | |
72 | + LIB3270_EXPORT gchar * v3270_print_operation_get_font_family(GtkPrintOperation *operation); | |
73 | + | |
74 | + LIB3270_EXPORT void v3270_print_operation_set_color_scheme(GtkPrintOperation *operation, const gchar *colors); | |
75 | + LIB3270_EXPORT gchar * v3270_print_operation_get_color_scheme(GtkPrintOperation *operation); | |
76 | + | |
70 | 77 | LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active); |
71 | 78 | |
72 | 79 | LIB3270_EXPORT GtkWidget * v3270_font_selection_new(const gchar *fontname); | ... | ... |