def generate_add_remove_select_inspect_box_template(window, key, labels, wheres, parent, selector_handle, memory_handle, base_class, function_handles = None, verbosities = None): if wheres[0] is wheres[1]: whars = wheres[:-1] else: whars = wheres _add_func_ = lgb.generate_add_function(base_class, parent = parent, wheres = whars) _sel_func_ = lgb.generate_selected_function(wheres[1], lfu.grab_mobj_names(wheres[1]), selector_handle, offset = 1) _rem_func_ = lgb.generate_remove_function(_sel_func_, parent = parent, wheres = wheres) template = interface_template_gui( layout = 'grid', widg_positions = [(0, 0), (0, 2), (1, 2)], widg_spans = [(3, 2), None, None], grid_spacing = 10, widgets = ['mobj_catalog', 'button_set'], verbosities = verbosities, instances = [[wheres[1], memory_handle[0]], None], keys = [[None, memory_handle[1]], None], handles = [selector_handle, None], labels = [None, labels], initials = [[memory_handle[0].__dict__[ memory_handle[1]]], None], bindings = [None, [lgb.create_reset_widgets_wrapper( window, _add_func_), lgb.create_reset_widgets_wrapper( window, _rem_func_)]]) if function_handles: for dex, func in zip(range(3), [_add_func_, _sel_func_, _rem_func_]): if function_handles[dex]: for hand in function_handles[dex]: hand[0].__dict__[hand[1]] = func return template
def interpret_template_radio(self, template, widg_dex): def generate_recast_inst_func(dex): def recast_inst_func(): selected = labels[dex] new_class = lfu.lookup_pairwise(zip( [base._class for base in instance.valid_base_classes], [base._tag for base in instance.valid_base_classes]), selected) instance.recast(new_class) instance.rewidget(True) return recast_inst_func try: labels = template.labels[widg_dex] except AttributeError: labels = ['...no labels...'] try: title = template.box_labels[widg_dex] except AttributeError: title = '' try: initial = template.initials[widg_dex][0] except AttributeError: initial = None try: inst_tuple = template.instances[widg_dex][0] except AttributeError: inst_tuple = None try: key = template.keys[widg_dex][0] except AttributeError: key = None try: rewidget = template.rewidget[widg_dex][0] except AttributeError: rewidget = True if inst_tuple: instance = inst_tuple[1] base_class = inst_tuple[0] radios = [lgb.create_radios(options = labels, title = title, initial = initial, instance = base_class, key = key, rewidget = rewidget)] [rad.clicked.connect(lgb.create_reset_widgets_wrapper( self.parent, generate_recast_inst_func(dex))) for dex, rad in enumerate(radios[0].children()[1:])] return radios