From 6bea6ed77c25456fe7627a8d1b1e11381fd2b4e2 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Wed, 12 Apr 2017 20:04:14 +0200
Subject: [PATCH] Fix right click in top button views

---
 src/sakia/gui/sub/certification/controller.py | 41 ++++++++-----------
 src/sakia/gui/sub/certification/view.py       |  4 +-
 src/sakia/gui/sub/transfer/controller.py      |  3 +-
 src/sakia/gui/sub/transfer/view.py            |  4 +-
 src/sakia/gui/widgets/context_menu.py         |  7 ++--
 5 files changed, 26 insertions(+), 33 deletions(-)

diff --git a/src/sakia/gui/sub/certification/controller.py b/src/sakia/gui/sub/certification/controller.py
index d63e1db1..c658a9a0 100644
--- a/src/sakia/gui/sub/certification/controller.py
+++ b/src/sakia/gui/sub/certification/controller.py
@@ -1,5 +1,3 @@
-import asyncio
-
 from PyQt5.QtCore import Qt, QObject, pyqtSignal
 from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout
 
@@ -90,10 +88,10 @@ class CertificationController(QObject):
         dialog.layout().addWidget(certification.view)
         certification.accepted.connect(dialog.accept)
         certification.rejected.connect(dialog.reject)
-        return certification.exec()
+        return dialog.exec()
 
     @classmethod
-    async def certify_identity(cls, parent, app, connection, identity):
+    def certify_identity(cls, parent, app, connection, identity):
         """
         Certify and identity
         :param sakia.gui.component.controller.ComponentController parent: the parent
@@ -102,11 +100,18 @@ class CertificationController(QObject):
         :param sakia.data.entities.Identity identity: the identity certified
         :return:
         """
-        dialog = cls.create(parent, app)
-        dialog.view.combo_connections.setCurrentText(connection.title())
-        dialog.user_information.change_identity(identity)
-        dialog.refresh()
-        return await dialog.async_exec()
+        dialog = QDialog(parent)
+        dialog.setWindowTitle(dialog.tr("Certification"))
+        dialog.setLayout(QVBoxLayout(dialog))
+        certification = cls.create(parent, app)
+        if connection:
+            certification.view.combo_connections.setCurrentText(connection.title())
+            certification.user_information.change_identity(identity)
+            certification.refresh()
+        dialog.layout().addWidget(certification.view)
+        certification.accepted.connect(dialog.accept)
+        certification.rejected.connect(dialog.reject)
+        return dialog.exec()
 
     def change_connection(self, index):
         self.model.set_connection(index)
@@ -154,15 +159,14 @@ using cross checking which will help to reveal the problem if needs to be.</br>"
         if result[0]:
             QApplication.restoreOverrideCursor()
             await self.view.show_success(self.model.notification())
-            self.view.accept()
+            self.accepted.emit()
         else:
             await self.view.show_error(self.model.notification(), result[1])
             QApplication.restoreOverrideCursor()
             self.view.button_box.setEnabled(True)
 
-    @asyncify
-    async def reject(self):
-        self.view.reject()
+    def reject(self):
+        self.rejected.emit()
 
     def refresh(self):
         stock = self.model.get_cert_stock()
@@ -208,14 +212,3 @@ using cross checking which will help to reveal the problem if needs to be.</br>"
         Refresh user information
         """
         self.user_information.search_identity(self.search_user.model.identity())
-
-    def async_exec(self):
-        future = asyncio.Future()
-        self.view.finished.connect(lambda r: future.set_result(r))
-        self.view.open()
-        self.refresh()
-        return future
-
-    def exec(self):
-        self.refresh()
-        self.view.exec()
diff --git a/src/sakia/gui/sub/certification/view.py b/src/sakia/gui/sub/certification/view.py
index 00753c97..0c6ceaa9 100644
--- a/src/sakia/gui/sub/certification/view.py
+++ b/src/sakia/gui/sub/certification/view.py
@@ -1,4 +1,4 @@
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QFileDialog, QMessageBox
+from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QFileDialog, QMessageBox
 from PyQt5.QtCore import QT_TRANSLATE_NOOP, Qt, pyqtSignal
 from .certification_uic import Ui_CertificationWidget
 from sakia.gui.widgets import toast
@@ -8,7 +8,7 @@ from duniterpy.documents import Identity, MalformedDocumentError
 from enum import Enum
 
 
-class CertificationView(QDialog, Ui_CertificationWidget):
+class CertificationView(QWidget, Ui_CertificationWidget):
     """
     The view of the certification component
     """
diff --git a/src/sakia/gui/sub/transfer/controller.py b/src/sakia/gui/sub/transfer/controller.py
index ee4839a5..fca4f9b4 100644
--- a/src/sakia/gui/sub/transfer/controller.py
+++ b/src/sakia/gui/sub/transfer/controller.py
@@ -83,7 +83,8 @@ class TransferController(QObject):
     def open_transfer_with_pubkey(cls, parent, app, connection, pubkey):
         transfer = cls.create(parent, app)
         transfer.view.groupbox_connection.show()
-        transfer.view.combo_connections.setCurrentText(connection.title())
+        if connection:
+            transfer.view.combo_connections.setCurrentText(connection.title())
         transfer.view.edit_pubkey.setText(pubkey)
         transfer.view.radio_pubkey.setChecked(True)
 
diff --git a/src/sakia/gui/sub/transfer/view.py b/src/sakia/gui/sub/transfer/view.py
index fe04ddec..96b53dbd 100644
--- a/src/sakia/gui/sub/transfer/view.py
+++ b/src/sakia/gui/sub/transfer/view.py
@@ -1,4 +1,4 @@
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox
+from PyQt5.QtWidgets import QWidget, QDialogButtonBox
 from PyQt5.QtGui import QRegExpValidator
 from PyQt5.QtCore import QT_TRANSLATE_NOOP, QRegExp
 from .transfer_uic import Ui_TransferMoneyWidget
@@ -7,7 +7,7 @@ from sakia.gui.widgets import toast
 from sakia.gui.widgets.dialogs import QAsyncMessageBox
 
 
-class TransferView(QDialog, Ui_TransferMoneyWidget):
+class TransferView(QWidget, Ui_TransferMoneyWidget):
     """
     Transfer component view
     """
diff --git a/src/sakia/gui/widgets/context_menu.py b/src/sakia/gui/widgets/context_menu.py
index 5a6c107e..a1a371c9 100644
--- a/src/sakia/gui/widgets/context_menu.py
+++ b/src/sakia/gui/widgets/context_menu.py
@@ -39,7 +39,7 @@ class ContextMenu(QObject):
         informations.triggered.connect(lambda checked, i=identity: menu.informations(i))
         menu.qmenu.addAction(informations)
 
-        if identity.uid and menu._connection.pubkey != identity.pubkey:
+        if identity.uid and (not menu._connection or menu._connection.pubkey != identity.pubkey):
             certify = QAction(menu.tr("Certify identity"), menu.qmenu.parent())
             certify.triggered.connect(lambda checked, i=identity: menu.certify_identity(i))
             menu.qmenu.addAction(certify)
@@ -152,9 +152,8 @@ class ContextMenu(QObject):
     def view_wot(self, identity):
         self.view_identity_in_wot.emit(identity)
 
-    @asyncify
-    async def certify_identity(self, identity):
-        await CertificationController.certify_identity(None, self._app, self._connection, identity)
+    def certify_identity(self, identity):
+        CertificationController.certify_identity(None, self._app, self._connection, identity)
 
     def send_again(self, transfer):
         TransferController.send_transfer_again(None, self._app, self._connection, transfer)
-- 
GitLab