mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 01:14:15 +02:00
[view] improvement: displaying a tooltip with the missing dependencies for a supported packaging technology
This commit is contained in:
@@ -4,7 +4,7 @@ import time
|
||||
import traceback
|
||||
from subprocess import Popen, STDOUT
|
||||
from threading import Thread
|
||||
from typing import List, Set, Type, Tuple, Dict
|
||||
from typing import List, Set, Type, Tuple, Dict, Optional
|
||||
|
||||
from bauh.api.abstract.controller import SoftwareManager, SearchResult, ApplicationContext, UpgradeRequirements, \
|
||||
UpgradeRequirement, TransactionResult, SoftwareAction
|
||||
@@ -119,20 +119,19 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
return res
|
||||
|
||||
def _can_work(self, man: SoftwareManager):
|
||||
|
||||
if self._available_cache is not None:
|
||||
available = False
|
||||
for t in man.get_managed_types():
|
||||
available = self._available_cache.get(t)
|
||||
|
||||
if available is None:
|
||||
available = man.is_enabled() and man.can_work()
|
||||
available = man.is_enabled() and man.can_work()[0]
|
||||
self._available_cache[t] = available
|
||||
|
||||
if available:
|
||||
available = True
|
||||
else:
|
||||
available = man.is_enabled() and man.can_work()
|
||||
available = man.is_enabled() and man.can_work()[0]
|
||||
|
||||
if available:
|
||||
if man not in self.working_managers:
|
||||
@@ -198,8 +197,8 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
def set_enabled(self, enabled: bool):
|
||||
pass
|
||||
|
||||
def can_work(self) -> bool:
|
||||
return True
|
||||
def can_work(self) -> Tuple[bool, Optional[str]]:
|
||||
return True, None
|
||||
|
||||
def _get_package_lower_name(self, pkg: SoftwarePackage):
|
||||
return pkg.name.lower()
|
||||
|
||||
@@ -7,7 +7,7 @@ import traceback
|
||||
from io import StringIO
|
||||
from math import floor
|
||||
from threading import Thread
|
||||
from typing import Iterable, List
|
||||
from typing import Iterable, List, Tuple
|
||||
|
||||
from bauh.api.abstract.download import FileDownloader
|
||||
from bauh.api.abstract.handler import ProcessWatcher
|
||||
@@ -223,3 +223,6 @@ class AdaptableFileDownloader(FileDownloader):
|
||||
|
||||
def list_available_multithreaded_clients(self) -> List[str]:
|
||||
return [c for c in self.supported_multithread_clients if self.is_multithreaded_client_available(c)]
|
||||
|
||||
def get_supported_clients(self) -> tuple:
|
||||
return 'wget', 'aria2', 'axel'
|
||||
|
||||
@@ -39,23 +39,26 @@ class GenericSettingsManager:
|
||||
gem_opts, def_gem_opts, gem_tabs = [], set(), []
|
||||
|
||||
for man in self.managers:
|
||||
if man.can_work():
|
||||
man_comp = man.get_settings(screen_width, screen_height)
|
||||
modname = man.__module__.split('.')[-2]
|
||||
icon_path = "{r}/gems/{n}/resources/img/{n}.svg".format(r=ROOT_DIR, n=modname)
|
||||
can_work, reason_not_work = man.can_work()
|
||||
modname = man.__module__.split('.')[-2]
|
||||
icon_path = "{r}/gems/{n}/resources/img/{n}.svg".format(r=ROOT_DIR, n=modname)
|
||||
|
||||
if man_comp:
|
||||
tab_name = self.i18n.get('gem.{}.label'.format(modname), modname.capitalize())
|
||||
gem_tabs.append(TabComponent(label=tab_name, content=man_comp, icon_path=icon_path, id_=modname))
|
||||
man_comp = man.get_settings(screen_width, screen_height) if can_work else None
|
||||
if man_comp:
|
||||
tab_name = self.i18n.get('gem.{}.label'.format(modname), modname.capitalize())
|
||||
gem_tabs.append(TabComponent(label=tab_name, content=man_comp, icon_path=icon_path, id_=modname))
|
||||
|
||||
opt = InputOption(label=self.i18n.get('gem.{}.label'.format(modname), modname.capitalize()),
|
||||
tooltip=self.i18n.get('gem.{}.info'.format(modname)),
|
||||
value=modname,
|
||||
icon_path='{r}/gems/{n}/resources/img/{n}.svg'.format(r=ROOT_DIR, n=modname))
|
||||
gem_opts.append(opt)
|
||||
help_tip = reason_not_work if not can_work and reason_not_work else self.i18n.get(f'gem.{modname}.info')
|
||||
opt = InputOption(label=self.i18n.get('gem.{}.label'.format(modname), modname.capitalize()),
|
||||
tooltip=help_tip,
|
||||
value=modname,
|
||||
icon_path='{r}/gems/{n}/resources/img/{n}.svg'.format(r=ROOT_DIR, n=modname),
|
||||
read_only=not can_work,
|
||||
extra_properties={'warning': 'true'} if not can_work else None)
|
||||
gem_opts.append(opt)
|
||||
|
||||
if man.is_enabled() and man in self.working_managers:
|
||||
def_gem_opts.add(opt)
|
||||
if man.is_enabled() and man in self.working_managers:
|
||||
def_gem_opts.add(opt)
|
||||
|
||||
core_config = self.configman.get_config()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user