Skip to content

Commit cc09ed0

Browse files
Merge pull request #2721 from SasView/2712-annoying-behaviour-when-opening-a-project
2712 annoying behaviour when opening a project
2 parents 4f23e38 + dd14070 commit cc09ed0

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

src/sas/qtgui/MainWindow/DataExplorer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,6 +1030,10 @@ def updatePerspectiveCombo(self, index):
10301030
Notify the gui manager about the new perspective chosen.
10311031
"""
10321032

1033+
# Check that a valid index has been chosen, can happen in some cases such a loading projects
1034+
if index < 0:
1035+
return
1036+
10331037
# Notify via communicator
10341038
self.communicator.perspectiveChangedSignal.emit(self.cbFitting.itemText(index))
10351039

src/sas/qtgui/MainWindow/GuiManager.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,20 +207,27 @@ def addWidgets(self):
207207
self.WhatsNew = WhatsNew(self)
208208

209209
def loadAllPerspectives(self):
210+
""" Load all the perspectives"""
210211
# Close any existing perspectives to prevent multiple open instances
211212
self.closeAllPerspectives()
212213
# Load all perspectives
213-
loaded_dict = {}
214+
loaded_dict = {} # dictionary that will ultimately keep track of all perspective instances
214215
for name, perspective in Perspectives.PERSPECTIVES.items():
215216
try:
217+
# Instantiate perspective
216218
loaded_perspective = perspective(parent=self)
219+
220+
# Save in main dict
217221
loaded_dict[name] = loaded_perspective
218-
pref_widgets = loaded_perspective.preferences
219-
for widget in pref_widgets:
220-
self.preferences.addWidget(widget)
222+
223+
# Register the perspective with the prefernce object
224+
self.preferences.registerPerspectivePreferences(loaded_perspective)
225+
221226
except Exception as e:
222227
logger.error(f"Unable to load {name} perspective.\n{e}")
223228
logger.error(e, exc_info=True)
229+
230+
# attach loaded perspectives to this class
224231
self.loadedPerspectives = loaded_dict
225232

226233
def closeAllPerspectives(self):

src/sas/qtgui/Utilities/Preferences/PreferencesPanel.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
from typing import Optional, Callable, Dict, Any, Union, List
88

99
from sas.system import config
10+
11+
from sas.qtgui.Perspectives.perspective import Perspective
12+
1013
from sas.qtgui.Utilities.Preferences.UI.PreferencesUI import Ui_preferencesUI
1114
from sas.qtgui.Utilities.Preferences.PreferencesWidget import PreferencesWidget
1215

@@ -56,6 +59,8 @@ def __init__(self, parent: Optional[Any] = None):
5659
self.buttonBox.button(QDialogButtonBox.Help).clicked.connect(self.help)
5760
self._set_accept()
5861

62+
self.registered_perspectives: list[str] = []
63+
5964
def addWidgets(self, widgets: Dict[str, Callable]):
6065
"""Add a list of named widgets to the window"""
6166
for name, widget in widgets.items():
@@ -169,6 +174,7 @@ def close(self):
169174

170175
def addWidget(self, widget: QWidget, name: Optional[str] = None):
171176
"""Add a single widget to the panel"""
177+
172178
# Set the parent of the new widget to the parent of this window
173179
widget.parent = self
174180
self.stackedWidget.addWidget(widget)
@@ -177,8 +183,19 @@ def addWidget(self, widget: QWidget, name: Optional[str] = None):
177183
name = name if name is not None else getattr(widget, 'name', None)
178184
name = name if name is not None else "Generic Preferences"
179185
# Add the widget default reset method to the global set
186+
180187
self.listWidget.addItem(name)
181188

189+
def registerPerspectivePreferences(self, perspective: Perspective):
190+
""" Register preferences from a perspective"""
191+
192+
if perspective.name not in self.registered_perspectives:
193+
194+
for preference_widget in perspective.preferences:
195+
196+
self.addWidget(preference_widget)
197+
self.registered_perspectives.append(perspective.name)
198+
182199
def help(self):
183200
"""Open the help window associated with the preferences window"""
184201
tree_location = "/user/qtgui/MainWindow/preferences_help.html"

0 commit comments

Comments
 (0)