From 798ce197f9ba5ca0d0e23855e8d6eda548d29c0d Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Sun, 31 Jul 2016 19:21:04 +0200 Subject: [PATCH] Add toolbar to main window --- src/sakia/gui/agent/controller.py | 13 ++++- src/sakia/gui/main_window/controller.py | 16 +++++-- src/sakia/gui/main_window/mainwindow.ui | 2 +- src/sakia/gui/toolbar/controller.py | 64 ++++++------------------- src/sakia/gui/toolbar/view.py | 35 +++++++++++++- 5 files changed, 71 insertions(+), 59 deletions(-) diff --git a/src/sakia/gui/agent/controller.py b/src/sakia/gui/agent/controller.py index 645bda03..334ad3b7 100644 --- a/src/sakia/gui/agent/controller.py +++ b/src/sakia/gui/agent/controller.py @@ -18,5 +18,14 @@ class AgentController(QObject): self.model = model def attach(self, controller): - controller.setParent(self) - return controller + """ + Attach an agent controller to this controller + :param AgentController controller: the attached controller + :return: the attached controller + :rtype: AgentController + """ + if controller: + controller.setParent(self) + return controller + else: + return None diff --git a/src/sakia/gui/main_window/controller.py b/src/sakia/gui/main_window/controller.py index b80d1713..a09634f3 100644 --- a/src/sakia/gui/main_window/controller.py +++ b/src/sakia/gui/main_window/controller.py @@ -18,6 +18,8 @@ from ..agent.controller import AgentController from .view import MainWindowView from .model import MainWindowModel from ..status_bar.controller import StatusBarController +from ..toolbar.controller import ToolbarController +from ..navigation.controller import NavigationController class MainWindowController(AgentController): @@ -25,12 +27,13 @@ class MainWindowController(AgentController): classdocs """ - def __init__(self, view, model, password_asker, status_bar): + def __init__(self, view, model, password_asker, status_bar, toolbar): """ Init :param MainWindowView view: the ui of the mainwindow agent :param sakia.gui.main_window.model.MainWindowModel: the model of the mainwindow agent :param sakia.gui.status_bar.controller.StatusBarController: the controller of the status bar agent + :param sakia.gui.toolbar.controller.ToolbarController: the controller of the toolbar agent :param PasswordAsker password_asker: the password asker of the application :type: sakia.core.app.Application @@ -39,8 +42,8 @@ class MainWindowController(AgentController): super().__init__(None, view, model) self.initialized = False self.password_asker = password_asker - if status_bar: - self.status_bar = self.attach(status_bar) + self.status_bar = self.attach(status_bar) + self.toolbar = self.attach(toolbar) QApplication.setWindowIcon(QIcon(":/icons/sakia_logo")) @@ -48,9 +51,12 @@ class MainWindowController(AgentController): def startup(cls, app): view = MainWindowView(None) model = MainWindowModel(None, app) - main_window = cls(view, model,PasswordAskerDialog(None), None) + password_asker = PasswordAskerDialog(None) + main_window = cls(view, model, password_asker, None, None) main_window.status_bar = main_window.attach(StatusBarController.create(main_window, app)) - main_window.view.setStatusBar(main_window.status_bar.view) + view.setStatusBar(main_window.status_bar.view) + main_window.toolbar = main_window.attach(ToolbarController.create(main_window, password_asker)) + main_window.toolbar.view.setParent(view.centralwidget) #app.version_requested.connect(main_window.latest_version_requested) #app.account_imported.connect(main_window.import_account_accepted) #app.account_changed.connect(main_window.change_account) diff --git a/src/sakia/gui/main_window/mainwindow.ui b/src/sakia/gui/main_window/mainwindow.ui index b689d2b8..5c334c90 100644 --- a/src/sakia/gui/main_window/mainwindow.ui +++ b/src/sakia/gui/main_window/mainwindow.ui @@ -138,7 +138,7 @@ </action> </widget> <resources> - <include location="../icons/icons.qrc"/> + <include location="../../../../res/icons/icons.qrc"/> </resources> <connections/> <slots> diff --git a/src/sakia/gui/toolbar/controller.py b/src/sakia/gui/toolbar/controller.py index 78b4ab0b..6b538c7d 100644 --- a/src/sakia/gui/toolbar/controller.py +++ b/src/sakia/gui/toolbar/controller.py @@ -1,72 +1,36 @@ -from PyQt5.QtWidgets import QFrame, QAction, QMenu, QDialog, QMessageBox -from PyQt5.QtGui import QIcon -from PyQt5.QtCore import QObject, QT_TRANSLATE_NOOP, Qt +from PyQt5.QtWidgets import QDialog, QMessageBox +from PyQt5.QtCore import QT_TRANSLATE_NOOP, Qt +from ..agent.controller import AgentController from .model import ToolbarModel from .view import ToolbarView -from .toolbar_uic import Ui_SakiaToolbar from ...tools.decorators import asyncify, once_at_a_time, cancel_once_task from ..widgets.dialogs import QAsyncMessageBox, QAsyncFileDialog, dialog_async_exec from ..widgets import toast import logging -class ToolbarController(QObject): +class ToolbarController(AgentController): """ The navigation panel """ - _action_showinfo_text = QT_TRANSLATE_NOOP("CommunityWidget", "Show informations") - _action_explore_text = QT_TRANSLATE_NOOP("CommunityWidget", "Explore the Web of Trust") - _action_publish_uid_text = QT_TRANSLATE_NOOP("CommunityWidget", "Publish UID") - _action_revoke_uid_text = QT_TRANSLATE_NOOP("CommunityWidget", "Revoke UID") - def __init__(self, view, model, account, community, password_asker): + def __init__(self, parent, view, model, password_asker): """ - + :param sakia.gui.agent.controller.AgentController parent: the parent :param sakia.gui.toolbar.view.ToolbarView view: :param sakia.gui.toolbar.model.ToolbarModel model: """ - self.view = view - self.model = model - self.account = account - self.community = community + super().__init__(parent, view, model) self.password_asker = password_asker - tool_menu = QMenu(self.tr("Tools"), self.toolbutton_menu) - self.toolbutton_menu.setMenu(tool_menu) - - self.action_publish_uid = QAction(self.tr(ToolbarController._action_publish_uid_text), self) - self.action_revoke_uid = QAction(self.tr(ToolbarController._action_revoke_uid_text), self) - self.action_showinfo = QAction(self.tr(ToolbarController._action_showinfo_text), self) - self.action_explorer = QAction(self.tr(ToolbarController._action_explore_text), self) - - action_showinfo = QAction(self.tr("Show informations"), self.toolbutton_menu) - action_showinfo.triggered.connect(lambda: self.show_closable_tab(self.tab_informations, - QIcon(":/icons/informations_icon"), - self.tr("Informations"))) - tool_menu.addAction(action_showinfo) - - action_showexplorer = QAction(self.tr("Show explorer"), self.toolbutton_menu) - action_showexplorer.triggered.connect(lambda: self.show_closable_tab(self.tab_explorer.widget, - QIcon(":/icons/explorer_icon"), - self.tr("Explorer"))) - tool_menu.addAction(action_showexplorer) - - menu_advanced = QMenu(self.tr("Advanced"), self.toolbutton_menu) - action_gen_revokation = QAction(self.tr("Save revokation document"), menu_advanced) - action_gen_revokation.triggered.connect(self.action_save_revokation) - menu_advanced.addAction(action_gen_revokation) - tool_menu.addMenu(menu_advanced) - - self.action_publish_uid.triggered.connect(self.publish_uid) - tool_menu.addAction(self.action_publish_uid) - - self.button_membership.clicked.connect(self.send_membership_demand) - - self.community_view.button_certification.clicked.connect(self.open_certification_dialog) - self.community_view.button_send_money.clicked.connect(self.open_transfer_money_dialog) + self.view.button_certification.clicked.connect(self.open_certification_dialog) + self.view.button_send_money.clicked.connect(self.open_transfer_money_dialog) + self.view.action_gen_revokation.triggered.connect(self.action_save_revokation) + self.view.action_publish_uid.triggered.connect(self.publish_uid) + self.view.button_membership.clicked.connect(self.send_membership_demand) @classmethod - def create(cls, parent): + def create(cls, parent, password_asker): """ Instanciate a navigation agent :param sakia.gui.agent.controller.AgentController parent: @@ -75,7 +39,7 @@ class ToolbarController(QObject): """ view = ToolbarView(parent.view) model = ToolbarModel(None) - toolbar = cls(view, model) + toolbar = cls(parent, view, model, password_asker) model.setParent(toolbar) return toolbar diff --git a/src/sakia/gui/toolbar/view.py b/src/sakia/gui/toolbar/view.py index 99787a63..976559ec 100644 --- a/src/sakia/gui/toolbar/view.py +++ b/src/sakia/gui/toolbar/view.py @@ -1,4 +1,6 @@ -from PyQt5.QtWidgets import QFrame +from PyQt5.QtWidgets import QFrame, QAction, QMenu, QDialog, QMessageBox +from PyQt5.QtGui import QIcon +from PyQt5.QtCore import QObject, QT_TRANSLATE_NOOP, Qt from .toolbar_uic import Ui_SakiaToolbar @@ -6,7 +8,38 @@ class ToolbarView(QFrame, Ui_SakiaToolbar): """ The model of Navigation agent """ + _action_showinfo_text = QT_TRANSLATE_NOOP("ToolbarView", "Show informations") + _action_explore_text = QT_TRANSLATE_NOOP("ToolbarView", "Explore the Web of Trust") + _action_publish_uid_text = QT_TRANSLATE_NOOP("ToolbarView", "Publish UID") + _action_revoke_uid_text = QT_TRANSLATE_NOOP("ToolbarView", "Revoke UID") def __init__(self, parent): super().__init__(parent) self.setupUi(self) + + tool_menu = QMenu(self.tr("Tools"), self.toolbutton_menu) + self.toolbutton_menu.setMenu(tool_menu) + + self.action_publish_uid = QAction(self.tr(ToolbarView._action_publish_uid_text), self) + self.action_revoke_uid = QAction(self.tr(ToolbarView._action_revoke_uid_text), self) + self.action_showinfo = QAction(self.tr(ToolbarView._action_showinfo_text), self) + self.action_explorer = QAction(self.tr(ToolbarView._action_explore_text), self) + + action_showinfo = QAction(self.tr("Show informations"), self.toolbutton_menu) + action_showinfo.triggered.connect(lambda: self.show_closable_tab(self.tab_informations, + QIcon(":/icons/informations_icon"), + self.tr("Informations"))) + tool_menu.addAction(action_showinfo) + + action_showexplorer = QAction(self.tr("Show explorer"), self.toolbutton_menu) + action_showexplorer.triggered.connect(lambda: self.show_closable_tab(self.tab_explorer.widget, + QIcon(":/icons/explorer_icon"), + self.tr("Explorer"))) + tool_menu.addAction(action_showexplorer) + + menu_advanced = QMenu(self.tr("Advanced"), self.toolbutton_menu) + self.action_gen_revokation = QAction(self.tr("Save revokation document"), menu_advanced) + menu_advanced.addAction(self.action_gen_revokation) + tool_menu.addMenu(menu_advanced) + tool_menu.addAction(self.action_publish_uid) + -- GitLab