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

Geometry: Forbidden duplicate window.

Showing with 37 additions and 9 deletions
+37 -9
...@@ -86,12 +86,14 @@ class ProfileWindow(ASubMainWindow): ...@@ -86,12 +86,14 @@ class ProfileWindow(ASubMainWindow):
if (name is None) or (name == ""): if (name is None) or (name == ""):
name = _translate("MainWindowProfile", "(no name)") name = _translate("MainWindowProfile", "(no name)")
self.setWindowTitle( self._title = (
header + " - " + header + " - " +
f"{self._profile.reach.name}" + " - " + f"{self._profile.reach.name}" + " - " +
f"{name} ({self._profile.kp})" f"{name} ({self._profile.kp})"
) )
self.setWindowTitle(self._title)
def setup_sc(self): def setup_sc(self):
self._undo_stack = QUndoStack() self._undo_stack = QUndoStack()
......
...@@ -80,7 +80,8 @@ class GeometryWindow(ASubMainWindow, ListedSubWindow): ...@@ -80,7 +80,8 @@ class GeometryWindow(ASubMainWindow, ListedSubWindow):
self.changed_slider_value() self.changed_slider_value()
def setup_window(self): def setup_window(self):
self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}") self._title = f"{self.ui.mainwindow_title} - {self._reach.name}"
self.setWindowTitle(self._title)
def setup_sc(self): def setup_sc(self):
self._undo_stack = QUndoStack() self._undo_stack = QUndoStack()
......
...@@ -62,7 +62,7 @@ class ListedSubWindow(object): ...@@ -62,7 +62,7 @@ class ListedSubWindow(object):
( (
(n[0] == name) and (n[0] == name) and
reduce( reduce(
lambda acc, a: acc and (a in n[1]._title), lambda acc, c: acc and (c in n[1]._title),
contain, contain,
True True
) )
...@@ -74,6 +74,24 @@ class ListedSubWindow(object): ...@@ -74,6 +74,24 @@ class ListedSubWindow(object):
def sub_win_exists(self, name, contain = []): def sub_win_exists(self, name, contain = []):
if contain == []: if contain == []:
self._sub_win_exists(name) return self._sub_win_exists(name)
else: else:
self._sub_win_exists_with_contain(name, contain) return self._sub_win_exists_with_contain(name, contain)
def sub_win_filter_first(self, name, contain):
try:
return next(
filter(
lambda n: (
(n[0] == name) and
reduce(
lambda acc, c: acc and (c in n[1]._title),
contain,
True
)
),
self.sub_win_list,
)
)[1]
except:
return None
...@@ -455,10 +455,17 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): ...@@ -455,10 +455,17 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
Returns: Returns:
Nothing Nothing
""" """
if (self.model is not None and if (self.model is not None and self.model.river.has_current_reach()):
self.model.river.has_current_reach()): geometry = self.sub_win_filter_first(
geometry = GeometryWindow(model=self.model, parent=self) "Geometry",
geometry.show() contain = [self.model.river.current_reach().name]
)
if geometry == None:
geometry = GeometryWindow(model=self.model, parent=self)
geometry.show()
else:
geometry.activateWindow()
else: else:
self.msg_select_reach() self.msg_select_reach()
......
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