Commit b2bc34a5 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Sections: Switch window focus to current reach instead of all study.

Showing with 26 additions and 49 deletions
+26 -49
......@@ -46,11 +46,15 @@ class RiverReach(Edge):
)
self._reach = Reach(status=self._status, parent=self)
self._sections = SectionList(status=self._status)
@property
def reach(self):
return self._reach
@property
def sections(self):
return self._sections
class River(Graph):
def __init__(self, status=None):
......@@ -65,7 +69,6 @@ class River(Graph):
self._lateral_contribution = LateralContributionList(status=self._status)
self._initial_conditions = InitialConditionsDict(status=self._status)
self._stricklers = StricklersList(status=self._status)
self._sections = SectionList(status=self._status)
@property
def boundary_condition(self):
......@@ -96,10 +99,6 @@ class River(Graph):
return ret[0]
@property
def sections(self):
return self._sections
def has_current_reach(self):
return self._current_reach is not None
......
......@@ -16,8 +16,7 @@ from PyQt5.QtWidgets import (
)
from View.Sections.UndoCommand import (
SetNameCommand, SetEdgeCommand,
SetBeginCommand, SetEndCommand,
SetNameCommand, SetBeginCommand, SetEndCommand,
SetBeginStricklerCommand, SetEndStricklerCommand,
AddCommand, DelCommand, SortCommand,
MoveCommand, PasteCommand, DuplicateCommand,
......@@ -28,10 +27,11 @@ from View.Sections.translate import *
_translate = QCoreApplication.translate
class ComboBoxDelegate(QItemDelegate):
def __init__(self, data=None, mode="stricklers", parent=None):
def __init__(self, data=None, study=None, mode="stricklers", parent=None):
super(ComboBoxDelegate, self).__init__(parent)
self._data = data
self._study = study
self._mode = mode
def createEditor(self, parent, option, index):
......@@ -43,15 +43,10 @@ class ComboBoxDelegate(QItemDelegate):
list(
map(
lambda s: str(s),
self._data.stricklers.stricklers
self._study.river.stricklers.stricklers
)
)
)
elif self._mode == "edge":
self.editor.addItems(
[_translate("Sections", "Not associate")] +
self._data.edges_names()
)
self.editor.setCurrentText(index.data(Qt.DisplayRole))
return self.editor
......@@ -78,10 +73,11 @@ class ComboBoxDelegate(QItemDelegate):
class TableModel(QAbstractTableModel):
def __init__(self, data=None, undo=None):
def __init__(self, data=None, study=None, undo=None):
super(QAbstractTableModel, self).__init__()
self._headers = list(table_headers.keys())
self._data = data
self._study = study
self._undo = undo
self._sections = self._data.sections
......@@ -106,11 +102,6 @@ class TableModel(QAbstractTableModel):
if self._headers[column] == "name":
return self._sections.get(row).name
elif self._headers[column] == "edge":
n = self._sections.get(row).edge
if n is None:
return _translate("Sections", "Not associate")
return n.name
elif self._headers[column] == "begin_kp":
return self._sections.get(row).begin_kp
elif self._headers[column] == "end_kp":
......@@ -147,12 +138,6 @@ class TableModel(QAbstractTableModel):
self._sections, row, value
)
)
elif self._headers[column] == "edge":
self._undo.push(
SetEdgeCommand(
self._sections, row, self._data.edge(value)
)
)
elif self._headers[column] == "begin_kp":
self._undo.push(
SetBeginCommand(
......@@ -168,7 +153,7 @@ class TableModel(QAbstractTableModel):
elif self._headers[column] == "begin_strickler":
self._undo.push(
SetBeginStricklerCommand(
self._sections, row, self._data.strickler(value)
self._sections, row, self._study.river.strickler(value)
)
)
elif self._headers[column] == "end_strickler":
......@@ -186,7 +171,7 @@ class TableModel(QAbstractTableModel):
self._undo.push(
AddCommand(
self._sections, row
self._sections, row, self._data
)
)
......
......@@ -103,11 +103,12 @@ class SetEdgeCommand(QUndoCommand):
self._sections.get(self._index).edge = self._new
class AddCommand(QUndoCommand):
def __init__(self, sections, index):
def __init__(self, sections, index, reach):
QUndoCommand.__init__(self)
self._sections = sections
self._index = index
self._reach = reach
self._new = None
def undo(self):
......@@ -116,6 +117,7 @@ class AddCommand(QUndoCommand):
def redo(self):
if self._new is None:
self._new = self._sections.new(self._index)
self._new.edge = self._reach
else:
self._sections.insert(self._index, self._new)
......
......@@ -40,13 +40,14 @@ class SectionsWindow(ASubMainWindow, ListedSubWindow):
def __init__(self, title="Sections", study=None, parent=None):
title = title + " - " + study.name
self._study = study
self._current_reach = self._study.river._current_reach
self._sections = self._current_reach.sections
super(SectionsWindow, self).__init__(
name=title, ui="Sections", parent=parent
)
self._study = study
self._sections = self._study.river.sections
self.setup_sc()
self.setup_table()
self.setup_graph()
......@@ -67,31 +68,25 @@ class SectionsWindow(ASubMainWindow, ListedSubWindow):
table = self.find(QTableView, f"tableView")
self._table = TableModel(
data = self._study.river,
data = self._current_reach,
study = self._study,
undo = self._undo_stack,
)
table.setModel(self._table)
self._delegate_edge = ComboBoxDelegate(
data = self._study.river,
mode = "edge",
parent=self
)
self._delegate_stricklers = ComboBoxDelegate(
data = self._study.river,
data = self._current_reach,
study = self._study,
mode = "stricklers",
parent=self
)
table.setItemDelegateForColumn(
1, self._delegate_edge
3, self._delegate_stricklers
)
table.setItemDelegateForColumn(
4, self._delegate_stricklers
)
table.setItemDelegateForColumn(
5, self._delegate_stricklers
)
table.setSelectionBehavior(QAbstractItemView.SelectRows)
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
......@@ -147,11 +142,7 @@ class SectionsWindow(ASubMainWindow, ListedSubWindow):
highlight = None
if len(rows) > 0:
edge = self._study\
.river\
.sections\
.get(rows[0])\
.edge
edge = self._current_reach
if edge:
data = edge.reach
sec = self._sections.get(rows[0])
......
......@@ -6,7 +6,7 @@ _translate = QCoreApplication.translate
table_headers = {
"name": _translate("Sections", "Name"),
"edge": _translate("Sections", "Reach"),
# "edge": _translate("Sections", "Reach"),
"begin_kp": _translate("Sections", "Begin kp (m)"),
"end_kp": _translate("Sections", "End kp (m)"),
"begin_strickler": _translate("Sections", "Begin strickler"),
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment