[PATCH] demo, for the purposes of saying hello world

Caolán McNamara caolanm at redhat.com
Wed Sep 7 09:15:52 PDT 2011


---
 instsetoo_native/util/makefile.mk                  |    1 +
 .../registry/data/org/openoffice/Office/Common.xcu |    2 +-
 postprocess/packcomponents/makefile.mk             |    2 +-
 scp2/source/ooo/file_ooo.scp                       |   12 ++
 scp2/source/ooo/module_hidden_ooo.scp              |    2 +-
 scripting/prj/d.lst                                |    1 +
 wizards/Module_wizards.mk                          |    2 +-
 wizards/Pyuno_fax.mk                               |   34 ++++
 wizards/com/sun/star/wizards/fax/CallWizard.py     |  175 ++++----------------
 wizards/com/sun/star/wizards/fax/fax.component     |    6 +-
 11 files changed, 87 insertions(+), 152 deletions(-)
 create mode 100644 wizards/Pyuno_fax.mk

diff --git a/instsetoo_native/util/makefile.mk b/instsetoo_native/util/makefile.mk
index 6880750..fc1cc61 100644
--- a/instsetoo_native/util/makefile.mk
+++ b/instsetoo_native/util/makefile.mk
@@ -74,6 +74,7 @@ LOCALPYFILES= \
     $(BIN)$/pythonloader.py \
     $(BIN)$/officehelper.py \
     $(BIN)$/mailmerge.py \
+    $(BIN)$/CallWizard.py \
     $(BIN)$/msgbox.py
 .ENDIF
 
diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu
index 998ab38..85d4480 100644
--- a/officecfg/registry/data/org/openoffice/Office/Common.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu
@@ -400,7 +400,7 @@
       </node>
       <node oor:name="m1" oor:op="replace" install:module="writer">
         <prop oor:name="URL"  oor:type="xs:string">
-          <value >service:com.sun.star.wizards.fax.CallWizard?start</value>
+          <value >service:com.sun.star.wizards.fax.CallWizard?insert</value>
         </prop>
         <prop oor:name="Title">
           <value xml:lang="en-US">~Fax...</value>
diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
index 33f0f01..05bf897 100644
--- a/postprocess/packcomponents/makefile.mk
+++ b/postprocess/packcomponents/makefile.mk
@@ -370,7 +370,7 @@ my_components += evoab
 my_components += component/avmedia/source/gstreamer/avmediagstreamer
 .END
 
-my_ooo_components = mailmerge
+my_ooo_components = mailmerge component/wizards/com/sun/star/wizards/fax/fax
 
 .INCLUDE: target.mk
 
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index 61589b6..4583dec 100644
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -472,6 +472,18 @@ STD_JAR_FILE( gid_File_Jar_Saxon, saxon9 )
 #endif
 #endif
 
+#ifndef AIX
+#ifndef DISABLE_PYUNO
+File gid_File_PyFax
+    TXT_FILE_BODY;
+    Dir = gid_Dir_Program;
+    Name = "CallWizard.py";
+    Styles = (PACKED);
+End
+#endif
+#endif
+
+
 #ifndef SYSTEM_LIBTEXTCAT_DATA
 // fingerprint files (lm)
 
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index 273f802..c25c87b 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -139,7 +139,7 @@ Module gid_Module_Root_Files_3
 	gid_File_Jar_Table,
 	gid_File_Jar_Letter,
 	gid_File_Jar_Form,
-	gid_File_Jar_Fax,
+	gid_File_PyFax,
 	gid_File_Jar_Agenda,
 	gid_File_Jar_Web,
 	gid_File_Jar_Query,
diff --git a/scripting/prj/d.lst b/scripting/prj/d.lst
index f1caf45..5deedbe 100644
--- a/scripting/prj/d.lst
+++ b/scripting/prj/d.lst
@@ -16,6 +16,7 @@ mkdir: %_DEST%\bin\pyuno
 
 ..\%__SRC%\lib\lib*static*.dylib %_DEST%\lib\lib*static*.dylib
 ..\%__SRC%\misc\mailmerge.component %_DEST%\xml\mailmerge.component
+..\%__SRC%\misc\fax.component %_DEST%\xml\fax.component
 ..\%__SRC%\misc\ScriptFramework.component %_DEST%\xml\ScriptFramework.component
 ..\%__SRC%\misc\ScriptProviderForJava.component %_DEST%\xml\ScriptProviderForJava.component
 ..\%__SRC%\misc\basprov.component %_DEST%\xml\basprov.component
