mirror of https://gitlab.com/pamhyr/pamhyr2
Compare commits
3 Commits
1b70e22a58
...
4ba232a7e4
| Author | SHA1 | Date |
|---|---|---|
|
|
4ba232a7e4 | |
|
|
05f3f0fc7e | |
|
|
89a5d78ced |
|
|
@ -18,6 +18,7 @@ modelling of rivers.
|
||||||
+ Define river sedimentary layers
|
+ Define river sedimentary layers
|
||||||
+ Save the study in a unique file
|
+ Save the study in a unique file
|
||||||
+ Run Mage 8 on a study and visualize results
|
+ Run Mage 8 on a study and visualize results
|
||||||
|
+ Create and edit study alternative scenario tree
|
||||||
|
|
||||||
Let see the
|
Let see the
|
||||||
[documentation](https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/wikis/home)
|
[documentation](https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/wikis/home)
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,23 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
echo " PDF documentation.org"
|
FILES="documentation.org scenario.org"
|
||||||
emacs -nw --batch \
|
|
||||||
|
for file in $FILES
|
||||||
|
do
|
||||||
|
echo " PDF $file"
|
||||||
|
emacs -nw --batch \
|
||||||
--eval "(require 'org)" \
|
--eval "(require 'org)" \
|
||||||
--eval "(require 'ox-latex)" \
|
--eval "(require 'ox-latex)" \
|
||||||
--eval "(load-file \"../tools/setup.el\")" \
|
--eval "(load-file \"../tools/setup.el\")" \
|
||||||
--file ./documentation.org \
|
--file ./$file \
|
||||||
-f org-latex-export-to-pdf
|
-f org-latex-export-to-pdf \
|
||||||
|
|
||||||
echo " HTML documentation.org"
|
echo " HTML $file"
|
||||||
emacs -nw --batch \
|
emacs -nw --batch \
|
||||||
--eval "(require 'org)" \
|
--eval "(require 'org)" \
|
||||||
--eval "(require 'ox-latex)" \
|
--eval "(require 'ox-latex)" \
|
||||||
--eval "(require 'ox-html)" \
|
--eval "(require 'ox-html)" \
|
||||||
--eval "(load-file \"../tools/setup.el\")" \
|
--eval "(load-file \"../tools/setup.el\")" \
|
||||||
--file ./documentation.org \
|
--file ./$file \
|
||||||
-f org-html-export-to-html
|
-f org-html-export-to-html
|
||||||
|
done
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ class Data(SQLSubModel):
|
||||||
owner_scenario=owner_scenario
|
owner_scenario=owner_scenario
|
||||||
)
|
)
|
||||||
if deleted:
|
if deleted:
|
||||||
f.set_as_deleted()
|
nd.set_as_deleted()
|
||||||
|
|
||||||
nd._data = [elevation, surface]
|
nd._data = [elevation, surface]
|
||||||
|
|
||||||
|
|
@ -307,7 +307,7 @@ class Reservoir(SQLSubModel):
|
||||||
owner_scenario=owner_scenario
|
owner_scenario=owner_scenario
|
||||||
)
|
)
|
||||||
if deleted:
|
if deleted:
|
||||||
f.set_as_deleted()
|
new_reservoir.set_as_deleted()
|
||||||
|
|
||||||
new_reservoir._node = None
|
new_reservoir._node = None
|
||||||
if node_id != -1:
|
if node_id != -1:
|
||||||
|
|
|
||||||
|
|
@ -73,10 +73,13 @@ class NodeItem(QGraphicsItem):
|
||||||
|
|
||||||
def shape(self):
|
def shape(self):
|
||||||
path = QPainterPath()
|
path = QPainterPath()
|
||||||
if self.graph.graph._reservoir.get_assoc_to_node(self.node) is None:
|
reservoir = self.graph.graph._reservoir.get_assoc_to_node(self.node)
|
||||||
|
|
||||||
|
if reservoir is None or reservoir.is_deleted():
|
||||||
path.addEllipse(-10, -10, 20, 20)
|
path.addEllipse(-10, -10, 20, 20)
|
||||||
else:
|
else:
|
||||||
path.addRect(-10, -10, 20, 20)
|
path.addRect(-10, -10, 20, 20)
|
||||||
|
|
||||||
return path
|
return path
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
|
|
@ -98,7 +101,9 @@ class NodeItem(QGraphicsItem):
|
||||||
color = Qt.green
|
color = Qt.green
|
||||||
|
|
||||||
painter.setBrush(QBrush(color))
|
painter.setBrush(QBrush(color))
|
||||||
if self.graph.graph._reservoir.get_assoc_to_node(self.node) is None:
|
reservoir = self.graph.graph._reservoir.get_assoc_to_node(self.node)
|
||||||
|
|
||||||
|
if reservoir is None or reservoir.is_deleted():
|
||||||
painter.drawEllipse(-10, -10, 20, 20)
|
painter.drawEllipse(-10, -10, 20, 20)
|
||||||
else:
|
else:
|
||||||
painter.drawRect(-10, -10, 20, 20)
|
painter.drawRect(-10, -10, 20, 20)
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ from View.Tools.PamhyrTable import PamhyrTableModel
|
||||||
|
|
||||||
from View.Reservoir.UndoCommand import (
|
from View.Reservoir.UndoCommand import (
|
||||||
SetNameCommand, SetNodeCommand,
|
SetNameCommand, SetNodeCommand,
|
||||||
AddCommand, DelCommand, PasteCommand,
|
AddCommand, DelCommand,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
@ -103,6 +103,19 @@ class TableModel(PamhyrTableModel):
|
||||||
def _setup_lst(self):
|
def _setup_lst(self):
|
||||||
self._lst = self._data.reservoir
|
self._lst = self._data.reservoir
|
||||||
|
|
||||||
|
def get_true_data_row(self, row):
|
||||||
|
resvervoir = self._lst.get(row)
|
||||||
|
|
||||||
|
return next(
|
||||||
|
map(
|
||||||
|
lambda e: e[0],
|
||||||
|
filter(
|
||||||
|
lambda e: e[1] == resvervoir,
|
||||||
|
enumerate(self._lst.lst)
|
||||||
|
)
|
||||||
|
), 0
|
||||||
|
)
|
||||||
|
|
||||||
def rowCount(self, parent):
|
def rowCount(self, parent):
|
||||||
return len(self._lst)
|
return len(self._lst)
|
||||||
|
|
||||||
|
|
@ -153,6 +166,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._lst, row
|
self._lst, row
|
||||||
|
|
@ -167,7 +182,12 @@ class TableModel(PamhyrTableModel):
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
DelCommand(
|
DelCommand(
|
||||||
self._lst, rows
|
self._lst, list(
|
||||||
|
map(
|
||||||
|
lambda r: self._lst.get(r),
|
||||||
|
rows
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,8 @@ class AddCommand(QUndoCommand):
|
||||||
self._new = None
|
self._new = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._reservoir_lst.delete_i([self._index])
|
self._new.set_as_deleted()
|
||||||
|
self._reservoir_lst.modified()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
if self._new is None:
|
if self._new is None:
|
||||||
|
|
@ -84,6 +85,8 @@ class AddCommand(QUndoCommand):
|
||||||
else:
|
else:
|
||||||
self._reservoir_lst.insert(self._index, self._new)
|
self._reservoir_lst.insert(self._index, self._new)
|
||||||
|
|
||||||
|
self._reservoir_lst.modified()
|
||||||
|
|
||||||
|
|
||||||
class AddAndAssociateCommand(QUndoCommand):
|
class AddAndAssociateCommand(QUndoCommand):
|
||||||
def __init__(self, reservoir_lst, index, node):
|
def __init__(self, reservoir_lst, index, node):
|
||||||
|
|
@ -96,7 +99,8 @@ class AddAndAssociateCommand(QUndoCommand):
|
||||||
self._node = node
|
self._node = node
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._reservoir_lst.delete_i([self._index])
|
self._reservoir_lst.delete(self._new)
|
||||||
|
self._reservoir_lst.modified()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
if self._new is None:
|
if self._new is None:
|
||||||
|
|
@ -105,45 +109,44 @@ class AddAndAssociateCommand(QUndoCommand):
|
||||||
self._reservoir_lst.insert(self._index, self._new)
|
self._reservoir_lst.insert(self._index, self._new)
|
||||||
|
|
||||||
self._reservoir_lst.get(self._index).node = self._node
|
self._reservoir_lst.get(self._index).node = self._node
|
||||||
|
self._reservoir_lst.modified()
|
||||||
|
|
||||||
|
|
||||||
class DelCommand(QUndoCommand):
|
class DelCommand(QUndoCommand):
|
||||||
def __init__(self, reservoir_lst, rows):
|
def __init__(self, reservoir_lst, reservoirs):
|
||||||
QUndoCommand.__init__(self)
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
self._reservoir_lst = reservoir_lst
|
self._reservoir_lst = reservoir_lst
|
||||||
|
self._reservoirs = reservoirs
|
||||||
self._rows = rows
|
|
||||||
|
|
||||||
self._reservoir = []
|
|
||||||
for row in rows:
|
|
||||||
self._reservoir.append((row, self._reservoir_lst.get(row)))
|
|
||||||
self._reservoir.sort()
|
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
for row, el in self._reservoir:
|
for reservoir in self._reservoirs:
|
||||||
self._reservoir_lst.insert(row, el)
|
reservoir.set_as_not_deleted()
|
||||||
|
|
||||||
|
self._reservoir_lst.modified()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._reservoir_lst.delete_i(self._rows)
|
for reservoir in self._reservoirs:
|
||||||
|
reservoir.set_as_deleted()
|
||||||
|
|
||||||
|
self._reservoir_lst.modified()
|
||||||
|
|
||||||
class PasteCommand(QUndoCommand):
|
# class PasteCommand(QUndoCommand):
|
||||||
def __init__(self, reservoir_lst, row, reservoir):
|
# def __init__(self, reservoir_lst, row, reservoir):
|
||||||
QUndoCommand.__init__(self)
|
# QUndoCommand.__init__(self)
|
||||||
|
|
||||||
self._reservoir_lst = reservoir_lst
|
# self._reservoir_lst = reservoir_lst
|
||||||
|
|
||||||
self._row = row
|
# self._row = row
|
||||||
self._reservoir = deepcopy(reservoir)
|
# self._reservoir = deepcopy(reservoir)
|
||||||
self._reservoir.reverse()
|
# self._reservoir.reverse()
|
||||||
|
|
||||||
def undo(self):
|
# def undo(self):
|
||||||
self._reservoir_lst.delete_i(
|
# self._reservoir_lst.delete_i(
|
||||||
self._tab,
|
# self._tab,
|
||||||
range(self._row, self._row + len(self._reservoir))
|
# range(self._row, self._row + len(self._reservoir))
|
||||||
)
|
# )
|
||||||
|
|
||||||
def redo(self):
|
# def redo(self):
|
||||||
for r in self._reservoir:
|
# for r in self._reservoir:
|
||||||
self._reservoir_lst.insert(self._row, r)
|
# self._reservoir_lst.insert(self._row, r)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue