Commit b6e05fc8b1ec61e401b49e83d43a419e620a8430

Authored by perry.werneck@gmail.com
1 parent 424f5c2c

Iniciando implementacao da janela de trace

pw3270.cbp
... ... @@ -87,6 +87,7 @@
87 87 <Unit filename="src/include/pw3270/hllapi.h" />
88 88 <Unit filename="src/include/pw3270/ipcpackets.h" />
89 89 <Unit filename="src/include/pw3270/plugin.h" />
  90 + <Unit filename="src/include/pw3270/trace.h" />
90 91 <Unit filename="src/include/pw3270/v3270.h" />
91 92 <Unit filename="src/include/rules.mak.in" />
92 93 <Unit filename="src/lib3270/3270ds.h" />
... ... @@ -343,6 +344,9 @@
343 344 <Unit filename="src/pw3270/tools.c">
344 345 <Option compilerVar="CC" />
345 346 </Unit>
  347 + <Unit filename="src/pw3270/trace.c">
  348 + <Option compilerVar="CC" />
  349 + </Unit>
346 350 <Unit filename="src/pw3270/uiparser/Makefile.in" />
347 351 <Unit filename="src/pw3270/uiparser/accelerator.c">
348 352 <Option compilerVar="CC" />
... ...
src/include/pw3270/trace.h 0 → 100644
... ... @@ -0,0 +1,59 @@
  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.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 + * licinio@bb.com.br (Licínio Luis Branco)
  28 + * kraucer@bb.com.br (Kraucer Fernandes Mazuco)
  29 + *
  30 + */
  31 +
  32 +#ifndef PW3270_TRACE_H_INCLUDED
  33 +
  34 + #include <gtk/gtk.h>
  35 + #include <lib3270.h>
  36 +
  37 + #define PW3270_TRACE_H_INCLUDED 1
  38 +
  39 + G_BEGIN_DECLS
  40 +
  41 + #define PW3270_TYPE_TRACE (pw3270_trace_get_type ())
  42 + #define PW3270_TRACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PW3270_TYPE_TRACE, pw3270_trace))
  43 + #define PW3270_TRACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PW3270_TYPE_TRACE, pw3270_traceClass))
  44 + #define IS_PW3270_TRACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PW3270_TYPE_TRACE))
  45 + #define IS_PW3270_TRACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PW3270_TYPE_TRACE))
  46 + #define PW3270_TRACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PW3270_TYPE_TRACE, pw3270_traceClass))
  47 +
  48 + typedef struct _pw3270_trace pw3270_trace;
  49 + typedef struct _pw3270_traceClass pw3270_traceClass;
  50 +
  51 + LIB3270_EXPORT GtkWidget * pw3270_trace_new(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);
  54 + LIB3270_EXPORT void pw3270_trace_printf(GtkWidget *widget, const char *fmt, ... );
  55 +
  56 +
  57 + G_END_DECLS
  58 +
  59 +#endif // V3270_H_INCLUDED
... ...
src/pw3270/Makefile.in
... ... @@ -61,7 +61,7 @@ include uiparser/sources.mak
61 61 APP_SOURCES= main.c @APP_GUI_SRC@
62 62  
63 63 LIB_SOURCES= window.c actions.c fonts.c dialog.c hostdialog.c print.c colors.c \
64   - filetransfer.c tools.c plugin.c \
  64 + filetransfer.c tools.c plugin.c trace.c \
