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 + 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)

View File

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

View File

@ -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)

View File

@ -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
)
)
) )
) )

View File

@ -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)