Commit 509cd479e297d355664d50098906183d98e4fcab

Authored by perry.werneck@gmail.com
1 parent f4e1f2d4

Corrigindo segfault no acesso dbus, implementando módulo OpenOffice

src/classlib/classlib.cbp
@@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
33 <Compiler> 33 <Compiler>
34 <Add option="-Wall" /> 34 <Add option="-Wall" />
35 </Compiler> 35 </Compiler>
  36 + <Unit filename="../include/pw3270/class.h" />
36 <Unit filename="Makefile.in" /> 37 <Unit filename="Makefile.in" />
37 <Unit filename="exception.cc" /> 38 <Unit filename="exception.cc" />
38 <Unit filename="local.cc" /> 39 <Unit filename="local.cc" />
src/classlib/remote.cc
@@ -667,7 +667,9 @@ @@ -667,7 +667,9 @@
667 667
668 #elif defined(HAVE_DBUS) 668 #elif defined(HAVE_DBUS)
669 669
670 - rc = query_intval("connect", DBUS_TYPE_STRING, "", DBUS_TYPE_INVALID); 670 + static const char * str = "";
  671 +
  672 + rc = query_intval("connect", DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID);
671 673
672 #else 674 #else
673 rc = -1; 675 rc = -1;
src/classlib/session.cc
@@ -294,7 +294,7 @@ @@ -294,7 +294,7 @@
294 return -1; 294 return -1;
295 } 295 }
296 296
297 - string * session::file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename) 297 + string * session::file_chooser_dialog(int action, const char *title, const char *extension, const char *filename)
298 { 298 {
299 return NULL; 299 return NULL;
300 } 300 }
@@ -463,7 +463,7 @@ @@ -463,7 +463,7 @@
463 return string(ebc2asc(buffer,sz)); 463 return string(ebc2asc(buffer,sz));
464 } 464 }
465 465
466 - int session::file_transfer(LIB3270_FT_OPTION options, const gchar *local, const gchar *remote, int lrecl, int blksize, int primspace, int secspace, int dft) 466 + int session::file_transfer(LIB3270_FT_OPTION options, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft)
467 { 467 {
468 log("Can't transfer %s: File transfer is unavailable", local ? local : "file"); 468 log("Can't transfer %s: File transfer is unavailable", local ? local : "file");
469 return EINVAL; 469 return EINVAL;
src/classlib/testprogram.cc
@@ -59,6 +59,8 @@ @@ -59,6 +59,8 @@
59 cout << "\tHost charset: " << s->c_str() << endl; 59 cout << "\tHost charset: " << s->c_str() << endl;
60 delete s; 60 delete s;
61 61
  62 + session->connect(false);
  63 +
62 delete session; 64 delete session;
63 return 0; 65 return 0;
64 } 66 }
src/include/pw3270/class.h
@@ -51,9 +51,15 @@ @@ -51,9 +51,15 @@
51 #include <string> 51 #include <string>
52 #include <stdarg.h> 52 #include <stdarg.h>
53 #include <lib3270.h> 53 #include <lib3270.h>
54 - #include <gtk/gtk.h>  
55 #include <errno.h> 54 #include <errno.h>
56 55
  56 + #ifdef DEBUG
  57 + #include <stdio.h>
  58 + #define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);
  59 + #else
  60 + #define trace(x, ...) // __VA_ARGS__
  61 + #endif
  62 +
57 #ifndef ETIMEDOUT 63 #ifndef ETIMEDOUT
58 #define ETIMEDOUT 1238 64 #define ETIMEDOUT 1238
59 #endif // !ETIMEDOUT 65 #endif // !ETIMEDOUT
@@ -191,10 +197,10 @@ @@ -191,10 +197,10 @@
191 197
192 // Dialogs 198 // Dialogs
193 virtual int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...); 199 virtual int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...);
194 - virtual string * file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename); 200 + virtual string * file_chooser_dialog(int action, const char *title, const char *extension, const char *filename);
195 201
196 // File transfer 202 // File transfer
197 - virtual int file_transfer(LIB3270_FT_OPTION options, const gchar *local, const gchar *remote, int lrecl = 0, int blksize = 0, int primspace = 0, int secspace = 0, int dft = 4096); 203 + virtual int file_transfer(LIB3270_FT_OPTION options, const char *local, const char *remote, int lrecl = 0, int blksize = 0, int primspace = 0, int secspace = 0, int dft = 4096);
198 204
199 // Charset translation 205 // Charset translation
200 string * get_3270_text(string *str); 206 string * get_3270_text(string *str);
src/openoffice/Makefile.in
@@ -25,9 +25,12 @@ @@ -25,9 +25,12 @@
25 # 25 #
26 26
27 PACKAGE_NAME=@PACKAGE_NAME@ 27 PACKAGE_NAME=@PACKAGE_NAME@
28 -SOURCES=info.cc get.cc service.cc init.cc 28 +SOURCES=info.cc get.cc set.cc service.cc init.cc connect.cc
  29 +
  30 +UNO_CLASSES= /com/sun/star/uno/XWeak \
  31 + /com/sun/star/uno/RuntimeException \
  32 + /com/sun/star/lang/WrappedTargetException
