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

Merge branch 'dev0112' into dev

parents 178f6bd7 23e0f20d
No related branches found
No related tags found
No related merge requests found
...@@ -31,7 +31,7 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog): ...@@ -31,7 +31,7 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
for ref in money.Referentials: for ref in money.Referentials:
self.combo_referential.addItem(QCoreApplication.translate('Account', ref.translated_name())) self.combo_referential.addItem(QCoreApplication.translate('Account', ref.translated_name()))
self.combo_referential.setCurrentIndex(self.app.preferences['ref']) self.combo_referential.setCurrentIndex(self.app.preferences['ref'])
for lang in ('en_GB', 'fr_FR'): for lang in ('en_GB', 'fr_FR', 'de_DE', 'es_ES', 'it_IT', 'pl_PL', 'pt_BR', 'ru_RU'):
self.combo_language.addItem(lang) self.combo_language.addItem(lang)
self.combo_language.setCurrentText(self.app.preferences.get('lang', 'en_US')) self.combo_language.setCurrentText(self.app.preferences.get('lang', 'en_US'))
self.checkbox_expertmode.setChecked(self.app.preferences.get('expert_mode', False)) self.checkbox_expertmode.setChecked(self.app.preferences.get('expert_mode', False))
......
# -*- coding: utf-8 -*-
import logging import logging
import asyncio import asyncio
from PyQt5.QtWidgets import QWidget, QComboBox, QDialog from PyQt5.QtWidgets import QWidget, QComboBox, QDialog
from PyQt5.QtCore import pyqtSlot, QEvent, QLocale, QDateTime, pyqtSignal from PyQt5.QtCore import pyqtSlot, QEvent, QLocale, QDateTime, pyqtSignal, QT_TRANSLATE_NOOP
from ucoinpy.api import bma from ucoinpy.api import bma
from ..tools.exceptions import MembershipNotFoundError from ..tools.exceptions import MembershipNotFoundError
...@@ -24,6 +22,7 @@ from ..tools.exceptions import NoPeerAvailable ...@@ -24,6 +22,7 @@ from ..tools.exceptions import NoPeerAvailable
class WotTabWidget(QWidget, Ui_WotTabWidget): class WotTabWidget(QWidget, Ui_WotTabWidget):
money_sent = pyqtSignal() money_sent = pyqtSignal()
_search_placeholder = QT_TRANSLATE_NOOP("WotTabWidget", "Research a pubkey, an uid...")
def __init__(self, app): def __init__(self, app):
""" """
...@@ -34,7 +33,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget): ...@@ -34,7 +33,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
self.setupUi(self) self.setupUi(self)
# Default text when combo lineEdit is empty # Default text when combo lineEdit is empty
self.comboBoxSearch.lineEdit().setPlaceholderText(self.tr('Research a pubkey, an uid...')) self.comboBoxSearch.lineEdit().setPlaceholderText(self.tr(WotTabWidget._search_placeholder))
# add combobox events # add combobox events
self.comboBoxSearch.lineEdit().returnPressed.connect(self.search) self.comboBoxSearch.lineEdit().returnPressed.connect(self.search)
# To fix a recall of the same item with different case, # To fix a recall of the same item with different case,
...@@ -354,6 +353,13 @@ class WotTabWidget(QWidget, Ui_WotTabWidget): ...@@ -354,6 +353,13 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
if result == QDialog.Accepted: if result == QDialog.Accepted:
self.window().refresh_contacts() self.window().refresh_contacts()
def retranslateUi(self, widget):
"""
Retranslate missing widgets from generated code
"""
self.comboBoxSearch.lineEdit().setPlaceholderText(self.tr(WotTabWidget._search_placeholder))
super().retranslateUi(self)
def resizeEvent(self, event): def resizeEvent(self, event):
self.busy.resize(event.size()) self.busy.resize(event.size())
super().resizeEvent(event) super().resizeEvent(event)
......
...@@ -8,6 +8,11 @@ import sys ...@@ -8,6 +8,11 @@ import sys
import asyncio import asyncio
import logging import logging
import os import os
import traceback
# To debug missing spec
import jsonschema
# To force cx_freeze import # To force cx_freeze import
import PyQt5.QtSvg import PyQt5.QtSvg
...@@ -45,6 +50,10 @@ def async_exception_handler(loop, context): ...@@ -45,6 +50,10 @@ def async_exception_handler(loop, context):
for ignored in ("Unclosed", "socket.gaierror"): for ignored in ("Unclosed", "socket.gaierror"):
if ignored in line: if ignored in line:
return return
for line in traceback.format_exception(*exc_info):
for ignored in ("Unclosed", "socket.gaierror"):
if ignored in line:
return
os._exit(1) os._exit(1)
......
...@@ -4,11 +4,9 @@ Created on 5 févr. 2014 ...@@ -4,11 +4,9 @@ Created on 5 févr. 2014
@author: inso @author: inso
""" """
from ..core.net.api import bma as bma
from ..tools.exceptions import NoPeerAvailable, MembershipNotFoundError from ..tools.exceptions import NoPeerAvailable, MembershipNotFoundError
from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
from PyQt5.QtCore import QAbstractTableModel, QSortFilterProxyModel, Qt, \ from PyQt5.QtCore import QAbstractTableModel, QSortFilterProxyModel, Qt, \
QDateTime, QModelIndex, QLocale QDateTime, QModelIndex, QLocale, QEvent
from PyQt5.QtGui import QColor from PyQt5.QtGui import QColor
import logging import logging
import asyncio import asyncio
...@@ -87,12 +85,12 @@ class IdentitiesTableModel(QAbstractTableModel): ...@@ -87,12 +85,12 @@ class IdentitiesTableModel(QAbstractTableModel):
""" """
super().__init__(parent) super().__init__(parent)
self.community = None self.community = None
self.columns_titles = {'uid': self.tr('UID'), self.columns_titles = {'uid': lambda: self.tr('UID'),
'pubkey': self.tr('Pubkey'), 'pubkey': lambda: self.tr('Pubkey'),
'renewed': self.tr('Renewed'), 'renewed': lambda: self.tr('Renewed'),
'expiration': self.tr('Expiration'), 'expiration': lambda: self.tr('Expiration'),
'publication': self.tr('Publication'), 'publication': lambda: self.tr('Publication'),
'validation': self.tr('Validation'),} 'validation': lambda: self.tr('Validation'),}
self.columns_ids = ('uid', 'pubkey', 'renewed', 'expiration', 'publication') self.columns_ids = ('uid', 'pubkey', 'renewed', 'expiration', 'publication')
self.identities_data = [] self.identities_data = []
self._sig_validity = 0 self._sig_validity = 0
...@@ -163,7 +161,7 @@ class IdentitiesTableModel(QAbstractTableModel): ...@@ -163,7 +161,7 @@ class IdentitiesTableModel(QAbstractTableModel):
def headerData(self, section, orientation, role): def headerData(self, section, orientation, role):
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
col_id = self.columns_ids[section] col_id = self.columns_ids[section]
return self.columns_titles[col_id] return self.columns_titles[col_id]()
def data(self, index, role): def data(self, index, role):
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
......
...@@ -132,10 +132,10 @@ class NetworkTableModel(QAbstractTableModel): ...@@ -132,10 +132,10 @@ class NetworkTableModel(QAbstractTableModel):
Node.CORRUPTED: QColor(Qt.lightGray) Node.CORRUPTED: QColor(Qt.lightGray)
} }
self.node_states = { self.node_states = {
Node.ONLINE: self.tr('Online'), Node.ONLINE: lambda: self.tr('Online'),
Node.OFFLINE: self.tr('Offline'), Node.OFFLINE: lambda: self.tr('Offline'),
Node.DESYNCED: self.tr('Unsynchronized'), Node.DESYNCED: lambda: self.tr('Unsynchronized'),
Node.CORRUPTED: self.tr('Corrupted') Node.CORRUPTED: lambda: self.tr('Corrupted')
} }
self.nodes_data = [] self.nodes_data = []
...@@ -212,7 +212,7 @@ class NetworkTableModel(QAbstractTableModel): ...@@ -212,7 +212,7 @@ class NetworkTableModel(QAbstractTableModel):
if role == Qt.BackgroundColorRole: if role == Qt.BackgroundColorRole:
return self.node_colors[node[self.columns_types.index('state')]] return self.node_colors[node[self.columns_types.index('state')]]
if role == Qt.ToolTipRole: if role == Qt.ToolTipRole:
return self.node_states[node[self.columns_types.index('state')]] return self.node_states[node[self.columns_types.index('state')]]()
return QVariant() return QVariant()
......
...@@ -204,15 +204,15 @@ class HistoryTableModel(QAbstractTableModel): ...@@ -204,15 +204,15 @@ class HistoryTableModel(QAbstractTableModel):
) )
self.column_headers = ( self.column_headers = (
self.tr('Date'), lambda: self.tr('Date'),
self.tr('UID/Public key'), lambda: self.tr('UID/Public key'),
self.tr('Payment'), lambda: self.tr('Payment'),
self.tr('Deposit'), lambda: self.tr('Deposit'),
self.tr('Comment'), lambda: self.tr('Comment'),
'State', lambda: 'State',
'TXID', lambda: 'TXID',
'Pubkey', lambda: 'Pubkey',
'Block Number' lambda: 'Block Number'
) )
def change_account(self, account): def change_account(self, account):
...@@ -333,11 +333,11 @@ class HistoryTableModel(QAbstractTableModel): ...@@ -333,11 +333,11 @@ class HistoryTableModel(QAbstractTableModel):
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
if self.columns_types[section] == 'payment' or self.columns_types[section] == 'deposit': if self.columns_types[section] == 'payment' or self.columns_types[section] == 'deposit':
return '{:}\n({:})'.format( return '{:}\n({:})'.format(
self.column_headers[section], self.column_headers[section](),
self.account.current_ref.diff_units(self.community.short_currency) self.account.current_ref.diff_units(self.community.short_currency)
) )
return self.column_headers[section] return self.column_headers[section]()
def data(self, index, role): def data(self, index, role):
row = index.row() row = index.row()
......
...@@ -44,6 +44,10 @@ def generate_pro(): ...@@ -44,6 +44,10 @@ def generate_pro():
pro_file = generate_pro() pro_file = generate_pro()
try: try:
if "-noobsolete" in sys.argv:
print("Removing obsolete strings...")
subprocess.call(["pylupdate5", "-noobsolete", pro_file])
else:
subprocess.call(["pylupdate5", pro_file]) subprocess.call(["pylupdate5", pro_file])
finally: finally:
os.remove(pro_file) os.remove(pro_file)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment