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 tools import timer
|
||||||
|
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtWidgets
|
||||||
|
from PyQt5.QtGui import (
|
||||||
|
QKeySequence,
|
||||||
|
)
|
||||||
from PyQt5.QtCore import (
|
from PyQt5.QtCore import (
|
||||||
QModelIndex, Qt, QSettings, pyqtSlot,
|
QModelIndex, Qt, QSettings, pyqtSlot,
|
||||||
QItemSelectionModel, QCoreApplication, QSize
|
QItemSelectionModel, QCoreApplication, QSize
|
||||||
)
|
)
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QApplication, QMainWindow, QFileDialog, QCheckBox
|
QApplication, QMainWindow, QFileDialog, QCheckBox,
|
||||||
|
QUndoStack, QShortcut,
|
||||||
)
|
)
|
||||||
|
|
||||||
from View.Geometry.PlotXY import PlotXY
|
from View.Geometry.PlotXY import PlotXY
|
||||||
|
|
@ -29,8 +33,6 @@ from View.ASubWindow import WindowToolKit
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class GeometryWindow(QMainWindow, WindowToolKit):
|
class GeometryWindow(QMainWindow, WindowToolKit):
|
||||||
def __init__(self, model=None, parent=None):
|
def __init__(self, model=None, parent=None):
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
|
|
@ -48,19 +50,26 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
||||||
self._tablemodel = None
|
self._tablemodel = None
|
||||||
|
|
||||||
self.setup_window()
|
self.setup_window()
|
||||||
|
self.setup_undo()
|
||||||
self.setup_model()
|
self.setup_model()
|
||||||
self.setup_plots()
|
self.setup_plots()
|
||||||
# self.setup_undo()
|
|
||||||
self.setup_connections()
|
self.setup_connections()
|
||||||
self.changed_slider_value()
|
self.changed_slider_value()
|
||||||
|
|
||||||
def setup_window(self):
|
def setup_window(self):
|
||||||
self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}")
|
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):
|
def setup_model(self):
|
||||||
self._tablemodel = qtableview_reach.PandasModelEditable(
|
self._tablemodel = qtableview_reach.PandasModelEditable(
|
||||||
headers = self.ui.tableView_header,
|
headers = self.ui.tableView_header,
|
||||||
reach = self._reach
|
reach = self._reach,
|
||||||
|
undo = self._undo_stack
|
||||||
)
|
)
|
||||||
self.tableView.setModel(self._tablemodel)
|
self.tableView.setModel(self._tablemodel)
|
||||||
self.tableView.setItemDelegate(qtableview_reach.Delegate())
|
self.tableView.setItemDelegate(qtableview_reach.Delegate())
|
||||||
|
|
@ -71,12 +80,6 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
||||||
self.plot_kpc()
|
self.plot_kpc()
|
||||||
self.plot_ac()
|
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):
|
def setup_connections(self):
|
||||||
self.ui.btn_open.clicked.connect(self.open_file_dialog)
|
self.ui.btn_open.clicked.connect(self.open_file_dialog)
|
||||||
self.ui.btn_sort_asc.clicked.connect(self.sort_ascending)
|
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_slider_down.clicked.connect(self.increment_value_slider)
|
||||||
self.ui.btn_move_up.clicked.connect(self.changed_profile_slot)
|
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
|
# Profile selection when line change in table
|
||||||
self.tableView.selectionModel()\
|
self.tableView.selectionModel()\
|
||||||
.selectionChanged\
|
.selectionChanged\
|
||||||
|
|
@ -412,6 +418,18 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
||||||
self._tablemodel.move_row_up(row)
|
self._tablemodel.move_row_up(row)
|
||||||
self.select_current_profile()
|
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):
|
def handleSave(self):
|
||||||
options = QFileDialog.Options()
|
options = QFileDialog.Options()
|
||||||
DEFAULT_DIRECTORY = '/home/'
|
DEFAULT_DIRECTORY = '/home/'
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ class AddCommand(QUndoCommand):
|
||||||
self._index = index
|
self._index = index
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._reach.delete([self._index])
|
self._reach.delete(self._index)
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._reach.insert(self._index)
|
self._reach.insert(self._index)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,10 @@ import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
from PyQt5 import (
|
from PyQt5 import (
|
||||||
QtGui, QtWidgets
|
QtGui, QtWidgets,
|
||||||
|
)
|
||||||
|
from PyQt5.QtGui import (
|
||||||
|
QKeySequence,
|
||||||
)
|
)
|
||||||
from PyQt5.QtCore import (
|
from PyQt5.QtCore import (
|
||||||
Qt, QAbstractTableModel, QModelIndex,
|
Qt, QAbstractTableModel, QModelIndex,
|
||||||
|
|
@ -27,12 +30,11 @@ _translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
|
||||||
class PandasModelEditable(QAbstractTableModel):
|
class PandasModelEditable(QAbstractTableModel):
|
||||||
def __init__(self, reach, headers=None):
|
def __init__(self, reach, headers=None, undo=None):
|
||||||
QAbstractTableModel.__init__(self)
|
QAbstractTableModel.__init__(self)
|
||||||
data_list = []
|
data_list = []
|
||||||
|
|
||||||
self._undo_stack = QUndoStack()
|
self._undo_stack = undo
|
||||||
|
|
||||||
self._reach = reach
|
self._reach = reach
|
||||||
|
|
||||||
if headers is None:
|
if headers is None:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue