cmd/PGUI.pyw
Ethan Dalool efd64fc16d Launch the lnk file itself instead of pulling out path.
I guess I'm not sure why I ever wrote it to pull out the exe path
instead of just calling the lnk directly. The purpose of this change
is to maintain other attributes about the lnk such as custom icon
which will appear on the taskbar, and compatibility settings.
2020-12-23 20:07:01 -08:00

75 lines
2.1 KiB
Python

from tkinter import Button as tButton
from tkinter import Tk, BOTH
from tkinter.ttk import Frame, Style, Button
import os
import subprocess
import sys
from voussoirkit import pathclass
def load_programs():
directory = os.path.join(os.path.dirname(__file__), 'PGUI')
shortcuts = [os.path.join(directory, p) for p in os.listdir(directory)]
shortcuts = [p for p in shortcuts if p.lower().endswith('.lnk')]
shortcuts = [pathclass.Path(p) for p in shortcuts]
return shortcuts
class PGUILauncher(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.style = Style()
self.style.theme_use("clam")
self.pack(fill=BOTH, expand = 1)
x = 0
y = 0
self.buttonwidth = 12
shortcuts = load_programs()
for (index, shortcut) in enumerate(shortcuts):
print(y, x)
newButton = Button(
self,
text=shortcut.replace_extension('').basename,
command=lambda sc=shortcut: self.launch_program(sc),
)
print(f'Creating button for {shortcut.basename}')
newButton.configure(width=self.buttonwidth)
newButton.grid(row=y, column=x)
x += 1
if x >= 3 and (index != len(shortcuts)-1):
x = 0
y += 1
print(y, x)
self.pack()
self.update()
def launch_program(self, shortcut):
print('opening application', shortcut.basename)
os.chdir(shortcut.parent.absolute_path)
command = f'"{shortcut.absolute_path}"'
subprocess.Popen(command, shell=True)
self.quit()
def main(argv):
root = Tk()
root.title("PGUI")
root.resizable(0,0)
ex = PGUILauncher(root)
width = root.winfo_reqwidth()
height = root.winfo_reqheight()
x_offset = (root.winfo_screenwidth() - width) / 2
y_offset = (root.winfo_screenheight() - height) / 2
root.geometry('%dx%d+%d+%d' % (width, height, x_offset, y_offset-50))
root.mainloop()
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))