[core] improvement: instantiating custom actions on demand

This commit is contained in:
Vinicius Moreira
2022-02-25 16:06:17 -03:00
parent 27e430a7ef
commit 8a0609de06

View File

@@ -54,23 +54,38 @@ class GenericSoftwareManager(SoftwareManager):
self.settings_manager = settings_manager
self.http_client = context.http_client
self.configman = CoreConfigManager()
self.extra_actions = (CustomSoftwareAction(i18n_label_key='action.reset',
i18n_status_key='action.reset.status',
i18n_description_key='action.reset.desc',
manager_method='reset',
manager=self,
icon_path=resource.get_path('img/logo.svg'),
requires_root=False,
refresh=False),)
self.dynamic_extra_actions: Dict[CustomSoftwareAction, Callable[[dict], bool]] = {
CustomSoftwareAction(i18n_label_key='action.backups',
i18n_status_key='action.backups.status',
i18n_description_key='action.backups.desc',
manager_method='launch_timeshift',
manager=self,
icon_path='timeshift',
requires_root=False,
refresh=False): self.is_backups_action_available}
self._action_reset: Optional[CustomSoftwareAction] = None
self._dynamic_extra_actions: Optional[Dict[CustomSoftwareAction, Callable[[dict], bool]]] = None
@property
def dynamic_extra_actions(self) -> Dict[CustomSoftwareAction, Callable[[dict], bool]]:
if self._dynamic_extra_actions is None:
self._dynamic_extra_actions = {
CustomSoftwareAction(i18n_label_key='action.backups',
i18n_status_key='action.backups.status',
i18n_description_key='action.backups.desc',
manager_method='launch_timeshift',
manager=self,
icon_path='timeshift',
requires_root=False,
refresh=False): self.is_backups_action_available
}
return self._dynamic_extra_actions
@property
def action_reset(self) -> CustomSoftwareAction:
if self._action_reset is None:
self._action_reset = CustomSoftwareAction(i18n_label_key='action.reset',
i18n_status_key='action.reset.status',
i18n_description_key='action.reset.desc',
manager_method='reset',
icon_path=resource.get_path('img/logo.svg'),
requires_root=False,
manager=self,
refresh=False)
return self._action_reset
def _is_timeshift_launcher_available(self) -> bool:
return bool(shutil.which('timeshift-launcher'))
@@ -635,8 +650,7 @@ class GenericSoftwareManager(SoftwareManager):
if available(app_config):
yield action
for action in self.extra_actions:
yield action
yield self.action_reset
def _fill_sizes(self, man: SoftwareManager, pkgs: List[SoftwarePackage]):
ti = time.time()