diff --git a/src/sakia/gui/dialogs/connection_cfg/view.py b/src/sakia/gui/dialogs/connection_cfg/view.py index 561e8b45e6105cd9feb935fb7dd2fa11224ea7af..102b266f765b712bf9b3961752fda71d72bcf709 100644 --- a/src/sakia/gui/dialogs/connection_cfg/view.py +++ b/src/sakia/gui/dialogs/connection_cfg/view.py @@ -1,5 +1,5 @@ from PyQt5.QtWidgets import QDialog -from PyQt5.QtCore import pyqtSignal, Qt +from PyQt5.QtCore import pyqtSignal, Qt, QElapsedTimer, QDateTime, QCoreApplication from .connection_cfg_uic import Ui_ConnectionConfigurationDialog from .congratulation_uic import Ui_CongratulationPopup from duniterpy.key import SigningKey, ScryptParams @@ -22,6 +22,9 @@ class ConnectionConfigView(QDialog, Ui_ConnectionConfigurationDialog): """ super().__init__(parent) self.setupUi(self) + self.last_speed = 0.1 + self.average_speed = 1 + self.timer = QElapsedTimer() self.edit_uid.textChanged.connect(self.values_changed) self.edit_password.textChanged.connect(self.values_changed) self.edit_password_repeat.textChanged.connect(self.values_changed) @@ -153,11 +156,22 @@ class ConnectionConfigView(QDialog, Ui_ConnectionConfigurationDialog): :param float ratio: the ratio of progress of current step (between 0 and 1) :return: """ + QCoreApplication.processEvents() value = self.progress_bar.value() - self.progress_bar.setValue(value + 1000000*step_ratio) + next_value = value + 1000000*step_ratio + SMOOTHING_FACTOR = 0.005 + speed_percent_by_ms = (next_value - value) / self.timer.elapsed() + self.average_speed = SMOOTHING_FACTOR * self.last_speed + (1 - SMOOTHING_FACTOR) * self.average_speed + remaining = (self.progress_bar.maximum() - next_value) / self.average_speed + self.last_speed = speed_percent_by_ms + displayed_remaining_time = QDateTime.fromTime_t(remaining).toUTC().toString("hh:mm:ss") + self.progress_bar.setFormat(self.tr("{0} scs remaining...".format(displayed_remaining_time))) + self.progress_bar.setValue(next_value) + self.timer.restart() def set_progress_steps(self, steps): self.progress_bar.setValue(0) + self.timer.start() self.progress_bar.setMaximum(steps*1000000) def set_step(self, step): diff --git a/src/sakia/gui/navigation/graphs/base/node.py b/src/sakia/gui/navigation/graphs/base/node.py index f07802526c77144ced6941477173af888b6590c5..5dc64a2a5a0be64381b0fad2d100409da3d07577 100644 --- a/src/sakia/gui/navigation/graphs/base/node.py +++ b/src/sakia/gui/navigation/graphs/base/node.py @@ -17,7 +17,7 @@ class BaseNode(QGraphicsEllipseItem): super().__init__() - self.metadata = nx_node[1] + self.metadata = nx_node[1]['attr_dict'] self.id = nx_node[0] # unpack tuple x, y = pos[nx_node[0]] diff --git a/src/sakia/gui/navigation/graphs/wot/scene.py b/src/sakia/gui/navigation/graphs/wot/scene.py index 59d672257418c6ff562e77410651cf908fe45f66..cc12833b47c37b17237a0f9f697da9a80920bf45 100644 --- a/src/sakia/gui/navigation/graphs/wot/scene.py +++ b/src/sakia/gui/navigation/graphs/wot/scene.py @@ -77,7 +77,10 @@ class WotScene(BaseScene): y = 0 x = -1 * scale # sort by text - sort_certifier = sorted(certifier, key=lambda node_: node_[1]['text'].lower()) + try: + sort_certifier = sorted(certifier, key=lambda node_: node_[1]['attr_dict']['text'].lower()) + except KeyError as e: + print(e) # add nodes and arcs for n in sort_certifier: y += 0.25 * scale @@ -104,7 +107,7 @@ class WotScene(BaseScene): y = 0 x = 1 * scale # sort by text - sort_certified = sorted(certified, key=lambda node_: node_[1]['text'].lower()) + sort_certified = sorted(certified, key=lambda node_: node_[1]['attr_dict']['text'].lower()) # add nodes and arcs for n in sort_certified: y += 0.25 * scale @@ -157,9 +160,9 @@ class WotScene(BaseScene): for edge in nx_graph.edges(data=True): if edge[0] in certifiers_graph_pos and edge[1] == identity.pubkey: - self.addItem(WotEdge(edge[0], edge[1], edge[2], certifiers_graph_pos)) + self.addItem(WotEdge(edge[0], edge[1], edge[2]['attr_dict'], certifiers_graph_pos)) if edge[0] == identity.pubkey and edge[1] in certified_graph_pos: - self.addItem(WotEdge(edge[0], edge[1], edge[2], certified_graph_pos)) + self.addItem(WotEdge(edge[0], edge[1], edge[2]['attr_dict'], certified_graph_pos)) self.update()