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()