29 33
30 -UNO_CLASSES=XWeak RuntimeException  
31 34
32 #---[ LibreOffice SDK ]-------------------------------------------------------- 35 #---[ LibreOffice SDK ]--------------------------------------------------------
33 36
@@ -73,6 +76,7 @@ BINRLS=$(BINDIR)/Release @@ -73,6 +76,7 @@ BINRLS=$(BINDIR)/Release
73 76
74 #---[ lib3270 common class ]--------------------------------------------------- 77 #---[ lib3270 common class ]---------------------------------------------------
75 78
  79 +DEBUG_CFLAGS=-DDEBUG=1 -g -Wall
76 PW3270_CFLAGS=-I../include 80 PW3270_CFLAGS=-I../include
77 CLASSLIBDIR=../classlib 81 CLASSLIBDIR=../classlib
78 include $(CLASSLIBDIR)/class.mak 82 include $(CLASSLIBDIR)/class.mak
@@ -80,7 +84,7 @@ include $(CLASSLIBDIR)/class.mak @@ -80,7 +84,7 @@ include $(CLASSLIBDIR)/class.mak
80 #---[ Build options ]---------------------------------------------------------- 84 #---[ Build options ]----------------------------------------------------------
81 85
82 CPPUENV="gcc3" 86 CPPUENV="gcc3"
83 -CXXFLAGS=@CXXFLAGS@ -fvisibility=hidden @DLL_CFLAGS@ -Wno-strict-aliasing -I./include -I$(includedir)/libreoffice -Wno-strict-aliasing -DCPPU_ENV=$(CPPUENV) -DLANGUAGE_BINDING_NAME=\"$(CPPUENV)\" 87 +CXXFLAGS=@CXXFLAGS@ -fvisibility=hidden @DLL_CFLAGS@ -Wno-strict-aliasing -I../include -I./include -I$(includedir)/libreoffice -Wno-strict-aliasing -DCPPU_ENV=$(CPPUENV) -DLANGUAGE_BINDING_NAME=\"$(CPPUENV)\"
84 88
85 OO_LDFLAGS=-L$(OO_SDK_HOME)/lib -L$(OO_SDK_URE_HOME)/lib \ 89 OO_LDFLAGS=-L$(OO_SDK_HOME)/lib -L$(OO_SDK_URE_HOME)/lib \
86 -Wl,-rpath-link=$(OO_SDK_URE_HOME)/lib,-rpath=$(OO_SDK_URE_HOME)/lib \ 90 -Wl,-rpath-link=$(OO_SDK_URE_HOME)/lib,-rpath=$(OO_SDK_URE_HOME)/lib \
@@ -109,7 +113,7 @@ include/%.hpp: $(RDBDIR)/%.rdb @@ -109,7 +113,7 @@ include/%.hpp: $(RDBDIR)/%.rdb
109 @$(CPPUMAKER) -O./include $(TYPES_RDB) $< 113 @$(CPPUMAKER) -O./include $(TYPES_RDB) $<
110 114
111 $(OBJDBG)/%.o: %.cc include/$(PACKAGE_NAME)/lib3270.hpp \ 115 $(OBJDBG)/%.o: %.cc include/$(PACKAGE_NAME)/lib3270.hpp \
112 - $(foreach CLS, $(basename $(UNO_CLASSES)), include/com/sun/star/uno/$(CLS).hpp) \ 116 + $(foreach CLS, $(UNO_CLASSES), include/$(CLS).hpp) \
113 *.hpp Makefile 117 *.hpp Makefile
114 @echo " CC `basename $@`" 118 @echo " CC `basename $@`"
115 @mkdir -p `dirname $@` 119 @mkdir -p `dirname $@`
@@ -128,13 +132,13 @@ include/$(PACKAGE_NAME)/lib3270.hpp: $(RDBDIR)/$(PACKAGE_NAME).rdb @@ -128,13 +132,13 @@ include/$(PACKAGE_NAME)/lib3270.hpp: $(RDBDIR)/$(PACKAGE_NAME).rdb
128 132
129 Debug: $(BINDBG)/$(PACKAGE_NAME).oxt 133 Debug: $(BINDBG)/$(PACKAGE_NAME).oxt
130 134
131 -add: $(BINDBG)/$(PACKAGE_NAME).oxt 135 +run: $(BINDBG)/$(PACKAGE_NAME).oxt
132 @SHARED=false $(UNOPKG) add --verbose --force $(BINDBG)/$(PACKAGE_NAME).oxt 136 @SHARED=false $(UNOPKG) add --verbose --force $(BINDBG)/$(PACKAGE_NAME).oxt
  137 + @libreoffice testmacros.odt
  138 + @SHARED=false $(UNOPKG) remove $(PACKAGE_NAME)
133 139
134 -$(BINDBG)/testprogram: $(OBJDBG)/testprogram@OBJEXT@ $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@)  
135 - @echo $@ ...  
136 - @$(MKDIR) `dirname $@`  
137 - $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) -o $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) 140 +add: $(BINDBG)/$(PACKAGE_NAME).oxt
  141 + @SHARED=false $(UNOPKG) add --verbose --force $(BINDBG)/$(PACKAGE_NAME).oxt
138 142
139 $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@: \ 143 $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@: \
140 $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \ 144 $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \
@@ -146,7 +150,7 @@ $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@: \ @@ -146,7 +150,7 @@ $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@: \
146 150
147 $(BINDBG)/$(PACKAGE_NAME).oxt: \ 151 $(BINDBG)/$(PACKAGE_NAME).oxt: \
148 $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ \ 152 $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ \
149 - $(PACKAGE_NAME).rdb \ 153 + $(RDBDIR)/$(PACKAGE_NAME).rdb \
150 description.xml \ 154 description.xml \
151 manifest.xml \ 155 manifest.xml \
152 description.txt 156 description.txt
@@ -155,7 +159,7 @@ $(BINDBG)/$(PACKAGE_NAME).oxt: \ @@ -155,7 +159,7 @@ $(BINDBG)/$(PACKAGE_NAME).oxt: \
155 159
156 @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp 160 @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp
157 161
158 - @cp $(PACKAGE_NAME).rdb $(BINDBG)/$(PACKAGE).oxt.tmp 162 + @cp $(RDBDIR)/$(PACKAGE_NAME).rdb $(BINDBG)/$(PACKAGE).oxt.tmp
159 @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE).oxt.tmp 163 @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE).oxt.tmp
160 164
161 @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp/META-INF 165 @$(MKDIR) $(BINDBG)/$(PACKAGE).oxt.tmp/META-INF
@@ -167,7 +171,6 @@ $(BINDBG)/$(PACKAGE_NAME).oxt: \ @@ -167,7 +171,6 @@ $(BINDBG)/$(PACKAGE_NAME).oxt: \
167 @$(CONVERT) ../$(PACKAGE_NAME)/pixmaps/$(PACKAGE_NAME).svg --format=png > $(BINDBG)/$(PACKAGE).oxt.tmp/$(PACKAGE_NAME).png 171 @$(CONVERT) ../$(PACKAGE_NAME)/pixmaps/$(PACKAGE_NAME).svg --format=png > $(BINDBG)/$(PACKAGE).oxt.tmp/$(PACKAGE_NAME).png
168 172
169 @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE_NAME).oxt.tmp 173 @cp $(BINDBG)/$(PACKAGE_NAME).uno@DLLEXT@ $(BINDBG)/$(PACKAGE_NAME).oxt.tmp
170 - @cp $(PACKAGE_NAME).rdb $(BINDBG)/$(PACKAGE_NAME).oxt.tmp  
171 @cd $(BINDBG)/$(PACKAGE).oxt.tmp ; $(ZIP) -r -m ../$(PACKAGE_NAME).oxt . 174 @cd $(BINDBG)/$(PACKAGE).oxt.tmp ; $(ZIP) -r -m ../$(PACKAGE_NAME).oxt .
172 @rm -fr $(BINDBG)/$(PACKAGE).oxt.tmp 175 @rm -fr $(BINDBG)/$(PACKAGE).oxt.tmp
173 @echo $@ Ok. 176 @echo $@ Ok.
@@ -182,6 +185,7 @@ clean: @@ -182,6 +185,7 @@ clean:
182 @rm -fr $(RDBDIR) 185 @rm -fr $(RDBDIR)
183 @rm -fr $(URDDIR) 186 @rm -fr $(URDDIR)
184 @rm -fr include 187 @rm -fr include
  188 + @rm -f *.rdb
185 @rm -fr $(OBJDIR) 189 @rm -fr $(OBJDIR)
186 @rm -fr $(BINDIR) 190 @rm -fr $(BINDIR)
187 191
src/openoffice/connect.cc 0 → 100644
@@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
  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., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como connect.cc 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 +
  31 + #include "globals.hpp"
  32 + #include "pw3270/lib3270.hpp"
  33 + #include <exception>
  34 + #include <com/sun/star/uno/RuntimeException.hdl>
  35 +
  36 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  37 +
  38 + using namespace pw3270_impl;
  39 +
  40 + ::sal_Int16 SAL_CALL session_impl::Connect() throw (::com::sun::star::uno::RuntimeException)
  41 + {
  42 + trace("%s: hSession=%p",__FUNCTION__,hSession);
  43 +
  44 + try
  45 + {
  46 + if(!hSession)
  47 + hSession = h3270::session::get_default();
  48 +
  49 + return hSession->connect(false);
  50 +
  51 + } catch(std::exception &e)
  52 + {
  53 + trace("%s failed: %s",__FUNCTION__,e.what());
  54 +
  55 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  56 +
  57 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  58 +
  59 + }
  60 +
  61 + return -1;
  62 +
  63 +
  64 + }
  65 +
  66 + ::sal_Int16 SAL_CALL session_impl::Disconnect() throw (::com::sun::star::uno::RuntimeException)
  67 + {
  68 + try
  69 + {
  70 + if(!hSession)
  71 + hSession = h3270::session::get_default();
  72 +
  73 + return hSession->disconnect();
  74 +
  75 + } catch(std::exception &e)
  76 + {
  77 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  78 +
  79 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  80 +
  81 + }
  82 +
  83 + return -1;
  84 +
  85 + }
  86 +
  87 +
src/openoffice/get.cc
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 */ 32 */
33 33
34 #include "globals.hpp" 34 #include "globals.hpp"
  35 + #include <lib3270/config.h>
35 #include "pw3270/lib3270.hpp" 36 #include "pw3270/lib3270.hpp"
36 37
37 /*---[ Implement ]-----------------------------------------------------------------------------------------*/ 38 /*---[ Implement ]-----------------------------------------------------------------------------------------*/
@@ -40,5 +41,12 @@ @@ -40,5 +41,12 @@
40 41
41 ::rtl::OUString session_impl::getVersion() throw (RuntimeException) 42 ::rtl::OUString session_impl::getVersion() throw (RuntimeException)
42 { 43 {
43 - return OUString( RTL_CONSTASCII_USTRINGPARAM("Testing") ); 44 + trace("%s: hSession=%p",__FUNCTION__,hSession);
  45 + return OUString( RTL_CONSTASCII_USTRINGPARAM(PACKAGE_VERSION) );
  46 + }
  47 +
  48 + ::rtl::OUString session_impl::getRevision() throw (RuntimeException)
  49 + {
  50 + trace("%s: hSession=%p",__FUNCTION__,hSession);
  51 + return OUString( RTL_CONSTASCII_USTRINGPARAM(PACKAGE_REVISION) );
44 } 52 }
src/openoffice/globals.hpp
@@ -60,7 +60,15 @@ @@ -60,7 +60,15 @@
60 60
61 #include <com/sun/star/uno/RuntimeException.hpp> 61 #include <com/sun/star/uno/RuntimeException.hpp>
62 62
  63 + #ifdef DEBUG
  64 + #include <stdio.h>
  65 + #define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);
  66 + #else
  67 + #define trace(x, ...) // __VA_ARGS__
  68 + #endif
  69 +
63 #include <pw3270/lib3270.hpp> 70 #include <pw3270/lib3270.hpp>
  71 + #include <pw3270/class.h>
