Skip to content
Snippets Groups Projects
Commit 8f5dfb02 authored by inso's avatar inso
Browse files

New account_cfg component

parent 4dd541fe
No related branches found
No related tags found
No related merge requests found
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<item> <item>
<widget class="QStackedWidget" name="stacked_pages"> <widget class="QStackedWidget" name="stacked_pages">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="page_init"> <widget class="QWidget" name="page_init">
<layout class="QVBoxLayout" name="verticalLayout_4"> <layout class="QVBoxLayout" name="verticalLayout_4">
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="page_gpg"> <widget class="QWidget" name="page_brainwallet">
<layout class="QVBoxLayout" name="verticalLayout_7"> <layout class="QVBoxLayout" name="verticalLayout_7">
<item> <item>
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="label_3">
......
from sakia.gui.component.controller import ComponentController
from .view import AccountConfigView
from .model import AccountConfigModel
class AccountConfigController(ComponentController):
"""
The AccountConfigController view
"""
def __init__(self, parent, view, model):
"""
Constructor of the AccountConfigController component
:param sakia.gui.AccountConfigController.view.AccountConfigControllerView: the view
:param sakia.gui.AccountConfigController.model.AccountConfigControllerModel model: the model
"""
super().__init__(parent, view, model)
self.handle_next_step(init=True)
self.view.button_next.clicked.connect(lambda checked: self.handle_next_step(False))
self._steps = (
{
'page': self.view.page_init,
'init': self.init_name_page,
'next': self.account_name_selected
},
{
'page': self.view.page_brainwallet,
'init': self.init_key_page,
'next': self.account_key_selected
},
{
'page': self.view.page__communities,
'init': self.inir_communities,
'next': self.accept
}
)
self._current_step = 0
@classmethod
def create(cls, parent, app, **kwargs):
"""
Instanciate a AccountConfigController component
:param sakia.gui.component.controller.ComponentController parent:
:param sakia.core.Application app:
:return: a new AccountConfigController controller
:rtype: AccountConfigControllerController
"""
view = AccountConfigView(parent.view)
model = AccountConfigModel(None, app)
account_cfg = cls(parent, view, model)
model.setParent(account_cfg)
return account_cfg
@classmethod
def create_account(cls, parent, app):
"""
Open a dialog to create a new account
:param parent:
:param app:
:param account:
:return:
"""
account_cfg = cls.create(parent, app, account=None)
account_cfg.view.set_creation_layout()
@classmethod
def modify_account(cls, parent, app, account):
"""
Open a dialog to modify an existing account
:param parent:
:param app:
:param account:
:return:
"""
account_cfg = cls.create(parent, app, account=account)
account_cfg.view.set_modification_layout(account.name)
account_cfg._current_step = 1
def init_name_page(self):
"""
Initialize an account name page
"""
if self.model.account:
self.view.set_account_name(self.model.account.name)
self.view.button_previous.setEnabled(False)
self.view.button_next.setEnabled(False)
def account_name_selected(self):
name = self.view.account_name()
if self.model.account is None:
self.model.instanciate_account(name)
else:
self.model.rename_account(name)
def handle_next_step(self, init=False):
if self._current_step < len(self._steps) - 1:
if not init:
self.view.button_next.clicked.disconnect(self._steps[self._current_step]['next'])
self._current_step += 1
self._steps[self._current_step]['init']()
self.view.stackedWidget.setCurrentWidget(self._steps[self._current_step]['page'])
self.view.button_next.clicked.connect(self._steps[self._current_step]['next'])
@property
def view(self) -> AccountConfigView:
return self._view
@property
def model(self) -> AccountConfigModel:
return self._model
\ No newline at end of file
from sakia.gui.component.model import ComponentModel
class AccountConfigModel(ComponentModel):
"""
The model of AccountConfig component
"""
def __init__(self, parent, app, account):
"""
:param sakia.gui.dialogs.account_cfg.controller.AccountConfigController parent:
:param sakia.core.Application app:
:param sakia.core.Account account:
"""
super().__init__(parent)
self.app = app
self.account = account
def instanciate_account(self, name):
"""
Creates an account with a given name
:param str name: the name of the new account
"""
self.account = self.app.create_account(name)
def rename_account(self, name):
"""
Renames current account
:param str name: the new name
"""
self.account.name = name
\ No newline at end of file
from PyQt5.QtWidgets import QWidget
from .account_cfg_uic import Ui_AccountConfigurationDialog
class AccountConfigView(QWidget, Ui_AccountConfigurationDialog):
"""
Home screen view
"""
def __init__(self, parent):
"""
Constructor
"""
super().__init__(parent)
self.setupUi(self)
def set_creation_layout(self):
"""
Hide unecessary buttons and display correct title
"""
self.setWindowTitle(self.tr("New account"))
self.button_delete.hide()
def set_modification_layout(self, account_name):
"""
Hide unecessary widgets for account modification
and display correct title
:return:
"""
self.label_action.setText("Edit account uid")
self.edit_account_name.setPlaceholderText(account_name)
self.button_next.setEnabled(True)
self.setWindowTitle(self.tr("Configure {0}".format(account_name)))
def account_name(self):
return self.edit_account_name.text()
...@@ -24,12 +24,12 @@ class RevocationController(ComponentController): ...@@ -24,12 +24,12 @@ class RevocationController(ComponentController):
self.view.button_next.clicked.connect(lambda checked: self.handle_next_step(False)) self.view.button_next.clicked.connect(lambda checked: self.handle_next_step(False))
self._steps = ( self._steps = (
{ {
'page': self.ui.page_load_file, 'page': self.view.page_load_file,
'init': self.init_dialog, 'init': self.init_dialog,
'next': self.revocation_selected 'next': self.revocation_selected
}, },
{ {
'page': self.ui.page_destination, 'page': self.view.page_destination,
'init': self.init_publication_page, 'init': self.init_publication_page,
'next': self.publish 'next': self.publish
} }
...@@ -108,12 +108,12 @@ class RevocationController(ComponentController): ...@@ -108,12 +108,12 @@ class RevocationController(ComponentController):
@asyncify @asyncify
async def accept(self): async def accept(self):
if self.ui.radio_community.isChecked(): if self.view.radio_community.isChecked():
index = self.view.combo_community.currentIndex() index = self.view.combo_community.currentIndex()
result, error = await self.model.send_to_community(index) result, error = await self.model.send_to_community(index)
else: else:
server = self.ui.edit_address.text() server = self.view.edit_address.text()
port = self.ui.spinbox_port.value() port = self.view.spinbox_port.value()
result, error = await self.model.send_to_node(server, port) result, error = await self.model.send_to_node(server, port)
if result: if result:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment