Commit 2ba14c1fb08d0e5a463294505941e1ad55cbcd3a
1 parent
4a413ba4
Exists in
master
and in
1 other branch
Refactoring trace widget.
Showing
2 changed files
with
84 additions
and
56 deletions
Show diff stats
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); |