def __init__(self, app): QMainWindow.__init__(self) self.options = self.parseOptions() if self.options.debug: level = DEBUG elif self.options.verbose: level = INFO else: level = ERROR setupStdoutLog(level) self.app = app self.async_response = AsyncReponse() self.pages = [] self.client = QtClient(self) self.setup() self.createWidgets()
class MainWindow(QMainWindow): def __init__(self, app): QMainWindow.__init__(self) self.options = self.parseOptions() if self.options.debug: level = DEBUG elif self.options.verbose: level = INFO else: level = ERROR setupStdoutLog(level) self.app = app self.async_response = AsyncReponse() self.pages = [] self.client = QtClient(self) self.setup() self.createWidgets() def _addPage(self, page): page.page_index = len(self.pages) self.pages.append(page) self.stacked.addWidget(page.widget) def createWidgets(self): self.stacked = QStackedWidget(self) self.game_list = GameList(self) self.create_game = CreateGame(self) self.setup_game = SetupGame(self) self.awale = Awale(self) self.mille_bornes = MilleBornes(self) self._addPage(self.game_list) self._addPage(self.create_game) self._addPage(self.setup_game) self._addPage(self.awale) self._addPage(self.mille_bornes) self.setCentralWidget(self.stacked) def parseOptions(self): parser = OptionParser(usage="%prog [options]") parser.add_option("--name", help='Player name (default: %s)' % DEFAULT_PLAYER_NAME, type="str", default=DEFAULT_PLAYER_NAME) parser.add_option("--host", help='Host name or IP (default: %s)' % DEFAULT_HOST, type="str", default=DEFAULT_HOST) parser.add_option("--port", help='Server TCP port (default: %s)' % DEFAULT_PORT, type="int", default=DEFAULT_PORT) parser.add_option("-v", "--verbose", help="Verbose mode", action="store_true", default=False) parser.add_option("--debug", help="Debug mode (don't call any service at startup)", action="store_true", default=False) parser.add_option("--create", metavar="GAME_TYPE", help="Create directly a game of type GAME_TYPE", type="str") parser.add_option("--join", metavar="GAME_ID", help="Join directly the game GAME_ID", type="int") options, arguments = parser.parse_args() if options.debug: options.verbose = True if arguments: parser.print_help() exit(1) return options def connectClient(self): self.client.connect(self.options.host, self.options.port) name = unicode(self.options.name) self.client.createPlayer(name) self.gotoGameListPage() def setup(self): self.app.setQuitOnLastWindowClosed(True) self.setWindowTitle(tr('Player %s') % self.options.name) def setActivePage(self, new_page): old_index = self.stacked.currentIndex() old_page = self.pages[old_index] old_page.exitPage() self.stacked.setCurrentIndex(new_page.page_index) new_page.enterPage() def gotoGameListPage(self): self.game_list.refresh() self.setActivePage(self.game_list) def gotoCreateGamePage(self): self.setActivePage(self.create_game) def gotoSetupGamePage(self, game): self.setup_game.init(game['id'], game['type']) self.setActivePage(self.setup_game) def gotoAwalePage(self, game_id): self.awale.init(game_id) self.setActivePage(self.awale) def gotoMilleBornesPage(self, game_id): self.mille_bornes.init(game_id) self.setActivePage(self.mille_bornes) def closeEvent(self, event): self.quit() def quit(self): self.client.quit() def infoPopup(self, text, title=None): if not title: title = tr("Information") QMessageBox.information(self, title, text) def errorPopup(self, text, title=None): if not title: title = tr("Error") QMessageBox.warning(self, title, text) def exception(self, err, title=None): text = exceptionAsUnicode(err) self.errorPopup(text, title) def main(self): create = self.options.create game_id = self.options.join if create: game = self.client.command(u'game_create', self.client.player_id, unicode(create), u'create') self.gotoSetupGamePage(game) elif game_id: game = self.client.command(u'game_info', [game_id])[0] self.client.command(u'game_join', game_id, self.client.player_id) self.gotoSetupGamePage(game) self.show()