def __init__(self, parent=None): super().__init__(parent) self.undo_stack = QUndoStack() self.statusBar() self.view = Ui_MainWindow() self.view.setupUi(self) self.view.tableView.setSortingEnabled(False) self.view.tableView.setItemDelegate(ItemDelegate(self.undo_stack, self.set_undo_redo_text)) self.filename = None self.table_model = CSVTableModel(self, datalist=[], header=[]) self.view.actionConnect.setEnabled(True) self.view.actionDisconnect.setEnabled(False) self.view.actionInsert.setEnabled(False) self.view.actionReceive.setEnabled(False) self.view.actionCalculate_Predictions.setEnabled(False) self.view.actionAbout_Qt.triggered.connect(self.about_qt) self.view.actionAbout.triggered.connect(self.about) self.view.actionConnect.triggered.connect(self.connect) self.view.actionDisconnect.triggered.connect(self.disconnect) self.view.actionInsert.triggered.connect(self.insert) self.view.actionReceive.triggered.connect(self.receive) self.view.actionCalculate_Predictions.triggered.connect(self.calculate_predictions) self.view.actionUndo.triggered.connect(self.undo) self.view.actionRedo.triggered.connect(self.redo) self.view.actionCopy.triggered.connect(self.copy) self.view.actionPaste.triggered.connect(self.paste) self.view.actionInsert_Row_s.triggered.connect(self.insert_rows) self.view.actionDuplicate_Row_s.triggered.connect(self.duplicate_rows) self.view.actionRemove_Row_s.triggered.connect(self.remove_rows) self.view.actionNew.triggered.connect(self.new) self.view.actionOpen.triggered.connect(self.open) self.view.actionSave.triggered.connect(self.save) self.view.actionSave_as.triggered.connect(self.save_as) self.db = None
pixmap, icon = resources_cache[filename] b = QToolButton() b.setIcon(icon) b.setIconSize(pixmap.rect().size()) b.setMaximumWidth(pixmap.rect().width()) # 6 if name: b.setObjectName(name) return b from PySide.QtGui import QStyledItemDelegate from PySide.QtGui import QUndoCommand, QUndoStack, QLineEdit undo_stack = QUndoStack() class UndoProxyEdit(QUndoCommand): def __init__(self, old_value, new_value, proxy_model, index): super(UndoProxyEdit, self).__init__() self._old_value, self._new_value, self._proxy_model, self._index = old_value, new_value, proxy_model, index self.setText("Undo") def undo(self): mainlog.info("Undo") self._proxy_model.setData(self._index, self._old_value) def redo(self): mainlog.info("Redo")