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,33 +363,40 @@
363 gchar * v3270_color_scheme_get_text(GtkWidget *widget) 363 gchar * v3270_color_scheme_get_text(GtkWidget *widget)
364 { 364 {
365 GdkRGBA * clr = NULL; 365 GdkRGBA * clr = NULL;
366 - GValue value = { 0, }; 366 + gchar * rc = NULL;
  367 + GValue value = { 0, };
367 GtkTreeIter iter; 368 GtkTreeIter iter;
368 - int f;  
369 369
370 if(!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget),&iter)) 370 if(!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget),&iter))
371 return NULL; 371 return NULL;
372 372
373 gtk_tree_model_get_value(gtk_combo_box_get_model(GTK_COMBO_BOX(widget)),&iter,1,&value); 373 gtk_tree_model_get_value(gtk_combo_box_get_model(GTK_COMBO_BOX(widget)),&iter,1,&value);
374 clr = g_value_get_pointer(&value); 374 clr = g_value_get_pointer(&value);
375 - GString *str = g_string_new("");  
376 375
377 if(clr) 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 return g_string_free(str,FALSE); 399 return g_string_free(str,FALSE);
392 -  
393 } 400 }
394 401
395 void v3270_color_scheme_set_rgba(GtkWidget *widget, const GdkRGBA *colors) 402 void v3270_color_scheme_set_rgba(GtkWidget *widget, const GdkRGBA *colors)
@@ -416,14 +423,22 @@ @@ -416,14 +423,22 @@
416 } while(gtk_tree_model_iter_next(model,&iter)); 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 gtk_combo_box_set_active(GTK_COMBO_BOX(widget),-1); 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 void v3270_color_scheme_set_text(GtkWidget *widget, const gchar *colors) 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 gchar **str = g_strsplit(colors,";",V3270_COLOR_BASE); 442 gchar **str = g_strsplit(colors,";",V3270_COLOR_BASE);
428 size_t f; 443 size_t f;
429 444
@@ -456,8 +471,6 @@ @@ -456,8 +471,6 @@
456 471
457 g_strfreev(str); 472 g_strfreev(str);
458 473
459 - v3270_color_scheme_set_rgba(widget,clr);  
460 -  
461 } 474 }
462 475
463 int v3270_color_scheme_get_rgba(GtkWidget *widget, GdkRGBA *colors, size_t num_colors) 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,34 +43,6 @@
43 return errno = EINVAL; 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 lib3270_trace_event(v3270_get_session(widget),"print action activated (type=%d)",(int) mode); 46 lib3270_trace_event(v3270_get_session(widget),"print action activated (type=%d)",(int) mode);
75 47
76 // Print operation. 48 // Print operation.
src/dialogs/print/print.c
@@ -235,3 +235,35 @@ GtkPrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT @@ -235,3 +235,35 @@ GtkPrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT
235 return GTK_PRINT_OPERATION(operation); 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,6 +238,10 @@
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); 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 G_GNUC_INTERNAL void IO_source_set_state(GSource *source, gboolean enable); 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 G_END_DECLS 245 G_END_DECLS
242 246
243 #endif // V3270_INTERNALS_H_INCLUDED 247 #endif // V3270_INTERNALS_H_INCLUDED
src/include/v3270/print.h
@@ -64,9 +64,16 @@ @@ -64,9 +64,16 @@
64 64
65 LIB3270_EXPORT GType V3270PrintOperation_get_type(void); 65 LIB3270_EXPORT GType V3270PrintOperation_get_type(void);
66 LIB3270_EXPORT GtkPrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode); 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 LIB3270_EXPORT void v3270_print_operation_apply_settings(GtkPrintOperation *operation, GtkWidget *settings); 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 LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active); 77 LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active);
71 78
72 LIB3270_EXPORT GtkWidget * v3270_font_selection_new(const gchar *fontname); 79 LIB3270_EXPORT GtkWidget * v3270_font_selection_new(const gchar *fontname);