[Libreoffice-commits] core.git: 3 commits - wizards/Package_access2base.mk wizards/source
Jean-Pierre Ledure (via logerrit)
logerrit at kemper.freedesktop.org
Fri Aug 9 14:21:49 UTC 2019
wizards/Package_access2base.mk | 2
wizards/source/access2base/Compatible.xba | 50 --
wizards/source/access2base/L10N.xba | 2
wizards/source/access2base/Python.xba | 607 ++++++++++++++++++++++++++++++
wizards/source/access2base/Utils.xba | 55 --
wizards/source/access2base/dialog.xlb | 2
wizards/source/access2base/script.xlb | 4
7 files changed, 613 insertions(+), 109 deletions(-)
New commits:
commit d05eb786d408af883500404229b89ffa0d7cde16
Author: Jean-Pierre Ledure <jp at ledure.be>
AuthorDate: Fri Aug 9 16:01:47 2019 +0200
Commit: Jean-Pierre Ledure <jp at ledure.be>
CommitDate: Fri Aug 9 16:20:39 2019 +0200
Access2Base - Python module - Basic side
Insert Python wrappers for object properties and methods
Insert Python helper functions
Change-Id: I9717c46ff8d3ab0d143c5861b928cbb57233812e
diff --git a/wizards/source/access2base/L10N.xba b/wizards/source/access2base/L10N.xba
index 22a65e243178..ef11f6f3ef4d 100644
--- a/wizards/source/access2base/L10N.xba
+++ b/wizards/source/access2base/L10N.xba
@@ -537,4 +537,4 @@ Dim oLocale as Object
_GetLocale = oLocale.getByName("ooLocale")
End Function ' GetLocale V0.8.9
-</script:module>
+</script:module>
\ No newline at end of file
diff --git a/wizards/source/access2base/Python.xba b/wizards/source/access2base/Python.xba
index 9005cf0d72e7..7051caed824a 100644
--- a/wizards/source/access2base/Python.xba
+++ b/wizards/source/access2base/Python.xba
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
-<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Compatible" script:language="StarBasic">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Python" script:language="StarBasic">
REM =======================================================================================================================
REM === The Access2Base library is a part of the LibreOffice project. ===
REM === Full documentation is available on http://www.access2base.com ===
@@ -47,4 +47,561 @@ Exit_Sub:
Exit Sub
End Sub ' DebugPrint V0.9.5
+REM -----------------------------------------------------------------------------------------------------------------------
+REM --- PYTHON WRAPPERS ---
+REM -----------------------------------------------------------------------------------------------------------------------
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PythonEventsWrapper(Optional poEvent As Variant) As Variant
+' Python wrapper when Application.Events() method is invoked
+' The ParamArray mechanism empties UNO objects when they are member of the arguments list
+' As a workaround, the Application.Events function is executed directly
+
+ If _ErrorHandler() Then On Local Error GoTo Exit_Function ' Do never interrupt
+ PythonEventsWrapper = Null
+
+Dim vReturn As Variant, vArray As Variant
+Const cstObject = 1
+
+ vReturn = Application.Events(poEvent)
+ vArray = Array(cstObject, _A2B_.AddPython(vReturn), vReturn._Type)
+
+ PythonEventsWrapper = vArray
+
+Exit_Function:
+ Exit Function
+End Function ' PythonEventsWrapper V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PythonWrapper(ByVal pvCallType As Variant _
+ , ByVal pvObject As Variant _
+ , ByVal pvScript As Variant _
+ , ParamArray pvArgs() As Variant _
+ ) As Variant
+' Called from Python to apply
+' - on object with entry pvObject in PythonCache
+' Conventionnally: -1 = Application
+' -2 = DoCmd
+' - a script pvScript which type is described by pvCallType
+' - with arguments pvArgs(0)... (max. 8 for object methods)
+' The value returned by the method/property is encapsulated in an array
+' [0] => 0 = scalar or array returned by the method
+' => 1 = basic object returned by the method
+' => 2 = a null value
+' [1] => the object reference or the returned value or Null
+' [2] => the object type or Null
+' [3] => the object name, if any
+' or, when pvCallType == vbUNO, as the UNO object returned by the property
+
+Dim vReturn As Variant, vArray As Variant
+Dim vObject As Variant, sScript As String, sModule As String
+Dim i As Integer, iNbArgs As Integer, vArg As Variant, vArgs() As Variant
+
+Const cstApplication = -1, cstDoCmd = -2
+Const cstScalar = 0, cstObject = 1, cstNull = 2, cstUNO = 3
+
+'Conventional special values
+Const cstNoArgs = "+++NOARGS+++", cstSymEmpty = "+++EMPTY+++", cstSymNull = "+++NULL+++"
+
+'https://support.office.com/fr-fr/article/CallByName-fonction-49ce9475-c315-4f13-8d35-e98cfe98729a
+'Determines the pvCallType
+Const vbGet = 2, vbLet = 4, vbMethod = 1, vbSet = 8, vbUNO = 16
+
+ If _ErrorHandler() Then On Local Error GoTo Error_Function
+ PythonWrapper = Null
+
+ 'Reinterprete arguments one by one into vArgs, examine iso-dates and conventional NoArgs/Empty/Null values
+ iNbArgs = -1
+ vArgs = Array()
+ If UBound(pvArgs) >= 0 Then
+ For i = 0 To UBound(pvArgs)
+ vArg = pvArgs(i)
+ If i = 0 And VarType(vArg) = vbString Then
+ If vArg = cstNoArgs Then Exit For
+ End If
+ If VarType(vArg) = vbString Then
+ If vArg = cstSymEmpty Then
+ vArg = Empty
+ ElseIf vArg = cstSymNull Then
+ vArg = Null
+ Else
+ vArg = _CDate(vArg)
+ End If
+ End If
+ If Not IsEmpty(vArg) Then
+ iNbArgs = iNbArgs + 1
+ ReDim Preserve vArgs(iNbArgs)
+ vArgs(iNbArgs) = vArg
+ End If
+ Next i
+ End If
+
+ 'Check pvObject
+ Select Case pvObject ' Always numeric
+ Case cstApplication
+ sModule = "Application"
+ Select Case pvScript
+ Case "AllDialogs" : If iNbArgs < 0 Then vReturn = Application.AllDialogs() Else vReturn = Application.AllDialogs(vArgs(0))
+ Case "AllForms" : If iNbArgs < 0 Then vReturn = Application.AllForms() Else vReturn = Application.AllForms(vArgs(0))
+ Case "AllModules" : If iNbArgs < 0 Then vReturn = Application.AllModules() Else vReturn = Application.AllModules(vArgs(0))
+ Case "CloseConnection"
+ vReturn = Application.CloseConnection()
+ Case "CommandBars" : If iNbArgs < 0 Then vReturn = Application.CommandBars() Else vReturn = Application.CommandBars(vArgs(0))
+ Case "CurrentDb" : vReturn = Application.CurrentDb()
+ Case "CurrentUser" : vReturn = Application.CurrentUser()
+ Case "DAvg" : vReturn = Application.DAvg(vArgs(0), vArgs(1), vArgs(2))
+ Case "DCount" : vReturn = Application.DCount(vArgs(0), vArgs(1), vArgs(2))
+ Case "DLookup" : vReturn = Application.DLookup(vArgs(0), vArgs(1), vArgs(2), vArgs(3))
+ Case "DMax" : vReturn = Application.DMax(vArgs(0), vArgs(1), vArgs(2))
+ Case "DMin" : vReturn = Application.DMin(vArgs(0), vArgs(1), vArgs(2))
+ Case "DStDev" : vReturn = Application.DStDev(vArgs(0), vArgs(1), vArgs(2))
+ Case "DStDevP" : vReturn = Application.DStDevP(vArgs(0), vArgs(1), vArgs(2))
+ Case "DSum" : vReturn = Application.DSum(vArgs(0), vArgs(1), vArgs(2))
+ Case "DVar" : vReturn = Application.DVar(vArgs(0), vArgs(1), vArgs(2))
+ Case "DVarP" : vReturn = Application.DVarP(vArgs(0), vArgs(1), vArgs(2))
+ Case "Forms" : If iNbArgs < 0 Then vReturn = Application.Forms() Else vReturn = Application.Forms(vArgs(0))
+ Case "getObject" : vReturn = PropertiesGet.getObject(vArgs(0))
+ Case "getValue" : vReturn = PropertiesGet.getValue(vArgs(0))
+ Case "HtmlEncode" : vReturn = Application.HtmlEncode(vArgs(0), vArgs(1))
+ Case "OpenDatabase" : vReturn = Application.OpenDatabase(vArgs(0), vArgs(1), vArgs(2), vArgs(3))
+ Case "ProductCode" : vReturn = Application.ProductCode()
+ Case "setValue" : vReturn = PropertiesGet.setValue(vArgs(0), vArgs(1))
+ Case "SysCmd" : vReturn = Application.SysCmd(vArgs(0), vArgs(1), vARgs(2))
+ Case "TempVars" : If iNbArgs < 0 Then vReturn = Application.TempVars() Else vReturn = Application.TempVars(vArgs(0))
+ Case "Version" : vReturn = Application.Version()
+ Case Else
+ GoTo Error_Proc
+ End Select
+ Case cstDoCmd
+ sModule = "DoCmd"
+ Select Case pvScript
+ Case "ApplyFilter" : vReturn = DoCmd.ApplyFilter(vArgs(0), vArgs(1), vArgs(2))
+ Case "Close" : vReturn = DoCmd.mClose(vArgs(0), vArgs(1), vArgs(2))
+ Case "CopyObject" : vReturn = DoCmd.CopyObject(vArgs(0), vArgs(1), vArgs(2), vArgs(3))
+ Case "FindNext" : vReturn = DoCmd.FindNext()
+ Case "FindRecord" : vReturn = DoCmd.FindRecord(vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4), vArgs(5), vArgs(6))
+ Case "GetHiddenAttribute"
+ vReturn = DoCmd.GetHiddenAttribute(vArgs(0), vArgs(1))
+ Case "GoToControl" : vReturn = DoCmd.GoToControl(vArgs(0))
+ Case "GoToRecord" : vReturn = DoCmd.GoToRecord(vArgs(0), vArgs(1), vArgs(2), vArgs(3))
+ Case "Maximize" : vReturn = DoCmd.Maximize()
+ Case "Minimize" : vReturn = DoCmd.Minimize()
+ Case "MoveSize" : vReturn = DoCmd.MoveSize(vArgs(0), vArgs(1), vArgs(2), vArgs(3))
+ Case "OpenForm" : vReturn = DoCmd.OpenForm(vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4), vArgs(5), vArgs(6))
+ Case "OpenQuery" : vReturn = DoCmd.OpenQuery(vArgs(0), vArgs(1), vArgs(2))
+ Case "OpenReport" : vReturn = DoCmd.OpenReport(vArgs(0), vArgs(1))
+ Case "OpenSQL" : vReturn = DoCmd.OpenSQL(vArgs(0), vArgs(1))
+ Case "OpenTable" : vReturn = DoCmd.OpenTable(vArgs(0), vArgs(1), vArgs(2))
+ Case "OutputTo" : vReturn = DoCmd.OutputTo(vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4), vArgs(5), vArgs(6), vArgs(7))
+ Case "Quit" : _A2B_.CalledSub = "Quit" : GoTo Error_Action
+ Case "RunApp" : vReturn = DoCmd.RunApp(vArgs(0))
+ Case "RunCommand" : vReturn = DoCmd.RunCommand(vArgs(0))
+ Case "RunSQL" : vReturn = DoCmd.RunSQL(vArgs(0), vArgs(1))
+ Case "SelectObject" : vReturn = DoCmd.SelectObject(vArgs(0), vArgs(1), vArgs(2))
+ Case "SendObject" : vReturn = DoCmd.SendObject(vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4), vArgs(5), vArgs(6), vArgs(7), vArgs(8), vArgs(9))
+ Case "SetHiddenAttribute"
+ vReturn = DoCmd.SetHiddenAttribute(vArgs(0), vArgs(1), vArgs(2))
+ Case "SetOrderBy" : vReturn = DoCmd.SetOrderBy(vArgs(0), vArgs(1))
+ Case "ShowAllRecords"
+ vReturn = DoCmd.ShowAllRecords()
+ Case Else
+ GoTo Error_Proc
+ End Select
+ Case Else
+ ' Locate targeted object
+ If pvObject > UBound(_A2B_.PythonCache) Or pvObject < 0 Then GoTo Error_Object
+ Set vObject = _A2B_.PythonCache(pvObject)
+ If IsNull(vObject) Then
+ If pvScript = "Dispose" Then GoTo Exit_Function Else GoTo Error_Object
+ End If
+ ' Preprocessing
+ sScript = pvScript
+ sModule = vObject._Type
+ Select Case sScript
+ Case "Add"
+ If vObject._Type = "COLLECTION" And vObject._CollType = COLLTABLEDEFS Then vArgs = Array(_A2B_.PythonCache(vArgs(0)))
+ Case "Close"
+ sSCript = "mClose"
+ Case "Type"
+ sScript = "pType"
+ Case Else
+ End Select
+ ' Execute method
+ Select Case UBound(vArgs) ' Dirty but ... CallByName does not support an array of arguments or return values
+ Case -1
+ If pvCallType = vbUNO Then
+ With vObject
+ Select Case sScript ' List all properties that should be called directly (UNO)
+ Case "BoundField" : vReturn = .BoundField
+ Case "Column" : vReturn = .Column
+ Case "Connection" : vReturn = .Connection
+ case "ContainerWindow" : vReturn = .ContainerWindow
+ Case "ControlModel" : vReturn = .ControlModel
+ Case "ControlView" : vReturn = .ControlView
+ Case "DatabaseForm" : vReturn = .DatabaseForm
+ Case "Document" : vReturn = .Document
+ Case "FormsCollection" : vReturn = .FormsCollection
+ Case "LabelControl" : vReturn = .LabelControl
+ Case "MetaData" : vReturn = .MetaData
+ Case "ParentComponent" : vReturn = .ParentComponent
+ Case "Query" : vReturn = .Query
+ Case "RowSet" : vReturn = .RowSet
+ Case "Table" : vReturn = .Table
+ Case "UnoDialog" : vReturn = .UnoDialog
+ Case Else
+ End Select
+ End With
+ ElseIf sScript = "ItemData" Then ' List all properties that should be called directly (arrays not supported by CallByName)
+ vReturn = vObject.ItemData
+ ElseIf sScript = "LinkChildFields" Then
+ vReturn = vObject.LinkChildFields
+ ElseIf sScript = "LinkMasterFields" Then
+ vReturn = vObject.LinkMasterFields
+ ElseIf sScript = "OpenArgs" Then
+ vReturn = vObject.OpenArgs
+ ElseIf sScript = "Selected" Then
+ vReturn = vObject.Selected
+ ElseIf sScript = "Value" Then
+ vReturn = vObject.Value
+ Else
+ vReturn = CallByName(vObject, sScript, pvCallType)
+ End If
+ Case 0
+ Select Case sScript
+ Case "AppendChunk" ' Arg is a vector, not supported by CallByName
+ vReturn = vObject.GetChunk(vArgs(0), vArgs(1))
+ Case "GetRows" ' Returns an array, not supported by CallByName
+ vReturn = vObject.GetRows(vArgs(0), True) ' Force iso dates
+ Case Else
+ vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0))
+ End Select
+ Case 1
+ Select Case sScript
+ Case "GetChunk" ' Returns a vector, not supported by CallByName
+ vReturn = vObject.GetChunk(vArgs(0), vArgs(1))
+ Case Else
+ vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0), vArgs(1))
+ End Select
+ Case 2 : vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0), vArgs(1), vArgs(2))
+ Case 3 : vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0), vArgs(1), vArgs(2), vArgs(3))
+ Case 4 : vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4))
+ Case 5 : vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4), vArgs(5))
+ Case 6 : vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4), vArgs(5), vArgs(6))
+ Case 7 : vReturn = CallByName(vObject, sScript, pvCallType, vArgs(0), vArgs(1), vArgs(2), vArgs(3), vArgs(4), vArgs(5), vArgs(6), vArgs(7))
+ End Select
+ ' Postprocessing
+ Select Case pvScript
+ Case "Close", "Dispose", "Terminate"
+ Set _A2B_.PythonCache(pvObject) = Nothing
+ Case "Move", "MoveFirst", "MoveLast", "MoveNext", "MovePrevious" ' Pass the new BOF, EOF values (binary format)
+ If vObject._Type = "RECORDSET" Then
+ vReturn = (Iif(vObject.BOF, 1, 0) * 2 + Iif(vObject.EOF, 1, 0)) * Iif(vReturn, 1, -1)
+ End If
+ Case Else
+ End Select
+ End Select
+
+ ' Structure the returned array
+ If pvCallType = vbUNO Then
+ vArray = vReturn
+ Else
+ If IsNull(vReturn) Then
+ vArray = Array(cstNull, Null, Null)
+ ElseIf IsObject(vReturn) Then
+ Select Case vReturn._Type
+ Case "COLLECTION", "COMMANDBARCONTROL", "EVENT"
+ vArray = Array(cstObject, _A2B_.AddPython(vReturn), vReturn._Type)
+ Case Else
+ vArray = Array(cstObject, _A2B_.AddPython(vReturn), vReturn._Type, vReturn.Name)
+ End Select
+ Else
+ If VarType(vReturn) = vbDate Then
+ vArray = Array(cstScalar, _CStr(vReturn), Null)
+ ElseIf VarType(vReturn) = vbBigint Then ' Could happen for big integer database fields
+ vArray = Array(cstScalar, CLng(vReturn), Null)
+ Else
+ vArray = Array(cstScalar, vReturn, Null)
+ End If
+ End If
+ End If
+
+ PythonWrapper = vArray
+
+Exit_Function:
+ Exit Function
+Error_Function:
+ TraceError(TRACEABORT, Err, "PythonWrapper", Erl)
+ GoTo Exit_Function
+Error_Object:
+ TraceError(TRACEFATAL, ERROBJECTNOTFOUND, "Python Wrapper (" & pvScript & ")", 0, , Array(_GetLabel("OBJECT"), "#" & pvObject))
+ GoTo Exit_Function
+Error_Action:
+ TraceError(TRACEFATAL, ERRACTION, Utils._CalledSub(), 0)
+ GoTo Exit_Function
+Error_Proc:
+ TraceError(TRACEFATAL, ERRPROCEDURENOTFOUND, "Python Wrapper", 0, , Array(pvScript, sModule))
+ GoTo Exit_Function
+End Function ' PythonWrapper V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+REM --- PYTHON HELPER FUNCTIONS ---
+REM -----------------------------------------------------------------------------------------------------------------------
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyConvertFromUrl(ByVal pvFile As Variant) As String
+' Convenient function to have common conversions of filenames from/to url notations both in Python and Basic
+
+ On Local Error GoTo Exit_Function
+ PyConvertFromUrl = ""
+ If Not Utils._CheckArgument(pvFile, 1, vbString) Then Goto Exit_Function
+
+ PyConvertFromUrl = ConvertFromUrl(pvFile)
+
+Exit_Function:
+ Exit Function
+End Function ' PyConvertFromUrl V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyConvertToUrl(ByVal pvFile As Variant) As String
+' Convenient function to have common conversions of filenames from/to url notations both in Python and Basic
+
+ On Local Error GoTo Exit_Function
+ PyConvertToUrl = ""
+ If Not Utils._CheckArgument(pvFile, 1, vbString) Then Goto Exit_Function
+
+ PyConvertToUrl = ConvertToUrl(pvFile)
+
+Exit_Function:
+ Exit Function
+End Function ' PyConvertToUrl V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyCreateUnoService(ByVal pvService As Variant) As Variant
+' Convenient function to create a UNO service in Python
+
+ On Local Error GoTo Exit_Function
+ Set PyCreateUnoService = Nothing
+ If Not Utils._CheckArgument(pvService, 1, vbString) Then Goto Exit_Function
+
+ Set PyCreateUnoService = CreateUnoService(pvService)
+
+Exit_Function:
+ Exit Function
+End Function ' PyCreateUnoService V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyDateAdd(ByVal pvAdd As Variant _
+ , ByVal pvCount As Variant _
+ , ByVal pvDate As Variant _
+ ) As Variant
+' Convenient shortcut to useful and easy-to-use Basic date functions
+
+Dim vDate As Variant, vNewDate As Variant
+ On Local Error GoTo Exit_Function
+ PyDateAdd = Null
+
+ If Not Utils._CheckArgument(pvAdd, 1, vbString) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvCount, 2, Utils._AddNumeric()) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvDate, 3, vbString) Then Goto Exit_Function
+
+ vDate = _CDate(pvDate)
+ vNewDate = DateAdd(pvAdd, pvCount, vDate)
+ If VarType(vNewDate) = vbDate Then PyDateAdd = _CStr(vNewDate) Else PyDateAdd = vNewDate
+
+Exit_Function:
+ Exit Function
+End Function ' PyDateAdd V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyDateDiff(ByVal pvAdd As Variant _
+ , ByVal pvDate1 As Variant _
+ , ByVal pvDate2 As Variant _
+ , ByVal pvWeekStart As Variant _
+ , ByVal pvYearStart As Variant _
+ ) As Variant
+' Convenient shortcut to useful and easy-to-use Basic date functions
+
+Dim vDate1 As Variant, vDate2 As Variant
+ On Local Error GoTo Exit_Function
+ PyDateDiff = Null
+
+ If Not Utils._CheckArgument(pvAdd, 1, vbString) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvDate1, 2, vbString) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvDate2, 3, vbString) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvWeekStart, 4, Utils._AddNumeric()) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvWeekStart, 5, Utils._AddNumeric()) Then Goto Exit_Function
+
+ vDate1 = _CDate(pvDate1)
+ vDate2 = _CDate(pvDate2)
+ PyDateDiff = DateDiff(pvAdd, vDate1, vDate2, pvWeekStart, pvYearStart)
+
+Exit_Function:
+ Exit Function
+End Function ' PyDateDiff V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyDatePart(ByVal pvAdd As Variant _
+ , ByVal pvDate As Variant _
+ , ByVal pvWeekStart As Variant _
+ , ByVal pvYearStart As Variant _
+ ) As Variant
+' Convenient shortcut to useful and easy-to-use Basic date functions
+
+Dim vDate As Variant
+ On Local Error GoTo Exit_Function
+ PyDatePart = Null
+
+ If Not Utils._CheckArgument(pvAdd, 1, vbString) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvDate, 2, vbString) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvWeekStart, 3, Utils._AddNumeric()) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvWeekStart, 4, Utils._AddNumeric()) Then Goto Exit_Function
+
+ vDate = _CDate(pvDate)
+ PyDatePart = DatePart(pvAdd, vDate, pvWeekStart, pvYearStart)
+
+Exit_Function:
+ Exit Function
+End Function ' PyDatePart V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyDateValue(ByVal pvDate As Variant) As Variant
+' Convenient shortcut to useful and easy-to-use Basic date functions
+
+Dim vDate As Variant
+ On Local Error GoTo Exit_Function
+ PyDateValue = Null
+ If Not Utils._CheckArgument(pvDate, 1, vbString) Then Goto Exit_Function
+
+ vDate = DateValue(pvDate)
+ If VarType(vDate) = vbDate Then PyDateValue = _CStr(vDate) Else PyDateValue = vDate
+
+Exit_Function:
+ Exit Function
+End Function ' PyDateValue V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyFormat(ByVal pvValue As Variant, pvFormat As Variant) As String
+' Convenient function to format numbers or dates
+
+ On Local Error GoTo Exit_Function
+ PyFormat = ""
+ If Not Utils._CheckArgument(pvValue, 1, Utils._AddNumeric(vbString)) Then Goto Exit_Function
+ pvValue = _CDate(pvValue)
+ If IsEmpty(pvFormat) Then
+ PyFormat = Str(pvValue)
+ Else
+ If Not Utils._CheckArgument(pvFormat, 2, vbString) Then Goto Exit_Function
+ PyFormat = Format(pvValue, pvFormat)
+ End If
+
+Exit_Function:
+ Exit Function
+End Function ' PyFormat V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyGetGUIType() As Variant
+
+ PyGetGUIType = GetGUIType()
+
+End Function ' PyGetGUIType V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyGetSystemTicks() As Variant
+
+ PyGetSystemTicks = GetSystemTicks()
+
+End Function ' PyGetSystemTicks V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyGlobalScope(ByVal pvLib As Variant) As Variant
+
+ Select Case pvLib
+ Case "Basic"
+ PyGlobalScope = GlobalScope.BasicLibraries()
+ Case "Dialog"
+ PyGlobalScope = GlobalScope.DialogLibraries()
+ Case Else
+ End Select
+
+End Function ' PyGlobalScope V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyInputBox(ByVal pvText As Variant _
+ , ByVal pvTitle As Variant _
+ , ByVal pvDefault As Variant _
+ , ByVal pvXPos As Variant _
+ , ByVal pvYPos As Variant _
+ ) As Variant
+' Convenient function to open input box from Python
+
+ On Local Error GoTo Exit_Function
+ PyInputBox = Null
+
+ If Not Utils._CheckArgument(pvText, 1, vbString) Then Goto Exit_Function
+ If IsEmpty(pvTitle) Then pvTitle = ""
+ If Not Utils._CheckArgument(pvTitle, 2, vbString) Then Goto Exit_Function
+ If IsEmpty(pvDefault) Then pvDefault = ""
+ If Not Utils._CheckArgument(pvDefault, 3, vbString) Then Goto Exit_Function
+
+ If IsEmpty(pvXPos) Or IsEmpty(pvYPos) Then
+ PyInputBox = InputBox(pvText, pvTitle, pvDefault)
+ Else
+ If Not Utils._CheckArgument(pvXPos, 4, Utils._AddNumeric()) Then Goto Exit_Function
+ If Not Utils._CheckArgument(pvYPos, 5, Utils._AddNumeric()) Then Goto Exit_Function
+ PyInputBox = InputBox(pvText, pvTitle, pvDefault, pvXPos, pvYPos)
+ End If
+
+Exit_Function:
+ Exit Function
+End Function ' PyInputBox V6.4.0
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyMsgBox(ByVal pvText As Variant _
+ , ByVal pvType As Variant _
+ , ByVal pvDialogTitle As Variant _
+ ) As Variant
+' Convenient function to open message box from Python
+
+ On Local Error GoTo Exit_Function
+ PyMsgBox = Null
+
+ If Not Utils._CheckArgument(pvText, 1, vbString) Then Goto Exit_Function
+ If IsEmpty(pvType) Then pvType = 0
+ If Not Utils._CheckArgument(pvType, 2, Utils._AddNumeric()) Then Goto Exit_Function
+ If IsEmpty(pvDialogTitle) Then
+ PyMsgBox = MsgBox(pvText, pvType)
+ Else
+ If Not Utils._CheckArgument(pvDialogTitle, 3, vbString) Then Goto Exit_Function
+ PyMsgBox = MsgBox(pvText, pvType, pvDialogTitle)
+ End If
+
+Exit_Function:
+ Exit Function
+End Function ' PyMsgBox V6.4.0
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Public Function PyTimer() As Long
+' Convenient function to call Timer from Python
+
+ PyTimer = Timer
+
+End Function ' PyTimer V6.4
+
+REM -----------------------------------------------------------------------------------------------------------------------
+REM --- PRIVATE FUNCTIONS ---
+REM -----------------------------------------------------------------------------------------------------------------------
+
+REM -----------------------------------------------------------------------------------------------------------------------
+Private Function _CDate(ByVal pvValue As Variant) As Variant
+' Return a Date type if iso date, otherwise return input
+
+Dim vValue As Variant
+ vValue = pvValue
+ If VarType(pvValue) = vbString Then
+ If pvValue <> "" And IsDate(pvValue) Then vValue = CDate(pvValue) ' IsDate("") gives True !?
+ End If
+ _CDate = vValue
+
+End Function
+
</script:module>
\ No newline at end of file
diff --git a/wizards/source/access2base/Utils.xba b/wizards/source/access2base/Utils.xba
index 52ab91a7db58..b5dee5214447 100644
--- a/wizards/source/access2base/Utils.xba
+++ b/wizards/source/access2base/Utils.xba
@@ -872,59 +872,6 @@ Dim lChar As Long, sByte1 As String, sByte2 As String, sByte3 As String
End Function ' _PercentEncode V1.4.0
REM -----------------------------------------------------------------------------------------------------------------------
-Public Function _PyInputBox(ByVal pvText As Variant _
- , ByVal pvTitle As Variant _
- , ByVal pvDefault As Variant _
- , ByVal pvXPos As Variant _
- , ByVal pvYPos As Variant _
- ) As Variant
-' Convenient function to open input box from Python
-
- On Local Error GoTo Exit_Function
- _PyInputBox = Null
-
- If Not Utils._CheckArgument(pvText, 1, vbString) Then Goto Exit_Function
- If IsEmpty(pvTitle) Then pvTitle = ""
- If Not Utils._CheckArgument(pvTitle, 2, vbString) Then Goto Exit_Function
- If IsEmpty(pvDefault) Then pvDefault = ""
- If Not Utils._CheckArgument(pvDefault, 3, vbString) Then Goto Exit_Function
- If IsEmpty(pvXPos) Or IsEmpty(pvYPos) Then
- _PyInputBox = InputBox(pvText, pvTitle, pvDefault)
- Else
- If Not Utils._CheckArgument(pvXPos, 4, Utils._AddNumeric()) Then Goto Exit_Function
- If Not Utils._CheckArgument(pvYPos, 5, Utils._AddNumeric()) Then Goto Exit_Function
- _PyInputBox = InputBox(pvText, pvTitle, pvDefault, pvXPos, pvYPos)
- End If
-
-Exit_Function:
- Exit Function
-End Function ' PyInputBox V6.4.0
-
-REM -----------------------------------------------------------------------------------------------------------------------
-Public Function _PyMsgBox(ByVal pvText As Variant _
- , ByVal pvType As Variant _
- , ByVal pvDialogTitle As Variant _
- ) As Variant
-' Convenient function to open message box from Python
-
- On Local Error GoTo Exit_Function
- _PyMsgBox = Null
-
- If Not Utils._CheckArgument(pvText, 1, vbString) Then Goto Exit_Function
- If IsEmpty(pvType) Then pvType = 0
- If Not Utils._CheckArgument(pvType, 2, Utils._AddNumeric()) Then Goto Exit_Function
- If IsEmpty(pvDialogTitle) Then
- _PyMsgBox = MsgBox(pvText, pvType)
- Else
- If Not Utils._CheckArgument(pvDialogTitle, 3, vbString) Then Goto Exit_Function
- _PyMsgBox = MsgBox(pvText, pvType, pvDialogTitle)
- End If
-
-Exit_Function:
- Exit Function
-End Function ' PyMsgBox V6.4.0
-
-REM -----------------------------------------------------------------------------------------------------------------------
Public Function _ReadFileIntoArray(ByVal psFileName) As Variant
' Loads all lines of a text file into a variant array
' Any error reduces output to an empty array
@@ -1356,4 +1303,4 @@ Private Function _UTF8Encode(ByVal psChar As String) As String
End Function ' _UTF8Encode V1.4.0
-</script:module>
+</script:module>
\ No newline at end of file
commit 483405a99115d8ae1a5c028d175f08a768b3eaec
Author: Jean-Pierre Ledure <jp at ledure.be>
AuthorDate: Fri Aug 9 14:51:07 2019 +0200
Commit: Jean-Pierre Ledure <jp at ledure.be>
CommitDate: Fri Aug 9 16:20:39 2019 +0200
Access2Base - Mention Python.xba in script.xlb
Change-Id: If96e8768d32d63d98b74dac92d42692243a5f531
diff --git a/wizards/source/access2base/dialog.xlb b/wizards/source/access2base/dialog.xlb
index 882814328680..dc06162b7f7a 100644
--- a/wizards/source/access2base/dialog.xlb
+++ b/wizards/source/access2base/dialog.xlb
@@ -3,4 +3,4 @@
<library:library xmlns:library="http://openoffice.org/2000/library" library:name="Access2Base" library:readonly="false" library:passwordprotected="false">
<library:element library:name="dlgTrace"/>
<library:element library:name="dlgFormat"/>
-</library:library>
\ No newline at end of file
+</library:library>
diff --git a/wizards/source/access2base/script.xlb b/wizards/source/access2base/script.xlb
index a3e5c7820694..478a061e8d28 100644
--- a/wizards/source/access2base/script.xlb
+++ b/wizards/source/access2base/script.xlb
@@ -13,7 +13,7 @@
<library:element library:name="Collect"/>
<library:element library:name="PropertiesGet"/>
<library:element library:name="Form"/>
- <library:element library:name="Compatible"/>
+ <library:element library:name="Python"/>
<library:element library:name="_License"/>
<library:element library:name="SubForm"/>
<library:element library:name="L10N"/>
@@ -31,4 +31,4 @@
<library:element library:name="CommandBar"/>
<library:element library:name="CommandBarControl"/>
<library:element library:name="Module"/>
-</library:library>
\ No newline at end of file
+</library:library>
commit 0c911b9e5ce7a2245eeda0c04ce678e5f1e67b69
Author: Jean-Pierre Ledure <jp at ledure.be>
AuthorDate: Fri Aug 9 11:54:02 2019 +0200
Commit: Jean-Pierre Ledure <jp at ledure.be>
CommitDate: Fri Aug 9 16:20:39 2019 +0200
Access2Base - Rename Compatible.xba
... into Python.xba to host Python wrappers
Change-Id: Ic6824db883c6592067e482446258f60473ef4638
diff --git a/wizards/Package_access2base.mk b/wizards/Package_access2base.mk
index bf019c29e77a..d47b90b41624 100644
--- a/wizards/Package_access2base.mk
+++ b/wizards/Package_access2base.mk
@@ -26,7 +26,6 @@ $(eval $(call gb_Package_add_files,wizards_basicsrvaccess2base,$(LIBO_SHARE_FOLD
Collect.xba \
CommandBar.xba \
CommandBarControl.xba \
- Compatible.xba \
Control.xba \
Database.xba \
DataDef.xba \
@@ -45,6 +44,7 @@ $(eval $(call gb_Package_add_files,wizards_basicsrvaccess2base,$(LIBO_SHARE_FOLD
PropertiesGet.xba \
PropertiesSet.xba \
Property.xba \
+ Python.xba \
Recordset.xba \
Root_.xba \
script.xlb \
diff --git a/wizards/source/access2base/Compatible.xba b/wizards/source/access2base/Python.xba
similarity index 100%
rename from wizards/source/access2base/Compatible.xba
rename to wizards/source/access2base/Python.xba
More information about the Libreoffice-commits
mailing list