"""reload-outline: Close the outline and reload it.""" c = self.c
# Commit any open edits. c.endEditing()
# Make sure the file has a name. if not c.fileName():
c.save()
# Abort the reload if the user vetos closing this outline. if c.changed:
veto = False try:
c.promptingForClose = True veto = c.frame.promptForSave()
- finally:
- c.promptingForClose = False
- if veto:
- g.es_print('Cancelling reload-outline command') return
# Save the file. c.save() g.app.recentFilesManager.writeRecentFilesFile(c)
# Remember old_index, the outline's position in the QTabbledWidget. dw = c.frame.top stacked_widget = dw.parent() tab_widget = dw.leo_master stacked_layout = None for w in stacked_widget.children():
- if isinstance(w, QtWidgets.QStackedLayout):
- stacked_layout = w break
# Remember the old values. old_index = stacked_layout.indexOf(dw) tab_names = [tab_widget.tabText(i) for i in range(tab_widget.count())]
# Completely close the outline. g.doHook("close-frame", c=c) frame = c.frame if frame in g.app.windowList:
g.app.destroyWindow(frame) g.app.windowList.remove(frame)
# Open the new outline. g.openWithFileName(fileName=c.fileName())
# Do nothing more if the index has not changed. new_index = stacked_layout.indexOf(dw) if new_index == old_index:
return
# Put dw in the proper place. stacked_layout.removeWidget(dw) stacked_layout.insertWidget(old_index, dw)
# Fix all tab names. for i, name in enumerate(tab_names):
tab_widget.setTabText(i, name)
# Select the proper tab. tab_widget.setCurrentIndex(old_index)