Commit ed23a333b185d83caec027416af73c92cb366e9d

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

The "trace" widget can now be create/destroyed changing a terminal

property.
src/testprogram/testprogram.c
@@ -75,10 +75,14 @@ @@ -75,10 +75,14 @@
75 } 75 }
76 76
77 // Create trace window 77 // Create trace window
  78 + v3270_set_trace(terminal,TRUE);
  79 +
  80 + /*
78 GtkWidget *trace = v3270_trace_new(terminal); 81 GtkWidget *trace = v3270_trace_new(terminal);
79 debug("Trace=%p",trace); 82 debug("Trace=%p",trace);
80 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),trace,gtk_label_new("Trace")); 83 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),trace,gtk_label_new("Trace"));
81 // v3270_trace_window_new(terminal,NULL); 84 // v3270_trace_window_new(terminal,NULL);
  85 + */
82 86
83 // Setup and show main window 87 // Setup and show main window
84 gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_title(terminal)); 88 gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_title(terminal));
src/trace/property.c
@@ -65,48 +65,62 @@ @@ -65,48 +65,62 @@
65 gtk_notebook_page_num(GTK_NOTEBOOK(parent),terminal->trace) 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 else 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 return FALSE; 107 return FALSE;
  108 +
86 } 109 }
87 110
88 void v3270_set_trace(GtkWidget *widget, gboolean trace) 111 void v3270_set_trace(GtkWidget *widget, gboolean trace)
89 { 112 {
90 g_return_if_fail(GTK_IS_V3270(widget)); 113 g_return_if_fail(GTK_IS_V3270(widget));
91 114
92 - v3270 * terminal = GTK_V3270(widget);  
93 -  
94 if(trace) 115 if(trace)
95 { 116 {
96 debug("%s: trace is %s",__FUNCTION__,"ON"); 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 else 120 else
105 { 121 {
106 debug("%s: trace is %s",__FUNCTION__,"OFF"); 122 debug("%s: trace is %s",__FUNCTION__,"OFF");
107 g_idle_add((GSourceFunc) bg_remove_trace, GTK_V3270(widget)); 123 g_idle_add((GSourceFunc) bg_remove_trace, GTK_V3270(widget));
108 -  
109 } 124 }
110 125
111 -  
112 } 126 }