Commit a3fdfc937e9c1f84d436075d65056c02cefd0934

Authored by perry.werneck@gmail.com
1 parent 97bf1562

Finalizando widget para trace

Showing 1 changed file with 41 additions and 7 deletions   Show diff stats
src/pw3270/trace.c
@@ -55,6 +55,7 @@ @@ -55,6 +55,7 @@
55 GtkWidget * entry; 55 GtkWidget * entry;
56 GtkWidget * button; 56 GtkWidget * button;
57 gchar **line; 57 gchar **line;
  58 + gboolean * enabled;
58 }; 59 };
59 60
60 const GtkWindowClass * pw3270_trace_get_parent_class(void); 61 const GtkWindowClass * pw3270_trace_get_parent_class(void);
@@ -73,7 +74,19 @@ @@ -73,7 +74,19 @@
73 74
74 static void activate_default(GtkWindow *window) 75 static void activate_default(GtkWindow *window)
75 { 76 {
  77 + pw3270_trace * hwnd = PW3270_TRACE(window);
  78 +
76 trace("%s",__FUNCTION__); 79 trace("%s",__FUNCTION__);
  80 +
  81 + if(*hwnd->line)
  82 + g_free(*hwnd->line);
  83 +
  84 + *hwnd->line = g_strdup(gtk_entry_get_text(GTK_ENTRY(hwnd->entry)));
  85 +
  86 + gtk_widget_set_sensitive(hwnd->entry,FALSE);
  87 + gtk_widget_set_sensitive(hwnd->button,FALSE);
  88 +
  89 + *hwnd->enabled = FALSE;
77 } 90 }
78 91
79 #if GTK_CHECK_VERSION(3,0,0) 92 #if GTK_CHECK_VERSION(3,0,0)
@@ -84,7 +97,8 @@ static void destroy(GtkObject *widget) @@ -84,7 +97,8 @@ static void destroy(GtkObject *widget)
84 { 97 {
85 pw3270_trace * hwnd = PW3270_TRACE(widget); 98 pw3270_trace * hwnd = PW3270_TRACE(widget);
86 99
87 - hwnd->line = NULL; 100 + hwnd->line = NULL;
  101 + *hwnd->enabled = FALSE;
88 102
89 #if GTK_CHECK_VERSION(3,0,0) 103 #if GTK_CHECK_VERSION(3,0,0)
90 GTK_WIDGET_CLASS(pw3270_trace_parent_class)->destroy(widget); 104 GTK_WIDGET_CLASS(pw3270_trace_parent_class)->destroy(widget);
@@ -94,17 +108,28 @@ static void destroy(GtkObject *widget) @@ -94,17 +108,28 @@ static void destroy(GtkObject *widget)
94 108
95 } 109 }
96 110
  111 + static gboolean delete_event(GtkWidget *widget, GdkEventAny *event)
  112 + {
  113 + pw3270_trace * hwnd = PW3270_TRACE(widget);
  114 + trace("%s",__FUNCTION__);
  115 + hwnd->line = NULL;
  116 + *hwnd->enabled = FALSE;
  117 + gtk_widget_hide(widget);
  118 + return TRUE;
  119 + }
  120 +
97 static void pw3270_trace_class_init(pw3270_traceClass *klass) 121 static void pw3270_trace_class_init(pw3270_traceClass *klass)
98 { 122 {
99 GtkWindowClass * window_class = GTK_WINDOW_CLASS(klass); 123 GtkWindowClass * window_class = GTK_WINDOW_CLASS(klass);
  124 + GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass);
100 125
101 trace("%s",__FUNCTION__); 126 trace("%s",__FUNCTION__);
102 127
103 window_class->activate_default = activate_default; 128 window_class->activate_default = activate_default;
  129 + widget_class->delete_event = delete_event;
104 130
105 #if GTK_CHECK_VERSION(3,0,0) 131 #if GTK_CHECK_VERSION(3,0,0)
106 { 132 {
107 - GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass);  
108 widget_class->destroy = destroy; 133 widget_class->destroy = destroy;
109 } 134 }
110 #else 135 #else
@@ -116,6 +141,12 @@ static void destroy(GtkObject *widget) @@ -116,6 +141,12 @@ static void destroy(GtkObject *widget)
116 141
117 } 142 }
118 143
  144 + static void activate(GtkButton *button, GtkWindow *window)
  145 + {
  146 + trace("%s",__FUNCTION__);
  147 + activate_default(window);
  148 + }
  149 +
