Commit 97bf1562329af65f71f4e03e617789306443f6df
1 parent
b6e05fc8
Exists in
master
and in
5 other branches
Trabalhando no widget trace
Showing
2 changed files
with
67 additions
and
4 deletions
Show diff stats
src/include/pw3270/trace.h
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | LIB3270_EXPORT GType pw3270_trace_get_type(void); | 52 | LIB3270_EXPORT GType pw3270_trace_get_type(void); |
53 | LIB3270_EXPORT void pw3270_trace_vprintf(GtkWidget *widget, const char *fmt, va_list args); | 53 | LIB3270_EXPORT void pw3270_trace_vprintf(GtkWidget *widget, const char *fmt, va_list args); |
54 | LIB3270_EXPORT void pw3270_trace_printf(GtkWidget *widget, const char *fmt, ... ); | 54 | LIB3270_EXPORT void pw3270_trace_printf(GtkWidget *widget, const char *fmt, ... ); |
55 | - | 55 | + LIB3270_EXPORT gchar * pw3270_trace_get_command(GtkWidget *widget); |
56 | 56 | ||
57 | G_END_DECLS | 57 | G_END_DECLS |
58 | 58 |
src/pw3270/trace.c
@@ -52,8 +52,9 @@ | @@ -52,8 +52,9 @@ | ||
52 | GtkWindow parent; | 52 | GtkWindow parent; |
53 | GtkAdjustment * scroll; | 53 | GtkAdjustment * scroll; |
54 | GtkTextBuffer * text; | 54 | GtkTextBuffer * text; |
55 | - GtkWidget * entry; | ||
56 | - GtkWidget * button; | 55 | + GtkWidget * entry; |
56 | + GtkWidget * button; | ||
57 | + gchar **line; | ||
57 | }; | 58 | }; |
58 | 59 | ||
59 | const GtkWindowClass * pw3270_trace_get_parent_class(void); | 60 | const GtkWindowClass * pw3270_trace_get_parent_class(void); |
@@ -70,9 +71,49 @@ | @@ -70,9 +71,49 @@ | ||
70 | return GTK_WINDOW_CLASS(pw3270_trace_parent_class); | 71 | return GTK_WINDOW_CLASS(pw3270_trace_parent_class); |
71 | } | 72 | } |
72 | 73 | ||
74 | + static void activate_default(GtkWindow *window) | ||
75 | + { | ||
76 | + trace("%s",__FUNCTION__); | ||
77 | + } | ||
78 | + | ||
79 | +#if GTK_CHECK_VERSION(3,0,0) | ||
80 | +static void destroy(GtkWidget *widget) | ||
81 | +#else | ||
82 | +static void destroy(GtkObject *widget) | ||
83 | +#endif | ||
84 | + { | ||
85 | + pw3270_trace * hwnd = PW3270_TRACE(widget); | ||
86 | + | ||
87 | + hwnd->line = NULL; | ||
88 | + | ||
89 | +#if GTK_CHECK_VERSION(3,0,0) | ||
90 | + GTK_WIDGET_CLASS(pw3270_trace_parent_class)->destroy(widget); | ||
91 | +#else | ||
92 | + GTK_OBJECT_CLASS(pw3270_trace_parent_class)->destroy(widget); | ||
93 | +#endif // GTK3 | ||
94 | + | ||
95 | + } | ||
96 | + | ||
73 | static void pw3270_trace_class_init(pw3270_traceClass *klass) | 97 | static void pw3270_trace_class_init(pw3270_traceClass *klass) |
74 | { | 98 | { |
75 | - trace("%s",__FUNCTION__); | 99 | + GtkWindowClass * window_class = GTK_WINDOW_CLASS(klass); |
100 | + | ||
101 | + trace("%s",__FUNCTION__); | ||
102 | + | ||
103 | + window_class->activate_default = activate_default; | ||
104 | + | ||
105 | +#if GTK_CHECK_VERSION(3,0,0) | ||
106 | + { | ||
107 | + GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass); | ||
108 | + widget_class->destroy = destroy; | ||
109 | + } | ||
110 | +#else | ||
111 | + { | ||
112 | + GtkObjectClass *object_class = (GtkObjectClass*) klass; | ||
113 | + object_class->destroy = destroy; | ||
114 | + } | ||
115 | +#endif // GTK3 | ||
116 | + | ||
76 | } | 117 | } |
77 | 118 | ||
78 | static void pw3270_trace_init(pw3270_trace *window) | 119 | static void pw3270_trace_init(pw3270_trace *window) |
@@ -107,6 +148,8 @@ | @@ -107,6 +148,8 @@ | ||
107 | gtk_widget_set_sensitive(window->button,FALSE); | 148 | gtk_widget_set_sensitive(window->button,FALSE); |
108 | gtk_button_set_focus_on_click(GTK_BUTTON(window->button),FALSE); | 149 | gtk_button_set_focus_on_click(GTK_BUTTON(window->button),FALSE); |
109 | 150 | ||
151 | + g_signal_connect(G_OBJECT(window->button),"clicked",G_CALLBACK(gtk_window_activate_default),window); | ||
152 | + | ||
110 | gtk_box_pack_start(GTK_BOX(vbox),widget,FALSE,TRUE,0); | 153 | gtk_box_pack_start(GTK_BOX(vbox),widget,FALSE,TRUE,0); |
111 | 154 | ||
112 | gtk_widget_show_all(vbox); | 155 | gtk_widget_show_all(vbox); |
@@ -148,3 +191,23 @@ | @@ -148,3 +191,23 @@ | ||
148 | pw3270_trace_vprintf(widget,fmt,arg_ptr); | 191 | pw3270_trace_vprintf(widget,fmt,arg_ptr); |
149 | va_end(arg_ptr); | 192 | va_end(arg_ptr); |
150 | } | 193 | } |
194 | + | ||
195 | + LIB3270_EXPORT gchar * pw3270_trace_get_command(GtkWidget *widget) | ||
196 | + { | ||
197 | + pw3270_trace * hwnd = PW3270_TRACE(widget); | ||
198 | + gchar * line = NULL; | ||
199 | + | ||
200 | + hwnd->line = &line; | ||
201 | + | ||
202 | + gtk_window_present(GTK_WINDOW(widget)); | ||
203 | + gtk_widget_set_sensitive(hwnd->entry,TRUE); | ||
204 | + gtk_widget_set_sensitive(hwnd->button,TRUE); | ||
205 | + gtk_widget_grab_focus(hwnd->entry); | ||
206 | + | ||
207 | + while(hwnd->line) | ||
208 | + { | ||
209 | + gtk_main_iteration(); | ||
210 | + } | ||
211 | + | ||
212 | + return line; | ||
213 | + } |