Commit ed23a333b185d83caec027416af73c92cb366e9d
1 parent
be2f90f9
Exists in
master
and in
1 other branch
The "trace" widget can now be create/destroyed changing a terminal
property.
Showing
2 changed files
with
36 additions
and
18 deletions
Show diff stats
src/testprogram/testprogram.c
... | ... | @@ -75,10 +75,14 @@ |
75 | 75 | } |
76 | 76 | |
77 | 77 | // Create trace window |
78 | + v3270_set_trace(terminal,TRUE); | |
79 | + | |
80 | + /* | |
78 | 81 | GtkWidget *trace = v3270_trace_new(terminal); |
79 | 82 | debug("Trace=%p",trace); |
80 | 83 | gtk_notebook_append_page(GTK_NOTEBOOK(notebook),trace,gtk_label_new("Trace")); |
81 | 84 | // v3270_trace_window_new(terminal,NULL); |
85 | + */ | |
82 | 86 | |
83 | 87 | // Setup and show main window |
84 | 88 | gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_title(terminal)); | ... | ... |
src/trace/property.c
... | ... | @@ -65,48 +65,62 @@ |
65 | 65 | gtk_notebook_page_num(GTK_NOTEBOOK(parent),terminal->trace) |
66 | 66 | ); |
67 | 67 | } |
68 | - else if(GTK_IS_WINDOW(parent)) | |
68 | + else | |
69 | 69 | { |
70 | - debug("%s: Parent window %s",__FUNCTION__,"is a window"); | |
71 | - gtk_widget_destroy(parent); | |
70 | + debug("%s: Parent window %s",__FUNCTION__,"is not a notebook"); | |
71 | +// gtk_widget_destroy(terminal->trace); | |
72 | 72 | } |
73 | - else if(GTK_IS_CONTAINER(parent)) | |
73 | + | |
74 | + return FALSE; | |
75 | + | |
76 | + } | |
77 | + | |
78 | + static gboolean bg_append_trace(GtkWidget *terminal) | |
79 | + { | |
80 | + if(GTK_V3270(terminal)->trace) | |
81 | + return FALSE; | |
82 | + | |
83 | + // Destroy trace window. | |
84 | + GtkWidget * parent = gtk_widget_get_parent(terminal); | |
85 | + | |
86 | + if(GTK_IS_NOTEBOOK(parent)) | |
74 | 87 | { |
75 | - debug("%s: Parent window %s",__FUNCTION__,"is a container"); | |
76 | - gtk_container_remove(GTK_CONTAINER(parent),terminal->trace); | |
88 | + debug("%s: Parent window %s",__FUNCTION__,"is a notebook"); | |
89 | + GtkWidget * trace = v3270_trace_new(terminal); | |
90 | + gtk_widget_show_all(trace); | |
91 | + | |
92 | + gtk_notebook_insert_page( | |
93 | + GTK_NOTEBOOK(parent), | |
94 | + trace, | |
95 | + gtk_label_new(_("Trace")), | |
96 | + gtk_notebook_page_num(GTK_NOTEBOOK(parent),terminal)+1 | |
97 | + ); | |
77 | 98 | |
78 | 99 | } |
79 | 100 | else |
80 | 101 | { |
81 | - g_warning("Can't remove trace window from parent widget"); | |
82 | - } | |
102 | + debug("%s: Parent window %s",__FUNCTION__,"is not a notebook, creating trace window"); | |
103 | + gtk_widget_show_all(v3270_trace_window_new(terminal,NULL)); | |
83 | 104 | |
105 | + } | |
84 | 106 | |
85 | 107 | return FALSE; |
108 | + | |
86 | 109 | } |
87 | 110 | |
88 | 111 | void v3270_set_trace(GtkWidget *widget, gboolean trace) |
89 | 112 | { |
90 | 113 | g_return_if_fail(GTK_IS_V3270(widget)); |
91 | 114 | |
92 | - v3270 * terminal = GTK_V3270(widget); | |
93 | - | |
94 | 115 | if(trace) |
95 | 116 | { |
96 | 117 | debug("%s: trace is %s",__FUNCTION__,"ON"); |
97 | - | |
98 | - if(terminal->trace) | |
99 | - return; | |
100 | - | |
101 | - // Create trace window | |
102 | - | |
118 | + g_idle_add((GSourceFunc) bg_append_trace, GTK_V3270(widget)); | |
103 | 119 | } |
104 | 120 | else |
105 | 121 | { |
106 | 122 | debug("%s: trace is %s",__FUNCTION__,"OFF"); |
107 | 123 | g_idle_add((GSourceFunc) bg_remove_trace, GTK_V3270(widget)); |
108 | - | |
109 | 124 | } |
110 | 125 | |
111 | - | |
112 | 126 | } | ... | ... |