From a65fb47e6d564a569e91bfc7e17234fcfe8c444e Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 27 Feb 2013 20:17:01 +0000 Subject: [PATCH] Trabalhando na interface LibreOffice --- src/oxt/get.cxx | 16 ++++++++++++++++ src/oxt/globals.hpp | 23 ++++++++++++++--------- src/oxt/local.cxx | 7 +++++++ src/oxt/pw3270.idl | 3 +++ src/oxt/testprogram.cxx | 15 ++++++++------- 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/oxt/get.cxx b/src/oxt/get.cxx index 2bcfc1f..249d77d 100644 --- a/src/oxt/get.cxx +++ b/src/oxt/get.cxx @@ -30,6 +30,7 @@ */ #include "globals.hpp" + #include /*---[ Implement ]-----------------------------------------------------------------------------------------*/ @@ -43,4 +44,19 @@ sal_Int16 SAL_CALL pw3270::uno_impl::getConnectionState( ) throw (::com::sun::s return hSession->get_state(); } +::rtl::OUString SAL_CALL pw3270::uno_impl::getTextAt( ::sal_Int16 row, ::sal_Int16 col, ::sal_Int16 size ) throw (::com::sun::star::uno::RuntimeException) +{ + char * ptr = hSession->get_text_at(row,col,size); + OUString ret; + + if(!ptr) + return OUString( RTL_CONSTASCII_USTRINGPARAM( "" ) ); + + ret = OUString(ptr, strlen(ptr), hSession->get_encoding(), RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE); + + hSession->mem_free(ptr); + + return ret; +} + diff --git a/src/oxt/globals.hpp b/src/oxt/globals.hpp index 876dd23..6da6bd7 100644 --- a/src/oxt/globals.hpp +++ b/src/oxt/globals.hpp @@ -51,18 +51,20 @@ public: session(); virtual ~session(); - virtual int get_revision(void) = 0; - virtual int get_state(void) = 0; + 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 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 connect(const char *uri) = 0; + virtual int disconnect(void) = 0; + virtual bool connected(void) = 0; - virtual void mem_free(void *) = 0; + virtual int enter(void) = 0; + virtual int pfkey(int key) = 0; + virtual int pakey(int key) = 0; + + virtual void mem_free(void *) = 0; void sleep(int seconds = 1); @@ -87,6 +89,8 @@ virtual int pfkey(int key); virtual int pakey(int key); + virtual char * get_text_at(int row, int col, int len); + virtual void mem_free(void *ptr); private: @@ -134,6 +138,7 @@ virtual ::sal_Int16 SAL_CALL Disconnect( ) throw (::com::sun::star::uno::RuntimeException); virtual ::sal_Int16 SAL_CALL getConnectionState( ) throw (::com::sun::star::uno::RuntimeException); virtual ::sal_Int16 SAL_CALL sleep( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getTextAt( ::sal_Int16 row, ::sal_Int16 col, ::sal_Int16 size ) throw (::com::sun::star::uno::RuntimeException); private: diff --git a/src/oxt/local.cxx b/src/oxt/local.cxx index c92951c..90ef738 100644 --- a/src/oxt/local.cxx +++ b/src/oxt/local.cxx @@ -221,3 +221,10 @@ { _mem_free(ptr); } + + char * pw3270::lib3270_session::get_text_at(int row, int col, int len) + { + if(!hSession) + return NULL; + return _get_text_at(hSession,row,col,len); + } diff --git a/src/oxt/pw3270.idl b/src/oxt/pw3270.idl index ded1e33..8331c9b 100644 --- a/src/oxt/pw3270.idl +++ b/src/oxt/pw3270.idl @@ -61,6 +61,9 @@ module br short Disconnect(); short getConnectionState(); + /* Get */ + string getTextAt([in] short row, [in] short col, [in] short size); + /* Misc */ short getRevision(); short sleep([in] short seconds); diff --git a/src/oxt/testprogram.cxx b/src/oxt/testprogram.cxx index 4e21f82..1045069 100644 --- a/src/oxt/testprogram.cxx +++ b/src/oxt/testprogram.cxx @@ -104,25 +104,26 @@ int SAL_CALL main(int argc, char **argv) if(srv.is()) { // Wait for commands -// OString str; + OString str; printf("Revision:\t%d\n",srv->getRevision()); printf("getConnectionState: %d\n", srv->getConnectionState()); printf("Connect(): %d\n" , srv->Connect(OUString::createFromAscii("L:3270.df.bb:9023"))); - srv->sleep(5); + srv->sleep(2); printf("getConnectionState: %d\n", srv->getConnectionState()); - srv->sleep(5); + srv->sleep(2); + + str = OUStringToOString( srv->getTextAt(1,1,2000),RTL_TEXTENCODING_UTF8); + printf("ContentsAt(1,1):\n%s\n",str.pData->buffer); srv->Disconnect(); - srv->sleep(5); + srv->sleep(2); printf("getConnectionState: %d\n", srv->getConnectionState()); - srv->sleep(5); + srv->sleep(2); - //str = OUStringToOString( srv->getScreenContentAt(20,39,5),RTL_TEXTENCODING_UTF8); - //Trace("ContentsAt(20,39): \"%s\"",str.pData->buffer); /* printf("waitForStringAt(SISBB) returned %d\n",srv->waitForStringAt(20,39,OUString::createFromAscii("SISBB"),20)); -- libgit2 0.21.2