s.Add(ctrl, pos=(3+i,2), span=(1,2), flag=wx.EXPAND|wx.LEFT|wx.RIGHT,border=3)
ctrl.Bind(wx.EVT_TEXT, self.OnSettingChange)
- ctrl.Bind(wx.EVT_WINDOW_DESTROY, self.OnCtrlDestroyed)
pluginPanel.paramCtrls[param['name']] = ctrl
i += 1
self.panelList.append(pluginPanel)
return True
- # This is needed because on wx 2.8, a SettingChange event
- # is sent right after the ctrl gets destroyed which causes a PyDeadCode exception
- def OnCtrlDestroyed(self, e):
- ctrl = e.GetWindow()
- for panel in self.panelList:
- for k in panel.paramCtrls.keys():
- if panel.paramCtrls[k] == ctrl:
- del panel.paramCtrls[k]
-
def OnSettingChange(self, e):
for panel in self.panelList:
idx = self.panelList.index(panel)
for k in panel.paramCtrls.keys():
- if type(panel.paramCtrls[k].GetValue()) == bool:
- self.pluginConfig[idx]['params'][k] = int(panel.paramCtrls[k].GetValue())
- else:
- self.pluginConfig[idx]['params'][k] = panel.paramCtrls[k].GetValue()
+ if panel.paramCtrls[k] == e.GetEventObject():
+ if type(panel.paramCtrls[k].GetValue()) == bool:
+ self.pluginConfig[idx]['params'][k] = int(panel.paramCtrls[k].GetValue())
+ else:
+ self.pluginConfig[idx]['params'][k] = panel.paramCtrls[k].GetValue()
pluginInfo.setPostProcessPluginConfig(self.pluginConfig)
self.callback()