Commit 6f9d18d0170ae184dcb22996de4d073f23242ce7
1 parent
8e6a7384
Exists in
master
and in
5 other branches
Iniciando implementação do módulo libreoffice
Showing
8 changed files
with
685 additions
and
1 deletions
Show diff stats
Makefile.in
... | ... | @@ -78,7 +78,7 @@ MAKENSIS=@MAKENSIS@ |
78 | 78 | |
79 | 79 | PLUGIN_RELEASE_ARGS=BINDIR="../../../$(BINDIR)" LIB3270_MODE=Release |
80 | 80 | PLUGIN_DEBUG_ARGS=BINDIR="../../../$(BINDIR)" LIB3270_MODE=Debug |
81 | - | |
81 | + | |
82 | 82 | #---[ Rules ]------------------------------------------------------------------ |
83 | 83 | |
84 | 84 | %.tar.bz2: %.tar |
... | ... | @@ -329,6 +329,7 @@ clean: |
329 | 329 | @make -C src/plugins/remotectl clean |
330 | 330 | @make -C src/plugins/rx3270 clean |
331 | 331 | @make -C src/plugins/dbus3270 clean |
332 | + @make -C src/oxt clean | |
332 | 333 | @rm -f $(PACKAGE_NAME).png |
333 | 334 | @rm -f $(PACKAGE_NAME)-logo.png |
334 | 335 | @rm -f *.log | ... | ... |
configure.ac
... | ... | @@ -0,0 +1,113 @@ |
1 | + | |
2 | +PACKAGE=@PACKAGE_NAME@ | |
3 | + | |
4 | +SOURCES=main.cxx | |
5 | + | |
6 | +prefix=/usr | |
7 | +exec_prefix=@exec_prefix@ | |
8 | +libdir=@libdir@ | |
9 | + | |
10 | +#---[ Paths ]------------------------------------------------------------------------------------------ | |
11 | +ROOTDIR ?= . | |
12 | +OBJDIR ?= $(ROOTDIR)/.obj | |
13 | +BINDIR ?= $(ROOTDIR)/.bin | |
14 | + | |
15 | +BINDBG ?= $(BINDIR)/Debug | |
16 | +BINRLS ?= $(BINDIR)/Release | |
17 | +LIBDBG ?= $(BINDIR)/Debug/lib | |
18 | + | |
19 | +OBJDBG = $(OBJDIR)/Debug | |
20 | +OBJRLS = $(OBJDIR)/Release | |
21 | + | |
22 | +#---[ Tools ]------------------------------------------------------------------------------------------ | |
23 | +MKDIR=@MKDIR_P@ | |
24 | +CXX=@CXX@ | |
25 | + | |
26 | +DBG_CFLAGS=-g -DDEBUG=1 | |
27 | +RLS_CFLAGS=-DNDEBUG=1 | |
28 | + | |
29 | +#---[ LibreOffice SDK ]-------------------------------------------------------------------------------- | |
30 | +COMID=gcc3 | |
31 | +OO_SDK_NAME=openoffice.org3.5_sdk | |
32 | +OFFICE_HOME=${libdir}/libreoffice | |
33 | +OO_SDK_HOME=${OFFICE_HOME}/sdk | |
34 | +OO_SDK_URE_HOME=${OFFICE_HOME}/ure | |
35 | +OO_SDK_URE_BIN_DIR=${OO_SDK_URE_HOME}/bin | |
36 | +OO_SDK_URE_LIB_DIR=${OO_SDK_URE_HOME}/lib | |
37 | + | |
38 | +TYPES_RDB=${OO_SDK_URE_HOME}/share/misc/types.rdb | |
39 | + | |
40 | +SALLIB=-luno_sal | |
41 | +CPPULIB=-luno_cppu | |
42 | +CPPUHELPERLIB=-luno_cppuhelper$(COMID) | |
43 | +SALHELPERLIB=-luno_salhelper$(COMID) | |
44 | +REGLIB=-lreg | |
45 | +STORELIB=-lstore | |
46 | + | |
47 | +# Libre office tools | |
48 | +IDLC=${OO_SDK_HOME}/bin/idlc | |
49 | +REGMERGE=${OO_SDK_URE_BIN_DIR}/regmerge | |
50 | +CPPUMAKER=${OO_SDK_HOME}/bin/cppumaker | |
51 | + | |
52 | +#---[ Rules ]------------------------------------------------------------------------------------------ | |
53 | + | |
54 | +DLL_CFLAGS=@DLL_CFLAGS@ | |
55 | +DLL_FLAGS=-shared | |
56 | + | |
57 | +CXXFLAGS=-Wno-strict-aliasing -I$(OBJDIR)/uno/include -I$(OO_SDK_HOME)/include -I$(OBJDIR)/uno/include/br/com/bb | |
58 | +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 \ | |
59 | + $(CPPULIB) $(CPPUHELPERLIB) $(SALLIB) | |
60 | + | |
61 | +# CC_DEFINES=-DUNX -DGCC -DLINUX -DCPPU_ENV=$(CPPU_ENV) -DGXX_INCLUDE_PATH=$(SDK_GXX_INCLUDE_PATH) -DHAVE_GCC_VISIBILITY_FEATURE | |
62 | + | |
63 | + | |
64 | +$(OBJDBG)/%.o: %.cxx $(OBJDIR)/uno/include/br/com/bb/$(PACKAGE).hpp Makefile | |
65 | + @echo $< ... | |
66 | + @$(MKDIR) `dirname $@` | |
67 | + @$(CXX) $(DBG_CFLAGS) $(CXXFLAGS) $(DLL_CFLAGS) -o $@ -c $< | |
68 | + | |
69 | +%.urd: %.idl | |
70 | + @echo $< ... | |
71 | + @$(MKDIR) `dirname $@` | |
72 | + @$(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $< | |
73 | + | |
74 | +%.uno.rdb: %.urd $(TYPES_RDB) | |
75 | + @echo $< ... | |
76 | + @mkdir -p `dirname $@` | |
77 | + @rm -f $@ | |
78 | + $(REGMERGE) -v $@ / $(TYPES_RDB) | |
79 | + $(REGMERGE) -v $@ /UCR $< | |
80 | + $(REGMERGE) -v $@ / $< | |
81 | + | |
82 | +#---[ Targets ]---------------------------------------------------------------------------------------- | |
83 | + | |
84 | +Debug: $(BINDBG)/testprogram | |
85 | + | |
86 | +run: $(BINDBG)/testprogram | |
87 | + @$(BINDBG)/testprogram | |
88 | + | |
89 | +$(BINDBG)/$(PACKAGE).uno@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o) | |
90 | + @echo $@ ... | |
91 | + @$(MKDIR) -p `dirname $@` | |
92 | + @$(CXX) $(DLL_FLAGS) $(LDFLAGS) -o $@ $^ | |
93 | + | |
94 | +$(BINDBG)/testprogram: $(BINDBG)/$(PACKAGE).uno@DLLEXT@ $(OBJDBG)/testprogram.o | |
95 | + @echo $@ ... | |
96 | + @$(MKDIR) -p `dirname $@` | |
97 | + @$(CXX) $(LDFLAGS) -o $@ $(OBJDBG)/testprogram.o | |
98 | + | |
99 | +$(OBJDIR)/uno/include/br/com/bb/$(PACKAGE).hpp: $(PACKAGE).uno.rdb | |
100 | + @echo $< ... | |
101 | + @rm -fr $(OBJDIR)/uno/include | |
102 | + @$(MKDIR) $(OBJDIR)/uno/include | |
103 | + @$(CPPUMAKER) -O$(OBJDIR)/uno/include -L -BUCR $< | |
104 | + @touch $@ | |
105 | + | |
106 | +cleanDebug: clean | |
107 | + | |
108 | +clean: | |
109 | + @rm -f *.urd | |
110 | + @rm -f *.uno.rdb | |
111 | + @rm -fr $(OBJDIR) | |
112 | + @rm -fr $(BINDIR) | |
113 | + | ... | ... |
... | ... | @@ -0,0 +1,77 @@ |
1 | + | |
2 | + | |
3 | +#ifndef GLOBALS_HPP_INCLUDED | |
4 | + | |
5 | + #define GLOBALS_HPP_INCLUDED 1 | |
6 | + #define UNX 1 | |
7 | + #define GCC 1 | |
8 | + #define LINUX 1 | |
9 | + #define CPPU_ENV gcc3 | |
10 | + #define HAVE_GCC_VISIBILITY_FEATURE 1 | |
11 | + #define LANGUAGE_BINDING_NAME "gcc3" | |
12 | + | |
13 | + #include <stdio.h> | |
14 | + | |
15 | + #include <rtl/uuid.h> | |
16 | + #include <osl/thread.hxx> | |
17 | + | |
18 | + #include <cppuhelper/implbase3.hxx> // "3" implementing three interfaces | |
19 | + #include <cppuhelper/factory.hxx> | |
20 | + #include <cppuhelper/implementationentry.hxx> | |
21 | + | |
22 | + #include <com/sun/star/lang/XServiceInfo.hpp> | |
23 | + #include <com/sun/star/lang/XInitialization.hpp> | |
24 | + #include <com/sun/star/lang/IllegalArgumentException.hpp> | |
25 | + | |
26 | + #include <pw3270intf.hpp> | |
27 | + | |
28 | + /*---[ Debug macros ]--------------------------------------------------------------------------------------*/ | |
29 | + | |
30 | + #ifdef DEBUG | |
31 | + #define trace(fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr); | |
32 | + #else | |
33 | + #define trace( fmt, ... ) /* fmt __VA_ARGS__ */ | |
34 | + #endif | |
35 | + | |
36 | + /*---[ Object implementation ]-----------------------------------------------------------------------------*/ | |
37 | + | |
38 | + #define IMPLNAME "br.com.bb.pw3270intf" | |
39 | + #define SERVICENAME "br.com.bb.pw3270" | |
40 | + | |
41 | + using namespace br::com::bb; | |
42 | + using namespace ::rtl; // for OUString | |
43 | + using namespace ::com::sun::star; // for sdk interfaces | |
44 | + using namespace ::com::sun::star::uno; // for basic types | |
45 | + | |
46 | + namespace pw3270 | |
47 | + { | |
48 | + | |
49 | + class uno_impl : public ::cppu::WeakImplHelper3< br::com::bb::pw3270intf, com::sun::star::lang::XServiceInfo, com::sun::star::lang::XInitialization > | |
50 | + { | |
51 | + public: | |
52 | + | |
53 | + uno_impl( const com::sun::star::uno::Reference< XComponentContext > & xContext ); | |
54 | + virtual ~uno_impl(); | |
55 | + | |
56 | + // XInitialization will be called upon createInstanceWithArguments[AndContext]() | |
57 | + virtual void SAL_CALL initialize( Sequence< Any > const & args ) throw (Exception); | |
58 | + | |
59 | + // XServiceInfo implementation | |
60 | + virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException); | |
61 | + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException); | |
62 | + virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException); | |
63 | + | |
64 | + // pw3270 implementation - Main | |
65 | + virtual sal_Int16 SAL_CALL getRevision() throw (RuntimeException); | |
66 | + | |
67 | + private: | |
68 | + | |
69 | + // H3270 *hSession; | |
70 | + | |
71 | + }; | |
72 | + | |
73 | + }; | |
74 | + | |
75 | + | |
76 | +#endif // GLOBALS_HPP_INCLUDED | |
77 | + | ... | ... |
... | ... | @@ -0,0 +1,228 @@ |
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 main.cxx 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 | + * licinio@bb.com.br (Licínio Luis Branco) | |
28 | + * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | |
29 | + * | |
30 | + */ | |
31 | + | |
32 | +#include "globals.hpp" | |
33 | + | |
34 | +#include <com/sun/star/registry/XRegistryKey.hpp> | |
35 | +#include <com/sun/star/lang/XSingleComponentFactory.hpp> | |
36 | + | |
37 | +using namespace com::sun::star::registry; // for XRegistryKey | |
38 | +using namespace com::sun::star::lang; // for XSingleComponentFactory | |
39 | + | |
40 | +/*---[ Statics ]-------------------------------------------------------------------------------------------*/ | |
41 | + | |
42 | + | |
43 | + | |
44 | +/*---[ Implement ]-----------------------------------------------------------------------------------------*/ | |
45 | + | |
46 | +static Sequence< OUString > getSupportedServiceNames() | |
47 | +{ | |
48 | + Sequence<OUString> names(1); | |
49 | + | |
50 | + trace("%s returns: %s",__FUNCTION__, SERVICENAME); | |
51 | + names[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME ) ); | |
52 | + | |
53 | + return names; | |
54 | +} | |
55 | + | |
56 | +static Reference< XInterface > SAL_CALL CreateInstance( const Reference< XComponentContext > & xContext ) | |
57 | +{ | |
58 | + return static_cast< XTypeProvider * >( new pw3270::uno_impl( xContext ) ); | |
59 | +} | |
60 | + | |
61 | +/*---[ Implement exported calls ]--------------------------------------------------------------------------*/ | |
62 | + | |
63 | +/************************************************************** | |
64 | + * Function to determine the environment of the implementation. | |
65 | + * | |
66 | + * If the environment is NOT session specific | |
67 | + * (needs no additional context), then this function | |
68 | + * should return the environment type name and leave ppEnv (0). | |
69 | + * | |
70 | + * @param ppEnvTypeName environment type name; | |
71 | + * string must be constant | |
72 | + * @param ppEnv function returns its environment | |
73 | + * if the environment is session specific, | |
74 | + * i.e. has special context | |
75 | + */ | |
76 | +extern "C" void SAL_CALL component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv) | |
77 | +{ | |
78 | +#ifdef LANGUAGE_BINDING_NAME | |
79 | + trace("%s set envtype to %s\n",__FUNCTION__,LANGUAGE_BINDING_NAME); | |
80 | + *ppEnvTypeName = LANGUAGE_BINDING_NAME; | |
81 | +#else | |
82 | + trace("%s set envtype to %s\n",__FUNCTION__,"msci"); | |
83 | + *ppEnvTypeName = "msci"; | |
84 | +#endif | |
85 | +} | |
86 | + | |
87 | +/************************************************************ | |
88 | + * Optional function to retrieve a component description. | |
89 | + * | |
90 | + * @return an XML formatted string containing a short | |
91 | + * component description | |
92 | + */ | |
93 | +// typedef const sal_Char * (SAL_CALL * component_getDescriptionFunc)(void); | |
94 | + | |
95 | +/********************************************************** | |
96 | + * Writes component registry info, at least writing the | |
97 | + * supported service names. | |
98 | + * | |
99 | + * @param pServiceManager a service manager | |
100 | + * (the type is XMultiServiceFactory | |
101 | + * to be used by the environment | |
102 | + * returned by | |
103 | + * component_getImplementationEnvironment) | |
104 | + * | |
105 | + * @param pRegistryKey a registry key | |
106 | + * (the type is XRegistryKey to be used | |
107 | + * by the environment returned by | |
108 | + * component_getImplementationEnvironment) | |
109 | + * | |
110 | + * @return true if everything went fine | |
111 | + */ | |
112 | +extern "C" sal_Bool SAL_CALL component_writeInfo(void * pServiceManager, void * pRegistryKey) | |
113 | +{ | |
114 | + sal_Bool result = sal_False; | |
115 | + | |
116 | + trace("%s",__FUNCTION__); | |
117 | + | |
118 | + if (pRegistryKey) | |
119 | + { | |
120 | + try | |
121 | + { | |
122 | + Reference< XRegistryKey > xNewKey( | |
123 | + reinterpret_cast< XRegistryKey * >( pRegistryKey )->createKey( | |
124 | + OUString( RTL_CONSTASCII_USTRINGPARAM("/" IMPLNAME "/UNO/SERVICES") ) ) ); | |
125 | + | |
126 | + const Sequence< OUString > & rSNL = getSupportedServiceNames(); | |
127 | + const OUString * pArray = rSNL.getConstArray(); | |
128 | + | |
129 | + for ( sal_Int32 nPos = rSNL.getLength(); nPos--; ) | |
130 | + xNewKey->createKey( pArray[nPos] ); | |
131 | + | |
132 | + return sal_True; | |
133 | + } | |
134 | + catch (InvalidRegistryException &) | |
135 | + { | |
136 | + // we should not ignore exceptions | |
137 | + } | |
138 | + } | |
139 | + | |
140 | + return result; | |
141 | +} | |
142 | + | |
143 | +/********************************************************* | |
144 | + * Retrieves a factory to create component instances. | |
145 | + * | |
146 | + * @param pImplName desired implementation name | |
147 | + * | |
148 | + * @param pServiceManager a service manager | |
149 | + * (the type is XMultiServiceFactory | |
150 | + * to be used by the environment | |
151 | + * returned by | |
152 | + * component_getImplementationEnvironment) | |
153 | + * | |
154 | + * @param pRegistryKey a registry key | |
155 | + * (the type is XRegistryKey to be used | |
156 | + * by the environment returned by | |
157 | + * component_getImplementationEnvironment) | |
158 | + * | |
159 | + * @return acquired component factory | |
160 | + * (the type is XInterface to be used by the | |
161 | + * environment returned by | |
162 | + * component_getImplementationEnvironment) | |
163 | + */ | |
164 | +extern "C" void * SAL_CALL component_getFactory(const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey) | |
165 | +{ | |
166 | + void * pRet = 0; | |
167 | + | |
168 | + trace("%s",__FUNCTION__); | |
169 | + | |
170 | + if(pServiceManager && rtl_str_compare( pImplName, IMPLNAME ) == 0) | |
171 | + { | |
172 | + Reference< XSingleComponentFactory > xFactory( ::cppu::createSingleComponentFactory( | |
173 | + CreateInstance, OUString::createFromAscii( IMPLNAME ), getSupportedServiceNames() )); | |
174 | + | |
175 | + | |
176 | + if (xFactory.is()) | |
177 | + { | |
178 | + xFactory->acquire(); | |
179 | + pRet = xFactory.get(); | |
180 | + } | |
181 | + } | |
182 | + | |
183 | + return pRet; | |
184 | +} | |
185 | + | |
186 | +/*---[ Implement XInitialization ]-------------------------------------------------------------------------*/ | |
187 | + | |
188 | +void SAL_CALL pw3270::uno_impl::initialize( Sequence< Any > const & args ) throw (Exception) | |
189 | +{ | |
190 | + trace("%s",__FUNCTION__); | |
191 | +} | |
192 | + | |
193 | +/*---[ Implement XServiceInfo ]----------------------------------------------------------------------------*/ | |
194 | + | |
195 | +OUString SAL_CALL pw3270::uno_impl::getImplementationName( ) throw(RuntimeException) | |
196 | +{ | |
197 | + trace("%s",__FUNCTION__); | |
198 | + return OUString( RTL_CONSTASCII_USTRINGPARAM(IMPLNAME) ); | |
199 | +} | |
200 | + | |
201 | +sal_Bool SAL_CALL pw3270::uno_impl::supportsService( const OUString& ServiceName ) throw(RuntimeException) | |
202 | +{ | |
203 | + trace("%s",__FUNCTION__); | |
204 | + return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("IMPLNAME") ); | |
205 | +} | |
206 | + | |
207 | +Sequence< OUString > pw3270::uno_impl::getSupportedServiceNames() throw (RuntimeException) | |
208 | +{ | |
209 | + return getSupportedServiceNames(); | |
210 | +} | |
211 | + | |
212 | +/*---[ Implement pw3270 ]----------------------------------------------------------------------------------*/ | |
213 | + | |
214 | +pw3270::uno_impl::uno_impl( const Reference< XComponentContext > & xContext ) | |
215 | +{ | |
216 | + | |
217 | +} | |
218 | + | |
219 | +pw3270::uno_impl::~uno_impl() | |
220 | +{ | |
221 | + trace("%s: Object deleted",__FUNCTION__); | |
222 | +} | |
223 | + | |
224 | +sal_Int16 SAL_CALL pw3270::uno_impl::getRevision() throw (RuntimeException) | |
225 | +{ | |
226 | + return 0; | |
227 | +} | |
228 | + | ... | ... |
... | ... | @@ -0,0 +1,71 @@ |
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., 51 Franklin | |
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
20 | + * | |
21 | + * Este programa está nomeado como pw3270.idl 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 | + * licinio@bb.com.br (Licínio Luis Branco) | |
28 | + * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | |
29 | + * | |
30 | + */ | |
31 | + | |
32 | +#include <com/sun/star/uno/XInterface.idl> | |
33 | +#include <com/sun/star/lang/XTypeProvider.idl> | |
34 | + | |
35 | +/* | |
36 | + | |
37 | + Referências: | |
38 | + | |
39 | + http://wiki.services.openoffice.org/wiki/IDL_Files_and_Cpp | |
40 | + http://wiki.services.openoffice.org/wiki/IDL_Files_and_Cpp#Specifying_an_interface | |
41 | + | |
42 | + */ | |
43 | + | |
44 | +module br | |
45 | +{ | |
46 | + module com | |
47 | + { | |
48 | + module bb | |
49 | + { | |
50 | + | |
51 | + /** | |
52 | + * Interface to pw3270. | |
53 | + * | |
54 | + * http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Bridge/Default_Mappings | |
55 | + * | |
56 | + */ | |
57 | + interface pw3270intf : com::sun::star::uno::XInterface | |
58 | + { | |
59 | + short getRevision(); | |
60 | + }; | |
61 | + | |
62 | + service pw3270 | |
63 | + { | |
64 | + // exported interfaces: | |
65 | + interface pw3270intf; | |
66 | + }; | |
67 | + | |
68 | + }; | |
69 | + }; | |
70 | +}; | |
71 | + | ... | ... |
... | ... | @@ -0,0 +1,45 @@ |
1 | +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |
2 | +<CodeBlocks_project_file> | |
3 | + <FileVersion major="1" minor="6" /> | |
4 | + <Project> | |
5 | + <Option title="pw3270 OXT" /> | |
6 | + <Option makefile_is_custom="1" /> | |
7 | + <Option pch_mode="2" /> | |
8 | + <Option compiler="gcc" /> | |
9 | + <Build> | |
10 | + <Target title="Debug"> | |
11 | + <Option output=".bin/Debug/pw3270 OXT" prefix_auto="1" extension_auto="1" /> | |
12 | + <Option object_output=".obj/Debug/" /> | |
13 | + <Option type="1" /> | |
14 | + <Option compiler="gcc" /> | |
15 | + <Compiler> | |
16 | + <Add option="-g" /> | |
17 | + </Compiler> | |
18 | + </Target> | |
19 | + <Target title="Release"> | |
20 | + <Option output=".bin/Release/pw3270 OXT" prefix_auto="1" extension_auto="1" /> | |
21 | + <Option object_output=".obj/Release/" /> | |
22 | + <Option type="1" /> | |
23 | + <Option compiler="gcc" /> | |
24 | + <Compiler> | |
25 | + <Add option="-O2" /> | |
26 | + </Compiler> | |
27 | + <Linker> | |
28 | + <Add option="-s" /> | |
29 | + </Linker> | |
30 | + </Target> | |
31 | + </Build> | |
32 | + <Compiler> | |
33 | + <Add option="-Wall" /> | |
34 | + </Compiler> | |
35 | + <Unit filename="Makefile.in" /> | |
36 | + <Unit filename="globals.hpp" /> | |
37 | + <Unit filename="main.cxx" /> | |
38 | + <Unit filename="pw3270.idl" /> | |
39 | + <Unit filename="testprogram.cxx" /> | |
40 | + <Extensions> | |
41 | + <code_completion /> | |
42 | + <debugger /> | |
43 | + </Extensions> | |
44 | + </Project> | |
45 | +</CodeBlocks_project_file> | ... | ... |
... | ... | @@ -0,0 +1,148 @@ |
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 testprogram.cxx 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 | + * licinio@bb.com.br (Licínio Luis Branco) | |
28 | + * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | |
29 | + * | |
30 | + */ | |
31 | + | |
32 | +#include <stdio.h> | |
33 | +#ifdef WIN32 | |
34 | + #include <windows.h> | |
35 | + #define sleep(x) Sleep(x) | |
36 | +#endif | |
37 | + | |
38 | +#define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr); | |
39 | + | |
40 | +#include "globals.hpp" | |
41 | +#include <cppuhelper/bootstrap.hxx> | |
42 | +#include <com/sun/star/registry/XSimpleRegistry.hpp> | |
43 | +#include <com/sun/star/registry/XImplementationRegistration.hpp> | |
44 | +#include <com/sun/star/lang/XComponent.hpp> | |
45 | + | |
46 | +using namespace com::sun::star::registry; | |
47 | +using namespace com::sun::star::lang; | |
48 | +using namespace cppu; | |
49 | + | |
50 | +/*---[ Implement ]-----------------------------------------------------------------------------------------*/ | |
51 | + | |
52 | +int SAL_CALL main(int argc, char **argv) | |
53 | +{ | |
54 | + Reference< XSimpleRegistry > xReg = createSimpleRegistry(); | |
55 | + | |
56 | + OSL_ENSURE( xReg.is(), "### cannot get service instance of \"com.sun.star.regiystry.SimpleRegistry\"!" ); | |
57 | + | |
58 | + xReg->open(OUString::createFromAscii("pw3270.uno.rdb"), sal_False, sal_False); | |
59 | + | |
60 | + OSL_ENSURE( xReg->isValid(), "### cannot open test registry \"pw3270.uno.rdb\"!" ); | |
61 | + | |
62 | + trace("%s","Calling bootstrap_InitialComponentContext"); | |
63 | + Reference< XComponentContext > xContext = bootstrap_InitialComponentContext(xReg); | |
64 | + OSL_ENSURE( xContext.is(), "### cannot creage intial component context!" ); | |
65 | + | |
66 | + trace("%s","Calling getServiceManager\n"); | |
67 | + Reference< XMultiComponentFactory > xMgr = xContext->getServiceManager(); | |
68 | + OSL_ENSURE( xMgr.is(), "### cannot get initial service manager!" ); | |
69 | + | |
70 | + // register my component | |
71 | + trace("%s","Calling createInstanceWithContext"); | |
72 | + | |
73 | + Reference< XImplementationRegistration > xImplReg( | |
74 | + xMgr->createInstanceWithContext(OUString::createFromAscii("com.sun.star.registry.ImplementationRegistration"), xContext), UNO_QUERY); | |
75 | + OSL_ENSURE( xImplReg.is(), "### cannot get service instance of \"com.sun.star.registry.ImplementationRegistration\"!" ); | |
76 | + | |
77 | + if (xImplReg.is()) | |
78 | + { | |
79 | + const char *libname = ".bin/Debug/pw3270.uno.so"; | |
80 | + | |
81 | + trace("Loading %s",libname); | |
82 | + | |
83 | + xImplReg->registerImplementation( | |
84 | + OUString::createFromAscii("com.sun.star.loader.SharedLibrary"), // loader for component | |
85 | + OUString::createFromAscii(libname), // component location | |
86 | + Reference< XSimpleRegistry >() // registry omitted, | |
87 | + // defaulting to service manager registry used | |
88 | + ); | |
89 | + | |
90 | + // get an object instance | |
91 | + printf("Calling createInstanceWithContext(%s)\n",IMPLNAME); | |
92 | + | |
93 | + Reference< XInterface > xx ; | |
94 | + xx = xMgr->createInstanceWithContext(OUString::createFromAscii(IMPLNAME), xContext); | |
95 | + | |
96 | + printf("Instance: %p\n",&xx); | |
97 | + | |
98 | + Reference< pw3270intf > srv( xx, UNO_QUERY ); | |
99 | + | |
100 | + OSL_ENSURE( srv.is(), "### cannot get service instance!"); | |
101 | + | |
102 | + printf("object.is(): %d\n",srv.is()); | |
103 | + | |
104 | + if(srv.is()) | |
105 | + { | |
106 | + // Wait for commands | |
107 | +// OString str; | |
108 | +// char buffer[80]; | |
109 | +// printf("getConnectionState: %d\n", srv->getConnectionState()); | |
110 | + | |
111 | +// str = OUStringToOString( srv->getVersion(),RTL_TEXTENCODING_UTF8); | |
112 | +// printf("Version:\t%s\n",str.pData->buffer); | |
113 | + | |
114 | + printf("Revision:\t%d\n",srv->getRevision()); | |
115 | + | |
116 | + // printf("Connect(): %d\n" , srv->Connect(OUString::createFromAscii("L:3270.df.bb:9023"),10)); | |
117 | + | |
118 | + // sleep(5); | |
119 | + | |
120 | + //str = OUStringToOString( srv->getScreenContentAt(20,39,5),RTL_TEXTENCODING_UTF8); | |
121 | + //Trace("ContentsAt(20,39): \"%s\"",str.pData->buffer); | |
122 | + | |
123 | + /* | |
124 | + printf("waitForStringAt(SISBB) returned %d\n",srv->waitForStringAt(20,39,OUString::createFromAscii("SISBB"),20)); | |
125 | + printf("sendEnterKey() returned %d\n",srv->sendEnterKey()); | |
126 | + printf("waitForStringAt(Senha) returned %d\n",srv->waitForStringAt(14,2,OUString::createFromAscii("Senha"),20)); | |
127 | + printf("setStringAt returned %d\n",srv->setStringAt(13,21,OUString::createFromAscii("c1103788"))); | |
128 | + | |
129 | + str = OUStringToOString( srv->getScreenContent(),RTL_TEXTENCODING_UTF8); | |
130 | + printf("Entire screen:\n%s\n",str.pData->buffer); | |
131 | + | |
132 | + printf("Enter to exit...\n"); | |
133 | + fgets(buffer,80,stdin); | |
134 | + | |
135 | + printf("Disconnect(): %d\n" , srv->Disconnect()); | |
136 | + | |
137 | + sleep(5); | |
138 | + | |
139 | + */ | |
140 | + | |
141 | + } | |
142 | + } | |
143 | + | |
144 | + | |
145 | + Reference< XComponent >::query( xContext )->dispose(); | |
146 | + | |
147 | + return 0; | |
148 | +} | ... | ... |