merge 'staging'

This commit is contained in:
Vinicius Moreira
2019-08-12 17:29:33 -03:00
parent 7af8e89325
commit 1951a545c8
48 changed files with 119 additions and 119 deletions

View File

@@ -5,18 +5,18 @@ import sys
desktop_file = """
[Desktop Entry]
Type = Application
Name = fpakman
Name = bauh
Categories = System;
Comment = Manage your Flatpak / Snap applications
Comment = Manage your Snap applications
Exec = {path}
Icon = {lib_path}/python{version}/site-packages/fpakman/resources/img/logo.svg
Icon = {lib_path}/python{version}/site-packages/bauh/resources/img/logo.svg
"""
py_version = "{}.{}".format(sys.version_info.major, sys.version_info.minor)
fpakman_cmd = os.getenv('FPAKMAN_PATH', '/usr/bin/fpakman')
app_cmd = os.getenv('BAUH_PATH', '/usr/bin/bauh')
with open('fpakman.desktop', 'w+') as f:
f.write(desktop_file.format(lib_path=os.getenv('FPAKMAN_LIB_PATH', '/usr/lib'),
with open('bauh.desktop', 'w+') as f:
f.write(desktop_file.format(lib_path=os.getenv('BAUH_LIB_PATH', '/usr/lib'),
version=py_version,
path=fpakman_cmd))
path=app_cmd))

View File

@@ -5,22 +5,22 @@ import sys
desktop_file = """
[Desktop Entry]
Type = Application
Name = fpakman (tray)
Name = bauh ( tray )
Categories = System;
Comment = Manage your Flatpak / Snap applications
Comment = Manage your applications
Exec = {path}
Icon = {lib_path}/python{version}/site-packages/fpakman/resources/img/logo.svg
Icon = {lib_path}/python{version}/site-packages/bauh/resources/img/logo.svg
"""
py_version = "{}.{}".format(sys.version_info.major, sys.version_info.minor)
fpakman_cmd = os.getenv('FPAKMAN_PATH', '/usr/bin/fpakman') + ' --tray=1'
app_cmd = os.getenv('BAUH_PATH', '/usr/bin/bauh') + ' --tray=1'
with open('fpakman_tray.desktop', 'w+') as f:
f.write(desktop_file.format(lib_path=os.getenv('FPAKMAN_LIB_PATH', '/usr/lib'),
with open('bauh_tray.desktop', 'w+') as f:
f.write(desktop_file.format(lib_path=os.getenv('BAUH_LIB_PATH', '/usr/lib'),
version=py_version,
path=fpakman_cmd))
path=app_cmd))
with open('fpakman-tray', 'w') as f:
f.write(fpakman_cmd)
with open('bauh-tray', 'w') as f:
f.write(app_cmd)

View File

@@ -1,5 +1,5 @@
__version__ = '1.0.0'
__app_name__ = 'fpakman'
__app_name__ = 'bauh'
import os
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))

View File

@@ -2,17 +2,17 @@ import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication
from fpakman_api.util.cache import Cache
from fpakman_api.util.disk import DiskCacheLoaderFactory
from fpakman_api.util.http import HttpClient
from bauh_api.util.cache import Cache
from bauh_api.util.disk import DiskCacheLoaderFactory
from bauh_api.util.http import HttpClient
from fpakman import __version__, __app_name__, app_args
from fpakman.core import resource, extensions
from fpakman.core.controller import GenericApplicationManager
from fpakman.util import util
from fpakman.util.memory import CacheCleaner
from fpakman.view.qt.systray import TrayIcon
from fpakman.view.qt.window import ManageWindow
from bauh import __version__, __app_name__, app_args
from bauh.core import resource, extensions
from bauh.core.controller import GenericApplicationManager
from bauh.util import util
from bauh.util.memory import CacheCleaner
from bauh.view.qt.systray import TrayIcon
from bauh.view.qt.window import ManageWindow
args = app_args.read()
@@ -31,7 +31,7 @@ caches.append(icon_cache)
disk_loader_factory = DiskCacheLoaderFactory(disk_cache=args.disk_cache, cache_map=cache_map)
manager = GenericApplicationManager(managers, disk_loader_factory=disk_loader_factory, app_args=args)
manager = GenericApplicationManager(managers, disk_loader_factory=disk_loader_factory, app_args=args, locale_keys=locale_keys)
manager.prepare()
app = QApplication(sys.argv)

View File

