Commit 97bf1562329af65f71f4e03e617789306443f6df

Authored by perry.werneck@gmail.com
1 parent b6e05fc8

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