moved SettingsList to separate file
This commit is contained in:
79
scam.py
79
scam.py
@ -25,10 +25,8 @@ except ImportError:
|
|||||||
from fake import PipelineClient
|
from fake import PipelineClient
|
||||||
|
|
||||||
from tools import EXPANDING, STRETCH, make_filled_vbox, make_filled_hbox
|
from tools import EXPANDING, STRETCH, make_filled_vbox, make_filled_hbox
|
||||||
from mathentry import MathEntry
|
|
||||||
from listentry import ListEntry
|
|
||||||
from entrybutton import EntryButton
|
from entrybutton import EntryButton
|
||||||
|
from settings import SettingsList
|
||||||
|
|
||||||
|
|
||||||
pc = PipelineClient("http://sf-daqsync-01:8889")
|
pc = PipelineClient("http://sf-daqsync-01:8889")
|
||||||
@ -135,81 +133,6 @@ class MainPanel(wx.Panel):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SettingsList(wx.GridSizer):
|
|
||||||
|
|
||||||
def __init__(self, parent, hgap=5, vgap=5):
|
|
||||||
super().__init__(cols=2, hgap=hgap, vgap=vgap)
|
|
||||||
self.parent = parent
|
|
||||||
self.children = {}
|
|
||||||
|
|
||||||
def update(self, cfg):
|
|
||||||
self.clear()
|
|
||||||
for k, v in sorted(cfg.items()):
|
|
||||||
self.add(k, v)
|
|
||||||
|
|
||||||
def clear(self):
|
|
||||||
self.Clear(True)
|
|
||||||
|
|
||||||
def add(self, *args):
|
|
||||||
new = Setting(self.parent, *args)
|
|
||||||
self.children[new.get_name()] = new
|
|
||||||
self.Add(new.state)
|
|
||||||
self.Add(new.text, 0, wx.EXPAND|wx.ALL)
|
|
||||||
|
|
||||||
def get(self):
|
|
||||||
res = {}
|
|
||||||
for i in self.children.values():
|
|
||||||
name = i.get_name()
|
|
||||||
if i.get_state():
|
|
||||||
value = i.get_value()
|
|
||||||
else:
|
|
||||||
value = None
|
|
||||||
res[name] = value
|
|
||||||
return res
|
|
||||||
|
|
||||||
def set(self, name, value):
|
|
||||||
self.children[name].text.SetValue(value)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Setting:
|
|
||||||
|
|
||||||
def __init__(self, parent, label, value):
|
|
||||||
self.state = state = wx.CheckBox(parent, label=label)
|
|
||||||
|
|
||||||
if isinstance(value, list):
|
|
||||||
self.text = text = ListEntry(parent, style=wx.TE_RIGHT)
|
|
||||||
else:
|
|
||||||
self.text = text = MathEntry(parent, style=wx.TE_RIGHT)
|
|
||||||
|
|
||||||
state.Bind(wx.EVT_CHECKBOX, self.on_state_change)
|
|
||||||
|
|
||||||
if value is None:
|
|
||||||
state.SetValue(False)
|
|
||||||
text.Disable()
|
|
||||||
else:
|
|
||||||
state.SetValue(True)
|
|
||||||
text.SetValue(value)
|
|
||||||
|
|
||||||
|
|
||||||
def get_name(self):
|
|
||||||
return self.state.GetLabel()
|
|
||||||
|
|
||||||
def get_state(self):
|
|
||||||
return self.state.GetValue()
|
|
||||||
|
|
||||||
def get_value(self):
|
|
||||||
return self.text.GetValue()
|
|
||||||
|
|
||||||
|
|
||||||
def on_state_change(self, event):
|
|
||||||
if self.get_state():
|
|
||||||
self.text.Enable()
|
|
||||||
else:
|
|
||||||
self.text.Disable()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app = wx.App()
|
app = wx.App()
|
||||||
|
80
settings.py
Normal file
80
settings.py
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
import wx
|
||||||
|
from mathentry import MathEntry
|
||||||
|
from listentry import ListEntry
|
||||||
|
|
||||||
|
|
||||||
|
class SettingsList(wx.GridSizer):
|
||||||
|
|
||||||
|
def __init__(self, parent, hgap=5, vgap=5):
|
||||||
|
super().__init__(cols=2, hgap=hgap, vgap=vgap)
|
||||||
|
self.parent = parent
|
||||||
|
self.children = {}
|
||||||
|
|
||||||
|
def update(self, cfg):
|
||||||
|
self.clear()
|
||||||
|
for k, v in sorted(cfg.items()):
|
||||||
|
self.add(k, v)
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self.Clear(True)
|
||||||
|
|
||||||
|
def add(self, *args):
|
||||||
|
new = Setting(self.parent, *args)
|
||||||
|
self.children[new.get_name()] = new
|
||||||
|
self.Add(new.state)
|
||||||
|
self.Add(new.text, 0, wx.EXPAND|wx.ALL)
|
||||||
|
|
||||||
|
def get(self):
|
||||||
|
res = {}
|
||||||
|
for i in self.children.values():
|
||||||
|
name = i.get_name()
|
||||||
|
if i.get_state():
|
||||||
|
value = i.get_value()
|
||||||
|
else:
|
||||||
|
value = None
|
||||||
|
res[name] = value
|
||||||
|
return res
|
||||||
|
|
||||||
|
def set(self, name, value):
|
||||||
|
self.children[name].text.SetValue(value)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Setting:
|
||||||
|
|
||||||
|
def __init__(self, parent, label, value):
|
||||||
|
self.state = state = wx.CheckBox(parent, label=label)
|
||||||
|
|
||||||
|
if isinstance(value, list):
|
||||||
|
self.text = text = ListEntry(parent, style=wx.TE_RIGHT)
|
||||||
|
else:
|
||||||
|
self.text = text = MathEntry(parent, style=wx.TE_RIGHT)
|
||||||
|
|
||||||
|
state.Bind(wx.EVT_CHECKBOX, self.on_state_change)
|
||||||
|
|
||||||
|
if value is None:
|
||||||
|
state.SetValue(False)
|
||||||
|
text.Disable()
|
||||||
|
else:
|
||||||
|
state.SetValue(True)
|
||||||
|
text.SetValue(value)
|
||||||
|
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return self.state.GetLabel()
|
||||||
|
|
||||||
|
def get_state(self):
|
||||||
|
return self.state.GetValue()
|
||||||
|
|
||||||
|
def get_value(self):
|
||||||
|
return self.text.GetValue()
|
||||||
|
|
||||||
|
|
||||||
|
def on_state_change(self, event):
|
||||||
|
if self.get_state():
|
||||||
|
self.text.Enable()
|
||||||
|
else:
|
||||||
|
self.text.Disable()
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user