diff options
author | Jean-Pierre Ledure <jp@ledure.be> | 2020-11-27 14:25:51 +0100 |
---|---|---|
committer | Jean-Pierre Ledure <jp@ledure.be> | 2020-11-28 11:29:11 +0100 |
commit | 8e717facb376029e24dbf39c171234d67388d4d5 (patch) | |
tree | 8cad0d752f4f8cdd7179ba33684d0bec44b0dccb /wizards | |
parent | 1ca8bc9248119ee82afccbff3329f80317667a90 (diff) |
ScriptForge - (SF_Dialog) set OnEvent properties
Applied on Dialog class:
Assign the triggered script as a string to the OnXxx properties
or as a zero-length string to remove any trigger
Change-Id: I91169a761ece7bf464f58bd3f3415d1b023c71a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106775
Tested-by: Jean-Pierre Ledure <jp@ledure.be>
Tested-by: Jenkins
Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
Diffstat (limited to 'wizards')
-rw-r--r-- | wizards/source/scriptforge/SF_Root.xba | 4 | ||||
-rw-r--r-- | wizards/source/sfdialogs/SF_Dialog.xba | 10 | ||||
-rw-r--r-- | wizards/source/sfdialogs/SF_DialogControl.xba | 2 | ||||
-rw-r--r-- | wizards/source/sfdialogs/SF_Register.xba | 41 |
4 files changed, 54 insertions, 3 deletions
diff --git a/wizards/source/scriptforge/SF_Root.xba b/wizards/source/scriptforge/SF_Root.xba index 5be7766e03b9..2af6ca463dcb 100644 --- a/wizards/source/scriptforge/SF_Root.xba +++ b/wizards/source/scriptforge/SF_Root.xba @@ -777,7 +777,7 @@ Try: , MsgId := "An SQL statement could not be interpreted or executed by the database system.\n" _ & "Check its syntax, table and/or field names, ...\n\n" _ & "SQL Statement : « %1 »" _ - , Comment := "SF_Database can't interpret SQL statement\n" _ + , Comment := "SF_Database can't interpret SQL statement\n" _ & "%1: The statement" _ ) End With @@ -819,4 +819,4 @@ Public Sub _StackReset() End Sub ' ScriptForge.SF_Root._StackReset REM ================================================== END OF SCRIPTFORGE.SF_ROOT -</script:module> +</script:module>
\ No newline at end of file diff --git a/wizards/source/sfdialogs/SF_Dialog.xba b/wizards/source/sfdialogs/SF_Dialog.xba index a508505f372f..5adfd515c33d 100644 --- a/wizards/source/sfdialogs/SF_Dialog.xba +++ b/wizards/source/sfdialogs/SF_Dialog.xba @@ -835,6 +835,16 @@ Const cstSubArgs = "Value" Case UCase("Height") If Not ScriptForge.SF_Utils._Validate(pvValue, "Height", ScriptForge.V_NUMERIC) Then GoTo Finally If oSession.HasUNOProperty(_DialogModel, "Height") Then _DialogModel.Height = pvValue + Case UCase("OnFocusGained"), UCase("OnFocusLost"), UCase("OnKeyPressed"), UCase("OnKeyReleased") _ + , UCase("OnMouseDragged"), UCase("OnMouseEntered"), UCase("OnMouseExited"), UCase("OnMouseMoved") _ + , UCase("OnMousePressed"), UCase("OnMouseReleased") + If Not ScriptForge.SF_Utils._Validate(pvValue, psProperty, V_STRING) Then GoTo Finally + SFDialogs.SF_Register._SetEventScript( _ + _DialogModel _ + , _GetEventName(psProperty) _ + , _GetListener(psProperty) _ + , pvValue _ + ) Case UCase("Page") If Not ScriptForge.SF_Utils._Validate(pvValue, "Page", ScriptForge.V_NUMERIC) Then GoTo Finally If oSession.HasUNOProperty(_DialogModel, "Step") Then _DialogModel.Step = CLng(pvValue) diff --git a/wizards/source/sfdialogs/SF_DialogControl.xba b/wizards/source/sfdialogs/SF_DialogControl.xba index 2b23fed76331..0559d8c036d4 100644 --- a/wizards/source/sfdialogs/SF_DialogControl.xba +++ b/wizards/source/sfdialogs/SF_DialogControl.xba @@ -1096,4 +1096,4 @@ Private Function _Repr() As String End Function ' SFDialogs.SF_DialogControl._Repr REM ============================================ END OF SFDIALOGS.SF_DIALOGCONTROL -</script:module> +</script:module>
\ No newline at end of file diff --git a/wizards/source/sfdialogs/SF_Register.xba b/wizards/source/sfdialogs/SF_Register.xba index a1a454c8f006..7018385a1442 100644 --- a/wizards/source/sfdialogs/SF_Register.xba +++ b/wizards/source/sfdialogs/SF_Register.xba @@ -325,5 +325,46 @@ CatchNotFound: GoTo Finally End Function ' SFDialogs.SF_Register._NewDialog +REM ----------------------------------------------------------------------------- +Public Sub _SetEventScript(poObject As Object _ + , ByVal psEvent As String _ + , ByVal psListener As String _ + , ByVal psScriptCode As String _ + ) +''' Set/replace a script event in a Dialog or DialogControl model +''' Args: +''' poObject: the Dialog or DialogControl model +''' psEvent: the name of the event which triggers the script +''' psListener: getting/Setting macros triggered by events requires a Listener-EventName pair +''' psScriptCode: the script to associate with the event as a string +''' If = "", then the event is completely removed + +Dim oEvents As Object ' The set of events of the model +Dim sEventName As String ' The full name of the event +Dim oEvent As Object ' com.sun.star.script.ScriptEventDescriptor + +Check: + If Not SF_Session.HasUnoMethod(poObject, "getEvents") Then GoTo Finally + +Try: + ' Remove existing event, if any, then store the new script code if <> "" + Set oEvents = poObject.getEvents() + sEventName = "com.sun.star.awt." & psListener & "::" & psEvent + If oEvents.hasByName(sEventName) Then oEvents.removeByName(sEventName) + If Len(psScriptCode) > 0 Then + Set oEvent = CreateUnoStruct("com.sun.star.script.ScriptEventDescriptor") + With oEvent + .ListenerType = psListener + .EventMethod = psEvent + .ScriptType = "Script" ' Better than "Basic" + .ScriptCode = psScriptCode + End With + oEvents.insertByName(sEventName, oEvent) + End If + +Finally: + Exit Sub +End Sub ' SFDialogs.SF_Register._SetEventScript + REM ============================================== END OF SFDIALOGS.SF_REGISTER </script:module>
\ No newline at end of file |