[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