diff --git a/wizards/Module_wizards.mk b/wizards/Module_wizards.mk
index 7f08d0f..090a429 100644
--- a/wizards/Module_wizards.mk
+++ b/wizards/Module_wizards.mk
@@ -36,6 +36,7 @@ $(eval $(call gb_Module_add_targets,wizards,\
 	AllLangResTarget_tpl \
 	AllLangResTarget_wwz \
 	AllLangResTarget_wzi \
+	Pyuno_fax \
 	Zip_depot \
 	Zip_euro \
 	Zip_form \
@@ -56,7 +57,6 @@ ifeq ($(SOLAR_JAVA),TRUE)
 $(eval $(call gb_Module_add_targets,wizards,\
 	Jar_commonwizards \
 	Jar_agenda \
-	Jar_fax \
 	Jar_form \
 	Jar_letter \
 	Jar_query \
diff --git a/wizards/Pyuno_fax.mk b/wizards/Pyuno_fax.mk
new file mode 100644
index 0000000..1de81e0
--- /dev/null
+++ b/wizards/Pyuno_fax.mk
@@ -0,0 +1,34 @@
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2011 David Tardon, Red Hat Inc. <dtardon at redhat.com> (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_Pyuno_Pyuno,CallWizard,$(SRCDIR)/wizards/com/sun/star/wizards/fax))
+
+$(eval $(call gb_Pyuno_add_files,CallWizard,\
+    CallWizard.py \
+))
+
+$(eval $(call gb_Pyuno_set_componentfile,CallWizard,wizards/com/sun/star/wizards/fax/fax))
+
+# vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/wizards/com/sun/star/wizards/fax/CallWizard.py b/wizards/com/sun/star/wizards/fax/CallWizard.py
index 2141450..33385a2 100644
--- a/wizards/com/sun/star/wizards/fax/CallWizard.py
+++ b/wizards/com/sun/star/wizards/fax/CallWizard.py
@@ -1,156 +1,43 @@
-import traceback
+# -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 
-class CallWizard(object):
+import uno
+import unohelper
 
-    '''
-    Gives a factory for creating the service. This method is called by the
-    <code>JavaLoader</code>
-    <p></p>
-    @param stringImplementationName The implementation name of the component.
-    @param xMSF The service manager, who gives access to every known service.
-    @param xregistrykey Makes structural information (except regarding tree
-    structures) of a single registry key accessible.
-    @return Returns a <code>XSingleServiceFactory</code>
-    for creating the component.
-    @see com.sun.star.comp.loader.JavaLoader#
-    '''
+from com.sun.star.task import XJobExecutor
 
-    @classmethod
-    def __getServiceFactory(self, stringImplementationName, xMSF, \
-        xregistrykey):
+# implement a UNO component by deriving from the standard unohelper.Base class
+# and from the interface(s) you want to implement.
+class HelloWorldJob(unohelper.Base, XJobExecutor):
+    def __init__(self, ctx):
+        # store the component context for later use
+        self.ctx = ctx
 
-        xsingleservicefactory = None
-        if stringImplementationName.equals(WizardImplementation.Name):
-            xsingleservicefactory = FactoryHelper.getServiceFactory( \
-                WizardImplementation, WizardImplementation.__serviceName,
-                xMSF, xregistrykey)
+    def trigger(self, args):
+        # note: args[0] == "HelloWorld", see below config settings
 
-        return xsingleservicefactory
+        # retrieve the desktop object
+        desktop = self.ctx.ServiceManager.createInstanceWithContext(
+            "com.sun.star.frame.Desktop", self.ctx)
 
-    '''
-    This class implements the component. At least the interfaces XServiceInfo,
-    XTypeProvider, and XInitialization should be provided by the service.
-    '''
+        # get current document model
+        model = desktop.getCurrentComponent()
 
-    class WizardImplementation:
-        __serviceName = "com.sun.star.wizards.fax.CallWizard"
-        #private XMultiServiceFactory xmultiservicefactory
+        # access the document's text property
+        text = model.Text
 
-        '''
-        The constructor of the inner class has a XMultiServiceFactory
-        parameter.
-        @param xmultiservicefactoryInitialization A special service factory
-        could be introduced while initializing.
-        '''
+        # create a cursor
+        cursor = text.createTextCursor()
 
-        @classmethod
-        def WizardImplementation_XMultiServiceFactory(self, \
-            xmultiservicefactoryInitialization):
+        # insert the text into the document
+        text.insertString(cursor, "Hello World", 0)
 
-            tmp = WizardImplementation()
-            tmp.WizardImplementation_body_XMultiServiceFactory( \
-                xmultiservicefactoryInitialization)
-            return tmp
+# pythonloader looks for a static g_ImplementationHelper variable
+g_ImplementationHelper = unohelper.ImplementationHelper()
 
-        def WizardImplementation_body_XMultiServiceFactory(self, \
-            xmultiservicefactoryInitialization):
-
-            self.xmultiservicefactory = xmultiservicefactoryInitialization
-            if self.xmultiservicefactory != None:
-                pass
-
-        '''
-        Execute Wizard
-        @param str only valid parameter is 'start' at the moment.
-        '''
-
-        def trigger(self, str):
-            if str.equalsIgnoreCase("start"):
-                lw = FaxWizardDialogImpl(self.xmultiservicefactory)
-                if not FaxWizardDialogImpl.running:
-                    lw.startWizard(self.xmultiservicefactory, None)
-
-        '''
-        The service name, that must be used to get an instance of this service
-        The service manager, that gives access to all registered services.
-        This method is a member of the interface for initializing an object
-        directly after its creation.
-        @param object This array of arbitrary objects will be passed to the
-        component after its creation.
-        @throws com.sun.star.uno.Exception Every exception will not be
-        handled, but will be passed to the caller.
-        '''
-
-        def initialize(self, object):
-            pass
-
-        '''
-        This method returns an array of all supported service names.
-        @return Array of supported service names.
-        '''
-
-        def getSupportedServiceNames(self):
-            stringSupportedServiceNames = range(1)
-            stringSupportedServiceNames[0] = self.__class__.__serviceName
-            return (stringSupportedServiceNames)
-
-        '''
-        This method returns true, if the given service will be supported by
-        the component.
-        @param stringService Service name.
-        @return True, if the given service name will be supported.
-        '''
-
-        def supportsService(self, stringService):
-            booleanSupportsService = False
-            if stringService.equals(self.__class__.__serviceName):
-                booleanSupportsService = True
-
-            return (booleanSupportsService)
-
-        '''
-        This method returns an array of bytes, that can be used to
-        unambiguously distinguish between two sets of types,
-        e.g. to realise hashing functionality when the object is introspected.
-        Two objects that return the same ID also have to return the same
-        set of types in getTypes(). If an unique implementation Id cannot be
-        provided this method has to return an empty sequence. Important:
-        If the object aggregates other objects the ID has to be unique for
-        the whole combination of objects.
-        @return Array of bytes, in order to distinguish between two sets.
-        '''
-
-        def getImplementationId(self):
-            byteReturn = []
-            try:
-                byteReturn = ("" + self.hashCode()).Bytes
-            except Exception, exception:
-                traceback.print_exc()
-
-            return (byteReturn)
-
-        '''
-        Return the class name of the component.
-        @return Class name of the component.
-        '''
-
-        def getImplementationName(self):
-            return (WizardImplementation.Name)
-
-        '''
-        Provides a sequence of all types (usually interface types) provided
-        by the object.
-        @return Sequence of all types (usually interface types) provided
-        by the service.
-        '''
-
-        def getTypes(self):
-            typeReturn = []
-            try:
-                #COMMENTED
-                #typeReturn = [new Type (XPropertyAccess.class), new Type (XJob.class), new Type (XJobExecutor.class), new Type (XTypeProvider.class), new Type (XServiceInfo.class), new Type (XInitialization.class)]
-            except Exception, exception:
-                traceback.print_exc()
-
-            return (typeReturn)
+g_ImplementationHelper.addImplementation( \
+    HelloWorldJob,                               # UNO object class
+    "com.sun.star.wizards.fax.CallWizard", # implemenation name
+    ("com.sun.star.task.Job",),)                 # list of implemented services
+                                                 # (the only service)
 
+# vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/wizards/com/sun/star/wizards/fax/fax.component b/wizards/com/sun/star/wizards/fax/fax.component
index 462fe29..a03d00a 100644
--- a/wizards/com/sun/star/wizards/fax/fax.component
+++ b/wizards/com/sun/star/wizards/fax/fax.component
@@ -26,10 +26,10 @@
 *
 **********************************************************************-->
 
-<component loader="com.sun.star.loader.Java2"
+<component loader="com.sun.star.loader.Python"
     xmlns="http://openoffice.org/2010/uno-components">
   <implementation
-      name="com.sun.star.wizards.fax.CallWizard$WizardImplementation">
-    <service name="com.sun.star.wizards.fax.CallWizard"/>
+      name="com.sun.star.wizards.fax.CallWizard">
+    <service name="com.sun.star.task.Job"/>
   </implementation>
 </component>

--=-Iw3TWfrx1W13hAweJWMB--



More information about the LibreOffice mailing list