-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
119 lines (94 loc) · 3.43 KB
/
main.py
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import sys, os
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
# sudo apt-get install python3-pyqt5.qtsvg
# pip3 install pyqtdarktheme --break-system-packages
import qdarktheme
# import screens here
from camera import CameraScreen
from settings import SettingsScreen
from wallet import WalletScreen
from wifi import WifiScreen
from gallery import GalleryScreen
from settings import SettingsOptions
import arweave
wallet_path = "wallet.json"
class WalletLoadWorker(QThread):
wallet_loaded = pyqtSignal(dict)
def __init__(self):
super().__init__()
def run(self):
try:
wallet = arweave.Wallet(wallet_path)
self.wallet_loaded.emit({"ok": True, "wallet": wallet})
except Exception as e:
print(e)
self.wallet_loaded.emit({"ok": False, "wallet": None})
class MainScreen(QWidget):
def __init__(self):
super().__init__()
SettingsOptions.load()
self.setWindowTitle("Clickoor")
self.setFixedSize(640, 480)
self.showFullScreen()
if SettingsOptions.display_orientation == "flipped":
os.system("xrandr -o right")
os.system("wlr-randr --output DSI-1 --transform 270")
else:
os.system("xrandr -o left")
os.system("wlr-randr --output DSI-1 --transform 90")
tabs = QTabWidget(self)
tabs.setTabPosition(QTabWidget.TabPosition.North)
tabs.setFixedSize(640, 480)
tabs.setIconSize(QSize(45, 45))
tabs.showFullScreen()
tabs.setStyleSheet("background-color:black;font-size:11pt;")
self.tabs_list = [
CameraScreen("Camera", "assets/shutter.png"),
GalleryScreen("Gallery", "assets/gallery.png"),
WifiScreen("Wifi", "assets/wifi.png"),
WalletScreen("AR Wallet", "assets/wallet.png"),
SettingsScreen("Settings", "assets/settings.png"),
]
for tab in self.tabs_list:
tabs.addTab(tab, tab.icon, tab.name)
tabs.currentChanged.connect(self.tab_changed)
self.load_wallet()
def tab_changed(self, i):
tab = self.tabs_list[i]
if tab.name == "Camera":
tab.camera.start()
else:
# make sure the first widget is always the camera one
self.tabs_list[0].camera.stop()
if tab.name == "Gallery":
tab.active_screen = True
tab.goto_start()
else:
# tab.active_screen = False
self.tabs_list[1].active_screen = False
if tab.name == "AR Wallet":
tab.start_server()
else:
self.tabs_list[3].stop_server()
def load_wallet(self):
self.wallet_load_worker = WalletLoadWorker()
self.wallet_load_worker.wallet_loaded.connect(self.wallet_loaded)
self.wallet_load_worker.start()
def wallet_loaded(self, d):
if d["ok"]:
self.wallet = d["wallet"]
# self.status.setText("Wallet Loaded")
self.tabs_list[0].set_wallet(self.wallet) # camera
self.tabs_list[1].set_wallet(self.wallet) # gallery
self.tabs_list[3].set_wallet(self.wallet) # wallet
else:
self.wallet = None
# self.status.setText("Wallet Load Failed")
if __name__ == "__main__":
app = QApplication(sys.argv)
qdarktheme.setup_theme()
window = MainScreen()
window.show()
app.exec()