From c790aa9cbff96aa736984fafb211c3a695e7c385 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Sun, 23 Aug 2015 21:10:14 +0200 Subject: [PATCH] Dynamic change of language ( #139 ) --- src/cutecoin/gui/certification.py | 1 - src/cutecoin/gui/community_tab.py | 12 +++++++++++- src/cutecoin/gui/currency_tab.py | 14 +++++++++++++- src/cutecoin/gui/homescreen.py | 13 +++++++++++++ src/cutecoin/gui/informations_tab.py | 13 ++++++++++++- src/cutecoin/gui/mainwindow.py | 13 ++++++++++++- src/cutecoin/gui/network_tab.py | 13 +++++++++++-- src/cutecoin/gui/password_asker.py | 11 +++++++++++ src/cutecoin/gui/preferences.py | 2 ++ src/cutecoin/gui/transactions_tab.py | 13 ++++++++++++- src/cutecoin/gui/wallets_tab.py | 13 ++++++++++++- src/cutecoin/gui/wot_tab.py | 13 ++++++++++++- 12 files changed, 121 insertions(+), 10 deletions(-) diff --git a/src/cutecoin/gui/certification.py b/src/cutecoin/gui/certification.py index 4ebd81fd..c76f1468 100644 --- a/src/cutecoin/gui/certification.py +++ b/src/cutecoin/gui/certification.py @@ -12,7 +12,6 @@ import asyncio class CertificationDialog(QDialog, Ui_CertificationDialog): - """ classdocs """ diff --git a/src/cutecoin/gui/community_tab.py b/src/cutecoin/gui/community_tab.py index e9e3653f..6d733008 100644 --- a/src/cutecoin/gui/community_tab.py +++ b/src/cutecoin/gui/community_tab.py @@ -5,7 +5,7 @@ Created on 2 févr. 2014 """ import logging -from PyQt5.QtCore import Qt, pyqtSlot +from PyQt5.QtCore import Qt, pyqtSlot, QEvent from PyQt5.QtGui import QIcon, QCursor from PyQt5.QtWidgets import QWidget, QMessageBox, QAction, QMenu, QDialog, \ QAbstractItemView @@ -284,3 +284,13 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): self.table_identities.model().sourceModel().refresh_identities(identities) self.table_identities.resizeColumnsToContents() + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + return super(CommunityTabWidget, self).changeEvent(event) + diff --git a/src/cutecoin/gui/currency_tab.py b/src/cutecoin/gui/currency_tab.py index 4767d36d..c3f40928 100644 --- a/src/cutecoin/gui/currency_tab.py +++ b/src/cutecoin/gui/currency_tab.py @@ -7,7 +7,7 @@ Created on 2 févr. 2014 import time import logging from PyQt5.QtWidgets import QWidget, QMessageBox -from PyQt5.QtCore import QModelIndex, pyqtSlot, QDateTime, QLocale +from PyQt5.QtCore import QModelIndex, pyqtSlot, QDateTime, QLocale, QEvent from PyQt5.QtGui import QIcon from ..gen_resources.currency_tab_uic import Ui_CurrencyTabWidget @@ -202,3 +202,15 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget): if self.tab_informations: self.tab_informations.refresh() + + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh_status() + return super(CurrencyTabWidget, self).changeEvent(event) + diff --git a/src/cutecoin/gui/homescreen.py b/src/cutecoin/gui/homescreen.py index 15ffa516..535bb298 100644 --- a/src/cutecoin/gui/homescreen.py +++ b/src/cutecoin/gui/homescreen.py @@ -5,6 +5,7 @@ Created on 31 janv. 2015 """ from PyQt5.QtWidgets import QWidget +from PyQt5.QtCore import QEvent from ..gen_resources.homescreen_uic import Ui_HomeScreenWidget from ..__init__ import __version__ from . import toast @@ -43,3 +44,15 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): version_info=version_info, version_url=version_url)) + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh_text() + return super(HomeScreenWidget, self).changeEvent(event) + + diff --git a/src/cutecoin/gui/informations_tab.py b/src/cutecoin/gui/informations_tab.py index 5d494e1a..5625282c 100644 --- a/src/cutecoin/gui/informations_tab.py +++ b/src/cutecoin/gui/informations_tab.py @@ -6,7 +6,7 @@ Created on 31 janv. 2015 import logging import math -from PyQt5.QtCore import QLocale, QDateTime +from PyQt5.QtCore import QLocale, QDateTime, QEvent from PyQt5.QtWidgets import QWidget from ..gen_resources.informations_tab_uic import Ui_InformationsTabWidget @@ -218,3 +218,14 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): self.tr('Maximum distance between each WoT member and a newcomer'), ) ) + + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh() + return super(InformationsTabWidget, self).changeEvent(event) diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py index a893c9db..aef391f5 100644 --- a/src/cutecoin/gui/mainwindow.py +++ b/src/cutecoin/gui/mainwindow.py @@ -8,7 +8,7 @@ from ..gen_resources.about_uic import Ui_AboutPopup from PyQt5.QtWidgets import QMainWindow, QAction, QFileDialog, QProgressBar, \ QMessageBox, QLabel, QComboBox, QDialog, QApplication -from PyQt5.QtCore import QSignalMapper, QObject, QLocale, \ +from PyQt5.QtCore import QSignalMapper, QObject, QLocale, QEvent, \ pyqtSlot, pyqtSignal, QDate, QDateTime, QTimer, QUrl, Qt, QCoreApplication from PyQt5.QtGui import QIcon, QDesktopServices @@ -351,3 +351,14 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.app.stop() super().closeEvent(event) + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh() + return super(MainWindow, self).changeEvent(event) + diff --git a/src/cutecoin/gui/network_tab.py b/src/cutecoin/gui/network_tab.py index 73349efb..efdd7624 100644 --- a/src/cutecoin/gui/network_tab.py +++ b/src/cutecoin/gui/network_tab.py @@ -9,7 +9,7 @@ import asyncio from PyQt5.QtGui import QCursor, QDesktopServices from PyQt5.QtWidgets import QWidget, QMenu, QAction -from PyQt5.QtCore import Qt, QModelIndex, pyqtSlot, QUrl +from PyQt5.QtCore import Qt, QModelIndex, pyqtSlot, QUrl, QEvent from ..models.network import NetworkTableModel, NetworkFilterProxyModel from ..core.net.api import bma as qtbma from ..gen_resources.network_tab_uic import Ui_NetworkTabWidget @@ -98,4 +98,13 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget): def manual_nodes_refresh(self): self.community.network.refresh_once() - + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh_nodes() + return super(NetworkTabWidget, self).changeEvent(event) diff --git a/src/cutecoin/gui/password_asker.py b/src/cutecoin/gui/password_asker.py index dcb65ddd..30815fe8 100644 --- a/src/cutecoin/gui/password_asker.py +++ b/src/cutecoin/gui/password_asker.py @@ -7,6 +7,7 @@ Created on 24 dec. 2014 import logging import re +from PyQt5.QtCore import QEvent from PyQt5.QtWidgets import QDialog, QMessageBox from ..gen_resources.password_asker_uic import Ui_PasswordAskerDialog @@ -67,6 +68,16 @@ class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog): self.password = "" super().reject() + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + return super(PasswordAskerDialog, self).changeEvent(event) + def detect_non_printable(data): control_chars = ''.join(map(chr, list(range(0, 32)) + list(range(127, 160)))) diff --git a/src/cutecoin/gui/preferences.py b/src/cutecoin/gui/preferences.py index 0372232d..919d50de 100644 --- a/src/cutecoin/gui/preferences.py +++ b/src/cutecoin/gui/preferences.py @@ -78,6 +78,8 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog): 'proxy_port': self.spinbox_proxy_port.value(), 'international_system_of_units': self.checkbox_international_system.isChecked()} self.app.save_preferences(pref) + # change UI translation + self.app.switch_language() toast.display(self.tr("Preferences"), self.tr("A restart is needed to apply your new preferences.")) super().accept() diff --git a/src/cutecoin/gui/transactions_tab.py b/src/cutecoin/gui/transactions_tab.py index 2758daa9..50eaa7de 100644 --- a/src/cutecoin/gui/transactions_tab.py +++ b/src/cutecoin/gui/transactions_tab.py @@ -1,6 +1,6 @@ from PyQt5.QtWidgets import QWidget, QAbstractItemView, QHeaderView, QDialog, \ QMenu, QAction, QApplication, QMessageBox -from PyQt5.QtCore import Qt, QDateTime, QTime, QModelIndex, QLocale, QCoreApplication, pyqtSlot +from PyQt5.QtCore import Qt, QDateTime, QTime, QModelIndex, QCoreApplication, pyqtSlot, QEvent from PyQt5.QtGui import QCursor from ..gen_resources.transactions_tab_uic import Ui_transactionsTabWidget from ..models.txhistory import HistoryTableModel, TxFilterProxyModel @@ -237,3 +237,14 @@ QMessageBox.Ok | QMessageBox.Cancel) self.table_history.model().set_period(ts_from, ts_to) self.refresh_balance() + + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh() + return super(TransactionsTabWidget, self).changeEvent(event) diff --git a/src/cutecoin/gui/wallets_tab.py b/src/cutecoin/gui/wallets_tab.py index 32e601f3..245cab78 100644 --- a/src/cutecoin/gui/wallets_tab.py +++ b/src/cutecoin/gui/wallets_tab.py @@ -7,7 +7,7 @@ import asyncio import logging from PyQt5.QtWidgets import QWidget, QMenu, QAction, QApplication, QDialog, QMessageBox -from PyQt5.QtCore import QDateTime, QModelIndex, Qt, QLocale +from PyQt5.QtCore import QDateTime, QModelIndex, Qt, QLocale, QEvent from PyQt5.QtGui import QCursor from ..core.registry import Identity @@ -340,3 +340,14 @@ Revoking your UID can only success if it is not already validated by the network self.button_membership.hide() self.button_leaving.hide() self.button_publish_uid.show() + + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh() + return super(WalletsTabWidget, self).changeEvent(event) diff --git a/src/cutecoin/gui/wot_tab.py b/src/cutecoin/gui/wot_tab.py index ec8d5754..c7e8572e 100644 --- a/src/cutecoin/gui/wot_tab.py +++ b/src/cutecoin/gui/wot_tab.py @@ -3,7 +3,7 @@ import logging from cutecoin.core.graph import Graph from PyQt5.QtWidgets import QWidget, QComboBox, QLineEdit -from PyQt5.QtCore import pyqtSlot +from PyQt5.QtCore import pyqtSlot, QEvent from cutecoin.core.net.api import bma from cutecoin.core.registry import BlockchainState from ..gen_resources.wot_tab_uic import Ui_WotTabWidget @@ -218,3 +218,14 @@ class WotTabWidget(QWidget, Ui_WotTabWidget): logging.debug('community.get_block request error : ' + str(e)) return False return block.mediantime + + def changeEvent(self, event): + """ + Intercepte LanguageChange event to translate UI + :param QEvent QEvent: Event + :return: + """ + if event.type() == QEvent.LanguageChange: + self.retranslateUi(self) + self.refresh() + return super(WotTabWidget, self).changeEvent(event) -- GitLab