diff --git a/Makefile.in b/Makefile.in index 33d8b56..adb7a0a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -48,7 +48,7 @@ sysconfdir=@sysconfdir@ OBJDIR=.obj BINDIR=.bin -DEPENDS=src/include/lib3270/* src/include/* Makefile +DBGLIB=-L../../$(BINDIR)/Debug/lib -l3270 #---[ Tools ]------------------------------------------------------------------ @@ -59,11 +59,11 @@ MKDIR=@MKDIR_P@ Debug: $(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT) -$(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT): src/gtk/* $(DEPENDS) $(BINDIR)/Debug/lib/@DLLPREFIX@3270@DLLEXT@ - @$(MAKE) ROOTDIR="../.." -C src/gtk ../../$(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT) +$(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT): src/gtk/* $(BINDIR)/Debug/lib/@DLLPREFIX@3270@DLLEXT@ $(DEPENDS) + @$(MAKE) ROOTDIR="../.." LIB3270_LIBS="$(DBGLIB)" LIB3270_CFLAGS="-I../../src/include" -C src/gtk ../../$(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT) -$(BINDIR)/Debug/lib/@DLLPREFIX@3270@DLLEXT@: src/lib3270/* $(DEPENDS) - @echo $(MAKE) ROOTDIR="../.." BINDBG=../../.bin/Debug/lib -C src/lib3270 ../../.bin/Debug/lib/@DLLPREFIX@3270@DLLEXT@ +$(BINDIR)/Debug/lib/@DLLPREFIX@3270@DLLEXT@: src/lib3270/* src/include/lib3270/* src/include/* Makefile + @$(MAKE) ROOTDIR="../.." BINDBG=../../.bin/Debug/lib -C src/lib3270 ../../.bin/Debug/lib/@DLLPREFIX@3270@DLLEXT@ #---[ Targets ]---------------------------------------------------------------- diff --git a/src/gtk/Makefile.in b/src/gtk/Makefile.in index 115f2a4..ab165c5 100644 --- a/src/gtk/Makefile.in +++ b/src/gtk/Makefile.in @@ -71,7 +71,7 @@ $(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT): $(foreach SRC, $(basename $(SOURCES @echo $@ ... @$(MKDIR) `dirname $@` - @$(LD) -Wl,--rpath,.bin/Debug -o $@ $^ $(LIBS) $(LIB3270_LIBS) + @$(LD) -Wl,--rpath,.bin/Debug/lib -o $@ $^ $(LIBS) $(LIB3270_LIBS) run: $(BINDIR)/Debug/$(PACKAGE_TARNAME)$(EXEEXT) @cd "$(ROOTDIR)" ; .bin/Debug/$(PACKAGE_TARNAME)$(EXEEXT) diff --git a/src/gtk/actions.c b/src/gtk/actions.c index 238b313..00e9e81 100644 --- a/src/gtk/actions.c +++ b/src/gtk/actions.c @@ -31,6 +31,7 @@ #include "globals.h" #include "uiparser/parser.h" + #include /*--[ Implement ]------------------------------------------------------------------------------------*/ diff --git a/src/gtk/v3270/draw.c b/src/gtk/v3270/draw.c index 2dc1677..818405a 100644 --- a/src/gtk/v3270/draw.c +++ b/src/gtk/v3270/draw.c @@ -28,6 +28,8 @@ */ #include + #include + #include #include "v3270.h" #include "private.h" diff --git a/src/gtk/v3270/keyboard.c b/src/gtk/v3270/keyboard.c index 5ffd979..bf8b959 100644 --- a/src/gtk/v3270/keyboard.c +++ b/src/gtk/v3270/keyboard.c @@ -31,6 +31,8 @@ */ #include + #include + #include #include #include #include diff --git a/src/gtk/v3270/oia.c b/src/gtk/v3270/oia.c index 46058ec..ecd77e3 100644 --- a/src/gtk/v3270/oia.c +++ b/src/gtk/v3270/oia.c @@ -28,6 +28,8 @@ */ #include + #include + #include #include #include #include @@ -914,7 +916,7 @@ void v3270_stop_timer(GtkWidget *widget) } -void v3270_update_oia(H3270 *session, OIA_FLAG id, unsigned char on) +void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) { cairo_t *cr; GdkRectangle *r; diff --git a/src/gtk/v3270/private.h b/src/gtk/v3270/private.h index a334694..268af2c 100644 --- a/src/gtk/v3270/private.h +++ b/src/gtk/v3270/private.h @@ -115,7 +115,7 @@ void v3270_update_cursor_rect(v3270 *widget, GdkRectangle *rect, unsigned cha void v3270_update_luname(GtkWidget *widget,const gchar *name); void v3270_update_message(v3270 *widget, LIB3270_MESSAGE id); void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr); -void v3270_update_oia(H3270 *session, OIA_FLAG id, unsigned char on); +void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on); // Keyboard & Mouse gboolean v3270_key_press_event(GtkWidget *widget, GdkEventKey *event); diff --git a/src/gtk/v3270/widget.c b/src/gtk/v3270/widget.c index 42bce52..5745021 100644 --- a/src/gtk/v3270/widget.c +++ b/src/gtk/v3270/widget.c @@ -29,6 +29,8 @@ #include #include + #include + #include #include "v3270.h" #include "private.h" #include "marshal.h" diff --git a/src/include/lib3270.h b/src/include/lib3270.h index b1169db..3248646 100644 --- a/src/include/lib3270.h +++ b/src/include/lib3270.h @@ -564,6 +564,18 @@ */ LIB3270_EXPORT int lib3270_call_thread(int(*callback)(H3270 *h, void *), H3270 *h, void *parm); + /** + * Get the session's widget. + * + * Get the handle to the GtkWidget who's handling this session. + * + * @param h Session handle + * + * @return Associated GtkWidget (can be null) + * + */ + LIB3270_EXPORT void * lib3270_get_widget(H3270 *h); + #ifdef __cplusplus } #endif diff --git a/src/include/lib3270/session.h b/src/include/lib3270/session.h new file mode 100644 index 0000000..2ca33cf --- /dev/null +++ b/src/include/lib3270/session.h @@ -0,0 +1,134 @@ +/* + * "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 session.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 LIB3270_SESSION_H_INCLUDED + + #define LIB3270_SESSION_H_INCLUDED 1 + + #define LIB3270_LUNAME_LENGTH 16 + #define LIB3270_FULL_MODEL_NAME_LENGTH 13 + + struct _h3270 + { + unsigned short sz; /**< Struct size */ + + // Connection info + int secure_connection; + int sock; /**< Network socket */ + int net_sock; + LIB3270_CSTATE cstate; /**< Connection state */ + + #if defined(_WIN32) /*[*/ + HANDLE sock_handle; + #endif /*]*/ + + char * hostname; + char * connected_type; + char * connected_lu; + char luname[LIB3270_LUNAME_LENGTH+1]; + + char full_model_name[LIB3270_FULL_MODEL_NAME_LENGTH+1]; + char * model_name; + int model_num; + char * termtype; + + char * current_host; /**< the hostname part, stripped of qualifiers, luname and port number */ + char * full_current_host; /**< the entire string, for use in reconnecting */ + char * reconnect_host; + char * qualified_host; + char auto_reconnect_inprogress; + + LIB3270_MESSAGE oia_status; + + unsigned char oia_flag[LIB3270_FLAG_COUNT]; + + unsigned short current_port; + + // screen info + int ov_rows; + int ov_cols; +// int first_changed; +// int last_changed; + int maxROWS; + int maxCOLS; + unsigned short rows; + unsigned short cols; + int cursor_addr; + char flipped; + int screen_alt; /**< alternate screen? */ + int is_altbuffer; + + int formatted; /**< set in screen_disp */ + + // host.c + char std_ds_host; + char no_login_host; + char non_tn3270e_host; + char passthru_host; + char ssl_host; + char ever_3270; + + // Widget info + void * widget; + + // xio + unsigned long ns_read_id; + unsigned long ns_exception_id; + char reading; + char excepting; + + /* State change callbacks. */ + struct lib3270_state_callback *st_callbacks[LIB3270_STATE_USER]; + struct lib3270_state_callback *st_last[LIB3270_STATE_USER]; + + /* Session based callbacks */ + void (*configure)(H3270 *session, unsigned short rows, unsigned short cols); + void (*update)(H3270 *session, int baddr, unsigned char c, unsigned short attr, unsigned char cursor); + void (*changed)(H3270 *session, int bstart, int bend); + + void (*update_cursor)(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr); + void (*update_oia)(H3270 *session, LIB3270_FLAG id, unsigned char on); + void (*update_toggle)(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason, const char *name); + void (*update_luname)(H3270 *session, const char *name); + void (*update_status)(H3270 *session, LIB3270_MESSAGE id); + void (*update_connect)(H3270 *session, unsigned char connected); + void (*update_model)(H3270 *session, const char *name, int model, int rows, int cols); + + void (*set_timer)(H3270 *session, unsigned char on); + void (*erase)(H3270 *session); + void (*cursor)(H3270 *session, LIB3270_CURSOR id); + + }; + + +#endif // LIB3270_SESSION_H_INCLUDED + + diff --git a/src/lib3270/XtGlue.c b/src/lib3270/XtGlue.c index 327909b..ecdf917 100644 --- a/src/lib3270/XtGlue.c +++ b/src/lib3270/XtGlue.c @@ -946,6 +946,12 @@ LIB3270_EXPORT int lib3270_in_e(H3270 *h) return (h->cstate >= CONNECTED_INITIAL_E); } +LIB3270_EXPORT void * lib3270_get_widget(H3270 *h) +{ + CHECK_SESSION_HANDLE(h); + return h->widget; +} + LIB3270_EXPORT int lib3270_call_thread(int(*callback)(H3270 *h, void *), H3270 *h, void *parm) { int rc; diff --git a/src/lib3270/api.h b/src/lib3270/api.h index 8dc0faf..35fa4e0 100644 --- a/src/lib3270/api.h +++ b/src/lib3270/api.h @@ -109,8 +109,8 @@ #endif /** 3270 connection handle */ - #define LUNAME_SIZE 16 - #define FULL_MODEL_NAME_SIZE 13 +// #define LUNAME_SIZE 16 +// #define FULL_MODEL_NAME_SIZE 13 #define ST_RESOLVING LIB3270_STATE_RESOLVING #define ST_HALF_CONNECT LIB3270_STATE_HALF_CONNECT @@ -168,97 +168,7 @@ typedef struct _h3270 H3270; - struct _h3270 - { - unsigned short sz; /**< Struct size */ - - // Connection info - int secure_connection; - int sock; /**< Network socket */ - int net_sock; - LIB3270_CSTATE cstate; /**< Connection state */ - - #if defined(_WIN32) /*[*/ - HANDLE sock_handle; - #endif /*]*/ - - char * hostname; - char * connected_type; - char * connected_lu; - char luname[LUNAME_SIZE+1]; - - char full_model_name[FULL_MODEL_NAME_SIZE+1]; - char * model_name; - int model_num; - char * termtype; - - char * current_host; /**< the hostname part, stripped of qualifiers, luname and port number */ - char * full_current_host; /**< the entire string, for use in reconnecting */ - char * reconnect_host; - char * qualified_host; - char auto_reconnect_inprogress; - - LIB3270_MESSAGE oia_status; - - unsigned char oia_flag[LIB3270_FLAG_COUNT]; - - unsigned short current_port; - - // screen info - int ov_rows; - int ov_cols; -// int first_changed; -// int last_changed; - int maxROWS; - int maxCOLS; - unsigned short rows; - unsigned short cols; - int cursor_addr; - char flipped; - int screen_alt; /**< alternate screen? */ - int is_altbuffer; - - int formatted; /**< set in screen_disp */ - - // host.c - char std_ds_host; - char no_login_host; - char non_tn3270e_host; - char passthru_host; - char ssl_host; - char ever_3270; - - // Widget info - void * widget; - - // xio - unsigned long ns_read_id; - unsigned long ns_exception_id; - char reading; - char excepting; - - /* State change callbacks. */ - struct lib3270_state_callback *st_callbacks[N_ST]; - struct lib3270_state_callback *st_last[N_ST]; - - /* Session based callbacks */ - void (*configure)(H3270 *session, unsigned short rows, unsigned short cols); - void (*update)(H3270 *session, int baddr, unsigned char c, unsigned short attr, unsigned char cursor); - void (*changed)(H3270 *session, int bstart, int bend); - - void (*update_cursor)(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr); - void (*update_oia)(H3270 *session, OIA_FLAG id, unsigned char on); - void (*update_toggle)(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason, const char *name); - void (*update_luname)(H3270 *session, const char *name); - void (*update_status)(H3270 *session, LIB3270_STATUS id); - void (*update_connect)(H3270 *session, unsigned char connected); - void (*update_model)(H3270 *session, const char *name, int model, int rows, int cols); - - void (*set_timer)(H3270 *session, unsigned char on); - void (*erase)(H3270 *session); - void (*cursor)(H3270 *session, LIB3270_CURSOR id); - - }; + #include struct lib3270_state_callback { diff --git a/src/lib3270/glue.c b/src/lib3270/glue.c index b170c65..23ad534 100644 --- a/src/lib3270/glue.c +++ b/src/lib3270/glue.c @@ -181,7 +181,7 @@ static void lib3270_session_init(H3270 *hSession, const char *model) hSession->cstate = NOT_CONNECTED; hSession->oia_status = -1; - strncpy(hSession->full_model_name,"IBM-",FULL_MODEL_NAME_SIZE); + strncpy(hSession->full_model_name,"IBM-",LIB3270_FULL_MODEL_NAME_LENGTH); hSession->model_name = &hSession->full_model_name[4]; /* diff --git a/src/lib3270/host.c b/src/lib3270/host.c index 8a6a7dd..8fa2864 100644 --- a/src/lib3270/host.c +++ b/src/lib3270/host.c @@ -339,7 +339,7 @@ split_host(char *s, char *ansi, char *std_ds, char *passthru, } break; } - if (t - s < LUNAME_SIZE) { + if (t - s < LIB3270_LUNAME_LENGTH) { xluname[t - s] = *t; } } -- libgit2 0.21.2