def restrictParameters(self) :
# Initialise allowed parameters
allowed_parameters = {}
for group_code in self.parameter_group_codes :
allowed_parameters[group_code] = self.parameter_via_group_codes[group_code][:]
# Resolve any restrictions based on data type
data_type = self.data_type_text.get()
if self.parameter_restricted_via_data_type.has_key(data_type) :
for group_code in self.parameter_group_codes :
if self.parameter_restricted_via_data_type[data_type].has_key(group_code) :
allowed_parameters[group_code] = self.parameter_restricted_via_data_type[data_type][group_code]
# Enable/disable parameter selections appropriately
allowed_groups = []
for i, group_code in enumerate(self.parameter_group_codes) :
if allowed_parameters[group_code] :
allowed_groups.append(group_code)
self.parameter_group_menu['menu'].entryconfigure(i, state=tk.NORMAL)
for j, parameter_code in enumerate(self.parameter_via_group_codes[group_code]) :
if len(self.parameter_via_group_codes[group_code]) > 1 or self.parameter_via_group_codes[group_code][0] != group_code :
if parameter_code in allowed_parameters[group_code] :
self.parameter_via_group_menu[group_code]['menu'].entryconfigure(j, state=tk.NORMAL)
else :
self.parameter_via_group_menu[group_code]['menu'].entryconfigure(j, state=tk.DISABLED)
else :
self.parameter_group_menu['menu'].entryconfigure(i, state=tk.DISABLED)
# Select another parameter/group if the current selection is not allowed
selected_group = self.parameter_group_selection_map[self.parameter_group_text.get()]
if selected_group not in allowed_groups :
self.selectParameterGroup(allowed_groups[0])
else :
selected_parameter = self.parameter_via_group_selection_map[selected_group][self.parameter_via_group_text[selected_group].get()]
if selected_parameter not in allowed_parameters[selected_group] :
self.selectParameter(selected_group, allowed_parameters[selected_group][0])
# Step 2 Method: Restrict Time Unit Via Data Type and/or Parameter
评论列表
文章目录