mirror of https://gitlab.com/pamhyr/pamhyr2
Sections: Switch window focus to current reach instead of all study.
parent
ad7c195e4d
commit
b2bc34a5b0
|
|
@ -46,11 +46,15 @@ class RiverReach(Edge):
|
||||||
)
|
)
|
||||||
|
|
||||||
self._reach = Reach(status=self._status, parent=self)
|
self._reach = Reach(status=self._status, parent=self)
|
||||||
|
self._sections = SectionList(status=self._status)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def reach(self):
|
def reach(self):
|
||||||
return self._reach
|
return self._reach
|
||||||
|
|
||||||
|
@property
|
||||||
|
def sections(self):
|
||||||
|
return self._sections
|
||||||
|
|
||||||
class River(Graph):
|
class River(Graph):
|
||||||
def __init__(self, status=None):
|
def __init__(self, status=None):
|
||||||
|
|
@ -65,7 +69,6 @@ class River(Graph):
|
||||||
self._lateral_contribution = LateralContributionList(status=self._status)
|
self._lateral_contribution = LateralContributionList(status=self._status)
|
||||||
self._initial_conditions = InitialConditionsDict(status=self._status)
|
self._initial_conditions = InitialConditionsDict(status=self._status)
|
||||||
self._stricklers = StricklersList(status=self._status)
|
self._stricklers = StricklersList(status=self._status)
|
||||||
self._sections = SectionList(status=self._status)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def boundary_condition(self):
|
def boundary_condition(self):
|
||||||
|
|
@ -96,10 +99,6 @@ class River(Graph):
|
||||||
|
|
||||||
return ret[0]
|
return ret[0]
|
||||||
|
|
||||||
@property
|
|
||||||
def sections(self):
|
|
||||||
return self._sections
|
|
||||||
|
|
||||||
def has_current_reach(self):
|
def has_current_reach(self):
|
||||||
return self._current_reach is not None
|
return self._current_reach is not None
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,7 @@ from PyQt5.QtWidgets import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from View.Sections.UndoCommand import (
|
from View.Sections.UndoCommand import (
|
||||||
SetNameCommand, SetEdgeCommand,
|
SetNameCommand, SetBeginCommand, SetEndCommand,
|
||||||
SetBeginCommand, SetEndCommand,
|
|
||||||
SetBeginStricklerCommand, SetEndStricklerCommand,
|
SetBeginStricklerCommand, SetEndStricklerCommand,
|
||||||
AddCommand, DelCommand, SortCommand,
|
AddCommand, DelCommand, SortCommand,
|
||||||
MoveCommand, PasteCommand, DuplicateCommand,
|
MoveCommand, PasteCommand, DuplicateCommand,
|
||||||
|
|
@ -28,10 +27,11 @@ from View.Sections.translate import *
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
class ComboBoxDelegate(QItemDelegate):
|
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)
|
super(ComboBoxDelegate, self).__init__(parent)
|
||||||
|
|
||||||
self._data = data
|
self._data = data
|
||||||
|
self._study = study
|
||||||
self._mode = mode
|
self._mode = mode
|
||||||
|
|
||||||
def createEditor(self, parent, option, index):
|
def createEditor(self, parent, option, index):
|
||||||
|
|
@ -43,15 +43,10 @@ class ComboBoxDelegate(QItemDelegate):
|
||||||
list(
|
list(
|
||||||
map(
|
map(
|
||||||
lambda s: str(s),
|
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))
|
self.editor.setCurrentText(index.data(Qt.DisplayRole))
|
||||||
return self.editor
|
return self.editor
|
||||||
|
|
@ -78,10 +73,11 @@ class ComboBoxDelegate(QItemDelegate):
|
||||||
|
|
||||||
|
|
||||||
class TableModel(QAbstractTableModel):
|
class TableModel(QAbstractTableModel):
|
||||||
def __init__(self, data=None, undo=None):
|
def __init__(self, data=None, study=None, undo=None):
|
||||||
super(QAbstractTableModel, self).__init__()
|
super(QAbstractTableModel, self).__init__()
|
||||||
self._headers = list(table_headers.keys())
|
self._headers = list(table_headers.keys())
|
||||||
self._data = data
|
self._data = data
|
||||||
|
self._study = study
|
||||||
self._undo = undo
|
self._undo = undo
|
||||||
self._sections = self._data.sections
|
self._sections = self._data.sections
|
||||||
|
|
||||||
|
|
@ -106,11 +102,6 @@ class TableModel(QAbstractTableModel):
|
||||||
|
|
||||||
if self._headers[column] == "name":
|
if self._headers[column] == "name":
|
||||||
return self._sections.get(row).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":
|
elif self._headers[column] == "begin_kp":
|
||||||
return self._sections.get(row).begin_kp
|
return self._sections.get(row).begin_kp
|
||||||
elif self._headers[column] == "end_kp":
|
elif self._headers[column] == "end_kp":
|
||||||
|
|
@ -147,12 +138,6 @@ class TableModel(QAbstractTableModel):
|
||||||
self._sections, row, value
|
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":
|
elif self._headers[column] == "begin_kp":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SetBeginCommand(
|
SetBeginCommand(
|
||||||
|
|
@ -168,7 +153,7 @@ class TableModel(QAbstractTableModel):
|
||||||
elif self._headers[column] == "begin_strickler":
|
elif self._headers[column] == "begin_strickler":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SetBeginStricklerCommand(
|
SetBeginStricklerCommand(
|
||||||
self._sections, row, self._data.strickler(value)
|
self._sections, row, self._study.river.strickler(value)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif self._headers[column] == "end_strickler":
|
elif self._headers[column] == "end_strickler":
|
||||||
|
|
@ -186,7 +171,7 @@ class TableModel(QAbstractTableModel):
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
AddCommand(
|
AddCommand(
|
||||||
self._sections, row
|
self._sections, row, self._data
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -103,11 +103,12 @@ class SetEdgeCommand(QUndoCommand):
|
||||||
self._sections.get(self._index).edge = self._new
|
self._sections.get(self._index).edge = self._new
|
||||||
|
|
||||||
class AddCommand(QUndoCommand):
|
class AddCommand(QUndoCommand):
|
||||||
def __init__(self, sections, index):
|
def __init__(self, sections, index, reach):
|
||||||
QUndoCommand.__init__(self)
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
self._sections = sections
|
self._sections = sections
|
||||||
self._index = index
|
self._index = index
|
||||||
|
self._reach = reach
|
||||||
self._new = None
|
self._new = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
|
|
@ -116,6 +117,7 @@ class AddCommand(QUndoCommand):
|
||||||
def redo(self):
|
def redo(self):
|
||||||
if self._new is None:
|
if self._new is None:
|
||||||
self._new = self._sections.new(self._index)
|
self._new = self._sections.new(self._index)
|
||||||
|
self._new.edge = self._reach
|
||||||
else:
|
else:
|
||||||
self._sections.insert(self._index, self._new)
|
self._sections.insert(self._index, self._new)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,13 +40,14 @@ class SectionsWindow(ASubMainWindow, ListedSubWindow):
|
||||||
def __init__(self, title="Sections", study=None, parent=None):
|
def __init__(self, title="Sections", study=None, parent=None):
|
||||||
title = title + " - " + study.name
|
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__(
|
super(SectionsWindow, self).__init__(
|
||||||
name=title, ui="Sections", parent=parent
|
name=title, ui="Sections", parent=parent
|
||||||
)
|
)
|
||||||
|
|
||||||
self._study = study
|
|
||||||
self._sections = self._study.river.sections
|
|
||||||
|
|
||||||
self.setup_sc()
|
self.setup_sc()
|
||||||
self.setup_table()
|
self.setup_table()
|
||||||
self.setup_graph()
|
self.setup_graph()
|
||||||
|
|
@ -67,31 +68,25 @@ class SectionsWindow(ASubMainWindow, ListedSubWindow):
|
||||||
|
|
||||||
table = self.find(QTableView, f"tableView")
|
table = self.find(QTableView, f"tableView")
|
||||||
self._table = TableModel(
|
self._table = TableModel(
|
||||||
data = self._study.river,
|
data = self._current_reach,
|
||||||
|
study = self._study,
|
||||||
undo = self._undo_stack,
|
undo = self._undo_stack,
|
||||||
)
|
)
|
||||||
table.setModel(self._table)
|
table.setModel(self._table)
|
||||||
|
|
||||||
self._delegate_edge = ComboBoxDelegate(
|
|
||||||
data = self._study.river,
|
|
||||||
mode = "edge",
|
|
||||||
parent=self
|
|
||||||
)
|
|
||||||
self._delegate_stricklers = ComboBoxDelegate(
|
self._delegate_stricklers = ComboBoxDelegate(
|
||||||
data = self._study.river,
|
data = self._current_reach,
|
||||||
|
study = self._study,
|
||||||
mode = "stricklers",
|
mode = "stricklers",
|
||||||
parent=self
|
parent=self
|
||||||
)
|
)
|
||||||
|
|
||||||
table.setItemDelegateForColumn(
|
table.setItemDelegateForColumn(
|
||||||
1, self._delegate_edge
|
3, self._delegate_stricklers
|
||||||
)
|
)
|
||||||
table.setItemDelegateForColumn(
|
table.setItemDelegateForColumn(
|
||||||
4, self._delegate_stricklers
|
4, self._delegate_stricklers
|
||||||
)
|
)
|
||||||
table.setItemDelegateForColumn(
|
|
||||||
5, self._delegate_stricklers
|
|
||||||
)
|
|
||||||
|
|
||||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||||
|
|
@ -147,11 +142,7 @@ class SectionsWindow(ASubMainWindow, ListedSubWindow):
|
||||||
highlight = None
|
highlight = None
|
||||||
|
|
||||||
if len(rows) > 0:
|
if len(rows) > 0:
|
||||||
edge = self._study\
|
edge = self._current_reach
|
||||||
.river\
|
|
||||||
.sections\
|
|
||||||
.get(rows[0])\
|
|
||||||
.edge
|
|
||||||
if edge:
|
if edge:
|
||||||
data = edge.reach
|
data = edge.reach
|
||||||
sec = self._sections.get(rows[0])
|
sec = self._sections.get(rows[0])
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ _translate = QCoreApplication.translate
|
||||||
|
|
||||||
table_headers = {
|
table_headers = {
|
||||||
"name": _translate("Sections", "Name"),
|
"name": _translate("Sections", "Name"),
|
||||||
"edge": _translate("Sections", "Reach"),
|
# "edge": _translate("Sections", "Reach"),
|
||||||
"begin_kp": _translate("Sections", "Begin kp (m)"),
|
"begin_kp": _translate("Sections", "Begin kp (m)"),
|
||||||
"end_kp": _translate("Sections", "End kp (m)"),
|
"end_kp": _translate("Sections", "End kp (m)"),
|
||||||
"begin_strickler": _translate("Sections", "Begin strickler"),
|
"begin_strickler": _translate("Sections", "Begin strickler"),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue