moved SettingsList to separate file

This commit is contained in:
gac-maloja
2021-09-29 19:38:15 +02:00
parent e0751e965d
commit 83de90b1a7
2 changed files with 81 additions and 78 deletions

79
scam.py
View File

@ -25,10 +25,8 @@ except ImportError:
from fake import PipelineClient
from tools import EXPANDING, STRETCH, make_filled_vbox, make_filled_hbox
from mathentry import MathEntry
from listentry import ListEntry
from entrybutton import EntryButton
from settings import SettingsList
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()

80
settings.py Normal file
View 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()