cascade, onifon, onifoff, offifon and offofoff

This commit is contained in:
Douglas Clowes
2013-08-23 15:37:02 +10:00
parent 9da47fc1f7
commit ecbe9953e8

View File

@@ -25,6 +25,14 @@ def write_config_file(config, config_filename):
configfile.write("\n") configfile.write("\n")
#config.write(configfile) #config.write(configfile)
def do_cascade(config, name, cb_list, label, new_state):
if label in config.options(name):
cascade_list = config.get(name, label).lower().split(",")
for cb in cb_list:
lbl = cb.get_label().split(":")[0].lower()
if lbl in cascade_list:
cb.set_state(new_state)
def main(config_filename): def main(config_filename):
import urwid import urwid
@@ -40,11 +48,15 @@ def main(config_filename):
frame.footer = urwid.AttrWrap(urwid.Text( frame.footer = urwid.AttrWrap(urwid.Text(
line), 'header') line), 'header')
if 'cascade' in config.options(user_data): if 'cascade' in config.options(user_data):
cascade_list = config.get(user_data, 'cascade').split(",") do_cascade(config, user_data, cb_list, 'cascade', new_state)
for cb in cb_list: if new_state and 'onifon' in config.options(user_data):
lbl = cb.get_label().split(":")[0] do_cascade(config, user_data, cb_list, 'onifon', True)
if lbl in cascade_list: if new_state and 'offifon' in config.options(user_data):
cb.set_state(new_state) do_cascade(config, user_data, cb_list, 'offifon', False)
if (False == new_state) and 'onifoff' in config.options(user_data):
do_cascade(config, user_data, cb_list, 'onifoff', True)
if (False == new_state) and 'offifoff' in config.options(user_data):
do_cascade(config, user_data, cb_list, 'offifoff', False)
text_cb_list = list(config.sections()) text_cb_list = list(config.sections())
cb_map = {} cb_map = {}
@@ -56,25 +68,26 @@ def main(config_filename):
if group not in cb_map: if group not in cb_map:
cb_map[group] = [] cb_map[group] = []
cb_map[group].append(txt) cb_map[group].append(txt)
sorted_text_cb_list = []
for key in sorted(cb_map.keys()):
for val in sorted(cb_map[key]):
sorted_text_cb_list.append(val)
cb_list = [] cb_list = []
for txt in sorted_text_cb_list: for key in sorted(cb_map.keys()):
#cb_list.append(urwid.AttrWrap(urwid.Text("Group: %s" % key), 'bright'))
for txt in sorted(cb_map[key]):
state = False state = False
if 'enabled' in config.options(txt): if 'enabled' in config.options(txt):
if config.get(txt, 'enabled').lower() in ['1', 'yes', 'true']: if config.get(txt, 'enabled').lower() in ['1', 'yes', 'true']:
state = True state = True
config.set(txt, 'enabled', str(state)) config.set(txt, 'enabled', str(state))
cb_text = "" cb_text = ""
cb_text += txt cb_text += txt + ": ("
if 'group' in config.options(txt):
cb_text += config.get(txt, 'group').strip("\"") + ": "
if 'desc' in config.options(txt): if 'desc' in config.options(txt):
cb_text += ": (" + config.get(txt, 'desc').strip("\"") + ")" cb_text += config.get(txt, 'desc').strip("\"")
cb = urwid.CheckBox(cb_text, cb_text += ")"
cb = urwid.AttrWrap(urwid.CheckBox(cb_text,
state=state, state=state,
on_state_change=checkbox_change, on_state_change=checkbox_change,
user_data=txt) user_data=txt), 'buttn', 'buttnf')
cb_list.append(cb) cb_list.append(cb)
def fcc(focus): def fcc(focus):
@@ -86,9 +99,9 @@ def main(config_filename):
listbox_content = [ listbox_content = [
blank, blank,
urwid.Padding(urwid.GridFlow( urwid.Padding(urwid.GridFlow(
[urwid.AttrWrap(cb, 'buttn', 'buttnf') for cb in cb_list], cb_list,
60, 1, 0, 'left'), 76, 1, 0, 'left'),
left=4, right=3, min_width=60), left=2, right=2, min_width=76),
blank, blank,
blank blank
] ]