def make_font_setter(fn, const_text="", var_text="", ddl_size="auto"): from thorpy.elements.launchers.dropdownlistlauncher import DropDownListLauncher from thorpy.miscgui.reaction import Reaction from thorpy.miscgui.metadata import MetaDataManager import os, sys titles = list(constants.AVAILABLE_FONTS) titles.sort() button = DropDownListLauncher.make(const_text, var_text, titles, show_select=False, ddlf_size=ddl_size) def reac_func(event): font = event.value mdm = MetaDataManager() mdm.read_data(fn) mdm.data["font"] = font mdm.write_data(fn) #restart script python = sys.executable os.execl(python, python, *sys.argv) reac = Reaction(constants.THORPY_EVENT, reac_func, { "id": constants.EVENT_DDL, "el": button }) button.add_reaction(reac) return button
def make_font_setter(fn, const_text="", var_text="", ddl_size="auto"): from thorpy.elements.launchers.dropdownlistlauncher import DropDownListLauncher from thorpy.miscgui.reaction import Reaction from thorpy.miscgui.metadata import MetaDataManager import os, sys titles = list(constants.AVAILABLE_FONTS) titles.sort() button = DropDownListLauncher.make(const_text, var_text, titles, show_select=False, ddlf_size=ddl_size) def reac_func(event): font = event.value mdm = MetaDataManager() mdm.read_data(fn) mdm.data["font"] = font mdm.write_data(fn) #restart script python = sys.executable os.execl(python, python, * sys.argv) reac = Reaction(constants.THORPY_EVENT, reac_func, {"id":constants.EVENT_DDL, "el":button}) button.add_reaction(reac) return button
def get_handler_for(variable): type_ = type(variable.value) value = variable.value text = variable.text limits = variable.limits handler_type = variable.handler_type more = variable.more handler = None if handler_type: if handler_type == "color choice": ## cs = ColorSetter(text=text, value=value) handler = ColorSetterLauncher(value, text) elif handler_type == "file choice": limits.setdefault("launcher", False) limits.setdefault("light", True) limits.setdefault("ddl_size", None) limits.setdefault("folders", True) limits.setdefault("file_types", None) limits.setdefault("files", True) if limits["light"]: handler = BrowserLight(text=text, path=value, ddl_size=limits["ddl_size"], folders=limits["folders"], files=limits["files"], file_types=limits["file_types"]) else: handler = Browser(text=text, path=value, ddl_size=limits["ddl_size"], folders=limits["folders"], files=limits["files"], file_types=limits["file_types"]) else: handler = obtain_valid_object(handler_type, value=value, type_=type_, text=text, limits=limits) elif type_ is tuple: if len(value) == 3: ## handler = ColorSetter(text=text, value=value) handler = ColorSetterLauncher(value, text, finish=False) elif type_ is list: var_text = more.get("var_text", value[0]) ddlf_size = more.get("ddlf_size", "auto") handler = DropDownListLauncher(const_text=text, var_text=var_text, titles=value, ddlf_size=ddlf_size, finish=False) elif ((type_ is str) or not(limits)) and not(type_ is bool): if not(limits) or isinstance(limits,str): ilimits = (None, None) else: ilimits = limits handler = Inserter(text, value=str(value), value_type=type_, size=ilimits, finish=False) if limits == "float": handler.numeric_only = True handler.int_only = False handler._value_type = float elif limits == "int": handler.numeric_only = True handler.int_only = True handler._value_type = int elif (type_ is int) or (type_ is float): length = more.get("length", 100) handler = SliderXSetter(length, limits, text, type_=type_, initial_value=value, finish=False) elif type_ is bool: handler = Checker(variable.text, value=variable.value, finish=False) if handler: handler.rank = variable.rank return handler else: raise Exception( "Variable doesn't have default handler: " + str(text))