Geometry: Fix profile sub window open.

setup.py
Pierre-Antoine Rouby 2023-10-20 17:01:28 +02:00
parent 4d1eb0fecc
commit f074e1fdf2
2 changed files with 37 additions and 13 deletions

View File

@ -65,6 +65,8 @@ class ProfileWindow(PamhyrWindow):
parent=parent parent=parent
) )
self._hash_data.append(profile)
self.setup_table() self.setup_table()
self.setup_plot() self.setup_plot()
self.setup_connections() self.setup_connections()

View File

@ -216,6 +216,30 @@ class GeometryWindow(PamhyrWindow):
self.plot_kpc() self.plot_kpc()
self.plot_ac() self.plot_ac()
def _sub_window_exists(self, cls,
data=None):
"""Check if window already exists
Check if window already exists, used to deni window open
duplication
Args:
cls: Window class, must inerit to PamhyrWindow or
PamhyrDialog
data: Data used for hash computation of cls
Returns:
The window if hash already exists on sub window dictionary,
otherelse None
"""
hash = cls._hash(data)
if self.sub_win_exists(hash):
win = self.get_sub_win(hash)
win.activateWindow()
return True
else:
return False
def edit_profile(self): def edit_profile(self):
self.tableView.model().blockSignals(True) self.tableView.model().blockSignals(True)
@ -228,20 +252,18 @@ class GeometryWindow(PamhyrWindow):
for row in rows: for row in rows:
profile = self._reach.profile(row) profile = self._reach.profile(row)
win = self.sub_win_filter_first( if self._sub_window_exists(
"Profile", ProfileWindow,
contain=[self._reach.name, str(profile.kp)] data=[None, None, profile]
) ):
continue
if win is None:
win = ProfileWindow( win = ProfileWindow(
profile=profile, profile=profile,
parent=self, parent=self,
) )
self._profile_window.append(win) self._profile_window.append(win)
win.show() win.show()
else:
win.activateWindow()
self.tableView.model().blockSignals(False) self.tableView.model().blockSignals(False)