70 Commits
Author SHA1 Message Date
Andrea Gelmini ac2c1efd43 Fix typos in code and comments.
Change-Id: Ic36a34d51e781d1122fd3fa05834401d9ee4d9e2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210053
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-27 20:41:03 +02:00
Andrea Gelmini 1dd550023c Fix typos: code + comments
Change-Id: I9b997720c5212a9413a78f15e139549f0345895c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209992
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-08-26 09:11:46 +02:00
Neil Roberts 25458311e0 pythonscript: Implement the XCopyableBrowseNode interface
Implements the XCopyableBrowseNode interface on the Python script
provider.

Change-Id: I17c6916567518fd9f28d11724def4a0d98f53ed9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207737
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-07-15 09:09:36 +02:00
Neil Roberts e0fb7f2466 tdf#172532 pythonscript: Use new concrete interfaces for optional methods
Instead of using XInvocation and XPropertySet to expose the optional
create and edit methods, the script provider for Python now uses the new
concrete interfaces XCreatableBrowseNode and XEditableBrowseNode.

Change-Id: Ic5944f2ade291598bac6f39411e86b351ffb0082
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207345
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Tested-by: Jenkins
2026-07-15 09:06:29 +02:00
Neil Roberts 04381ba830 tdf#171671 pythonscript: Unquote the URL when generating library name
Otherwise for example if the filename has spaces in it then these will
appear as “%20” in the macro organiser.

Change-Id: I2da91d5aeb08962c9175219ab75ee7cb9d7277f1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203304
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-04-08 11:39:58 +02:00
Neil Roberts 6b037fe8e6 tdf#56289 pythonscript: Make file dir browse nodes "Creatable"
If a DirBrowseNode points to a file:/// URI then the Creatable property
will now be True. When the Creatable action is invoked it will create a
file with the chosen name and insert an example macro into it.

Change-Id: Ib63da6a2a075ea7c2cf7dcda464b5f61aee53041
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202853
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-04-08 09:16:46 +02:00
Neil Roberts 35ad1a73cb tdf#56289 pythonscript: Implement edit action by invoking default app
This implements the Editable invoke action on ScriptBrowseNode and
FileBrowseNode using a shared mixin class so that when the user selects
a file or a macro in the dialog for organising macros the edit button
will be clickable. When clicked the default app for .py files will be
opened.

On Windows it seems that installing a Python interpreter makes that the
default application for Python files. In order to avoid just running the
script instead of editing it, the code tries to determine what program
is the default by calling AssocQueryString via ctypes. If it looks like
a Python interpreter the python file will be opened with notepad
instead. Otherwise the document is opened with the “open” verb via
os.startfile.

On all other platforms the file is opened with SystemShellExecute. On my
Mac this ends up opening it in XCode. On my default Fedora install this
ends up opening the script in gedit which is probably quite a good
default. Hopefully there are no distros that default to executing Python
scripts when passed to xdg-open.

For some reason SystemShellExecute doesn’t seem to do anything on
Windows which is why os.startfile is used instead.

Change-Id: If37ee13aea0200cd6b20230bd92a77aa6a0d3273
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202852
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-04-08 09:16:21 +02:00
Neil Roberts d65717d72d pythonscript: Pass on XPropertySet and XInvocation to dirBrowseNode
Adds an implementation of XInvocation and XPropertySet to
PythonScriptProvider that just passes on all the methods to the wrapped
dirBrowseNode. If we don’t do this then the root browser nodes can’t
report that they are Editable or Creatable.

Change-Id: I2ddab92910ab0cb34866246844669c63b2f66671
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202851
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-04-08 09:16:09 +02:00
Neil Roberts 34aecf9078 pythonscript: Convert the source code to bytes before running from editor
The ensureSourceState function assumes the source code is a bytes object
but the editor was passing it the result of calling getText on the
editor control directly, which is a str object. This was making it throw
an exception.

Change-Id: Id96b22c2b43667cd4b4b245cfeff5a6d2cca6fc5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202744
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Tested-by: Jenkins
2026-04-08 09:15:49 +02:00
Mike Kaganski 65276d9a6d Use XVndSunStarExpandUrl::expand directly, instead of re-implementing it
Similar to commit efd69fbd84 (Use
XVndSunStarExpandUrl::expand directly, instead of re-implementing it,
2025-11-16).

Change-Id: I4857b9172308a660d5a0d20b414d991f394864af
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194072
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2025-11-17 04:32:34 +01:00
Chenxiong Qi 478583be4c Don't treat __pycache__ dir as a DirBrowseNode
Signed-off-by: Chenxiong Qi <qcxhome@gmail.com>
Change-Id: Ie1026fc5f34adb307773ef15ff8e79d035adac0f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190404
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
2025-10-23 21:16:23 +02:00
Bogdan Buzea a2569900d7 tdf#158803 E402 Module level import not at top of file
Change-Id: Id2a1d7715ba7c7094c39949afc6fe7b03a445cba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186114
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2025-06-10 09:00:16 +02:00
Xisco Fauli 75649dbc8d scripting: remove obsolete commented out code
Since
commit 6af846d0a1
Author: Michael Stahl <mstahl@redhat.com>
Date:   Sun Nov 25 16:03:47 2012 +0100

    scripting: pythonscript.py: adapt to Python 3

Change-Id: I7b39f3b3c098ec3a07ee95bd3ca706d0fd0c9671
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183704
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2025-04-04 14:18:18 +02:00
Chenxiong Qi b0ed190986 Format pythonloader.py and pythonscript.py
The goal is to make the script more readable. The format is done with
command:

    black --line-length 120 <filename>

No manual modification to these files.

Change-Id: I8ebbac936924277308fc011b20cba60849fa9c45
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179438
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
2024-12-29 15:22:47 +01:00
Barry-Thomas-Paul: Moss c8c66eb20d Updated getPackageName2PathMap
Update getPackageName2PathMap to use ExtensionManager

Change-Id: I22c00aeb27913f138da00d304b9f238787459d28
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174877
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-11-03 18:31:14 +01:00
Ilmari Lauhakangas 817164a9de scripting: fix issues found by Ruff linter
Change-Id: I104f1b1e1d907fbd01feeb37e3fc69ee3e2fc121
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171332
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2024-08-01 08:14:35 +02:00
LeSasse 9f4e04b258 tdf#158803 remove unused imports
Change-Id: Id3e4434294386e0ca2a0971cf7e30aeface7b665
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165384
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-28 08:46:23 +01:00
Mike Kaganski 12896c9ed6 tdf#153571: properly unquote (URL-decode) vnd.sun.star.expand payload
Similar to what is done in bootstrap_expandUri, expandUnoRcUrl,
UrlReference::expand, JavaLoader.expand_url, and is documented
in XVndSunStarExpandUrl interface.

Change-Id: I65349b52734f212e6a04e615d39fa2563f62d472
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146840
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-02-12 23:55:08 +00:00
Noel Grandin b5fcdc3c07 fix python 3.8 deprecation warnings
the logo changes were caused by

> Support of nested sets and set operations as in Unicode Technical Standard
> #18 might be added in the future. This would change the syntax, so to facilitate
> this change a FutureWarning will be raised in ambiguous cases for the time being.
> That includes sets starting with a literal '[' or containing literal character
> sequences '--', '&&', '~~', and '||'.
> To avoid a warning escape them with a backslash.


Change-Id: I4d48be3df2eaadf03a9d1f5750c0c94b3abbf674
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94191
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-14 14:30:56 +02:00
Michael Stahl c4fa6efa67 pyuno,*: kill Python 2 support with fire
Python 2 support was retained for use with --enable-python=system
on RHEL7 and SLES.  The time has arrived to remove it.

Some .py files that were imported from third parties are not changed to
enable easier replacement with updated versions if necessary.

solenv/gdb should continue to support Python 2.

bin/get-bugzilla-attachments-by-mimetype requires Python 2 to access
Launchpad.

