wizards/source/scriptforge/python/scriptforge.py |  250 ++++++++++-------------
 1 file changed, 116 insertions(+), 134 deletions(-)

New commits:
commit f2f7dbb78c54bbb23be87c991f8375bf494373c8
Author:     Jean-Pierre Ledure <j...@ledure.be>
AuthorDate: Thu Aug 29 17:13:19 2024 +0200
Commit:     Jean-Pierre Ledure <j...@ledure.be>
CommitDate: Fri Aug 30 10:21:31 2024 +0200

    scriptforge.py Improve properties performance
    
    When considering next python user script:
       a = CreateScriptService(...)
       a.prop = ...
       print(a.prop)
       print(a.prop)
    so far, the evaluation of a.prop was done
    either once or twice depending on
    - a parameter of the class a is an instance of
    - the read-only status of prop (True/False)
    
    Now the recomputation of the expression
    depends on a parameter of prop which can take
    one of next values:
      0: prop is read-only and not re-evaluated
      1: prop is read-only but re-evaluated
         f.i. because a user action can change its value
      2: prop is editable and not re-evaluated
         f.i. because it can be changed only by code
      3: prop is editable and always re-evaluated
    
    The change will decrease the number of useless
    and more costly recomputations of properties.
    
    Change-Id: I11412a58772147dab2e6b9b06c31477135932603
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172600
    Tested-by: Jenkins
    Reviewed-by: Jean-Pierre Ledure <j...@ledure.be>

diff --git a/wizards/source/scriptforge/python/scriptforge.py 
b/wizards/source/scriptforge/python/scriptforge.py
index 6b5431f75429..5a06d302271e 100644
--- a/wizards/source/scriptforge/python/scriptforge.py
+++ b/wizards/source/scriptforge/python/scriptforge.py
@@ -487,19 +487,19 @@ class SFServices(object):
                 2. Getting a property value for the first time is always done 
via a Basic call
                 3. Next occurrences are fetched from the Python dictionary of 
the instance if the property
                    is read-only, otherwise via a Basic call
-                4. Read-only properties may be modified or deleted 
exceptionally by the class
-                   when self.internal == True. The latter must immediately be 
reset after use
 
             Each subclass must define its interface with the user scripts:
             1.  The properties
                 Property names are proper-cased
                 Conventionally, camel-cased and lower-cased synonyms are 
supported where relevant
-                    a dictionary named 'serviceproperties' with keys = 
(proper-cased) property names and value = boolean
-                        True = editable, False = read-only
-                When
-                    forceGetProperty = False    # Standard behaviour
-                read-only serviceproperties are buffered in Python after their 
1st get request to Basic
-                Otherwise set it to True to force a recomputation at each 
property getter invocation
+                Properties are grouped in a dictionary named 
'serviceproperties'
+                with keys = (proper-cased) property names and value = int
+                    0 = read-only, fetch value locally
+                    1 = read-only, fetch value from UNO/Basic because value 
might have been changed by user
+                    2 = editable, fetch value locally
+                    3 = editable, fetch value from UNO/Basic because value 
might have been changed by user
+                Properties that may be fetched locally are buffered in Python 
after their 1st get request to Basic
+                or after their update.
                 If there is a need to handle a specific property in a specific 
manner:
                     @property
                     def myProperty(self):
@@ -509,7 +509,7 @@ class SFServices(object):
                     def myMethod(self, arg1, arg2 = ''):
                         return self.Execute(self.vbMethod, 'myMethod', arg1, 
arg2)
                 Method names are proper-cased, arguments are lower-cased
-                Conventionally, camel-cased and lower-cased homonyms are 
supported where relevant
+                Conventionally, camel-cased and lower-cased homonyms are 
supported in method names where relevant
                 All arguments must be present and initialized before the call 
