Skip to content

Commit

Permalink
Correctly load and unload widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanW2 committed Nov 24, 2017
1 parent 3c9edcb commit 91ff74b
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 11 deletions.
4 changes: 2 additions & 2 deletions src/configmanager/ui/configmanagerdialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ def projectLoaded(self, project):
roam.utils.info("Project loaded: {}".format(project.name))
node = self.projectsnode.find_by_name(project.name)
node.create_children()
self.projectwidget.setpage(node.page, node, refreshingProject=self.reloadingProject)
self.projectwidget.setpage(node.page, node, refreshingProject=True)
self.reloadingProject = False
self.loadedProject = project
self.projectList.setExpanded(node.index(), True )
Expand Down Expand Up @@ -172,11 +172,11 @@ def nodeselected(self, index, last, reloadProject=False):
if project and self.loadedProject != project:
# Only load the project if it's different the current one.
roam.utils.info("Swapping to project: {}".format(project.name))
self.projectwidget.setproject(project)
if self.loadedProject:
lastnode = self.projectsnode.find_by_name(self.loadedProject.name)
self.projectList.setExpanded(lastnode.index(), False )
## We are closing the open project at this point. Watch for null ref after this.
self.projectwidget.setproject(project)
return
else:
roam.utils.debug("Setting page")
Expand Down
7 changes: 5 additions & 2 deletions src/configmanager/ui/layerwidgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,8 @@ def __init__(self, parent=None):
for widget in self.blockWidgets:
self._connect_save_event(widget)

self.blockWidgetSignels(True)

self.useablewidgets.currentIndexChanged.connect(self.swapwidgetconfig)

menu = QMenu("Field Actions")
Expand All @@ -254,6 +256,7 @@ def __init__(self, parent=None):
self.btnDeleteForm.pressed.connect(ConfigEvents.deleteForm.emit)

def unload_project(self):
print "UNLOAD PROJECT!!!"
self.blockWidgetSignels(True)

def _connect_save_event(self, widget):
Expand Down Expand Up @@ -354,7 +357,6 @@ def formtabchanged(self, index):
:param index: The index of the new tab.
"""
# Don't generate the form preview if we are not on the preview tab.
self._save_current_widget()
if index == 3:
self.generate_form_preview()

Expand Down Expand Up @@ -696,7 +698,7 @@ def load_widget(self, index, last):
expression = default['expression']
self.defaultValueExpression.setText(expression)
layer = roam.api.utils.layer_by_name(layer)
self.defaultLayerCombo.setLayer(layer)
# self.defaultLayerCombo.setLayer(layer)
self.defaultFieldCombo.setLayer(layer)
self.defaultFieldCombo.setField(defaultfield)

Expand Down Expand Up @@ -763,6 +765,7 @@ def _save_current_widget(self, *args):

def _save_widget(self, index):
# roam.utils.debug("FormWidget: Save widget")
print("SENDER: {}".format(self.sender().objectName()))
if not self.project:
return
widgetdata = self._get_widget_config()
Expand Down
24 changes: 17 additions & 7 deletions src/configmanager/ui/projectwidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,16 +145,22 @@ def setpage(self, page, node, refreshingProject=False):
else:
roam.utils.info("Reloading project. Not saving current config values")

self.unload_current_widget()

# Set the new widget for the selected page
self.stackedWidget.setCurrentIndex(page)

widget = self.stackedWidget.currentWidget()
print "New widget {}".format(widget.objectName())
if hasattr(widget, "set_project"):
widget.set_project(self.project, self.currentnode)

def notify_current_widget(self):
def unload_current_widget(self):
print "NOTIFY!!"
widget = self.stackedWidget.currentWidget()
widget.unload_project()
print widget
if hasattr(widget, "unload_project"):
widget.unload_project()

def write_config_currentwidget(self):
"""
Expand Down Expand Up @@ -240,11 +246,15 @@ def setproject(self, project):
"""
Set the widgets active project.
"""
if self.project and QMessageBox.question(self,
"Save Current Project",
"Save {}?".format(self.project.name),
QMessageBox.Save | QMessageBox.No):
self._saveproject()
self.unload_current_widget()

if self.project:
savelast = QMessageBox.question(self,
"Save Current Project",
"Save {}?".format(self.project.name),
QMessageBox.Save | QMessageBox.No)
if savelast == QMessageBox.Accepted:
self._saveproject()

self.filewatcher.removePaths(self.filewatcher.files())
self.projectupdatedlabel.hide()
Expand Down

0 comments on commit 91ff74b

Please sign in to comment.