mirror of https://gitlab.com/pamhyr/pamhyr2
geometry: Active undo/redo shortcut.
parent
bef640168e
commit
b32a6e7fb4
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue