From f24088a991e812be1ad6cdacd53a141a2d400c93 Mon Sep 17 00:00:00 2001 From: cidoku Date: Sun, 8 Feb 2026 22:04:30 -0300 Subject: [PATCH] improve tabs + disconnection in main menu --- AO2XP.py | 16 ++++++++-------- mainmenu.py | 24 +++++++++++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/AO2XP.py b/AO2XP.py index cf6ecf8..c11896d 100644 --- a/AO2XP.py +++ b/AO2XP.py @@ -25,10 +25,6 @@ app = QtGui.QApplication(sys.argv) path = sys.argv[0] demofile = None -# Experimental. No setting for this yet. -tabsEnabled = False -tabAmount = 2 - if len(sys.argv) > 1: demofile = sys.argv[-1] if not exists(demofile): @@ -55,13 +51,17 @@ class MainWindow(QtGui.QMainWindow): self.gameWidget = None self.currentTab = 0 - if tabsEnabled: + # Experimental. No setting for this yet. + self.tabsEnabled = False + self.tabAmount = 2 + + if self.tabsEnabled: self.gameTabs = QtGui.QTabWidget(self) self.gameTabs.currentChanged.connect(self.currentTabChanged) self.widgetStackList = [] self.gameWidgetList = [] self.menuWidgetList = [] - for i in range(tabAmount): + for i in range(self.tabAmount): print "[debug] Added instance", i self.widgetStackList.append(QtGui.QStackedWidget(self)) self.gameWidgetList.append(gameview.GUI(self)) @@ -143,7 +143,7 @@ class MainWindow(QtGui.QMainWindow): self.gameWidget = self.gameWidgetList[self.currentTab] def setFixedSize(self, w, h, initial = False): - if tabsEnabled: + if self.tabsEnabled: if initial: super(MainWindow, self).setFixedSize(w + 4, h + self.gameTabs.tabBar().height()) return @@ -156,7 +156,7 @@ class MainWindow(QtGui.QMainWindow): super(MainWindow, self).setFixedSize(w, h) def aboutToQuit(self): - if tabsEnabled: + if self.tabsEnabled: for widget in self.gameWidgetList: widget.exitCommon() else: diff --git a/mainmenu.py b/mainmenu.py index e8d3714..931998e 100644 --- a/mainmenu.py +++ b/mainmenu.py @@ -166,7 +166,7 @@ class Lobby(QtGui.QWidget): self.aoserverinfo.returnToLobby.connect(self.onClickedCancelconnect) self.aoserverinfo.setConnectProgress.connect(self.connectprogress.setText) self.aoserverinfo.readySoon.connect(self.connectcancel.hide) - self.aoserverinfo.setWindowTitle.connect(self.mainWindow.setWindowTitle) + self.aoserverinfo.setWindowTitle.connect(self.setTitle) self.aoserverinfo.canConnect.connect(self.setCanConnect) self.masterserver = MasterServer() @@ -175,7 +175,7 @@ class Lobby(QtGui.QWidget): self.masterserver.msgboxSignal.connect(self.showMessageBox) self.masterserver.start() - if not demo and self.autoconnect: + if not demo and self.autoconnect and not self.mainWindow.tabsEnabled: self.aoserverinfo.setIP(self.autoconnect[-1], self.autoconnect[0], self.autoconnect[1], self.autoconnect[2], self.autoconnect[3]) print '[debug]', 'Connecting automatically to ip: ' + self.autoconnect[0] + ', port: ' + str(self.autoconnect[1]) + ", websocket port: " + str(self.autoconnect[2]) + ", secure websocket port: " + str(self.autoconnect[3]) self.aoserverinfo.stop() @@ -299,6 +299,8 @@ class Lobby(QtGui.QWidget): self.serverinfo.show() self.btnSettings.show() self.btnDemo.show() + self.aoserverinfo.stop() + self.canConnect = False def onClickedServerlist(self, item): self.svclicked = item @@ -334,6 +336,13 @@ class Lobby(QtGui.QWidget): return QtGui.QMessageBox.question(self, title, message) elif type == 3: #warning return QtGui.QMessageBox.warning(self, title, message) + + def setTitle(self, title): + if self.mainWindow.tabsEnabled: + self.mainWindow.gameTabs.setTabText(self.mainWindow.currentTab, title) + else: + self.mainWindow.setWindowTitle("AO2XP: " + title) + class MasterServer(QtCore.QThread): gotServers = QtCore.pyqtSignal(list) @@ -386,8 +395,10 @@ class AOServerInfo(QtCore.QThread): def stop(self): self.disconnect = True if self.isRunning(): - self.terminate() - self.wait() + if self.tcp: + self.tcp.close() + self.tcp = None + self.quit() def run(self): self.disconnect = False @@ -423,8 +434,7 @@ class AOServerInfo(QtCore.QThread): while True: if self.disconnect: - try: self.tcp.close() - except: pass + self.tcp.close() return pingtimer -= 1 @@ -443,7 +453,7 @@ class AOServerInfo(QtCore.QThread): self.returnToLobby.emit() return - self.setWindowTitle.emit("AO2XP: "+self.name) + self.setWindowTitle.emit(self.name) return error, totals = self.tcp.recv()