def populateMenu(self): """Populate the app's main menu""" _ = self.g.translator self.setWindowTitle(_(u'Pokédex')) self.menuBar().clear() fileMenu = self.menuBar().addMenu(_(u"&Pokédex")) icon = QtGui.QIcon(resource_filename('qdex', 'icons/star.png')) self.addMenuItem(fileMenu, _(u'&About…'), self.about, icon=icon) fileMenu.addSeparator() icon = QtGui.QIcon(resource_filename('qdex', 'icons/cross-button.png')) self.addMenuItem(fileMenu, _('&Exit'), QtGui.QApplication.exit, icon=icon) self.settingsMenu = self.menuBar().addMenu(_(u"Settings")) self.uilangMenu = self.settingsMenu.addMenu(_(u"Program &Language")) self.uilangMenu.aboutToShow.connect(self.fillUilangMenu) self.gamelangMenu = self.settingsMenu.addMenu(_(u"Game &Language")) self.gamelangMenu.aboutToShow.connect(self.fillGamelangMenu)
def __init__(self, g, model=None): super(MetaModel, self).__init__() self.g = g self.g.registerRetranslate(self.retranslated) if model is None: defaultfile = open(resource_filename('qdex', 'metamodel.yaml')) model = yaml.load(defaultfile) self.root = MetamodelItem.load(model, g=g) # XXX: Only have one category of lists now; show a flat list self.root = self.root.children[0]
def _scope(lang): language = query.filter_by(identifier=lang).one() icon = os.path.join('flags', language.iso3166 + '.png') icon = QtGui.QIcon(resource_filename('qdex', icon)) try: name = language.name_map[language] except KeyError: name = self.g.name(language) def _retranslate(): self.g.langs = [lang] self.addMenuItem(self.uilangMenu, name, _retranslate, icon=icon, checkable=True, checked=self.g.langs[0] == language.identifier, )
def _scope(language): def _retranslate(): self.g.session.expunge_all() self.g.session.default_language_id = language.id self.g.langs = self.g.langs self.retranslate.emit() name = self.g.name(language) icon = os.path.join('flags', language.iso3166 + '.png') icon = QtGui.QIcon(resource_filename('qdex', icon)) self.addMenuItem(self.gamelangMenu, name, _retranslate, icon=icon, checkable=True, checked=self.g.session.default_language_id == language.id, )
def __init__(self, name, icon=None, children=(), g=None, model=None): self.parent = None self.icon = icon if isinstance(icon, basestring): self._icon = QtGui.QIcon(icon) elif isinstance(icon, list): self._icon = QtGui.QIcon(resource_filename(*icon)) else: #raise AssertionError("Can't set icon directly") self._icon = icon self.name = name self.g = g self.children = [MetamodelItem.load(child, g=g) for child in children] if model: self.model = TableModel.load(model, g=g) for child in self.children: child.parent = self
def _scope(language): def _retranslate(): self.g.session.expunge_all() self.g.session.default_language_id = language.id self.g.langs = self.g.langs self.retranslate.emit() name = self.g.name(language) icon = os.path.join('flags', language.iso3166 + '.png') icon = QtGui.QIcon(resource_filename('qdex', icon)) self.addMenuItem( self.gamelangMenu, name, _retranslate, icon=icon, checkable=True, checked=self.g.session.default_language_id == language.id, )
def _scope(lang): language = query.filter_by(identifier=lang).one() icon = os.path.join('flags', language.iso3166 + '.png') icon = QtGui.QIcon(resource_filename('qdex', icon)) try: name = language.name_map[language] except KeyError: name = self.g.name(language) def _retranslate(): self.g.langs = [lang] self.addMenuItem( self.uilangMenu, name, _retranslate, icon=icon, checkable=True, checked=self.g.langs[0] == language.identifier, )
def __init__(self, **globalArgs): super(MainWindow, self).__init__() self.g = Global(mainwindow=self, **globalArgs) self.g.registerRetranslate(self.retranslateUi) icon = resource_filename('pokedex-media', 'items/poke-ball.png') self.setWindowIcon(QtGui.QIcon(icon)) splitter = QtGui.QSplitter(self) self.setCentralWidget(splitter) metaview = MetaModelView(self) metaview.setModel(MetaModel(self.g)) splitter.addWidget(metaview) self.mainlistview = QueryView() splitter.addWidget(self.mainlistview) metaview.selectionModel().currentChanged.connect(lambda index: metaview.model().setModelOnView(index, self.mainlistview) ) metaview.selectionModel().select( metaview.model().defaultIndex(), QtGui.QItemSelectionModel.ClearAndSelect, ) self.resize(800, 600) # XXX: The min-size resizing should be done with default data shown, # and custom collapsed metaview.resizeColumnToContents(0) metaview.setMinimumWidth(metaview.columnWidth(0)) splitter.setStretchFactor(0, 0) splitter.setStretchFactor(1, 1) splitter.setCollapsible(1, False) splitter.setSizes([1, 1]) splitter.setCollapsible(0, True) self.retranslateUi()
def __init__(self, **globalArgs): super(MainWindow, self).__init__() self.g = Global(mainwindow=self, **globalArgs) self.g.registerRetranslate(self.retranslateUi) icon = resource_filename('pokedex-media', 'items/poke-ball.png') self.setWindowIcon(QtGui.QIcon(icon)) splitter = QtGui.QSplitter(self) self.setCentralWidget(splitter) metaview = MetaModelView(self) metaview.setModel(MetaModel(self.g)) splitter.addWidget(metaview) self.mainlistview = QueryView() splitter.addWidget(self.mainlistview) metaview.selectionModel().currentChanged.connect( lambda index: metaview.model().setModelOnView( index, self.mainlistview)) metaview.selectionModel().select( metaview.model().defaultIndex(), QtGui.QItemSelectionModel.ClearAndSelect, ) self.resize(800, 600) # XXX: The min-size resizing should be done with default data shown, # and custom collapsed metaview.resizeColumnToContents(0) metaview.setMinimumWidth(metaview.columnWidth(0)) splitter.setStretchFactor(0, 0) splitter.setStretchFactor(1, 1) splitter.setCollapsible(1, False) splitter.setSizes([1, 1]) splitter.setCollapsible(0, True) self.retranslateUi()
def about(self): """Create and show the About box """ _ = self.g.translator about = QtGui.QDialog(self) about.setWindowTitle(_(u"About Pokédex")) layout = QtGui.QGridLayout(about) labels = [] expanding = QtGui.QSizePolicy( QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.MinimumExpanding, ) iconArgs = [] for i, thing in enumerate(( ('pokedex-media', u'items/poke-ball.png'), _(u'''<strong>Pokédex 0.1</strong> <br> by Petr “En-Cu-Kou” Viktorin <<a href="*****@*****.**">[email protected]</a>> <br> Provided under the open-source MIT license'''), ('pokedex-media', u'pokemon/icons/133.png'), _(u'''Data from the veekun database: see <a href="http://veekun.com">http://veekun.com</a> <br> Thanks to Eevee, Zhorken, magical and everyone else who contributed'''), ('qdex', u'icons/palette.png'), _(u'''Fugue icon set by Yusuke Kamiyamane <<a href="http://p.yusukekamiyamane.com" >http://p.yusukekamiyamane.com</a>> <br> Used under the <a href="http://creativecommons.org/licenses/by/3.0" >Creative Commons Attribution 3.0 license</a>'''), ('qdex', u'icons/globe.png'), _(u'''Flag icons from <a href="http://www.famfamfam.com/lab/icons/flags/" >famfamfam.com</a> by Mark James'''), ('qdex', u'icons/auction-hammer--exclamation.png'), _(u'''Pokémon and everything related to them is intellectual property of Nintendo, Creatures, inc., and GAME FREAK, inc. and is protected by various copyrights and trademarks. The author believes that the use of this intellectual property for a fan reference is covered by fair use and that the software is significantly impaired without said property included. Any use of this copyrighted property is at your own legal risk.'''), )): try: package, path = thing except (ValueError, TypeError): label = QtGui.QLabel( ' '.join(thing.split()), textInteractionFlags=Qt.LinksAccessibleByMouse |Qt.TextSelectableByMouse, sizePolicy=expanding, wordWrap=len(thing) > 300, ) layout.addWidget(label, i, 1) labels.append(label) iconArgs[-1][3] += 1 else: if i: layout.setRowStretch(i, 1) filename = resource_filename(package, path) iconArgs.append([ QtGui.QLabel( pixmap=QtGui.QPixmap(filename), alignment=Qt.AlignVCenter|Qt.AlignHCenter, ), i + 1, 0, 0, 1 ]) for args in iconArgs: layout.addWidget(*args) layout.setRowStretch(i + 1, 1) buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok) buttonBox.accepted.connect(about.accept) layout.addWidget(buttonBox, i + 2, 0, 1, 2) about.exec_()
def about(self): """Create and show the About box """ _ = self.g.translator about = QtGui.QDialog(self) about.setWindowTitle(_(u"About Pokédex")) layout = QtGui.QGridLayout(about) labels = [] expanding = QtGui.QSizePolicy( QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.MinimumExpanding, ) iconArgs = [] for i, thing in enumerate(( ('pokedex-media', u'items/poke-ball.png'), _(u'''<strong>Pokédex 0.1</strong> <br> by Petr “En-Cu-Kou” Viktorin <<a href="*****@*****.**">[email protected]</a>> <br> Provided under the open-source MIT license'''), ('pokedex-media', u'pokemon/icons/133.png'), _(u'''Data from the veekun database: see <a href="http://veekun.com">http://veekun.com</a> <br> Thanks to Eevee, Zhorken, magical and everyone else who contributed'''), ('qdex', u'icons/palette.png'), _(u'''Fugue icon set by Yusuke Kamiyamane <<a href="http://p.yusukekamiyamane.com" >http://p.yusukekamiyamane.com</a>> <br> Used under the <a href="http://creativecommons.org/licenses/by/3.0" >Creative Commons Attribution 3.0 license</a>'''), ('qdex', u'icons/globe.png'), _(u'''Flag icons from <a href="http://www.famfamfam.com/lab/icons/flags/" >famfamfam.com</a> by Mark James'''), ('qdex', u'icons/auction-hammer--exclamation.png'), _(u'''Pokémon and everything related to them is intellectual property of Nintendo, Creatures, inc., and GAME FREAK, inc. and is protected by various copyrights and trademarks. The author believes that the use of this intellectual property for a fan reference is covered by fair use and that the software is significantly impaired without said property included. Any use of this copyrighted property is at your own legal risk.'''), )): try: package, path = thing except (ValueError, TypeError): label = QtGui.QLabel( ' '.join(thing.split()), textInteractionFlags=Qt.LinksAccessibleByMouse | Qt.TextSelectableByMouse, sizePolicy=expanding, wordWrap=len(thing) > 300, ) layout.addWidget(label, i, 1) labels.append(label) iconArgs[-1][3] += 1 else: if i: layout.setRowStretch(i, 1) filename = resource_filename(package, path) iconArgs.append([ QtGui.QLabel( pixmap=QtGui.QPixmap(filename), alignment=Qt.AlignVCenter | Qt.AlignHCenter, ), i + 1, 0, 0, 1 ]) for args in iconArgs: layout.addWidget(*args) layout.setRowStretch(i + 1, 1) buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok) buttonBox.accepted.connect(about.accept) layout.addWidget(buttonBox, i + 2, 0, 1, 2) about.exec_()