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 | } | ... | ... |