Commit 2ba14c1fb08d0e5a463294505941e1ad55cbcd3a

Authored by Perry Werneck
1 parent 4a413ba4
Exists in master and in 1 other branch develop

Refactoring trace widget.

src/testprogram/testprogram.c
@@ -43,39 +43,7 @@ @@ -43,39 +43,7 @@
43 43
44 /*---[ Implement ]----------------------------------------------------------------------------------*/ 44 /*---[ Implement ]----------------------------------------------------------------------------------*/
45 45
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));  
48 - }  
49 -  
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 - }  
53 -  
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 - }  
57 -  
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 - }  
61 -  
62 - static GtkWidget * create_toggle_button(GtkWidget *terminal, const gchar *label, const gchar *tooltip, GCallback callback) {  
63 -  
64 - GtkWidget * item = gtk_toggle_button_new_with_label(label);  
65 -  
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);  
69 -  
70 - g_signal_connect(item, "toggled", G_CALLBACK(callback), terminal);  
71 -  
72 - if(tooltip)  
73 - gtk_widget_set_tooltip_text(item,tooltip);  
74 -  
75 - return item;  
76 -}  
77 -  
78 -static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { 46 + static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
79 47
80 GtkWidget * window = gtk_application_window_new(app); 48 GtkWidget * window = gtk_application_window_new(app);
81 GtkWidget * terminal = v3270_new(); 49 GtkWidget * terminal = v3270_new();
@@ -100,22 +68,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { @@ -100,22 +68,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
100 68
101 // Create trace window 69 // Create trace window
102 { 70 {
103 - GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,8);  
104 - GtkWidget * trace = v3270_trace_new(terminal);  
105 -  
106 - GtkWidget * toolbar = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);  
107 - gtk_button_box_set_layout(GTK_BUTTON_BOX(toolbar), GTK_BUTTONBOX_START);  
108 - gtk_box_set_spacing(GTK_BOX(toolbar),8);  
109 -  
110 - gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "DS Trace","Toggle DS Trace",G_CALLBACK(toggle_ds_trace)),FALSE,FALSE,4);  
111 - gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "Event Trace","Toggle Event Trace",G_CALLBACK(toggle_event_trace)),FALSE,FALSE,4);  
112 - gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "Screen Trace","Toggle Screen Trace",G_CALLBACK(toggle_screen_trace)),FALSE,FALSE,4);  
113 - gtk_box_pack_start(GTK_BOX(toolbar),create_toggle_button(terminal, "SSL Trace","Toggle SSL Trace",G_CALLBACK(toggle_ssl_trace)),FALSE,FALSE,4);  
114 -  
115 - gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0);  
116 -  
117 - gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0);  
118 - gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace")); 71 + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),v3270_trace_new(terminal),gtk_label_new("Trace"));
119 } 72 }
120 73
121 // Setup and show main window 74 // Setup and show main window
src/trace/widget.c
@@ -62,13 +62,13 @@ @@ -62,13 +62,13 @@
62 62
63 struct _V3270TraceClass 63 struct _V3270TraceClass
64 { 64 {
65 - GtkGridClass parent_class; 65 + GtkBoxClass parent_class;
66 66
67 }; 67 };
68 68
69 struct _V3270Trace 69 struct _V3270Trace
70 { 70 {
71 - GtkGrid parent; 71 + GtkBox parent;
72 H3270 * hSession; ///< @brief TN3270 Session. 72 H3270 * hSession; ///< @brief TN3270 Session.
73 GtkWidget * terminal; ///< @brief V3270 Widget. 73 GtkWidget * terminal; ///< @brief V3270 Widget.
74 GtkScrolledWindow * scroll; 74 GtkScrolledWindow * scroll;
@@ -91,7 +91,7 @@ @@ -91,7 +91,7 @@
91 91
92 G_END_DECLS 92 G_END_DECLS
93 93
94 - G_DEFINE_TYPE(V3270Trace, V3270Trace, GTK_TYPE_GRID); 94 + G_DEFINE_TYPE(V3270Trace, V3270Trace, GTK_TYPE_BOX);
95 95
96 /*--[ Implement ]------------------------------------------------------------------------------------*/ 96 /*--[ Implement ]------------------------------------------------------------------------------------*/
97 97
@@ -245,10 +245,84 @@ @@ -245,10 +245,84 @@
245 245
246 } 246 }
247 247
  248 + static void toggle_ds_trace(GtkToggleButton *button, V3270Trace *trace) {
  249 + v3270_set_toggle(trace->terminal,LIB3270_TOGGLE_DS_TRACE,gtk_toggle_button_get_active(button));
  250 + }
  251 +
  252 + static void toggle_event_trace(GtkToggleButton *button, V3270Trace *trace) {
  253 + v3270_set_toggle(trace->terminal,LIB3270_TOGGLE_EVENT_TRACE,gtk_toggle_button_get_active(button));
  254 + }
  255 +
  256 + static void toggle_ssl_trace(GtkToggleButton *button, V3270Trace *trace) {
  257 + v3270_set_toggle(trace->terminal,LIB3270_TOGGLE_SSL_TRACE,gtk_toggle_button_get_active(button));
  258 + }
  259 +
  260 + static void toggle_screen_trace(GtkToggleButton *button, V3270Trace *trace) {
  261 + v3270_set_toggle(trace->terminal,LIB3270_TOGGLE_SCREEN_TRACE,gtk_toggle_button_get_active(button));
  262 + }
  263 +
