This commit is contained in:
Vinícius Moreira
2020-04-13 11:49:28 -03:00
parent 83aab1ff55
commit 01a60ea686
165 changed files with 12778 additions and 6171 deletions

View File

@@ -1,28 +1,29 @@
import gc
from io import StringIO
from PyQt5.QtCore import QSize, Qt
from PyQt5.QtCore import QSize, Qt, QCoreApplication
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QToolBar, QSizePolicy, QPushButton
from bauh import __app_name__
from bauh.api.abstract.controller import SoftwareManager
from bauh.api.abstract.view import MessageType
from bauh.view.core.controller import GenericSoftwareManager
from bauh.view.qt import dialog, css
from bauh.view.qt.components import to_widget, new_spacer
from bauh.view.qt.qt_utils import centralize
from bauh.view.util import util
from bauh.view.util.translation import I18n
class SettingsWindow(QWidget):
def __init__(self, manager: SoftwareManager, i18n: I18n, screen_size: QSize, tray, window: QWidget, parent: QWidget = None):
def __init__(self, manager: SoftwareManager, i18n: I18n, screen_size: QSize, window: QWidget, parent: QWidget = None):
super(SettingsWindow, self).__init__(parent=parent)
self.setWindowTitle(i18n['settings'].capitalize())
self.setWindowTitle('{} ({})'.format(i18n['settings'].capitalize(), __app_name__))
self.setLayout(QVBoxLayout())
self.manager = manager
self.i18n = i18n
self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred)
self.tray = tray
self.window = window
self.settings_model = self.manager.get_settings(screen_size.width(), screen_size.height())
@@ -49,13 +50,16 @@ class SettingsWindow(QWidget):
self.layout().addWidget(action_bar)
def show(self):
super(SettingsWindow, self).show()
centralize(self)
def closeEvent(self, event):
if self.window and self.window.settings_window == self:
self.deleteLater()
self.window.settings_window = None
elif self.tray and self.tray.settings_window == self:
self.deleteLater()
self.tray.settings_window = None
elif not self.window:
QCoreApplication.exit()
gc.collect()
@@ -70,24 +74,29 @@ class SettingsWindow(QWidget):
def _save_settings(self):
success, warnings = self.manager.save_settings(self.settings_model)
# Configurações alteradas com sucesso, porém algumas delas só surtirão após a reinicialização
if success:
if dialog.ask_confirmation(title=self.i18n['warning'].capitalize(),
body="<p>{}</p><p>{}</p>".format(self.i18n['settings.changed.success.warning'],
self.i18n['settings.changed.success.reboot']),
i18n=self.i18n):
util.restart_app(self.window and self.window.isVisible())
if not self.window:
dialog.show_message(title=self.i18n['success'].capitalize(),
body=self.i18n['settings.changed.success.warning'],
type_=MessageType.INFO)
QCoreApplication.exit()
elif dialog.ask_confirmation(title=self.i18n['warning'].capitalize(),
body="<p>{}</p><p>{}</p>".format(self.i18n['settings.changed.success.warning'],
self.i18n['settings.changed.success.reboot']),
i18n=self.i18n):
self.close()
util.restart_app()
else:
if isinstance(self.manager, GenericSoftwareManager):
self.manager.reset_cache()
self.manager.prepare()
self.manager.prepare(task_manager=None, root_password=None, internet_available=None)
if self.window and self.window.isVisible():
self.window.update_custom_actions()
self.window.verify_warnings()
self.window.types_changed = True
self.window.refresh_apps()
self.window.refresh_packages()
self.close()
else:
msg = StringIO()