improve tabs + disconnection in main menu

This commit is contained in:
cidoku 2026-02-08 22:04:30 -03:00
parent f5df806196
commit f24088a991
2 changed files with 25 additions and 15 deletions

View File

@ -25,10 +25,6 @@ app = QtGui.QApplication(sys.argv)
path = sys.argv[0] path = sys.argv[0]
demofile = None demofile = None
# Experimental. No setting for this yet.
tabsEnabled = False
tabAmount = 2
if len(sys.argv) > 1: if len(sys.argv) > 1:
demofile = sys.argv[-1] demofile = sys.argv[-1]
if not exists(demofile): if not exists(demofile):
@ -55,13 +51,17 @@ class MainWindow(QtGui.QMainWindow):
self.gameWidget = None self.gameWidget = None
self.currentTab = 0 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 = QtGui.QTabWidget(self)
self.gameTabs.currentChanged.connect(self.currentTabChanged) self.gameTabs.currentChanged.connect(self.currentTabChanged)
self.widgetStackList = [] self.widgetStackList = []
self.gameWidgetList = [] self.gameWidgetList = []
self.menuWidgetList = [] self.menuWidgetList = []
for i in range(tabAmount): for i in range(self.tabAmount):
print "[debug] Added instance", i print "[debug] Added instance", i
self.widgetStackList.append(QtGui.QStackedWidget(self)) self.widgetStackList.append(QtGui.QStackedWidget(self))
self.gameWidgetList.append(gameview.GUI(self)) self.gameWidgetList.append(gameview.GUI(self))
@ -143,7 +143,7 @@ class MainWindow(QtGui.QMainWindow):
self.gameWidget = self.gameWidgetList[self.currentTab] self.gameWidget = self.gameWidgetList[self.currentTab]
def setFixedSize(self, w, h, initial = False): def setFixedSize(self, w, h, initial = False):
if tabsEnabled: if self.tabsEnabled:
if initial: if initial:
super(MainWindow, self).setFixedSize(w + 4, h + self.gameTabs.tabBar().height()) super(MainWindow, self).setFixedSize(w + 4, h + self.gameTabs.tabBar().height())
return return
@ -156,7 +156,7 @@ class MainWindow(QtGui.QMainWindow):
super(MainWindow, self).setFixedSize(w, h) super(MainWindow, self).setFixedSize(w, h)
def aboutToQuit(self): def aboutToQuit(self):
if tabsEnabled: if self.tabsEnabled:
for widget in self.gameWidgetList: for widget in self.gameWidgetList:
widget.exitCommon() widget.exitCommon()
else: else:

View File

@ -166,7 +166,7 @@ class Lobby(QtGui.QWidget):
self.aoserverinfo.returnToLobby.connect(self.onClickedCancelconnect) self.aoserverinfo.returnToLobby.connect(self.onClickedCancelconnect)
self.aoserverinfo.setConnectProgress.connect(self.connectprogress.setText) self.aoserverinfo.setConnectProgress.connect(self.connectprogress.setText)
self.aoserverinfo.readySoon.connect(self.connectcancel.hide) 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.aoserverinfo.canConnect.connect(self.setCanConnect)
self.masterserver = MasterServer() self.masterserver = MasterServer()
@ -175,7 +175,7 @@ class Lobby(QtGui.QWidget):
self.masterserver.msgboxSignal.connect(self.showMessageBox) self.masterserver.msgboxSignal.connect(self.showMessageBox)
self.masterserver.start() 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]) 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]) 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() self.aoserverinfo.stop()
@ -299,6 +299,8 @@ class Lobby(QtGui.QWidget):
self.serverinfo.show() self.serverinfo.show()
self.btnSettings.show() self.btnSettings.show()
self.btnDemo.show() self.btnDemo.show()
self.aoserverinfo.stop()
self.canConnect = False
def onClickedServerlist(self, item): def onClickedServerlist(self, item):
self.svclicked = item self.svclicked = item
@ -334,6 +336,13 @@ class Lobby(QtGui.QWidget):
return QtGui.QMessageBox.question(self, title, message) return QtGui.QMessageBox.question(self, title, message)
elif type == 3: #warning elif type == 3: #warning
return QtGui.QMessageBox.warning(self, title, message) 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): class MasterServer(QtCore.QThread):
gotServers = QtCore.pyqtSignal(list) gotServers = QtCore.pyqtSignal(list)
@ -386,8 +395,10 @@ class AOServerInfo(QtCore.QThread):
def stop(self): def stop(self):
self.disconnect = True self.disconnect = True
if self.isRunning(): if self.isRunning():
self.terminate() if self.tcp:
self.wait() self.tcp.close()
self.tcp = None
self.quit()
def run(self): def run(self):
self.disconnect = False self.disconnect = False
@ -423,8 +434,7 @@ class AOServerInfo(QtCore.QThread):
while True: while True:
if self.disconnect: if self.disconnect:
try: self.tcp.close() self.tcp.close()
except: pass
return return
pingtimer -= 1 pingtimer -= 1
@ -443,7 +453,7 @@ class AOServerInfo(QtCore.QThread):
self.returnToLobby.emit() self.returnToLobby.emit()
return return
self.setWindowTitle.emit("AO2XP: "+self.name) self.setWindowTitle.emit(self.name)
return return
error, totals = self.tcp.recv() error, totals = self.tcp.recv()