65 65 $(foreach SRC, $(UI_PARSER_SRC), uiparser/$(SRC)) \
66 66 $(foreach SRC, $(V3270_SRC), v3270/$(SRC)) \
67 67 $(foreach SRC, $(COMMON_SRC), common/$(SRC))
... ...
src/pw3270/trace.c 0 → 100644
... ... @@ -0,0 +1,150 @@
  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 + #include <gtk/gtk.h>
  31 +
  32 + #define ENABLE_NLS
  33 + #define GETTEXT_PACKAGE PACKAGE_NAME
  34 +
  35 + #include <libintl.h>
  36 + #include <glib/gi18n.h>
  37 +
  38 + #include <pw3270/trace.h>
  39 + #include <lib3270/log.h>
  40 +
  41 +/*--[ Widget definition ]----------------------------------------------------------------------------*/
  42 +
  43 + G_BEGIN_DECLS
  44 +
  45 + struct _pw3270_traceClass
  46 + {
  47 + GtkWindowClass parent_class;
  48 + };
  49 +
  50 + struct _pw3270_trace
  51 + {
  52 + GtkWindow parent;
  53 + GtkAdjustment * scroll;
  54 + GtkTextBuffer * text;
  55 + GtkWidget * entry;
  56 + GtkWidget * button;
  57 + };
  58 +
  59 + const GtkWindowClass * pw3270_trace_get_parent_class(void);
  60 +
  61 + G_END_DECLS
  62 +
  63 + G_DEFINE_TYPE(pw3270_trace, pw3270_trace, GTK_TYPE_WINDOW);
  64 +
  65 +/*--[ Implement ]------------------------------------------------------------------------------------*/
  66 +
  67 + const GtkWindowClass * pw3270_trace_get_parent_class(void)
  68 + {
  69 + trace("%s",__FUNCTION__);
  70 + return GTK_WINDOW_CLASS(pw3270_trace_parent_class);
  71 + }
  72 +
  73 + static void pw3270_trace_class_init(pw3270_traceClass *klass)
  74 + {
  75 + trace("%s",__FUNCTION__);
  76 + }
  77 +
  78 + static void pw3270_trace_init(pw3270_trace *window)
  79 + {
  80 + GtkWidget *widget;
  81 + GtkWidget *view;
  82 + GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
  83 +
  84 + // Trace container
  85 + widget = gtk_scrolled_window_new(NULL,NULL);
  86 + window->scroll = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(widget));
  87 + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
  88 + view = gtk_text_view_new();
  89 + window->text = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
  90 + gtk_text_view_set_editable(GTK_TEXT_VIEW(view), FALSE);
  91 +#if GTK_CHECK_VERSION(3,8,0)
  92 + gtk_container_add(GTK_CONTAINER(widget),view);
  93 +#else
  94 + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(widget),view);
  95 +#endif // GTK_CHECK_VERSION
  96 + gtk_box_pack_start(GTK_BOX(vbox),widget,TRUE,TRUE,0);
  97 +
  98 + // Edit box
  99 + widget = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0);
  100 + gtk_box_pack_start(GTK_BOX(widget),gtk_label_new( _( "Command:" )),FALSE,TRUE,4);
  101 + window->entry = gtk_entry_new();
  102 + gtk_box_pack_start(GTK_BOX(widget),window->entry,TRUE,TRUE,4);
  103 + gtk_widget_set_sensitive(window->entry,FALSE);
  104 +
  105 + window->button = gtk_button_new_from_stock(GTK_STOCK_OK);
  106 + gtk_box_pack_end(GTK_BOX(widget),window->button,FALSE,FALSE,4);
  107 + gtk_widget_set_sensitive(window->button,FALSE);
  108 + gtk_button_set_focus_on_click(GTK_BUTTON(window->button),FALSE);
  109 +
  110 + gtk_box_pack_start(GTK_BOX(vbox),widget,FALSE,TRUE,0);
  111 +
  112 + gtk_widget_show_all(vbox);
  113 +
  114 + gtk_container_add(GTK_CONTAINER(window),vbox);
  115 + }
  116 +
  117 + GtkWidget * pw3270_trace_new(void)
  118 + {
  119 + return g_object_new(PW3270_TYPE_TRACE, NULL);
  120 + }
  121 +
  122 + void pw3270_trace_vprintf(GtkWidget *widget, const char *fmt, va_list args)
  123 + {
  124 + GtkTextIter itr;
  125 + gchar * msg;
  126 + pw3270_trace * hwnd = PW3270_TRACE(widget);
  127 +
  128 + gtk_text_buffer_get_end_iter(hwnd->text,&itr);
  129 +
  130 + msg = g_strdup_vprintf(fmt,args);
  131 + gtk_text_buffer_insert(hwnd->text,&itr,msg,strlen(msg));
  132 + g_free(msg);
  133 +
  134 + gtk_text_buffer_get_end_iter(hwnd->text,&itr);
  135 +
  136 +#if GTK_CHECK_VERSION(2,14,0)
  137 + gtk_adjustment_set_value(hwnd->scroll,gtk_adjustment_get_upper(hwnd->scroll));
  138 +#else
  139 + gtk_adjustment_set_value(hwnd->scroll,(GTK_ADJUSTMENT(hwnd->scroll))->upper);
  140 +#endif //
  141 +
  142 + }
  143 +
  144 + void pw3270_trace_printf(GtkWidget *widget, const char *fmt, ... )
  145 + {
  146 + va_list arg_ptr;
  147 + va_start(arg_ptr, fmt);
  148 + pw3270_trace_vprintf(widget,fmt,arg_ptr);
  149 + va_end(arg_ptr);
  150 + }
... ...