summaryrefslogtreecommitdiff
path: root/wizards
AgeCommit message (Collapse)AuthorFilesLines
2022-08-02ScriptForge - tdf#150203 Use RANDBETWEEN.NV i.o. RANDBETWEENJean-Pierre Ledure2-3/+3
Extract of the bug report (Rafael Lima) This bug affects a method from the ScriptForge library, more specifically the GetTempName method from the FileSystem service, which relies on calling RANDBETWEEN. Because of this bug, GetTempName only works in English, but fails in other languages. Below is a sample code for testing the GetTempName error. Sub TestTempName GlobalScope.BasicLibraries.LoadLibrary("ScriptForge") fs = CreateScriptService("FileSystem") MsgBox fs.GetTempName() End sub Interestingly changing RANDBETWEEN for RANDBETWEEN.NV in the macro above will work. Occurrences of the use of RANDBETWEEN: wizards/source/scriptforge/SF_FileSystem.xba wizards/source/sfdocuments/SF_Calc.xba Change-Id: Iea38f11acb7113aa5eaab1feff7a0e64a739aada Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137691 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-07-23Related: tdf#150011 Add HRK Croatian Kuna to Euro conversion wizardEike Rathke2-0/+17
Maybe just for completeness, it's removed from menu but might be callable as macro. Change-Id: Iade0be845186d3deb2f00f4aaa230c0b344cea72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137372 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
2022-07-21ScriptForge - tdf#149983 dialog.Execute() failureJean-Pierre Ledure2-1/+2
(patch https://gerrit.libreoffice.org/c/core/+/137084 cont'd) In SF_PythonHelper._PythonDispatcher(): Force a hardcoded call of the methods in the Dialog service which may potentially be invoked while the dialog is displayed, bypassing the generic CallByName() Basic builtin function: Activate Center EndExecute Resize Execute => was missing in the list Case when a parent dialog opens a child dialog (Controls is already hardcoded because returning an array) Change-Id: Ia12fccbb61362768301df6670161f258b32d3a78 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137289 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-07-19ScriptForge - (SF_Dialog) trap errors caused by dialog eventsJean-Pierre Ledure1-0/+2
A dialog is started with the Execute() method. During its life span user scripts may be executed as a consequence of mouse clicks etc. When those scripts contain errors and they are not trapped; - in the actual situation, the error is detected by ScriptForge and considered as an internal error - this new commit considers the error as a user error. The help pages should be completed to promote the use of errors trapping inside scripts triggered by events. Change-Id: Iba3eefc75d305c17e6e1d9d416496882e0f816bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137203 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-07-16ScriptForge - tdf#149983 dialog.EndExecute() failureJean-Pierre Ledure2-10/+26
In SF_PythonHelper._PythonDispatcher(): Force a hardcoded call of the methods in the Dialog service which may potentially be invoked while the dialog is displayed, bypassing the generic CallByName() Basic builtin function: Activate Center EndExecute Resize (Controls is already hardcoded because returning an array) Change-Id: I4931f43b37ae5f7337740d1c65b255f4a14ca069 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137084 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-07-06ScriptForge - (SF_FileSystem) new Normalize() methodJean-Pierre Ledure5-6/+64
Normalize a pathname by collapsing redundant separators and up-level references so that A//B, A/B/, A/./B and A/foo/../B all become A/B. On Windows, it converts forward slashes to backward slashes. The Basic Normalize() method invokes the _SF_FileSystem__Normalize() function located in the ScriptForgeHelper.py module for execution with the os.path builtin library The os.path.normpath() function can easily be executed directly from python user scripts. However the FileSystem.Normalize() method is proposed as well for Python scripts - for compatibility Basic/Python reasons - to manage the FileNaming notation Change-Id: I1e089612432bd2c75b2e76ffa984289ef7f9d75c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136835 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-06-28Fix typosAndrea Gelmini1-2/+2
Change-Id: I05271bd76574c09683740204534ff8a6907fc784 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136522 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-06-26ScriptForge - (SF_Calc) accurate sheet name checkJean-Pierre Ledure3-25/+53
The parsing of sheet names and range addresses has been reviewed to include the exact rules for sheet naming: must not be empty must not contain []*?:/\ must not use ' (apostrophe) as 1st and last character Additionally (ScriptForge only) it must not contain "~" which, by convention, indicates the active sheet. The code accepts exotic sheet names like: "$" "$Sheet99" "$Sheet'99" "$.Sheet'99" "!'@#$%^&()-_=+{}|;,<.>""" and exotic addresses like: "'$'.A1" "'$Sheet99'.A1" "'$Sheet''99'.A1" "'$.Sheet''99'.A1" "'!''@#$%^&()-_=+{}|;,<.>""'.A1" Target is to match completely the Calc constraints for writing formulas and sheet names.. The same rules are applicable evenly for user scripts written either in Basic or in Python. Change-Id: I759d7700152a3d811b89f156c4d9eee0071c2a7e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136446 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-06-23ScriptForge - (SF_String) FIX Unquote() with "'" as quoting charJean-Pierre Ledure1-1/+4
The quoting character (2nd argument of the method) can be the single or the double quote. The single quote was erroneously ignored. Additionally comments are added in the code about non-symmetrical escaping approaches: "" or \' (maybe to be added in help texts ?) Commit to push to libreoffice-7-4 branch too. Change-Id: Ifd8f66ee9e60310fdc292aa0f338e88d941b2e21 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136292 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-06-21ScriptForge - (SF_Calc)FIX wrong sheet name validationJean-Pierre Ledure1-3/+5
When the name of a sheet contains a "." or a space, when passed as an argument, the name must be surrounded with sinle quotes (like in usual Calc formulas). The validation of the sheet name goes thru the comparison with the list of existing sheet names in the document. The comparison compared erroneously the name with quotes and sheet name without quotes. Gave an unjustified user error. Example: calc.Sheet("'Commits 7.4'") Actual commit should be pushed to LibreOffice 7.4 too. Change-Id: I1ffd1dc42a0fd4a28fcea87de297c4cb02da6a5a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136233 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins
2022-06-08ScriptForge - (scriptforge.py) modify URL to help pageJean-Pierre Ledure1-1/+1
Avoid using hardcoded release number. Use 'latest'. Change-Id: I04f531ee736bcd94d058413634ddb49046bc6c5e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135475 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-06-07use more complex scheme on newer Python (>=3.7) to avoid DeprecationWarningNoel Grandin5-26/+105
similiar to commit 069f0eb13f7d26ce4b854160bbb9592c25609b38 Change-Id: I08577ced705df620d99781da53b6085398f52821 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135450 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-07ScriptForge - (SF_UnitTest) fix typos + layout reviewsJean-Pierre Ledure1-9/+7
Typos in comment lines Minor improvements of test report layout Change-Id: Ic19e55a84475b098959055ac1c573de629e21731 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135466 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-06-06Fix typosAndrea Gelmini1-11/+11
Change-Id: Icc97a5fdf00c9b8f267a2015a72c050438452105 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135441 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-06-04ScriptForge - New 'UnitTest' service for BasicJean-Pierre Ledure15-4/+2164
The "UnitTest" service is implemented as a new Basic library called 'SFUnitTests'. ScriptForge unit tests (SF_UnitTest class module) ====================== Class providing a framework to execute and check sets of unit tests. The UnitTest unit testing framework was originally inspired by unittest.py in Python and has a similar flavor as major unit testing frameworks in other languages. It supports - test automation - sharing of setupand shutdown code - aggregation of tests into collections. Both the - code describing the unit tests - code to be tested must be written exclusively in Basic (the code might call functions written in other languages). The code to be tested may be released as an extension. It does not need to make use of ScriptForge services. The test reporting device is the Console. Definitions: - Test Case: each test case is a Basic Sub. - Test Suite: a collection of test cases stored in 1 Basic module. - Unit test: a set of test suites stored in 1 library. Two modes: - the normal mode ("full mode"), using test suites and test cases The UnitTest service is passed as argument to each test case. - the "simple mode" limited to the use of the Assert...() methods. Service invocation examples: - In full mode, the service creation is external to test cases Dim myUnitTest As Variant myUnitTest = CreateScriptService("UnitTest", ThisComponent, "Tests") ' Test code is in the library "Tests" ' located in the current document - In simple mode, the service creation is internal to every test case Dim myUnitTest As Variant myUnitTest = CreateScriptService("UnitTest") With myUnitTest If Not .AssertTrue(...) Then ... ' ... .Dispose() End With Error handling To support the debugging of the tested code, the UnitTest service, in cases of - assertion failure - Basic run-time error in the tested code - Basic run-time error in the testing code (the unit tests) will comment the error location and description in a message box and in the console log, providing every test case (in either mode) implements an error handler containing at least a call to the ReportError() method. Change-Id: I9d9b889b148f172cd868af455493c8c696d1e953 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135365 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-05-16ScriptForge - (SF_Calc) FIX CompactUp/Left whan range is 1 row/colJean-Pierre Ledure1-0/+2
When the range to compact spans only 1 row (CompactUp) or 1 column (CompactLeft), a GetValue() method returns a scalar and not an array as expected in usual cases. This caused an abort of the script when invoking the UBound() value of the returned array with a Basic run-time error Object variable not set A test on being scalar or array of the result of the GetValue() method avoids the error. To be done in both CompactXXX() methods. Impact only on Basic code. Python not involved. No changes due in documentation. Change-Id: I74cf2b274944b442f843e1f4b7ac3a05dd6eaae7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134352 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-05-10ScriptForge - (SF_Dialog) FIX comments in Resize() methodJean-Pierre Ledure1-6/+7
Fix mix-up of the definitions of the Left and Top arguments. The patch changes mainly a few comment lines. Additional changes: the list of methods includes Center() and Resize(). (patchset 3) Change-Id: Id049d42b053e5ef1971ee62fb2b8b9342053583f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134078 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-04-26Access2Base - (access2base.py) FIX remove duplicateJean-Pierre Ledure1-3/+2
In class _Module, the ProcStartLine item is defined both as a property (by its presence in classProperties) and as method def ProcSTartLine (...): This is of course irrelevant. The property must be removed and the method kept as is. Bug signalled by Paul M on Telegram. Change-Id: I33bec829244543dbbd88b53e35cdff6c5468692f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133388 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-04-22Access2Base - (access2base.py) Don't use bare except: statementJean-Pierre Ledure1-3/+3
The exception hierarchy described on page https://docs.python.org/3.5/library/exceptions.html#exception-hierarchy indicates that the default exception in bare except: statements is BaseException. This induces that the SystemExit, KeyboardInterrupt and GeneratorExit are also handled by the user script. This is a not recommended practice. Better is to use the explicit Exception built-in exception except Exception: Bug reported by Paul M on Telegram Change-Id: Ie1ae1f732ebc60a881e7d40ba8141aa704e9cd5c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133328 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-04-18ScriptForge - (SF_Calc) new CreatePivotTable() methodJean-Pierre Ledure2-0/+204
Create a new pivot table with the properties defined by the arguments. If a pivot table with the same name exists already in the targeted sheet, it will be erased without warning. Parameters: PivotTableName: The user-defined name of the new pivottable SourceRange: The range as a string containing the raw data. The first row of the range is presumed to contain the field names of the new pivot table TargetCell: the top left cell or the range as a string where to locate the pivot table. Only the top left cell of the range will be considered. DataFields: A single string or an array of field name + function to apply, formatted like: Array("FieldName[;Function]", ...) The allowed functions are: Sum, Count, Average, Max, Min, Product, CountNums, StDev, StDevP, Var, VarP and Median. The default function is: When the values are all numerical, Sum is used, otherwise Count. RowFields: A single string or an array of the field names heading the pivot table rows ColumnFields: A single string or an array of the field names heading the pivot table columns FilterButton: When True (default), display a "Filter" button above the pivot table RowTotals: When True (default), display a separate column for row totals ColumnTotals: When True (default), display a separate row for column totals Returns: Return the range where the new pivot table is deployed. The method may be used in Basic and Python user scripts. Change-Id: I99df23e1b1b97b17a747ae15a079d7e2f5655b41 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133131 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-04-13Update remaining DevGuide wiki links.Ilmari Lauhakangas9-210/+210
My Kate editor decided to do some whitespace cleanup, but maybe it's fine as the main changes are not targeting functional bits anyway. Change-Id: I5292e77e43055f94a6256a7f72d49fd59287d194 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132928 Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2022-04-10ScriptForge - (SF_Calc) new CompactUp() and CompactLeft() methodsJean-Pierre Ledure3-4/+228
The CompactUp(CompactLeft) method: Delete the rows(columns) of a specified range matching a filter expressed as a formula applied on each row(column). The deleted cells can span whole rows(columns) or be limited to the width(height) of the range. The execution of the method has no effect on the current selection. Args: Range: the range in which cells have to be erased, as a string WholeRow(WholeColumn): when True (default = False), erase whole rows(columns) FilterFormula: the formula to be applied on each row(column). The row(column) is erased when the formula results in True. The formula shall probably involve one or more cells of the first row(column) of the range.. By default, a row is erased when all the cells of the row(column) are empty, i.e. suppose the range is "A1:J200" (width = 10), the default value [for CompactUp] becomes "=(COUNTBLANK(A1:J1)=10)" Returns: A string representing the location of the initial range after compaction, or the zero-length string if the whole range has been deleted. Examples for CompactUp(): newrange = oDoc.CompactUp("SheetX.G1:L10") ' All empty rows of the range are suppressed newrange = oDoc.CompactUp("SheetX.G1:L10", WholeRow := True, _ FilterFormula := "=(G1=""X"")") ' The rows having a "X" in column G are completely suppressed Both methods are available for use from Basic and Python scripts. Change-Id: Ib1269b22bcd189ca86a1bd3bda2c67e895598cb0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132783 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-04-05Fix typosAndrea Gelmini1-2/+2
Change-Id: Idcb10d0cc0759473e95e47afec7ed69853628612 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132587 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2022-04-05ScriptForge - (SF_Utils) new _VarTypeObj() methodJean-Pierre Ledure8-70/+135
The method is for internal use by the ScriptForge core only. The only argument is an object with VarType() = V_OBJECT. The purpose is to inspect thoroughly the argument and to return a Type _ObjectDescriptor iVarType As Integer sObjectType As String End Type The iVarType indicates if the object is either - a UNO object => sObjectType contains the UNO type ("com.sun.star. ...") - a ScriptForge class instance => sObjectType contains the class - another Basic object - Nothing (different from Null) Several existing methods benefit from the new method and are part of the commit. No effect on help pages. No effect on Python code. Change-Id: I69565d335b3aeb7c08c48cbccfc13d3d82f11ae1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132525 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-04-05Fix typosAndrea Gelmini1-3/+3
Change-Id: I77ad3b01dbb2e8f8438b6f4a30ca2239490fb8f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132537 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-04-01ScriptForge - (SF_Dialog) new Resize() and Center() methodsJean-Pierre Ledure3-5/+198
The "dialog" service receives 2 new methods for easy move/resize of the concerned dialog. Resize(left, top, widt, height) Move the topleft corner of a dialog to new coordinates and/or modify its dimensions All distances are expressed in 1/100th mm Without arguments, the method resets the initial width and height Center(window) Center the actual dialog instance in the middle of a parent window Without arguments, the method centers the dialog in the middle of the active window The Parent argument can be either - a ScriptForge dialog object - a ScriptForge document (Calc, Base, ...) object Both methods are available from Basic and Python user scripts Change-Id: Ic3680739c9d518da3d76d3588943ae5ce6bad8ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132418 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-24Fix typosAndrea Gelmini1-5/+5
Change-Id: Iccb89d32b83b7f7035557ad7c0634f66f4c947d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132082 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-03-24ScriptForge - (SF_Region) new service in the core libraryJean-Pierre Ledure8-12/+996
Singleton class implementing the "ScriptForge.Region" service Implemented as a usual Basic module A collection of functions about languages, countries and timezones - Locales - Currencies - Numbers and dates formatting - Calendars - Timezones conversions - Numbers transformed to text in local language Definitions: Locale or Region A combination of a language (2 or 3 lower case characters) and a country (2 upper case characters) Most properties and methods require a locale as argument. Some of them accept either the complete locale or only the language or country parts. Timezone Specified as "Region/City" name like "Europe/Berlin", or a custom time zone ID such as "UTC" or "GMT-8:00". The time offset between the timezone and the Greenwich Meridian Time (GMT) is expressed in minutes. The Daylight Saving Time (DST) is an additional offset. Both offsets can be positive or negative. Properties: Currency Language Country DatePatterns DateSeparator ThousandSeparator DecimalPoint TimeSeparator ListSeparator DayNames DayAbbrevNames DayNarrowNames MonthNames MonthAbbrevNames MonthNarrowNames Methods UTCDateTime UTCNow LocalDateTime TimeZoneOffset DSTOffset Number2Text Change-Id: Iabf31ea0e6c235e960fcca5b1e7a9d928cf8cd0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132068 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-16ScriptForge - (SF_Form) fix use of BaseFormJean-Pierre Ledure1-0/+1
Context: Base documents. In a form or formcontrol event, a user script might need the name of the form document in which the form or control is located, f.i. to close it. The name of the form document is supposed to be found in the SF_Form.BaseForm property. The property is set correctly when the Base form document to form/formcontrol path is taken (top-down), not when the opposite path is taken (bottom-up), typically in events. In the latter case BaseForm is equal to an empty string. The actual commit initializes correctly the BaseForm property with the hierarchical name of the form document. Change-Id: Icdee6ee9909f577f6c01ba96864fe3d6eaf3e750 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131618 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-13ScriptForge - (UI) size and position of the active windowJean-Pierre Ledure2-1/+64
The UI service receives next 4 new properties: Height Width X Y They all return a Long value representing the size or position of the active window. The active window does not need to be a document, it may f.i. be the Basic IDE. Those properties are read-only. To modify the size or the position of the window, use the the Resize() method. They are implemented for use from Basic and Python scripts. Change-Id: I0021663e39612f411cefa5c7ec9ec594a4cb6f39 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131444 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-10ScriptForge - (SF_Root) differ loading of the localized interfaceJean-Pierre Ledure3-18/+29
So far, the loading of the user interface in the user's own language was done at the first invocation of ScriptForge, usually via - a CreateScriptService() method - a direct call to any method, f.i. SF_Array.Append() Now the same loading of the user interface in memory is done at the first request of a localized text or message. Due to the fact that since last commit https://gerrit.libreoffice.org/c/core/+/131255 only error messages contain localized texts, the benefit is that correct scripts will not load any unnecessary texts anymore. The "Interface" variable has be renamed "LocalizedInterface" for clarity in the SF_Root class module No impact on documentation or Python scripts. Change-Id: Ie654625540c0c8f8442e9ba36d38ecaab00c0eb1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131313 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-10ScriptForge - Console + progress bar receive a Close iconJean-Pierre Ledure7-23/+5
Next dialogs: - dlgConsole (modal or non-modal) - dlgProgress (non-modal) had a Close button with label "Close" or a translation. The "Close" text is replaced with a "Cancel" icon. Objective: make console and progress bar user-language independent. No impact either on user documentation or on Python part. Change-Id: Ib1c2370986d47ccab49c6d42500231fd73b9ff3f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131255 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-08ScriptForge - 'SF_Root) load user interface from code when locale=enJean-Pierre Ledure2-3/+12
The user interface is loaded in the user's language at the first use of Scriptforge during the LO session. So far the labels were always loaded from the relevant .po file. Now they are loaded in memory by code when the user's language = "en". Objective = gain in performance. Additionally the default language is set to SF_Platform.OfficeLocale i.o. SF_Platform.SystemLocale Internal change, no impact on documentation Change-Id: Ia0d1235f8ca6a42141a5481fe80b5bec1d53a7e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131214 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-07ScriptForge - (SF_Document) new Import/ExportFilters propertiesJean-Pierre Ledure4-9/+117
The ImportFilters and ExportFilters properties of the Document, Calc and Writer services return a zero-based array (Basic) or a list (Python) of all filters available for the current document instance. These properties are NOT applicable to Base documents. ImportFilter contains the filters flagged for import or for Import/Export. Idem for ExportFilters. Both lists overlap each other partially. The filter selection is done thanks to the - filter type, to be compared with the Identifier of the document's component - filter flags, last 2 bits determine the import or export orientation The filter names are potential arguments of the OpenDocument() and SaveAs() methods (and alike). Both properties are callable from Basic and Python user scripts. Change-Id: I8ce5312a58a013bc7e1e68101ff9f50f3233155d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131106 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-03-02ScriptForge - (SF_Calc) new ExportRangeToFile() methodJean-Pierre Ledure6-4/+167
The Calc service offers the possibility to export a range, given as a string, to a file in several different image formats. Supported formats: pdf, jpeg, png. Arguments: - Range: a sheet name or a range of cells - Filename: the file to export to in FileSystem notation - ImageType: the expected output format - Overwrite: True when the output file may be overwritten New error message: RANGEEXPORTERROR Error is introduced in po files. The method is available both in Basic and Python user scripts. Change-Id: Ibd297ec2da1b48fca3dee7d8e03bd2ee4815957a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130835 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-27ScriptForge - (SF_Platform) add the FilterNames propertyJean-Pierre Ledure2-4/+18
The FilterNames property returns, as an unsorted zero-based array of strings, the list of available/installed import and export filters for components. The property can serve as support for the FilterName argument used for opening and saving documents. The FilterNames property is available both from Basic and Python user scripts. Change-Id: I607500b56836ceeb6716b10d39d22638b0741f3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130624 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-17ScriptForge - (L10N): add new arguments to the service creationJean-Pierre Ledure3-5/+32
Actual arguments: - FolderName: the folder containing the PO-files - Locale: in the form la-CO (language-COUNTRY) - Encoding: The character set that should be used New arguments introduced by this commit: - Locale2: fallback Locale to select if Locale po file does not exist - Encoding2: Encoding of the 2nd Locale file Both new arguments are optional => no regression on existing scripts The arguments are available in Basic and Python equally. They may be passed as keyworg arguments in Python only. The default locale is now set to the "OfficeLocale", which is the locale in the user interface. NB: the distinction between SystemLocale and OfficeLocale is new in version 7.4. Change-Id: Ie3bc5d30193df35a8c6c1ec706e13eaea0050981 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130074 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-17ScriptForge - (SF_UI) Fix omission of ServiceNameJean-Pierre Ledure1-0/+6
The ServiceName property is part of the standard norm for ScriptForge services. It is used only internally. Its omission in SF_UI caused the tree in construction for help files to contain wrong redirections. Change-Id: I51f1966ef463fffe62c9495dbc2ea0c152fa9667 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130004 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-15ScriptForge - (scriptforge.py) get lists of properties and methodsJean-Pierre Ledure6-69/+67
To allow object introspection and some help files automatic generation (see Telegram discussions), the possibility to make the list of properties and methods used in Basic available in Python has been requested. These changes are for internal use only. Main changes: - the SFServices parent class receives new basicproperties() and basicmethods() methods - Basic PythonDispatcher() is adapted to provide the lists to the Python caller - Methods lists are reviewed in SFDocuments to NOT include the methods implemented in the parent SF_Document class, to avoid redundant entries in the list Change-Id: I80758e225b039426b46f52dd67efe54c50f9f31e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129969 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-10ScriptForge - (SF_Utils) review optional argument of _Repr()Jean-Pierre Ledure1-1/+2
As from LO 7.3, optional missing arguments must not be used in assignments and comparisons. The Basic interpreter tolerated it before 7.3. Probable commit having changed Basic behaviour: https://gerrit.libreoffice.org/c/core/+/121794 A unique case of this singularity was found in the SF_Utils._Repr() method. The bad consequence was that the commonly used SF_Exception.DebugPrint() method calls above method. This broke in fact the whole ScriptForge library. Change-Id: Iba8792b92c73c992429de4382bd8a3dc4b58a94f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129728 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-09Fix typosAndrea Gelmini1-2/+2
Change-Id: I50e8988c320c0068f7adf4a3429d7639df0cbcd1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129596 Tested-by: Jenkins Reviewed-by: Andrea Gelmini <andrea.gelmini@gelma.net>
2022-02-07ScriptForge - (SF_Platform,SF_FileSystem) Manage extensionsJean-Pierre Ledure5-6/+76
New properties and methods -------------------------- SF_Platform.Extensions : (property) provide a list of the installed extensions as an array of strings SF_FileSystem.ExtensionFolder(Extension as string) : (method) provides the location in FileNaming notation of the folder where the given extension is installed The SF_FileSystem.ExtensionsFolder (notice the additional "s") is kept as a property providing the folder containing the extensions installed by the user. All methods and properties are available with an identical syntax and semantics both from Basic and Python scripts. The difference between a propert or a method is irrelevant for Basic but is essential in Python: a property must not have brackets, a method must have them. Hence the distinction between ExtensionFolder being a method requiring an argument ExtensionsFolder being a property without argument Change-Id: Idd18a5624f4abd84095d146e467e8fdcf497bd0d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129572 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-04ScriptForge - (SF_UI) Import RunCommand() from SF_SessionJean-Pierre Ledure3-68/+69
Functionally SF_UI groups methods impacting the user interface, while the Session service groups general-purpose actions. The RunCommand() method (newly introduced in 7.4) simulates menu commands applied on the active window. RunCommand() fits better in the UI service. It is removed from SF_Session. Change-Id: Ia72150efea2f50de13d15a4c1f5fea79777d1760 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129453 Tested-by: Jenkins Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-03ScriptForge - (SF_Calc) FIX range parsing error when leading $Jean-Pierre Ledure1-8/+11
When sheet name contains - a leading $ - surrounding single quotes an error message was errorneously displayed to the user. Corrected in the SF_Calc._ParseAddress() function Change-Id: I8abd4908a4c92bd6e569b95be58ab21e16ffc169 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129408 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-01ScriptForge - (SF_Platform) refine localesJean-Pierre Ledure4-21/+89
So far, only SF_Platform.Locale was supported, returning the locale of the operating system. Now, 3 different locales may be considered: - SystemLocale: identical to Locale (still supported) - OfficeLocale: the locale associated with the LibreOffice installation - FormatLocale: the locale associated with how numbers and dates are formatted. Of course, in many cases all locales are identical. Anyway a distinction can be made. All these properties are read-only. Those properties are supported in Basic and Python evenly. Change-Id: I0792d49a052b1441a30ac231d61eda997dc4216a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129297 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-02-01ScriptForge - (SF_Exception) error messages give access to help pageJean-Pierre Ledure4-15/+69
When ScriptForge detects an error in a user script, a message box is displayed with a summary of the syntax and validation rules the invoked method should respect, and/or any other reason the library has identified. Now the error message is completed with - the sentence "Do you want to receive more information about the '%1' method ?" - 2 buttons Yes/No (No being the default) When the Yes button is pressed the local browser opens the help page/anchor of the invoked service/method. The pot template and the english po files are modified. There is no difference between Basic and Python in this matter. Change-Id: Ie6210b9d108c9a1e98a46173504680e3985125b0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129232 Tested-by: Jenkins Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2022-01-31Fix typoAndrea Gelmini1-1/+1
Change-Id: I472190c743dd26e88e3400f323ab52fa05c187d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129215 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2022-01-30ScriptForge - (SF_Session, SF_Document) add arguments to RunCommand()Jean-Pierre Ledure14-24/+170
Next wiki page https://wiki.documentfoundation.org/Development/DispatchCommands facilitates the use of commands with the DispatchHelper service, including with arguments This commit - adds the RunCommand() method in the Session service - extends the scope of existing RunCommand() methods for the Document, Base, Calc and Writer services with the addition of command arguments Syntax by examples: (Basic) session.RunCommand("BasicIDEAppear", _ "Document", "LibreOffice Macros & Dialogs", _ "LibName", "ScriptForge", _ "Name", "SF_Session", _ "Line", 100) (Python) (1) session.RunCommand("BasicIDEAppear", "Document", "LibreOffice Macros & Dialogs", "LibName", "ScriptForge", "Name", "SF_Session", "Line", 100) (Python) (2) session.RunCommand("BasicIDEAppear", Document = "LibreOffice Macros & Dialogs", LibName = "ScriptForge", Name = "SF_Session", Line = 100) Change-Id: I60cd5eb1ed0a057420215ce7aebe92b2aafabd53 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129175 Tested-by: Jean-Pierre Ledure <jp@ledure.be> Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2021-12-30Fix case for "ByVal", "Variant", "UCase"Julien Nabet18-44/+44
Change-Id: I136d292cd535d4208457ef91a7773fc7ac00d5c8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127716 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de> Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2021-12-22Access2Base - Fix argument check in OpenDatabase()Jean-Pierre Ledure1-1/+1
Read Mike Kaganski's comment in https://gerrit.libreoffice.org/c/core/+/9303 Change-Id: I8d89d9dd93dd6c31438418847d4073568baf11f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127312 Tested-by: Jenkins Tested-by: Jean-Pierre Ledure <jp@ledure.be> Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>