def _var_selection_changed(self, *_): self._copy_to_manual_update_enabled() indices = self.selected_indices() # set of all methods for the current selection methods = [self.var_state[i].method for i in indices] def key(method): if isinstance(method, Default): return Default, (None, ) return type(method), tuple(method) mset = list(unique_everseen(methods, key=key)) self.controlbox.setEnabled(len(mset) > 0) if len(mset) == 1: method = mset.pop() self.method = Methods.from_method(method) if isinstance(method, (EqualFreq, EqualWidth)): self.k = method.k elif isinstance(method, Custom): self.cutpoints = method.points else: # deselect the current button self.method = -1 bg = self.controlbox.group button_group_reset(bg) self._update_spin_positions()
def _update_interface(self): """ Update the user interface according to selection - If VarHints for all selected variables are the same, check the corresponding radio button and fill the corresponding controls; - otherwise, uncheck all radios. """ if self.__interface_update: return try: self.__interface_update = True keys = self.varkeys_for_selection() mset = list(unique_everseen(map(self.var_hints.get, keys))) if len(mset) != 1: self._uncheck_all_buttons() return if mset == [None]: method_id, args = Methods.Default, () else: method_id, args = mset.pop() self._check_button(method_id, True) self._set_values(method_id, args) finally: self.__interface_update = False