64 72
65 #define DLL_PUBLIC __attribute__((visibility("default"))) 73 #define DLL_PUBLIC __attribute__((visibility("default")))
66 74
@@ -68,6 +76,7 @@ @@ -68,6 +76,7 @@
68 using namespace ::com::sun::star; // for sdk interfaces 76 using namespace ::com::sun::star; // for sdk interfaces
69 using namespace ::com::sun::star::lang; // for sdk interfaces 77 using namespace ::com::sun::star::lang; // for sdk interfaces
70 using namespace ::com::sun::star::uno; // for basic types 78 using namespace ::com::sun::star::uno; // for basic types
  79 + using namespace PW3270_NAMESPACE;
71 80
72 namespace pw3270_impl 81 namespace pw3270_impl
73 { 82 {
@@ -76,6 +85,9 @@ @@ -76,6 +85,9 @@
76 { 85 {
77 public: 86 public:
78 87
  88 + session_impl();
  89 + virtual ~session_impl();
  90 +
79 // XMain 91 // XMain
80 virtual ::sal_Int32 SAL_CALL run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception); 92 virtual ::sal_Int32 SAL_CALL run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception);
81 93
@@ -89,6 +101,16 @@ @@ -89,6 +101,16 @@
89 101
90 // lib3270 102 // lib3270
91 virtual ::rtl::OUString SAL_CALL getVersion() throw (RuntimeException); 103 virtual ::rtl::OUString SAL_CALL getVersion() throw (RuntimeException);
  104 + virtual ::rtl::OUString SAL_CALL getRevision() throw (RuntimeException);
  105 +
  106 + virtual ::sal_Int16 SAL_CALL setSessionName( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException);
  107 +
  108 + virtual ::sal_Int16 SAL_CALL setHost( const ::rtl::OUString& url ) throw (::com::sun::star::uno::RuntimeException);
  109 + virtual ::sal_Int16 SAL_CALL Connect() throw (::com::sun::star::uno::RuntimeException);
  110 + virtual ::sal_Int16 SAL_CALL Disconnect() throw (::com::sun::star::uno::RuntimeException);
  111 +
  112 + private:
  113 + h3270::session *hSession;
92 114
93 }; 115 };
94 116
src/openoffice/init.cc
@@ -39,6 +39,19 @@ @@ -39,6 +39,19 @@
39 39
40 using namespace pw3270_impl; 40 using namespace pw3270_impl;
41 41
  42 +
  43 +session_impl::session_impl()
  44 +{
  45 + this->hSession = NULL;
  46 +}
  47 +
  48 +session_impl::~session_impl()
  49 +{
  50 + if(this->hSession)
  51 + delete this->hSession;
  52 +}
  53 +
  54 +
42 // XInitialization implementation 55 // XInitialization implementation
43 void session_impl::initialize( Sequence< Any > const & args ) throw (Exception) 56 void session_impl::initialize( Sequence< Any > const & args ) throw (Exception)
44 { 57 {
@@ -52,6 +65,9 @@ void session_impl::initialize( Sequence&lt; Any &gt; const &amp; args ) throw (Exception) @@ -52,6 +65,9 @@ void session_impl::initialize( Sequence&lt; Any &gt; const &amp; args ) throw (Exception)
52 65
53 // Initialize 66 // Initialize
54 67
  68 + // TODO: Get arguments.
  69 +
  70 +
55 } 71 }
56 72
57 // XMain 73 // XMain
src/openoffice/loffice3270.cbp
@@ -33,13 +33,16 @@ @@ -33,13 +33,16 @@
33 <Add option="-Wall" /> 33 <Add option="-Wall" />
34 </Compiler> 34 </Compiler>
35 <Unit filename="../../configure.ac" /> 35 <Unit filename="../../configure.ac" />
  36 + <Unit filename="../classlib/Makefile.in" />
36 <Unit filename="../classlib/class.mak" /> 37 <Unit filename="../classlib/class.mak" />
37 <Unit filename="../classlib/class.mak.in" /> 38 <Unit filename="../classlib/class.mak.in" />
38 <Unit filename="../classlib/exception.cc" /> 39 <Unit filename="../classlib/exception.cc" />
39 <Unit filename="../classlib/local.cc" /> 40 <Unit filename="../classlib/local.cc" />
40 <Unit filename="../classlib/remote.cc" /> 41 <Unit filename="../classlib/remote.cc" />
41 <Unit filename="../classlib/session.cc" /> 42 <Unit filename="../classlib/session.cc" />
  43 + <Unit filename="../include/pw3270/class.h" />
42 <Unit filename="Makefile.in" /> 44 <Unit filename="Makefile.in" />
  45 + <Unit filename="connect.cc" />
43 <Unit filename="get.cc" /> 46 <Unit filename="get.cc" />
44 <Unit filename="globals.hpp" /> 47 <Unit filename="globals.hpp" />
45 <Unit filename="include/pw3270/lib3270.hdl" /> 48 <Unit filename="include/pw3270/lib3270.hdl" />
@@ -49,6 +52,7 @@ @@ -49,6 +52,7 @@
49 <Unit filename="manifest.xml.in" /> 52 <Unit filename="manifest.xml.in" />
50 <Unit filename="pw3270.idl" /> 53 <Unit filename="pw3270.idl" />
51 <Unit filename="service.cc" /> 54 <Unit filename="service.cc" />
  55 + <Unit filename="set.cc" />
52 <Unit filename="testprogram.cc" /> 56 <Unit filename="testprogram.cc" />
53 <Extensions> 57 <Extensions>
54 <code_completion /> 58 <code_completion />
src/openoffice/pw3270.idl
@@ -43,7 +43,17 @@ module pw3270 @@ -43,7 +43,17 @@ module pw3270
43 */ 43 */
44 interface lib3270 : com::sun::star::uno::XInterface 44 interface lib3270 : com::sun::star::uno::XInterface
45 { 45 {
  46 + // Constants
46 string getVersion(); 47 string getVersion();
  48 + string getRevision();
  49 +
  50 + // Host definition
  51 + short setHost([in] string url);
  52 + short Connect();
  53 + short Disconnect();
  54 +
  55 + // Misc Settings
  56 + short setSessionName([in] string name);
47 }; 57 };
48 58
49 service session 59 service session
src/openoffice/set.cc 0 → 100644
@@ -0,0 +1,99 @@ @@ -0,0 +1,99 @@
  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., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como get.cc 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 + * Referência:
  29 + *
  30 + * https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes
  31 + *
  32 + */
  33 +
  34 + #include "globals.hpp"
  35 + #include <exception>
  36 + #include <com/sun/star/uno/RuntimeException.hdl>
  37 + #include "pw3270/lib3270.hpp"
  38 +
  39 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  40 +
  41 + using namespace pw3270_impl;
  42 + using namespace com::sun::star::uno;
  43 +
  44 + ::sal_Int16 SAL_CALL session_impl::setSessionName( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException)
  45 + {
  46 + if(hSession)
  47 + {
  48 + // Remove old session
  49 + delete hSession;
  50 + hSession = NULL;
  51 + }
  52 +
  53 + OString vlr = rtl::OUStringToOString( name , RTL_TEXTENCODING_UNICODE );
  54 +
  55 + trace("%s(\"%s\")",__FUNCTION__,vlr.getStr());
  56 +
  57 + try
  58 + {
  59 +
  60 + hSession = h3270::session::create(((const char *) vlr.getStr()));
  61 + trace("%s: hSession(\"%s\"=%p",__FUNCTION__,vlr.getStr(),hSession);
  62 +
  63 + } catch(std::exception &e)
  64 + {
  65 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  66 +
  67 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  68 +
  69 + return -1;
  70 +
  71 + }
  72 +
  73 + return 0;
  74 +
  75 + }
  76 +
  77 + ::sal_Int16 SAL_CALL session_impl::setHost( const ::rtl::OUString& url ) throw (::com::sun::star::uno::RuntimeException)
  78 + {
  79 + if(!hSession)
  80 + hSession = h3270::session::get_default();
  81 +
  82 + OString vlr = rtl::OUStringToOString( url , RTL_TEXTENCODING_UNICODE );
  83 +
  84 + try
  85 + {
  86 +
  87 + return hSession->set_url(vlr.getStr());
  88 +
  89 + } catch(std::exception &e)
  90 + {
  91 + OUString msg = OUString(e.what(),strlen(e.what()),RTL_TEXTENCODING_UTF8,RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE);
  92 +
  93 + throw css::uno::RuntimeException(msg,static_cast< cppu::OWeakObject * >(this));
  94 +
  95 + }
  96 +
  97 + return -1;
  98 + }
  99 +
src/openoffice/testmacros.odt
No preview for this file type