to Basic, if any
         """
     # Python-Basic protocol constants and flags
@@ -526,13 +526,11 @@ class SFServices(object):
     # Basic class type
     moduleClass, moduleStandard = 2, 1
     #
-    # Define the default behaviour for read-only properties: buffer their 
values in Python
-    forceGetProperty = False
     # Empty dictionary for lower/camelcased homonyms or properties
     propertysynonyms = {}
     # To operate dynamic property getting/setting it is necessary to
     # enumerate all types of properties and adapt __getattr__() and 
__setattr__() according to their type
-    internal_attributes = ('objectreference', 'objecttype', 'name', 
'internal', 'servicename',
+    internal_attributes = ('objectreference', 'objecttype', 'name', 
'servicename',
                            'serviceimplementation', 'classmodule', 'EXEC', 
'SIMPLEEXEC')
     # Shortcuts to script provider interfaces
     SIMPLEEXEC = ScriptForge.InvokeSimpleScript
@@ -547,7 +545,6 @@ class SFServices(object):
         self.objecttype = objtype  # ('SF_String', 'TIMER', ...)
         self.classmodule = classmodule  # Module (1), Class instance (2)
         self.name = name  # '' when no name
-        self.internal = False  # True to exceptionally allow assigning a new 
value to a read-only property
 
     def __getattr__(self, name):
         """
@@ -559,11 +556,10 @@ class SFServices(object):
         if name in self.propertysynonyms:  # Reset real name if argument 
provided in lower or camel case
             name = self.propertysynonyms[name]
         if self.serviceimplementation == 'basic':
-            if name in ('serviceproperties', 'internal_attributes', 
'propertysynonyms',
-                        'forceGetProperty'):
+            if name in ('serviceproperties', 'internal_attributes', 
'propertysynonyms'):
                 pass
             elif name in self.serviceproperties:
-                if self.forceGetProperty is False and 
self.serviceproperties[name] is False:  # False = read-only
+                if self.serviceproperties[name] in (0, 2):  # value may be 
fetched from the instance's local __dict__
                     if name in self.__dict__:
                         return self.__dict__[name]
                     else:
@@ -583,17 +579,14 @@ class SFServices(object):
             Management of __dict__ is automatically done in the final usual 
