Commit ec856af7de54330f806d5f8eebaa21352c0d5aa1
1 parent
6e1059e2
Exists in
master
and in
1 other branch
Refactoring print settings dialog.
Showing
9 changed files
with
312 additions
and
167 deletions
Show diff stats
src/dialogs/fontselect.c
@@ -84,3 +84,46 @@ | @@ -84,3 +84,46 @@ | ||
84 | return widget; | 84 | return widget; |
85 | } | 85 | } |
86 | 86 | ||
87 | + LIB3270_EXPORT gboolean v3270_font_selection_set_family(GtkWidget *widget, const gchar *fontname) | ||
88 | + { | ||
89 | + GtkTreeModel * model = gtk_combo_box_get_model(GTK_COMBO_BOX(widget)); | ||
90 | + GtkTreeIter iter; | ||
91 | + | ||
92 | + if(gtk_tree_model_get_iter_first(model,&iter)) | ||
93 | + { | ||
94 | + do | ||
95 | + { | ||
96 | + GValue value = { 0, }; | ||
97 | + | ||
98 | + gtk_tree_model_get_value(model,&iter,0,&value); | ||
99 | + | ||
100 | + if(!g_ascii_strcasecmp(fontname,g_value_get_string(&value))) | ||
101 | + { | ||
102 | + gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widget),&iter); | ||
103 | + return TRUE; | ||
104 | + } | ||
105 | + | ||
106 | + } while(gtk_tree_model_iter_next(model,&iter)); | ||
107 | + } | ||
108 | + | ||
109 | + return FALSE; | ||
110 | + | ||
111 | + } | ||
112 | + | ||
113 | + LIB3270_EXPORT const gchar * v3270_font_selection_get_family(GtkWidget *widget) | ||
114 | + { | ||
115 | + GtkTreeIter iter; | ||
116 | + | ||
117 | + if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget),&iter)) | ||
118 | + { | ||
119 | + GValue value = { 0, }; | ||
120 | + | ||
121 | + gtk_tree_model_get_value(gtk_combo_box_get_model(GTK_COMBO_BOX(widget)),&iter,0,&value); | ||
122 | + return g_value_get_string(&value); | ||
123 | + | ||
124 | + } | ||
125 | + | ||
126 | + return "monospace"; | ||
127 | + | ||
128 | + } | ||
129 | + |
src/dialogs/print/begin.c
@@ -38,8 +38,11 @@ | @@ -38,8 +38,11 @@ | ||
38 | 38 | ||
39 | trace("%s",__FUNCTION__); | 39 | trace("%s",__FUNCTION__); |
40 | 40 | ||
41 | + // Setup options. | ||
42 | + operation->show_selection = v3270_print_settings_get_show_selection(GTK_WIDGET(operation->settings)); | ||
43 | + | ||
41 | // Setup FONT | 44 | // Setup FONT |
42 | - PangoFontDescription * fontDescription = pango_font_description_from_string(operation->font.name); | 45 | + PangoFontDescription * fontDescription = pango_font_description_from_string(v3270_font_selection_get_family(operation->settings->font)); |
43 | 46 | ||
44 | cairo_select_font_face( | 47 | cairo_select_font_face( |
45 | cr, | 48 | cr, |
src/dialogs/print/custom.c
@@ -1,144 +0,0 @@ | @@ -1,144 +0,0 @@ | ||
1 | -/* | ||
2 | - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | - * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | - * | ||
6 | - * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | - * | ||
8 | - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | - * Free Software Foundation. | ||
11 | - * | ||
12 | - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | - * obter mais detalhes. | ||
16 | - * | ||
17 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
19 | - * St, Fifth Floor, Boston, MA 02110-1301 USA | ||
20 | - * | ||
21 | - * Este programa está nomeado como - e possui - linhas de código. | ||
22 | - * | ||
23 | - * Contatos: | ||
24 | - * | ||
25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | - * | ||
28 | - */ | ||
29 | - | ||
30 | - #include "private.h" | ||
31 | - #include <sys/param.h> | ||
32 | - #include <terminal.h> | ||
33 | - #include <v3270/colorscheme.h> | ||
34 | - #include <lib3270/selection.h> | ||
35 | - | ||
36 | -/*--[ Implement ]------------------------------------------------------------------------------------*/ | ||
37 | - | ||
38 | -#ifndef _WIN32 | ||
39 | - static void color_scheme_changed(GtkWidget G_GNUC_UNUSED(*widget), const GdkRGBA *colors, V3270PrintOperation *operation) { | ||
40 | - | ||
41 | - debug("%s=%p",__FUNCTION__,colors); | ||
42 | - | ||
43 | - int f; | ||
44 | - for(f=0;f<V3270_COLOR_COUNT;f++) | ||
45 | - operation->colors[f] = colors[f]; | ||
46 | - | ||
47 | - } | ||
48 | - | ||
49 | - static void font_name_changed(GtkComboBox *widget, V3270PrintOperation *operation) | ||
50 | - { | ||
51 | - GValue value = { 0, }; | ||
52 | - GtkTreeIter iter; | ||
53 | - | ||
54 | - if(!gtk_combo_box_get_active_iter(widget,&iter)) | ||
55 | - return; | ||
56 | - | ||
57 | - gtk_tree_model_get_value(gtk_combo_box_get_model(widget),&iter,0,&value); | ||
58 | - | ||
59 | - g_free(operation->font.name); | ||
60 | - operation->font.name = g_value_dup_string(&value); | ||
61 | - | ||
62 | - debug("%s=%s",__FUNCTION__,operation->font.name); | ||
63 | - } | ||
64 | - | ||
65 | - static void toggle_show_selection(GtkToggleButton *widget, V3270PrintOperation *operation) | ||
66 | - { | ||
67 | - operation->show_selection = gtk_toggle_button_get_active(widget); | ||
68 | - } | ||
69 | - | ||
70 | - GtkWidget * V3270PrintOperation_custom_widget_new(GtkPrintOperation *prt) | ||
71 | - { | ||
72 | - static const gchar * text[] = | ||
73 | - { | ||
74 | - N_( "_Font:" ), | ||
75 | - N_( "C_olor scheme:" ) | ||
76 | - }; | ||
77 | - | ||
78 | - size_t f; | ||
79 | - | ||
80 | - V3270PrintOperation * operation = GTK_V3270_PRINT_OPERATION(prt); | ||
81 | - | ||
82 | - if(operation->widget) | ||
83 | - g_signal_emit(operation->widget, v3270_widget_signal[V3270_SIGNAL_PRINT_SETUP], 0, prt); | ||
84 | - | ||
85 | - // Create dialog | ||
86 | - | ||
87 | - GtkWidget * frame = gtk_frame_new(""); | ||
88 | - GtkGrid * grid = GTK_GRID(gtk_grid_new()); | ||
89 | - GtkWidget * font = v3270_font_selection_new(operation->font.name); | ||
90 | - GtkWidget * color = v3270_color_scheme_new(); | ||
91 | - GtkWidget * selected = gtk_check_button_new_with_label( _("Print selection box") ); | ||
92 | - | ||
93 | - // The print dialog doesn't follow the guidelines from https://developer.gnome.org/hig/stable/visual-layout.html.en )-: | ||
94 | - | ||
95 | - gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_NONE); | ||
96 | - | ||
97 | - GtkWidget *label = gtk_label_new(NULL); | ||
98 | - | ||
99 | - gtk_label_set_markup(GTK_LABEL(label),_("<b>Text options</b>")); | ||
100 | - gtk_frame_set_label_widget(GTK_FRAME(frame),label); | ||
101 | - | ||
102 | - gtk_container_set_border_width(GTK_CONTAINER(frame),12); | ||
103 | - | ||
104 | - gtk_container_set_border_width(GTK_CONTAINER(grid),6); | ||
105 | - | ||
106 | - g_object_set(G_OBJECT(grid),"margin-start",8,NULL); | ||
107 | - | ||
108 | - gtk_grid_set_row_spacing(grid,6); | ||
109 | - gtk_grid_set_column_spacing(grid,12); | ||
110 | - | ||
111 | - v3270_color_scheme_set_rgba(color,operation->colors); | ||
112 | - g_signal_connect(G_OBJECT(color),"update-colors",G_CALLBACK(color_scheme_changed),operation); | ||
113 | - g_signal_connect(G_OBJECT(font),"changed",G_CALLBACK(font_name_changed),operation); | ||
114 | - g_signal_connect(G_OBJECT(selected),"toggled",G_CALLBACK(toggle_show_selection),operation); | ||
115 | - | ||
116 | - for(f=0;f<G_N_ELEMENTS(text);f++) | ||
117 | - { | ||
118 | - GtkWidget *label = gtk_label_new_with_mnemonic(gettext(text[f])); | ||
119 | - gtk_widget_set_halign(label,GTK_ALIGN_START); | ||
120 | - gtk_grid_attach(grid,label,0,f,1,1); | ||
121 | - } | ||
122 | - | ||
123 | - gtk_grid_attach(grid,font,1,0,1,1); | ||
124 | - gtk_grid_attach(grid,color,1,1,1,1); | ||
125 | - gtk_grid_attach(grid,selected,1,2,1,1); | ||
126 | - | ||
127 | - gtk_container_add(GTK_CONTAINER(frame),GTK_WIDGET(grid)); | ||
128 | - | ||
129 | - gtk_widget_show_all(GTK_WIDGET(frame)); | ||
130 | - return frame; | ||
131 | - } | ||
132 | - | ||
133 | - void V3270PrintOperation_custom_widget_apply(GtkPrintOperation *prt, GtkWidget G_GNUC_UNUSED(*widget)) | ||
134 | - { | ||
135 | - V3270PrintOperation * operation = GTK_V3270_PRINT_OPERATION(prt); | ||
136 | - | ||
137 | - debug("%s",__FUNCTION__); | ||
138 | - | ||
139 | - if(operation->widget) | ||
140 | - g_signal_emit(operation->widget, v3270_widget_signal[V3270_SIGNAL_PRINT_APPLY], 0, prt); | ||
141 | - | ||
142 | - } | ||
143 | - | ||
144 | -#endif // _WIN32 |
src/dialogs/print/draw.c
@@ -83,7 +83,7 @@ | @@ -83,7 +83,7 @@ | ||
83 | rect.width = operation->font.info.width; | 83 | rect.width = operation->font.info.width; |
84 | 84 | ||
85 | // Clear drawing area. | 85 | // Clear drawing area. |
86 | - gdk_cairo_set_source_rgba(cr,operation->colors + V3270_COLOR_BACKGROUND); | 86 | + gdk_cairo_set_source_rgba(cr,operation->settings->colors + V3270_COLOR_BACKGROUND); |
87 | cairo_rectangle( | 87 | cairo_rectangle( |
88 | cr, | 88 | cr, |
89 | operation->font.info.left-1,0, | 89 | operation->font.info.left-1,0, |
@@ -132,7 +132,7 @@ | @@ -132,7 +132,7 @@ | ||
132 | operation->session, | 132 | operation->session, |
133 | &operation->font.info, | 133 | &operation->font.info, |
134 | &rect, | 134 | &rect, |
135 | - operation->colors | 135 | + operation->settings->colors |
136 | ); | 136 | ); |
137 | 137 | ||
138 | } | 138 | } |
src/dialogs/print/print.c
@@ -36,12 +36,39 @@ | @@ -36,12 +36,39 @@ | ||
36 | 36 | ||
37 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 37 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
38 | 38 | ||
39 | + | ||
39 | static void done(GtkPrintOperation *prt, GtkPrintOperationResult result) | 40 | static void done(GtkPrintOperation *prt, GtkPrintOperationResult result) |
40 | { | 41 | { |
41 | V3270PrintOperation * operation = GTK_V3270_PRINT_OPERATION(prt); | 42 | V3270PrintOperation * operation = GTK_V3270_PRINT_OPERATION(prt); |
42 | 43 | ||
43 | debug("%s",__FUNCTION__); | 44 | debug("%s",__FUNCTION__); |
44 | 45 | ||
46 | + if(result == GTK_PRINT_OPERATION_RESULT_ERROR) | ||
47 | + { | ||
48 | + GError * err = NULL; | ||
49 | + | ||
50 | + gtk_print_operation_get_error(prt,&err); | ||
51 | + | ||
52 | + GtkWidget *dialog = gtk_message_dialog_new_with_markup( | ||
53 | + GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(operation->widget))), | ||
54 | + GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, | ||
55 | + GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE, | ||
56 | + "%s",_( "Print operation failed" ) | ||
57 | + ); | ||
58 | + | ||
59 | + g_warning("%s",err->message); | ||
60 | + | ||
61 | + gtk_window_set_title(GTK_WINDOW(dialog),_("Error")); | ||
62 | + | ||
63 | + gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",err->message); | ||
64 | + | ||
65 | + gtk_dialog_run(GTK_DIALOG(dialog)); | ||
66 | + gtk_widget_destroy(dialog); | ||
67 | + | ||
68 | + g_error_free(err); | ||
69 | + | ||
70 | + } | ||
71 | + | ||
45 | if(operation->widget) | 72 | if(operation->widget) |
46 | g_signal_emit(GTK_WIDGET(operation->widget), v3270_widget_signal[V3270_SIGNAL_PRINT_DONE], 0, prt, (guint) result); | 73 | g_signal_emit(GTK_WIDGET(operation->widget), v3270_widget_signal[V3270_SIGNAL_PRINT_DONE], 0, prt, (guint) result); |
47 | 74 | ||
@@ -53,10 +80,18 @@ | @@ -53,10 +80,18 @@ | ||
53 | 80 | ||
54 | V3270PrintOperation * operation = GTK_V3270_PRINT_OPERATION(object); | 81 | V3270PrintOperation * operation = GTK_V3270_PRINT_OPERATION(object); |
55 | 82 | ||
83 | + /* | ||
84 | + if(operation->settings) | ||
85 | + { | ||
86 | + gtk_widget_destroy(GTK_WIDGET(operation->settings)); | ||
87 | + operation->settings = NULL; | ||
88 | + } | ||
89 | + */ | ||
90 | + | ||
56 | if(operation->font.info.scaled) | 91 | if(operation->font.info.scaled) |
57 | cairo_scaled_font_destroy(operation->font.info.scaled); | 92 | cairo_scaled_font_destroy(operation->font.info.scaled); |
58 | 93 | ||
59 | - g_free(operation->font.name); | 94 | +// g_free(operation->font.name); |
60 | 95 | ||
61 | if(operation->contents.dynamic) | 96 | if(operation->contents.dynamic) |
62 | { | 97 | { |
@@ -67,20 +102,33 @@ | @@ -67,20 +102,33 @@ | ||
67 | 102 | ||
68 | G_OBJECT_CLASS(V3270PrintOperation_parent_class)->dispose(object); | 103 | G_OBJECT_CLASS(V3270PrintOperation_parent_class)->dispose(object); |
69 | 104 | ||
105 | + | ||
106 | + } | ||
107 | + | ||
108 | +#ifndef _WIN32 | ||
109 | + static GtkWidget * custom_widget_new(GtkPrintOperation *prt) | ||
110 | + { | ||
111 | + return GTK_WIDGET(GTK_V3270_PRINT_OPERATION(prt)->settings); | ||
70 | } | 112 | } |
71 | 113 | ||
114 | + static void custom_widget_apply(GtkPrintOperation *prt, GtkWidget *widget) | ||
115 | + { | ||
116 | + | ||
117 | + } | ||
118 | +#endif // _WIN32 | ||
119 | + | ||
72 | static void V3270PrintOperation_class_init(V3270PrintOperationClass *klass) | 120 | static void V3270PrintOperation_class_init(V3270PrintOperationClass *klass) |
73 | { | 121 | { |
74 | GtkPrintOperationClass * operation = GTK_PRINT_OPERATION_CLASS(klass); | 122 | GtkPrintOperationClass * operation = GTK_PRINT_OPERATION_CLASS(klass); |
75 | 123 | ||
76 | G_OBJECT_CLASS(klass)->dispose = dispose; | 124 | G_OBJECT_CLASS(klass)->dispose = dispose; |
77 | - operation->done = done; | ||
78 | - operation->begin_print = V3270PrintOperation_begin_print; | ||
79 | - operation->draw_page = V3270PrintOperation_draw_page; | 125 | + operation->done = done; |
126 | + operation->begin_print = V3270PrintOperation_begin_print; | ||
127 | + operation->draw_page = V3270PrintOperation_draw_page; | ||
80 | 128 | ||
81 | #ifndef _WIN32 | 129 | #ifndef _WIN32 |
82 | - operation->create_custom_widget = V3270PrintOperation_custom_widget_new; | ||
83 | - operation->custom_widget_apply = V3270PrintOperation_custom_widget_apply; | 130 | + operation->create_custom_widget = custom_widget_new; |
131 | + operation->custom_widget_apply = custom_widget_apply; | ||
84 | #endif // _WIN32 | 132 | #endif // _WIN32 |
85 | 133 | ||
86 | } | 134 | } |
@@ -95,9 +143,8 @@ | @@ -95,9 +143,8 @@ | ||
95 | 143 | ||
96 | // Setup defaults | 144 | // Setup defaults |
97 | widget->mode = LIB3270_CONTENT_ALL; | 145 | widget->mode = LIB3270_CONTENT_ALL; |
98 | - widget->show_selection = FALSE; | ||
99 | - widget->font.name = NULL; // g_strdup(v3270_default_font); | ||
100 | - v3270_set_mono_color_table(widget->colors,"#000000","#FFFFFF"); | 146 | +// widget->show_selection = FALSE; |
147 | +// widget->font.name = NULL; // g_strdup(v3270_default_font); | ||
101 | 148 | ||
102 | } | 149 | } |
103 | 150 | ||
@@ -110,7 +157,7 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTE | @@ -110,7 +157,7 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTE | ||
110 | operation->mode = mode; | 157 | operation->mode = mode; |
111 | operation->widget = GTK_V3270(widget); | 158 | operation->widget = GTK_V3270(widget); |
112 | operation->session = v3270_get_session(widget); | 159 | operation->session = v3270_get_session(widget); |
113 | - operation->font.name = g_strdup(v3270_get_font_family(widget)); | 160 | + operation->settings = V3270_print_settings_new(widget); |
114 | 161 | ||
115 | // Get contents. | 162 | // Get contents. |
116 | switch(operation->mode) | 163 | switch(operation->mode) |
@@ -141,6 +188,9 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTE | @@ -141,6 +188,9 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTE | ||
141 | { | 188 | { |
142 | const lib3270_selection * selection = (const lib3270_selection *) element->data; | 189 | const lib3270_selection * selection = (const lib3270_selection *) element->data; |
143 | 190 | ||
191 | + if(!selection) | ||
192 | + break; | ||
193 | + | ||
144 | if(selection->bounds.width > operation->contents.width) | 194 | if(selection->bounds.width > operation->contents.width) |
145 | operation->contents.width = selection->bounds.width; | 195 | operation->contents.width = selection->bounds.width; |
146 | 196 |
src/dialogs/print/private.h
@@ -49,14 +49,15 @@ | @@ -49,14 +49,15 @@ | ||
49 | struct _V3270PrintOperation | 49 | struct _V3270PrintOperation |
50 | { | 50 | { |
51 | GtkPrintOperation parent; | 51 | GtkPrintOperation parent; |
52 | - GdkRGBA colors[V3270_COLOR_COUNT]; | ||
53 | LIB3270_CONTENT_OPTION mode; | 52 | LIB3270_CONTENT_OPTION mode; |
54 | v3270 * widget; | 53 | v3270 * widget; |
55 | H3270 * session; | 54 | H3270 * session; |
55 | + gboolean show_selection; ///< @brief Print selection box? | ||
56 | + | ||
57 | + V3270PrintSettings * settings; ///< @brief Custom configuration. | ||
56 | 58 | ||
57 | size_t lpp; ///< @brief Lines per page (in rows). | 59 | size_t lpp; ///< @brief Lines per page (in rows). |
58 | size_t pages; ///< @brief Number of pages. | 60 | size_t pages; ///< @brief Number of pages. |
59 | - gboolean show_selection; ///< @brief Print selection box? | ||
60 | 61 | ||
61 | struct | 62 | struct |
62 | { | 63 | { |
@@ -68,17 +69,32 @@ | @@ -68,17 +69,32 @@ | ||
68 | 69 | ||
69 | struct | 70 | struct |
70 | { | 71 | { |
71 | - gchar * name; | ||
72 | v3270FontInfo info; | 72 | v3270FontInfo info; |
73 | } font; | 73 | } font; |
74 | 74 | ||
75 | }; | 75 | }; |
76 | 76 | ||
77 | + struct _V3270PrintSettingsClass | ||
78 | + { | ||
79 | + GtkFrameClass parent_class; | ||
80 | + | ||
81 | + }; | ||
82 | + | ||
83 | +struct _V3270PrintSettings | ||
84 | + { | ||
85 | + GtkFrame parent; | ||
86 | + GdkRGBA colors[V3270_COLOR_COUNT]; ///< @brief Color scheme for printing. | ||
87 | + | ||
88 | + GtkWidget * font; ///< @brief Font selection widget. | ||
89 | + GtkWidget * color; ///< @brief Color scheme selecting widget. | ||
90 | + GtkWidget * selected; ///< @brief Checkbox. | ||
91 | + | ||
92 | + }; | ||
93 | + | ||
94 | + | ||
77 | /*--[ Prototypes ]-----------------------------------------------------------------------------------*/ | 95 | /*--[ Prototypes ]-----------------------------------------------------------------------------------*/ |
78 | 96 | ||
79 | G_GNUC_INTERNAL void V3270PrintOperation_begin_print(GtkPrintOperation *prt, GtkPrintContext *context); | 97 | G_GNUC_INTERNAL void V3270PrintOperation_begin_print(GtkPrintOperation *prt, GtkPrintContext *context); |
80 | G_GNUC_INTERNAL void V3270PrintOperation_draw_page(GtkPrintOperation *prt, GtkPrintContext *context, gint page); | 98 | G_GNUC_INTERNAL void V3270PrintOperation_draw_page(GtkPrintOperation *prt, GtkPrintContext *context, gint page); |
81 | - G_GNUC_INTERNAL GtkWidget * V3270PrintOperation_custom_widget_new(GtkPrintOperation *prt); | ||
82 | - G_GNUC_INTERNAL void V3270PrintOperation_custom_widget_apply(GtkPrintOperation *prt, GtkWidget *widget); | ||
83 | 99 | ||
84 | 100 |
@@ -0,0 +1,154 @@ | @@ -0,0 +1,154 @@ | ||
1 | +/* | ||
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como - e possui - linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + * | ||
28 | + */ | ||
29 | + | ||
30 | + #include "private.h" | ||
31 | + #include <sys/param.h> | ||
32 | + #include <terminal.h> | ||
33 | + #include <v3270/colorscheme.h> | ||
34 | + #include <lib3270/selection.h> | ||
35 | + | ||
36 | +/*--[ Widget definition ]----------------------------------------------------------------------------*/ | ||
37 | + | ||
38 | + G_DEFINE_TYPE(V3270PrintSettings, V3270PrintSettings, GTK_TYPE_FRAME); | ||
39 | + | ||
40 | +/*--[ Implement ]------------------------------------------------------------------------------------*/ | ||
41 | + | ||
42 | +static void finalize(GObject *object) | ||
43 | + { | ||
44 | + | ||
45 | +// V3270PrintSettings * settings = GTK_V3270_PRINT_SETTINGS(object); | ||
46 | + | ||
47 | + | ||
48 | + G_OBJECT_CLASS(V3270PrintSettings_parent_class)->finalize(object); | ||
49 | + } | ||
50 | + | ||
51 | +static void V3270PrintSettings_class_init(V3270PrintSettingsClass *klass) | ||
52 | +{ | ||
53 | + GObjectClass * gobject_class = G_OBJECT_CLASS(klass); | ||
54 | + | ||
55 | + // Object methods | ||
56 | + gobject_class->finalize = finalize; | ||
57 | + | ||
58 | +} | ||
59 | + | ||
60 | +static void color_scheme_changed(GtkWidget G_GNUC_UNUSED(*widget), const GdkRGBA *colors, V3270PrintSettings *settings) | ||
61 | +{ | ||
62 | + | ||
63 | + debug("%s=%p",__FUNCTION__,colors); | ||
64 | + | ||
65 | + int f; | ||
66 | + for(f=0;f<V3270_COLOR_COUNT;f++) | ||
67 | + settings->colors[f] = colors[f]; | ||
68 | + | ||
69 | +} | ||
70 | + | ||
71 | +static void V3270PrintSettings_init(V3270PrintSettings *widget) | ||
72 | +{ | ||
73 | + static const gchar * text[] = | ||
74 | + { | ||
75 | + N_( "_Font:" ), | ||
76 | + N_( "C_olor scheme:" ) | ||
77 | + }; | ||
78 | + | ||
79 | + size_t f; | ||
80 | + GtkGrid * grid = GTK_GRID(gtk_grid_new()); | ||
81 | + | ||
82 | + widget->font = v3270_font_selection_new("monospace"); | ||
83 | + widget->color = v3270_color_scheme_new(); | ||
84 | + widget->selected = gtk_check_button_new_with_label( _("Print selection box") ); | ||
85 | + | ||
86 | + // The print dialog doesn't follow the guidelines from https://developer.gnome.org/hig/stable/visual-layout.html.en )-: | ||
87 | + gtk_frame_set_shadow_type(GTK_FRAME(widget),GTK_SHADOW_NONE); | ||
88 | + | ||
89 | + GtkWidget *label = gtk_label_new(NULL); | ||
90 | + | ||
91 | + gtk_label_set_markup(GTK_LABEL(label),_("<b>Text options</b>")); | ||
92 | + gtk_frame_set_label_widget(GTK_FRAME(widget),label); | ||
93 | + | ||
94 | + gtk_container_set_border_width(GTK_CONTAINER(widget),12); | ||
95 | + gtk_container_set_border_width(GTK_CONTAINER(grid),6); | ||
96 | + | ||
97 | + g_object_set(G_OBJECT(grid),"margin-start",8,NULL); | ||
98 | + | ||
99 | + gtk_grid_set_row_spacing(grid,6); | ||
100 | + gtk_grid_set_column_spacing(grid,12); | ||
101 | + | ||
102 | + g_signal_connect(G_OBJECT(widget->color),"update-colors",G_CALLBACK(color_scheme_changed),widget); | ||
103 | + // g_signal_connect(G_OBJECT(widget->selected),"toggled",G_CALLBACK(toggle_show_selection),widget); | ||
104 | + | ||
105 | + for(f=0;f<G_N_ELEMENTS(text);f++) | ||
106 | + { | ||
107 | + GtkWidget *label = gtk_label_new_with_mnemonic(gettext(text[f])); | ||
108 | + gtk_widget_set_halign(label,GTK_ALIGN_START); | ||
109 | + gtk_grid_attach(grid,label,0,f,1,1); | ||
110 | + } | ||
111 | + | ||
112 | + gtk_grid_attach(grid,widget->font,1,0,1,1); | ||
113 | + gtk_grid_attach(grid,widget->color,1,1,1,1); | ||
114 | + gtk_grid_attach(grid,widget->selected,1,2,1,1); | ||
115 | + | ||
116 | + gtk_container_add(GTK_CONTAINER(widget),GTK_WIDGET(grid)); | ||
117 | + | ||
118 | + v3270_set_mono_color_table(widget->colors,"#000000","#FFFFFF"); | ||
119 | + v3270_color_scheme_set_rgba(widget->color,widget->colors); | ||
120 | + | ||
121 | + gtk_widget_show_all(GTK_WIDGET(widget)); | ||
122 | + | ||
123 | +} | ||
124 | + | ||
125 | +LIB3270_EXPORT GtkWidget * V3270_print_settings_new(GtkWidget *widget) | ||
126 | +{ | ||
127 | + V3270PrintSettings * settings = GTK_V3270_PRINT_SETTINGS(g_object_new(GTK_TYPE_V3270_PRINT_SETTINGS, NULL)); | ||
128 | + | ||
129 | + v3270_font_selection_set_family(settings->font, v3270_get_font_family(widget)); | ||
130 | + | ||
131 | + return GTK_WIDGET(settings); | ||
132 | + | ||
133 | +} | ||
134 | + | ||
135 | +LIB3270_EXPORT gboolean v3270_print_settings_get_show_selection(GtkWidget *widget) | ||
136 | +{ | ||
137 | + return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(GTK_V3270_PRINT_SETTINGS(widget)->selected)); | ||
138 | +} | ||
139 | + | ||
140 | +LIB3270_EXPORT void v3270_print_settings_set_show_selection(GtkWidget *widget, gboolean is_active) | ||
141 | +{ | ||
142 | + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(GTK_V3270_PRINT_SETTINGS(widget)->selected),is_active); | ||
143 | +} | ||
144 | + | ||
145 | +LIB3270_EXPORT gchar * v3270_print_settings_get_color_scheme(GtkWidget *widget) | ||
146 | +{ | ||
147 | + return v3270_color_scheme_get_text(GTK_V3270_COLOR_SCHEME(GTK_V3270_PRINT_SETTINGS(widget)->color)); | ||
148 | +} | ||
149 | + | ||
150 | +LIB3270_EXPORT void v3270_print_settings_set_color_scheme(GtkWidget *widget, const gchar *colors) | ||
151 | +{ | ||
152 | + v3270_color_scheme_set_text(GTK_V3270_COLOR_SCHEME(GTK_V3270_PRINT_SETTINGS(widget)->color), colors); | ||
153 | +} | ||
154 | + |
src/include/v3270/print.h
@@ -38,7 +38,6 @@ | @@ -38,7 +38,6 @@ | ||
38 | 38 | ||
39 | /*--[ Print Operation ]------------------------------------------------------------------------------*/ | 39 | /*--[ Print Operation ]------------------------------------------------------------------------------*/ |
40 | 40 | ||
41 | - | ||
42 | #define GTK_TYPE_V3270_PRINT_OPERATION (V3270PrintOperation_get_type()) | 41 | #define GTK_TYPE_V3270_PRINT_OPERATION (V3270PrintOperation_get_type()) |
43 | #define GTK_V3270_PRINT_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270_PRINT_OPERATION, V3270PrintOperation)) | 42 | #define GTK_V3270_PRINT_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270_PRINT_OPERATION, V3270PrintOperation)) |
44 | #define GTK_V3270_PRINT_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270_PRINT_OPERATION, V3270PrintOperationClass)) | 43 | #define GTK_V3270_PRINT_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270_PRINT_OPERATION, V3270PrintOperationClass)) |
@@ -49,12 +48,36 @@ | @@ -49,12 +48,36 @@ | ||
49 | typedef struct _V3270PrintOperation V3270PrintOperation; | 48 | typedef struct _V3270PrintOperation V3270PrintOperation; |
50 | typedef struct _V3270PrintOperationClass V3270PrintOperationClass; | 49 | typedef struct _V3270PrintOperationClass V3270PrintOperationClass; |
51 | 50 | ||
51 | +/*--[ Print Settings ]-------------------------------------------------------------------------------*/ | ||
52 | + | ||
53 | + #define GTK_TYPE_V3270_PRINT_SETTINGS (V3270PrintSettings_get_type()) | ||
54 | + #define GTK_V3270_PRINT_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270_PRINT_SETTINGS, V3270PrintSettings)) | ||
55 | + #define GTK_V3270_PRINT_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270_PRINT_SETTINGS, V3270PrintSettingsClass)) | ||
56 | + #define GTK_IS_V3270_PRINT_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_V3270_PRINT_SETTINGS)) | ||
57 | + #define GTK_IS_V3270_PRINT_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270_PRINT_SETTINGS)) | ||
58 | + #define GTK_V3270_PRINT_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270_PRINT_SETTINGS, V3270V3270SettingsClass)) | ||
59 | + | ||
60 | + typedef struct _V3270PrintSettings V3270PrintSettings; | ||
61 | + typedef struct _V3270PrintSettingsClass V3270PrintSettingsClass; | ||
62 | + | ||
52 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ | 63 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
53 | 64 | ||
65 | + LIB3270_EXPORT GType V3270PrintOperation_get_type(void); | ||
54 | LIB3270_EXPORT V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode); | 66 | LIB3270_EXPORT V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode); |
67 | + | ||
55 | LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active); | 68 | LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active); |
69 | + | ||
56 | LIB3270_EXPORT GtkWidget * v3270_font_selection_new(const gchar *fontname); | 70 | LIB3270_EXPORT GtkWidget * v3270_font_selection_new(const gchar *fontname); |
57 | - LIB3270_EXPORT GType V3270PrintOperation_get_type(void); | 71 | + LIB3270_EXPORT gboolean v3270_font_selection_set_family(GtkWidget *widget, const gchar *fontname); |
72 | + LIB3270_EXPORT const gchar * v3270_font_selection_get_family(GtkWidget *widget); | ||
73 | + | ||
74 | + LIB3270_EXPORT GType V3270PrintSettings_get_type(void); | ||
75 | + LIB3270_EXPORT GtkWidget * V3270_print_settings_new(GtkWidget *widget); | ||
76 | + LIB3270_EXPORT gboolean v3270_print_settings_get_show_selection(GtkWidget *widget); | ||
77 | + LIB3270_EXPORT void v3270_print_settings_set_show_selection(GtkWidget *widget, gboolean is_active); | ||
78 | + LIB3270_EXPORT gchar * v3270_print_settings_get_color_scheme(GtkWidget *widget); | ||
79 | + LIB3270_EXPORT void v3270_print_settings_set_color_scheme(GtkWidget *widget, const gchar *colors); | ||
80 | + | ||
58 | 81 | ||
59 | G_END_DECLS | 82 | G_END_DECLS |
60 | 83 |
v3270.cbp
@@ -66,9 +66,6 @@ | @@ -66,9 +66,6 @@ | ||
66 | <Unit filename="src/dialogs/print/convenience.c"> | 66 | <Unit filename="src/dialogs/print/convenience.c"> |
67 | <Option compilerVar="CC" /> | 67 | <Option compilerVar="CC" /> |
68 | </Unit> | 68 | </Unit> |
69 | - <Unit filename="src/dialogs/print/custom.c"> | ||
70 | - <Option compilerVar="CC" /> | ||
71 | - </Unit> | ||
72 | <Unit filename="src/dialogs/print/draw.c"> | 69 | <Unit filename="src/dialogs/print/draw.c"> |
73 | <Option compilerVar="CC" /> | 70 | <Option compilerVar="CC" /> |
74 | </Unit> | 71 | </Unit> |
@@ -76,6 +73,9 @@ | @@ -76,6 +73,9 @@ | ||
76 | <Option compilerVar="CC" /> | 73 | <Option compilerVar="CC" /> |
77 | </Unit> | 74 | </Unit> |
78 | <Unit filename="src/dialogs/print/private.h" /> | 75 | <Unit filename="src/dialogs/print/private.h" /> |
76 | + <Unit filename="src/dialogs/print/settings.c"> | ||
77 | + <Option compilerVar="CC" /> | ||
78 | + </Unit> | ||
79 | <Unit filename="src/dialogs/private.h" /> | 79 | <Unit filename="src/dialogs/private.h" /> |
80 | <Unit filename="src/dialogs/save/convenience.c"> | 80 | <Unit filename="src/dialogs/save/convenience.c"> |
81 | <Option compilerVar="CC" /> | 81 | <Option compilerVar="CC" /> |