From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- .../source/text/sbasic/python/python_screen.xhp | 108 +++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 helpcontent2/source/text/sbasic/python/python_screen.xhp (limited to 'helpcontent2/source/text/sbasic/python/python_screen.xhp') diff --git a/helpcontent2/source/text/sbasic/python/python_screen.xhp b/helpcontent2/source/text/sbasic/python/python_screen.xhp new file mode 100644 index 000000000..b88fa923a --- /dev/null +++ b/helpcontent2/source/text/sbasic/python/python_screen.xhp @@ -0,0 +1,108 @@ + + + + + + Python : Screen Input/Output + /text/sbasic/python/python_screen.xhp + + + + + Python;InputBox + Python;MsgBox + Python;Print + API;script.provider.MasterScriptProvider: Screen Input/Output + API;script.provider.XScript: Screen Input/Output + +

Input/Output to Screen

+ Python standard output file is not available when running Python macros from Tools – Macros - Run Macro... menu. Presenting the output of a module requires the Python interactive console. Features such as input(), print(), repr() and str() are available from the Python shell. + The Alternative Python Script Organizer (APSO) extension offers a msgbox() function out of its apso_utils module. + %PRODUCTNAME Basic proposes InputBox(), Msgbox() and Print() screen I/O functions. Python alternatives exist relying either on %PRODUCTNAME API Abstract Windowing Toolkit, either on Python to Basic function calls. The latter proposes a syntax that is intentionally close to that of Basic, and uses a Python module next to a Basic module. The API Scripting Framework is used to perform Basic, BeanShell, JavaScript and Python inter-languages function calls. +

Python syntax:

+ MsgBox(txt, buttons=0, title=None)
+ InputBox(txt, title=None, default=None)
+ Print(txt) +

Examples:

+ >>> import screen_io as ui + >>> reply = ui.InputBox('Please enter a phrase', title='Dear user', defaultValue="here..") + >>> rc = ui.MsgBox(reply, title="Confirmation of phrase") + >>> age = ui.InputBox('How old are you?', title="Hi") + >>> ui.Print(age) +

Installation:

+ + + Copy screen_io Python module in My macros within <UserProfile>/Scripts/python/pythonpath, + + + Copy uiScripts Basic module in My macros Standard Basic library, + + + Restart %PRODUCTNAME. + + +

screen_io Python module

+ + # -*- coding: utf-8 -*- + from __future__ import unicode_literals + + def MsgBox(prompt: str, buttons=0, title='LibreOffice') -> int: + """ Displays a dialog box containing a message and returns a value.""" + xScript = _getScript("_MsgBox") + res = xScript.invoke((prompt,buttons,title), (), ()) + return res[0] + + def InputBox(prompt: str, title='LibreOffice', defaultValue='') -> str: + """ Displays a prompt in a dialog box at which the user can enter text.""" + xScript = _getScript("_InputBox") + res = xScript.invoke((prompt,title,defaultValue), (), ()) + return res[0] + + def Print(message: str): + """Outputs the specified strings or numeric expressions in a dialog box.""" + xScript = _getScript("_Print") + xScript.invoke((message,), (), ()) + + import uno + from com.sun.star.script.provider import XScript + def _getScript(script: str, library='Standard', module='uiScripts') -> XScript: + sm = uno.getComponentContext().ServiceManager + mspf = sm.createInstanceWithContext("com.sun.star.script.provider.MasterScriptProviderFactory", uno.getComponentContext()) + scriptPro = mspf.createScriptProvider("") + scriptName = "vnd.sun.star.script:"+library+"."+module+"."+script+"?language=Basic&location=application" + xScript = scriptPro.getScript(scriptName) + return xScript + +

uiScripts Basic module

+ + Option Explicit + Private Function _MsgBox( prompt As String, Optional buttons As Integer, _ + Optional title As String ) As Integer + _MsgBox = MsgBox( prompt, buttons, title ) + End Function + Private Function _InputBox( prompt As String, Optional title As String, _ + Optional default As String) As String + _InputBox = InputBox( prompt, title, default ) + End Function + Private Sub _Print( msg As String ) + Print msg + End Sub + +
+ + + + + +
+ +
-- cgit v1.2.3