diff --git a/site_ansto/instrument/util/config_edit.py b/site_ansto/instrument/util/config_edit.py index f7b1c92e..a051d82b 100755 --- a/site_ansto/instrument/util/config_edit.py +++ b/site_ansto/instrument/util/config_edit.py @@ -6,7 +6,7 @@ # View Screen has 3 parts # (Instrument Configuration), (Configuration Options), (Option Implementation) # Uses MVC as InstConfigData, InstConfigView, InstConfigManager -# + # InstConfigData <>--- ConfigParser.SafeConfig # |--set_cfparse() @@ -14,13 +14,12 @@ # |--set_cfdata(), set_presdata() # |--set_xyz_data() call self.cfgdata.set_xyz() methods # -# urwid.Frame + +# urwid.Pile # ^ +# | # InstConfigView <>--- InstConfigManager, PresentationData # |--set_cfedit(), set_presdata() -# -# PresentationData -# |--set_cfdata() import os @@ -131,8 +130,6 @@ class OptionListWalker(CheckBoxListWalker): def set_focus(self, pos): """Emit 'focus_change' signal with position of button. """ - DBG.msg(0, - 'OptionListWalker:set_focus({0})->emit focus_change'.format(pos)) urwid.emit_signal(self, 'focus_change', pos) return super(OptionListWalker, self).set_focus(pos) @@ -370,18 +367,12 @@ class InstConfigData(object): """Change the given instrument configuration state.""" self.configuration_dict[cfg_id]['enabled'] = new_state - def opt_statechange(self, opt, new_state, udat=None): + def opt_statechange(self, opt, new_state): """Change the given option state.""" - DBG.msg(3, - 'InstConfigData:opt_statechange({0},{1},{2})'.format(opt, - new_state, udat)) self.opt_dict[opt]['enabled'] = new_state def imp_statechange(self, selected_imp, new_state, opt): """Change the given implementation state.""" - DBG.msg(self.msg_index, - 'InstConfigData:imp_statechange({0},{1},{2})'.format(selected_imp, - new_state, opt)) self.msg_index = (self.msg_index - 3) % 2 + 4 if new_state == True: self.opt_dict[opt]['selected_imp'] = selected_imp @@ -392,18 +383,17 @@ class InstConfigView(urwid.Pile): """Extend urwid.Pile to provide an instrument configuration viewer. """ - def __init__(self, config_lb, opt_lb, imp_lb, dbmsg): + def __init__(self, cfg_lb, opt_lb, imp_lb): """ Args: - config_lb: Instrument configuration listbox + cfg_lb: Instrument configuration listbox opt_lb: Configuration options listbox imp_lb: Available implementations listbox """ option_listboxes = [ - config_lb, + cfg_lb, opt_lb, - imp_lb, - dbmsg] + imp_lb] super(InstConfigView, self).__init__(option_listboxes) return @@ -419,7 +409,6 @@ class InstConfigManager(object): """Provides controller which keeps data and viewer in sync. """ - cf_msg_index = 8 def __init__(self, cf_dat): self.cf_dat = cf_dat urwid.register_signal(InstConfigManager, ['focus_change']) @@ -440,7 +429,7 @@ class InstConfigManager(object): item_states.sort() self.cfg_lw = RadioButtonListWalker(item_states, on_state_change = self.cf_statechange) - self.config_lb = OptionListBox(self.cfg_lw) + self.cfg_lb = OptionListBox(self.cfg_lw) self.opt_lb = OptionListBox(self.opt_lw) self.opt_lb.set_focus(0) return @@ -509,10 +498,6 @@ class InstConfigManager(object): if self.cf_dat.opt_dict[opt]['permanent'] == True: self.opt_lw.button_dict[opt].set_state(True) - DBG.msg(self.cf_msg_index, - 'InstConfigManager:cf_statechange({0},{1}):cascade={2}'.format( - cfg_id, new_state, cascade)) - self.cf_msg_index = (self.cf_msg_index - 7) % 2 + 8 return def opt_statechange(self, button, new_state, udat=None): @@ -535,7 +520,7 @@ class InstConfigManager(object): opt_button.set_label('{0}:{1}'.format(opt, imp)) self.cf_dat.set_imp(opt, imp) - self.cf_dat.opt_statechange(opt, new_state, udat) + self.cf_dat.opt_statechange(opt, new_state) def imp_statechange(self, button, new_state, opt): """Update label on the configuration option when it's implementation is @@ -554,9 +539,6 @@ class InstConfigManager(object): """Update implementation list when an option gets focus.""" optname = self.opt_optype_list[pos][0] optype = self.opt_optype_list[pos][1] - mstr = 'InstConfigManager:update_imp_lb({0})->select{1}'.format(pos, - optype) - DBG.msg(1, mstr) self.imp_lw = self.__gen_imp_listwalker(optname) self.imp_lb.use_listwalker(self.imp_lw) return @@ -574,48 +556,24 @@ def gen_input_handler(cf_man, cf_dat, cf_viewer): cf_dat.backup_files() cf_dat.write_config_file() elif key in ['right', 'tab']: - if cf_viewer.get_focus() == cf_man.config_lb: + if cf_viewer.get_focus() == cf_man.cfg_lb: cf_viewer.set_focus(cf_man.opt_lb) elif cf_viewer.get_focus() == cf_man.opt_lb: cf_viewer.set_focus(cf_man.imp_lb) else: - cf_viewer.set_focus(cf_man.config_lb) + cf_viewer.set_focus(cf_man.cfg_lb) elif key in ['left', 'shift tab']: - if cf_viewer.get_focus() == cf_man.config_lb: + if cf_viewer.get_focus() == cf_man.cfg_lb: cf_viewer.set_focus(cf_man.imp_lb) elif cf_viewer.get_focus() == cf_man.opt_lb: - cf_viewer.set_focus(cf_man.config_lb) + cf_viewer.set_focus(cf_man.cfg_lb) else: cf_viewer.set_focus(cf_man.opt_lb) return keyinput -class DEBUG: - """DEBUG class""" - msgTextDict = {} - msglist = [] - msg_ids = [ 'm0', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9' ] - def __init__(self, enabled=False): - self.enabled = enabled - if enabled: - for msg_id in self.msg_ids: - msg_text = urwid.Text(u'Space for message {0}'.format(msg_id)) - self.msgTextDict[msg_id] = msg_text - self.msglist.append(urwid.AttrMap(msg_text, 'body', 'focus')) - - mlw = urwid.SimpleListWalker(self.msglist) - self.mlb = urwid.ListBox(mlw) - - def msg(self, index, msg): - """Debug message.""" - if self.enabled: - mid = self.msg_ids[index] - self.msgTextDict[mid].set_text(msg) - -DBG = DEBUG(enabled=True) def main(config_ini): - global cf_dat, cf_man, cf_viewer """Create configuration editor.""" # Make configuration data @@ -626,8 +584,7 @@ def main(config_ini): cf_man = InstConfigManager(cf_dat) # Make configuration viewer - cf_viewer = InstConfigView(cf_man.config_lb, cf_man.opt_lb, cf_man.imp_lb, - DBG.mlb) + cf_viewer = InstConfigView(cf_man.cfg_lb, cf_man.opt_lb, cf_man.imp_lb) keyinput = gen_input_handler(cf_man, cf_dat, cf_viewer) urwid.MainLoop(cf_viewer, PALETTE, unhandled_input=keyinput).run()