object.__setattr__ method
             """
         if self.serviceimplementation == 'basic':
-            if name in ('serviceproperties', 'internal_attributes', 
'propertysynonyms',
-                        'forceGetProperty'):
+            if name in ('serviceproperties', 'internal_attributes', 
'propertysynonyms'):
                 pass
             elif name[0:2] == '__' or name in self.internal_attributes:
                 pass
             elif name in self.serviceproperties or name in 
self.propertysynonyms:
                 if name in self.propertysynonyms:  # Reset real name if 
argument provided in lower or camel case
                     name = self.propertysynonyms[name]
-                if self.internal:  # internal = True forces property local 
setting even if property is read-only
-                    pass
-                elif self.serviceproperties[name] is True:  # True == Editable
+                if self.serviceproperties[name] in (2, 3):  # Editable
                     self.SetProperty(name, value)
                     return
                 else:
@@ -1148,11 +1141,9 @@ class SFScriptForge:
         serviceimplementation = 'basic'
         servicename = 'ScriptForge.FileSystem'
         servicesynonyms = ('filesystem', 'scriptforge.filesystem')
-        serviceproperties = dict(FileNaming = True, ConfigFolder = False, 
ExtensionsFolder = False, HomeFolder = False,
-                                 InstallFolder = False, TemplatesFolder = 
False, TemporaryFolder = False,
-                                 UserTemplatesFolder = False)
-        # Force for each property to get its value from Basic - due to 
FileNaming updatability
-        forceGetProperty = True
+        serviceproperties = dict(FileNaming = 3, ConfigFolder = 1, 
ExtensionsFolder = 1, HomeFolder = 1,
+                                 InstallFolder = 1, TemplatesFolder = 1, 
TemporaryFolder = 1,
+                                 UserTemplatesFolder = 1) # 1 because 
FileNaming determines every time the folder format
         # Open TextStream constants
         ForReading, ForWriting, ForAppending = 1, 2, 8
 
@@ -1274,7 +1265,7 @@ class SFScriptForge:
         serviceimplementation = 'basic'
         servicename = 'ScriptForge.L10N'
         servicesynonyms = ('l10n', 'scriptforge.l10n')
-        serviceproperties = dict(Folder = False, Languages = False, Locale = 
False)
+        serviceproperties = dict(Folder = 0, Languages = 0, Locale = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, foldername = '', locale = '', encoding = 
'UTF-8',
@@ -1317,12 +1308,12 @@ class SFScriptForge:
         serviceimplementation = 'basic'
         servicename = 'ScriptForge.Platform'
         servicesynonyms = ('platform', 'scriptforge.platform')
-        serviceproperties = dict(Architecture = False, ComputerName = False, 
CPUCount = False, CurrentUser = False,
-                                 Extensions = False, FilterNames = False, 
Fonts = False, FormatLocale = False,
-                                 Locale = False, Machine = False, OfficeLocale 
= False, OfficeVersion = False,
-                                 OSName = False, OSPlatform = False, OSRelease 
= False, OSVersion = False,
-                                 Printers = False, Processor = False, 
PythonVersion = False, SystemLocale = False,
-                                 UserData = False)
+        serviceproperties = dict(Architecture = 0, ComputerName = 0, CPUCount 
= 0, CurrentUser = 0,
+                                 Extensions = 0, FilterNames = 0, Fonts = 0, 
FormatLocale = 0,
+                                 Locale = 0, Machine = 0, OfficeLocale = 0, 
OfficeVersion = 0,
+                                 OSName = 0, OSPlatform = 0, OSRelease = 0, 
OSVersion = 0,
+                                 Printers = 0, Processor = 0, PythonVersion = 
0, SystemLocale = 0,
+                                 UserData = 0)
         # Python helper functions
         py = ScriptForge.pythonhelpermodule + '$' + '_SF_Platform'
 
@@ -1612,8 +1603,8 @@ class SFScriptForge:
         serviceimplementation = 'basic'
         servicename = 'ScriptForge.TextStream'
         servicesynonyms = ()
-        serviceproperties = dict(AtEndOfStream = False, Encoding = False, 
FileName = False, IOMode = False,
-                                 Line = False, NewLine = True)
+        serviceproperties = dict(AtEndOfStream = 1, Encoding = 0, FileName = 
0, IOMode = 0,
+                                 Line = 1, NewLine = 2)
 
         @property
         def AtEndOfStream(self):
@@ -1656,10 +1647,8 @@ class SFScriptForge:
         serviceimplementation = 'basic'
         servicename = 'ScriptForge.Timer'
         servicesynonyms = ('timer', 'scriptforge.timer')
-        serviceproperties = dict(Duration = False, IsStarted = False, 
IsSuspended = False,
-                                 SuspendDuration = False, TotalDuration = 
False)
-        # Force for each property to get its value from Basic
-        forceGetProperty = True
+        serviceproperties = dict(Duration = 1, IsStarted = 1, IsSuspended = 1,
+                                 SuspendDuration = 1, TotalDuration = 1)
 
         @classmethod
         def ReviewServiceArgs(cls, start = False):
@@ -1700,7 +1689,7 @@ class SFScriptForge:
         serviceimplementation = 'basic'
         servicename = 'ScriptForge.UI'
         servicesynonyms = ('ui', 'scriptforge.ui')
-        serviceproperties = dict(ActiveWindow = False, Height = False, Width = 
False, X = False, Y = False)
+        serviceproperties = dict(ActiveWindow = 1, Height = 1, Width = 1, X = 
1, Y = 1)
 
         # Class constants
         MACROEXECALWAYS, MACROEXECNEVER, MACROEXECNORMAL = 2, 1, 0
@@ -1790,7 +1779,7 @@ class SFDatabases:
         serviceimplementation = 'basic'
         servicename = 'SFDatabases.Database'
         servicesynonyms = ('database', 'sfdatabases.database')
-        serviceproperties = dict(Queries = False, Tables = False, XConnection 
= False, XMetaData = False)
+        serviceproperties = dict(Queries = 0, Tables = 0, XConnection = 0, 
XMetaData = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, filename = '', registrationname = '', 
readonly = True, user = '', password = ''):
@@ -1865,11 +1854,10 @@ class SFDatabases:
         serviceimplementation = 'basic'
         servicename = 'SFDatabases.Dataset'
         servicesynonyms = ()    # CreateScriptService is not applicable here
-        serviceproperties = dict(BOF = True, DefaultValues = False, EOF = 
True, Fields = False, Filter = False,
-                                 OrderBy = False, ParentDatabase = False, 
RowCount = False, RowNumber = False,
-                                 Source = False, SourceType = False, 
UpdatableFields = False, Values = False,
-                                 XRowSet = False)
-        forceGetProperty = True
+        serviceproperties = dict(BOF = 3, DefaultValues = 0, EOF = 3, Fields = 
0, Filter = 0,
+                                 OrderBy = 0, ParentDatabase = 0, RowCount = 
1, RowNumber = 1,
+                                 Source = 0, SourceType = 0, UpdatableFields = 
0, Values = 1,
+                                 XRowSet = 0)
 
         @classmethod
         def _dictargs(cls, args, kwargs):
@@ -1944,10 +1932,10 @@ class SFDatabases:
         serviceimplementation = 'basic'
         servicename = 'SFDatabases.Datasheet'
         servicesynonyms = ('datasheet', 'sfdatabases.datasheet')
-        serviceproperties = dict(ColumnHeaders = False, CurrentColumn = False, 
CurrentRow = False,
-                                 DatabaseFileName = False, Filter = True, 
LastRow = False, OrderBy = True,
-                                 ParentDatabase = False, Source = False, 
SourceType = False, XComponent = False,
-                                 XControlModel = False, XTabControllerModel = 
False)
+        serviceproperties = dict(ColumnHeaders = 0, CurrentColumn = 1, 
CurrentRow = 1,
+                                 DatabaseFileName = 0, Filter = 2, LastRow = 
0, OrderBy = 2,
+                                 ParentDatabase = 0, Source = 0, SourceType = 
0, XComponent = 0,
+                                 XControlModel = 0, XTabControllerModel = 0)
 
         def Activate(self):
             return self.ExecMethod(self.vbMethod, 'Activate')
@@ -2003,12 +1991,12 @@ class SFDialogs:
         serviceimplementation = 'basic'
         servicename = 'SFDialogs.Dialog'
         servicesynonyms = ('dialog', 'sfdialogs.dialog')
-        serviceproperties = dict(Caption = True, Height = True, Modal = False, 
Name = False,
-                                 OnFocusGained = True, OnFocusLost = True, 
OnKeyPressed = True,
-                                 OnKeyReleased = True, OnMouseDragged = True, 
OnMouseEntered = True,
-                                 OnMouseExited = True, OnMouseMoved = True, 
OnMousePressed = True,
-                                 OnMouseReleased = True,
-                                 Page = True, Visible = True, Width = True, 
XDialogModel = False, XDialogView = False)
+        serviceproperties = dict(Caption = 2, Height = 2, Modal = 0, Name = 0,
+                                 OnFocusGained = 2, OnFocusLost = 2, 
OnKeyPressed = 2,
+                                 OnKeyReleased = 2, OnMouseDragged = 2, 
OnMouseEntered = 2,
+                                 OnMouseExited = 2, OnMouseMoved = 2, 
OnMousePressed = 2,
+                                 OnMouseReleased = 2,
+                                 Page = 2, Visible = 2, Width = 2, 
XDialogModel = 0, XDialogView = 0)
         # Class constants used together with the Execute() method
         OKBUTTON, CANCELBUTTON = 1, 0
 
@@ -2016,7 +2004,7 @@ class SFDialogs:
         def ReviewServiceArgs(cls, container = '', library = 'Standard', 
dialogname = ''):
             """
                 Transform positional and keyword arguments into positional only
