Commit 0777e802919e996139d64b1e0ad600d1b1cb7f55
1 parent
d018ea2b
Exists in
master
and in
1 other branch
Adding signal to allow extra commands on the trace window.
Showing
10 changed files
with
213 additions
and
134 deletions
Show diff stats
Makefile.in
... | ... | @@ -104,7 +104,8 @@ DEPENDS= \ |
104 | 104 | src/include/v3270/*.h \ |
105 | 105 | src/filetransfer/marshal.h \ |
106 | 106 | src/filetransfer/private.h \ |
107 | - src/terminal/marshal.h | |
107 | + src/terminal/marshal.h \ | |
108 | + src/trace/marshal.h | |
108 | 109 | |
109 | 110 | CFLAGS= \ |
110 | 111 | @CFLAGS@ \ |
... | ... | @@ -133,7 +134,7 @@ $(OBJDBG)/%.o: \ |
133 | 134 | $(DEPENDS) |
134 | 135 | |
135 | 136 | @echo $< ... |
136 | - @$(MKDIR) $(dir $@) | |
137 | + @$(MKDIR) $(@D) | |
137 | 138 | |
138 | 139 | @$(CC) \ |
139 | 140 | $(CFLAGS) \ |
... | ... | @@ -145,7 +146,7 @@ $(OBJDBG)/%.o: \ |
145 | 146 | %.rc |
146 | 147 | |
147 | 148 | @echo $< ... |
148 | - @$(MKDIR) $(dir $@) | |
149 | + @$(MKDIR) $(@D) | |
149 | 150 | @$(WINDRES) $< -O coff -o $@ |
150 | 151 | |
151 | 152 | %.dll.a: \ |
... | ... | @@ -174,7 +175,7 @@ $(OBJRLS)/%.o: \ |
174 | 175 | %.rc |
175 | 176 | |
176 | 177 | @echo $< ... |
177 | - @$(MKDIR) $(dir $@) | |
178 | + @$(MKDIR) $(@D) | |
178 | 179 | @$(WINDRES) $< -O coff -o $@ |
179 | 180 | |
180 | 181 | #---[ Misc Rules ]----------------------------------------------------------------------- |
... | ... | @@ -183,7 +184,7 @@ $(POTDIR)/$(LIBNAME)/%.pot: \ |
183 | 184 | %.c |
184 | 185 | |
185 | 186 | @echo $(notdir $@) ... |
186 | - @$(MKDIR) $(dir $@) | |
187 | + @$(MKDIR) $(@D) | |
187 | 188 | @$(XGETTEXT) \ |
188 | 189 | --language=C \ |
189 | 190 | --keyword=_ \ |
... | ... | @@ -207,7 +208,7 @@ src/terminal/marshal.h: \ |
207 | 208 | src/terminal/marshal |
208 | 209 | |
209 | 210 | @echo $@ ... |
210 | - @$(MKDIR) $(dir $@) | |
211 | + @$(MKDIR) $(@D) | |
211 | 212 | |
212 | 213 | @$(GENMARSHAL) --prefix=v3270 --header $< > $@ |
213 | 214 | |
... | ... | @@ -215,7 +216,7 @@ $(OBJDIR)/marshal/v3270.c: \ |
215 | 216 | src/terminal/marshal |
216 | 217 | |
217 | 218 | @echo $@ ... |
218 | - @$(MKDIR) $(dir $@) | |
219 | + @$(MKDIR) $(@D) | |
219 | 220 | |
220 | 221 | @$(GENMARSHAL) --prefix=v3270 --body $< > $@ |
221 | 222 | |
... | ... | @@ -224,7 +225,7 @@ src/filetransfer/marshal.h: \ |
224 | 225 | src/filetransfer/marshal |
225 | 226 | |
226 | 227 | @echo $@ ... |
227 | - @$(MKDIR) $(dir $@) | |
228 | + @$(MKDIR) $(@D) | |
228 | 229 | |
229 | 230 | @$(GENMARSHAL) --prefix=v3270ft --header $< > $@ |
230 | 231 | |
... | ... | @@ -232,16 +233,33 @@ $(OBJDIR)/marshal/v3270ft.c: \ |
232 | 233 | src/filetransfer/marshal |
233 | 234 | |
234 | 235 | @echo $@ ... |
235 | - @$(MKDIR) $(dir $@) | |
236 | + @$(MKDIR) $(@D) | |
236 | 237 | |
237 | 238 | @$(GENMARSHAL) --prefix=v3270ft --body $< > $@ |
238 | 239 | |
240 | +src/trace/marshal.h: \ | |
241 | + src/trace/marshal | |
242 | + | |
243 | + @echo $@ ... | |
244 | + @$(MKDIR) $(@D) | |
245 | + | |
246 | + @$(GENMARSHAL) --prefix=v3270trace --header $< > $@ | |
247 | + | |
248 | +$(OBJDIR)/marshal/trace.c: \ | |
249 | + src/trace/marshal | |
250 | + | |
251 | + @echo $@ ... | |
252 | + @$(MKDIR) $(@D) | |
253 | + | |
254 | + @$(GENMARSHAL) --prefix=v3270trace --body $< > $@ | |
255 | + | |
256 | + | |
239 | 257 | $(OBJDIR)/marshal/%.o: \ |
240 | 258 | $(OBJDIR)/marshal/%.c \ |
241 | 259 | $(DEPENDS) |
242 | 260 | |
243 | 261 | @echo $< ... |
244 | - @$(MKDIR) $(dir $@) | |
262 | + @$(MKDIR) $(@D) | |
245 | 263 | |
246 | 264 | @$(CC) \ |
247 | 265 | $(CFLAGS) \ |
... | ... | @@ -264,9 +282,10 @@ Release: \ |
264 | 282 | $(BINRLS)/$(SONAME): \ |
265 | 283 | $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) \ |
266 | 284 | $(OBJDIR)/marshal/v3270.o \ |
267 | - $(OBJDIR)/marshal/v3270ft.o | |
285 | + $(OBJDIR)/marshal/v3270ft.o \ | |
286 | + $(OBJDIR)/marshal/trace.o | |
268 | 287 | |
269 | - @$(MKDIR) $(dir $@) | |
288 | + @$(MKDIR) $(@D) | |
270 | 289 | @echo $< ... |
271 | 290 | @$(LD) \ |
272 | 291 | @DLL_LDFLAGS@ \ |
... | ... | @@ -280,7 +299,7 @@ $(BINRLS)/static/$(LIBNAME).a: \ |
280 | 299 | $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) |
281 | 300 | |
282 | 301 | @echo $@ ... |
283 | - @$(MKDIR) $(dir $@) | |
302 | + @$(MKDIR) $(@D) | |
284 | 303 | @$(AR) rcs $@ $^ |
285 | 304 | |
286 | 305 | |
... | ... | @@ -402,7 +421,7 @@ $(POTDIR)/$(LIBNAME).pot: \ |
402 | 421 | $(foreach SRC, $(basename $(SOURCES)), $(POTDIR)/$(LIBNAME)/$(SRC).pot) |
403 | 422 | |
404 | 423 | @rm -f $@ |
405 | - @mkdir -p `dirname $@` | |
424 | + @$(MKDIR) $(@D) | |
406 | 425 | @$(MSGCAT) --sort-output $^ > $@ |
407 | 426 | |
408 | 427 | locale: \ |
... | ... | @@ -418,7 +437,7 @@ $(BINDBG)/$(LIBNAME)@EXEEXT@: \ |
418 | 437 | $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \ |
419 | 438 | $(BINDBG)/$(SONAME) |
420 | 439 | |
421 | - @$(MKDIR) `dirname $@` | |
440 | + @$(MKDIR) $(@D) | |
422 | 441 | @echo $< ... |
423 | 442 | @$(LD) \ |
424 | 443 | -o $@ \ |
... | ... | @@ -454,9 +473,10 @@ endif |
454 | 473 | $(BINDBG)/$(SONAME): \ |
455 | 474 | $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o) \ |
456 | 475 | $(OBJDIR)/marshal/v3270.o \ |
457 | - $(OBJDIR)/marshal/v3270ft.o | |
476 | + $(OBJDIR)/marshal/v3270ft.o \ | |
477 | + $(OBJDIR)/marshal/trace.o | |
458 | 478 | |
459 | - @$(MKDIR) `dirname $@` | |
479 | + @$(MKDIR) $(@D) | |
460 | 480 | @echo $< ... |
461 | 481 | @$(LD) \ |
462 | 482 | -shared -Wl,-soname,$(@F) \ | ... | ... |
src/include/v3270.h
... | ... | @@ -284,7 +284,6 @@ |
284 | 284 | LIB3270_EXPORT int v3270_save_copy(GtkWidget *widget, const gchar *filename, GError **error); |
285 | 285 | |
286 | 286 | // Misc |
287 | - LIB3270_EXPORT int v3270_exec_command(GtkWidget *widget, const gchar *cmdline); | |
288 | 287 | LIB3270_EXPORT void v3270_zoom_best(GtkWidget *widget); |
289 | 288 | LIB3270_EXPORT void v3270_zoom_in(GtkWidget *widget); |
290 | 289 | LIB3270_EXPORT void v3270_zoom_out(GtkWidget *widget); | ... | ... |
src/include/v3270/trace.h
... | ... | @@ -47,6 +47,8 @@ |
47 | 47 | typedef struct _V3270Trace V3270Trace; |
48 | 48 | typedef struct _V3270TraceClass V3270TraceClass; |
49 | 49 | |
50 | + LIB3270_EXPORT GType V3270Trace_get_type(void); | |
51 | + | |
50 | 52 | LIB3270_EXPORT GtkWidget * v3270_trace_new(GtkWidget *terminal); |
51 | 53 | LIB3270_EXPORT void v3270_trace_append_text(GtkWidget *widget, const gchar *text); |
52 | 54 | LIB3270_EXPORT void v3270_trace_vprintf(GtkWidget *widget, const char *fmt, va_list args); |
... | ... | @@ -58,6 +60,8 @@ |
58 | 60 | LIB3270_EXPORT void v3270_trace_save(GtkWidget *widget); |
59 | 61 | LIB3270_EXPORT void v3270_trace_select_file(GtkWidget *widget); |
60 | 62 | |
63 | + LIB3270_EXPORT int v3270_trace_exec_command(GtkWidget *widget, const gchar *cmdline); | |
64 | + | |
61 | 65 | LIB3270_EXPORT GtkWidget * v3270_trace_window_new(GtkWidget *widget, const gchar *header); |
62 | 66 | |
63 | 67 | G_END_DECLS | ... | ... |
src/terminal/properties/init.c
... | ... | @@ -162,7 +162,7 @@ |
162 | 162 | klass->properties.type.toggle = klass->properties.count; |
163 | 163 | for(ix = 0; ix < LIB3270_TOGGLE_COUNT; ix++) |
164 | 164 | { |
165 | - debug("Property %u=%s (Toggle)",(unsigned int) klass->properties.type.toggle + ix, lib3270_get_toggle_name(ix)); | |
165 | +// debug("Property %u=%s (Toggle)",(unsigned int) klass->properties.type.toggle + ix, lib3270_get_toggle_name(ix)); | |
166 | 166 | |
167 | 167 | klass->properties.toggle[ix] = |
168 | 168 | g_param_spec_boolean( |
... | ... | @@ -183,7 +183,7 @@ |
183 | 183 | |
184 | 184 | for(ix = 0; bool_props[ix].name; ix++) |
185 | 185 | { |
186 | - debug("Property %u=%s (Boolean)",(unsigned int) klass->properties.type.boolean + ix, bool_props[ix].name); | |
186 | +// debug("Property %u=%s (Boolean)",(unsigned int) klass->properties.type.boolean + ix, bool_props[ix].name); | |
187 | 187 | spec = g_param_spec_boolean( |
188 | 188 | bool_props[ix].name, |
189 | 189 | bool_props[ix].name, |
... | ... | @@ -202,7 +202,7 @@ |
202 | 202 | |
203 | 203 | for(ix = 0; int_props[ix].name; ix++) |
204 | 204 | { |
205 | - debug("Property %u=%s (Integer)",(unsigned int) klass->properties.type.integer + ix, int_props[ix].name); | |
205 | +// debug("Property %u=%s (Integer)",(unsigned int) klass->properties.type.integer + ix, int_props[ix].name); | |
206 | 206 | |
207 | 207 | spec = g_param_spec_int( |
208 | 208 | int_props[ix].name, |
... | ... | @@ -224,7 +224,7 @@ |
224 | 224 | |
225 | 225 | for(ix = 0; uint_props[ix].name; ix++) |
226 | 226 | { |
227 | - debug("Property %u=%s (unsigned)",(unsigned int) klass->properties.type.integer + ix, uint_props[ix].name); | |
227 | +// debug("Property %u=%s (unsigned)",(unsigned int) klass->properties.type.integer + ix, uint_props[ix].name); | |
228 | 228 | |
229 | 229 | spec = g_param_spec_uint( |
230 | 230 | uint_props[ix].name, |
... | ... | @@ -247,7 +247,7 @@ |
247 | 247 | for(ix = 0; str_props[ix].name; ix++) |
248 | 248 | { |
249 | 249 | |
250 | - debug("Property %u=%s (String)",(unsigned int) klass->properties.type.str + ix, str_props[ix].name); | |
250 | +// debug("Property %u=%s (String)",(unsigned int) klass->properties.type.str + ix, str_props[ix].name); | |
251 | 251 | |
252 | 252 | spec = g_param_spec_string( |
253 | 253 | str_props[ix].name, | ... | ... |
src/testprogram/testprogram.c
... | ... | @@ -70,7 +70,9 @@ |
70 | 70 | } |
71 | 71 | |
72 | 72 | // Create trace window |
73 | - gtk_notebook_append_page(GTK_NOTEBOOK(notebook),v3270_trace_new(terminal),gtk_label_new("Trace")); | |
73 | + GtkWidget *trace = v3270_trace_new(terminal); | |
74 | + debug("Trace=%p",trace); | |
75 | + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),trace,gtk_label_new("Trace")); | |
74 | 76 | // v3270_trace_window_new(terminal,NULL); |
75 | 77 | |
76 | 78 | // Setup and show main window | ... | ... |
src/trace/exec.c
... | ... | @@ -27,22 +27,11 @@ |
27 | 27 | * |
28 | 28 | */ |
29 | 29 | |
30 | - #include <gtk/gtk.h> | |
30 | + #include "private.h" | |
31 | 31 | |
32 | - #define ENABLE_NLS | |
33 | - #define GETTEXT_PACKAGE PACKAGE_NAME | |
34 | - | |
35 | - #include <libintl.h> | |
36 | - #include <glib/gi18n.h> | |
37 | 32 | #include <stdlib.h> |
38 | - | |
39 | - #include <lib3270.h> | |
40 | - #include <lib3270/log.h> | |
41 | - #include <lib3270/trace.h> | |
42 | 33 | #include <lib3270/properties.h> |
43 | 34 | #include <lib3270/actions.h> |
44 | - #include <v3270.h> | |
45 | - #include <v3270/trace.h> | |
46 | 35 | #include <internals.h> |
47 | 36 | |
48 | 37 | static const gchar * get_word(gchar **ptr) |
... | ... | @@ -155,28 +144,28 @@ |
155 | 144 | return 0; |
156 | 145 | } |
157 | 146 | |
158 | - int v3270_exec_command(GtkWidget *widget, const gchar *text) | |
147 | + int v3270_trace_exec_command(GtkWidget *t, const gchar *text) | |
159 | 148 | { |
160 | -// size_t ix; | |
161 | 149 | |
162 | - g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); | |
150 | + g_return_val_if_fail(GTK_IS_V3270_TRACE(t),EINVAL); | |
163 | 151 | |
164 | - H3270 *hSession = v3270_get_session(widget); | |
165 | - g_autofree gchar * cmdline = g_strdup(text); | |
152 | + V3270Trace * trace = GTK_V3270_TRACE(t); | |
153 | + H3270 * hSession = v3270_get_session(trace->terminal); | |
154 | + g_autofree gchar * cmdline = g_strdup(text); | |
166 | 155 | |
167 | 156 | g_strstrip(cmdline); |
168 | 157 | |
169 | - debug("cmdline: \"%s\"",cmdline); | |
158 | + debug("cmdline: \"%s\" widget=%p",cmdline,t); | |
170 | 159 | |
171 | 160 | if(g_str_has_prefix(cmdline,"reload")) |
172 | 161 | { |
173 | - v3270_reload(widget); | |
162 | + v3270_reload(trace->terminal); | |
174 | 163 | return 0; |
175 | 164 | } |
176 | 165 | |
177 | 166 | if(g_str_has_prefix(cmdline,"reconfigure")) |
178 | 167 | { |
179 | - v3270_reconfigure(GTK_V3270(widget)); | |
168 | + v3270_reconfigure(GTK_V3270(trace->terminal)); | |
180 | 169 | return 0; |
181 | 170 | } |
182 | 171 | |
... | ... | @@ -195,15 +184,15 @@ |
195 | 184 | if(!(*arg && g_ascii_strcasecmp(arg,"text"))) |
196 | 185 | { |
197 | 186 | // No argument or "text" copy text. |
198 | - v3270_copy_selection(widget, V3270_SELECT_TEXT, FALSE); | |
187 | + v3270_copy_selection(trace->terminal, V3270_SELECT_TEXT, FALSE); | |
199 | 188 | } |
200 | 189 | else if(!g_ascii_strcasecmp(arg,"table")) |
201 | 190 | { |
202 | - v3270_copy_selection(widget, V3270_SELECT_TABLE, FALSE); | |
191 | + v3270_copy_selection(trace->terminal, V3270_SELECT_TABLE, FALSE); | |
203 | 192 | } |
204 | 193 | else if(!g_ascii_strcasecmp(arg,"append")) |
205 | 194 | { |
206 | - v3270_append_selection(widget,FALSE); | |
195 | + v3270_append_selection(trace->terminal,FALSE); | |
207 | 196 | } |
208 | 197 | else |
209 | 198 | { |
... | ... | @@ -223,15 +212,15 @@ |
223 | 212 | if(!(*arg && g_ascii_strcasecmp(arg,"all"))) |
224 | 213 | { |
225 | 214 | // No argument or "text" copy text. |
226 | - v3270_print_all(widget,NULL); | |
215 | + v3270_print_all(trace->terminal,NULL); | |
227 | 216 | } |
228 | 217 | else if(!g_ascii_strcasecmp(arg,"selected")) |
229 | 218 | { |
230 | - v3270_print_selected(widget,NULL); | |
219 | + v3270_print_selected(trace->terminal,NULL); | |
231 | 220 | } |
232 | 221 | else if(!g_ascii_strcasecmp(arg,"copy")) |
233 | 222 | { |
234 | - v3270_print_copy(widget,NULL); | |
223 | + v3270_print_copy(trace->terminal,NULL); | |
235 | 224 | } |
236 | 225 | else |
237 | 226 | { |
... | ... | @@ -250,11 +239,11 @@ |
250 | 239 | |
251 | 240 | if(!*arg) |
252 | 241 | { |
253 | - v3270_paste(widget); | |
242 | + v3270_paste(trace->terminal); | |
254 | 243 | } |
255 | 244 | else if(!g_ascii_strcasecmp(arg,"text")) |
256 | 245 | { |
257 | - v3270_paste_text(widget); | |
246 | + v3270_paste_text(trace->terminal); | |
258 | 247 | } |
259 | 248 | else |
260 | 249 | { |
... | ... | @@ -269,7 +258,7 @@ |
269 | 258 | gchar * str = strchr(cmdline,'?'); |
270 | 259 | *str = 0; |
271 | 260 | g_strstrip(cmdline); |
272 | - return get_property(widget,cmdline); | |
261 | + return get_property(trace->terminal,cmdline); | |
273 | 262 | } |
274 | 263 | |
275 | 264 | if(strchr(cmdline,'=')) |
... | ... | @@ -278,14 +267,14 @@ |
278 | 267 | *(value++) = 0; |
279 | 268 | g_strstrip(cmdline); |
280 | 269 | g_strstrip(value); |
281 | - return set_property(widget,cmdline,value); | |
270 | + return set_property(trace->terminal,cmdline,value); | |
282 | 271 | } |
283 | 272 | |
284 | 273 | if(g_str_has_prefix(cmdline,"remap")) |
285 | 274 | { |
286 | 275 | gchar *txtptr = cmdline+5; |
287 | 276 | g_strstrip(txtptr); |
288 | - v3270_set_remap_filename(widget,txtptr); | |
277 | + v3270_set_remap_filename(trace->terminal,txtptr); | |
289 | 278 | return 0; |
290 | 279 | } |
291 | 280 | |
... | ... | @@ -294,7 +283,7 @@ |
294 | 283 | gchar *txtptr = cmdline+3; |
295 | 284 | const gchar * name = get_word(&txtptr); |
296 | 285 | g_strstrip(txtptr); |
297 | - return set_property(widget,name,(*txtptr ? txtptr : "1")); | |
286 | + return set_property(trace->terminal,name,(*txtptr ? txtptr : "1")); | |
298 | 287 | } |
299 | 288 | |
300 | 289 | if(g_str_has_prefix(cmdline,"get")) |
... | ... | @@ -302,7 +291,7 @@ |
302 | 291 | gchar *txtptr = cmdline+3; |
303 | 292 | const gchar * name = get_word(&txtptr); |
304 | 293 | g_strstrip(txtptr); |
305 | - return get_property(widget,name); | |
294 | + return get_property(trace->terminal,name); | |
306 | 295 | } |
307 | 296 | |
308 | 297 | if(g_str_has_prefix(cmdline,"reset")) |
... | ... | @@ -310,45 +299,38 @@ |
310 | 299 | gchar *txtptr = cmdline+3; |
311 | 300 | const gchar * name = get_word(&txtptr); |
312 | 301 | g_strstrip(txtptr); |
313 | - return set_property(widget,name,(*txtptr ? txtptr : "0")); | |
302 | + return set_property(trace->terminal,name,(*txtptr ? txtptr : "0")); | |
314 | 303 | } |
315 | 304 | |
316 | 305 | gchar * sep = strchr(cmdline,'='); |
317 | 306 | if(sep) |
318 | 307 | { |
319 | 308 | *(sep++) = 0; |
320 | - return set_property(widget,g_strstrip(cmdline),g_strstrip(sep)); | |
309 | + return set_property(trace->terminal,g_strstrip(cmdline),g_strstrip(sep)); | |
321 | 310 | } |
322 | 311 | else |
323 | 312 | { |
324 | - const LIB3270_ACTION * action = lib3270_get_action(cmdline); | |
313 | + const LIB3270_ACTION * action = lib3270_action_get_by_name(cmdline); | |
325 | 314 | |
326 | 315 | if(action) |
327 | 316 | return lib3270_action_activate(action,hSession); |
328 | 317 | |
329 | - /* | |
330 | - // Check for lib3270 actions. | |
331 | - const LIB3270_ACTION * actions = lib3270_get_actions(); | |
318 | + } | |
332 | 319 | |
333 | - for(ix=0; actions[ix].name; ix++) | |
334 | - { | |
335 | - if(!g_ascii_strcasecmp(actions[ix].name,cmdline)) | |
336 | - { | |
337 | - if(actions[ix].enabled(hSession)) | |
338 | - { | |
339 | - lib3270_trace_event(hSession,"Activating action \"%s\"\n",actions[ix].name); | |
340 | - return actions[ix].activate(hSession); | |
341 | - } | |
342 | - else | |
343 | - { | |
344 | - lib3270_trace_event(hSession,"Action \"%s\" is disabled\n",actions[ix].name); | |
345 | - return EPERM; | |
346 | - } | |
347 | - } | |
348 | - } | |
349 | - */ | |
320 | + // Check for external interpreters | |
321 | + gboolean handled = FALSE; | |
322 | + gchar * args = cmdline; | |
350 | 323 | |
351 | - } | |
324 | + while(*args && !g_ascii_isspace(*args)) | |
325 | + args++; | |
326 | + | |
327 | + if(*args) | |
328 | + *(args++) = 0; | |
329 | + | |
330 | + g_signal_emit(GTK_WIDGET(trace), v3270_trace_signal[V3270_TRACE_SIGNAL_COMMAND], 0, cmdline, args, &handled); | |
331 | + | |
332 | + if(handled) | |
333 | + return 0; | |
352 | 334 | |
353 | 335 | return errno = ENOENT; |
354 | 336 | } | ... | ... |
... | ... | @@ -0,0 +1,97 @@ |
1 | +/* | |
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
5 | + * | |
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
7 | + * | |
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
10 | + * Free Software Foundation. | |
11 | + * | |
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
15 | + * obter mais detalhes. | |
16 | + * | |
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
20 | + * | |
21 | + * Este programa está nomeado como private.h e possui - linhas de código. | |
22 | + * | |
23 | + * Contatos: | |
24 | + * | |
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
27 | + * | |
28 | + */ | |
29 | + | |
30 | +#ifndef PRIVATE_H_INCLUDED | |
31 | + | |
32 | + #include <config.h> | |
33 | + | |
34 | + #include <gtk/gtk.h> | |
35 | + | |
36 | + #define ENABLE_NLS | |
37 | + #define GETTEXT_PACKAGE PACKAGE_NAME | |
38 | + | |
39 | + #include <libintl.h> | |
40 | + #include <glib/gi18n.h> | |
41 | + | |
42 | + #include <v3270.h> | |
43 | + #include <v3270/trace.h> | |
44 | + | |
45 | + #include <lib3270.h> | |
46 | + #include <lib3270/log.h> | |
47 | + #include <lib3270/trace.h> | |
48 | + | |
49 | + /// @brief V3270 Trace Signal list | |
50 | + enum | |
51 | + { | |
52 | + V3270_TRACE_SIGNAL_COMMAND, | |
53 | + | |
54 | + V3270_TRACE_SIGNAL_LAST | |
55 | + }; | |
56 | + | |
57 | + G_GNUC_INTERNAL guint v3270_trace_signal[V3270_TRACE_SIGNAL_LAST]; | |
58 | + | |
59 | + G_BEGIN_DECLS | |
60 | + | |
61 | + struct _V3270TraceClass | |
62 | + { | |
63 | + GtkBoxClass parent_class; | |
64 | + | |
65 | + }; | |
66 | + | |
67 | + struct _V3270Trace | |
68 | + { | |
69 | + | |
70 | + GtkBox parent; | |
71 | + H3270 * hSession; ///< @brief TN3270 Session. | |
72 | + GtkWidget * terminal; ///< @brief V3270 Widget. | |
73 | + GtkScrolledWindow * scroll; | |
74 | + | |
75 | + GtkTextView * view; ///< @brief Text view; | |
76 | + GtkTextBuffer * text; ///< @brief Trace window contents. | |
77 | + GtkEntry * entry; ///< @brief Command line entry. | |
78 | + GtkWidget * buttons; ///< @brief Button bar. | |
79 | + | |
80 | + gchar * filename; ///< @brief Selected file name. | |
81 | + | |
82 | + guint log_handler; ///< @brief GTK Log Handler. | |
83 | + | |
84 | + /// @brief lib3270's saved trace handler. | |
85 | + struct { | |
86 | + void (*handler)(H3270 *session, void *userdata, const char *fmt, va_list args); | |
87 | + void *userdata; | |
88 | + } trace; | |
89 | + | |
90 | + }; | |
91 | + | |
92 | + G_END_DECLS | |
93 | + | |
94 | + | |
95 | + | |
96 | +#endif // PRIVATE_H_INCLUDED | |
97 | + | ... | ... |
src/trace/trace.c
... | ... | @@ -36,62 +36,17 @@ |
36 | 36 | * |
37 | 37 | */ |
38 | 38 | |
39 | - #include <gtk/gtk.h> | |
39 | + #include "private.h" | |
40 | 40 | |
41 | - #define ENABLE_NLS | |
42 | - #define GETTEXT_PACKAGE PACKAGE_NAME | |
43 | - | |
44 | - #include <libintl.h> | |
45 | - #include <glib/gi18n.h> | |
46 | - | |
47 | - #include <v3270.h> | |
48 | - #include <lib3270.h> | |
49 | - #include <lib3270/log.h> | |
50 | - #include <lib3270/trace.h> | |
41 | + #include <lib3270/toggle.h> | |
51 | 42 | #include <lib3270/properties.h> |
52 | - #include <v3270/trace.h> | |
53 | - #include <v3270/dialogs.h> | |
54 | 43 | #include <internals.h> |
55 | - | |
56 | -#if defined( HAVE_SYSLOG ) | |
57 | - #include <syslog.h> | |
58 | -#endif // HAVE_SYSLOG | |
44 | + #include <v3270/dialogs.h> | |
45 | + #include "marshal.h" | |
59 | 46 | |
60 | 47 | /*--[ Widget definition ]----------------------------------------------------------------------------*/ |
61 | 48 | |
62 | - G_BEGIN_DECLS | |
63 | - | |
64 | - struct _V3270TraceClass | |
65 | - { | |
66 | - GtkBoxClass parent_class; | |
67 | - | |
68 | - }; | |
69 | - | |
70 | - struct _V3270Trace | |
71 | - { | |
72 | - GtkBox parent; | |
73 | - H3270 * hSession; ///< @brief TN3270 Session. | |
74 | - GtkWidget * terminal; ///< @brief V3270 Widget. | |
75 | - GtkScrolledWindow * scroll; | |
76 | - | |
77 | - GtkTextView * view; ///< @brief Text view; | |
78 | - GtkTextBuffer * text; ///< @brief Trace window contents. | |
79 | - GtkEntry * entry; ///< @brief Command line entry. | |
80 | - GtkWidget * buttons; ///< @brief Button bar. | |
81 | - | |
82 | - gchar * filename; ///< @brief Selected file name. | |
83 | - | |
84 | - guint log_handler; ///< @brief GTK Log Handler. | |
85 | - | |
86 | - /// @brief lib3270's saved trace handler. | |
87 | - struct { | |
88 | - void (*handler)(H3270 *session, void *userdata, const char *fmt, va_list args); | |
89 | - void *userdata; | |
90 | - } trace; | |
91 | - | |
92 | - }; | |
93 | - | |
94 | - G_END_DECLS | |
49 | + guint v3270_trace_signal[V3270_TRACE_SIGNAL_LAST] = { 0 }; | |
95 | 50 | |
96 | 51 | G_DEFINE_TYPE(V3270Trace, V3270Trace, GTK_TYPE_BOX); |
97 | 52 | |
... | ... | @@ -151,9 +106,23 @@ |
151 | 106 | G_OBJECT_CLASS(V3270Trace_parent_class)->finalize(object); |
152 | 107 | } |
153 | 108 | |
154 | - static void V3270Trace_class_init(G_GNUC_UNUSED V3270TraceClass *klass) | |
109 | + static void V3270Trace_class_init(V3270TraceClass *klass) | |
155 | 110 | { |
156 | - G_OBJECT_CLASS(klass)->finalize = finalize; | |
111 | + GObjectClass * gobject_class = G_OBJECT_CLASS(klass); | |
112 | + | |
113 | + gobject_class->finalize = finalize; | |
114 | + | |
115 | + v3270_trace_signal[V3270_TRACE_SIGNAL_COMMAND] = | |
116 | + g_signal_new( "command", | |
117 | + G_OBJECT_CLASS_TYPE(klass), | |
118 | + G_SIGNAL_RUN_LAST, | |
119 | + 0, | |
120 | + NULL, NULL, | |
121 | + v3270trace_BOOLEAN__POINTER_POINTER, | |
122 | + G_TYPE_BOOLEAN, 2, G_TYPE_POINTER, G_TYPE_POINTER); | |
123 | + | |
124 | + | |
125 | + | |
157 | 126 | } |
158 | 127 | |
159 | 128 | static void v3270_trace_execute(GtkWidget *widget, const gchar *cmd) |
... | ... | @@ -167,7 +136,7 @@ |
167 | 136 | |
168 | 137 | if(trace->terminal) |
169 | 138 | { |
170 | - int rc = v3270_exec_command(trace->terminal,cmd); | |
139 | + int rc = v3270_trace_exec_command(widget,cmd); | |
171 | 140 | if(rc) |
172 | 141 | v3270_trace_printf(widget, "rc=%d (%s)\n",rc,strerror(rc)); |
173 | 142 | } |
... | ... | @@ -249,6 +218,9 @@ |
249 | 218 | |
250 | 219 | static void V3270Trace_init(V3270Trace *widget) |
251 | 220 | { |
221 | + | |
222 | + debug("%s(%p)",__FUNCTION__,widget); | |
223 | + | |
252 | 224 | gtk_orientable_set_orientation(GTK_ORIENTABLE(widget),GTK_ORIENTATION_VERTICAL); |
253 | 225 | |
254 | 226 | // Create toolbar | ... | ... |
v3270.cbp