Commit be2f90f93fb52fb0befd52ac1be383d544e146a9

Authored by Perry Werneck
1 parent 2d3ee143
Exists in master and in 1 other branch develop

Implementing trace property.

src/include/terminal.h
... ... @@ -55,6 +55,7 @@ G_BEGIN_DECLS
55 55 GParamSpec * remap_file;
56 56 GParamSpec * dynamic_spacing;
57 57 GParamSpec * lu_names;
  58 + GParamSpec * trace;
58 59  
59 60 struct
60 61 {
... ...
src/terminal/properties/get.c
... ... @@ -112,6 +112,10 @@
112 112 g_value_take_string(value,v3270_get_lunames(GTK_WIDGET(object)));
113 113 break;
114 114  
  115 + case V3270_PROPERTY_TRACE:
  116 + g_value_set_boolean(value,v3270_get_trace(GTK_WIDGET(object)));
  117 + break;
  118 +
115 119 default:
116 120 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
117 121  
... ...
src/terminal/properties/init.c
... ... @@ -179,6 +179,19 @@
179 179 klass->properties.lu_names
180 180 );
181 181  
  182 + // Trace
  183 + klass->properties.trace = g_param_spec_boolean(
  184 + "trace",
  185 + "trace",
  186 + _( "Trace window" ),
  187 + FALSE,
  188 + G_PARAM_READABLE|G_PARAM_WRITABLE);
  189 +
  190 + g_object_class_install_property(
  191 + gobject_class,
  192 + V3270_PROPERTY_TRACE,
  193 + klass->properties.trace
  194 + );
182 195  
183 196 //
184 197 // Create dynamic properties
... ...
src/terminal/properties/private.h
... ... @@ -55,9 +55,10 @@
55 55 V3270_PROPERTY_REMAP_FILE = 6, ///< @brief Path of the remap file.
56 56 V3270_PROPERTY_DYNAMIC_SPACING = 7, ///< @brief Toggle dynamic font spacing.
57 57 V3270_PROPERTY_LU_NAMES = 8, ///< @brief The LU names list.
  58 + V3270_PROPERTY_TRACE = 9, ///< @brief Is the trace widget active?
58 59  
59 60  
60   - V3270_PROPERTY_DYNAMIC = 9 ///< @brief Id of the first LIB3270 internal property.
  61 + V3270_PROPERTY_DYNAMIC = 10 ///< @brief Id of the first LIB3270 internal property.
61 62 };
62 63  
63 64 G_GNUC_INTERNAL void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec);
... ...
src/terminal/properties/set.c
... ... @@ -130,6 +130,10 @@
130 130 v3270_set_lunames(GTK_WIDGET(object),g_value_get_string(value));
131 131 break;
132 132  
  133 + case V3270_PROPERTY_TRACE:
  134 + v3270_set_trace(GTK_WIDGET(object), g_value_get_boolean(value));
  135 + break;
  136 +
133 137 default:
134 138 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
135 139  
... ...
src/trace/property.c 0 → 100644
... ... @@ -0,0 +1,112 @@
  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 trace.c 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 +/**
  31 + * SECTION:V3270Trace
  32 + * @Short_description: A trace monitor widget.
  33 + * @Title: V3270Trace
  34 + *
  35 + * The #V3270Trace shows a text area with the lib3270 trace output.
  36 + *
  37 + */
  38 +
  39 + #include "private.h"
  40 +
  41 + #include <terminal.h>
  42 + #include <internals.h>
  43 + #include <v3270/dialogs.h>
  44 +
  45 +/*--[ Implement ]------------------------------------------------------------------------------------*/
  46 +
  47 + gboolean v3270_get_trace(GtkWidget *terminal)
  48 + {
  49 + return GTK_V3270(terminal)->trace != NULL;
  50 + }
  51 +
  52 + static gboolean bg_remove_trace(v3270 *terminal)
  53 + {
  54 + if(!terminal->trace)
  55 + return FALSE;
  56 +
  57 + // Destroy trace window.
  58 + GtkWidget * parent = gtk_widget_get_parent(terminal->trace);
  59 +
  60 + if(GTK_IS_NOTEBOOK(parent))
  61 + {
  62 + debug("%s: Parent window %s",__FUNCTION__,"is a notebook");
  63 + gtk_notebook_remove_page(
  64 + GTK_NOTEBOOK(parent),
  65 + gtk_notebook_page_num(GTK_NOTEBOOK(parent),terminal->trace)
  66 + );
  67 + }
  68 + else if(GTK_IS_WINDOW(parent))
  69 + {
  70 + debug("%s: Parent window %s",__FUNCTION__,"is a window");
  71 + gtk_widget_destroy(parent);
  72 + }
  73 + else if(GTK_IS_CONTAINER(parent))
  74 + {
  75 + debug("%s: Parent window %s",__FUNCTION__,"is a container");
  76 + gtk_container_remove(GTK_CONTAINER(parent),terminal->trace);
  77 +
  78 + }
  79 + else
  80 + {
  81 + g_warning("Can't remove trace window from parent widget");
  82 + }
  83 +
  84 +
  85 + return FALSE;
  86 + }
  87 +
  88 + void v3270_set_trace(GtkWidget *widget, gboolean trace)
  89 + {
  90 + g_return_if_fail(GTK_IS_V3270(widget));
  91 +
  92 + v3270 * terminal = GTK_V3270(widget);
  93 +
  94 + if(trace)
  95 + {
  96 + debug("%s: trace is %s",__FUNCTION__,"ON");
  97 +
  98 + if(terminal->trace)
  99 + return;
  100 +
  101 + // Create trace window
  102 +
  103 + }
  104 + else
  105 + {
  106 + debug("%s: trace is %s",__FUNCTION__,"OFF");
  107 + g_idle_add((GSourceFunc) bg_remove_trace, GTK_V3270(widget));
  108 +
  109 + }
  110 +
  111 +
  112 + }
... ...
src/trace/trace.c
... ... @@ -490,12 +490,4 @@
490 490 return GTK_V3270_TRACE(widget)->scroll;
491 491 }
492 492  
493   - gboolean v3270_get_trace(GtkWidget *terminal)
494   - {
495   - return GTK_V3270(terminal)->trace != NULL;
496   - }
497 493  
498   - void v3270_set_trace(GtkWidget *terminal, gboolean trace)
499   - {
500   -
501   - }
... ...
v3270.cbp
... ... @@ -307,6 +307,9 @@
307 307 <Option compilerVar="CC" />
308 308 </Unit>
309 309 <Unit filename="src/trace/private.h" />
  310 + <Unit filename="src/trace/property.c">
  311 + <Option compilerVar="CC" />
  312 + </Unit>
310 313 <Unit filename="src/trace/text.c">
311 314 <Option compilerVar="CC" />
312 315 </Unit>
... ...