Commit a9be51dd3150f75dde3de3b954dcc7e2d58083af
1 parent
caed0035
Exists in
master
and in
5 other branches
Juntando classe base no módulo openoffice
Showing
9 changed files
with
75 additions
and
28 deletions
Show diff stats
configure.ac
| ... | ... | @@ -504,6 +504,12 @@ if test "$CPPUMAKER" == "no" ; then |
| 504 | 504 | app_cv_office="no" |
| 505 | 505 | fi |
| 506 | 506 | |
| 507 | +AC_PATH_TOOL([UNO], uno, "no", path=$PATH:$OO_SDK_URE_BIN_DIR) | |
| 508 | +if test "$UNO" == "no" ; then | |
| 509 | + app_cv_office="no" | |
| 510 | +fi | |
| 511 | + | |
| 512 | + | |
| 507 | 513 | # Check for OO_SDK_HOME |
| 508 | 514 | if test "_$OO_SDK_HOME" == "_" ; then |
| 509 | 515 | app_cv_office="no" | ... | ... |
src/classlib/local.cc
src/openoffice/Makefile.in
| ... | ... | @@ -32,6 +32,8 @@ UNO_CLASSES=XWeak RuntimeException |
| 32 | 32 | |
| 33 | 33 | OO_SDK_HOME=@OO_SDK_HOME@ |
| 34 | 34 | OO_SDK_URE_HOME=@OO_SDK_URE_HOME@ |
| 35 | + | |
| 36 | +UNO=@UNO@ | |
| 35 | 37 | IDLC=@IDLC@ |
| 36 | 38 | REGMERGE=@REGMERGE@ |
| 37 | 39 | CPPUMAKER=@CPPUMAKER@ |
| ... | ... | @@ -51,11 +53,6 @@ includedir=@includedir@ |
| 51 | 53 | CXX=@CXX@ |
| 52 | 54 | MKDIR=@MKDIR_P@ |
| 53 | 55 | |
| 54 | -#---[ lib3270 common class ]--------------------------------------------------- | |
| 55 | - | |
| 56 | -CLASSLIBDIR=../classlib | |
| 57 | -include $(CLASSLIBDIR)/class.mak | |
| 58 | - | |
| 59 | 56 | #---[ Paths ]------------------------------------------------------------------ |
| 60 | 57 | |
| 61 | 58 | OBJDIR=.obj |
| ... | ... | @@ -69,6 +66,12 @@ BINDBG=$(BINDIR)/Debug |
| 69 | 66 | OBJRLS=$(OBJDIR)/Release |
| 70 | 67 | BINRLS=$(BINDIR)/Release |
| 71 | 68 | |
| 69 | +#---[ lib3270 common class ]--------------------------------------------------- | |
| 70 | + | |
| 71 | +PW3270_CFLAGS=-I../include | |
| 72 | +CLASSLIBDIR=../classlib | |
| 73 | +include $(CLASSLIBDIR)/class.mak | |
| 74 | + | |
| 72 | 75 | #---[ Build options ]---------------------------------------------------------- |
| 73 | 76 | |
| 74 | 77 | CPPUENV="gcc3" |
| ... | ... | @@ -81,37 +84,37 @@ OO_LDFLAGS=-L$(OO_SDK_HOME)/lib -L$(OO_SDK_URE_HOME)/lib \ |
| 81 | 84 | #---[ Rules ]------------------------------------------------------------------ |
| 82 | 85 | |
| 83 | 86 | $(URDDIR)/%.urd: %.idl |
| 84 | - @echo $@ ... | |
| 87 | + @echo " IDLC `basename $@`" | |
| 85 | 88 | @$(MKDIR) `dirname $@` |
| 86 | - $(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $< | |
| 89 | + @$(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $< | |
| 87 | 90 | |
| 88 | 91 | $(URDDIR)/%.urd: /usr/share/idl/libreoffice/%.idl |
| 89 | - @echo $@ ... | |
| 92 | + @echo " IDLC `basename $@`" | |
| 90 | 93 | @$(MKDIR) `dirname $@` |
| 91 | - $(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $< | |
| 94 | + @$(IDLC) -C -I$(OO_SDK_HOME)/idl -O`dirname $@` $< | |
| 92 | 95 | |
| 93 | 96 | $(RDBDIR)/%.rdb: $(URDDIR)/%.urd |
| 94 | - @echo $@ ... | |
| 97 | + @echo " REGM `basename $@`" | |
| 95 | 98 | @$(MKDIR) `dirname $@` |
| 96 | - $(REGMERGE) $@ /UCR $< | |
| 99 | + @$(REGMERGE) $@ /UCR $< | |
| 97 | 100 | |
| 98 | 101 | include/%.hpp: $(RDBDIR)/%.rdb |
| 99 | - @echo $@ ... | |
| 102 | + @echo " CPPU `basename $@`" | |
| 100 | 103 | @$(MKDIR) `dirname $@` |
| 101 | - $(CPPUMAKER) -O./include $(TYPES_RDB) $< | |
| 104 | + @$(CPPUMAKER) -O./include $(TYPES_RDB) $< | |
| 102 | 105 | |
| 103 | 106 | $(OBJDBG)/%.o: %.cc include/pw3270/lib3270.hpp \ |
| 104 | 107 | $(foreach CLS, $(basename $(UNO_CLASSES)), include/com/sun/star/uno/$(CLS).hpp) \ |
| 105 | 108 | *.hpp Makefile |
| 106 | - @echo $< ... | |
| 109 | + @echo " CC `basename $@`" | |
| 107 | 110 | @mkdir -p `dirname $@` |
| 108 | - $(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $< | |
| 111 | + @$(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $< | |
| 109 | 112 | # $(DBG_CFLAGS) $(CXXFLAGS) $(LIB3270_CFLAGS) -DLIBNAME=\"$(BINDBG)/$(PROGRAM_NAME).uno@DLLEXT@\" -o $@ -c $< |
| 110 | 113 | |
| 111 | 114 | #---[ UNO targets ]------------------------------------------------------------ |
| 112 | 115 | |
| 113 | 116 | include/pw3270/lib3270.hpp: $(RDBDIR)/pw3270.rdb |
| 114 | - @echo $@ ... | |
| 117 | + @echo " CPPU `basename $@`" | |
| 115 | 118 | @$(MKDIR) `dirname $@` |
| 116 | 119 | @$(CPPUMAKER) -O./include -Tpw3270.lib3270 $(TYPES_RDB) $< |
| 117 | 120 | |
| ... | ... | @@ -120,11 +123,17 @@ include/pw3270/lib3270.hpp: $(RDBDIR)/pw3270.rdb |
| 120 | 123 | |
| 121 | 124 | Debug: $(BINDBG)/pw3270.uno@DLLEXT@ |
| 122 | 125 | |
| 123 | -$(BINDBG)/pw3270.uno@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) | |
| 126 | +$(BINDBG)/testprogram: $(OBJDBG)/testprogram@OBJEXT@ $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) | |
| 124 | 127 | @echo $@ ... |
| 125 | 128 | @$(MKDIR) `dirname $@` |
| 126 | - $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) -o $@ $^ | |
| 129 | + $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) -o $(BINDBG)/pw3270.uno@DLLEXT@ $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) | |
| 127 | 130 | |
| 131 | +$(BINDBG)/pw3270.uno@DLLEXT@: \ | |
| 132 | + $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \ | |
| 133 | + $(CLASS_DEBUG_OBJECTS) | |
| 134 | + @echo " LD `basename $@`" | |
| 135 | + @$(MKDIR) `dirname $@` | |
| 136 | + $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) -o $@ $^ | |
| 128 | 137 | |
| 129 | 138 | #---[ Misc targets ]----------------------------------------------------------- |
| 130 | 139 | ... | ... |
src/openoffice/globals.hpp
| ... | ... | @@ -44,31 +44,41 @@ |
| 44 | 44 | #define UNX 1 |
| 45 | 45 | #define GCC 1 |
| 46 | 46 | #define LINUX 1 |
| 47 | + #define HAVE_GCC_VISIBILITY_FEATURE 1 | |
| 47 | 48 | #endif |
| 48 | 49 | |
| 49 | 50 | |
| 50 | - #include <cppuhelper/implbase3.hxx> // "3" implementing three interfaces | |
| 51 | + #include <cppuhelper/implbase4.hxx> // "3" implementing three interfaces | |
| 51 | 52 | #include <cppuhelper/factory.hxx> |
| 52 | 53 | #include <com/sun/star/lang/XInitialization.hpp> |
| 53 | 54 | // #include <cppuhelper/implementationentry.hxx> |
| 54 | 55 | #include <com/sun/star/lang/XServiceInfo.hpp> |
| 56 | + | |
| 57 | +#ifdef DEBUG | |
| 58 | + #include <com/sun/star/lang/XMain.hpp> | |
| 59 | +#endif // DEBUG | |
| 60 | + | |
| 55 | 61 | #include <com/sun/star/uno/RuntimeException.hpp> |
| 56 | 62 | |
| 57 | 63 | #include <pw3270/lib3270.hpp> |
| 58 | 64 | |
| 65 | + #define DLL_PUBLIC __attribute__((visibility("default"))) | |
| 59 | 66 | |
| 60 | 67 | using namespace ::rtl; // for OUString |
| 61 | 68 | using namespace ::com::sun::star; // for sdk interfaces |
| 62 | 69 | using namespace ::com::sun::star::lang; // for sdk interfaces |
| 63 | 70 | using namespace ::com::sun::star::uno; // for basic types |
| 64 | 71 | |
| 65 | - | |
| 66 | - namespace pw3270_impl | |
| 72 | + namespace pw3270_impl | |
| 67 | 73 | { |
| 68 | 74 | // https://wiki.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/Class_Definition_with_Helper_Template_Classes |
| 69 | - class session_impl : public ::cppu::WeakImplHelper3< ::pw3270::lib3270, XServiceInfo, XInitialization > | |
| 75 | + class DLL_PUBLIC session_impl : public ::cppu::WeakImplHelper4< ::pw3270::lib3270, XServiceInfo, XMain, XInitialization > | |
| 70 | 76 | { |
| 71 | 77 | public: |
| 78 | + | |
| 79 | + // XMain | |
| 80 | + virtual ::sal_Int32 SAL_CALL run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception); | |
| 81 | + | |
| 72 | 82 | // XInitialization will be called upon createInstanceWithArguments[AndContext]() |
| 73 | 83 | virtual void SAL_CALL initialize( Sequence< Any > const & args ) throw (Exception); |
| 74 | 84 | ... | ... |
src/openoffice/init.cc
| ... | ... | @@ -53,3 +53,11 @@ void session_impl::initialize( Sequence< Any > const & args ) throw (Exception) |
| 53 | 53 | // Initialize |
| 54 | 54 | |
| 55 | 55 | } |
| 56 | + | |
| 57 | +// XMain | |
| 58 | +::sal_Int32 SAL_CALL session_impl::run( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aArguments ) throw (Exception) | |
| 59 | +{ | |
| 60 | + | |
| 61 | + | |
| 62 | + return 0; | |
| 63 | +} | ... | ... |
src/openoffice/loffice3270.cbp
| ... | ... | @@ -32,6 +32,8 @@ |
| 32 | 32 | <Compiler> |
| 33 | 33 | <Add option="-Wall" /> |
| 34 | 34 | </Compiler> |
| 35 | + <Unit filename="../../configure.ac" /> | |
| 36 | + <Unit filename="../classlib/class.mak" /> | |
| 35 | 37 | <Unit filename="../classlib/class.mak.in" /> |
| 36 | 38 | <Unit filename="../classlib/exception.cc" /> |
| 37 | 39 | <Unit filename="../classlib/local.cc" /> | ... | ... |
src/openoffice/pw3270.idl
| ... | ... | @@ -34,6 +34,7 @@ |
| 34 | 34 | |
| 35 | 35 | #include <com/sun/star/uno/XInterface.idl> |
| 36 | 36 | #include <com/sun/star/lang/XInitialization.idl> |
| 37 | +#include <com/sun/star/lang/XMain.idl> | |
| 37 | 38 | |
| 38 | 39 | module pw3270 |
| 39 | 40 | { |
| ... | ... | @@ -49,6 +50,7 @@ module pw3270 |
| 49 | 50 | { |
| 50 | 51 | interface lib3270; |
| 51 | 52 | interface com::sun::star::lang::XInitialization; |
| 53 | + interface com::sun::star::lang::XMain; | |
| 52 | 54 | }; |
| 53 | 55 | }; |
| 54 | 56 | ... | ... |
src/openoffice/service.cc
| ... | ... | @@ -82,17 +82,17 @@ namespace pw3270_impl |
| 82 | 82 | |
| 83 | 83 | extern "C" |
| 84 | 84 | { |
| 85 | - __attribute__((visibility("default"))) void * SAL_CALL component_getFactory(sal_Char const * implName, lang::XMultiServiceFactory * xMgr,registry::XRegistryKey * xRegistry ) | |
| 85 | + DLL_PUBLIC void * SAL_CALL component_getFactory(sal_Char const * implName, lang::XMultiServiceFactory * xMgr,registry::XRegistryKey * xRegistry ) | |
| 86 | 86 | { |
| 87 | 87 | return ::cppu::component_getFactoryHelper(implName, xMgr, xRegistry, ::pw3270_impl::s_component_entries ); |
| 88 | 88 | } |
| 89 | 89 | |
| 90 | - __attribute__((visibility("default"))) sal_Bool SAL_CALL component_writeInfo(lang::XMultiServiceFactory * xMgr, registry::XRegistryKey * xRegistry ) | |
| 90 | + DLL_PUBLIC sal_Bool SAL_CALL component_writeInfo(lang::XMultiServiceFactory * xMgr, registry::XRegistryKey * xRegistry ) | |
| 91 | 91 | { |
| 92 | 92 | return ::cppu::component_writeInfoHelper(xMgr, xRegistry, ::pw3270_impl::s_component_entries ); |
| 93 | 93 | } |
| 94 | 94 | |
| 95 | - __attribute__((visibility("default"))) void SAL_CALL component_getImplementationEnvironment(sal_Char const ** ppEnvTypeName, uno_Environment ** ppEnv ) | |
| 95 | + DLL_PUBLIC void SAL_CALL component_getImplementationEnvironment(sal_Char const ** ppEnvTypeName, uno_Environment ** ppEnv ) | |
| 96 | 96 | { |
| 97 | 97 | * ppEnvTypeName = LANGUAGE_BINDING_NAME; |
| 98 | 98 | } | ... | ... |
src/openoffice/testprogram.cc
| ... | ... | @@ -28,15 +28,25 @@ |
| 28 | 28 | */ |
| 29 | 29 | |
| 30 | 30 | #include "globals.hpp" |
| 31 | - #include <com/sun/star/registry/XSimpleRegistry.hpp> | |
| 31 | + | |
| 32 | + #include <cppuhelper/bootstrap.hxx> | |
| 33 | + #include <com/sun/star/bridge/XUnoUrlResolver.hpp> | |
| 34 | + #include <com/sun/star/lang/XMultiServiceFactory.hpp> | |
| 35 | + | |
| 32 | 36 | #include "pw3270/lib3270.hpp" |
| 33 | 37 | |
| 34 | 38 | /*---[ Implement ]-----------------------------------------------------------------------------------------*/ |
| 35 | 39 | |
| 36 | -using namespace ::com::sun::star::registry; | |
| 40 | +using namespace com::sun::star::uno; | |
| 41 | +using namespace com::sun::star::lang; | |
| 42 | +using namespace com::sun::star::bridge; | |
| 43 | +using namespace rtl; | |
| 44 | +using namespace cppu; | |
| 37 | 45 | |
| 38 | 46 | int SAL_CALL main(int argc, char **argv) |
| 39 | 47 | { |
| 48 | + Reference< XComponentContext > rComponentContext = defaultBootstrap_InitialComponentContext(); | |
| 49 | + OSL_ENSURE( xContext.is(), "### cannot creage intial component context!" ); | |
| 40 | 50 | |
| 41 | 51 | /* |
| 42 | 52 | Reference< XSimpleRegistry > xReg = DefaultRegistry(); | ... | ... |