def __init__(self, parent=None): super(type(self),self).__init__(parent) self.setupUi(self) #initialize model self.cardsfile = CardsFile() self.whiteModel = WhiteCardList(self.cardsfile) self.whiteList.setModel(self.whiteModel) self.blackModel = BlackCardList(self.cardsfile) self.blackList.setModel(self.blackModel) #connect signals self.addWhiteBtn.clicked.connect(self.addWhiteCard) self.removeWhiteBtn.clicked.connect(self.remWhiteCard) self.addBlackBtn.clicked.connect(self.addBlackCard) self.removeBlackBtn.clicked.connect(self.remBlackCard) self.actionNew.triggered.connect(self.menuNew) self.actionOpen.triggered.connect(self.menuOpen) self.actionSave.triggered.connect(self.menuSave) self.actionSaveAs.triggered.connect(self.menuSaveAs) self.actionPrintPreview.triggered.connect(self.menuPrintPreview) self.actionExportPDF.triggered.connect(self.menuExportPDF) self.actionExportFO.triggered.connect(self.menuExportFO) self.actionAbout.triggered.connect(self.menuAbout) #set item delegate, so blackList uses a combobox for the first column combodelegate = ComboBoxDelegate( QStringListModel(['auto','1','2','3']) ) self.blackList.setItemDelegate(combodelegate)
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(type(self),self).__init__(parent) self.setupUi(self) #initialize model self.cardsfile = CardsFile() self.whiteModel = WhiteCardList(self.cardsfile) self.whiteList.setModel(self.whiteModel) self.blackModel = BlackCardList(self.cardsfile) self.blackList.setModel(self.blackModel) #connect signals self.addWhiteBtn.clicked.connect(self.addWhiteCard) self.removeWhiteBtn.clicked.connect(self.remWhiteCard) self.addBlackBtn.clicked.connect(self.addBlackCard) self.removeBlackBtn.clicked.connect(self.remBlackCard) self.actionNew.triggered.connect(self.menuNew) self.actionOpen.triggered.connect(self.menuOpen) self.actionSave.triggered.connect(self.menuSave) self.actionSaveAs.triggered.connect(self.menuSaveAs) self.actionPrintPreview.triggered.connect(self.menuPrintPreview) self.actionExportPDF.triggered.connect(self.menuExportPDF) self.actionExportFO.triggered.connect(self.menuExportFO) self.actionAbout.triggered.connect(self.menuAbout) #set item delegate, so blackList uses a combobox for the first column combodelegate = ComboBoxDelegate( QStringListModel(['auto','1','2','3']) ) self.blackList.setItemDelegate(combodelegate) def menuAbout(self): aboutDlg = AboutDialog(self) aboutDlg.show() aboutDlg.raise_() def addWhiteCard(self): pass #TODO def remWhiteCard(self): pass #TODO def addBlackCard(self): pass #TODO def remBlackCard(self): pass #TODO def menuNew(self): pass #TODO def menuOpen(self): docs_dir = QDesktopServices.storageLocation(QDesktopServices.StandardLocation.) fileName = QFileDialog.getOpenFileName(self, 'Open Cards Against Humanity File', \ docs_dir, 'Cards Against Humanity File (*.cah, *.xml)')[0] if fileName is None: return self.cardsfile.filename = fileName self.cardsfile.importXML(fileName) #reload models self.whiteList.setModel(None) self.blackList.setModel(None) self.whiteList.setModel(self.whiteModel) self.blackList.setModel(self.blackModel) def menuSave(self): self.blackModel.submit() self.whiteModel.submit() if self.cardsfile.filename is not None: self.cardsfile.save() else: self.menuSaveAs() def menuSaveAs(self): self.blackModel.submit() self.whiteModel.submit() self.cardsfile.filename = QFileDialog.getSaveFileName(self, 'Save Cards Against Humanity File', \ self.cardsfile.filename, 'Cards Against Humanity File (*.cah, *.xml)')[0] self.cardsfile.save() def menuExportPDF(self): if self.cardsfile.filename is not None: dirname = os.path.dirname(self.cardsfile.filename) else: dirname = None fileName = QFileDialog.getSaveFileName(self, 'Export PDF File', dirname, 'Portable Document Format (*.pdf)')[0] if fileName is None: return self.cardsfile.exportToPDF(fileName) def menuExportFO(self): if self.cardsfile.filename is not None: dirname = os.path.dirname(self.cardsfile.filename) else: dirname = None if fileName is None: return fileName = QFileDialog.getSaveFileName(self, 'Export XSL Formatting Objects File', dirname, 'XSL Formatting Objects File (*.fo, *.xml)')[0] self.cardsfile.exportToFO(fileName) def menuPrintPreview(self): self.cardsfile.printPreview()