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