enable multiple profiles in discharge visualization window

terraz_dev
Theophile Terraz 2025-03-19 16:55:09 +01:00
parent e576bb15f1
commit 46738cec6b
3 changed files with 45 additions and 32 deletions

View File

@ -29,7 +29,7 @@ _translate = QCoreApplication.translate
class PlotAC(PamhyrPlot):
def __init__(self, canvas=None, trad=None, toolbar=None,
results=None, reach_id=0, profile_id=0, res_id=0,
results=None, reach_id=0, profile_id=[0], res_id=[0],
parent=None):
super(PlotAC, self).__init__(
canvas=canvas,

View File

@ -35,7 +35,7 @@ logger = logging.getLogger()
class PlotH(PamhyrPlot):
def __init__(self, canvas=None, trad=None, toolbar=None,
results=None, reach_id=0, profile_id=0, res_id=[0],
results=None, reach_id=0, profile_id=[0], res_id=[0],
parent=None):
super(PlotH, self).__init__(
canvas=canvas,
@ -127,7 +127,8 @@ class PlotH(PamhyrPlot):
results = self.results[res_id]
reach = results.river.reach(self._current_reach_id)
profile = reach.profile(self._current_profile_id)
for i, p in enumerate(self._current_profile_id):
profile = reach.profile(p)
x = self._timestamps
y = profile.get_key("Q")
@ -145,6 +146,7 @@ class PlotH(PamhyrPlot):
x, y,
label=label,
color=self.colors[res_id + 1],
linestyle=self.linestyle[i % len(self.linestyle)],
**self.plot_default_kargs
)
self._line.append(line)
@ -162,7 +164,6 @@ class PlotH(PamhyrPlot):
def draw_max(self, res_id):
results = self.results[res_id]
reach = results.river.reach(self._current_reach_id)
profile = reach.profile(self._current_profile_id)
if reach.geometry.number_profiles == 0:
self._init = False
@ -194,12 +195,13 @@ class PlotH(PamhyrPlot):
def set_reach(self, reach_id):
self._current_reach_id = reach_id
self._current_profile_id = 0
self._current_profile_id = [0]
self.draw()
def set_profile(self, profile_id):
self._current_profile_id = profile_id
self.update()
# self.update()
self.draw()
def set_result(self, res_id):
self._current_res_id = res_id

View File

@ -126,7 +126,7 @@ class ResultsWindow(PamhyrWindow):
return
self.update(reach_id=0,
profile_id=0)
profile_id=[0])
self.update_table_selection_solver(0)
@ -269,7 +269,7 @@ class ResultsWindow(PamhyrWindow):
canvas=self.canvas_4,
results=self._results,
reach_id=0,
profile_id=0,
profile_id=[0],
res_id=self._current_results,
trad=self._trad,
toolbar=self.toolbar_4,
@ -432,15 +432,15 @@ class ResultsWindow(PamhyrWindow):
self.update_table_selection_profile(0)
if profile_id is not None:
self.plot_xy.set_profile(profile_id)
self.plot_ac.set_profile(profile_id)
self.plot_rkc.set_profile(profile_id)
self.plot_xy.set_profile(profile_id[0])
self.plot_ac.set_profile(profile_id[0])
self.plot_rkc.set_profile(profile_id[0])
self.plot_h.set_profile(profile_id)
for plot in self._additional_plot:
self._additional_plot[plot].set_profile(profile_id)
self._additional_plot[plot].set_profile(profile_id[0])
self.update_table_selection_profile(profile_id)
# self.update_table_selection_profile(profile_id[0])
if solver_id is not None:
self._current_results = solver_id
@ -481,6 +481,14 @@ class ResultsWindow(PamhyrWindow):
return indexes[0].row()
def _get_current_profiles_list(self):
table = self.find(QTableView, f"tableView_profile")
indexes = table.selectedIndexes()
if len(indexes) == 0:
return 0
return [i.row() for i in indexes]
def _get_current_timestamp(self):
return self._timestamps[
self._slider_time.value()
@ -496,12 +504,11 @@ class ResultsWindow(PamhyrWindow):
def _set_current_profile(self):
table = self.find(QTableView, f"tableView_profile")
indexes = table.selectedIndexes()
indexes = table.selectionModel().selectedRows()
if len(indexes) == 0:
return
ind = indexes[0].row()
self.update(profile_id=ind)
self.update(profile_id=[i.row() for i in indexes])
def _set_current_profile_raw_data(self):
return
@ -545,6 +552,8 @@ class ResultsWindow(PamhyrWindow):
self._reload_slider()
def _add_custom_plot(self):
profile_id = self._get_current_profile()
self.update_table_selection_profile(profile_id)
dlg = CustomPlotValuesSelectionDialog(parent=self)
if dlg.exec():
x, y, envelop = dlg.value
@ -665,6 +674,8 @@ class ResultsWindow(PamhyrWindow):
self._button_play.setIcon(self._icon_start)
def _export(self):
profile_id = self._get_current_profile()
self.update_table_selection_profile(profile_id)
dlg = CustomExportDialog(parent=self)
if dlg.exec():