-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
79 lines (58 loc) · 2.22 KB
/
main.py
File metadata and controls
79 lines (58 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import PySimpleGUI as sg
import subprocess
from datetime import date
sg.theme("SystemDefault")
def pkgutil_cli(pid, command):
output = subprocess.check_output(['bash','-c', f"pkgutil {command} {pid}"])
output = str(output)
output = (output[2:][:len(output)-5].split("\\n"))
print(output)
return output
def getPackageFiles(pid):
return pkgutil_cli(pid, "--files")
def getPackageInfo(pid):
output = pkgutil_cli(pid, "--pkg-info")
result = []
for item in output:
key, value = item.split(":")
if(key == "install-time"):
result.append(f"Installed date: {date.fromtimestamp(int(value))}")
continue
result.append(item)
return result
last_package = ""
def ListPackageWindow():
global last_package
output = pkgutil_cli("", "--pkgs")
menu_def = [['File', ['Open', 'Save', 'Exit',]],
['Edit', ['Paste', ['Special', 'Normal',], 'Undo'],],
['Help', 'About...'],]
layout = [
[sg.Menu(menu_def)],
[
sg.Listbox(values=output, size=(55, 30), right_click_menu = ['&Right', ['Right', '!&Click', '&Menu', 'E&xit', 'Properties']], key="pak_listbox"),
sg.Button("files >> ", key="show_files"),
sg.Listbox(values=[], size=(55, 30), key='file_listbox')
],
[ sg.Listbox(values=[], size=(121, 7), key="pak_info")]
]
window = sg.Window("pkgutil - list package", layout, font=("SF Pro", 16), margins=(16, 16))
while True:
event, values = window.read()
print(event, values)
selected_package = values['pak_listbox']
print(len(selected_package))
package = values['pak_listbox'][0]
if(event=="show_files"):
if(last_package == package):
continue
last_package = package
if(len(selected_package) == 0):
sg.Popup("No package selected")
continue
window.Element('file_listbox').Update(values=getPackageFiles(package))
window.Element('pak_info').Update(values=getPackageInfo(package))
if(event == "Exit" or event == sg.WIN_CLOSED):
break
if __name__ == "__main__":
ListPackageWindow()