Commit 6f9d18d0170ae184dcb22996de4d073f23242ce7

Authored by perry.werneck@gmail.com
1 parent 8e6a7384

Iniciando implementação do módulo libreoffice

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
... ... @@ -430,6 +430,7 @@ AC_CONFIG_FILES([
430 430 src/lib3270/Makefile
431 431 src/lib3270/mkversion.sh
432 432 src/pw3270/Makefile
  433 + src/oxt/Makefile
433 434 src/pw3270/uiparser/Makefile
434 435 src/tools/Makefile
435 436 src/plugins/remotectl/Makefile
... ...
src/oxt/Makefile.in 0 → 100644
... ... @@ -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 +
... ...
src/oxt/globals.hpp 0 → 100644
... ... @@ -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 +
... ...
src/oxt/main.cxx 0 → 100644
... ... @@ -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 +
... ...
src/oxt/pw3270.idl 0 → 100644
... ... @@ -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 +
... ...
src/oxt/pw3270OXT.cbp 0 → 100644
... ... @@ -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>
... ...
src/oxt/testprogram.cxx 0 → 100644
... ... @@ -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 +}
... ...