From e48617d5fac3a12348f62e6b375ed450ce8e81d8 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Mon, 1 Jul 2019 13:51:41 -0300 Subject: [PATCH] Working on debug window. --- src/testprogram/testprogram.c | 4 ++++ src/trace/exec.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 0 deletions(-) diff --git a/src/testprogram/testprogram.c b/src/testprogram/testprogram.c index bccc4b8..27d6d2d 100644 --- a/src/testprogram/testprogram.c +++ b/src/testprogram/testprogram.c @@ -258,6 +258,10 @@ static GtkToolItem * create_tool_item(GtkWidget *terminal, const gchar *label, c GtkToolItem * item = gtk_toggle_tool_button_new(); gtk_tool_button_set_label(GTK_TOOL_BUTTON(item),label); + gtk_widget_set_can_focus(item,FALSE); + gtk_widget_set_can_default(item,FALSE); + gtk_widget_set_focus_on_click(item,FALSE); + g_signal_connect(GTK_WIDGET(item), "toggled", G_CALLBACK(callback), terminal); if(tooltip) diff --git a/src/trace/exec.c b/src/trace/exec.c index c4631f1..ff2f6f7 100644 --- a/src/trace/exec.c +++ b/src/trace/exec.c @@ -107,6 +107,42 @@ } + static int get_property(GtkWidget *widget, const gchar *name) + { + GParamSpec * spec = g_object_class_find_property(G_OBJECT_GET_CLASS(widget),name); + + if(!spec) { + return errno = ENOENT; + } + + GValue val = G_VALUE_INIT; + + g_value_init(&val, spec->value_type); + g_object_get_property(G_OBJECT(widget),name,&val); + + switch(spec->value_type) + { + case G_TYPE_STRING: + lib3270_write_trace(v3270_get_session(widget),"%s=%s",spec->name,g_value_get_string(&val)); + break; + + case G_TYPE_BOOLEAN: + lib3270_write_trace(v3270_get_session(widget),"%s=%s",spec->name,(g_value_get_boolean(&val) ? "true" : "false")); + break; + + case G_TYPE_INT: + lib3270_write_trace(v3270_get_session(widget),"%s=%d",spec->name,g_value_get_int(&val)); + break; + + default: + lib3270_write_trace(v3270_get_session(widget),"%s has an unexpected value type",spec->name); + + } + + g_value_unset(&val); + return 0; + } + int v3270_exec_command(GtkWidget *widget, const gchar *text) { size_t ix; @@ -138,6 +174,14 @@ return set_property(hSession,name,(*txtptr ? txtptr : "1")); } + if(g_str_has_prefix(cmdline,"get")) + { + gchar *txtptr = cmdline+3; + const gchar * name = get_word(&txtptr); + g_strstrip(txtptr); + return get_property(widget,name); + } + if(g_str_has_prefix(cmdline,"reset")) { gchar *txtptr = cmdline+3; -- libgit2 0.21.2