-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSBrowser.py
More file actions
109 lines (85 loc) · 3.71 KB
/
Copy pathSBrowser.py
File metadata and controls
109 lines (85 loc) · 3.71 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
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWebEngineWidgets import *
import darkdetect
from TabBar import TabBar
import re
startPage = "https://www.google.com/"
iconTheme = "" if darkdetect.isLight() else "_dark"
def checkIfUrl(text) -> bool:
if re.search("[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)", text):
return True
return False
class SBrowser(QMainWindow):
tabs = 0
def __init__(self) -> None:
tabs = 1
super().__init__()
self.window = QWidget()
self.window.setWindowTitle("SBrowser")
self.layout = QVBoxLayout()
self.toolbar = QHBoxLayout()
self.toolbar.setSpacing(1)
self.tabBar = TabBar(self)
self.tabBar.addTab("Hompage")
self.urlBar = QLineEdit()
self.urlBar.setMinimumHeight(30)
self.urlBar.setPlaceholderText("Website Url or Search Param")
self.goButton = QPushButton("Go")
self.goButton.setMinimumHeight(30)
self.reloadButton = QPushButton()
self.reloadButton.setIcon(QIcon("assets/refresh"+iconTheme+".png"))
self.reloadButton.setIconSize(QSize(10,10))
self.reloadButton.setMinimumHeight(30)
self.backButton = QPushButton("<")
self.backButton.setMinimumHeight(30)
self.fwdButton = QPushButton(">")
self.fwdButton.setMinimumHeight(30)
self.toolbar.addWidget(self.urlBar)
self.toolbar.addWidget(self.goButton)
self.toolbar.addWidget(self.reloadButton)
self.toolbar.addWidget(self.backButton)
self.toolbar.addWidget(self.fwdButton)
self.browser = QWebEngineView()
self.browser.setUrl(QUrl(startPage))
self.browser.loadFinished.connect(self.pageFinished)
self.goButton.clicked.connect(lambda: self.navigate(self.urlBar.text()))
self.reloadButton.clicked.connect(self.browser.reload)
self.fwdButton.clicked.connect(self.browser.forward)
self.backButton.clicked.connect(self.browser.back)
self.backButton.setHidden(True)
self.fwdButton.setHidden(True)
self.layout.addLayout(self.toolbar)
self.layout.addLayout(self.tabBar)
self.layout.addWidget(self.browser)
self.layout.setSpacing(0)
self.layout.setContentsMargins(5, 0, 5, 1)
#Keyboard shortcuts
self.shortcut = QShortcut(QKeySequence("Ctrl+R"), self.window)
self.shortcut.activated.connect(self.browser.reload)
self.shortcut = QShortcut(QKeySequence("Return"), self.window)
self.shortcut.activated.connect(self.enterButton)
self.window.setLayout(self.layout)
self.window.show()
def enterButton(self):
if(self.urlBar.hasFocus):
QApplication.focusWidget().clearFocus()
self.navigate(self.urlBar.text())
def pageFinished(self):
if(startPage != self.browser.page().url().toString()):
self.urlBar.setText(self.browser.page().url().toString())
else:
self.urlBar.setText("")
self.tabBar.setActiveTabTitle(self.browser.page().title())
self.backButton.setHidden(not self.browser.history().canGoBack())
self.fwdButton.setHidden(not self.browser.history().canGoForward())
def navigate(self, url, override=False):
if((checkIfUrl(url) and not url.startswith("https")) and override == False):
url = "https://" + url
self.urlBar.setText(url)
elif not checkIfUrl(url) and override == False:
url = "https://google.com/search?q=" + url.replace(" ", "+")
self.urlBar.setText(url)
self.browser.setUrl(QUrl(url))
self.pageFinished()