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

Fix multiple bugs with data refresh

parent c199319f
No related branches found
No related tags found
No related merge requests found
...@@ -38,8 +38,8 @@ QGroupBox::title { ...@@ -38,8 +38,8 @@ QGroupBox::title {
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>518</width> <width>522</width>
<height>717</height> <height>721</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
...@@ -58,7 +58,7 @@ QGroupBox::title { ...@@ -58,7 +58,7 @@ QGroupBox::title {
<item> <item>
<widget class="QLabel" name="label_general"> <widget class="QLabel" name="label_general">
<property name="text"> <property name="text">
<string>label_general</string> <string/>
</property> </property>
<property name="scaledContents"> <property name="scaledContents">
<bool>false</bool> <bool>false</bool>
...@@ -80,7 +80,7 @@ QGroupBox::title { ...@@ -80,7 +80,7 @@ QGroupBox::title {
<item> <item>
<widget class="QLabel" name="label_rules"> <widget class="QLabel" name="label_rules">
<property name="text"> <property name="text">
<string>label_rules</string> <string/>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
...@@ -99,7 +99,7 @@ QGroupBox::title { ...@@ -99,7 +99,7 @@ QGroupBox::title {
<item> <item>
<widget class="QLabel" name="label_money"> <widget class="QLabel" name="label_money">
<property name="text"> <property name="text">
<string>label_money</string> <string/>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
...@@ -118,7 +118,7 @@ QGroupBox::title { ...@@ -118,7 +118,7 @@ QGroupBox::title {
<item> <item>
<widget class="QLabel" name="label_wot"> <widget class="QLabel" name="label_wot">
<property name="text"> <property name="text">
<string>label_wot</string> <string/>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
......
...@@ -56,6 +56,8 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab): ...@@ -56,6 +56,8 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
self.table_identities.customContextMenuRequested.connect(self.identity_context_menu) self.table_identities.customContextMenuRequested.connect(self.identity_context_menu)
self.table_identities.sortByColumn(0, Qt.AscendingOrder) self.table_identities.sortByColumn(0, Qt.AscendingOrder)
self.table_identities.resizeColumnsToContents() self.table_identities.resizeColumnsToContents()
identities_model.modelAboutToBeReset.connect(lambda: self.table_identities.setEnabled(False))
identities_model.modelReset.connect(lambda: self.table_identities.setEnabled(True))
members_action = QAction(self.tr("Members"), self) members_action = QAction(self.tr("Members"), self)
members_action.triggered.connect(self._async_search_members) members_action.triggered.connect(self._async_search_members)
......
...@@ -10,9 +10,9 @@ import math ...@@ -10,9 +10,9 @@ import math
from PyQt5.QtCore import QLocale, QDateTime, QEvent from PyQt5.QtCore import QLocale, QDateTime, QEvent
from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QWidget
from ..gen_resources.informations_tab_uic import Ui_InformationsTabWidget from ..gen_resources.informations_tab_uic import Ui_InformationsTabWidget
from ..tools.decorators import asyncify from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
from ..tools.exceptions import NoPeerAvailable from ..tools.exceptions import NoPeerAvailable
from .widgets import Busy
class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
""" """
...@@ -28,16 +28,19 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): ...@@ -28,16 +28,19 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
:return: :return:
""" """
super().__init__() super().__init__()
self.setupUi(self)
self.app = app self.app = app
self.account = None self.account = None
self.community = None self.community = None
self.busy = Busy(self.scrollArea)
self.setupUi(self) self.busy.hide()
def change_account(self, account): def change_account(self, account):
cancel_once_task(self, self.refresh_labels)
self.account = account self.account = account
def change_community(self, community): def change_community(self, community):
cancel_once_task(self, self.refresh_labels)
self.community = community self.community = community
self.refresh() self.refresh()
...@@ -45,9 +48,11 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): ...@@ -45,9 +48,11 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
if self.account and self.community: if self.account and self.community:
self.refresh_labels() self.refresh_labels()
@once_at_a_time
@asyncify @asyncify
@asyncio.coroutine @asyncio.coroutine
def refresh_labels(self): def refresh_labels(self):
self.busy.show()
# try to request money parameters # try to request money parameters
try: try:
params = yield from self.community.parameters() params = yield from self.community.parameters()
...@@ -230,6 +235,11 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): ...@@ -230,6 +235,11 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
self.tr('Maximum distance between each WoT member and a newcomer'), self.tr('Maximum distance between each WoT member and a newcomer'),
) )
) )
self.busy.hide()
def resizeEvent(self, event):
self.busy.resize(event.size())
super().resizeEvent(event)
def changeEvent(self, event): def changeEvent(self, event):
""" """
......
...@@ -39,6 +39,8 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget): ...@@ -39,6 +39,8 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget):
self.table_network.setModel(proxy) self.table_network.setModel(proxy)
self.table_network.sortByColumn(0, Qt.DescendingOrder) self.table_network.sortByColumn(0, Qt.DescendingOrder)
self.table_network.resizeColumnsToContents() self.table_network.resizeColumnsToContents()
model.modelAboutToBeReset.connect(lambda: self.table_network.setEnabled(False))
model.modelReset.connect(lambda: self.table_network.setEnabled(True))
def change_community(self, community): def change_community(self, community):
if self.community: if self.community:
......
...@@ -58,6 +58,10 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget): ...@@ -58,6 +58,10 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
self.table_history.setSortingEnabled(True) self.table_history.setSortingEnabled(True)
self.table_history.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive) self.table_history.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
self.table_history.resizeColumnsToContents() self.table_history.resizeColumnsToContents()
model.modelAboutToBeReset.connect(lambda: self.table_history.setEnabled(False))
model.modelReset.connect(lambda: self.table_history.setEnabled(True))
self.progressbar.hide() self.progressbar.hide()
self.refresh() self.refresh()
......
__author__ = 'inso' from .busy import Busy
from .dialogs import QAsyncMessageBox
\ No newline at end of file
...@@ -104,12 +104,21 @@ class IdentitiesTableModel(QAbstractTableModel): ...@@ -104,12 +104,21 @@ class IdentitiesTableModel(QAbstractTableModel):
@property @property
def pubkeys(self): def pubkeys(self):
""" """
Get pubkeys of displayed identities Ge
def resizeEvent(self, event):
self.busy.resize(event.size())
super().resizeEvent(event)t pubkeys of displayed identities
""" """
return [i[1] for i in self.identities_data] return [i[1] for i in self.identities_data]
@asyncio.coroutine @asyncio.coroutine
def identity_data(self, identity): def identity_data(self, identity):
"""
Return the identity in the form a tuple to display
:param cutecoin.core.registry.Identity identity: The identity to get data from
:return: The identity data in the form of a tuple
:rtype: tuple
"""
try: try:
join_date = yield from identity.get_join_date(self.community) join_date = yield from identity.get_join_date(self.community)
expiration_date = yield from identity.get_expiration_date(self.community) expiration_date = yield from identity.get_expiration_date(self.community)
...@@ -117,7 +126,7 @@ class IdentitiesTableModel(QAbstractTableModel): ...@@ -117,7 +126,7 @@ class IdentitiesTableModel(QAbstractTableModel):
join_date = None join_date = None
expiration_date = None expiration_date = None
return (identity.uid, identity.pubkey, join_date, expiration_date) return identity.uid, identity.pubkey, join_date, expiration_date
@asyncio.coroutine @asyncio.coroutine
def refresh_identities(self, identities): def refresh_identities(self, identities):
......
...@@ -11,7 +11,7 @@ from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyMode ...@@ -11,7 +11,7 @@ from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyMode
from PyQt5.QtGui import QColor, QFont from PyQt5.QtGui import QColor, QFont
from ..tools.exceptions import NoPeerAvailable from ..tools.exceptions import NoPeerAvailable
from ..tools.decorators import asyncify, once_at_a_time from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
from cutecoin.core.net.node import Node from cutecoin.core.net.node import Node
...@@ -139,6 +139,7 @@ class NetworkTableModel(QAbstractTableModel): ...@@ -139,6 +139,7 @@ class NetworkTableModel(QAbstractTableModel):
self.nodes_data = [] self.nodes_data = []
def change_community(self, community): def change_community(self, community):
cancel_once_task(self, self.refresh_nodes)
self.community = community self.community = community
self.refresh_nodes() self.refresh_nodes()
...@@ -173,13 +174,12 @@ class NetworkTableModel(QAbstractTableModel): ...@@ -173,13 +174,12 @@ class NetworkTableModel(QAbstractTableModel):
return (address, port, number, block_hash, node.uid, return (address, port, number, block_hash, node.uid,
is_member, node.pubkey, node.software, node.version, is_root, node.state) is_member, node.pubkey, node.software, node.version, is_root, node.state)
@once_at_a_time
@asyncify @asyncify
@asyncio.coroutine @asyncio.coroutine
def refresh_nodes(self): def refresh_nodes(self):
self.beginResetModel() self.beginResetModel()
self.nodes_data = [] self.nodes_data = []
self.endResetModel()
self.beginResetModel()
nodes_data = [] nodes_data = []
if self.community: if self.community:
for node in self.community.network.nodes: for node in self.community.network.nodes:
......
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