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