Commit 1c2b276912917735c52be04ced4f3cff1bb09795

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

Addint methods to get/set properties on the print operation dialog.

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