-                Add the XComponentContext as last argument
+                Add the 
XComfile:///home/jean-pierre/.config/libreoffice/4/user/Scripts/python/QA/scriptforge.pyponentContext
 as last argument
                 """
             return container, library, dialogname, ScriptForge.componentcontext
 
@@ -2197,19 +2185,19 @@ class SFDialogs:
         serviceimplementation = 'basic'
         servicename = 'SFDialogs.DialogControl'
         servicesynonyms = ()
-        serviceproperties = dict(Border = True, Cancel = True, Caption = True, 
ControlType = False, CurrentNode = True,
-                                 Default = True, Enabled = True, Format = 
True, Height = True, ListCount = False,
-                                 ListIndex = True, Locked = True, MultiSelect 
= True, Name = False,
-                                 OnActionPerformed = True, 
OnAdjustmentValueChanged = True, OnFocusGained = True,
-                                 OnFocusLost = True, OnItemStateChanged = 
True, OnKeyPressed = True,
-                                 OnKeyReleased = True, OnMouseDragged = True, 
OnMouseEntered = True,
-                                 OnMouseExited = True, OnMouseMoved = True, 
OnMousePressed = True,
-                                 OnMouseReleased = True, OnNodeExpanded = 
True, OnNodeSelected = True,
-                                 OnTextChanged = True, Page = True, Parent = 
False, Picture = True,
-                                 RootNode = False, RowSource = True, TabIndex 
= True, Text = False, TipText = True,
-                                 TripleState = True, URL = True, Value = True, 
Visible = True, Width = True,
-                                 X = True, Y = True, XControlModel = False, 
XControlView = False,
-                                 XGridColumnModel = False, XGridDataModel = 
False, XTreeDataModel = False)
+        serviceproperties = dict(Border = 2, Cancel = 2, Caption = 2, 
ControlType = 0, CurrentNode = 3,
+                                 Default = 2, Enabled = 2, Format = 2, Height 
= 2, ListCount = 0,
+                                 ListIndex = 3, Locked = 2, MultiSelect = 2, 
Name = 0,
+                                 OnActionPerformed = 2, 
OnAdjustmentValueChanged = 2, OnFocusGained = 2,
+                                 OnFocusLost = 2, OnItemStateChanged = 2, 
OnKeyPressed = 2,
+                                 OnKeyReleased = 2, OnMouseDragged = 2, 
OnMouseEntered = 2,
+                                 OnMouseExited = 2, OnMouseMoved = 2, 
OnMousePressed = 2,
+                                 OnMouseReleased = 2, OnNodeExpanded = 2, 
OnNodeSelected = 2,
+                                 OnTextChanged = 2, Page = 2, Parent = 0, 
Picture = 2,
+                                 RootNode = 0, RowSource = 2, TabIndex = 2, 
Text = 0, TipText = 2,
+                                 TripleState = 2, URL = 2, Value = 3, Visible 
= 2, Width = 2,
+                                 X = 2, Y = 2, XControlModel = 0, XControlView 
= 0,
+                                 XGridColumnModel = 0, XGridDataModel = 0, 
XTreeDataModel = 0)
 
         # Root related properties do not start with X and, nevertheless, 
return a UNO object
         @property
@@ -2271,14 +2259,12 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.Document'
         servicesynonyms = ('document', 'sfdocuments.document')
-        serviceproperties = dict(CustomProperties = True, Description = True, 
DocumentProperties = False,
-                                 DocumentType = False, ExportFilters = False, 
FileSystem = False, ImportFilters = False,
-                                 IsBase = False, IsCalc = False, IsDraw = 
False, IsFormDocument = False,
-                                 IsImpress = False, IsMath = False, IsWriter = 
False, Keywords = True, Readonly = False,
-                                 StyleFamilies = False, Subject = True, Title 
= True, XComponent = False,
-                                 XDocumentSettings = False)
-        # Force for each property to get its value from Basic - due to intense 
interactivity with user
-        forceGetProperty = True
+        serviceproperties = dict(CustomProperties = 3, Description = 3, 
DocumentProperties = 1,
+                                 DocumentType = 0, ExportFilters = 0, 
FileSystem = 0, ImportFilters = 0,
+                                 IsBase = 0, IsCalc = 0, IsDraw = 0, 
IsFormDocument = 0,
+                                 IsImpress = 0, IsMath = 0, IsWriter = 0, 
Keywords = 3, Readonly = 1,
+                                 StyleFamilies = 1, Subject = 3, Title = 3, 
XComponent = 0,
+                                 XDocumentSettings = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, windowname = ''):
@@ -2370,9 +2356,9 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.Base'
         servicesynonyms = ('base', 'scriptforge.base')
-        serviceproperties = dict(DocumentType = False, FileSystem = False, 
IsBase = False, IsCalc = False,
-                                 IsDraw = False, IsFormDocument = False, 
IsImpress = False, IsMath = False,
-                                 IsWriter = False, XComponent = False)
+        serviceproperties = dict(DocumentType = 0, FileSystem = 0, IsBase = 0, 
IsCalc = 0,
+                                 IsDraw = 0, IsFormDocument = 0, IsImpress = 
0, IsMath = 0,
+                                 IsWriter = 0, XComponent = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, windowname = ''):
@@ -2427,15 +2413,13 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.Calc'
         servicesynonyms = ('calc', 'sfdocuments.calc')
-        serviceproperties = dict(CurrentSelection = True, CustomProperties = 
True, Description = True,
-                                 DocumentProperties = False, DocumentType = 
False, ExportFilters = False,
-                                 FileSystem = False, ImportFilters = False, 
IsBase = False, IsCalc = False,
-                                 IsDraw = False, IsFormDocument = False, 
IsImpress = False, IsMath = False,
-                                 IsWriter = False, Keywords = True, Readonly = 
False, Sheets = False,
-                                 StyleFamilies = False, Subject = True, Title 
= True, XComponent = False,
-                                 XDocumentSettings = False)
-        # Force for each property to get its value from Basic - due to intense 
interactivity with user
-        forceGetProperty = True
+        serviceproperties = dict(CurrentSelection = 3, CustomProperties = 3, 
Description = 3,
+                                 DocumentProperties = 1, DocumentType = 0, 
ExportFilters = 0,
+                                 FileSystem = 0, ImportFilters = 0, IsBase = 
0, IsCalc = 0,
+                                 IsDraw = 0, IsFormDocument = 0, IsImpress = 
0, IsMath = 0,
+                                 IsWriter = 0, Keywords = 3, Readonly = 1, 
Sheets = 1,
+                                 StyleFamilies = 0, Subject = 3, Title = 3, 
XComponent = 0,
+                                 XDocumentSettings = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, windowname = ''):
@@ -2672,10 +2656,10 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.Chart'
         servicesynonyms = ()
-        serviceproperties = dict(ChartType = True, Deep = True, Dim3D = True, 
Exploded = True, Filled = True,
-                                 Legend = True, Percent = True, Stacked = 
True, Title = True,
-                                 XChartObj = False, XDiagram = False, XShape = 
False, XTableChart = False,
-                                 XTitle = True, YTitle = True)
+        serviceproperties = dict(ChartType = 2, Deep = 2, Dim3D = 2, Exploded 
= 2, Filled = 2,
+                                 Legend = 2, Percent = 2, Stacked = 2, Title = 
2,
+                                 XChartObj = 0, XDiagram = 0, XShape = 0, 
XTableChart = 0,
+                                 XTitle = 2, YTitle = 2)
 
         def ExportToFile(self, filename, imagetype = 'png', overwrite = False):
             return self.ExecMethod(self.vbMethod, 'ExportToFile', filename, 
imagetype, overwrite)
@@ -2698,14 +2682,14 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.Form'
         servicesynonyms = ()
-        serviceproperties = dict(AllowDeletes = True, AllowInserts = True, 
AllowUpdates = True, BaseForm = False,
-                                 Bookmark = True, CurrentRecord = True, Filter 
= True, LinkChildFields = False,
-                                 LinkParentFields = False, Name = False,
-                                 OnApproveCursorMove = True, 
OnApproveParameter = True, OnApproveReset = True,
-                                 OnApproveRowChange = True, OnApproveSubmit = 
True, OnConfirmDelete = True,
-                                 OnCursorMoved = True, OnErrorOccurred = True, 
OnLoaded = True, OnReloaded = True,
-                                 OnReloading = True, OnResetted = True, 
OnRowChanged = True, OnUnloaded = True,
-                                 OnUnloading = True, OrderBy = True, Parent = 
False, RecordSource = True, XForm = False)
+        serviceproperties = dict(AllowDeletes = 2, AllowInserts = 2, 
AllowUpdates = 2, BaseForm = 0,
+                                 Bookmark = 3, CurrentRecord = 3, Filter = 3, 
LinkChildFields = 0,
+                                 LinkParentFields = 0, Name = 0,
+                                 OnApproveCursorMove = 2, OnApproveParameter = 
2, OnApproveReset = 2,
+                                 OnApproveRowChange = 2, OnApproveSubmit = 2, 
OnConfirmDelete = 2,
+                                 OnCursorMoved = 2, OnErrorOccurred = 2, 
OnLoaded = 2, OnReloaded = 2,
+                                 OnReloading = 2, OnResetted = 2, OnRowChanged 
= 2, OnUnloaded = 2,
+                                 OnUnloading = 2, OrderBy = 3, Parent = 0, 
RecordSource = 2, XForm = 0)
 
         def Activate(self):
             return self.ExecMethod(self.vbMethod, 'Activate')
@@ -2754,19 +2738,19 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.FormControl'
         servicesynonyms = ()
-        serviceproperties = dict(Action = True, Caption = True, ControlSource 
= False, ControlType = False,
-                                 Default = True, DefaultValue = True, Enabled 
= True, Format = True,
-                                 ListCount = False, ListIndex = True, 
ListSource = True, ListSourceType = True,
-                                 Locked = True, MultiSelect = True, Name = 
False,
-                                 OnActionPerformed = True, 
OnAdjustmentValueChanged = True,
-                                 OnApproveAction = True, OnApproveReset = 
True, OnApproveUpdate = True,
-                                 OnChanged = True, OnErrorOccurred = True, 
OnFocusGained = True, OnFocusLost = True,
-                                 OnItemStateChanged = True, OnKeyPressed = 
True, OnKeyReleased = True,
-                                 OnMouseDragged = True, OnMouseEntered = True, 
OnMouseExited = True,
-                                 OnMouseMoved = True, OnMousePressed = True, 
OnMouseReleased = True, OnResetted = True,
-                                 OnTextChanged = True, OnUpdated = True, 
Parent = False, Picture = True,
-                                 Required = True, Text = False, TipText = 
True, TripleState = True, Value = True,
-                                 Visible = True, XControlModel = False, 
XControlView = False)
+        serviceproperties = dict(Action = 2, Caption = 2, ControlSource = 0, 
ControlType = 0,
+                                 Default = 2, DefaultValue = 2, Enabled = 2, 
Format = 2,
+                                 ListCount = 0, ListIndex = 3, ListSource = 2, 
ListSourceType = 2,
+                                 Locked = 2, MultiSelect = 2, Name = 0,
+                                 OnActionPerformed = 2, 
OnAdjustmentValueChanged = 2,
+                                 OnApproveAction = 2, OnApproveReset = 2, 
OnApproveUpdate = 2,
+                                 OnChanged = 2, OnErrorOccurred = 2, 
OnFocusGained = 2, OnFocusLost = 2,
+                                 OnItemStateChanged = 2, OnKeyPressed = 2, 
OnKeyReleased = 2,
+                                 OnMouseDragged = 2, OnMouseEntered = 2, 
OnMouseExited = 2,
+                                 OnMouseMoved = 2, OnMousePressed = 2, 
OnMouseReleased = 2, OnResetted = 2,
+                                 OnTextChanged = 2, OnUpdated = 2, Parent = 0, 
Picture = 2,
+                                 Required = 2, Text = 0, TipText = 2, 
TripleState = 2, Value = 3,
+                                 Visible = 2, XControlModel = 0, XControlView 
= 0)
 
         def Controls(self, controlname = ''):
             return self.ExecMethod(self.vbMethod + self.flgArrayRet, 
'Controls', controlname)
@@ -2789,10 +2773,10 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.FormDocument'
         servicesynonyms = ('formdocument', 'sfdocuments.formdocument')
-        serviceproperties = dict(DocumentType = False, FileSystem = False, 
IsBase = False, IsCalc = False,
-                                 IsDraw = False, IsFormDocument = False, 
IsImpress = False, IsMath = False,
-                                 IsWriter = False, Readonly = False, 
StyleFamilies = False, XComponent = False,
-                                 XDocumentSettings = False)
+        serviceproperties = dict(DocumentType = 0, FileSystem = 0, IsBase = 0, 
IsCalc = 0,
+                                 IsDraw = 0, IsFormDocument = 0, IsImpress = 
0, IsMath = 0,
+                                 IsWriter = 0, Readonly = 0, StyleFamilies = 
0, XComponent = 0,
+                                 XDocumentSettings = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, windowname = ''):
@@ -2827,14 +2811,12 @@ class SFDocuments:
         serviceimplementation = 'basic'
         servicename = 'SFDocuments.Writer'
         servicesynonyms = ('writer', 'sfdocuments.writer')
-        serviceproperties = dict(CustomProperties = True, Description = True, 
DocumentProperties = False,
-                                 DocumentType = False, ExportFilters = False, 
FileSystem = False, ImportFilters = False,
-                                 IsBase = False, IsCalc = False, IsDraw = 
False, IsFormDocument = False,
-                                 IsImpress = False, IsMath = False, IsWriter = 
False, Keywords = True, Readonly = False,
-                                 StyleFamilies = False, Subject = True, Title 
= True, XComponent = False,
-                                 XDocumentSettings = False)
-        # Force for each property to get its value from Basic - due to intense 
interactivity with user
-        forceGetProperty = True
+        serviceproperties = dict(CustomProperties = 3, Description = 3, 
DocumentProperties = 1,
+                                 DocumentType = 0, ExportFilters = 0, 
FileSystem = 0, ImportFilters = 0,
+                                 IsBase = 0, IsCalc = 0, IsDraw = 0, 
IsFormDocument = 0,
+                                 IsImpress = 0, IsMath = 0, IsWriter = 0, 
Keywords = 3, Readonly = 1,
+                                 StyleFamilies = 1, Subject = 3, Title = 3, 
XComponent = 0,
+                                 XDocumentSettings = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, windowname = ''):
@@ -2882,7 +2864,7 @@ class SFWidgets:
         serviceimplementation = 'basic'
         servicename = 'SFWidgets.Menu'
         servicesynonyms = ('menu', 'sfwidgets.menu')
-        serviceproperties = dict(ShortcutCharacter = False, SubmenuCharacter = 
False)
+        serviceproperties = dict(ShortcutCharacter = 0, SubmenuCharacter = 0)
 
         def AddCheckBox(self, menuitem, name = '', status = False, icon = '', 
tooltip = '',
                         command = '', script = ''):
@@ -2914,7 +2896,7 @@ class SFWidgets:
         serviceimplementation = 'basic'
         servicename = 'SFWidgets.ContextMenu'
         servicesynonyms = ('contextmenu', 'sfwidgets.contextmenu')
-        serviceproperties = dict(ShortcutCharacter = False, SubmenuCharacter = 
False)
+        serviceproperties = dict(ShortcutCharacter = 0, SubmenuCharacter = 0)
 
         def Activate(self, enable = True):
             return self.ExecMethod(self.vbMethod, 'Activate', enable)
@@ -2940,7 +2922,7 @@ class SFWidgets:
         serviceimplementation = 'basic'
         servicename = 'SFWidgets.PopupMenu'
         servicesynonyms = ('popupmenu', 'sfwidgets.popupmenu')
-        serviceproperties = dict(ShortcutCharacter = False, SubmenuCharacter = 
False)
+        serviceproperties = dict(ShortcutCharacter = 0, SubmenuCharacter = 0)
 
         @classmethod
         def ReviewServiceArgs(cls, event = None, x = 0, y = 0, submenuchar = 
''):
@@ -2976,8 +2958,8 @@ class SFWidgets:
         serviceimplementation = 'basic'
         servicename = 'SFWidgets.Toolbar'
         servicesynonyms = ('toolbar', 'sfwidgets.toolbar')
-        serviceproperties = dict(BuiltIn = False, Docked = False, 
HasGlobalScope = False, Name = False,
-                                 ResourceURL = False, Visible = True, 
XUIElement = False)
+        serviceproperties = dict(BuiltIn = 0, Docked = 1, HasGlobalScope = 0, 
Name = 0,
+                                 ResourceURL = 0, Visible = 3, XUIElement = 0)
 
         def ToolbarButtons(self, buttonname = ''):
             return self.ExecMethod(self.vbMethod + self.flgArrayRet, 
'ToolbarButtons', buttonname)
@@ -2995,8 +2977,8 @@ class SFWidgets:
         serviceimplementation = 'basic'
         servicename = 'SFWidgets.ToolbarButton'
         servicesynonyms = ('toolbarbutton', 'sfwidgets.toolbarbutton')
-        serviceproperties = dict(Caption = False, Height = False, Index = 
False, OnClick = True, Parent = False,
-                                 TipText = True, Visible = True, Width = 
False, X = False, Y = False)
+        serviceproperties = dict(Caption = 0, Height = 0, Index = 0, OnClick = 
2, Parent = 0,
+                                 TipText = 2, Visible = 2, Width = 0, X = 0, Y 
= 0)
 
         def Execute(self):
             return self.ExecMethod(self.vbMethod, 'Execute')

Reply via email to