Commit 39d44a903f23797ad4949ff51c6e4c1e7257ad5f
1 parent
a3be1d7a
Exists in
master
and in
1 other branch
Improving V3270 test program.
Showing
4 changed files
with
278 additions
and
271 deletions
Show diff stats
... | ... | @@ -0,0 +1,40 @@ |
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. Registro no INPI sob | |
5 | + * o nome G3270. | |
6 | + * | |
7 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
8 | + * | |
9 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
10 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
11 | + * Free Software Foundation. | |
12 | + * | |
13 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
14 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
15 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
16 | + * obter mais detalhes. | |
17 | + * | |
18 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
19 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
20 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
21 | + * | |
22 | + * Este programa está nomeado como - e possui - linhas de código. | |
23 | + * | |
24 | + * Contatos: | |
25 | + * | |
26 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
27 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
28 | + * | |
29 | + */ | |
30 | + | |
31 | +#ifndef PRIVATE_H_INCLUDED | |
32 | + | |
33 | + #define PRIVATE_H_INCLUDED | |
34 | + | |
35 | + #include <config.h> | |
36 | + #include <v3270.h> | |
37 | + | |
38 | + G_GNUC_INTERNAL GtkWidget * create_toolbar(GtkWidget *terminal); | |
39 | + | |
40 | +#endif // PRIVATE_H_INCLUDED | ... | ... |
src/testprogram/testprogram.c
... | ... | @@ -33,7 +33,7 @@ |
33 | 33 | * |
34 | 34 | */ |
35 | 35 | |
36 | - #include <v3270.h> | |
36 | + #include "private.h" | |
37 | 37 | #include <v3270/filetransfer.h> |
38 | 38 | #include <v3270/ftprogress.h> |
39 | 39 | #include <v3270/colorscheme.h> |
... | ... | @@ -43,243 +43,34 @@ |
43 | 43 | |
44 | 44 | /*---[ Implement ]----------------------------------------------------------------------------------*/ |
45 | 45 | |
46 | - /* | |
47 | -static gboolean popup_menu(GtkWidget *widget, G_GNUC_UNUSED gboolean selected, gboolean online, G_GNUC_UNUSED GdkEventButton *event, G_GNUC_UNUSED gpointer user_data) { | |
48 | - | |
49 | - if(!online) | |
50 | - return FALSE; | |
51 | - | |
52 | - GtkWidget * dialog = v3270ft_new(); | |
53 | - | |
54 | - // v3270ft_load(dialog,"transfer.xml"); | |
55 | - | |
56 | - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(widget))); | |
57 | - | |
58 | - do { | |
59 | - | |
60 | - gtk_widget_show_all(dialog); | |
61 | - | |
62 | - switch(gtk_dialog_run(GTK_DIALOG(dialog))) { | |
63 | - case GTK_RESPONSE_APPLY: | |
64 | - case GTK_RESPONSE_OK: | |
65 | - case GTK_RESPONSE_YES: | |
66 | - gtk_widget_hide(dialog); | |
67 | - v3270ft_transfer(dialog,v3270_get_session(widget)); | |
68 | - break; | |
69 | - | |
70 | - case GTK_RESPONSE_CANCEL: | |
71 | - case GTK_RESPONSE_NO: | |
72 | - case GTK_RESPONSE_DELETE_EVENT: | |
73 | - v3270ft_remove_all(dialog); | |
74 | - break; | |
75 | - | |
76 | - default: | |
77 | - g_warning("Unexpected response from v3270ft"); | |
78 | - } | |
79 | - | |
80 | - } while(v3270ft_get_length(dialog) > 0); | |
81 | - | |
82 | - gtk_widget_destroy(dialog); | |
83 | - | |
84 | - return TRUE; | |
85 | - | |
86 | -} | |
87 | - */ | |
88 | - | |
89 | - /* | |
90 | - static gboolean field_clicked(GtkWidget *widget, gboolean connected, V3270_OIA_FIELD field, GdkEventButton *event, GtkWidget *window) | |
91 | - { | |
92 | - trace("%s: %s field=%d event=%p window=%p",__FUNCTION__,connected ? "Connected" : "Disconnected", field, event, window); | |
93 | - | |
94 | - if(!connected) | |
95 | - return FALSE; | |
96 | - | |
97 | - if(field == V3270_OIA_SSL) | |
98 | - { | |
99 | - v3270_popup_security_dialog(widget); | |
100 | - trace("%s: Show SSL connection info dialog",__FUNCTION__); | |
101 | - return TRUE; | |
102 | - } | |
103 | - | |
104 | - | |
105 | - return FALSE; | |
46 | + static void toggle_ds_trace(GtkToggleButton *button, GtkWidget *terminal) { | |
47 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_DS_TRACE,gtk_toggle_button_get_active(button)); | |
106 | 48 | } |
107 | - */ | |
108 | - | |
109 | - /* | |
110 | -static void trace_window_destroy(G_GNUC_UNUSED GtkWidget *widget, H3270 *hSession) { | |
111 | - lib3270_set_toggle(hSession,LIB3270_TOGGLE_DS_TRACE,0); | |
112 | - lib3270_set_toggle(hSession,LIB3270_TOGGLE_SCREEN_TRACE,0); | |
113 | - lib3270_set_toggle(hSession,LIB3270_TOGGLE_EVENT_TRACE,0); | |
114 | - lib3270_set_toggle(hSession,LIB3270_TOGGLE_NETWORK_TRACE,0); | |
115 | - lib3270_set_toggle(hSession,LIB3270_TOGGLE_SSL_TRACE,0); | |
116 | -} | |
117 | -*/ | |
118 | - | |
119 | - | |
120 | -/* | |
121 | -static void color_scheme_changed(GtkWidget G_GNUC_UNUSED(*widget), const GdkRGBA *colors, GtkWidget *terminal) { | |
122 | - | |
123 | - debug("%s=%p",__FUNCTION__,colors); | |
124 | - | |
125 | - int f; | |
126 | - for(f=0;f<V3270_COLOR_COUNT;f++) | |
127 | - v3270_set_color(terminal,f,colors+f); | |
128 | - | |
129 | - v3270_reload(terminal); | |
130 | - gtk_widget_queue_draw(terminal); | |
131 | - | |
132 | -} | |
133 | -*/ | |
134 | - | |
135 | -static void print_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
136 | -{ | |
137 | - lib3270_print_all(v3270_get_session(terminal)); | |
138 | -} | |
139 | - | |
140 | -static void host_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
141 | -{ | |
142 | - v3270_select_host(terminal); | |
143 | -} | |
144 | 49 | |
145 | -static void connect_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
146 | -{ | |
147 | - lib3270_reconnect(v3270_get_session(terminal),0); | |
148 | -} | |
149 | - | |
150 | -static void disconnect_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
151 | -{ | |
152 | - lib3270_disconnect(v3270_get_session(terminal)); | |
153 | -} | |
154 | - | |
155 | -static void ft_clicked(GtkButton *button, GtkWidget *terminal) | |
156 | -{ | |
157 | - /* | |
158 | - GtkWidget * dialog = v3270_dialog_new(terminal, _("test"), _("test")); | |
159 | - GtkWidget * trace = v3270_trace_new(terminal); | |
160 | - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),trace,TRUE,TRUE,2); | |
161 | - */ | |
162 | - | |
163 | - | |
164 | - /* | |
165 | - // | |
166 | - // Test transfer dialog. | |
167 | - // | |
168 | - v3270_transfer_file( | |
169 | - terminal, | |
170 | - LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_REMAP, | |
171 | - "/tmp/test.txt", | |
172 | - "remote_file", | |
173 | - 0, | |
174 | - 0, | |
175 | - 0, | |
176 | - 0, | |
177 | - 4096 | |
178 | - ); | |
179 | - */ | |
180 | - | |
181 | - /* | |
182 | - // | |
183 | - // Test activity | |
184 | - // | |
185 | - GObject * activity = v3270_ft_activity_new(); | |
186 | - debug("Activity %p is %s",activity,(g_object_is_floating(activity) ? "floating" : "non floating")); | |
187 | - v3270_ft_activity_set_local_filename(activity,"/tmp/test.txt"); | |
188 | - v3270_ft_activity_set_remote_filename(activity,"remote_file"); | |
189 | - v3270_ft_activity_set_options(activity,LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_REMAP); | |
190 | - */ | |
191 | - | |
192 | - // | |
193 | - // Test settings dialog | |
194 | - // | |
195 | - // GtkWidget * dialog = v3270_ft_settings_dialog_new(terminal); | |
196 | - // v3270_ft_settings_dialog_append_activity(dialog,activity,NULL); | |
197 | - | |
198 | - // | |
199 | - // V5.1 dialog | |
200 | - // | |
201 | - GtkWidget *dialog = v3270ft_new(GTK_WIDGET(button)); | |
202 | - | |
203 | - /* | |
204 | - // | |
205 | - // Test worker widget | |
206 | - // | |
207 | - GtkWidget * dialog = v3270_dialog_new(terminal, _("test"), _("test")); | |
208 | - GtkWidget * worker = v3270_ft_worker_new(); | |
209 | - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),worker,TRUE,TRUE,2); | |
210 | - v3270_ft_worker_set_session(worker,v3270_get_session(terminal)); | |
211 | - v3270_ft_worker_set_activity(worker,activity); | |
212 | - v3270_ft_worker_start(worker); | |
213 | - */ | |
214 | - | |
215 | - gtk_widget_show_all(dialog); | |
216 | - gtk_dialog_run(GTK_DIALOG(dialog)); | |
217 | - gtk_widget_destroy(dialog); | |
218 | - | |
219 | -} | |
220 | - | |
221 | -static void paste_clicked(GtkButton *button, GtkWidget *terminal) | |
222 | -{ | |
223 | - v3270_paste(terminal); | |
224 | -} | |
225 | - | |
226 | -static void copy_clicked(GtkButton *button, GtkWidget *terminal) | |
227 | -{ | |
228 | - v3270_copy_selection(terminal,V3270_SELECT_TEXT,FALSE); | |
229 | -} | |
230 | - | |
231 | -static void color_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
232 | -{ | |
233 | - GtkWidget * dialog = v3270_dialog_new(terminal, _("Color setup"), _("_Save")); | |
234 | - GtkWidget * colors = v3270_color_selection_new(terminal); | |
235 | - | |
236 | - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),colors,TRUE,TRUE,2); | |
237 | - | |
238 | - gtk_widget_show_all(dialog); | |
239 | - | |
240 | - if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) | |
241 | - { | |
242 | - g_message("Accepted"); | |
243 | - } | |
244 | - else | |
245 | - { | |
246 | - g_message("Cancel"); | |
247 | - v3270_color_selection_reset(colors); | |
248 | - } | |
249 | - | |
250 | - gtk_widget_destroy(dialog); | |
251 | - | |
252 | - | |
253 | -} | |
254 | - | |
255 | -static void toggle_ds_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
256 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_DS_TRACE,gtk_toggle_tool_button_get_active(button)); | |
257 | -} | |
50 | + static void toggle_event_trace(GtkToggleButton *button, GtkWidget *terminal) { | |
51 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_EVENT_TRACE,gtk_toggle_button_get_active(button)); | |
52 | + } | |
258 | 53 | |
259 | -static void toggle_event_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
260 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_EVENT_TRACE,gtk_toggle_tool_button_get_active(button)); | |
261 | -} | |
54 | + static void toggle_ssl_trace(GtkToggleButton *button, GtkWidget *terminal) { | |
55 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_SSL_TRACE,gtk_toggle_button_get_active(button)); | |
56 | + } | |
262 | 57 | |
263 | -static void toggle_ssl_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
264 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_SSL_TRACE,gtk_toggle_tool_button_get_active(button)); | |
265 | -} | |
58 | + static void toggle_screen_trace(GtkToggleButton *button, GtkWidget *terminal) { | |
59 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_SCREEN_TRACE,gtk_toggle_button_get_active(button)); | |
60 | + } | |
266 | 61 | |
267 | -static void toggle_screen_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
268 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_SCREEN_TRACE,gtk_toggle_tool_button_get_active(button)); | |
269 | -} | |
62 | + static GtkWidget * create_toggle_button(GtkWidget *terminal, const gchar *label, const gchar *tooltip, GCallback callback) { | |
270 | 63 | |
271 | -static GtkToolItem * create_tool_item(GtkWidget *terminal, const gchar *label, const gchar *tooltip, GCallback callback) { | |
272 | - GtkToolItem * item = gtk_toggle_tool_button_new(); | |
273 | - gtk_tool_button_set_label(GTK_TOOL_BUTTON(item),label); | |
64 | + GtkWidget * item = gtk_toggle_button_new_with_label(label); | |
274 | 65 | |
275 | - gtk_widget_set_can_focus(GTK_WIDGET(item),FALSE); | |
276 | - gtk_widget_set_can_default(GTK_WIDGET(item),FALSE); | |
277 | - gtk_widget_set_focus_on_click(GTK_WIDGET(item),FALSE); | |
66 | + gtk_widget_set_can_focus(item,FALSE); | |
67 | + gtk_widget_set_can_default(item,FALSE); | |
68 | + gtk_widget_set_focus_on_click(item,FALSE); | |
278 | 69 | |
279 | - g_signal_connect(GTK_WIDGET(item), "toggled", G_CALLBACK(callback), terminal); | |
70 | + g_signal_connect(item, "toggled", G_CALLBACK(callback), terminal); | |
280 | 71 | |
281 | 72 | if(tooltip) |
282 | - gtk_widget_set_tooltip_text(GTK_WIDGET(item),tooltip); | |
73 | + gtk_widget_set_tooltip_text(item,tooltip); | |
283 | 74 | |
284 | 75 | return item; |
285 | 76 | } |
... | ... | @@ -288,63 +79,37 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { |
288 | 79 | |
289 | 80 | GtkWidget * window = gtk_application_window_new(app); |
290 | 81 | GtkWidget * terminal = v3270_new(); |
82 | + GtkWidget * vBox = gtk_box_new(GTK_ORIENTATION_VERTICAL,2); | |
291 | 83 | GtkWidget * notebook = gtk_notebook_new(); |
292 | - size_t f; | |
84 | + | |
85 | + gtk_box_pack_start(GTK_BOX(vBox),create_toolbar(terminal),FALSE,TRUE,0); | |
86 | + gtk_box_pack_start(GTK_BOX(vBox),notebook,TRUE,TRUE,0); | |
293 | 87 | |
294 | 88 | // Create Terminal window |
295 | 89 | { |
296 | - GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL,2); | |
297 | - | |
298 | - // https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html | |
299 | - static const struct _buttons { | |
300 | - const gchar * icon; | |
301 | - GCallback callback; | |
302 | - const gchar * tooltip; | |
303 | - } buttons[] = { | |
304 | - { "gtk-connect", G_CALLBACK(connect_clicked), "Connect to host" }, | |
305 | - { "gtk-disconnect", G_CALLBACK(disconnect_clicked), "Disconnect from host" }, | |
306 | - { "gtk-select-color", G_CALLBACK(color_clicked), "Edit or change color scheme" }, | |
307 | - { "gtk-home", G_CALLBACK(host_clicked), "Configure host" }, | |
308 | - { "gtk-print", G_CALLBACK(print_clicked), "Print screen contents" }, | |
309 | - { "gtk-harddisk", G_CALLBACK(ft_clicked), "Open file transfer dialog" }, | |
310 | - { "gtk-copy", G_CALLBACK(copy_clicked), "Copy data" }, | |
311 | - { "gtk-paste", G_CALLBACK(paste_clicked), "Paste data" } | |
312 | - }; | |
313 | - | |
314 | - GtkWidget * toolbar = gtk_toolbar_new(); | |
315 | - for(f = 0; f < G_N_ELEMENTS(buttons); f++) | |
316 | - { | |
317 | - GtkWidget * button = GTK_WIDGET(gtk_tool_button_new_from_stock(buttons[f].icon)); | |
318 | - gtk_widget_set_tooltip_markup(button,buttons[f].tooltip); | |
319 | - g_signal_connect(G_OBJECT(button),"clicked",buttons[f].callback,terminal); | |
320 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(button),-1); | |
321 | - gtk_widget_set_can_focus(button,FALSE); | |
322 | - gtk_widget_set_can_default(button,FALSE); | |
323 | - gtk_widget_set_focus_on_click(button,FALSE); | |
324 | - } | |
325 | - gtk_widget_set_can_focus(toolbar,FALSE); | |
326 | - | |
327 | - gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,TRUE,0); | |
328 | - | |
329 | 90 | gtk_widget_set_can_default(terminal,TRUE); |
330 | 91 | gtk_widget_set_focus_on_click(terminal,TRUE); |
331 | - gtk_box_pack_start(GTK_BOX(box),terminal,TRUE,TRUE,0); | |
332 | 92 | |
333 | - gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Terminal")); | |
93 | + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),terminal,gtk_label_new("Terminal")); | |
94 | + | |
334 | 95 | } |
335 | 96 | |
336 | 97 | // Create trace window |
337 | 98 | { |
338 | - GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0); | |
99 | + GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,8); | |
339 | 100 | GtkWidget * trace = v3270_trace_new(terminal); |
340 | - GtkWidget * toolbar = gtk_toolbar_new(); | |
341 | 101 | |
342 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "DS Trace","Toggle DS Trace",G_CALLBACK(toggle_ds_trace)),-1); | |
343 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Event Trace","Toggle Event Trace",G_CALLBACK(toggle_event_trace)),-1); | |
344 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Screen Trace","Toggle Screen Trace",G_CALLBACK(toggle_screen_trace)),-1); | |
345 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "SSL Trace","Toggle SSL Trace",G_CALLBACK(toggle_ssl_trace)),-1); | |
102 | + GtkWidget * toolbar = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); | |
103 | + gtk_button_box_set_layout(GTK_BUTTON_BOX(toolbar), GTK_BUTTONBOX_START); | |
104 | + gtk_box_set_spacing(GTK_BOX(toolbar),8); | |
105 | + | |
106 | + gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "DS Trace","Toggle DS Trace",G_CALLBACK(toggle_ds_trace)),FALSE,FALSE,4); | |
107 | + gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "Event Trace","Toggle Event Trace",G_CALLBACK(toggle_event_trace)),FALSE,FALSE,4); | |
108 | + gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "Screen Trace","Toggle Screen Trace",G_CALLBACK(toggle_screen_trace)),FALSE,FALSE,4); | |
109 | + gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "SSL Trace","Toggle SSL Trace",G_CALLBACK(toggle_ssl_trace)),FALSE,FALSE,4); | |
346 | 110 | |
347 | 111 | gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0); |
112 | + | |
348 | 113 | gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0); |
349 | 114 | gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace")); |
350 | 115 | } |
... | ... | @@ -352,7 +117,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { |
352 | 117 | // Setup and show main window |
353 | 118 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); |
354 | 119 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); |
355 | - gtk_container_add(GTK_CONTAINER(window),notebook); | |
120 | + gtk_container_add(GTK_CONTAINER(window),vBox); | |
356 | 121 | gtk_widget_show_all(window); |
357 | 122 | |
358 | 123 | gtk_widget_grab_focus(terminal); | ... | ... |
... | ... | @@ -0,0 +1,198 @@ |
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. Registro no INPI sob | |
5 | + * o nome G3270. | |
6 | + * | |
7 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
8 | + * | |
9 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
10 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
11 | + * Free Software Foundation. | |
12 | + * | |
13 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
14 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
15 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
16 | + * obter mais detalhes. | |
17 | + * | |
18 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
19 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
20 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
21 | + * | |
22 | + * Este programa está nomeado como - e possui - linhas de código. | |
23 | + * | |
24 | + * Contatos: | |
25 | + * | |
26 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
27 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
28 | + * | |
29 | + */ | |
30 | + | |
31 | + #include <v3270.h> | |
32 | + #include <v3270/filetransfer.h> | |
33 | + #include <v3270/ftprogress.h> | |
34 | + #include <v3270/colorscheme.h> | |
35 | + #include <v3270/trace.h> | |
36 | + #include <lib3270/log.h> | |
37 | + #include <stdlib.h> | |
38 | + | |
39 | + /*---[ Implement ]----------------------------------------------------------------------------------*/ | |
40 | + | |
41 | + static void print_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
42 | + { | |
43 | + lib3270_print_all(v3270_get_session(terminal)); | |
44 | + } | |
45 | + | |
46 | + static void host_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
47 | + { | |
48 | + v3270_select_host(terminal); | |
49 | + } | |
50 | + | |
51 | + static void connect_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
52 | + { | |
53 | + lib3270_reconnect(v3270_get_session(terminal),0); | |
54 | + } | |
55 | + | |
56 | + static void disconnect_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
57 | + { | |
58 | + lib3270_disconnect(v3270_get_session(terminal)); | |
59 | + } | |
60 | + | |
61 | + static void ft_clicked(GtkButton *button, GtkWidget *terminal) | |
62 | + { | |
63 | + /* | |
64 | + GtkWidget * dialog = v3270_dialog_new(terminal, _("test"), _("test")); | |
65 | + GtkWidget * trace = v3270_trace_new(terminal); | |
66 | + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),trace,TRUE,TRUE,2); | |
67 | + */ | |
68 | + | |
69 | + | |
70 | + /* | |
71 | + // | |
72 | + // Test transfer dialog. | |
73 | + // | |
74 | + v3270_transfer_file( | |
75 | + terminal, | |
76 | + LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_REMAP, | |
77 | + "/tmp/test.txt", | |
78 | + "remote_file", | |
79 | + 0, | |
80 | + 0, | |
81 | + 0, | |
82 | + 0, | |
83 | + 4096 | |
84 | + ); | |
85 | + */ | |
86 | + | |
87 | + /* | |
88 | + // | |
89 | + // Test activity | |
90 | + // | |
91 | + GObject * activity = v3270_ft_activity_new(); | |
92 | + debug("Activity %p is %s",activity,(g_object_is_floating(activity) ? "floating" : "non floating")); | |
93 | + v3270_ft_activity_set_local_filename(activity,"/tmp/test.txt"); | |
94 | + v3270_ft_activity_set_remote_filename(activity,"remote_file"); | |
95 | + v3270_ft_activity_set_options(activity,LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_REMAP); | |
96 | + */ | |
97 | + | |
98 | + // | |
99 | + // Test settings dialog | |
100 | + // | |
101 | + // GtkWidget * dialog = v3270_ft_settings_dialog_new(terminal); | |
102 | + // v3270_ft_settings_dialog_append_activity(dialog,activity,NULL); | |
103 | + | |
104 | + // | |
105 | + // V5.1 dialog | |
106 | + // | |
107 | + GtkWidget *dialog = v3270ft_new(GTK_WIDGET(button)); | |
108 | + | |
109 | + /* | |
110 | + // | |
111 | + // Test worker widget | |
112 | + // | |
113 | + GtkWidget * dialog = v3270_dialog_new(terminal, _("test"), _("test")); | |
114 | + GtkWidget * worker = v3270_ft_worker_new(); | |
115 | + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),worker,TRUE,TRUE,2); | |
116 | + v3270_ft_worker_set_session(worker,v3270_get_session(terminal)); | |
117 | + v3270_ft_worker_set_activity(worker,activity); | |
118 | + v3270_ft_worker_start(worker); | |
119 | + */ | |
120 | + | |
121 | + gtk_widget_show_all(dialog); | |
122 | + gtk_dialog_run(GTK_DIALOG(dialog)); | |
123 | + gtk_widget_destroy(dialog); | |
124 | + | |
125 | + } | |
126 | + | |
127 | + static void paste_clicked(GtkButton *button, GtkWidget *terminal) | |
128 | + { | |
129 | + v3270_paste(terminal); | |
130 | + } | |
131 | + | |
132 | + static void copy_clicked(GtkButton *button, GtkWidget *terminal) | |
133 | + { | |
134 | + v3270_copy_selection(terminal,V3270_SELECT_TEXT,FALSE); | |
135 | + } | |
136 | + | |
137 | + static void color_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
138 | + { | |
139 | + GtkWidget * dialog = v3270_dialog_new(terminal, _("Color setup"), _("_Save")); | |
140 | + GtkWidget * colors = v3270_color_selection_new(terminal); | |
141 | + | |
142 | + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),colors,TRUE,TRUE,2); | |
143 | + | |
144 | + gtk_widget_show_all(dialog); | |
145 | + | |
146 | + if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) | |
147 | + { | |
148 | + g_message("Accepted"); | |
149 | + } | |
150 | + else | |
151 | + { | |
152 | + g_message("Cancel"); | |
153 | + v3270_color_selection_reset(colors); | |
154 | + } | |
155 | + | |
156 | + gtk_widget_destroy(dialog); | |
157 | + | |
158 | + | |
159 | + } | |
160 | + | |
161 | + GtkWidget * create_toolbar(GtkWidget *terminal) { | |
162 | + | |
163 | + size_t f; | |
164 | + | |
165 | + // https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html | |
166 | + static const struct _buttons { | |
167 | + const gchar * icon; | |
168 | + GCallback callback; | |
169 | + const gchar * tooltip; | |
170 | + } buttons[] = { | |
171 | + { "gtk-connect", G_CALLBACK(connect_clicked), "Connect to host" }, | |
172 | + { "gtk-disconnect", G_CALLBACK(disconnect_clicked), "Disconnect from host" }, | |
173 | + { "gtk-select-color", G_CALLBACK(color_clicked), "Edit or change color scheme" }, | |
174 | + { "gtk-home", G_CALLBACK(host_clicked), "Configure host" }, | |
175 | + { "gtk-print", G_CALLBACK(print_clicked), "Print screen contents" }, | |
176 | + { "gtk-harddisk", G_CALLBACK(ft_clicked), "Open file transfer dialog" }, | |
177 | + { "gtk-copy", G_CALLBACK(copy_clicked), "Copy data" }, | |
178 | + { "gtk-paste", G_CALLBACK(paste_clicked), "Paste data" } | |
179 | + }; | |
180 | + | |
181 | + GtkWidget * toolbar = gtk_toolbar_new(); | |
182 | + for(f = 0; f < G_N_ELEMENTS(buttons); f++) | |
183 | + { | |
184 | + GtkWidget * button = GTK_WIDGET(gtk_tool_button_new_from_stock(buttons[f].icon)); | |
185 | + gtk_widget_set_tooltip_markup(button,buttons[f].tooltip); | |
186 | + g_signal_connect(G_OBJECT(button),"clicked",buttons[f].callback,terminal); | |
187 | + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(button),-1); | |
188 | + gtk_widget_set_can_focus(button,FALSE); | |
189 | + gtk_widget_set_can_default(button,FALSE); | |
190 | + gtk_widget_set_focus_on_click(button,FALSE); | |
191 | + } | |
192 | + gtk_widget_set_can_focus(toolbar,FALSE); | |
193 | + | |
194 | + return toolbar; | |
195 | + | |
196 | + } | |
197 | + | |
198 | + | ... | ... |
v3270.cbp
... | ... | @@ -225,9 +225,13 @@ |
225 | 225 | <Unit filename="src/terminal/windows/resources.rc"> |
226 | 226 | <Option compilerVar="WINDRES" /> |
227 | 227 | </Unit> |
228 | + <Unit filename="src/testprogram/private.h" /> | |
228 | 229 | <Unit filename="src/testprogram/testprogram.c"> |
229 | 230 | <Option compilerVar="CC" /> |
230 | 231 | </Unit> |
232 | + <Unit filename="src/testprogram/toolbar.c"> | |
233 | + <Option compilerVar="CC" /> | |
234 | + </Unit> | |
231 | 235 | <Unit filename="src/trace/exec.c"> |
232 | 236 | <Option compilerVar="CC" /> |
233 | 237 | </Unit> | ... | ... |