Commit f9fc1c8dca920233a897b5e52f8266244408ffc1

Authored by Perry Werneck
1 parent 664fb496
Exists in master and in 1 other branch develop

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,7 +288,7 @@ static void draw_undera(cairo_t *cr, H3270 *host, v3270FontInfo *metrics, GdkRGB
288 cairo_stroke(cr); 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,7 +497,7 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, v3270FontInfo *
497 { 497 {
498 rect.x++; 498 rect.x++;
499 499
500 - debug("%s(%s)",__FUNCTION__,msg); 500 +// debug("%s(%s)",__FUNCTION__,msg);
501 501
502 gdk_cairo_set_source_rgba(cr,color+message[id].color); 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,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 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); 333 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
358 gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); 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