@@ -4,7 +4,7 @@ from argparse import Namespace
from colorama import Fore
from fpakman import __app_name__, __version__
from bauh import __app_name__, __version__
def log_msg(msg: str, color: int = None):
@@ -19,29 +19,29 @@ def read() -> Namespace:
parser = argparse.ArgumentParser(prog=__app_name__, description="GUI for Flatpak applications management")
parser.add_argument('-v', '--version', action='version', version='%(prog)s {}'.format(__version__))
parser.add_argument('-e', '--cache-exp', action="store",
default=int(os.getenv('FPAKMAN_CACHE_EXPIRATION', 60 * 60)), type=int,
default=int(os.getenv('BAUH_CACHE_EXPIRATION', 60 * 60)), type=int,
help='cached API data expiration time in SECONDS. Default: %(default)s')
parser.add_argument('-ie', '--icon-exp', action="store", default=int(os.getenv('FPAKMAN_ICON_EXPIRATION', 60 * 5)),
parser.add_argument('-ie', '--icon-exp', action="store", default=int(os.getenv('BAUH_ICON_EXPIRATION', 60 * 5)),
type=int, help='cached icons expiration time in SECONDS. Default: %(default)s')
parser.add_argument('-l', '--locale', action="store", default=os.getenv('FPAKMAN_LOCALE', 'en'),
parser.add_argument('-l', '--locale', action="store", default=os.getenv('BAUH_LOCALE', 'en'),
help='Translation key. Default: %(default)s')
parser.add_argument('-i', '--check-interval', action="store", default=int(os.getenv('FPAKMAN_CHECK_INTERVAL', 60)),
parser.add_argument('-i', '--check-interval', action="store", default=int(os.getenv('BAUH_CHECK_INTERVAL', 60)),
type=int, help='Updates check interval in SECONDS. Default: %(default)s')
parser.add_argument('-n', '--update-notification', action="store", choices=[0, 1],
default=os.getenv('FPAKMAN_UPDATE_NOTIFICATION', 1), type=int,
default=os.getenv('BAUH_UPDATE_NOTIFICATION', 1), type=int,
help='Enables / disables system notifications for new updates. Default: %(default)s')
parser.add_argument('-dc', '--disk-cache', action="store", choices=[0, 1],
default=os.getenv('FPAKMAN_DISK_CACHE', 1), type=int,
default=os.getenv('BAUH_DISK_CACHE', 1), type=int,
help='Enables / disables disk cache. When disk cache is enabled, the installed applications data are loaded faster. Default: %(default)s')
parser.add_argument('-di', '--download-icons', action="store", choices=[0, 1],
default=os.getenv('FPAKMAN_DOWNLOAD_ICONS', 1), type=int,
default=os.getenv('BAUH_DOWNLOAD_ICONS', 1), type=int,
help='Enables / disables app icons download. It may improve the application speed, depending of how applications data are retrieved by their extensions.')
parser.add_argument('-co', '--check-packaging-once', action="store",
default=os.getenv('FPAKMAN_CHECK_PACKAGING_ONCE', 0), choices=[0, 1], type=int,
default=os.getenv('BAUH_CHECK_PACKAGING_ONCE', 0), choices=[0, 1], type=int,
help='If the available supported packaging types should be checked ONLY once. It improves the application speed if enabled, but can generate errors if you uninstall any packaging technology while using it, and every time a supported packaging type is installed it will only be available after a restart. Default: %(default)s')
parser.add_argument('--tray', action="store", default=os.getenv('FPAKMAN_TRAY', 0), choices=[0, 1], type=int,
parser.add_argument('--tray', action="store", default=os.getenv('BAUH_TRAY', 0), choices=[0, 1], type=int,
help='If the tray icon and update-check daemon should be created. Default: %(default)s')
parser.add_argument('--sugs', action="store", default=os.getenv('FPAKMAN_SUGGESTIONS', 1), choices=[0, 1], type=int, help='If app suggestions should be displayed if no app is installed (runtimes do not count as apps). Default: %(default)s')
parser.add_argument('--sugs', action="store", default=os.getenv('BAUH_SUGGESTIONS', 1), choices=[0, 1], type=int, help='If app suggestions should be displayed if no app is installed (runtimes do not count as apps). Default: %(default)s')
args = parser.parse_args()
if args.cache_exp < 0:

View File

@@ -2,21 +2,21 @@ from argparse import Namespace
from threading import Thread
from typing import List, Dict
from fpakman_api.abstract.controller import ApplicationManager
from fpakman_api.abstract.model import Application, ApplicationUpdate
from fpakman_api.util.disk import DiskCacheLoader
from fpakman_api.util.disk import DiskCacheLoaderFactory
from fpakman_api.util.system import FpakmanProcess
from bauh_api.abstract.controller import ApplicationManager
from bauh_api.abstract.model import Application, ApplicationUpdate
from bauh_api.util.disk import DiskCacheLoader
from bauh_api.util.disk import DiskCacheLoaderFactory
from bauh_api.util.system import SystemProcess
from fpakman import ROOT_DIR
from bauh import ROOT_DIR
SUGGESTIONS_LIMIT = 6
class GenericApplicationManager(ApplicationManager):
def __init__(self, managers: List[ApplicationManager], disk_loader_factory: DiskCacheLoaderFactory, app_args: Namespace):
super(GenericApplicationManager, self).__init__(app_args=app_args, app_cache=None, locale_keys=None, fpakman_root_dir=ROOT_DIR, http_client=None)
def __init__(self, managers: List[ApplicationManager], disk_loader_factory: DiskCacheLoaderFactory, app_args: Namespace, locale_keys: dict):
super(GenericApplicationManager, self).__init__(app_args=app_args, app_cache=None, locale_keys=locale_keys, fpakman_root_dir=ROOT_DIR, http_client=None)
self.managers = managers
self.map = {m.get_app_type(): m for m in self.managers}
self.disk_loader_factory = disk_loader_factory
@@ -122,7 +122,7 @@ class GenericApplicationManager(ApplicationManager):
def can_downgrade(self):
return True
def downgrade_app(self, app: Application, root_password: str) -> FpakmanProcess:
def downgrade_app(self, app: Application, root_password: str) -> SystemProcess:
man = self._get_manager_for(app)
if man and app.can_be_downgraded():
@@ -136,19 +136,19 @@ class GenericApplicationManager(ApplicationManager):
if man:
return man.clean_cache_for(app)
def update(self, app: Application, root_password: str) -> FpakmanProcess:
def update(self, app: Application, root_password: str) -> SystemProcess:
man = self._get_manager_for(app)
if man:
return man.update(app, root_password)
def uninstall(self, app: Application, root_password: str) -> FpakmanProcess:
def uninstall(self, app: Application, root_password: str) -> SystemProcess:
man = self._get_manager_for(app)
if man:
return man.uninstall(app, root_password)
def install(self, app: Application, root_password: str) -> FpakmanProcess:
def install(self, app: Application, root_password: str) -> SystemProcess:
man = self._get_manager_for(app)
if man:
@@ -189,7 +189,7 @@ class GenericApplicationManager(ApplicationManager):
if man:
return man.requires_root(action, app)
def refresh(self, app: Application, root_password: str) -> FpakmanProcess:
def refresh(self, app: Application, root_password: str) -> SystemProcess:
self._wait_to_be_ready()
man = self._get_manager_for(app)
@@ -222,9 +222,9 @@ class GenericApplicationManager(ApplicationManager):
return updates
def list_warnings(self) -> List[str]:
if self.managers:
warnings = None
warnings = []
if self.managers:
for man in self.managers:
man_warnings = man.list_warnings()
@@ -233,6 +233,8 @@ class GenericApplicationManager(ApplicationManager):
warnings = []
warnings.extend(man_warnings)
else:
warnings.append(self.locale_keys['warning.no_managers'])
return warnings

View File

@@ -4,12 +4,12 @@ import pkgutil
from argparse import Namespace
from typing import List, Dict
from fpakman_api.abstract.controller import ApplicationManager
from fpakman_api.util.cache import Cache
from fpakman_api.util.http import HttpClient
from bauh_api.abstract.controller import ApplicationManager
from bauh_api.util.cache import Cache
from bauh_api.util.http import HttpClient
from fpakman import ROOT_DIR
from fpakman.util import util
from bauh import ROOT_DIR
from bauh.util import util
ignore_modules = {'fpakman_api'}
@@ -25,7 +25,7 @@ def find_manager(member):
def load_managers(caches: List[Cache], cache_map: Dict[type, Cache], locale_keys: Dict[str, str], app_args: Namespace, http_client: HttpClient) -> List[ApplicationManager]:
managers = None
managers = []
for m in pkgutil.iter_modules():
if m.ispkg and m.name and m.name not in ignore_modules and m.name.startswith('fpakman_'):
@@ -39,9 +39,6 @@ def load_managers(caches: List[Cache], cache_map: Dict[type, Cache], locale_keys
if os.path.exists(locale_path):
locale_keys.update(util.get_locale_keys(app_args.locale, locale_path))
if not managers:
managers = []
app_cache = Cache(expiration_time=app_args.cache_exp)
man = manager_class(app_args=app_args,
fpakman_root_dir=ROOT_DIR,

View File

@@ -1,4 +1,4 @@
from fpakman import ROOT_DIR
from bauh import ROOT_DIR
def get_path(resource_path):

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -83,3 +83,4 @@ bt.app_not_upgrade=Don't upgrade
manage_window.upgrade_all.popup.title=Upgrade
manage_window.upgrade_all.popup.body=Upgrade all selected applications ?
manage_window.bt_about.tooltip=About
warning.no_managers=No hay extensiones instaladas. No será posible instalar y administrar aplicaciones.

View File

@@ -85,3 +85,4 @@ bt.app_not_upgrade=No actualizar
manage_window.upgrade_all.popup.title=Actualizar
manage_window.upgrade_all.popup.body=¿Actualizar todos los aplicativos seleccionados?
manage_window.bt_about.tooltip=Sobre
warning.no_managers=Não há nenhuma extensão instalada. Não será possível instalar e gerenciar aplicações.

View File

@@ -85,3 +85,4 @@ bt.app_not_upgrade=Não atualizar
manage_window.upgrade_all.popup.title=Atualizar
manage_window.upgrade_all.popup.body=Atualizar todos os aplicativos selecionados ?
manage_window.bt_about.tooltip=Sobre
warning.no_managers=Não há nenhuma extensão instalada. Não será possível instalar e gerenciar aplicações.

View File

@@ -2,7 +2,7 @@ import time
from threading import Thread
from typing import List
from fpakman_api.util.cache import Cache
from bauh_api.util.cache import Cache
class CacheCleaner(Thread):

View File

@@ -2,11 +2,11 @@ import glob
import locale
import re
from fpakman_api.util import system
from fpakman_api.util.resource import get_path
from bauh_api.util import system
from bauh_api.util.resource import get_path
from fpakman import ROOT_DIR, __app_name__
from fpakman.core import resource
from bauh import ROOT_DIR, __app_name__
from bauh.core import resource
HTML_RE = re.compile(r'<[^>]+>')

View File

@@ -2,8 +2,8 @@ from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QVBoxLayout, QDialog, QLabel
from fpakman import __version__, __app_name__
from fpakman.core import resource
from bauh import __version__, __app_name__
from bauh.core import resource
PROJECT_URL = 'https://github.com/vinifmor/fpakman'
LICENSE_URL = 'https://raw.githubusercontent.com/vinifmor/fpakman/master/LICENSE'

View File

@@ -7,14 +7,14 @@ from PyQt5.QtGui import QPixmap, QIcon, QCursor
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
from PyQt5.QtWidgets import QTableWidget, QTableView, QMenu, QAction, QTableWidgetItem, QToolButton, QWidget, \
QHeaderView, QLabel, QHBoxLayout, QPushButton, QToolBar
from fpakman_api.abstract.model import ApplicationStatus
from bauh_api.abstract.model import ApplicationStatus
from fpakman.core import resource
from fpakman_api.util.cache import Cache
from bauh.core import resource
from bauh_api.util.cache import Cache
from fpakman.util import util
from fpakman.view.qt import dialog
from fpakman.view.qt.view_model import ApplicationView, ApplicationViewStatus
from bauh.util import util
from bauh.view.qt import dialog
from bauh.view.qt.view_model import ApplicationView, ApplicationViewStatus
INSTALL_BT_STYLE = 'background: {back}; color: white; font-size: 10px; font-weight: bold'

View File

@@ -1,7 +1,7 @@
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMessageBox
from fpakman.core import resource
from bauh.core import resource
def show_error(title: str, body: str, icon: QIcon = QIcon(resource.get_path('img/logo.svg'))):

View File

@@ -4,7 +4,7 @@ from functools import reduce
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QTableWidget, QTableWidgetItem, QHeaderView
from fpakman_api.util.cache import Cache
from bauh_api.util.cache import Cache
class HistoryDialog(QDialog):

View File

@@ -2,9 +2,9 @@ from PyQt5.QtCore import QSize
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QFormLayout, QGroupBox, \
QLineEdit, QLabel
from fpakman_api.util.cache import Cache
from bauh_api.util.cache import Cache
from fpakman.util import util
from bauh.util import util
IGNORED_ATTRS = {'name', '__app__'}

View File

@@ -4,7 +4,7 @@ import subprocess
from PyQt5.QtWidgets import QInputDialog, QLineEdit
from fpakman.view.qt.dialog import show_error
from bauh.view.qt.dialog import show_error
def is_root():

View File

@@ -5,15 +5,14 @@ from typing import List
from PyQt5.QtCore import QThread, pyqtSignal, QCoreApplication, Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QSystemTrayIcon, QMenu
from fpakman_api.abstract.model import ApplicationUpdate
from fpakman_api.util import system
from bauh_api.abstract.model import ApplicationUpdate
from fpakman import __app_name__, ROOT_DIR
from fpakman.core import resource
from fpakman.core.controller import ApplicationManager
from fpakman.util import util
from fpakman.view.qt.about import AboutDialog
from fpakman.view.qt.window import ManageWindow
from bauh import __app_name__
from bauh.core import resource
from bauh_api.abstract.controller import ApplicationManager
from bauh.util import util
from bauh.view.qt.about import AboutDialog
from bauh.view.qt.window import ManageWindow
class UpdateCheck(QThread):

View File

@@ -4,19 +4,19 @@ from typing import List
import requests
from PyQt5.QtCore import QThread, pyqtSignal
from fpakman_api.abstract.model import ApplicationStatus
from fpakman_api.exception import NoInternetException
from fpakman_api.util.cache import Cache
from fpakman_api.util.system import FpakmanProcess
from bauh_api.abstract.model import ApplicationStatus
from bauh_api.exception import NoInternetException
from bauh_api.util.cache import Cache
from bauh_api.util.system import SystemProcess
from fpakman.core.controller import ApplicationManager
from fpakman.view.qt import dialog
from fpakman.view.qt.view_model import ApplicationView
from bauh_api.abstract.controller import ApplicationManager
from bauh.view.qt import dialog
from bauh.view.qt.view_model import ApplicationView
class AsyncAction(QThread):
def notify_subproc_outputs(self, proc: FpakmanProcess, signal) -> bool:
def notify_subproc_outputs(self, proc: SystemProcess, signal) -> bool:
"""
:param signal:
:param proc:
@@ -345,7 +345,8 @@ class FindSuggestions(AsyncAction):
self.man = man
def run(self):
self.signal_finished.emit(self.man.list_suggestions(limit=-1))
sugs = self.man.list_suggestions(limit=-1)
self.signal_finished.emit(sugs if sugs is not None else [])
class ListWarnings(QThread):

View File

@@ -1,6 +1,6 @@
from enum import Enum
from fpakman_api.abstract.model import Application
from bauh_api.abstract.model import Application
class ApplicationViewStatus(Enum):

View File

@@ -6,21 +6,21 @@ from PyQt5.QtCore import QEvent, Qt, QSize
from PyQt5.QtGui import QIcon, QWindowStateChangeEvent, QPixmap
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication, QCheckBox, QHeaderView, QToolButton, QToolBar, \
QSizePolicy, QLabel, QPlainTextEdit, QLineEdit, QProgressBar, QHBoxLayout
from fpakman_api.abstract.model import Application
from fpakman_api.util.cache import Cache
from bauh_api.abstract.controller import ApplicationManager
from bauh_api.abstract.model import Application
from bauh_api.util.cache import Cache
from fpakman.core import resource
from fpakman.core.controller import ApplicationManager
from fpakman.util import util
from fpakman.view.qt import dialog
from fpakman.view.qt.about import AboutDialog
from fpakman.view.qt.apps_table import AppsTable
from fpakman.view.qt.history import HistoryDialog
from fpakman.view.qt.info import InfoDialog
from fpakman.view.qt.root import is_root, ask_root_password
from fpakman.view.qt.thread import UpdateSelectedApps, RefreshApps, UninstallApp, DowngradeApp, GetAppInfo, \
from bauh.core import resource
from bauh.util import util
from bauh.view.qt import dialog
from bauh.view.qt.about import AboutDialog
from bauh.view.qt.apps_table import AppsTable
from bauh.view.qt.history import HistoryDialog
from bauh.view.qt.info import InfoDialog
from bauh.view.qt.root import is_root, ask_root_password
from bauh.view.qt.thread import UpdateSelectedApps, RefreshApps, UninstallApp, DowngradeApp, GetAppInfo, \
GetAppHistory, SearchApps, InstallApp, AnimateProgress, VerifyModels, RefreshApp, FindSuggestions, ListWarnings
from fpakman.view.qt.view_model import ApplicationView
from bauh.view.qt.view_model import ApplicationView
DARK_ORANGE = '#FF4500'

View File

@@ -1,4 +1,2 @@
pyqt5>=5.12
requests>=2.22
colorama>=0.4.1
fpakman_api==0.1.0
bauh_api==0.1.0