Skip to content

Commit 0cbdd35

Browse files
committed
read form and save config when Panel is hidden
1 parent 27403f2 commit 0cbdd35

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

larch/wxxas/taskpanel.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,15 +306,29 @@ def show_subframe(self, name, frameclass, **opts):
306306
self.subframes[name] = frameclass(self, **opts)
307307

308308
def onPanelExposed(self, **kws):
309-
# called when notebook is selected
309+
# called when notebook is selected: process group
310310
fname = self.controller.filelist.GetStringSelection()
311311
if fname in self.controller.file_groups:
312312
gname = self.controller.file_groups[fname]
313313
dgroup = self.controller.get_group(gname)
314-
self.ensure_xas_processed(dgroup)
314+
if dgroup.datatype == 'xas':
315+
self.ensure_xas_processed(dgroup)
315316
self.fill_form(dgroup)
316317
self.process(dgroup=dgroup)
317318

319+
def onPanelHidden(self, **kws):
320+
# called when notebook is de-selected: save config
321+
fname = self.controller.filelist.GetStringSelection()
322+
if fname in self.controller.file_groups:
323+
gname = self.controller.file_groups[fname]
324+
dgroup = self.controller.get_group(gname)
325+
if dgroup is None:
326+
return
327+
conf = self.get_config()
328+
conf.update(self.read_form())
329+
setattr(dgroup.config, self.configname, conf)
330+
331+
318332
def write_message(self, msg, panel=0):
319333
self.controller.write_message(msg, panel=panel)
320334

larch/wxxas/xasgui.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -579,9 +579,15 @@ def get_nbpage(self, name):
579579
return ipage, self.nb.GetPage(ipage)
580580

581581
def onNBChanged(self, event=None):
582-
callback = getattr(self.nb.GetCurrentPage(), 'onPanelExposed', None)
583-
if callable(callback):
584-
callback()
582+
oldpage = self.nb.GetPage(event.GetOldSelection())
583+
newpage = self.nb.GetPage(event.GetSelection())
584+
on_hide = getattr(oldpage, 'onPanelHidden', None)
585+
if callable(on_hide):
586+
on_hide()
587+
588+
on_expose = getattr(newpage, 'onPanelExposed', None)
589+
if callable(on_expose):
590+
on_expose()
585591

586592
def onSelAll(self, event=None):
587593
self.controller.filelist.select_all()

0 commit comments

Comments
 (0)