p3lib 1.1.120__py2.py3-none-any.whl → 1.1.121__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- p3lib/ngt.py +3 -0
- p3lib/windows_app.py +83 -0
- {p3lib-1.1.120.dist-info → p3lib-1.1.121.dist-info}/METADATA +1 -1
- {p3lib-1.1.120.dist-info → p3lib-1.1.121.dist-info}/RECORD +6 -5
- {p3lib-1.1.120.dist-info → p3lib-1.1.121.dist-info}/LICENSE +0 -0
- {p3lib-1.1.120.dist-info → p3lib-1.1.121.dist-info}/WHEEL +0 -0
p3lib/ngt.py
CHANGED
p3lib/windows_app.py
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
import sys
|
2
|
+
import os
|
3
|
+
from p3lib.helper import getAbsFile
|
4
|
+
|
5
|
+
|
6
|
+
class WindowsApp():
|
7
|
+
"""@brief Responsible for adding and removing Windows app shortcuts to the desktop for launching applications on a Windows system."""
|
8
|
+
|
9
|
+
def __init__(self, uio=None):
|
10
|
+
self._uio = uio
|
11
|
+
|
12
|
+
def info(self, msg):
|
13
|
+
"""@brief Show an info level message to the user.
|
14
|
+
@param msg The msessage text."""
|
15
|
+
if self._uio:
|
16
|
+
self._uio.info(msg)
|
17
|
+
|
18
|
+
def _get_startup_file(self):
|
19
|
+
"""@return Get the abs name of the program first started."""
|
20
|
+
return os.path.abspath(sys.argv[0])
|
21
|
+
|
22
|
+
def _get_app_name(self):
|
23
|
+
"""@return The name of the running program without the .py extension."""
|
24
|
+
app_name = self._get_startup_file()
|
25
|
+
app_name = os.path.basename(app_name)
|
26
|
+
return app_name.replace(".py", "")
|
27
|
+
|
28
|
+
def _get_shortcut_folder(self):
|
29
|
+
temp_dir = os.path.join(os.getenv("TEMP"), "my_temp_shortcuts")
|
30
|
+
os.makedirs(temp_dir, exist_ok=True)
|
31
|
+
return temp_dir
|
32
|
+
|
33
|
+
def _get_shortcut(self):
|
34
|
+
package_name = self._get_app_name()
|
35
|
+
desktop = os.path.join(os.getenv("USERPROFILE"), "Desktop")
|
36
|
+
shortcut_path = os.path.join(desktop, f"{package_name}.lnk")
|
37
|
+
return shortcut_path
|
38
|
+
|
39
|
+
def create(self, icon_filename=None):
|
40
|
+
"""@brief Create a start menu item to launch a program.
|
41
|
+
@param package_name The name of the package.
|
42
|
+
@param icon_filename The name of the icon file."""
|
43
|
+
from win32com.client import Dispatch
|
44
|
+
package_name = self._get_app_name()
|
45
|
+
exe_name = f"{package_name}.exe"
|
46
|
+
|
47
|
+
# Locate the pipx-installed executable
|
48
|
+
pipx_venv_path = os.path.expanduser(f"~\\.local\\bin\\{exe_name}")
|
49
|
+
if not os.path.isfile(pipx_venv_path):
|
50
|
+
raise Exception(f"{pipx_venv_path} file not found.")
|
51
|
+
|
52
|
+
icon_path = None
|
53
|
+
if icon_filename:
|
54
|
+
icon_path = getAbsFile(icon_filename)
|
55
|
+
if icon_path:
|
56
|
+
if os.path.isfile(icon_path):
|
57
|
+
self.info(f"{icon_path} icon file found.")
|
58
|
+
else:
|
59
|
+
raise Exception(f"{icon_path} file not found.")
|
60
|
+
|
61
|
+
shortcut_path = self._get_shortcut()
|
62
|
+
|
63
|
+
# Create the shortcut
|
64
|
+
shell = Dispatch("WScript.Shell")
|
65
|
+
shortcut = shell.CreateShortcut(shortcut_path)
|
66
|
+
shortcut.TargetPath = pipx_venv_path # Path to your executable or script
|
67
|
+
shortcut.WorkingDirectory = os.path.dirname(pipx_venv_path)
|
68
|
+
shortcut.IconLocation = icon_path # Optional: Set an icon
|
69
|
+
shortcut.Save()
|
70
|
+
|
71
|
+
if not os.path.isfile(shortcut_path):
|
72
|
+
raise Exception(f"{shortcut_path} shortcut file missing after creation.")
|
73
|
+
|
74
|
+
self.info(f"{shortcut_path} shortcut created.")
|
75
|
+
|
76
|
+
def delete(self):
|
77
|
+
shortcut_path = self._get_shortcut()
|
78
|
+
|
79
|
+
if os.path.exists(shortcut_path):
|
80
|
+
os.remove(shortcut_path)
|
81
|
+
self.info(f"Removed '{shortcut_path}' shortcut.")
|
82
|
+
else:
|
83
|
+
raise Exception(f"{shortcut_path} file not found.")
|
@@ -13,12 +13,13 @@ p3lib/login.html,sha256=DADTJGuvWQ-LTO4X6SaFdqK7JMW03DAa3lRieGD0d6g,2748
|
|
13
13
|
p3lib/mqtt_rpc.py,sha256=6LmFA1kR4HSJs9eWbOJORRHNY01L_lHWjvtE2fmY8P8,10511
|
14
14
|
p3lib/netif.py,sha256=3QV5OGdHhELIf4MBj6mx5MNCtVeZ7JXoNEkeu4KzCaE,9796
|
15
15
|
p3lib/netplotly.py,sha256=PMDx-w1jtRVW6Od5u_kuKbBxNpTS_Y88mMF60puMxLM,9363
|
16
|
-
p3lib/ngt.py,sha256=
|
16
|
+
p3lib/ngt.py,sha256=v1VZXN3qylLuGe53EkK25sn3esX96dq8jlLOfhQN6Zk,43390
|
17
17
|
p3lib/pconfig.py,sha256=wGC6UJAIBksRjwKTfaw3Y6vAMkgey0QC2nhkCtqj1MQ,37738
|
18
18
|
p3lib/ssh.py,sha256=OyoAQ_h1L2RfkjTAChDrvLFfl4Fe_gBNdX5rvK-wKiw,42125
|
19
19
|
p3lib/table_plot.py,sha256=RPncwVlGUkkx5Fw0dHQedXo0TSPlTi__VrJBDzaMsuI,32116
|
20
20
|
p3lib/uio.py,sha256=Aaxc99XiE3d2f9vLjaN-bZsckoNxay5t0ujdK6PXGrw,23265
|
21
|
-
p3lib
|
22
|
-
p3lib-1.1.
|
23
|
-
p3lib-1.1.
|
24
|
-
p3lib-1.1.
|
21
|
+
p3lib/windows_app.py,sha256=cSkGDIakamxylhOYk0BHjjUQwBBhOq7sij4a7xs9v44,3057
|
22
|
+
p3lib-1.1.121.dist-info/LICENSE,sha256=igqTy5u0kVWM1n-NUZMvAlinY6lVjAXKoag0okkS8V8,1067
|
23
|
+
p3lib-1.1.121.dist-info/METADATA,sha256=AjqxekZBuCKiGmHk1RKLjJSREv-01agXV6R7XqcU2GE,1382
|
24
|
+
p3lib-1.1.121.dist-info/WHEEL,sha256=5druYqcII7zHXzX7qmN0TH895Jg3yuTtfjMgJIVBrKE,92
|
25
|
+
p3lib-1.1.121.dist-info/RECORD,,
|
File without changes
|
File without changes
|