def buildWidget(self): """Create the widget and populate it.""" # Create enclosing widget and UI self._widget = QWidget() self._ui = Ui_CreateTableDialog() self._ui.setupUi(self._widget) self.setModels() # Connect some slots self._ui.createTableButton.clicked.connect(self.createTable) self._ui.closeWindowButton.clicked.connect(self.closeWindow) self._ui.addWaveButton.clicked.connect(self.addWaveToTable) self._ui.removeWaveButton.clicked.connect(self.removeWaveFromTable)
class CreateTableDialog(Module): """Module to display the Create Table dialog window.""" def __init__(self): Module.__init__(self) def buildWidget(self): """Create the widget and populate it.""" # Create enclosing widget and UI self._widget = QWidget() self._ui = Ui_CreateTableDialog() self._ui.setupUi(self._widget) self.setModels() # Connect some slots self._ui.createTableButton.clicked.connect(self.createTable) self._ui.closeWindowButton.clicked.connect(self.closeWindow) self._ui.addWaveButton.clicked.connect(self.addWaveToTable) self._ui.removeWaveButton.clicked.connect(self.removeWaveFromTable) def setModels(self): # Set up model and view self._allWavesListModel = self._app.model('appWaves') self._ui.allWavesListView.setModel(self._allWavesListModel) self._tableWavesListModel = WavesListModel([]) self._ui.tableWavesListView.setModel(self._tableWavesListModel) def closeWindow(self): self.resetForm() self._widget.parent().close() def addWaveToTable(self): selectedIndexes = self._ui.allWavesListView.selectedIndexes() for index in selectedIndexes: self._tableWavesListModel.appendRow(self._allWavesListModel.waveNameByRow(index.row())) def removeWaveFromTable(self): selectedIndexes = self._ui.tableWavesListView.selectedIndexes() selectedRows = map(lambda x:x.row(), selectedIndexes) selectedRows.sort() selectedRows.reverse() for row in selectedRows: self._tableWavesListModel.removeRow(row) def createTable(self): """ Create the table. """ tableName = Util.getWidgetValue(self._ui.tableName) waves = self._tableWavesListModel.waves() if len(waves) == 0: warningMessage = QMessageBox() warningMessage.setWindowTitle("Problem!") warningMessage.setText("You must select at least one wave in order to create a table.") warningMessage.setIcon(QMessageBox.Critical) warningMessage.setStandardButtons(QMessageBox.Ok) warningMessage.setDefaultButton(QMessageBox.Ok) result = warningMessage.exec_() return False names = map(Wave.getName, waves) self._app.createTable(waves, tableName) self.closeWindow() return True def resetForm(self): Util.setWidgetValue(self._ui.tableName, "Table") self._allWavesListModel.doReset() self._tableWavesListModel.removeAllWaves() self._tableWavesListModel.doReset() def load(self): self.window = SubWindow(self._app.ui.workspace) self.menuEntry = QAction(self._app) self.menuEntry.setObjectName("actionNewTableDialog") self.menuEntry.setShortcut("Ctrl+T") self.menuEntry.setText("New Table") self.menuEntry.triggered.connect(self.window.show) self.menu = vars(self._app.ui)["menuNew"] self.menu.addAction(self.menuEntry) self.buildWidget() self.window.setWidget(self._widget) self._widget.setParent(self.window) self.window.hide() def unload(self): # Disconnect some slots self.menuEntry.triggered.disconnect() self._widget.deleteLater() self.window.deleteLater() self.menu.removeAction(self.menuEntry) def reload(self): self.setModels() self.resetForm()