Commit b32a6e7f authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

geometry: Active undo/redo shortcut.

Showing with 36 additions and 16 deletions
+36 -16
......@@ -9,12 +9,16 @@ import time
from tools import timer
from PyQt5 import QtWidgets
from PyQt5.QtGui import (
QKeySequence,
)
from PyQt5.QtCore import (
QModelIndex, Qt, QSettings, pyqtSlot,
QItemSelectionModel, QCoreApplication, QSize
)
from PyQt5.QtWidgets import (
QApplication, QMainWindow, QFileDialog, QCheckBox
QApplication, QMainWindow, QFileDialog, QCheckBox,
QUndoStack, QShortcut,
)
from View.Geometry.PlotXY import PlotXY
......@@ -29,8 +33,6 @@ from View.ASubWindow import WindowToolKit
_translate = QCoreApplication.translate
class GeometryWindow(QMainWindow, WindowToolKit):
def __init__(self, model=None, parent=None):
self.parent = parent
......@@ -48,19 +50,26 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self._tablemodel = None
self.setup_window()
self.setup_undo()
self.setup_model()
self.setup_plots()
# self.setup_undo()
self.setup_connections()
self.changed_slider_value()
def setup_window(self):
self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}")
def setup_undo(self):
self._undo_stack = QUndoStack()
self.undo_sc = QShortcut(QKeySequence.Undo, self)
self.redo_sc = QShortcut(QKeySequence.Redo, self)
def setup_model(self):
self._tablemodel = qtableview_reach.PandasModelEditable(
headers = self.ui.tableView_header,
reach = self._reach
reach = self._reach,
undo = self._undo_stack
)
self.tableView.setModel(self._tablemodel)
self.tableView.setItemDelegate(qtableview_reach.Delegate())
......@@ -71,12 +80,6 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.plot_kpc()
self.plot_ac()
# def setup_undo(self):
# self.undoAction = self.undoStack.createUndoAction(self, self.tr("&Undo"))
# self.undoAction.setShortcuts(QKeySequence.Undo)
# self.redoAction = self.undoStack.createRedoAction(self, self.tr("&Redo"))
# self.redoAction.setShortcuts(QKeySequence.Redo)
def setup_connections(self):
self.ui.btn_open.clicked.connect(self.open_file_dialog)
self.ui.btn_sort_asc.clicked.connect(self.sort_ascending)
......@@ -93,6 +96,9 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.ui.btn_slider_down.clicked.connect(self.increment_value_slider)
self.ui.btn_move_up.clicked.connect(self.changed_profile_slot)
self.undo_sc.activated.connect(self.undo)
self.redo_sc.activated.connect(self.redo)
# Profile selection when line change in table
self.tableView.selectionModel()\
.selectionChanged\
......@@ -412,6 +418,18 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self._tablemodel.move_row_up(row)
self.select_current_profile()
def undo(self):
self._tablemodel.undo()
self.select_current_profile()
self.update_plot_xy()
self.update_plot_kpc()
def redo(self):
self._tablemodel.redo()
self.select_current_profile()
self.update_plot_xy()
self.update_plot_kpc()
def handleSave(self):
options = QFileDialog.Options()
DEFAULT_DIRECTORY = '/home/'
......
......@@ -41,7 +41,7 @@ class AddCommand(QUndoCommand):
self._index = index
def undo(self):
self._reach.delete([self._index])
self._reach.delete(self._index)
def redo(self):
self._reach.insert(self._index)
......
......@@ -9,7 +9,10 @@ import numpy as np
import pandas as pd
from PyQt5 import (
QtGui, QtWidgets
QtGui, QtWidgets,
)
from PyQt5.QtGui import (
QKeySequence,
)
from PyQt5.QtCore import (
Qt, QAbstractTableModel, QModelIndex,
......@@ -27,12 +30,11 @@ _translate = QCoreApplication.translate
class PandasModelEditable(QAbstractTableModel):
def __init__(self, reach, headers=None):
def __init__(self, reach, headers=None, undo=None):
QAbstractTableModel.__init__(self)
data_list = []
self._undo_stack = QUndoStack()
self._undo_stack = undo
self._reach = reach
if headers is None:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment