From d6c43d341cb6960975a3a3ed36c137a1ea8d9eea Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Sun, 28 Jan 2024 23:54:02 +0100 Subject: [PATCH] add open current file dir extension --- .../open_currentfile_dir/meta.json | 20 ++++++++++ .../open_currentfile_dir.inx | 14 +++++++ .../open_currentfile_dir.py | 38 +++++++++++++++++++ .../meta.json | 8 ++-- .../open_extensions_dir.inx} | 4 +- .../open_extensions_dir.py} | 0 6 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 extensions/fablabchemnitz/open_currentfile_dir/meta.json create mode 100644 extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.inx create mode 100644 extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.py rename extensions/fablabchemnitz/{open_dir => open_extensions_dir}/meta.json (79%) rename extensions/fablabchemnitz/{open_dir/open_dir.inx => open_extensions_dir/open_extensions_dir.inx} (69%) rename extensions/fablabchemnitz/{open_dir/open_dir.py => open_extensions_dir/open_extensions_dir.py} (100%) diff --git a/extensions/fablabchemnitz/open_currentfile_dir/meta.json b/extensions/fablabchemnitz/open_currentfile_dir/meta.json new file mode 100644 index 0000000..de1e582 --- /dev/null +++ b/extensions/fablabchemnitz/open_currentfile_dir/meta.json @@ -0,0 +1,20 @@ +[ + { + "name": "Open Current File Directory", + "id": "fablabchemnitz.de.open_currentfile_dir", + "path": "open_currentfile_dir", + "dependent_extensions": null, + "original_name": "Open Current File Directory", + "original_id": "fablabchemnitz.de.open_currentfile_dir", + "license": "GNU GPL v3", + "license_url": "https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.2/src/branch/master/LICENSE", + "comment": "Written by Mario Voigt", + "source_url": "https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.2/src/branch/master/extensions/fablabchemnitz/open_currentfile_dir", + "fork_url": null, + "documentation_url": "https://stadtfabrikanten.org/display/IFM/Open+Extension+Directory", + "inkscape_gallery_url": null, + "contributors": [ + "github.com/eridur-de" + ] + } +] \ No newline at end of file diff --git a/extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.inx b/extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.inx new file mode 100644 index 0000000..a5c5636 --- /dev/null +++ b/extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.inx @@ -0,0 +1,14 @@ + + + Open Current File Directory + fablabchemnitz.de.open_currentfile_dir + + all + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.py b/extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.py new file mode 100644 index 0000000..46b1e7b --- /dev/null +++ b/extensions/fablabchemnitz/open_currentfile_dir/open_currentfile_dir.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import subprocess +import os +import sys +import warnings +import inkex + +DETACHED_PROCESS = 0x00000008 + +class OpenCurrentFileDirectory(inkex.EffectExtension): + + def spawnIndependentProcess(self, args): + warnings.simplefilter('ignore', ResourceWarning) #suppress "enable tracemalloc to get the object allocation traceback" + if os.name == 'nt': + subprocess.Popen(args, close_fds=True, creationflags=DETACHED_PROCESS) + else: + subprocess.Popen(args, start_new_session=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + warnings.simplefilter("default", ResourceWarning) + + def effect(self): + dir = os.path.dirname(self.document_path()) + if dir == '': + inkex.utils.debug("Please save the document first!") + if os.name == 'nt': + explorer = "explorer" + else: + explorer = "xdg-open" + + args = [explorer, dir] + try: + self.spawnIndependentProcess(args) + except FileNotFoundError as e: + inkex.utils.debug(e) + exit(1) + +if __name__ == '__main__': + OpenCurrentFileDirectory().run() \ No newline at end of file diff --git a/extensions/fablabchemnitz/open_dir/meta.json b/extensions/fablabchemnitz/open_extensions_dir/meta.json similarity index 79% rename from extensions/fablabchemnitz/open_dir/meta.json rename to extensions/fablabchemnitz/open_extensions_dir/meta.json index 923994b..e6da2f6 100644 --- a/extensions/fablabchemnitz/open_dir/meta.json +++ b/extensions/fablabchemnitz/open_extensions_dir/meta.json @@ -1,15 +1,15 @@ [ { "name": "Open Extension Directory", - "id": "fablabchemnitz.de.open_dir", - "path": "open_dir", + "id": "fablabchemnitz.de.open_extensions_dir", + "path": "open_extensions_dir", "dependent_extensions": null, "original_name": "Open Extension Directory", - "original_id": "fablabchemnitz.de.open_dir", + "original_id": "fablabchemnitz.de.open_extensions_dir", "license": "GNU GPL v3", "license_url": "https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.2/src/branch/master/LICENSE", "comment": "Written by Mario Voigt", - "source_url": "https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.2/src/branch/master/extensions/fablabchemnitz/open_dir", + "source_url": "https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.2/src/branch/master/extensions/fablabchemnitz/open_extensions_dir", "fork_url": null, "documentation_url": "https://stadtfabrikanten.org/display/IFM/Open+Extension+Directory", "inkscape_gallery_url": null, diff --git a/extensions/fablabchemnitz/open_dir/open_dir.inx b/extensions/fablabchemnitz/open_extensions_dir/open_extensions_dir.inx similarity index 69% rename from extensions/fablabchemnitz/open_dir/open_dir.inx rename to extensions/fablabchemnitz/open_extensions_dir/open_extensions_dir.inx index f596de7..a661ef6 100644 --- a/extensions/fablabchemnitz/open_dir/open_dir.inx +++ b/extensions/fablabchemnitz/open_extensions_dir/open_extensions_dir.inx @@ -1,7 +1,7 @@ Open Extension Directory - fablabchemnitz.de.open_dir + fablabchemnitz.de.open_extensions_dir all @@ -9,6 +9,6 @@ \ No newline at end of file diff --git a/extensions/fablabchemnitz/open_dir/open_dir.py b/extensions/fablabchemnitz/open_extensions_dir/open_extensions_dir.py similarity index 100% rename from extensions/fablabchemnitz/open_dir/open_dir.py rename to extensions/fablabchemnitz/open_extensions_dir/open_extensions_dir.py