Skip to content

Commit 17112ba

Browse files
committed
PyQt5 based qtpy fallback
1 parent 4aa96d3 commit 17112ba

File tree

6 files changed

+41
-11
lines changed

6 files changed

+41
-11
lines changed

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ def run(self):
6969
'pybitmessage.pyelliptic',
7070
'pybitmessage.socks',
7171
'pybitmessage.storage',
72-
'pybitmessage.plugins'
72+
'pybitmessage.plugins',
73+
'pybitmessage.fallback'
7374
]
7475

7576
# this will silently accept alternative providers of msgpack
@@ -83,8 +84,7 @@ def run(self):
8384
import umsgpack
8485
installRequires.append("umsgpack")
8586
except ImportError:
86-
packages += [
87-
'pybitmessage.fallback', 'pybitmessage.fallback.umsgpack']
87+
packages += ['pybitmessage.fallback.umsgpack']
8888

8989
dist = setup(
9090
name='pybitmessage',

src/bitmessageqt/networkstatus.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ def __init__(self, parent=None):
3535
header.setSortIndicator(0, QtCore.Qt.AscendingOrder)
3636

3737
self.startup = time.localtime()
38-
self.labelStartupTime.setText(_translate(
39-
"networkstatus", "Since startup on {0}").format(
40-
l10n.formatTimestamp(self.startup))
41-
)
4238

4339
self.UISignalThread = UISignaler.get()
4440
self.UISignalThread.updateNumberOfMessagesProcessed.connect(

src/bitmessageqt/support.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def createSupportMessage(myapp):
126126

127127
opensslversion = "%s (Python internal), %s (external for PyElliptic)" % (ssl.OPENSSL_VERSION, OpenSSL._version)
128128

129-
qtapi = os.environ['QT_API']
129+
qtapi = os.environ.get('QT_API', 'fallback')
130130

131131
frozen = "N/A"
132132
if paths.frozen:

src/depends.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
and suggest how it may be installed
44
"""
55

6+
# flake8: noqa:E402
7+
68
import sys
79

810
# Only really old versions of Python don't have sys.hexversion. We don't
@@ -387,9 +389,13 @@ def check_pyqt():
387389
PyQt 4.8 or later.
388390
"""
389391
# pylint: disable=no-member
390-
qtpy = try_import(
391-
'qtpy',
392-
'PyBitmessage requires qtpy, PyQt 4.8 or later and Qt 4.7 or later.')
392+
try:
393+
from fallback import qtpy
394+
except ImportError:
395+
logger.error(
396+
'PyBitmessage requires qtpy, PyQt 4.8 or later and Qt 4.7 or later.'
397+
)
398+
qtpy = None
393399

394400
if not qtpy:
395401
return False

src/fallback/__init__.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
11
"""
22
.. todo:: hello world
33
"""
4+
5+
try:
6+
import qtpy
7+
except ImportError:
8+
try:
9+
from PyQt5 import QtCore, QtGui, QtWidgets, QtNetwork, uic
10+
except ImportError:
11+
qtpy = None
12+
else:
13+
import sys
14+
import types
15+
16+
QtCore.Signal = QtCore.pyqtSignal
17+
context = {
18+
'API': 'pyqt5', # for tr
19+
'PYQT_VERSION': QtCore.PYQT_VERSION_STR,
20+
'QT_VERSION': QtCore.QT_VERSION_STR,
21+
'QtCore': QtCore,
22+
'QtGui': QtGui,
23+
'QtWidgets': QtWidgets,
24+
'QtNetwork': QtNetwork,
25+
'uic': uic
26+
}
27+
qtpy = types.ModuleType(
28+
'qtpy', 'PyQt5 based dynamic fallback for qtpy')
29+
qtpy.__dict__.update(context)
30+
sys.modules['qtpy'] = qtpy

src/tr.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def _tr_dummy(context, text, disambiguation=None, n=None):
1212

1313
if state.enableGUI and not state.curses:
1414
try:
15+
from fallback import qtpy # noqa:F401
1516
from qtpy import QtWidgets, QtCore, API
1617
except ImportError:
1718
_translate = _tr_dummy

0 commit comments

Comments
 (0)