-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
118 lines (96 loc) · 4.87 KB
/
main.py
File metadata and controls
118 lines (96 loc) · 4.87 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
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
from msg import cmdconfig, msgconfig
from dialog import CustomDialog
from browser_config import Config
from internal import pb_url
from time import sleep
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout, QWidget, QMessageBox, QDialog, QLabel,QDialogButtonBox
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl
import sys
class SimpleBrowser(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(Config.windowDimensions[0], Config.windowDimensions[1], Config.windowDimensions[2], Config.windowDimensions[3])
# Create browser widget
self.browser = QWebEngineView()
self.browser.setUrl(QUrl(Config.startingpage))
if Config.runMode.lower() == "fullscreen": self.showFullScreen()
if Config.runMode.lower() == "maximized": self.showMaximized()
if Config.runMode.lower() == "minimized": self.showMinimized()
if Config.runMode.lower() == "normal": self.showNormal()
if Config.runMode.lower() not in ['normal', 'minimized', 'maximized', 'fullscreen']:
CustomDialog.NewOkDialog("Error", msgconfig.ErrorMsg.invalidParamError)
exit(1)
# Create navigation bar
self.url_bar = QLineEdit()
self.url_bar.returnPressed.connect(self.navigateToURL)
self.url_bar.setDisabled(Config.urlBarDisabled)
if Config.showHomeButton:
self.go_btn = QPushButton(msgconfig.ButtonText.homeButton)
self.go_btn.clicked.connect(self.navigate_to_home)
if Config.showBackButton:
self.back_btn = QPushButton(msgconfig.ButtonText.backButton)
self.back_btn.clicked.connect(self.browser.back)
if Config.showForwardButton:
self.forward_btn = QPushButton(msgconfig.ButtonText.forwardButton)
self.forward_btn.clicked.connect(self.browser.forward)
if Config.showRefreshButton:
self.refresh_btn = QPushButton(msgconfig.ButtonText.refreshButton)
self.refresh_btn.clicked.connect(self.browser.reload)
# Layout for navigation bar
nav_layout = QHBoxLayout()
if Config.showBackButton: nav_layout.addWidget(self.back_btn)
if Config.showForwardButton: nav_layout.addWidget(self.forward_btn)
if Config.showRefreshButton: nav_layout.addWidget(self.refresh_btn)
nav_layout.addWidget(self.url_bar)
if Config.showHomeButton: nav_layout.addWidget(self.go_btn)
# Main layout
main_layout = QVBoxLayout()
main_layout.addLayout(nav_layout)
main_layout.addWidget(self.browser)
# Main widget
container = QWidget()
container.setLayout(main_layout)
self.setCentralWidget(container)
# Update URL bar when URL changes
self.browser.urlChanged.connect(self.update_url_bar)
self.browser.loadStarted.connect(self.onLoadStarted)
self.browser.loadFinished.connect(self.onLoadFinished)
def navigateToURL(self):
if self.url_bar.text().startswith("pb:") and Config.pbUrlsEnabled:
if self.url_bar.text() == "pb:exit" and Config.exitURLEnabled: exit()
elif self.url_bar.text() == "pb:exit": self.browser.setUrl(QUrl(""))
if self.url_bar.text() == "pb:about" and Config.aboutURLEnabled: pb_url.ShowAbout()
elif self.url_bar.text() == "pb:about": self.browser.setUrl(QUrl(""))
if self.url_bar.text() == "pb:policy" and Config.policyURLEnabled: pb_url.ShowPolicy()
elif self.url_bar.text() == "pb:policy": self.browser.setUrl(QUrl(""))
for url in Config.url_blocklist:
if url in self.url_bar.text():
CustomDialog.NewOkDialog(msgconfig.ErrorMsg.siteBlockedError[0], msgconfig.ErrorMsg.siteBlockedError[1])
self.url_bar.setText("")
return
if not self.url_bar.text().startswith(("https://", "http://")):
self.url_bar.setText("http://" + self.url_bar.text())
self.browser.setUrl(QUrl(self.url_bar.text()))
def navigate_to_home(self):
self.browser.setUrl(QUrl(Config.homepage))
def update_url_bar(self, q):
self.url_bar.setText(q.toString())
def onLoadStarted(self):
if Config.showRefreshButton:
self.refresh_btn.setText("Loading...")
self.refresh_btn.setDisabled(True)
else:
print("Started page loading...")
def onLoadFinished(self):
if Config.showRefreshButton:
# self.refresh_btn.setText("Finished!")
self.refresh_btn.setText("Refresh")
self.refresh_btn.setDisabled(False)
else:
print("Finished page loading!")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = SimpleBrowser()
window.show()
sys.exit(app.exec_())