248 static void V3270Trace_init(V3270Trace *widget) 264 static void V3270Trace_init(V3270Trace *widget)
249 { 265 {
250 - gtk_grid_set_row_spacing(GTK_GRID(widget),6);  
251 - gtk_grid_set_column_spacing(GTK_GRID(widget),12); 266 + gtk_orientable_set_orientation(GTK_ORIENTABLE(widget),GTK_ORIENTATION_VERTICAL);
  267 +
  268 + // Create toolbar
  269 + {
  270 + size_t ix;
  271 +
  272 + GtkWidget * toolbar = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
  273 + gtk_button_box_set_layout(GTK_BUTTON_BOX(toolbar), GTK_BUTTONBOX_START);
  274 + gtk_box_set_spacing(GTK_BOX(toolbar),8);
  275 +
  276 + static const struct _toggles
  277 + {
  278 + const gchar * label;
  279 + const gchar * tooltip;
  280 + GCallback callback;
  281 + }
  282 + toggles[] =
  283 + {
  284 + {
  285 + N_("DS Trace"),
  286 + N_("Toggle DS Trace"),
  287 + G_CALLBACK(toggle_ds_trace)
  288 + },
  289 + {
  290 + N_("Event Trace"),
  291 + N_("Toggle Event Trace"),
  292 + G_CALLBACK(toggle_event_trace)
  293 + },
  294 + {
  295 + N_("Screen Trace"),
  296 + N_("Toggle Screen Trace"),
  297 + G_CALLBACK(toggle_screen_trace)
  298 + },
  299 + {
  300 + N_("SSL Trace"),
  301 + N_("Toggle SSL Trace"),
  302 + G_CALLBACK(toggle_ssl_trace)
  303 + }
  304 +
  305 + };
  306 +
  307 + for(ix = 0; ix < G_N_ELEMENTS(toggles); ix++)
  308 + {
  309 + GtkWidget * item = gtk_toggle_button_new_with_label(toggles[ix].label);
  310 +
  311 + gtk_widget_set_can_focus(item,FALSE);
  312 + gtk_widget_set_can_default(item,FALSE);
  313 + gtk_widget_set_focus_on_click(item,FALSE);
  314 +
  315 + g_signal_connect(item, "toggled", G_CALLBACK(toggles[ix].callback), widget);
  316 +
  317 + gtk_widget_set_tooltip_text(item,toggles[ix].tooltip);
  318 + gtk_box_pack_start(GTK_BOX(toolbar),item,FALSE,FALSE,4);
  319 +
  320 + }
  321 +
  322 + gtk_widget_set_valign(toolbar,GTK_ALIGN_START);
  323 + gtk_box_pack_start(GTK_BOX(widget),toolbar,FALSE,FALSE,4);
  324 +
  325 + }
252 326
253 // Create text view 327 // Create text view
254 { 328 {
@@ -256,7 +330,8 @@ @@ -256,7 +330,8 @@
256 gtk_scrolled_window_set_policy(widget->scroll,GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); 330 gtk_scrolled_window_set_policy(widget->scroll,GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
257 gtk_widget_set_vexpand(GTK_WIDGET(widget->scroll),TRUE); 331 gtk_widget_set_vexpand(GTK_WIDGET(widget->scroll),TRUE);
258 gtk_widget_set_hexpand(GTK_WIDGET(widget->scroll),TRUE); 332 gtk_widget_set_hexpand(GTK_WIDGET(widget->scroll),TRUE);
259 - gtk_grid_attach(GTK_GRID(widget),GTK_WIDGET(widget->scroll),0,0,10,1); 333 +
  334 + gtk_box_pack_start(GTK_BOX(widget),GTK_WIDGET(widget->scroll),TRUE,TRUE,4);
260 335
261 widget->view = GTK_TEXT_VIEW(gtk_text_view_new()); 336 widget->view = GTK_TEXT_VIEW(gtk_text_view_new());
262 337
@@ -287,7 +362,7 @@ @@ -287,7 +362,7 @@
287 gtk_entry_set_icon_from_icon_name(widget->entry,GTK_ENTRY_ICON_SECONDARY,"system-run"); 362 gtk_entry_set_icon_from_icon_name(widget->entry,GTK_ENTRY_ICON_SECONDARY,"system-run");
288 gtk_entry_set_placeholder_text(widget->entry,_("Command to execute")); 363 gtk_entry_set_placeholder_text(widget->entry,_("Command to execute"));
289 364
290 - gtk_grid_attach(GTK_GRID(widget),GTK_WIDGET(widget->entry),0,1,10,1); 365 + gtk_box_pack_end(GTK_BOX(widget),GTK_WIDGET(widget->entry),FALSE,FALSE,4);
291 366
292 g_signal_connect(G_OBJECT(widget->entry),"icon-press",G_CALLBACK(execute_command),widget); 367 g_signal_connect(G_OBJECT(widget->entry),"icon-press",G_CALLBACK(execute_command),widget);
293 g_signal_connect(G_OBJECT(widget->entry),"activate",G_CALLBACK(entry_activated),widget); 368 g_signal_connect(G_OBJECT(widget->entry),"activate",G_CALLBACK(entry_activated),widget);