Пример #1
0
 def build(self) -> Any:
     self.field.itype = self.field.itype or InputType.TEXT
     if self.field.itype == InputType.CHECKBOX:
         self.field.value = self.field.value if self.field.value in [
             '0', '1'
         ] else 0
         self.field.min_length = self.field.max_length = 1
         self.validator(InputValidator.custom(r'[01]'))
     elif self.field.itype == InputType.SELECT:
         self.field.min_length = self.field.max_length = 1
         self.validator(InputValidator.anything())
     elif self.field.itype == InputType.MASKED:
         _, mask = MInputUtils.unpack_masked(self.field.value)
         self.field.min_length = self.field.max_length = len(mask)
         self.validator(
             InputValidator.custom(
                 mask.replace('#', '[0-9]').replace('@',
                                                    '[a-zA-Z]').replace(
                                                        '*', '.')))
     self.field.label = camelcase(self.field.label) or 'Field'
     self.field.min_length = self.field.min_length or 1
     self.field.max_length = self.field.max_length or 30
     self.field.access_type = self.field.access_type or AccessType.READ_WRITE
     self.field.icon = self.field.get_icon()
     self.field.value = self.field.value if self.field.value else ''
     self.parent.fields.append(self.field)
     return self.parent
Пример #2
0
 def _name_matches(widget_1_name: str, widget_2_name: str) -> bool:
     """Check if two names matches using defined name rules"""
     return \
         widget_1_name.lower() == widget_2_name.lower() \
         or widget_1_name == widget_2_name.capitalize() \
         or widget_1_name == camelcase(widget_2_name) \
         or widget_1_name.lower() == widget_2_name.lower().replace('_', '')
Пример #3
0
 def _create_widget(self, app_name: str) -> None:
     """Create an HSPyLib Widget application"""
     widget_name = camelcase(app_name).replace('_', '').replace(' ', '')
     sysout(f'Widget: {widget_name}')
     self._mkfile(
         f"widget_{app_name.lower()}.py",
         (self.TEMPLATES / "tpl-widget.py").read_text().replace('_WIDGET_NAME_', f"{widget_name}")
     )
Пример #4
0
 def execute(self, widget_name: str, widget_args: List[str]) -> None:
     """Execute the specified widget"""
     widget = self._find_widget(camelcase(widget_name))
     try:
         atexit.register(widget.cleanup)
         exit_code = widget.execute(*widget_args)
         if exit_code != ExitCode.SUCCESS:
             raise WidgetExecutionError(
                 f"Widget '{widget_name}' failed to execute. exit_code={exit_code}"
             )
     except Exception as err:
         raise WidgetExecutionError(
             f"Unable to execute widget '{widget_name}' -> {err}") from err
Пример #5
0
 def __init__(self, file: str, path: str):
     self.module = os.path.splitext(file)[0]
     self.name = camelcase(
         self.module.replace(self.WIDGET_MODULE_PREFIX, ''))
     self.clazz = f"{self.WIDGET_CLASS_PREFIX}{self.name.replace('_', '')}"
     self.path = path