119 static void pw3270_trace_init(pw3270_trace *window) 150 static void pw3270_trace_init(pw3270_trace *window)
120 { 151 {
121 GtkWidget *widget; 152 GtkWidget *widget;
@@ -142,13 +173,14 @@ static void destroy(GtkObject *widget) @@ -142,13 +173,14 @@ static void destroy(GtkObject *widget)
142 window->entry = gtk_entry_new(); 173 window->entry = gtk_entry_new();
143 gtk_box_pack_start(GTK_BOX(widget),window->entry,TRUE,TRUE,4); 174 gtk_box_pack_start(GTK_BOX(widget),window->entry,TRUE,TRUE,4);
144 gtk_widget_set_sensitive(window->entry,FALSE); 175 gtk_widget_set_sensitive(window->entry,FALSE);
  176 + g_signal_connect(G_OBJECT(window->entry),"activate",G_CALLBACK(activate),window);
145 177
146 window->button = gtk_button_new_from_stock(GTK_STOCK_OK); 178 window->button = gtk_button_new_from_stock(GTK_STOCK_OK);
147 gtk_box_pack_end(GTK_BOX(widget),window->button,FALSE,FALSE,4); 179 gtk_box_pack_end(GTK_BOX(widget),window->button,FALSE,FALSE,4);
148 gtk_widget_set_sensitive(window->button,FALSE); 180 gtk_widget_set_sensitive(window->button,FALSE);
149 gtk_button_set_focus_on_click(GTK_BUTTON(window->button),FALSE); 181 gtk_button_set_focus_on_click(GTK_BUTTON(window->button),FALSE);
150 182
151 - g_signal_connect(G_OBJECT(window->button),"clicked",G_CALLBACK(gtk_window_activate_default),window); 183 + g_signal_connect(G_OBJECT(window->button),"clicked",G_CALLBACK(activate),window);
152 184
153 gtk_box_pack_start(GTK_BOX(vbox),widget,FALSE,TRUE,0); 185 gtk_box_pack_start(GTK_BOX(vbox),widget,FALSE,TRUE,0);
154 186
@@ -194,17 +226,19 @@ static void destroy(GtkObject *widget) @@ -194,17 +226,19 @@ static void destroy(GtkObject *widget)
194 226
195 LIB3270_EXPORT gchar * pw3270_trace_get_command(GtkWidget *widget) 227 LIB3270_EXPORT gchar * pw3270_trace_get_command(GtkWidget *widget)
196 { 228 {
197 - pw3270_trace * hwnd = PW3270_TRACE(widget);  
198 - gchar * line = NULL; 229 + pw3270_trace * hwnd = PW3270_TRACE(widget);
  230 + gchar * line = NULL;
  231 + gboolean enabled = TRUE;
199 232
200 - hwnd->line = &line; 233 + hwnd->line = &line;
  234 + hwnd->enabled = &enabled;
201 235
202 gtk_window_present(GTK_WINDOW(widget)); 236 gtk_window_present(GTK_WINDOW(widget));
203 gtk_widget_set_sensitive(hwnd->entry,TRUE); 237 gtk_widget_set_sensitive(hwnd->entry,TRUE);
204 gtk_widget_set_sensitive(hwnd->button,TRUE); 238 gtk_widget_set_sensitive(hwnd->button,TRUE);
205 gtk_widget_grab_focus(hwnd->entry); 239 gtk_widget_grab_focus(hwnd->entry);
206 240
207 - while(hwnd->line) 241 + while(enabled)
208 { 242 {
209 gtk_main_iteration(); 243 gtk_main_iteration();
210 } 244 }