Change-Id: I26414ae8e9f8402c90336af82020135685694217
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91697
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
2020-04-09 16:43:34 +02:00
Stephan Bergmann c79efeb66f Improve check for absolute URI
Change-Id: I4dee44832107f72f8f3fb68554428dc1e646c346
Reviewed-on: https://gerrit.libreoffice.org/77706
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-19 12:47:59 +02:00
Caolán McNamara 9a97a26511 member 'Context' of struct type 'uno.Exception' not given a value
Change-Id: Ie80f729e5c1dbf3214f9532dcb935b239bac7997
Reviewed-on: https://gerrit.libreoffice.org/77566
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-08-16 13:05:52 +02:00
Caolán McNamara 700c8ec978 AttributeError on getMessage
Change-Id: If0bd315fe605b850ec397eb2267b08ad8039355c
Reviewed-on: https://gerrit.libreoffice.org/77565
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-08-16 13:04:52 +02:00
Caolán McNamara 3c076e54f7 an absolute uri is invalid input
Change-Id: I392be4282be8ed67e3451b28d2c9f22acd4c87fc
Reviewed-on: https://gerrit.libreoffice.org/77564
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-16 12:20:03 +02:00
Caolán McNamara 87959e5dee construct final url from parsed output
Change-Id: Ifd733625a439685ad307603eb2b00bf463eb9ca9
Reviewed-on: https://gerrit.libreoffice.org/77373
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-13 10:10:56 +02:00
Stephan Bergmann c30da2b46b keep name percent-encoded
Change-Id: I470c4b24192c3e3c9b556a9bbb3b084359e0033b
Reviewed-on: https://gerrit.libreoffice.org/76892
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-08-06 12:25:00 +02:00
Caolán McNamara 87d36feab5 keep pyuno script processing below base uri
Change-Id: Icc13fb7193fb1e7c50e0df286161a10b4ed636c7
Reviewed-on: https://gerrit.libreoffice.org/61957
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Jenkins
2018-10-19 16:29:43 +02:00
Andrea Gelmini d633e80334 Fix typos
Change-Id: Id7d66c06e18dbccd5c85ba36143bdb6cee7a5197
Reviewed-on: https://gerrit.libreoffice.org/53564
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2018-05-05 09:22:04 +02:00
Laurent Godard 3d97c9d292 tdf#117202 more pythonic and allow spaces as argument
space argument must be encapsulated in double-quotes
that will be stripped

Change-Id: I0387cc7f3fcb4cc48c5a94afcd481306bb4644e2
Reviewed-on: https://gerrit.libreoffice.org/53453
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2018-04-27 09:09:13 +02:00
Laurent Godard aa45e2745f tdf#117202 - parse function name to get arguments
they are then aggregated to the other and passed to the function

Change-Id: I158a747de9c22d50716fc066074a593b4928d6bf
Reviewed-on: https://gerrit.libreoffice.org/53424
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2018-04-25 01:36:02 +02:00
Tor Lillqvist 8329f4541e Fix class name in debug message
Change-Id: I171e74a34273ddf969e49260fec487dd8cf2fb12
Reviewed-on: https://gerrit.libreoffice.org/51981
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-03-28 11:22:11 +02:00
Tor Lillqvist e25b905106 Bin some dead code
We defined the same function member in the class PythonScriptProvider
twice. The first one was some accidental leftover surely.

Change-Id: I10eebab7084af790a9263176f01f7817fa5124ff
Reviewed-on: https://gerrit.libreoffice.org/51965
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-03-27 20:52:06 +02:00
Werner Tietz 7ef4733641 tdf#92007 python scripts with tuple-assignments fails on access from GUI
Change-Id: Ice1d7d92cec56751cb26cbb31a5995ab30895125
Reviewed-on: https://gerrit.libreoffice.org/36399
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2017-04-12 17:33:12 +02:00
Andrea Gelmini 47a9523f3f Fix typos + some German translations
Change-Id: I1c5bb725ffdf72363279436ad9bbb88064228253
Reviewed-on: https://gerrit.libreoffice.org/35406
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2017-03-19 10:05:45 +00:00
Michael Stahl aa70294ffc normalize existing emacs/vim mode-lines in python files
Bunch of these were setting C++ or Make modes and icky tabs...

Also, reportedly Emacs can figure out to enable python-mode
automatically.

Change-Id: I50072488fb92cb4d27aa3f74f717a28ae3967543
2016-10-26 22:16:08 +02:00
Caolán McNamara adb9cbff1f python macros aren't listed under scripting organize
since...

commit deb989dd6d
Author: Kenneth Koski <mechaxl@gmail.com>
Date:   Mon Feb 29 22:22:10 2016 -0600

blew away the uno.ByteSequence(str) path

Change-Id: I8b73883c4f246ebafd2f810ca61b19da40f833e2
2016-08-09 15:32:05 +01:00
Andrea Gelmini 64d624b651 Fix typos
Change-Id: I9a5940027423ff0791fa7da0b79b617412ce6b86
Reviewed-on: https://gerrit.libreoffice.org/21209
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2016-01-10 14:17:20 +00:00
Andrea Gelmini 0e5318aa75 Script: better way to detect Windows
Change-Id: I0e99443f3715cde4414d14b2fa507ecab0995c6d
Reviewed-on: https://gerrit.libreoffice.org/18937
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2015-09-30 06:56:42 +00:00
Michael Stahl e557b160fd pyuno, scripting: remove executable bits from python, js, bsh files
Change-Id: Id108693d84fbca7764614e126ee1b3b045baec17
2015-03-02 13:26:28 +01:00
Stephan Bergmann 27d5b5c6dd BRAND_BIN_SUBDIR -> BRAND_INI_DIR, to cater for new Mac OS X layout
Change-Id: Ic367545895a25a4cf6e95fc1be2f5db9f36a221b
2014-09-17 11:45:14 +02:00
Rene Engelhard 83f4be4740 deb#719941: pythonscript.py: use open() instead of file()
Change-Id: Ib9f06b2b5629d149e932fe37312fdf5e8448c39f
2013-08-21 10:11:14 +02:00
Michael Stahl 5be1f5234b deb#719941: unbreak python script provider debug logging on Python 3
Don't mess with encoding in Logger.log, since sys.stdout.write()
accepts str (in python3) and both str/unicode (in python2) anyway.

