[Libreoffice-commits] core.git: wizards/source

Jean-Pierre Ledure (via logerrit) logerrit at kemper.freedesktop.org
Fri May 21 16:14:17 UTC 2021


 wizards/source/scriptforge/python/scriptforge.py |    3 +++
 1 file changed, 3 insertions(+)

New commits:
commit 4cb73b7a5792b6c8fabacc1e29d67e9f254144e8
Author:     Jean-Pierre Ledure <jp at ledure.be>
AuthorDate: Fri May 21 15:54:10 2021 +0200
Commit:     Jean-Pierre Ledure <jp at ledure.be>
CommitDate: Fri May 21 18:13:32 2021 +0200

    ScriptForge - (scriptforge.py) FIX stdout redirection in PythonShell()
    
    Previous behavior:
      After a PythonShell() statement that opened the APSO shell console,
      subsequent print() statements executed in the same macro
      run were not displayed in the console.
      They were only from a next macro run.
    
    Solution:
      Force a brief suspension of the Python process by inserting
      a call to a Basic routine (IPC) immediately after the launch
      of the shell console.
    
    Result: The redirection of STDOUT and STDERR happens normally inside
      the APSO code, as expected.
    Change-Id: Ifbf267a898d45a97c346f0f3ea824edd4e6045ff
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115930
    Tested-by: Jean-Pierre Ledure <jp at ledure.be>
    Tested-by: Jenkins
    Reviewed-by: Jean-Pierre Ledure <jp at ledure.be>

diff --git a/wizards/source/scriptforge/python/scriptforge.py b/wizards/source/scriptforge/python/scriptforge.py
index 359db7a42ec1..bb8635936ed5 100644
--- a/wizards/source/scriptforge/python/scriptforge.py
+++ b/wizards/source/scriptforge/python/scriptforge.py
@@ -942,6 +942,9 @@ class SFScriptForge:
                 kwargs = {'loc': variables}
                 kwargs['loc'].setdefault('XSCRIPTCONTEXT', uno)
                 console(**kwargs)
+                # An interprocess call is necessary to allow a redirection of STDOUT and STDERR by APSO
+                #   Choice is a minimalist call to a Basic routine: no arguments, a few lines of code
+                SFScriptForge.SF_Basic.GetGuiType()
             else:
                 # The APSO extension could not be located in your LibreOffice installation
                 cls._RaiseFatal('SF_Exception.PythonShell', 'variables=None', 'PYTHONSHELLERROR')


More information about the Libreoffice-commits mailing list