From 5ce3478069f6d387b4676fab616bfd0f7c8e558d Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 1 Mar 2013 20:04:31 +0000 Subject: [PATCH] Trabalhando na extensão LibreOffice --- src/oxt/Makefile.in | 6 ++++-- src/oxt/actions.cxx | 22 ++++++++++++++++++++++ src/oxt/globals.hpp | 71 +++++++++++++++++++++++++++++++++++++---------------------------------- src/oxt/local.cxx | 6 ++++++ src/oxt/pw3270.idl | 5 +++++ 5 files changed, 74 insertions(+), 36 deletions(-) diff --git a/src/oxt/Makefile.in b/src/oxt/Makefile.in index 2093c1a..8bd59a2 100644 --- a/src/oxt/Makefile.in +++ b/src/oxt/Makefile.in @@ -51,10 +51,12 @@ CPPUMAKER=${OO_SDK_HOME}/bin/cppumaker #---[ Rules ]------------------------------------------------------------------------------------------ +LIB3270_CFLAGS ?= `pkg-config --cflags lib3270` + DLL_CFLAGS=@DLL_CFLAGS@ DLL_FLAGS=-shared -CXXFLAGS=-Wno-strict-aliasing -I$(OBJDIR)/uno/include -I$(OO_SDK_HOME)/include -I$(OBJDIR)/uno/include/br/com/bb +CXXFLAGS=-Wno-strict-aliasing -I$(OBJDIR)/uno/include -I$(OO_SDK_HOME)/include -I$(OBJDIR)/uno/include/br/com/bb $(LIB3270_CFLAGS) LDFLAGS=-L${OO_SDK_HOME}/lib -L${OO_SDK_URE_HOME}/lib -Wl,-rpath-link=${OO_SDK_URE_HOME}/lib,-rpath=${OO_SDK_URE_HOME}/lib \ $(CPPULIB) $(CPPUHELPERLIB) $(SALLIB) @@ -64,7 +66,7 @@ LDFLAGS=-L${OO_SDK_HOME}/lib -L${OO_SDK_URE_HOME}/lib -Wl,-rpath-link=${OO_SDK_U $(OBJDBG)/%.o: %.cxx $(OBJDIR)/uno/include/br/com/bb/$(PACKAGE).hpp Makefile @echo $< ... @$(MKDIR) `dirname $@` - @$(CXX) $(DBG_CFLAGS) $(CXXFLAGS) $(DLL_CFLAGS) -o $@ -c $< + @$(CXX) $(DBG_CFLAGS) $(CXXFLAGS) $(LIB3270_CFLAGS) $(DLL_CFLAGS) -o $@ -c $< %.urd: %.idl @echo $< ... diff --git a/src/oxt/actions.cxx b/src/oxt/actions.cxx index 695cc75..8159741 100644 --- a/src/oxt/actions.cxx +++ b/src/oxt/actions.cxx @@ -48,3 +48,25 @@ { return hSession->pakey((int) keycode); } + +::sal_Int16 SAL_CALL pw3270::uno_impl::cmpTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException) +{ + return hSession->cmp_text_at((int) row, (int) col, rtl::OUStringToOString(text,hSession->get_encoding()).getStr()); +} + +::sal_Bool SAL_CALL isReady( ) throw (::com::sun::star::uno::RuntimeException) +{ + if(!isConnected()) + return FALSE; + + if(hSession->get_state() == ) + return TRUE; + + return FALSE; +} + +::sal_Bool SAL_CALL isConnected( ) throw (::com::sun::star::uno::RuntimeException) +{ + +} + diff --git a/src/oxt/globals.hpp b/src/oxt/globals.hpp index 1d4b57f..61a3d4d 100644 --- a/src/oxt/globals.hpp +++ b/src/oxt/globals.hpp @@ -11,6 +11,7 @@ #define LANGUAGE_BINDING_NAME "gcc3" #include + #include #include #include @@ -51,22 +52,23 @@ public: session(); virtual ~session(); - virtual int get_revision(void) = 0; - virtual int get_state(void) = 0; - virtual char * get_text_at(int row, int col, int len) = 0; - virtual int set_text_at(int row, int col, const char *text) = 0; + virtual int get_revision(void) = 0; + virtual LIB3270_MESSAGE get_state(void) = 0; + virtual char * get_text_at(int row, int col, int len) = 0; + virtual int set_text_at(int row, int col, const char *text) = 0; + virtual int cmp_text_at(int row, int col, const char *text) = 0; - virtual int connect(const char *uri) = 0; - virtual int disconnect(void) = 0; - virtual bool connected(void) = 0; + virtual int connect(const char *uri) = 0; + virtual int disconnect(void) = 0; + virtual bool connected(void) = 0; - virtual int enter(void) = 0; - virtual int pfkey(int key) = 0; - virtual int pakey(int key) = 0; + virtual int enter(void) = 0; + virtual int pfkey(int key) = 0; + virtual int pakey(int key) = 0; - virtual void mem_free(void *) = 0; + virtual void mem_free(void *) = 0; - void sleep(int seconds = 1); + void sleep(int seconds = 1); rtl_TextEncoding get_encoding(); @@ -78,43 +80,43 @@ lib3270_session(); virtual ~lib3270_session(); - virtual int get_revision(void); - virtual int get_state(void); + virtual int get_revision(void); + virtual LIB3270_MESSAGE get_state(void); - virtual int connect(const char *uri); - virtual int disconnect(void); - virtual bool connected(void); + virtual int connect(const char *uri); + virtual int disconnect(void); + virtual bool connected(void); - virtual int enter(void); - virtual int pfkey(int key); - virtual int pakey(int key); + virtual int enter(void); + virtual int pfkey(int key); + virtual int pakey(int key); - virtual char * get_text_at(int row, int col, int len); - virtual int set_text_at(int row, int col, const char *text); + virtual char * get_text_at(int row, int col, int len); + virtual int set_text_at(int row, int col, const char *text); + virtual int cmp_text_at(int row, int col, const char *text); - virtual void mem_free(void *ptr); + virtual void mem_free(void *ptr); private: bool enabled; oslModule hModule; oslThread hThread; - void * hSession; + H3270 * hSession; /* Internal calls */ static void start_connect(lib3270_session *session); void network_loop(void); /* lib3270 entry points */ - const char * (* _get_revision)(void); - int (* _get_program_message)(void *); - char * (* _get_text_at)(void *,int,int,int); - int (* _set_text_at)(void *,int,int,const unsigned char *); - int (* _cmp_text_at)(void *,int,int,const char *); - int (* _enter)(void *); - int (* _pfkey)(void *, int); - int (* _pakey)(void *, int); - void * (* _mem_free)(void *); - + const char * (* _get_revision)(void); + LIB3270_MESSAGE (* _get_program_message)(H3270 *); + char * (* _get_text_at)(H3270 *,int,int,int); + int (* _set_text_at)(H3270 *,int,int,const unsigned char *); + int (* _cmp_text_at)(H3270 *,int,int,const char *); + int (* _enter)(H3270 *); + int (* _pfkey)(H3270 *, int); + int (* _pakey)(H3270 *, int); + void * (* _mem_free)(void *); }; @@ -144,6 +146,7 @@ virtual ::sal_Int16 SAL_CALL enter( ) throw (::com::sun::star::uno::RuntimeException); virtual ::sal_Int16 SAL_CALL pfkey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); virtual ::sal_Int16 SAL_CALL pakey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Int16 SAL_CALL cmpTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); private: diff --git a/src/oxt/local.cxx b/src/oxt/local.cxx index d6dea23..860c606 100644 --- a/src/oxt/local.cxx +++ b/src/oxt/local.cxx @@ -236,3 +236,9 @@ return _set_text_at(hSession,row,col,(const unsigned char *) text); } + int pw3270::lib3270_session::cmp_text_at(int row, int col,const char *text) + { + if(!hSession) + return EINVAL; + return _cmp_text_at(hSession,row,col,text); + } diff --git a/src/oxt/pw3270.idl b/src/oxt/pw3270.idl index 0c4ad94..347226e 100644 --- a/src/oxt/pw3270.idl +++ b/src/oxt/pw3270.idl @@ -68,6 +68,7 @@ module br short setTextAt([in] short row, [in] short col, [in] string text); /* Actions */ + short cmpTextAt([in] short row, [in] short col, [in] string text); short enter(); short pfkey([in] short keycode); short pakey([in] short keycode); @@ -75,6 +76,10 @@ module br /* Misc */ short getRevision(); short sleep([in] short seconds); + boolean isReady(); +// short waitForReady([in] short seconds); +// short waitForTextAt(in] short row, [in] short col, [in] string text, [in] short seconds); + boolean isConnected(); }; -- libgit2 0.21.2