diff --git a/pw3270.cbp b/pw3270.cbp
index 9703388..71d2da9 100644
--- a/pw3270.cbp
+++ b/pw3270.cbp
@@ -9,8 +9,8 @@
-
-
+
+
@@ -20,8 +20,8 @@
-
-
+
+
@@ -35,292 +35,292 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
-
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
-
+
-
-
-
+
+
+
diff --git a/src/include/lib3270/v3270.h b/src/include/lib3270/v3270.h
new file mode 100644
index 0000000..c27a448
--- /dev/null
+++ b/src/include/lib3270/v3270.h
@@ -0,0 +1,193 @@
+/*
+ * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
+ * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
+ * aplicativos mainframe. Registro no INPI sob o nome G3270.
+ *
+ * Copyright (C) <2008>
+ *
+ * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
+ * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
+ * Free Software Foundation.
+ *
+ * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
+ * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
+ * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
+ * obter mais detalhes.
+ *
+ * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
+ * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA, 02111-1307, USA
+ *
+ * Este programa está nomeado como v3270.h e possui - linhas de código.
+ *
+ * Contatos:
+ *
+ * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
+ * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
+ * licinio@bb.com.br (Licínio Luis Branco)
+ * kraucer@bb.com.br (Kraucer Fernandes Mazuco)
+ *
+ */
+
+#ifndef V3270_H_INCLUDED
+
+ #include
+ #include
+
+ #define V3270_H_INCLUDED 1
+
+ G_BEGIN_DECLS
+
+ #define GTK_TYPE_V3270 (v3270_get_type ())
+ #define GTK_V3270(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270, v3270))
+ #define GTK_V3270_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270, v3270Class))
+ #define GTK_IS_V3270(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_V3270))
+ #define GTK_IS_V3270_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270))
+ #define GTK_V3270_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270, v3270Class))
+
+
+ typedef struct _v3270 v3270;
+ typedef struct _v3270Class v3270Class;
+
+ enum V3270_COLOR
+ {
+ V3270_COLOR_BACKGROUND,
+ V3270_COLOR_BLUE,
+ V3270_COLOR_RED,
+ V3270_COLOR_PINK,
+ V3270_COLOR_GREEN,
+ V3270_COLOR_TURQUOISE,
+ V3270_COLOR_YELLOW,
+ V3270_COLOR_WHITE,
+ V3270_COLOR_BLACK,
+ V3270_COLOR_DARK_BLUE,
+ V3270_COLOR_ORANGE,
+ V3270_COLOR_PURPLE,
+ V3270_COLOR_DARK_GREEN,
+ V3270_COLOR_DARK_TURQUOISE,
+ V3270_COLOR_MUSTARD,
+ V3270_COLOR_GRAY,
+
+ V3270_COLOR_FIELD,
+ V3270_COLOR_FIELD_INTENSIFIED,
+ V3270_COLOR_FIELD_PROTECTED,
+ V3270_COLOR_FIELD_PROTECTED_INTENSIFIED,
+
+ V3270_COLOR_SELECTED_BG,
+ V3270_COLOR_SELECTED_FG,
+
+ V3270_COLOR_CROSS_HAIR,
+
+ // Oia Colors (Must be the last block)
+ V3270_COLOR_OIA_BACKGROUND,
+ V3270_COLOR_OIA_FOREGROUND,
+ V3270_COLOR_OIA_SEPARATOR,
+ V3270_COLOR_OIA_STATUS_OK,
+ V3270_COLOR_OIA_STATUS_INVALID,
+
+ V3270_COLOR_COUNT
+ };
+
+ #define V3270_COLOR_OIA_STATUS_WARNING V3270_COLOR_OIA_STATUS_OK
+
+ typedef enum _v3270_oia_field
+ {
+ V3270_OIA_UNDERA, /**< "A" underlined */
+ V3270_OIA_CONNECTION, /**< solid box if connected, "?" in a box if not */
+ V3270_OIA_MESSAGE, /**< message area */
+ V3270_OIA_SSL, /**< SSL Status */
+ /**< Meta indication ("M" or blank) */
+ V3270_OIA_ALT, /**< Alt indication ("A" or blank) */
+ /**< Compose indication ("C" or blank) */
+ /**< Compose first character */
+ V3270_OIA_SHIFT, /**< Shift Status */
+ V3270_OIA_TYPEAHEAD, /**< Typeahead indication ("T" or blank) */
+ V3270_OIA_INSERT, /**< Insert mode indication (Special symbol/"I" or blank) */
+ V3270_OIA_SCRIPT, /**< Script indication ("S" or blank) */
+ V3270_OIA_LUNAME, /**< LU Name */
+ V3270_OIA_SPINNER, /**< command timing spinner */
+ V3270_OIA_TIMER, /**< command timing (mmm:ss, or blank) */
+ V3270_OIA_CURSOR_POSITION, /**< cursor position (rrr/ccc or blank) */
+
+// V3270_OIA_CAPS, /**< Caps indication ("A" or blank) */
+
+#ifdef X3270_PRINTER
+ V3270_OIA_PRINTER, /**< Printer indication ("P" or blank) */
+#endif // X3270_PRINTER
+
+ V3270_OIA_FIELD_COUNT
+
+ } V3270_OIA_FIELD;
+
+
+ #define V3270_COLOR_OIA_SPINNER V3270_COLOR_OIA_FOREGROUND
+ #define V3270_COLOR_OIA_LUNAME V3270_COLOR_OIA_FOREGROUND
+ #define V3270_COLOR_OIA_INSERT V3270_COLOR_OIA_FOREGROUND
+
+ #ifndef v3270char
+ #define v3270char void
+ #endif // v3270_char
+
+ GtkWidget * v3270_new(void);
+ GType v3270_get_type(void);
+
+ void v3270_reload(GtkWidget * widget);
+
+ void v3270_set_font_family(GtkWidget *widget, const gchar *name);
+ const gchar * v3270_get_font_family(GtkWidget *widget);
+
+ H3270 * v3270_get_session(GtkWidget *widget);
+
+ int v3270_connect(GtkWidget *widget, const gchar *host);
+ void v3270_disconnect(GtkWidget *widget);
+
+ // Clipboard
+ typedef enum _v3270_select_format
+ {
+ V3270_SELECT_TEXT,
+ V3270_SELECT_TABLE,
+
+ V3270_SELECT_MAX
+ } V3270_SELECT_FORMAT;
+
+ const gchar * v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode);
+ const gchar * v3270_copy_append(GtkWidget *widget);
+
+ const gchar * v3270_get_selected_text(GtkWidget *widget);
+ const gchar * v3270_get_copy(GtkWidget *widget);
+ gchar * v3270_get_text(GtkWidget *widget,int offset, int len);
+ gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all);
+
+ void v3270_set_string(GtkWidget *widget, const gchar *str);
+ void v3270_tab(GtkWidget *widget);
+ void v3270_backtab(GtkWidget *widget);
+
+ // Cut & Paste
+ gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end);
+ void v3270_unselect(GtkWidget *widget);
+ void v3270_paste(GtkWidget *widget);
+ void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding);
+ void v3270_select_region(GtkWidget *widget, gint start, gint end);
+
+ // Colors
+ void v3270_set_colors(GtkWidget *widget, const gchar *);
+ void v3270_set_color_table(GdkColor *table, const gchar *colors);
+ const GdkColor * v3270_get_color_table(GtkWidget *widget);
+ void v3270_set_mono_color_table(GdkColor *table, const gchar *fg, const gchar *bg);
+ void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkColor *color);
+ void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkColor *color);
+ GdkColor * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id);
+
+ // Misc
+ GtkIMContext * v3270_get_im_context(GtkWidget *widget);
+ gboolean v3270_get_toggle(GtkWidget *widget, LIB3270_TOGGLE ix);
+ void v3270_popup_message(GtkWidget *widget, LIB3270_NOTIFY type, const gchar *title, const gchar *message, const gchar *text);
+ const gchar * v3270_get_session_name(GtkWidget *widget);
+ void v3270_set_session_name(GtkWidget *widget, const gchar *name);
+
+ void v3270_set_host(GtkWidget *widget, const gchar *uri);
+
+
+G_END_DECLS
+
+#endif // V3270_H_INCLUDED
diff --git a/src/pw3270/actions.c b/src/pw3270/actions.c
index fdcb32f..12f2665 100644
--- a/src/pw3270/actions.c
+++ b/src/pw3270/actions.c
@@ -31,7 +31,7 @@
#include "globals.h"
#include "uiparser/parser.h"
- #include "v3270/v3270.h"
+ #include
#include "filetransfer.h"
#include
#include
diff --git a/src/pw3270/dialog.c b/src/pw3270/dialog.c
index 343ed20..f03d876 100644
--- a/src/pw3270/dialog.c
+++ b/src/pw3270/dialog.c
@@ -30,7 +30,7 @@
*/
#include "globals.h"
- #include "v3270/v3270.h"
+ #include
/*--[ Implement ]------------------------------------------------------------------------------------*/
diff --git a/src/pw3270/globals.h b/src/pw3270/globals.h
index 2ab6c7f..a19894b 100644
--- a/src/pw3270/globals.h
+++ b/src/pw3270/globals.h
@@ -37,7 +37,7 @@
#include
#include
- #include "v3270/v3270.h"
+ #include
// Special actions
enum
diff --git a/src/pw3270/main.c b/src/pw3270/main.c
index 5db07fc..f1c046c 100644
--- a/src/pw3270/main.c
+++ b/src/pw3270/main.c
@@ -31,7 +31,7 @@
#include
#include "globals.h"
-#include "v3270/v3270.h"
+ #include
#include "v3270/accessible.h"
#include
diff --git a/src/pw3270/print.c b/src/pw3270/print.c
index 05dc998..8aea210 100644
--- a/src/pw3270/print.c
+++ b/src/pw3270/print.c
@@ -30,7 +30,7 @@
*/
#include "globals.h"
- #include "v3270/v3270.h"
+ #include
#include
/*--[ Structs ]--------------------------------------------------------------------------------------*/
diff --git a/src/pw3270/v3270/accessible.c b/src/pw3270/v3270/accessible.c
index 4466734..2495f76 100644
--- a/src/pw3270/v3270/accessible.c
+++ b/src/pw3270/v3270/accessible.c
@@ -38,7 +38,7 @@
#include
#include
- #include "v3270.h"
+ #include
#include "private.h"
#include "accessible.h"
diff --git a/src/pw3270/v3270/draw.c b/src/pw3270/v3270/draw.c
index cce874c..b8e757b 100644
--- a/src/pw3270/v3270/draw.c
+++ b/src/pw3270/v3270/draw.c
@@ -31,7 +31,7 @@
#include
#include
#include
- #include "v3270.h"
+ #include
#include "private.h"
/*--[ Implement ]------------------------------------------------------------------------------------*/
diff --git a/src/pw3270/v3270/keyboard.c b/src/pw3270/v3270/keyboard.c
index 2df394d..9e181c3 100644
--- a/src/pw3270/v3270/keyboard.c
+++ b/src/pw3270/v3270/keyboard.c
@@ -38,7 +38,7 @@
#include
#include
- #include "v3270.h"
+ #include
#include "private.h"
#if GTK_CHECK_VERSION(3,0,0)
diff --git a/src/pw3270/v3270/mouse.c b/src/pw3270/v3270/mouse.c
index 251bf3b..8cfeff3 100644
--- a/src/pw3270/v3270/mouse.c
+++ b/src/pw3270/v3270/mouse.c
@@ -30,7 +30,7 @@
#include
#include
#include
- #include "v3270.h"
+ #include
#include "private.h"
#include
#include
diff --git a/src/pw3270/v3270/oia.c b/src/pw3270/v3270/oia.c
index 237d8ae..94e55e4 100644
--- a/src/pw3270/v3270/oia.c
+++ b/src/pw3270/v3270/oia.c
@@ -39,7 +39,7 @@
#include
#endif // HAVE_LIBM
- #include "v3270.h"
+ #include
#include "private.h"
/*--[ Prototipes ]-----------------------------------------------------------------------------------*/
diff --git a/src/pw3270/v3270/private.h b/src/pw3270/v3270/private.h
index 6fc35e1..626618a 100644
--- a/src/pw3270/v3270/private.h
+++ b/src/pw3270/v3270/private.h
@@ -38,7 +38,7 @@
#include
#ifndef V3270_H_INCLUDED
- #include "v3270.h"
+ #include
#endif
G_BEGIN_DECLS
@@ -176,8 +176,9 @@ G_BEGIN_DECLS
// Acessibility
GtkAccessible * accessible;
- // lib3270 stuff
+ // Session
H3270 * host; /**< Related 3270 session */
+ gchar * session_name; /**< Session name (for window title) */
};
diff --git a/src/pw3270/v3270/selection.c b/src/pw3270/v3270/selection.c
index 8fbad4a..1622186 100644
--- a/src/pw3270/v3270/selection.c
+++ b/src/pw3270/v3270/selection.c
@@ -29,7 +29,7 @@
#include
#include
- #include "v3270.h"
+ #include
#include "private.h"
#include
#include
diff --git a/src/pw3270/v3270/v3270.h b/src/pw3270/v3270/v3270.h
deleted file mode 100644
index ec62fd0..0000000
--- a/src/pw3270/v3270/v3270.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
- * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
- * aplicativos mainframe. Registro no INPI sob o nome G3270.
- *
- * Copyright (C) <2008>
- *
- * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
- * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
- * Free Software Foundation.
- *
- * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
- * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
- * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
- * obter mais detalhes.
- *
- * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
- * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA, 02111-1307, USA
- *
- * Este programa está nomeado como v3270.h e possui - linhas de código.
- *
- * Contatos:
- *
- * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
- * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
- * licinio@bb.com.br (Licínio Luis Branco)
- * kraucer@bb.com.br (Kraucer Fernandes Mazuco)
- *
- */
-
-#ifndef V3270_H_INCLUDED
-
- #include
- #include
-
- #define V3270_H_INCLUDED 1
-
- G_BEGIN_DECLS
-
- #define GTK_TYPE_V3270 (v3270_get_type ())
- #define GTK_V3270(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270, v3270))
- #define GTK_V3270_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270, v3270Class))
- #define GTK_IS_V3270(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_V3270))
- #define GTK_IS_V3270_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270))
- #define GTK_V3270_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270, v3270Class))
-
-
- typedef struct _v3270 v3270;
- typedef struct _v3270Class v3270Class;
-
- enum V3270_COLOR
- {
- V3270_COLOR_BACKGROUND,
- V3270_COLOR_BLUE,
- V3270_COLOR_RED,
- V3270_COLOR_PINK,
- V3270_COLOR_GREEN,
- V3270_COLOR_TURQUOISE,
- V3270_COLOR_YELLOW,
- V3270_COLOR_WHITE,
- V3270_COLOR_BLACK,
- V3270_COLOR_DARK_BLUE,
- V3270_COLOR_ORANGE,
- V3270_COLOR_PURPLE,
- V3270_COLOR_DARK_GREEN,
- V3270_COLOR_DARK_TURQUOISE,
- V3270_COLOR_MUSTARD,
- V3270_COLOR_GRAY,
-
- V3270_COLOR_FIELD,
- V3270_COLOR_FIELD_INTENSIFIED,
- V3270_COLOR_FIELD_PROTECTED,
- V3270_COLOR_FIELD_PROTECTED_INTENSIFIED,
-
- V3270_COLOR_SELECTED_BG,
- V3270_COLOR_SELECTED_FG,
-
- V3270_COLOR_CROSS_HAIR,
-
- // Oia Colors (Must be the last block)
- V3270_COLOR_OIA_BACKGROUND,
- V3270_COLOR_OIA_FOREGROUND,
- V3270_COLOR_OIA_SEPARATOR,
- V3270_COLOR_OIA_STATUS_OK,
- V3270_COLOR_OIA_STATUS_INVALID,
-
- V3270_COLOR_COUNT
- };
-
- #define V3270_COLOR_OIA_STATUS_WARNING V3270_COLOR_OIA_STATUS_OK
-
- typedef enum _v3270_oia_field
- {
- V3270_OIA_UNDERA, /**< "A" underlined */
- V3270_OIA_CONNECTION, /**< solid box if connected, "?" in a box if not */
- V3270_OIA_MESSAGE, /**< message area */
- V3270_OIA_SSL, /**< SSL Status */
- /**< Meta indication ("M" or blank) */
- V3270_OIA_ALT, /**< Alt indication ("A" or blank) */
- /**< Compose indication ("C" or blank) */
- /**< Compose first character */
- V3270_OIA_SHIFT, /**< Shift Status */
- V3270_OIA_TYPEAHEAD, /**< Typeahead indication ("T" or blank) */
- V3270_OIA_INSERT, /**< Insert mode indication (Special symbol/"I" or blank) */
- V3270_OIA_SCRIPT, /**< Script indication ("S" or blank) */
- V3270_OIA_LUNAME, /**< LU Name */
- V3270_OIA_SPINNER, /**< command timing spinner */
- V3270_OIA_TIMER, /**< command timing (mmm:ss, or blank) */
- V3270_OIA_CURSOR_POSITION, /**< cursor position (rrr/ccc or blank) */
-
-// V3270_OIA_CAPS, /**< Caps indication ("A" or blank) */
-
-#ifdef X3270_PRINTER
- V3270_OIA_PRINTER, /**< Printer indication ("P" or blank) */
-#endif // X3270_PRINTER
-
- V3270_OIA_FIELD_COUNT
-
- } V3270_OIA_FIELD;
-
-
- #define V3270_COLOR_OIA_SPINNER V3270_COLOR_OIA_FOREGROUND
- #define V3270_COLOR_OIA_LUNAME V3270_COLOR_OIA_FOREGROUND
- #define V3270_COLOR_OIA_INSERT V3270_COLOR_OIA_FOREGROUND
-
- #ifndef v3270char
- #define v3270char void
- #endif // v3270_char
-
- GtkWidget * v3270_new(void);
- GType v3270_get_type(void);
-
- void v3270_reload(GtkWidget * widget);
-
- void v3270_set_font_family(GtkWidget *widget, const gchar *name);
- const gchar * v3270_get_font_family(GtkWidget *widget);
-
- H3270 * v3270_get_session(GtkWidget *widget);
-
- int v3270_connect(GtkWidget *widget, const gchar *host);
- void v3270_disconnect(GtkWidget *widget);
-
- // Clipboard
- typedef enum _v3270_select_format
- {
- V3270_SELECT_TEXT,
- V3270_SELECT_TABLE,
-
- V3270_SELECT_MAX
- } V3270_SELECT_FORMAT;
-
- const gchar * v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode);
- const gchar * v3270_copy_append(GtkWidget *widget);
-
- const gchar * v3270_get_selected_text(GtkWidget *widget);
- const gchar * v3270_get_copy(GtkWidget *widget);
- gchar * v3270_get_text(GtkWidget *widget,int offset, int len);
- gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all);
-
- void v3270_set_string(GtkWidget *widget, const gchar *str);
- void v3270_tab(GtkWidget *widget);
- void v3270_backtab(GtkWidget *widget);
-
- // Cut & Paste
- gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end);
- void v3270_unselect(GtkWidget *widget);
- void v3270_paste(GtkWidget *widget);
- void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding);
- void v3270_select_region(GtkWidget *widget, gint start, gint end);
-
- // Colors
- void v3270_set_colors(GtkWidget *widget, const gchar *);
- void v3270_set_color_table(GdkColor *table, const gchar *colors);
- const GdkColor * v3270_get_color_table(GtkWidget *widget);
- void v3270_set_mono_color_table(GdkColor *table, const gchar *fg, const gchar *bg);
- void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkColor *color);
- void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkColor *color);
- GdkColor * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id);
-
- // Misc
- GtkIMContext * v3270_get_im_context(GtkWidget *widget);
- gboolean v3270_get_toggle(GtkWidget *widget, LIB3270_TOGGLE ix);
- void v3270_popup_message(GtkWidget *widget, LIB3270_NOTIFY type, const gchar *title, const gchar *message, const gchar *text);
-
- void v3270_set_host(GtkWidget *widget, const gchar *uri);
-
-
-G_END_DECLS
-
-#endif // V3270_H_INCLUDED
diff --git a/src/pw3270/v3270/widget.c b/src/pw3270/v3270/widget.c
index 67ccf40..4cdb7f7 100644
--- a/src/pw3270/v3270/widget.c
+++ b/src/pw3270/v3270/widget.c
@@ -38,7 +38,7 @@
#include
#endif // HAVE_MALLOC_H
- #include "v3270.h"
+ #include
#include "private.h"
#include "accessible.h"
#include "marshal.h"
@@ -898,6 +898,12 @@ static void v3270_destroy(GtkObject *widget)
terminal->clipboard = NULL;
}
+ if(terminal->session_name)
+ {
+ g_free(terminal->session_name);
+ terminal->session_name = NULL;
+ }
+
#if GTK_CHECK_VERSION(3,0,0)
GTK_WIDGET_CLASS(v3270_parent_class)->destroy(widget);
#else
@@ -1373,3 +1379,21 @@ void v3270_set_host(GtkWidget *widget, const gchar *uri)
g_return_if_fail(uri != NULL);
lib3270_set_host(GTK_V3270(widget)->host,uri);
}
+
+const gchar * v3270_get_session_name(GtkWidget *widget)
+{
+ if(!GTK_IS_V3270(widget) || GTK_V3270(widget)->session_name == NULL)
+ return g_get_application_name();
+ return GTK_V3270(widget)->session_name;
+}
+
+void v3270_set_session_name(GtkWidget *widget, const gchar *name)
+{
+ g_return_if_fail(GTK_IS_V3270(widget));
+ g_return_if_fail(name != NULL);
+
+ if(GTK_V3270(widget)->session_name)
+ g_free(GTK_V3270(widget)->session_name);
+
+ GTK_V3270(widget)->session_name = g_strdup(name);
+}
diff --git a/src/pw3270/window.c b/src/pw3270/window.c
index 0a997af..ab0093c 100644
--- a/src/pw3270/window.c
+++ b/src/pw3270/window.c
@@ -257,21 +257,38 @@
gtk_action_set_sensitive(action[ACTION_PASTENEXT],on);
}
- static void disconnected(GtkWidget *widget, GtkActionGroup **group)
+ static void disconnected(GtkWidget *terminal, GtkWidget * window)
{
- gtk_action_group_set_sensitive(group[ACTION_GROUP_PASTE],FALSE);
- gtk_action_group_set_sensitive(group[ACTION_GROUP_ONLINE],FALSE);
- gtk_action_group_set_sensitive(group[ACTION_GROUP_OFFLINE],TRUE);
- gtk_window_set_title(GTK_WINDOW(gtk_widget_get_toplevel(widget)),g_get_application_name());
+ GtkActionGroup **group = g_object_get_data(G_OBJECT(window),"action_groups");
+
+ if(group)
+ {
+ gtk_action_group_set_sensitive(group[ACTION_GROUP_PASTE],FALSE);
+ gtk_action_group_set_sensitive(group[ACTION_GROUP_ONLINE],FALSE);
+ gtk_action_group_set_sensitive(group[ACTION_GROUP_OFFLINE],TRUE);
+ }
+
+ gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_name(terminal));
}
- static void connected(GtkWidget *widget, const gchar *host, GtkActionGroup **group)
+ static void connected(GtkWidget *terminal, const gchar *host, GtkWidget * window)
{
+ gchar * title;
+ GtkActionGroup **group = g_object_get_data(G_OBJECT(window),"action_groups");
+
+ if(group)
+ {
+ gtk_action_group_set_sensitive(group[ACTION_GROUP_ONLINE],TRUE);
+ gtk_action_group_set_sensitive(group[ACTION_GROUP_OFFLINE],FALSE);
+ gtk_action_group_set_sensitive(group[ACTION_GROUP_PASTE],TRUE);
+ }
+
set_string_to_config("host","uri","%s",host);
- gtk_window_set_title(GTK_WINDOW(gtk_widget_get_toplevel(widget)),host);
- gtk_action_group_set_sensitive(group[ACTION_GROUP_ONLINE],TRUE);
- gtk_action_group_set_sensitive(group[ACTION_GROUP_OFFLINE],FALSE);
- gtk_action_group_set_sensitive(group[ACTION_GROUP_PASTE],TRUE);
+
+ title = g_strdup_printf("%s - %s",v3270_get_session_name(terminal),host);
+ gtk_window_set_title(GTK_WINDOW(window),title);
+ g_free(title);
+
}
static void update_config(GtkWidget *widget, const gchar *name, const gchar *value)
@@ -421,7 +438,7 @@
gtk_action_group_set_sensitive(group[ACTION_GROUP_FILETRANSFER],FALSE);
gtk_action_group_set_sensitive(group[ACTION_GROUP_PASTE],FALSE);
- disconnected(widget->terminal, (gpointer) group);
+ disconnected(widget->terminal, GTK_WIDGET(widget));
// Setup actions
if(action[ACTION_FULLSCREEN])
@@ -441,8 +458,8 @@
// Connect action signals
- g_signal_connect(widget->terminal,"disconnected",G_CALLBACK(disconnected),group);
- g_signal_connect(widget->terminal,"connected",G_CALLBACK(connected),group);
+ g_signal_connect(widget->terminal,"disconnected",G_CALLBACK(disconnected),widget);
+ g_signal_connect(widget->terminal,"connected",G_CALLBACK(connected),widget);
g_signal_connect(widget->terminal,"update_config",G_CALLBACK(update_config),0);
g_signal_connect(widget->terminal,"model_changed",G_CALLBACK(update_model),0);
g_signal_connect(widget->terminal,"selecting",G_CALLBACK(selecting),group);
--
libgit2 0.21.2