123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818 |
- <?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="Dialog" 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 ===
- REM =======================================================================================================================
- Option Compatible
- Option ClassModule
- Option Explicit
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- CLASS ROOT FIELDS ---
- REM -----------------------------------------------------------------------------------------------------------------------
- Private _Type As String ' Must be DIALOG
- Private _This As Object ' Workaround for absence of This builtin function
- Private _Parent As Object
- Private _Name As String
- Private _Shortcut As String
- Private _Dialog As Object ' com.sun.star.io.XInputStreamProvider
- Private _Storage As String ' GLOBAL or DOCUMENT
- Private _Library As String
- Private UnoDialog As Object ' com.sun.star.awt.XControl
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- CONSTRUCTORS / DESTRUCTORS ---
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Sub Class_Initialize()
- _Type = OBJDIALOG
- Set _This = Nothing
- Set _Parent = Nothing
- _Name = ""
- Set _Dialog = Nothing
- _Storage = ""
- _Library = ""
- Set UnoDialog = Nothing
- End Sub ' Constructor
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Sub Class_Terminate()
- On Local Error Resume Next
- Call Class_Initialize()
- End Sub ' Destructor
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Sub Dispose()
- Call Class_Terminate()
- End Sub ' Explicit destructor
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- CLASS GET/LET/SET PROPERTIES ---
- REM -----------------------------------------------------------------------------------------------------------------------
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Caption() As Variant
- Caption = _PropertyGet("Caption")
- End Property ' Caption (get)
- Property Let Caption(ByVal pvValue As Variant)
- Call _PropertySet("Caption", pvValue)
- End Property ' Caption (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Height() As Variant
- Height = _PropertyGet("Height")
- End Property ' Height (get)
- Property Let Height(ByVal pvValue As Variant)
- Call _PropertySet("Height", pvValue)
- End Property ' Height (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get IsLoaded() As Boolean
- IsLoaded = _PropertyGet("IsLoaded")
- End Property
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Name() As String
- Name = _PropertyGet("Name")
- End Property ' Name (get)
- Public Function pName() As String ' For compatibility with < V0.9.0
- pName = _PropertyGet("Name")
- End Function ' pName (get)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get ObjectType() As String
- ObjectType = _PropertyGet("ObjectType")
- End Property ' ObjectType (get)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnFocusGained() As Variant
- OnFocusGained = _PropertyGet("OnFocusGained")
- End Property ' OnFocusGained (get)
- Property Let OnFocusGained(ByVal pvValue As Variant)
- Call _PropertySet("OnFocusGained", pvValue)
- End Property ' OnFocusGained (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnFocusLost() As Variant
- OnFocusLost = _PropertyGet("OnFocusLost")
- End Property ' OnFocusLost (get)
- Property Let OnFocusLost(ByVal pvValue As Variant)
- Call _PropertySet("OnFocusLost", pvValue)
- End Property ' OnFocusLost (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnKeyPressed() As Variant
- OnKeyPressed = _PropertyGet("OnKeyPressed")
- End Property ' OnKeyPressed (get)
- Property Let OnKeyPressed(ByVal pvValue As Variant)
- Call _PropertySet("OnKeyPressed", pvValue)
- End Property ' OnKeyPressed (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnKeyReleased() As Variant
- OnKeyReleased = _PropertyGet("OnKeyReleased")
- End Property ' OnKeyReleased (get)
- Property Let OnKeyReleased(ByVal pvValue As Variant)
- Call _PropertySet("OnKeyReleased", pvValue)
- End Property ' OnKeyReleased (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnMouseDragged() As Variant
- OnMouseDragged = _PropertyGet("OnMouseDragged")
- End Property ' OnMouseDragged (get)
- Property Let OnMouseDragged(ByVal pvValue As Variant)
- Call _PropertySet("OnMouseDragged", pvValue)
- End Property ' OnMouseDragged (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnMouseEntered() As Variant
- OnMouseEntered = _PropertyGet("OnMouseEntered")
- End Property ' OnMouseEntered (get)
- Property Let OnMouseEntered(ByVal pvValue As Variant)
- Call _PropertySet("OnMouseEntered", pvValue)
- End Property ' OnMouseEntered (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnMouseExited() As Variant
- OnMouseExited = _PropertyGet("OnMouseExited")
- End Property ' OnMouseExited (get)
- Property Let OnMouseExited(ByVal pvValue As Variant)
- Call _PropertySet("OnMouseExited", pvValue)
- End Property ' OnMouseExited (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnMouseMoved() As Variant
- OnMouseMoved = _PropertyGet("OnMouseMoved")
- End Property ' OnMouseMoved (get)
- Property Let OnMouseMoved(ByVal pvValue As Variant)
- Call _PropertySet("OnMouseMoved", pvValue)
- End Property ' OnMouseMoved (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnMousePressed() As Variant
- OnMousePressed = _PropertyGet("OnMousePressed")
- End Property ' OnMousePressed (get)
- Property Let OnMousePressed(ByVal pvValue As Variant)
- Call _PropertySet("OnMousePressed", pvValue)
- End Property ' OnMousePressed (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get OnMouseReleased() As Variant
- OnMouseReleased = _PropertyGet("OnMouseReleased")
- End Property ' OnMouseReleased (get)
- Property Let OnMouseReleased(ByVal pvValue As Variant)
- Call _PropertySet("OnMouseReleased", pvValue)
- End Property ' OnMouseReleased (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function OptionGroup(ByVal Optional pvGroupName As Variant) As Variant
- ' Return either an error or an object of type OPTIONGROUP based on its name
- ' A group is determined by the successive TabIndexes of the radio button
- ' The name of the group = the name of its first element
- Utils._SetCalledSub("Dialog.OptionGroup")
- If IsMissing(pvGroupName) Then Call _TraceArguments()
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Set OptionGroup = Nothing
- If Not Utils._CheckArgument(pvGroupName, 1, vbString) Then Goto Exit_Function
- Dim iAllCount As Integer, iRadioLast As Integer, iGroupCount As Integer, iBegin As Integer, iEnd As Integer
- Dim oRadios() As Object, sGroupName As String
- Dim i As Integer, j As Integer, bFound As Boolean, ocControl As Object, oRadio As Object, iTabIndex As Integer
- Dim ogGroup As Object, vGroup() As Variant, vIndex() As Variant
- iAllCount = Controls.Count
- If iAllCount > 0 Then
- iRadioLast = -1
- ReDim oRadios(0 To iAllCount - 1)
- For i = 0 To iAllCount - 1 ' Store all RadioButtons objects
- Set ocControl = Controls(i)
- If ocControl._SubType = CTLRADIOBUTTON Then
- iRadioLast = iRadioLast + 1
- Set oRadios(iRadioLast) = ocControl
- End If
- Next i
- Else
- Goto Error_Arg ' No control in dialog
- End If
-
- If iRadioLast < 0 then Goto Error_Arg ' No radio buttons in the dialog
-
- 'Resort oRadio array based on tab indexes
- If iRadioLast > 0 Then
- For i = 0 To iRadioLast - 1 ' Bubble sort
- For j = i + 1 To iRadioLast
- If oRadios(i).TabIndex > oRadios(j).TabIndex Then
- Set oRadio = oRadios(i)
- Set oRadios(i) = oRadios(j)
- Set oRadios(j) = oRadio
- End If
- Next j
- Next i
- End If
-
- 'Scan Names to find match with argument
- bFound = False
- For i = 0 To iRadioLast
- If UCase(oRadios(i)._Name) = UCase(pvGroupName) Then
- Select Case i
- Case 0 : bFound = True
- Case Else
- If oRadios(i).TabIndex > oRadios(i - 1).TabIndex + 1 Then
- bFound = True
- Else
- Goto Error_Arg ' same group as preceding item although name correct
- End If
- End Select
- If bFound Then
- iBegin = i
- iEnd = i
- sGroupName = oRadios(i)._Name
- End If
- ElseIf bFound Then
- If oRadios(i).TabIndex = oRadios(i - 1).TabIndex + 1 Then iEnd = i
- End If
- Next i
- If bFound Then ' Create OptionGroup
- iGroupCount = iEnd - iBegin + 1
- Set ogGroup = New OptionGroup
- ReDim vGroup(0 To iGroupCount - 1)
- ReDim vIndex(0 To iGroupCount - 1)
- With ogGroup
- ._This = ogGroup
- ._Name = sGroupName
- ._Count = iGroupCount
- ._ButtonsGroup = vGroup
- ._ButtonsIndex = vIndex
- For i = 0 To iGroupCount - 1
- Set ._ButtonsGroup(i) = oRadios(iBegin + i).ControlModel
- ._ButtonsIndex(i) = i
- Next i
- ._ParentType = CTLPARENTISDIALOG
- ._ParentComponent = UnoDialog
- End With
- Else Goto Error_Arg
- End If
-
- Set OptionGroup = ogGroup
-
- Exit_Function:
- Utils._ResetCalledSub("Dialog.OptionGroup")
- Exit Function
- Error_Arg:
- TraceError(TRACEFATAL, ERRWRONGARGUMENT, Utils._CalledSub(), 0, , Array(1, pvGroupName))
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog.OptionGroup", Erl)
- GoTo Exit_Function
- End Function ' OptionGroup V0.9.1
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Page() As Variant
- Page = _PropertyGet("Page")
- End Property ' Page (get)
- Property Let Page(ByVal pvValue As Variant)
- Call _PropertySet("Page", pvValue)
- End Property ' Page (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Parent() As Object
- Parent = _Parent
- End Function ' Parent (get) V6.4.0
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Properties(ByVal Optional pvIndex As Variant) As Variant
- ' Return
- ' a Collection object if pvIndex absent
- ' a Property object otherwise
- Const cstThisSub = "Dialog.Properties"
- Utils._SetCalledSub(cstThisSub)
- Dim vProperty As Variant, vPropertiesList() As Variant, sObject As String
- vPropertiesList = _PropertiesList()
- sObject = Utils._PCase(_Type)
- If IsMissing(pvIndex) Then
- vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList)
- Else
- vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList, pvIndex)
- vProperty._Value = _PropertyGet(vPropertiesList(pvIndex))
- End If
-
- Exit_Function:
- Set Properties = vProperty
- Utils._ResetCalledSub(cstThisSub)
- Exit Function
- End Function ' Properties
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Visible() As Variant
- Visible = _PropertyGet("Visible")
- End Property ' Visible (get)
- Property Let Visible(ByVal pvValue As Variant)
- Call _PropertySet("Visible", pvValue)
- End Property ' Visible (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- Property Get Width() As Variant
- Width = _PropertyGet("Width")
- End Property ' Width (get)
- Property Let Width(ByVal pvValue As Variant)
- Call _PropertySet("Width", pvValue)
- End Property ' Width (set)
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- CLASS METHODS ---
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Controls(Optional ByVal pvIndex As Variant) As Variant
- ' Return a Control object with name or index = pvIndex
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Utils._SetCalledSub("Dialog.Controls")
- Dim ocControl As Variant, sParentShortcut As String, iControlCount As Integer
- Dim oCounter As Variant, sControls() As Variant, i As Integer, bFound As Boolean, sIndex As String
- Dim j As Integer
- Set ocControl = Nothing
- If Not IsLoaded Then Goto Trace_Error_NotOpen
- Set ocControl = New Control
- Set ocControl._This = ocControl
- Set ocControl._Parent = _This
- ocControl._ParentType = CTLPARENTISDIALOG
- sParentShortcut = _Shortcut
- sControls() = UnoDialog.Model.getElementNames()
- iControlCount = UBound(sControls) + 1
-
- If IsMissing(pvIndex) Then ' No argument, return Collection object
- Set oCounter = New Collect
- Set oCounter._This = oCounter
- oCounter._CollType = COLLCONTROLS
- oCounter._Count = iControlCount
- Set oCounter._Parent = _This
- Set Controls = oCounter
- Goto Exit_Function
- End If
-
- If Not Utils._CheckArgument(pvIndex, 1, Utils._AddNumeric(vbString)) Then Goto Exit_Function
-
- ' Start building the ocControl object
- ' Determine exact name
-
- Select Case VarType(pvIndex)
- Case vbInteger, vbLong, vbSingle, vbDouble, vbCurrency, vbBigint, vbDecimal
- If pvIndex < 0 Or pvIndex > iControlCount - 1 Then Goto Trace_Error_Index
- ocControl._Name = sControls(pvIndex)
- Case vbString ' Check control name validity (non case sensitive)
- bFound = False
- sIndex = UCase(Utils._Trim(pvIndex))
- For i = 0 To iControlCount - 1
- If UCase(sControls(i)) = sIndex Then
- bFound = True
- Exit For
- End If
- Next i
- If bFound Then ocControl._Name = sControls(i) Else Goto Trace_NotFound
- End Select
- ocControl._Shortcut = sParentShortcut & "!" & Utils._Surround(ocControl._Name)
- Set ocControl.ControlModel = UnoDialog.Model.getByName(ocControl._Name)
- Set ocControl.ControlView = UnoDialog.getControl(ocControl._Name)
- ocControl._ImplementationName = ocControl.ControlModel.getImplementationName()
- ocControl._FormComponent = UnoDialog
- ocControl._Initialize()
- Set Controls = ocControl
-
- Exit_Function:
- Utils._ResetCalledSub("Dialog.Controls")
- Exit Function
- Trace_Error:
- TraceError(TRACEFATAL, ERRWRONGARGUMENT, Utils._CalledSub(), 0, , Array(iArg, pvIndex))
- Set Controls = Nothing
- Goto Exit_Function
- Trace_Error_NotOpen:
- TraceError(TRACEFATAL, ERRDIALOGNOTSTARTED, Utils._CalledSub(), 0, , _Name)
- Set Controls = Nothing
- Goto Exit_Function
- Trace_Error_Index:
- TraceError(TRACEFATAL, ERRCOLLECTION, Utils._CalledSub(), 0, 1)
- Set Controls = Nothing
- Goto Exit_Function
- Trace_NotFound:
- TraceError(TRACEFATAL, ERRCONTROLNOTFOUND, Utils._CalledSub(), 0, , Array(pvIndex, pvIndex))
- Set Controls = Nothing
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog.Controls", Erl)
- Set Controls = Nothing
- GoTo Exit_Function
- End Function ' Controls
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Sub EndExecute(ByVal Optional pvReturn As Variant)
- ' Stop executing the dialog
- If _ErrorHandler() Then On Local Error Goto Error_Sub
- Utils._SetCalledSub("Dialog.endExecute")
- If IsMissing(pvReturn) Then pvReturn = 0
- If Not Utils._CheckArgument(pvReturn, 1, Utils._AddNumeric(), , False) Then Goto Trace_Error
-
- Dim lExecute As Long
- lExecute = CLng(pvReturn)
- If IsNull(_Dialog) Then Goto Error_Execute
- If IsNull(UnoDialog) Then Goto Error_Not_Started
- Call UnoDialog.endDialog(lExecute)
- Exit_Sub:
- Utils._ResetCalledSub("Dialog.endExecute")
- Exit Sub
- Trace_Error:
- TraceError(TRACEFATAL, ERRWRONGARGUMENT, Utils._CalledSub(), 0, , Array("1", Utils._CStr(pvReturn)))
- Goto Exit_Sub
- Error_Execute:
- TraceError(TRACEFATAL, ERRDIALOGUNDEFINED, Utils._CalledSub(), 0)
- Goto Exit_Sub
- Error_Not_Started:
- TraceError(TRACEWARNING, ERRDIALOGNOTSTARTED, Utils._CalledSub(), 0, 1, _Name)
- Goto Exit_Sub
- Error_Sub:
- TraceError(TRACEABORT, Err, "Dialog.endExecute", Erl)
- GoTo Exit_Sub
- End Sub ' EndExecute
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Execute() As Long
- ' Execute dialog
- 'If _ErrorHandler() Then On Local Error Goto Error_Function
- 'Seems smart not to trap errors: debugging of dialog events otherwise made very difficult !
- Utils._SetCalledSub("Dialog.Execute")
- Dim lExecute As Long
- If IsNull(_Dialog) Then Goto Error_Execute
- If IsNull(UnoDialog) Then Goto Error_Not_Started
- lExecute = UnoDialog.execute()
- Select Case lExecute
- Case 1 : Execute = dlgOK
- Case 0 : Execute = dlgCancel
- Case Else : Execute = lExecute
- End Select
- Exit_Function:
- Utils._ResetCalledSub("Dialog.Execute")
- Exit Function
- Error_Execute:
- TraceError(TRACEFATAL, ERRDIALOGUNDEFINED, Utils._CalledSub(), 0)
- Goto Exit_Function
- Error_Not_Started:
- TraceError(TRACEWARNING, ERRDIALOGNOTSTARTED, Utils._CalledSub(), 0, 1, _Name)
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog.Execute", Erl)
- GoTo Exit_Function
- End Function ' Execute
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function getProperty(Optional ByVal pvProperty As Variant) As Variant
- ' Return property value of psProperty property name
- Utils._SetCalledSub("Dialog.getProperty")
- If IsMissing(pvProperty) Then Call _TraceArguments()
- getProperty = _PropertyGet(pvProperty)
- Utils._ResetCalledSub("Dialog.getProperty")
-
- End Function ' getProperty
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function hasProperty(ByVal Optional pvProperty As Variant) As Boolean
- ' Return True if object has a valid property called pvProperty (case-insensitive comparison !)
- If IsMissing(pvProperty) Then hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList()) Else hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList(), pvProperty)
- Exit Function
-
- End Function ' hasProperty
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Move( ByVal Optional pvLeft As Variant _
- , ByVal Optional pvTop As Variant _
- , ByVal Optional pvWidth As Variant _
- , ByVal Optional pvHeight As Variant _
- ) As Variant
- ' Execute Move method
- Utils._SetCalledSub("Dialog.Move")
- On Local Error Goto Error_Function
- Move = False
- Dim iArgNr As Integer
- Select Case UCase(_A2B_.CalledSub)
- Case UCase("Move") : iArgNr = 1
- Case UCase("Dialog.Move") : iArgNr = 0
- End Select
- If IsMissing(pvLeft) Then pvLeft = -1
- If IsMissing(pvTop) Then pvTop = -1
- If IsMissing(pvWidth) Then pvWidth = -1
- If IsMissing(pvHeight) Then pvHeight = -1
- If Not Utils._CheckArgument(pvLeft, iArgNr + 1, Utils._AddNumeric()) Then Goto Exit_Function
- If Not Utils._CheckArgument(pvTop, iArgNr + 2, Utils._AddNumeric()) Then Goto Exit_Function
- If Not Utils._CheckArgument(pvWidth, iArgNr + 3, Utils._AddNumeric()) Then Goto Exit_Function
- If Not Utils._CheckArgument(pvHeight, iArgNr + 4, Utils._AddNumeric()) Then Goto Exit_Function
-
- Dim iArg As Integer, iWrong As Integer ' Check arguments values
- iArg = 0
- If pvHeight < -1 Then
- iArg = 4 : iWrong = pvHeight
- ElseIf pvWidth < -1 Then
- iArg = 3 : iWrong = pvWidth
- ElseIf pvTop < -1 Then
- iArg = 2 : iWrong = pvTop
- ElseIf pvLeft < -1 Then
- iArg = 1 : iWrong = pvLeft
- End If
- If iArg > 0 Then
- TraceError(TRACEFATAL, ERRWRONGARGUMENT, Utils._CalledSub(), 0, 1, Array(iArgNr + iArg, iWrong))
- Goto Exit_Function
- End If
-
- Dim iPosSize As Integer
- iPosSize = 0
- If pvLeft >= 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.X
- If pvTop >= 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.Y
- If pvWidth > 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.WIDTH
- If pvHeight > 0 Then iPosSize = iPosSize + com.sun.star.awt.PosSize.HEIGHT
- If iPosSize > 0 Then UnoDialog.setPosSize(pvLeft, pvTop, pvWidth, pvHeight, iPosSize)
- Move = True
-
- Exit_Function:
- Utils._ResetCalledSub("Dialog.Move")
- Exit Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog.Move", Erl)
- GoTo Exit_Function
- End Function ' Move
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function setProperty(ByVal Optional psProperty As String, ByVal Optional pvValue As Variant) As Boolean
- ' Return True if property setting OK
- Utils._SetCalledSub("Dialog.setProperty")
- setProperty = _PropertySet(psProperty, pvValue)
- Utils._ResetCalledSub("Dialog.setProperty")
- End Function
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Start() As Boolean
- ' Create dialog
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Utils._SetCalledSub("Dialog.Start")
- Dim oStart As Object
- Start = False
- If IsNull(_Dialog) Then Goto Error_Start
- If Not IsNull(UnoDialog) Then Goto Error_Yet_Started
- Set oStart = CreateUnoDialog(_Dialog)
- If IsNull(oStart) Then
- Goto Error_Start
- Else
- Start = True
- Set UnoDialog = oStart
- With _A2B_
- If .hasItem(COLLALLDIALOGS, _Name) Then .Dialogs.Remove(_Name) ' Inserted to solve errors, when aborts between start and terminate
- .Dialogs.Add(UnoDialog, UCase(_Name))
- End With
- End If
- Exit_Function:
- Utils._ResetCalledSub("Dialog.Start")
- Exit Function
- Error_Start:
- TraceError(TRACEFATAL, ERRDIALOGUNDEFINED, Utils._CalledSub(), 0)
- Goto Exit_Function
- Error_Yet_Started:
- TraceError(TRACEWARNING, ERRDIALOGSTARTED, Utils._CalledSub(), 0)
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog.Start", Erl)
- GoTo Exit_Function
- End Function ' Start
- REM -----------------------------------------------------------------------------------------------------------------------
- Public Function Terminate() As Boolean
- ' Close dialog
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Utils._SetCalledSub("Dialog.Terminate")
- Terminate = False
- If IsNull(_Dialog) Then Goto Error_Terminate
- If IsNull(UnoDialog) Then Goto Error_Not_Started
- UnoDialog.Dispose()
- Set UnoDialog = Nothing
- _A2B_.Dialogs.Remove(_Name)
- Terminate = True
- Exit_Function:
- Utils._ResetCalledSub("Dialog.Terminate")
- Exit Function
- Error_Terminate:
- TraceError(TRACEFATAL, ERRDIALOGUNDEFINED, Utils._CalledSub(), 0)
- Goto Exit_Function
- Error_Not_Started:
- TraceError(TRACEWARNING, ERRDIALOGNOTSTARTED, Utils._CalledSub(), 0, 1, _Name)
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog.Terminate", Erl)
- GoTo Exit_Function
- End Function ' Terminate
- REM -----------------------------------------------------------------------------------------------------------------------
- REM --- PRIVATE FUNCTIONS ---
- REM -----------------------------------------------------------------------------------------------------------------------
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Function _GetListener(ByVal psProperty As String) As String
- ' Return the X...Listener corresponding with the property in argument
- Select Case UCase(psProperty)
- Case UCase("OnFocusGained"), UCase("OnFocusLost")
- _GetListener = "XFocusListener"
- Case UCase("OnKeyPressed"), UCase("OnKeyReleased")
- _GetListener = "XKeyListener"
- Case UCase("OnMouseDragged"), UCase("OnMouseMoved")
- _GetListener = "XMouseMotionListener"
- Case UCase("OnMouseEntered"), UCase("OnMouseExited"), UCase("OnMousePressed"), UCase("OnMouseReleased")
- _GetListener = "XMouseListener"
- End Select
-
- End Function ' _GetListener V1.7.0
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Function _PropertiesList() As Variant
- If IsLoaded Then
- _PropertiesList = Array("Caption", "Height", "IsLoaded", "Name" _
- , "OnFocusGained", "OnFocusLost", "OnKeyPressed", "OnKeyReleased", "OnMouseDragged" _
- , "OnMouseEntered", "OnMouseExited", "OnMouseMoved", "OnMousePressed", "OnMouseReleased" _
- , "ObjectType", "Page", "Visible", "Width" _
- )
- Else
- _PropertiesList = Array("IsLoaded", "Name" _
- )
- End If
-
- End Function ' _PropertiesList
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Function _PropertyGet(ByVal psProperty As String) As Variant
- ' Return property value of the psProperty property name
- If _ErrorHandler() Then On Local Error Goto Error_Function
- Utils._SetCalledSub("Dialog.get" & psProperty)
- Dim oDialogEvents As Object, sEventName As String
- 'Execute
- _PropertyGet = EMPTY
- Select Case UCase(psProperty)
- Case UCase("Name"), UCase("IsLoaded")
- Case Else
- If IsNull(UnoDialog) Then Goto Trace_Error_Dialog
- End Select
- Select Case UCase(psProperty)
- Case UCase("Caption")
- _PropertyGet = UnoDialog.getTitle()
- Case UCase("Height")
- _PropertyGet = UnoDialog.getPosSize().Height
- Case UCase("IsLoaded")
- _PropertyGet = _A2B_.hasItem(COLLALLDIALOGS, _Name)
- Case UCase("Name")
- _PropertyGet = _Name
- Case UCase("ObjectType")
- _PropertyGet = _Type
- Case UCase("OnFocusGained"), UCase("OnFocusLost"), UCase("OnKeyPressed"), UCase("OnKeyReleased") _
- , UCase("OnMouseDragged"), UCase("OnMouseEntered"), UCase("OnMouseExited"), UCase("OnMouseMoved") _
- , UCase("OnMousePressed"), UCase("OnMouseReleased")
- Set oDialogEvents = unoDialog.Model.getEvents()
- sEventName = "com.sun.star.awt." & _GetListener(psProperty) & "::" & Utils._GetEventName(psProperty)
- If oDialogEvents.hasByName(sEventName) Then
- _PropertyGet = oDialogEvents.getByName(sEventName).ScriptCode
- Else
- _PropertyGet = ""
- End If
- Case UCase("Page")
- _PropertyGet = UnoDialog.Model.Step
- Case UCase("Visible")
- _PropertyGet = UnoDialog.IsVisible()
- Case UCase("Width")
- _PropertyGet = UnoDialog.getPosSize().Width
- Case Else
- Goto Trace_Error
- End Select
-
- Exit_Function:
- Utils._ResetCalledSub("Dialog.get" & psProperty)
- Exit Function
- Trace_Error:
- TraceError(TRACEWARNING, ERRPROPERTY, Utils._CalledSub(), 0, 1, psProperty)
- _PropertyGet = EMPTY
- Goto Exit_Function
- Trace_Error_Dialog:
- TraceError(TRACEFATAL, ERRDIALOGNOTSTARTED, Utils._CalledSub(), 0, 1, _Name)
- _PropertyGet = EMPTY
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog._PropertyGet", Erl)
- _PropertyGet = EMPTY
- GoTo Exit_Function
- End Function ' _PropertyGet
- REM -----------------------------------------------------------------------------------------------------------------------
- Private Function _PropertySet(ByVal psProperty As String, ByVal pvValue As Variant) As Boolean
- Utils._SetCalledSub("Dialog.set" & psProperty)
- If _ErrorHandler() Then On Local Error Goto Error_Function
- _PropertySet = True
- Dim oDialogEvents As Object, sEventName As String, oEvent As Object, sListener As String, sEvent As String
- 'Execute
- Dim iArgNr As Integer
- If _IsLeft(_A2B_.CalledSub, "Dialog.") Then iArgNr = 1 Else iArgNr = 2
- If IsNull(UnoDialog) Then Goto Trace_Error_Dialog
- Select Case UCase(psProperty)
- Case UCase("Caption")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
- UnoDialog.setTitle(pvValue)
- Case UCase("Height")
- If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric(), , False) Then Goto Trace_Error_Value
- UnoDialog.setPosSize(0, 0, 0, pvValue, com.sun.star.awt.PosSize.HEIGHT)
- Case UCase("OnFocusGained"), UCase("OnFocusLost"), UCase("OnKeyPressed"), UCase("OnKeyReleased") _
- , UCase("OnMouseDragged"), UCase("OnMouseEntered"), UCase("OnMouseExited"), UCase("OnMouseMoved") _
- , UCase("OnMousePressed"), UCase("OnMouseReleased")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
- If Not Utils._RegisterDialogEventScript(UnoDialog.Model _
- , psProperty _
- , _GetListener(psProperty) _
- , pvValue _
- ) Then GoTo Trace_Error_Dialog
- Case UCase("Page")
- If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric(), , False) Then Goto Trace_Error_Value
- If pvValue < 0 Then Goto Trace_Error_Value
- UnoDialog.Model.Step = pvValue
- Case UCase("Visible")
- If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
- UnoDialog.setVisible(pvValue)
- Case UCase("Width")
- If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric()) Then Goto Trace_Error_Value
- UnoDialog.setPosSize(0, 0, pvValue, 0, com.sun.star.awt.PosSize.WIDTH)
- Case Else
- Goto Trace_Error
- End Select
- Exit_Function:
- Utils._ResetCalledSub("Dialog.set" & psProperty)
- Exit Function
- Trace_Error_Dialog:
- TraceError(TRACEFATAL, ERRDIALOGNOTSTARTED, Utils._CalledSub(), 0, 1, _Name)
- _PropertySet = False
- Goto Exit_Function
- Trace_Error:
- TraceError(TRACEFATAL, ERRPROPERTY, Utils._CalledSub(), 0, 1, psProperty)
- _PropertySet = False
- Goto Exit_Function
- Trace_Error_Value:
- TraceError(TRACEFATAL, ERRPROPERTYVALUE, Utils._CalledSub(), 0, 1, Array(pvValue, psProperty))
- _PropertySet = False
- Goto Exit_Function
- Error_Function:
- TraceError(TRACEABORT, Err, "Dialog._PropertySet", Erl)
- _PropertySet = False
- GoTo Exit_Function
- End Function ' _PropertySet
- </script:module>
|