Always show selected_imp in the implementation list for an option.

Fix imp_statechange bug (imp undefined for disabled options).
This commit is contained in:
Ferdi Franceschini
2014-07-06 09:40:37 +10:00
parent 37e75ab5b4
commit 7eaa8242bd

View File

@@ -443,7 +443,7 @@ class InstConfigManager:
self.opt_lb.set_focus(0) self.opt_lb.set_focus(0)
return return
def __imp_unavailable(self, imp): def __imp_unavailable(self, opt, imp):
"""Return True if an implementation is unavailable because it is used """Return True if an implementation is unavailable because it is used
by an enabled option. by an enabled option.
""" """
@@ -453,6 +453,10 @@ class InstConfigManager:
ckopt = self.cf_dat.imp2opt_dict[imp] ckopt = self.cf_dat.imp2opt_dict[imp]
if ckopt == 'none': if ckopt == 'none':
return False return False
opt_imp = self.cf_dat.opt_dict[opt]['selected_imp']
if opt_imp == imp:
return False
elif self.cf_dat.opt_dict[ckopt]['enabled']: elif self.cf_dat.opt_dict[ckopt]['enabled']:
return True return True
else: else:
@@ -462,7 +466,7 @@ class InstConfigManager:
"""Generate the appropriate listwalker for the given option.""" """Generate the appropriate listwalker for the given option."""
imp_items = [] imp_items = []
for imp in self.cf_dat.iter_implementations(opt): for imp in self.cf_dat.iter_implementations(opt):
if self.__imp_unavailable(imp): if self.__imp_unavailable(opt, imp):
continue continue
if imp == self.cf_dat.opt_dict[opt]['selected_imp']: if imp == self.cf_dat.opt_dict[opt]['selected_imp']:
imp_items.append((imp, True)) imp_items.append((imp, True))
@@ -509,7 +513,7 @@ class InstConfigManager:
opt = button.get_label().split(':')[0] opt = button.get_label().split(':')[0]
imp = self.cf_dat.opt_dict[opt]['selected_imp'] imp = self.cf_dat.opt_dict[opt]['selected_imp']
if new_state == True: if new_state == True:
if self.__imp_unavailable(imp): if self.__imp_unavailable(opt, imp):
self.cf_dat.opt_dict[opt]['selected_imp'] = 'none' self.cf_dat.opt_dict[opt]['selected_imp'] = 'none'
imp_none_button = self.imp_lw.button_dict['none'] imp_none_button = self.imp_lw.button_dict['none']
imp_none_button.set_state(True) imp_none_button.set_state(True)
@@ -526,8 +530,8 @@ class InstConfigManager:
"""Update label on the configuration option when it's implementation is """Update label on the configuration option when it's implementation is
changed. changed.
""" """
imp = button.get_label()
if new_state == True: if new_state == True:
imp = button.get_label()
self.cf_dat.set_imp(opt, imp) self.cf_dat.set_imp(opt, imp)
opt_button = self.opt_lw.button_dict[opt] opt_button = self.opt_lw.button_dict[opt]
opt_button.set_label('{0}:{1}'.format(opt, imp)) opt_button.set_label('{0}:{1}'.format(opt, imp))