-
Notifications
You must be signed in to change notification settings - Fork 0
/
browser.py
108 lines (90 loc) · 3.94 KB
/
browser.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
import os
import sys
try:
from PyQt5.uic import loadUi
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView, QWebEnginePage as QWebPage
except ImportError as e:
with open(os.getcwd()+"/log.txt", "w") as file:
file.write(os.popen(f"pip install -r {os.getcwd()}/requirements.txt").read())
try:
from PyQt5.uic import loadUi
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView, QWebEnginePage as QWebPage
except ImportError as e:
print("[EXCEPTION] Something has gone wrong. Please provide requirements.txt before running again.")
exit
class window(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
loadUi(os.getcwd()+"\\sample.ui", self)
self.tabs = []
self.webViews = []
self.insertTab()
self.updateUrl()
self.tabWidget.currentChanged.connect(self.updateUrl)
self.webViews[self.tabWidget.currentIndex()].urlChanged.connect(self.updateUrl)
self.webViews[self.tabWidget.currentIndex()].loadFinished.connect(self.updateUrl)
self.btBack.clicked.connect(self.back)
self.btForward.clicked.connect(self.forward)
self.btReload.clicked.connect(self.reload)
self.btHome.clicked.connect(self.home)
self.txUrl.returnPressed.connect(self.goUrl)
self.btGoUrl.clicked.connect(self.goUrl)
self.btInsert.clicked.connect(self.insertTab)
self.btDelete.clicked.connect(self.deleteTab)
def home(self):
self.webViews[self.tabWidget.currentIndex()].setUrl(QtCore.QUrl("https://www.google.com"))
self.updateUrl()
def reload(self):
self.webViews[self.tabWidget.currentIndex()].reload()
self.updateUrl()
def forward(self):
self.webViews[self.tabWidget.currentIndex()].forward()
def back(self):
self.webViews[self.tabWidget.currentIndex()].back()
def goUrl(self):
url = str(self.txUrl.text())
# print(url.startswith("https://"))
if url.count(".") == 0:
url = "https://www.google.com/search?q=" + url
if url.startswith("https://") is not True: url = "https://" + url
self.webViews[self.tabWidget.currentIndex()].setUrl(QtCore.QUrl(url))
def updateUrl(self):
print(self.tabWidget.currentIndex())
url = self.webViews[self.tabWidget.currentIndex()].url().toString()
self.txUrl.setText(url)
name = self.webViews[self.tabWidget.currentIndex()].title()
if name=="":
name = "Loading..."
self.tabWidget.setTabText(self.tabWidget.currentIndex(), name)
def insertTab(self):
self.tabs.append(QtWidgets.QWidget())
self.webViews.append(QWebView(self.tabs[-1]))
self.webViews[-1].setGeometry(QtWidgets.QDesktopWidget().screenGeometry())
self.webViews[-1].setUrl(QtCore.QUrl("https://www.google.com/"))
self.tabWidget.addTab(self.tabs[-1], "www.google.com")
self.arangeGeometry()
self.btDelete.setText(str(len(self.tabs)))
self.tabWidget.setCurrentIndex(len(self.tabs) - 1)
def deleteTab(self):
if len(self.tabs) > 1:
self.tabs.pop(self.tabWidget.currentIndex())
self.webViews.pop(self.tabWidget.currentIndex())
self.tabWidget.removeTab(self.tabWidget.currentIndex())
self.btDelete.setText(str(len(self.tabs)))
else:
self.btDelete.setText("!")
def arangeGeometry(self):
size = self.size()
# print(size)
for i in range(len(self.webViews)):
self.webViews[i].resize(size)
def resizeEvent(self, event: QtGui.QResizeEvent) -> None:
self.arangeGeometry()
def app():
app=QtWidgets.QApplication(sys.argv)
win=window()
win.show()
sys.exit(app.exec_())
app()