Skip to content
Snippets Groups Projects
mainWindow.py 4.36 KiB
Newer Older
inso's avatar
inso committed
'''
Created on 1 févr. 2014

@author: inso
'''
from cutecoin.gen_resources.mainwindow_uic import Ui_MainWindow
inso's avatar
inso committed
from PyQt5.QtWidgets import QMainWindow, QAction
from PyQt5.QtCore import QSignalMapper, QModelIndex
from cutecoin.gui.processConfigureAccount import ProcessConfigureAccount
inso's avatar
inso committed
from cutecoin.gui.transferMoneyDialog import TransferMoneyDialog
from cutecoin.gui.communityTabWidget import CommunityTabWidget
inso's avatar
inso committed
from cutecoin.gui.addContactDialog import AddContactDialog
from cutecoin.models.account.wallets.listModel import WalletsListModel
inso's avatar
inso committed
from cutecoin.models.coin.listModel import CoinsListModel
from cutecoin.models.transaction.sentListModel import SentListModel
from cutecoin.models.transaction.receivedListModel import ReceivedListModel
inso's avatar
inso committed

inso's avatar
inso committed
class MainWindow(QMainWindow, Ui_MainWindow):
inso's avatar
inso committed
    '''
    classdocs
    '''

inso's avatar
inso committed
        '''
        Constructor
        '''
        # Set up the user interface from Designer.
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.refresh()
    def open_add_account_dialog(self):
        dialog = ProcessConfigureAccount(self.core, None)
        dialog.accepted.connect(self.refresh)
inso's avatar
inso committed
        dialog.exec_()

    def action_change_account(self, account_name):
        self.core.current_account = self.core.get_account(account_name)
        logging.info('Changing account to ' + self.core.current_account.name)
        self.refresh()
    def open_transfer_money_dialog(self):
inso's avatar
inso committed
        dialog = TransferMoneyDialog(self.core.current_account)
        dialog.accepted.connect(self.refresh_wallets)
        dialog.exec_()
    def open_add_contact_dialog(self):
        AddContactDialog(self.core.current_account, self).exec_()
inso's avatar
inso committed

    def open_configure_account_dialog(self):
        dialog = ProcessConfigureAccount(self.core, self.core.current_account)
inso's avatar
inso committed
        dialog.accepted.connect(self.refresh_wallets)
inso's avatar
inso committed
        dialog.exec_()
inso's avatar
inso committed

    '''
    Refresh main window
    When the selected account changes, all the widgets
    in the window have to be refreshed
    '''

    def refresh(self):
        self.menu_change_account.clear()
        signal_mapper = QSignalMapper(self)
        for account in self.core.accounts:
            action = QAction(account.name, self)
            self.menu_change_account.addAction(action)
            signal_mapper.setMapping(action, account.name)
            action.triggered.connect(signal_mapper.map)
            signal_mapper.mapped[str].connect(self.action_change_account)
        if self.core.current_account is None:
            self.tabs_account.setEnabled(False)
            self.tabs_account.setEnabled(True)
            self.label_account_name.setText(
                "Current account : " +
                self.core.current_account.name)
inso's avatar
inso committed

inso's avatar
inso committed
            self.refresh_wallets()

            self.tabs_communities.clear()
            for community in self.core.current_account.communities:
                tab_community = CommunityTabWidget(
                    self.core.current_account,
                    community)
                quality = self.core.current_account.quality(community)
                self.tabs_communities.addTab(tab_community, quality +
                                                     " in " + community.name())

            self.menu_contacts_list.clear()
            for contact in self.core.current_account.contacts:
                self.menu_contacts_list.addAction(contact.name)

            self.list_transactions_sent.setModel(
                SentListModel(
                    self.core.current_account))
            self.list_transactions_received.setModel(
                ReceivedListModel(
                    self.core.current_account))

inso's avatar
inso committed
    def refresh_wallets(self):
        for wallet in self.core.current_account.wallets:
            wallet.refresh_coins()

        wallets_list_model = WalletsListModel(self.core.current_account)
        self.list_wallets.setModel(wallets_list_model)
        self.refresh_wallet_content(QModelIndex())

    def refresh_wallet_content(self, index):
inso's avatar
inso committed
        if index.isValid():
inso's avatar
inso committed
            current_wallet = self.core.current_account.wallets[index.row()]
inso's avatar
inso committed
            self.list_wallet_content.setModel(CoinsListModel(current_wallet, current_wallet.coins))
inso's avatar
inso committed
        else:
inso's avatar
inso committed
            self.list_wallet_content.setModel(CoinsListModel(None, []))