mirror of https://gitlab.com/pamhyr/pamhyr2
Merge branch 'scenarios' of gitlab.com:pamhyr/pamhyr2 into scenarios
commit
ddc612328e
|
|
@ -275,6 +275,7 @@ class Layer(SQLSubModel):
|
||||||
|
|
||||||
self._sl.modified()
|
self._sl.modified()
|
||||||
|
|
||||||
|
|
||||||
class SedimentLayer(SQLSubModel):
|
class SedimentLayer(SQLSubModel):
|
||||||
_sub_classes = [Layer]
|
_sub_classes = [Layer]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -414,7 +414,6 @@ class SQLSubModel(PamhyrID):
|
||||||
"""
|
"""
|
||||||
raise NotImplementedMethodeError(self, self._db_save)
|
raise NotImplementedMethodeError(self, self._db_save)
|
||||||
|
|
||||||
|
|
||||||
def _data_traversal(self,
|
def _data_traversal(self,
|
||||||
predicate=lambda obj, data: True,
|
predicate=lambda obj, data: True,
|
||||||
modifier=lambda obj, data: None,
|
modifier=lambda obj, data: None,
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ class PamhyrModelList(SQLSubModel):
|
||||||
return self.lst.index(el)
|
return self.lst.index(el)
|
||||||
|
|
||||||
def get(self, index):
|
def get(self, index):
|
||||||
if len(self._lst) == 0:
|
if len(self.lst) <= index:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return self.lst[index]
|
return self.lst[index]
|
||||||
|
|
@ -122,6 +122,9 @@ class PamhyrModelList(SQLSubModel):
|
||||||
raise NotImplementedMethodeError(self, self.new)
|
raise NotImplementedMethodeError(self, self.new)
|
||||||
|
|
||||||
def insert(self, index, new):
|
def insert(self, index, new):
|
||||||
|
if new in self._lst:
|
||||||
|
new.set_as_not_deleted()
|
||||||
|
else:
|
||||||
self._lst.insert(index, new)
|
self._lst.insert(index, new)
|
||||||
|
|
||||||
if self._status is not None:
|
if self._status is not None:
|
||||||
|
|
@ -165,7 +168,7 @@ class PamhyrModelList(SQLSubModel):
|
||||||
lambda x: x[1],
|
lambda x: x[1],
|
||||||
filter(
|
filter(
|
||||||
lambda x: x[0] in indexes,
|
lambda x: x[0] in indexes,
|
||||||
enumerate(self.lst)
|
enumerate(self._lst)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,19 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
class ListModel(PamhyrListModel):
|
class ListModel(PamhyrListModel):
|
||||||
|
def get_true_data_row(self, row):
|
||||||
|
el = self._data.get(row)
|
||||||
|
|
||||||
|
return next(
|
||||||
|
map(
|
||||||
|
lambda e: e[0],
|
||||||
|
filter(
|
||||||
|
lambda e: e[1] == el,
|
||||||
|
enumerate(self._data._lst)
|
||||||
|
)
|
||||||
|
), 0
|
||||||
|
)
|
||||||
|
|
||||||
def data(self, index, role):
|
def data(self, index, role):
|
||||||
row = index.row()
|
row = index.row()
|
||||||
column = index.column()
|
column = index.column()
|
||||||
|
|
@ -65,6 +78,8 @@ class ListModel(PamhyrListModel):
|
||||||
return QVariant()
|
return QVariant()
|
||||||
|
|
||||||
def add(self, row):
|
def add(self, row):
|
||||||
|
row = self.get_true_data_row(row)
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
AddCommand(
|
AddCommand(
|
||||||
self._data, row
|
self._data, row
|
||||||
|
|
@ -75,7 +90,7 @@ class ListModel(PamhyrListModel):
|
||||||
def delete(self, row):
|
def delete(self, row):
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
DelCommand(
|
DelCommand(
|
||||||
self._data, row
|
self._data, self._data.files[row]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.update()
|
self.update()
|
||||||
|
|
|
||||||
|
|
@ -58,27 +58,24 @@ class AddCommand(QUndoCommand):
|
||||||
self._new = None
|
self._new = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._files.delete([self._new])
|
self._new.set_as_deleted()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
if self._new is None:
|
if self._new is None:
|
||||||
self._new = self._files.new(self._row)
|
self._new = self._files.new(self._row)
|
||||||
else:
|
else:
|
||||||
self._files.undelete([self._new])
|
self._new.set_as_not_deleted()
|
||||||
# self._files.insert(self._row, self._new)
|
|
||||||
|
|
||||||
|
|
||||||
class DelCommand(QUndoCommand):
|
class DelCommand(QUndoCommand):
|
||||||
def __init__(self, files, row):
|
def __init__(self, files, line):
|
||||||
QUndoCommand.__init__(self)
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
self._files = files
|
self._files = files
|
||||||
self._row = row
|
self._line = line
|
||||||
self._old = self._files.get(row)
|
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._files.undelete([self._old])
|
self._line.set_as_not_deleted()
|
||||||
# self._files.insert(self._row, self._old)
|
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._files.delete_i([self._row])
|
self._line.set_as_deleted()
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,7 @@ class AddCommand(QUndoCommand):
|
||||||
else:
|
else:
|
||||||
self._new.set_as_not_deleted()
|
self._new.set_as_not_deleted()
|
||||||
|
|
||||||
|
|
||||||
class DelCommand(QUndoCommand):
|
class DelCommand(QUndoCommand):
|
||||||
def __init__(self, lcs, tab, rows):
|
def __init__(self, lcs, tab, rows):
|
||||||
QUndoCommand.__init__(self)
|
QUndoCommand.__init__(self)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,19 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
class ListModel(PamhyrListModel):
|
class ListModel(PamhyrListModel):
|
||||||
|
def get_true_data_row(self, row):
|
||||||
|
el = self._data.get(row)
|
||||||
|
|
||||||
|
return next(
|
||||||
|
map(
|
||||||
|
lambda e: e[0],
|
||||||
|
filter(
|
||||||
|
lambda e: e[1] == el,
|
||||||
|
enumerate(self._data._lst)
|
||||||
|
)
|
||||||
|
), 0
|
||||||
|
)
|
||||||
|
|
||||||
def data(self, index, role):
|
def data(self, index, role):
|
||||||
row = index.row()
|
row = index.row()
|
||||||
column = index.column()
|
column = index.column()
|
||||||
|
|
@ -65,17 +78,20 @@ class ListModel(PamhyrListModel):
|
||||||
return QVariant()
|
return QVariant()
|
||||||
|
|
||||||
def add(self, row):
|
def add(self, row):
|
||||||
|
row = self.get_true_data_row(row)
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
AddCommand(
|
AddCommand(
|
||||||
self._data, row
|
self._data, row
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def delete(self, row):
|
def delete(self, row):
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
DelCommand(
|
DelCommand(
|
||||||
self._data, row
|
self._data, self._data.lines[row]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.update()
|
self.update()
|
||||||
|
|
|
||||||
|
|
@ -58,25 +58,24 @@ class AddCommand(QUndoCommand):
|
||||||
self._new = None
|
self._new = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._lines.delete([self._new])
|
self._new.set_as_deleted()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
if self._new is None:
|
if self._new is None:
|
||||||
self._new = self._lines.new(self._row)
|
self._new = self._lines.new(self._row)
|
||||||
else:
|
else:
|
||||||
self._lines.insert(self._row, self._new)
|
self._new.set_as_not_deleted()
|
||||||
|
|
||||||
|
|
||||||
class DelCommand(QUndoCommand):
|
class DelCommand(QUndoCommand):
|
||||||
def __init__(self, lines, row):
|
def __init__(self, lines, data):
|
||||||
QUndoCommand.__init__(self)
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
self._lines = lines
|
self._lines = lines
|
||||||
self._row = row
|
self._data = data
|
||||||
self._old = self._lines.get(row)
|
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._lines.insert(self._row, self._old)
|
self._data.set_as_not_deleted()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._lines.delete_i([self._row])
|
self._data.set_as_deleted()
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ class ScenarioMenu(AbstractMenu):
|
||||||
)
|
)
|
||||||
|
|
||||||
action = self._exec()
|
action = self._exec()
|
||||||
if action == None:
|
if action is None:
|
||||||
return
|
return
|
||||||
elif action == select:
|
elif action == select:
|
||||||
self._parent.select_scenario(item)
|
self._parent.select_scenario(item)
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,19 @@ _translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
|
||||||
class TableModel(PamhyrTableModel):
|
class TableModel(PamhyrTableModel):
|
||||||
|
def get_true_data_row(self, row):
|
||||||
|
el = self._data.get(row)
|
||||||
|
|
||||||
|
return next(
|
||||||
|
map(
|
||||||
|
lambda e: e[0],
|
||||||
|
filter(
|
||||||
|
lambda e: e[1] == el,
|
||||||
|
enumerate(self._data._lst)
|
||||||
|
)
|
||||||
|
), 0
|
||||||
|
)
|
||||||
|
|
||||||
def data(self, index, role):
|
def data(self, index, role):
|
||||||
if role != Qt.ItemDataRole.DisplayRole:
|
if role != Qt.ItemDataRole.DisplayRole:
|
||||||
return QVariant()
|
return QVariant()
|
||||||
|
|
@ -109,6 +122,8 @@ class TableModel(PamhyrTableModel):
|
||||||
def add(self, row, parent=QModelIndex()):
|
def add(self, row, parent=QModelIndex()):
|
||||||
self.beginInsertRows(parent, row, row - 1)
|
self.beginInsertRows(parent, row, row - 1)
|
||||||
|
|
||||||
|
row = self.get_true_data_row(row)
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
AddCommand(
|
AddCommand(
|
||||||
self._data, row
|
self._data, row
|
||||||
|
|
@ -123,7 +138,12 @@ class TableModel(PamhyrTableModel):
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
DelCommand(
|
DelCommand(
|
||||||
self._data, rows
|
self._data, list(
|
||||||
|
map(
|
||||||
|
lambda r: self._data.get(r),
|
||||||
|
rows
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,33 +102,29 @@ class AddCommand(QUndoCommand):
|
||||||
self._new = None
|
self._new = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._data.delete_i([self._index])
|
self._new.set_as_deleted()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
if self._new is None:
|
if self._new is None:
|
||||||
self._new = self._data.new(self._index)
|
self._new = self._data.new(self._index)
|
||||||
else:
|
else:
|
||||||
self._data.undelete([self._new])
|
self._new.set_as_not_deleted()
|
||||||
# self._data.insert(self._index, self._new)
|
|
||||||
|
|
||||||
|
|
||||||
class DelCommand(QUndoCommand):
|
class DelCommand(QUndoCommand):
|
||||||
def __init__(self, data, rows):
|
def __init__(self, data, lines):
|
||||||
QUndoCommand.__init__(self)
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
self._data = data
|
self._data = data
|
||||||
self._rows = rows
|
self._lines = lines
|
||||||
|
|
||||||
self._el = []
|
|
||||||
for row in rows:
|
|
||||||
self._el.append(self._data.get(row))
|
|
||||||
self._el.sort()
|
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._data.undelete(self._el)
|
for line in self._lines:
|
||||||
|
line.set_as_not_deleted()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._data.delete(self._el)
|
for line in self._lines:
|
||||||
|
line.set_as_deleted()
|
||||||
|
|
||||||
|
|
||||||
class SortCommand(QUndoCommand):
|
class SortCommand(QUndoCommand):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue