mirror of https://gitlab.com/pamhyr/pamhyr2
geometry: Fix move profile up/down.
parent
59c4463bf7
commit
bef640168e
|
|
@ -111,6 +111,19 @@ class Reach:
|
||||||
self._profiles.pop(index)
|
self._profiles.pop(index)
|
||||||
self._update_profile_numbers()
|
self._update_profile_numbers()
|
||||||
|
|
||||||
|
def move_up_profile(self, index: int):
|
||||||
|
if index < len(self.profiles):
|
||||||
|
next = index - 1
|
||||||
|
|
||||||
|
p = self._profiles
|
||||||
|
p[index], p[next] = p[next], p[index]
|
||||||
|
|
||||||
|
def move_down_profile(self, index: int):
|
||||||
|
if index >= 0:
|
||||||
|
prev = index + 1
|
||||||
|
|
||||||
|
p = self._profiles
|
||||||
|
p[index], p[prev] = p[prev], p[index]
|
||||||
|
|
||||||
def get_x(self):
|
def get_x(self):
|
||||||
return [profile.x() for profile in self.profiles]
|
return [profile.x() for profile in self.profiles]
|
||||||
|
|
|
||||||
|
|
@ -396,69 +396,21 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
||||||
self.select_current_profile()
|
self.select_current_profile()
|
||||||
self.changed_slider_value()
|
self.changed_slider_value()
|
||||||
|
|
||||||
self.update_plot_kpc()
|
|
||||||
self.update_plot_ac(self.index_selected_row())
|
|
||||||
|
|
||||||
def sort_descending(self):
|
def sort_descending(self):
|
||||||
self._tablemodel.sort_profiles(False)
|
self._tablemodel.sort_profiles(False)
|
||||||
|
|
||||||
self.select_current_profile()
|
self.select_current_profile()
|
||||||
self.changed_slider_value()
|
self.changed_slider_value()
|
||||||
|
|
||||||
self.update_plot_kpc()
|
|
||||||
self.update_plot_ac(self.index_selected_row())
|
|
||||||
|
|
||||||
def move_row_down(self):
|
def move_row_down(self):
|
||||||
row = self.index_selected_row()
|
row = self.index_selected_row()
|
||||||
|
self._tablemodel.move_row_down(row)
|
||||||
if row < self._tablemodel.rowCount() - 1:
|
self.select_current_profile()
|
||||||
self._tablemodel.moveRowDown(row)
|
|
||||||
self.update_plot_ac(row + 1)
|
|
||||||
self.ui.canvas_3.axes.relim()
|
|
||||||
self.ui.canvas_3.axes.autoscale_view()
|
|
||||||
|
|
||||||
if row < self._tablemodel.rowCount() - 2:
|
|
||||||
self.select_before_plot_selected_1(row)
|
|
||||||
self.select_after_plot_selected_1(row + 2)
|
|
||||||
self.select_before_plot_selected_2(row)
|
|
||||||
self.select_after_plot_selected_2(row + 2)
|
|
||||||
|
|
||||||
if row == self._tablemodel.rowCount() - 2:
|
|
||||||
self.select_before_plot_selected_1(self._tablemodel.rowCount() - 2)
|
|
||||||
self.after_plot_selected_1.set_visible(False)
|
|
||||||
self.select_before_plot_selected_2(self._tablemodel.rowCount() - 2)
|
|
||||||
self.after_plot_selected_2.set_visible(False)
|
|
||||||
|
|
||||||
self.update_plot_kpc()
|
|
||||||
|
|
||||||
def move_row_up(self):
|
def move_row_up(self):
|
||||||
row = self.index_selected_row()
|
row = self.index_selected_row()
|
||||||
|
self._tablemodel.move_row_up(row)
|
||||||
if 0 < row <= self._tablemodel.rowCount() - 1:
|
self.select_current_profile()
|
||||||
self._tablemodel.moveRowUp(row)
|
|
||||||
|
|
||||||
if row == 1:
|
|
||||||
self.select_after_plot_selected_1(row)
|
|
||||||
self.before_plot_selected_1.set_visible(False)
|
|
||||||
self.select_after_plot_selected_2(row)
|
|
||||||
self.before_plot_selected_2.set_visible(False)
|
|
||||||
|
|
||||||
elif row == self._tablemodel.rowCount() - 1:
|
|
||||||
self.select_before_plot_selected_1(row - 2)
|
|
||||||
self.select_after_plot_selected_1(row)
|
|
||||||
self.select_before_plot_selected_2(row - 2)
|
|
||||||
self.select_after_plot_selected_2(row)
|
|
||||||
|
|
||||||
else:
|
|
||||||
self.select_before_plot_selected_1(row - 2)
|
|
||||||
self.select_after_plot_selected_1(row)
|
|
||||||
self.select_before_plot_selected_2(row - 2)
|
|
||||||
self.select_after_plot_selected_2(row)
|
|
||||||
|
|
||||||
self.update_plot_kpc()
|
|
||||||
self.update_plot_ac(row - 1)
|
|
||||||
self.ui.canvas_3.axes.relim()
|
|
||||||
self.ui.canvas_3.axes.autoscale_view()
|
|
||||||
|
|
||||||
def handleSave(self):
|
def handleSave(self):
|
||||||
options = QFileDialog.Options()
|
options = QFileDialog.Options()
|
||||||
|
|
|
||||||
|
|
@ -83,3 +83,24 @@ class SortCommand(QUndoCommand):
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._reach.sort(self._reverse)
|
self._reach.sort(self._reverse)
|
||||||
|
|
||||||
|
|
||||||
|
class MoveCommand(QUndoCommand):
|
||||||
|
def __init__(self, reach, up, i):
|
||||||
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
|
self._reach = reach
|
||||||
|
self._up = up == "up"
|
||||||
|
self._i = i
|
||||||
|
|
||||||
|
def undo(self):
|
||||||
|
if self._up:
|
||||||
|
self._reach.move_up_profile(self._i)
|
||||||
|
else:
|
||||||
|
self._reach.move_down_profile(self._i)
|
||||||
|
|
||||||
|
def redo(self):
|
||||||
|
if self._up:
|
||||||
|
self._reach.move_up_profile(self._i)
|
||||||
|
else:
|
||||||
|
self._reach.move_down_profile(self._i)
|
||||||
|
|
|
||||||
|
|
@ -174,20 +174,37 @@ class PandasModelEditable(QAbstractTableModel):
|
||||||
self.layoutAboutToBeChanged.emit()
|
self.layoutAboutToBeChanged.emit()
|
||||||
self.layoutChanged.emit()
|
self.layoutChanged.emit()
|
||||||
|
|
||||||
def moveRowDown(self, row_to_move, parent=QModelIndex()):
|
|
||||||
target = row_to_move + 2
|
|
||||||
self.beginMoveRows(parent, row_to_move, row_to_move, parent, target)
|
|
||||||
|
|
||||||
self._reach.move_down_profile(row_to_move)
|
def move_row_up(self, row, parent=QModelIndex()):
|
||||||
|
target = row + 2
|
||||||
|
|
||||||
|
if row <= 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
self.beginMoveRows(parent, row - 1, row - 1, parent, target)
|
||||||
|
|
||||||
|
self._undo_stack.push(
|
||||||
|
MoveCommand(
|
||||||
|
self._reach, "up", row
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.endMoveRows()
|
self.endMoveRows()
|
||||||
self.layoutChanged.emit()
|
self.layoutChanged.emit()
|
||||||
|
|
||||||
def moveRowUp(self, row_to_move, parent=QModelIndex()):
|
def move_row_down(self, row, parent=QModelIndex()):
|
||||||
target = row_to_move + 1
|
target = row
|
||||||
self.beginMoveRows(parent, row_to_move - 1, row_to_move - 1, parent, target)
|
|
||||||
|
|
||||||
self._reach.move_up_profile(row_to_move)
|
if row > self._reach.number_profiles:
|
||||||
|
return
|
||||||
|
|
||||||
|
self.beginMoveRows(parent, row + 1, row + 1, parent, target)
|
||||||
|
|
||||||
|
self._undo_stack.push(
|
||||||
|
MoveCommand(
|
||||||
|
self._reach, "down", row
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.endMoveRows()
|
self.endMoveRows()
|
||||||
self.layoutChanged.emit()
|
self.layoutChanged.emit()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue