Compare commits

...

3 Commits

6 changed files with 83 additions and 49 deletions

View File

@ -18,6 +18,7 @@ modelling of rivers.
+ Define river sedimentary layers
+ Save the study in a unique file
+ Run Mage 8 on a study and visualize results
+ Create and edit study alternative scenario tree
Let see the
[documentation](https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/wikis/home)

View File

@ -1,18 +1,23 @@
#! /bin/sh
echo " PDF documentation.org"
emacs -nw --batch \
--eval "(require 'org)" \
--eval "(require 'ox-latex)" \
--eval "(load-file \"../tools/setup.el\")" \
--file ./documentation.org \
-f org-latex-export-to-pdf
FILES="documentation.org scenario.org"
echo " HTML documentation.org"
emacs -nw --batch \
--eval "(require 'org)" \
--eval "(require 'ox-latex)" \
--eval "(require 'ox-html)" \
--eval "(load-file \"../tools/setup.el\")" \
--file ./documentation.org \
-f org-html-export-to-html
for file in $FILES
do
echo " PDF $file"
emacs -nw --batch \
--eval "(require 'org)" \
--eval "(require 'ox-latex)" \
--eval "(load-file \"../tools/setup.el\")" \
--file ./$file \
-f org-latex-export-to-pdf \
echo " HTML $file"
emacs -nw --batch \
--eval "(require 'org)" \
--eval "(require 'ox-latex)" \
--eval "(require 'ox-html)" \
--eval "(load-file \"../tools/setup.el\")" \
--file ./$file \
-f org-html-export-to-html
done

View File

@ -157,7 +157,7 @@ class Data(SQLSubModel):
owner_scenario=owner_scenario
)
if deleted:
f.set_as_deleted()
nd.set_as_deleted()
nd._data = [elevation, surface]
@ -307,7 +307,7 @@ class Reservoir(SQLSubModel):
owner_scenario=owner_scenario
)
if deleted:
f.set_as_deleted()
new_reservoir.set_as_deleted()
new_reservoir._node = None
if node_id != -1:

View File

@ -73,10 +73,13 @@ class NodeItem(QGraphicsItem):
def shape(self):
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)
else:
path.addRect(-10, -10, 20, 20)
return path
@timer
@ -98,7 +101,9 @@ class NodeItem(QGraphicsItem):
color = Qt.green
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)
else:
painter.drawRect(-10, -10, 20, 20)

View File

@ -38,7 +38,7 @@ from View.Tools.PamhyrTable import PamhyrTableModel
from View.Reservoir.UndoCommand import (
SetNameCommand, SetNodeCommand,
AddCommand, DelCommand, PasteCommand,
AddCommand, DelCommand,
)
logger = logging.getLogger()
@ -103,6 +103,19 @@ class TableModel(PamhyrTableModel):
def _setup_lst(self):
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):
return len(self._lst)
@ -153,6 +166,8 @@ class TableModel(PamhyrTableModel):
def add(self, row, parent=QModelIndex()):
self.beginInsertRows(parent, row, row - 1)
row = self.get_true_data_row(row)
self._undo.push(
AddCommand(
self._lst, row
@ -167,7 +182,12 @@ class TableModel(PamhyrTableModel):
self._undo.push(
DelCommand(
self._lst, rows
self._lst, list(
map(
lambda r: self._lst.get(r),
rows
)
)
)
)

View File

@ -76,7 +76,8 @@ class AddCommand(QUndoCommand):
self._new = None
def undo(self):
self._reservoir_lst.delete_i([self._index])
self._new.set_as_deleted()
self._reservoir_lst.modified()
def redo(self):
if self._new is None:
@ -84,6 +85,8 @@ class AddCommand(QUndoCommand):
else:
self._reservoir_lst.insert(self._index, self._new)
self._reservoir_lst.modified()
class AddAndAssociateCommand(QUndoCommand):
def __init__(self, reservoir_lst, index, node):
@ -96,7 +99,8 @@ class AddAndAssociateCommand(QUndoCommand):
self._node = node
def undo(self):
self._reservoir_lst.delete_i([self._index])
self._reservoir_lst.delete(self._new)
self._reservoir_lst.modified()
def redo(self):
if self._new is None:
@ -105,45 +109,44 @@ class AddAndAssociateCommand(QUndoCommand):
self._reservoir_lst.insert(self._index, self._new)
self._reservoir_lst.get(self._index).node = self._node
self._reservoir_lst.modified()
class DelCommand(QUndoCommand):
def __init__(self, reservoir_lst, rows):
def __init__(self, reservoir_lst, reservoirs):
QUndoCommand.__init__(self)
self._reservoir_lst = reservoir_lst
self._rows = rows
self._reservoir = []
for row in rows:
self._reservoir.append((row, self._reservoir_lst.get(row)))
self._reservoir.sort()
self._reservoirs = reservoirs
def undo(self):
for row, el in self._reservoir:
self._reservoir_lst.insert(row, el)
for reservoir in self._reservoirs:
reservoir.set_as_not_deleted()
self._reservoir_lst.modified()
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):
def __init__(self, reservoir_lst, row, reservoir):
QUndoCommand.__init__(self)
# class PasteCommand(QUndoCommand):
# def __init__(self, reservoir_lst, row, reservoir):
# QUndoCommand.__init__(self)
self._reservoir_lst = reservoir_lst
# self._reservoir_lst = reservoir_lst
self._row = row
self._reservoir = deepcopy(reservoir)
self._reservoir.reverse()
# self._row = row
# self._reservoir = deepcopy(reservoir)
# self._reservoir.reverse()
def undo(self):
self._reservoir_lst.delete_i(
self._tab,
range(self._row, self._row + len(self._reservoir))
)
# def undo(self):
# self._reservoir_lst.delete_i(
# self._tab,
# range(self._row, self._row + len(self._reservoir))
# )
def redo(self):
for r in self._reservoir:
self._reservoir_lst.insert(self._row, r)
# def redo(self):
# for r in self._reservoir:
# self._reservoir_lst.insert(self._row, r)