Threading lock for browser window list

This commit is contained in:
Fierelier 2021-03-20 18:40:34 +01:00
parent f3425dd93f
commit 990cf8efb1
1 changed files with 13 additions and 5 deletions

View File

@ -28,9 +28,9 @@ import configparser
import json
import time
import html
browserWindows = []
import threading
os.chdir(sp)
distro = os.path.splitext(s.rsplit(os.path.sep)[-1])[0]
version = {
"major": 0,
@ -41,6 +41,9 @@ version = {
versionString = ".".join(map(str,[version["major"],version["minor"]]))
versionStringExt = ".".join(map(str,[version["major"],version["minor"],version["patch"]])) + " " + version["stage"]
browserWindows = []
browserWindowsLock = threading.Lock()
def runCode(str, lcs = False, description = "loose-code"):
if lcs == False: lcs = {}
code = compile(str,description,"exec")
@ -131,8 +134,10 @@ class browserWindow(QMainWindow):
self.cResizeElements()
def closeEvent(self,event):
browserWindowsLock.acquire()
browserWindows.remove(self)
event.accept()
self.destroy()
browserWindowsLock.release()
def cNavigate(self,event = None):
try:
@ -140,7 +145,7 @@ class browserWindow(QMainWindow):
self.cStatusBar.showMessage("Downloading...")
self.update()
start = time.time()
response = downloadPage(self.cUrlBar.text(),{"User-Agent": self.cUserAgent})
response = downloadPage(self.cUrlBar.text(),[("User-Agent",self.cUserAgent)])
self.cUrlBar.setText(response["url"])
end = time.time()
print("Downloading page: " +str(end - start))
@ -160,13 +165,14 @@ class browserWindow(QMainWindow):
#print(prettyJson(response["headers"]))
except Exception as e:
self.cDoc.cRenderHtml(html.escape(str(e)))
self.cDoc.cRenderHtml(str(e))
raise
def cNewWindow(self):
w = browserWindow()
browserWindowsLock.acquire()
browserWindows.append(w)
w.show()
browserWindowsLock.release()
def main():
# load program default addons
@ -198,7 +204,9 @@ def main():
app.setWindowIcon(QtGui.QIcon("assets/BirdyNet-XP.ico"))
except Exception as e:
print("Could not set window icon: " +print(e))
browserWindowsLock.acquire()
browserWindows.append(browserWindow())
browserWindowsLock.release()
sys.exit(app.exec_())