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 43  
44 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 48 GtkWidget * window = gtk_application_window_new(app);
81 49 GtkWidget * terminal = v3270_new();
... ... @@ -100,22 +68,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
100 68  
101 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 74 // Setup and show main window
... ...
src/trace/widget.c
... ... @@ -62,13 +62,13 @@
62 62  
63 63 struct _V3270TraceClass
64 64 {
65   - GtkGridClass parent_class;
  65 + GtkBoxClass parent_class;
66 66  
67 67 };
68 68  
69 69 struct _V3270Trace
70 70 {
71   - GtkGrid parent;
  71 + GtkBox parent;
72 72 H3270 * hSession; ///< @brief TN3270 Session.
73 73 GtkWidget * terminal; ///< @brief V3270 Widget.
74 74 GtkScrolledWindow * scroll;
... ... @@ -91,7 +91,7 @@
91 91  
92 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 96 /*--[ Implement ]------------------------------------------------------------------------------------*/
97 97  
... ... @@ -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 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 327 // Create text view
254 328 {
... ... @@ -256,7 +330,8 @@
256 330 gtk_scrolled_window_set_policy(widget->scroll,GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
257 331 gtk_widget_set_vexpand(GTK_WIDGET(widget->scroll),TRUE);
258 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 336 widget->view = GTK_TEXT_VIEW(gtk_text_view_new());
262 337  
... ... @@ -287,7 +362,7 @@
287 362 gtk_entry_set_icon_from_icon_name(widget->entry,GTK_ENTRY_ICON_SECONDARY,"system-run");
288 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 367 g_signal_connect(G_OBJECT(widget->entry),"icon-press",G_CALLBACK(execute_command),widget);
293 368 g_signal_connect(G_OBJECT(widget->entry),"activate",G_CALLBACK(entry_activated),widget);
... ...