diff --git a/src/Model/Geometry/Profile.py b/src/Model/Geometry/Profile.py index 380d4729..45685caa 100644 --- a/src/Model/Geometry/Profile.py +++ b/src/Model/Geometry/Profile.py @@ -239,10 +239,10 @@ class Profile(object): # Move def move_up_point(self, index: int): - if index < len(self.points): + if index < len(self._points): next = index - 1 - p = self.points + p = self._points p[index], p[next] = p[next], p[index] self.modified() @@ -250,7 +250,7 @@ class Profile(object): if index >= 0: prev = index + 1 - p = self.points + p = self._points p[index], p[prev] = p[prev], p[index] self.modified() @@ -265,7 +265,7 @@ class Profile(object): def predicate(p): return p.z self._points = sorted( - self.points, + self._points, key=predicate, reverse=is_reversed ) @@ -273,14 +273,14 @@ class Profile(object): @timer def sort_with_indexes(self, indexes: list): - if len(self.points) != len(indexes): + if len(self._points) != len(indexes): logger.critical("Indexes list do not correspond to point list") self._points = list( map( lambda x: x[1], sorted( - enumerate(self.points), + enumerate(self._points), key=lambda x: indexes[x[0]] ) ) diff --git a/src/View/Geometry/Profile/Table.py b/src/View/Geometry/Profile/Table.py index 896bcd5a..41e14fe2 100644 --- a/src/View/Geometry/Profile/Table.py +++ b/src/View/Geometry/Profile/Table.py @@ -45,6 +45,19 @@ _translate = QCoreApplication.translate class GeometryProfileTableModel(PamhyrTableModel): + def get_true_data_row(self, row): + profile = self._data.point(row) + + return next( + map( + lambda e: e[0], + filter( + lambda e: e[1] == profile, + enumerate(self._data._points) + ) + ), 0 + ) + def data(self, index, role=Qt.DisplayRole): if index.isValid(): if role == Qt.DisplayRole: @@ -162,6 +175,8 @@ class GeometryProfileTableModel(PamhyrTableModel): def insert_row(self, row, parent=QModelIndex()): self.beginInsertRows(parent, row, row - 1) + row = self.get_true_data_row(row) + self._undo.push( AddCommand( self._data, row @@ -176,7 +191,12 @@ class GeometryProfileTableModel(PamhyrTableModel): self._undo.push( DelCommand( - self._data, rows + self._data, list( + map( + lambda r: self.get_true_data_row(r), + rows + ) + ) ) ) @@ -200,10 +220,10 @@ class GeometryProfileTableModel(PamhyrTableModel): if row <= 0: return - target = row + 2 - + target = row + 1 self.beginMoveRows(parent, row - 1, row - 1, parent, target) + row = self.get_true_data_row(row) self._undo.push( MoveCommand( self._data, "up", row @@ -218,9 +238,9 @@ class GeometryProfileTableModel(PamhyrTableModel): return target = row - self.beginMoveRows(parent, row + 1, row + 1, parent, target) + row = self.get_true_data_row(row) self._undo.push( MoveCommand( self._data, "down", row diff --git a/src/View/Geometry/Profile/UndoCommand.py b/src/View/Geometry/Profile/UndoCommand.py index efe1ad7e..8af52337 100644 --- a/src/View/Geometry/Profile/UndoCommand.py +++ b/src/View/Geometry/Profile/UndoCommand.py @@ -144,9 +144,9 @@ class SortCommand(QUndoCommand): self._column = column self._reverse = _reverse - old = self._profile.points + old = self._profile._points self._profile.sort(self._column, self._reverse) - new = self._profile.points + new = self._profile._points self._indexes = list( map( diff --git a/src/View/Geometry/Profile/Window.py b/src/View/Geometry/Profile/Window.py index 76dd7ee0..c5a00737 100644 --- a/src/View/Geometry/Profile/Window.py +++ b/src/View/Geometry/Profile/Window.py @@ -132,8 +132,8 @@ class ProfileWindow(PamhyrWindow): actions = {} else: actions = { - "action_sort_asc": self.sort_X_ascending, - "action_sort_des": self.sort_X_descending, + "action_sort_asc": self.sort_Y_ascending, + "action_sort_des": self.sort_Y_descending, "action_up": self.move_up, "action_down": self.move_down, "action_add": self.add,