Commit f9fc1c8dca920233a897b5e52f8266244408ffc1
1 parent
664fb496
Exists in
master
and in
1 other branch
Updating terminal window testprogram.
Showing
2 changed files
with
82 additions
and
112 deletions
Show diff stats
src/terminal/oia.c
... | ... | @@ -288,7 +288,7 @@ static void draw_undera(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGB |
288 | 288 | cairo_stroke(cr); |
289 | 289 | |
290 | 290 | } |
291 | - debug("%s",__FUNCTION__); | |
291 | +// debug("%s",__FUNCTION__); | |
292 | 292 | |
293 | 293 | } |
294 | 294 | |
... | ... | @@ -497,7 +497,7 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo * |
497 | 497 | { |
498 | 498 | rect.x++; |
499 | 499 | |
500 | - debug("%s(%s)",__FUNCTION__,msg); | |
500 | +// debug("%s(%s)",__FUNCTION__,msg); | |
501 | 501 | |
502 | 502 | gdk_cairo_set_source_rgba(cr,color+message[id].color); |
503 | 503 | ... | ... |
src/testprogram/testprogram.c
... | ... | @@ -238,134 +238,104 @@ static void color_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) |
238 | 238 | |
239 | 239 | } |
240 | 240 | |
241 | +static void toggle_ds_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
242 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_DS_TRACE,gtk_toggle_tool_button_get_active(button)); | |
243 | +} | |
241 | 244 | |
242 | -static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { | |
245 | +static void toggle_event_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
246 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_EVENT_TRACE,gtk_toggle_tool_button_get_active(button)); | |
247 | +} | |
243 | 248 | |
244 | - GtkWidget * window = gtk_application_window_new(app); | |
245 | - GtkWidget * terminal = v3270_new(); | |
246 | - GValue val = G_VALUE_INIT; | |
247 | - size_t f; | |
249 | +static void toggle_ssl_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
250 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_SSL_TRACE,gtk_toggle_tool_button_get_active(button)); | |
251 | +} | |
248 | 252 | |
249 | - v3270_set_url(terminal,NULL); | |
250 | - // v3270_set_toggle(terminal,LIB3270_TOGGLE_RECONNECT,TRUE); | |
253 | +static void toggle_screen_trace(GtkToggleToolButton *button, GtkWidget *terminal) { | |
254 | + v3270_set_toggle(terminal,LIB3270_TOGGLE_SCREEN_TRACE,gtk_toggle_tool_button_get_active(button)); | |
255 | +} | |
251 | 256 | |
252 | - // v3270_set_font_family(terminal,"Droid Sans Mono"); | |
253 | - g_signal_connect(terminal,"field_clicked",G_CALLBACK(field_clicked),window); | |
257 | +static GtkToolItem * create_tool_item(GtkWidget *terminal, const gchar *label, const gchar *tooltip, GCallback callback) { | |
258 | + GtkToolItem * item = gtk_toggle_tool_button_new(); | |
259 | + gtk_tool_button_set_label(GTK_TOOL_BUTTON(item),label); | |
254 | 260 | |
255 | - GtkWidget *trace = v3270_trace_window_new(terminal,NULL); | |
256 | - if(trace) { | |
257 | - g_signal_connect(trace, "destroy", G_CALLBACK(trace_window_destroy), v3270_get_session(terminal)); | |
258 | - lib3270_toggle(v3270_get_session(terminal),LIB3270_TOGGLE_SSL_TRACE); | |
259 | - lib3270_toggle(v3270_get_session(terminal),LIB3270_TOGGLE_DS_TRACE); | |
260 | - gtk_widget_show_all(trace); | |
261 | - } | |
261 | + g_signal_connect(GTK_WIDGET(item), "toggled", G_CALLBACK(callback), terminal); | |
262 | 262 | |
263 | - /* | |
264 | - v3270_connect(terminal); | |
265 | - */ | |
263 | + if(tooltip) | |
264 | + gtk_widget_set_tooltip_text(GTK_WIDGET(item),tooltip); | |
266 | 265 | |
267 | - /* | |
268 | - g_value_init (&val, G_TYPE_STRING); | |
269 | - g_value_set_string(&val,url); | |
270 | - g_object_set_property(G_OBJECT(terminal), "url", &val); | |
271 | - g_value_unset(&val); | |
272 | - */ | |
273 | - | |
274 | - g_value_init(&val, G_TYPE_STRING); | |
275 | - g_object_get_property(G_OBJECT(terminal),"url",&val); | |
276 | - g_message("URL=%s",g_value_get_string(&val)); | |
277 | - | |
278 | - gchar * title = g_strdup_printf("%s - %s", v3270_get_session_name(terminal), g_value_get_string(&val)); | |
279 | - gtk_window_set_title(GTK_WINDOW(window), title); | |
280 | - g_free(title); | |
281 | - g_value_unset(&val); | |
282 | - | |
283 | - | |
284 | - g_value_init(&val, G_TYPE_BOOLEAN); | |
285 | - g_object_get_property(G_OBJECT(terminal),"tso",&val); | |
286 | - g_message("TSO=%s",g_value_get_boolean(&val) ? "Yes" : "No"); | |
287 | - g_value_unset(&val); | |
288 | - | |
289 | - g_value_init(&val, G_TYPE_BOOLEAN); | |
290 | - g_object_get_property(G_OBJECT(terminal),"monocase",&val); | |
291 | - g_message("monocase=%s",g_value_get_boolean(&val) ? "Yes" : "No"); | |
292 | - g_value_unset(&val); | |
293 | - | |
294 | - g_value_init(&val, G_TYPE_INT); | |
295 | - g_object_get_property(G_OBJECT(terminal),"width",&val); | |
296 | - g_message("width=%d",(int) g_value_get_int(&val)); | |
297 | - g_value_unset(&val); | |
298 | - | |
299 | - // g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL); | |
300 | - | |
301 | - // Create box | |
302 | - GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL,2); | |
303 | - | |
304 | - // https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html | |
305 | - static const struct _buttons { | |
306 | - const gchar * icon; | |
307 | - GCallback callback; | |
308 | - const gchar * tooltip; | |
309 | - } buttons[] = { | |
310 | - { "gtk-connect", G_CALLBACK(connect_clicked), "Connect to host" }, | |
311 | - { "gtk-disconnect", G_CALLBACK(disconnect_clicked), "Disconnect from host" }, | |
312 | - { "gtk-select-color", G_CALLBACK(color_clicked), "Edit or change color scheme" }, | |
313 | - { "gtk-home", G_CALLBACK(host_clicked), "Configure host" }, | |
314 | - { "gtk-print", G_CALLBACK(print_clicked), "Print screen contents" }, | |
315 | - { "gtk-harddisk", G_CALLBACK(ft_clicked), "Open file transfer dialog" } | |
316 | - }; | |
317 | - | |
318 | - GtkWidget * toolbar = gtk_toolbar_new(); | |
319 | - for(f = 0; f < G_N_ELEMENTS(buttons); f++) | |
320 | - { | |
321 | - GtkWidget * button = GTK_WIDGET(gtk_tool_button_new_from_stock(buttons[f].icon)); | |
322 | - gtk_widget_set_tooltip_markup(button,buttons[f].tooltip); | |
323 | - g_signal_connect(G_OBJECT(button),"clicked",buttons[f].callback,terminal); | |
324 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(button),-1); | |
325 | - } | |
266 | + return item; | |
267 | +} | |
326 | 268 | |
327 | - /* | |
328 | - GtkWidget *color = gtk_button_new_with_label("Colors"); | |
329 | - GtkWidget *print = gtk_button_new_with_label("Print"); | |
330 | - GtkWidget *host = gtk_button_new_with_label("Host"); | |
269 | +static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { | |
331 | 270 | |
332 | - gtk_widget_set_focus_on_click(print,FALSE); | |
333 | - g_signal_connect(G_OBJECT(print),"clicked",G_CALLBACK(print_clicked),terminal); | |
271 | + GtkWidget * window = gtk_application_window_new(app); | |
272 | + GtkWidget * terminal = v3270_new(); | |
273 | + GtkWidget * notebook = gtk_notebook_new(); | |
274 | + size_t f; | |
334 | 275 | |
335 | - gtk_widget_set_focus_on_click(host,FALSE); | |
336 | - g_signal_connect(G_OBJECT(host),"clicked",G_CALLBACK(host_clicked),terminal); | |
276 | + // Create Terminal window | |
277 | + { | |
278 | + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL,2); | |
279 | + | |
280 | + // https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html | |
281 | + static const struct _buttons { | |
282 | + const gchar * icon; | |
283 | + GCallback callback; | |
284 | + const gchar * tooltip; | |
285 | + } buttons[] = { | |
286 | + { "gtk-connect", G_CALLBACK(connect_clicked), "Connect to host" }, | |
287 | + { "gtk-disconnect", G_CALLBACK(disconnect_clicked), "Disconnect from host" }, | |
288 | + { "gtk-select-color", G_CALLBACK(color_clicked), "Edit or change color scheme" }, | |
289 | + { "gtk-home", G_CALLBACK(host_clicked), "Configure host" }, | |
290 | + { "gtk-print", G_CALLBACK(print_clicked), "Print screen contents" }, | |
291 | + { "gtk-harddisk", G_CALLBACK(ft_clicked), "Open file transfer dialog" } | |
292 | + }; | |
293 | + | |
294 | + GtkWidget * toolbar = gtk_toolbar_new(); | |
295 | + for(f = 0; f < G_N_ELEMENTS(buttons); f++) | |
296 | + { | |
297 | + GtkWidget * button = GTK_WIDGET(gtk_tool_button_new_from_stock(buttons[f].icon)); | |
298 | + gtk_widget_set_tooltip_markup(button,buttons[f].tooltip); | |
299 | + g_signal_connect(G_OBJECT(button),"clicked",buttons[f].callback,terminal); | |
300 | + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(button),-1); | |
301 | + gtk_widget_set_can_focus(button,FALSE); | |
302 | + gtk_widget_set_can_default(button,FALSE); | |
303 | + gtk_widget_set_focus_on_click(button,FALSE); | |
304 | + } | |
305 | + gtk_widget_set_can_focus(toolbar,FALSE); | |
337 | 306 | |
338 | - gtk_widget_set_focus_on_click(color,FALSE); | |
339 | - g_signal_connect(G_OBJECT(color),"clicked",G_CALLBACK(color_clicked),terminal); | |
340 | - */ | |
307 | + gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,TRUE,0); | |
341 | 308 | |
342 | - /* | |
343 | - v3270_color_scheme_set_rgba(color,v3270_get_color_table(terminal)); | |
344 | - g_signal_connect(G_OBJECT(color),"update-colors",G_CALLBACK(color_scheme_changed),terminal); | |
345 | - */ | |
309 | + gtk_widget_set_can_default(terminal,TRUE); | |
310 | + gtk_widget_set_focus_on_click(terminal,TRUE); | |
311 | + gtk_box_pack_start(GTK_BOX(box),terminal,TRUE,TRUE,0); | |
346 | 312 | |
347 | - /* | |
348 | - gtk_grid_attach(GTK_GRID(grid),color,0,0,1,1); | |
349 | - gtk_grid_attach(GTK_GRID(grid),print,1,0,1,1); | |
350 | - gtk_grid_attach(GTK_GRID(grid),host,2,0,1,1); | |
351 | - */ | |
313 | + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Terminal")); | |
314 | + } | |
352 | 315 | |
353 | - gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,TRUE,0); | |
354 | - gtk_box_pack_start(GTK_BOX(box),terminal,TRUE,TRUE,0); | |
316 | + // Create trace window | |
317 | + { | |
318 | + GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0); | |
319 | + GtkWidget * trace = v3270_trace_new(terminal); | |
320 | + GtkWidget * toolbar = gtk_toolbar_new(); | |
321 | + | |
322 | + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "DS Trace","Toggle DS Trace",G_CALLBACK(toggle_ds_trace)),-1); | |
323 | + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Event Trace","Toggle Event Trace",G_CALLBACK(toggle_event_trace)),-1); | |
324 | + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Screen Trace","Toggle Screen Trace",G_CALLBACK(toggle_screen_trace)),-1); | |
325 | + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "SSL Trace","Toggle SSL Trace",G_CALLBACK(toggle_ssl_trace)),-1); | |
326 | + | |
327 | + gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0); | |
328 | + gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0); | |
329 | + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace")); | |
330 | + } | |
355 | 331 | |
356 | - // Setup and show window | |
332 | + // Setup and show main window | |
357 | 333 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); |
358 | 334 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); |
359 | - gtk_container_add(GTK_CONTAINER(window),box); | |
360 | - gtk_widget_show_all (window); | |
361 | - gtk_widget_grab_focus(terminal); | |
362 | - | |
363 | - // v3270_set_toggle(terminal,LIB3270_TOGGLE_RECONNECT,1); | |
364 | - | |
365 | - // v3270_set_script(terminal,'R'); | |
366 | - | |
367 | - // v3270_print_all(terminal); | |
335 | + gtk_container_add(GTK_CONTAINER(window),notebook); | |
336 | + gtk_widget_show_all(window); | |
368 | 337 | |
338 | + gtk_widget_grab_focus(terminal); | |
369 | 339 | |
370 | 340 | } |
371 | 341 | ... | ... |