Change-Id: Ib0339b7fd882a7654cc24c38efdaf67f519663ff
2013-08-20 17:18:48 +02:00
Tor Lillqvist c6a7300974 Use subfolder names from <config_folders.h>
Change all instances of hardcoded "program", "share" etc subfolder names to
use those from <config_folders.h> instead. In normal builds, the end result
will not change.

Change-Id: I91c95cd8e482818be67307e889ae6df887763f53
2013-08-18 21:11:16 +03:00
Herbert Dürr 3c57a9b8a4 Resolves: #i120083# make python loglevel and log output changeable...
through environment vars

Set the log level with the environment variable "PYSCRIPT_LOG_LEVEL"
"DEBUG" (for debugging)
"ERROR" (show errors only)
"NONE"  (or anything else) (for production) is the default
and the log output type with the enviroment variable "PYSCRIPT_LOG_STDOUT"
"0" (log output to user/Scripts/python/log.txt)
"1" (or anything else) (log output to stdout)

Patch by: Tsutomu Uchino <hanya.runo@gmail.com>
Review by: Herbert Durr <hdu@apache.org>

Note: Commit message edited by ASF infra team to work around a known issue with the
ASF svn install (not an issue with svn) and UTF-8 handling. This is a temporary
issue that we hope to resolve soon.
(cherry picked from commit 9dc7f72febe9d294304f70cc7b9cdeab1c67dc8b)

Change-Id: I099c8b3f812559c380078f63b692c83fdc811e33
2013-07-12 11:43:12 +01:00
Pedro Giffuni 7a6cc8bb59 Resolves: #i55055# Simplify pythonscript.py code
author:	hanya
(cherry picked from commit e945b49105bab50700274f797e41d1446a70641d)

Conflicts:
	scripting/source/pyprov/pythonscript.py

Change-Id: Ia019a737c5f80d3af9fc50aefcda6f5b00987513
2013-05-24 12:16:48 +01:00
Ariel Constenla-Haile b0c59c3146 Resolves: #ii118478# Implement getInvocationContext in PyUNO ScriptContext
Original author: Tsutomu Uchino <hanya.runo at gmail.com>

(cherry picked from commit 5de5fd495d7cdad852d1631941ae03ec213f93b7)

Change-Id: Iaa0aa8b1dd6a326cd738f2e296a1b5ecdc379c65
2013-05-11 12:21:27 +01:00
Lionel Elie Mamane 9830fd36db date/time IDL datatypes incompatible change
- nanosecond precision
 - signed (allowed negative) year

Also: assorted improvements / bugfixes in date/time handling code.
Some factorisation of copy/pasted code.

Change-Id: I761a1b0b8731c82f19a0c37acbcf43d3c06d6cd6
2013-04-18 21:34:46 +02:00
Miklos Vajna d1dc850cbb scripting: s/pathes/paths and s/Pathes/Paths
Change-Id: I58d8e8dc9c6a6864206d923165d075114368c866
2013-02-22 08:47:34 +01:00
Julien Nabet 7914f86713 Python: fix deprecated + "== None" instead of "is None"
Change-Id: Ic19c2ac5817cf5f6359bccda14795ec4f17aad7e
Reviewed-on: https://gerrit.libreoffice.org/1275
Reviewed-by: Tomáš Chvátal <tchvatal@suse.cz>
Tested-by: Tomáš Chvátal <tchvatal@suse.cz>
2012-12-09 19:06:55 +00:00
Stephan Bergmann 1f3496e204 Turn Python Scripting Provider from bundled extension to plain code
To avoid unnecessary confusion between the newly plain code and any instance of
the old extension still installed (per-user or shared), I renamed the UNO
implementation identifier org.openoffice.pyuno.LanguageScriptProviderForPython
to org.libreoffice.pyuno.LanguageScriptProviderForPython.  Also, existing
installations of the extension are explicitly not migrated to new user profiles.

Change-Id: Id3dd66ba5e52e0962f7ad0ccb5e4ad5b0bec97fa
2012-11-30 10:28:25 +01:00