tabs???
This commit is contained in:
parent
968ea04abe
commit
8024b3e806
140
AO2XP.py
140
AO2XP.py
@ -25,6 +25,10 @@ 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):
|
||||||
@ -40,30 +44,62 @@ if missing:
|
|||||||
QtGui.QMessageBox.critical(None, "Unable to launch game", "Couldn't find the file %s on the client folder.\nAO2XP needs this file in order to play sounds and music.\nThe file is included in the client's zip file, make sure it's in the same folder as the AO2XP exe.\n\nAdditional info:\n%s\n%s" % (missing, sys.argv, os.getcwd()))
|
QtGui.QMessageBox.critical(None, "Unable to launch game", "Couldn't find the file %s on the client folder.\nAO2XP needs this file in order to play sounds and music.\nThe file is included in the client's zip file, make sure it's in the same folder as the AO2XP exe.\n\nAdditional info:\n%s\n%s" % (missing, sys.argv, os.getcwd()))
|
||||||
os._exit(-2)
|
os._exit(-2)
|
||||||
|
|
||||||
class gamewindow(QtGui.QMainWindow):
|
class MainWindow(QtGui.QMainWindow):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(gamewindow, self).__init__()
|
super(MainWindow, self).__init__()
|
||||||
self.stackwidget = QtGui.QStackedWidget(self)
|
self.widgetStackList = None
|
||||||
|
self.gameWidgetList = None
|
||||||
|
self.menuWidgetList = None
|
||||||
|
self.gameWidget = None
|
||||||
|
self.mainMenuWidget = None
|
||||||
|
self.gameWidget = None
|
||||||
|
self.currentTab = 0
|
||||||
|
|
||||||
|
if tabsEnabled:
|
||||||
|
self.gameTabs = QtGui.QTabWidget(self)
|
||||||
|
self.gameTabs.currentChanged.connect(self.currentTabChanged)
|
||||||
|
self.widgetStackList = []
|
||||||
|
self.gameWidgetList = []
|
||||||
|
self.menuWidgetList = []
|
||||||
|
for i in range(tabAmount):
|
||||||
|
print "[debug] Added instance", i
|
||||||
|
self.widgetStackList.append(QtGui.QStackedWidget(self))
|
||||||
|
self.gameWidgetList.append(gameview.GUI(self))
|
||||||
|
self.menuWidgetList.append(mainmenu.Lobby(self, demofile))
|
||||||
|
for i, stack in enumerate(self.widgetStackList):
|
||||||
|
self.gameTabs.addTab(stack, "Game %s" % (i + 1))
|
||||||
|
stack.addWidget(self.menuWidgetList[i])
|
||||||
|
stack.addWidget(self.gameWidgetList[i])
|
||||||
|
|
||||||
|
self.gameWidgetList[i].setObjectName("AO2XPGameWidget")
|
||||||
|
stack.setCurrentWidget(self.mainMenuWidget)
|
||||||
|
self.widgetStack = self.widgetStackList[self.currentTab]
|
||||||
|
self.mainMenuWidget = self.menuWidgetList[self.currentTab]
|
||||||
|
self.gameWidget = self.gameWidgetList[self.currentTab]
|
||||||
|
self.setCentralWidget(self.gameTabs)
|
||||||
|
self.setFixedSize(self.mainMenuWidget.lobbyimg.size().width(), self.mainMenuWidget.lobbyimg.size().height(), True)
|
||||||
|
else:
|
||||||
|
self.mainMenuWidget = mainmenu.Lobby(self, demofile)
|
||||||
|
self.gameWidget = gameview.GUI(self)
|
||||||
|
self.gameWidget.setObjectName("AO2XPGameWidget")
|
||||||
|
self.widgetStack = QtGui.QStackedWidget(self)
|
||||||
|
self.widgetStack.addWidget(self.mainMenuWidget)
|
||||||
|
self.widgetStack.addWidget(self.gameWidget)
|
||||||
|
self.widgetStack.setCurrentWidget(self.mainMenuWidget)
|
||||||
|
self.setCentralWidget(self.widgetStack)
|
||||||
|
self.setFixedSize(self.mainMenuWidget.lobbyimg.size().width(), self.mainMenuWidget.lobbyimg.size().height(), True)
|
||||||
|
|
||||||
self.widget = mainmenu.lobby(self, demofile)
|
|
||||||
self.gamewidget = gameview.GUI(self)
|
|
||||||
self.stackwidget.addWidget(self.widget)
|
|
||||||
self.stackwidget.addWidget(self.gamewidget)
|
|
||||||
self.setCentralWidget(self.stackwidget)
|
|
||||||
self.stackwidget.setCurrentWidget(self.widget)
|
|
||||||
self.setFixedSize(self.widget.lobbyimg.size().width(), self.widget.lobbyimg.size().height())
|
|
||||||
self.center()
|
self.center()
|
||||||
self.setWindowTitle("AO2XP")
|
self.setWindowTitle("AO2XP")
|
||||||
self.setWindowIcon(QtGui.QIcon("AO2XP.ico"))
|
self.setWindowIcon(QtGui.QIcon("AO2XP.ico"))
|
||||||
self.setWindowFlags(QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowCloseButtonHint)
|
self.setWindowFlags(QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowCloseButtonHint)
|
||||||
|
|
||||||
self.settingsgui = options.Settings(self)
|
self.settingsWidget = options.Settings(self)
|
||||||
self.demopickergui = demo.DemoPicker(self)
|
self.demoPickerWidget = demo.DemoPicker(self)
|
||||||
self.aboutgui = self.aboutBox()
|
|
||||||
|
|
||||||
if demofile:
|
if demofile:
|
||||||
self.gamewidget.startDemo(demofile)
|
self.gameWidget.startDemo(demofile)
|
||||||
self.stackwidget.setCurrentWidget(self.gamewidget)
|
self.widgetStack.setCurrentWidget(self.gameWidget)
|
||||||
|
|
||||||
def center(self):
|
def center(self):
|
||||||
frameGm = self.frameGeometry()
|
frameGm = self.frameGeometry()
|
||||||
@ -71,38 +107,65 @@ class gamewindow(QtGui.QMainWindow):
|
|||||||
frameGm.moveCenter(centerPoint)
|
frameGm.moveCenter(centerPoint)
|
||||||
self.move(frameGm.topLeft())
|
self.move(frameGm.topLeft())
|
||||||
|
|
||||||
def showGame(self, tcp, playerList, charList, musicList, background, evidence, areas, features=[], joinOOC=[], hpList=[], webAO_bucket=""):
|
def showGame(self, gameData):
|
||||||
self.gamewidget.disconnectNow = False
|
self.gameWidget.disconnectNow = False
|
||||||
self.gamewidget.startGame(tcp, playerList, charList, musicList, background, evidence, areas, features, joinOOC, hpList, webAO_bucket)
|
self.gameWidget.startGame(*gameData)
|
||||||
self.stackwidget.setCurrentWidget(self.gamewidget)
|
self.widgetStack.setCurrentWidget(self.gameWidget)
|
||||||
|
|
||||||
def returnToMenu(self):
|
def returnToMenu(self):
|
||||||
self.gamewidget.disconnectNow = True
|
self.gameWidget.disconnectNow = True
|
||||||
self.setFixedSize(self.widget.lobbyimg.size().width(), self.widget.lobbyimg.size().height())
|
self.setFixedSize(self.mainMenuWidget.lobbyimg.size().width(), self.mainMenuWidget.lobbyimg.size().height())
|
||||||
self.widget.onClicked_cancelconnect()
|
self.mainMenuWidget.onClickedCancelconnect()
|
||||||
self.stackwidget.setCurrentWidget(self.widget)
|
self.widgetStack.setCurrentWidget(self.mainMenuWidget)
|
||||||
self.setWindowTitle("AO2XP")
|
self.setWindowTitle("AO2XP")
|
||||||
self.center()
|
self.center()
|
||||||
|
|
||||||
def showSettings(self):
|
def showSettings(self):
|
||||||
self.settingsgui.showSettings()
|
self.settingsWidget.showSettings()
|
||||||
|
|
||||||
def show_demo_picker(self):
|
def showDemoPicker(self):
|
||||||
self.demopickergui.show()
|
self.demoPickerWidget.show()
|
||||||
|
|
||||||
def aboutBox(self):
|
def showAboutBox(self):
|
||||||
box = QtGui.QMessageBox()
|
box = QtGui.QMessageBox()
|
||||||
box.setText("AO2XP %s\nRunning on %s %s %s (Python %s)\n\n2019-2025 headshot / cidoku" % (GAME_VERSION, platform.system(), platform.release(), platform.machine(), platform.python_version()))
|
box.setText("AO2XP %s\nRunning on %s %s %s (Python %s)\n\n2019-%s headshot / cidoku" % (GAME_VERSION, platform.system(), platform.release(), platform.machine(), platform.python_version(), YEAR))
|
||||||
box.setWindowTitle("About AO2XP")
|
box.setWindowTitle("About AO2XP")
|
||||||
box.setStandardButtons(QtGui.QMessageBox.Close)
|
box.setStandardButtons(QtGui.QMessageBox.Close)
|
||||||
box.setWindowIcon(QtGui.QIcon("AO2XP.ico"))
|
box.setWindowIcon(QtGui.QIcon("AO2XP.ico"))
|
||||||
box.setIconPixmap(QtGui.QPixmap(AO2XPpath + "icons/about.png"))
|
box.setIconPixmap(QtGui.QPixmap(AO2XPpath + "icons/about.png"))
|
||||||
box.button(QtGui.QMessageBox.Close).setText('Take that!')
|
box.button(QtGui.QMessageBox.Close).setText('Take that!')
|
||||||
return box
|
box.exec_()
|
||||||
|
|
||||||
|
def currentTabChanged(self):
|
||||||
|
self.currentTab = self.gameTabs.currentIndex()
|
||||||
|
self.widgetStack = self.widgetStackList[self.currentTab]
|
||||||
|
self.mainMenuWidget = self.menuWidgetList[self.currentTab]
|
||||||
|
self.gameWidget = self.gameWidgetList[self.currentTab]
|
||||||
|
|
||||||
|
def setFixedSize(self, w, h, initial = False):
|
||||||
|
if tabsEnabled:
|
||||||
|
if initial:
|
||||||
|
super(MainWindow, self).setFixedSize(w + 4, h + self.gameTabs.tabBar().height())
|
||||||
|
return
|
||||||
|
|
||||||
|
tabH = self.gameTabs.tabBar().height()
|
||||||
|
oldW = self.width() - 4
|
||||||
|
oldH = self.height() - tabH
|
||||||
|
super(MainWindow, self).setFixedSize(max(w, oldW) + 4, max(h, oldH) + tabH)
|
||||||
|
else:
|
||||||
|
super(MainWindow, self).setFixedSize(w, h)
|
||||||
|
|
||||||
|
def aboutToQuit(self):
|
||||||
|
if tabsEnabled:
|
||||||
|
for widget in self.gameWidgetList:
|
||||||
|
widget.exitCommon()
|
||||||
|
else:
|
||||||
|
self.gameWidget.exitCommon()
|
||||||
|
|
||||||
|
|
||||||
# Vanilla downloader
|
# Vanilla downloader
|
||||||
force_downloader = len(sys.argv) > 1 and sys.argv[1] == "download"
|
forceDownloader = len(sys.argv) > 1 and sys.argv[1] == "download"
|
||||||
if force_downloader or (not exists("base/background") and not exists("base/characters") and not exists("base/sounds") and not exists("base/evidence")):
|
if forceDownloader or (not exists(BASE_PATH + "background") and not exists(BASE_PATH + "characters") and not exists(BASE_PATH + "sounds") and not exists(BASE_PATH + "evidence")):
|
||||||
jm = QtGui.QMessageBox.information(None, "Warning", "You seem to be missing the included Attorney Online content.\nWould you like to download them automatically?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
|
jm = QtGui.QMessageBox.information(None, "Warning", "You seem to be missing the included Attorney Online content.\nWould you like to download them automatically?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
|
||||||
if jm == QtGui.QMessageBox.Yes:
|
if jm == QtGui.QMessageBox.Yes:
|
||||||
import basedownloader
|
import basedownloader
|
||||||
@ -112,16 +175,15 @@ if force_downloader or (not exists("base/background") and not exists("base/chara
|
|||||||
os._exit(-3)
|
os._exit(-3)
|
||||||
|
|
||||||
# AO2XP update checker
|
# AO2XP update checker
|
||||||
can_update = ini.read_ini_bool("AO2XP.ini", "General", "install updates", False) # Automatic updates are opt-in!
|
# Automatic updates are opt-in!
|
||||||
force_update = "forceupdate" in sys.argv[1:]
|
canUpdate = ini.read_ini_bool("AO2XP.ini", "General", "install updates", False)
|
||||||
if can_update or force_update:
|
forceUpdate = "forceupdate" in sys.argv[1:]
|
||||||
|
if canUpdate or forceUpdate:
|
||||||
import updater
|
import updater
|
||||||
code = updater.checkForUpdates(force_update)
|
code = updater.checkForUpdates(forceUpdate)
|
||||||
if code == 0:
|
if code == 0:
|
||||||
subprocess.Popen(["./AO2XPupdat"])
|
subprocess.Popen(["./AO2XPupdat"])
|
||||||
os._exit(0)
|
os._exit(0)
|
||||||
elif osname == "Darwin": # bundle
|
|
||||||
os.chdir(path.resourcePath()) # return to Resources folder
|
|
||||||
|
|
||||||
# This hides stupid useless QT warnings
|
# This hides stupid useless QT warnings
|
||||||
def handler(msg_type, msg_string):
|
def handler(msg_type, msg_string):
|
||||||
@ -129,9 +191,9 @@ def handler(msg_type, msg_string):
|
|||||||
QtCore.qInstallMsgHandler(handler)
|
QtCore.qInstallMsgHandler(handler)
|
||||||
|
|
||||||
audio.init()
|
audio.init()
|
||||||
game = gamewindow()
|
game = MainWindow()
|
||||||
game.show()
|
game.show()
|
||||||
app.aboutToQuit.connect(game.gamewidget.exitCommon)
|
app.aboutToQuit.connect(game.aboutToQuit)
|
||||||
returnc = app.exec_()
|
returnc = app.exec_()
|
||||||
audio.free()
|
audio.free()
|
||||||
sys.exit(returnc)
|
sys.exit(returnc)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user