Skip to content

Commit f10b2d7

Browse files
committed
qt: use series of pngs for spinner
Use a series of .png frames for the spinner instead of a .mng. `mng` is an obscure image format and is not built by default into Qt5. This appears to improve the crispness of the spinner as well. Does not noticably increase the size (still ~27k) and the code is not more complicated either.
1 parent a7973c9 commit f10b2d7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+55
-21
lines changed

contrib/debian/copyright

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ Copyright: Bitboy (optimized for 16x16 by Wladimir van der Laan)
7171
License: PUB-DOM
7272
Comment: Site: https://bitcointalk.org/?topic=1756.0
7373

74-
Files: scripts/img/reload.xcf, src/qt/res/movies/update_spinner.mng
74+
Files: scripts/img/reload.xcf, src/qt/res/movies/*.png
7575
Copyright: Everaldo (Everaldo Coelho)
7676
License: GPL-3+
7777
Comment: Icon Pack: Kids

doc/assets-attribution.md

Lines changed: 2 additions & 2 deletions

share/qt/img/reload.png

9.65 KB

share/qt/make_spinner.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
#!/usr/bin/env python
22
# W.J. van der Laan, 2011
3-
# Make spinning .mng animation from a .png
3+
# Make spinning animation from a .png
44
# Requires imagemagick 6.7+
55
from __future__ import division
66
from os import path
77
from PIL import Image
88
from subprocess import Popen
99

10-
SRC='img/reload_scaled.png'
11-
DST='../../src/qt/res/movies/update_spinner.mng'
12-
TMPDIR='/tmp'
13-
TMPNAME='tmp-%03i.png'
10+
SRC='img/reload.png'
11+
TMPDIR='../../src/qt/res/movies/'
12+
TMPNAME='spinner-%03i.png'
1413
NUMFRAMES=35
1514
FRAMERATE=10.0
1615
CONVERT='convert'
@@ -36,8 +35,4 @@ def frame_to_filename(frame):
3635
im_new.save(outfile, 'png')
3736
frame_files.append(outfile)
3837

39-
p = Popen([CONVERT, "-delay", str(FRAMERATE), "-dispose", "2"] + frame_files + [DST])
40-
p.communicate()
41-
42-
4338

src/qt/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ RES_IMAGES = \
303303
res/images/splash.png \
304304
res/images/splash_testnet.png
305305

306-
RES_MOVIES = res/movies/update_spinner.mng
306+
RES_MOVIES = $(wildcard res/movies/spinner-*.png)
307307

308308
BITCOIN_RC = res/bitcoin-qt-res.rc
309309

src/qt/bitcoin.qrc

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,41 @@
4747
<file alias="splash_testnet">res/images/splash_testnet.png</file>
4848
</qresource>
4949
<qresource prefix="/movies">
50-
<file alias="update_spinner">res/movies/update_spinner.mng</file>
50+
<file alias="spinner-000">res/movies/spinner-000.png</file>
51+
<file alias="spinner-001">res/movies/spinner-001.png</file>
52+
<file alias="spinner-002">res/movies/spinner-002.png</file>
53+
<file alias="spinner-003">res/movies/spinner-003.png</file>
54+
<file alias="spinner-004">res/movies/spinner-004.png</file>
55+
<file alias="spinner-005">res/movies/spinner-005.png</file>
56+
<file alias="spinner-006">res/movies/spinner-006.png</file>
57+
<file alias="spinner-007">res/movies/spinner-007.png</file>
58+
<file alias="spinner-008">res/movies/spinner-008.png</file>
59+
<file alias="spinner-009">res/movies/spinner-009.png</file>
60+
<file alias="spinner-010">res/movies/spinner-010.png</file>
61+
<file alias="spinner-011">res/movies/spinner-011.png</file>
62+
<file alias="spinner-012">res/movies/spinner-012.png</file>
63+
<file alias="spinner-013">res/movies/spinner-013.png</file>
64+
<file alias="spinner-014">res/movies/spinner-014.png</file>
65+
<file alias="spinner-015">res/movies/spinner-015.png</file>
66+
<file alias="spinner-016">res/movies/spinner-016.png</file>
67+
<file alias="spinner-017">res/movies/spinner-017.png</file>
68+
<file alias="spinner-018">res/movies/spinner-018.png</file>
69+
<file alias="spinner-019">res/movies/spinner-019.png</file>
70+
<file alias="spinner-020">res/movies/spinner-020.png</file>
71+
<file alias="spinner-021">res/movies/spinner-021.png</file>
72+
<file alias="spinner-022">res/movies/spinner-022.png</file>
73+
<file alias="spinner-023">res/movies/spinner-023.png</file>
74+
<file alias="spinner-024">res/movies/spinner-024.png</file>
75+
<file alias="spinner-025">res/movies/spinner-025.png</file>
76+
<file alias="spinner-026">res/movies/spinner-026.png</file>
77+
<file alias="spinner-027">res/movies/spinner-027.png</file>
78+
<file alias="spinner-028">res/movies/spinner-028.png</file>
79+
<file alias="spinner-029">res/movies/spinner-029.png</file>
80+
<file alias="spinner-030">res/movies/spinner-030.png</file>
81+
<file alias="spinner-031">res/movies/spinner-031.png</file>
82+
<file alias="spinner-032">res/movies/spinner-032.png</file>
83+
<file alias="spinner-033">res/movies/spinner-033.png</file>
84+
<file alias="spinner-034">res/movies/spinner-034.png</file>
5185
</qresource>
5286
<qresource prefix="/translations">
5387
<file alias="ach">locale/bitcoin_ach.qm</file>

src/qt/bitcoingui.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
#include <QMenuBar>
4040
#include <QMessageBox>
4141
#include <QMimeData>
42-
#include <QMovie>
4342
#include <QProgressBar>
4443
#include <QSettings>
4544
#include <QStackedWidget>
@@ -68,7 +67,8 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
6867
trayIcon(0),
6968
notificator(0),
7069
rpcConsole(0),
71-
prevBlocks(0)
70+
prevBlocks(0),
71+
spinnerFrame(0)
7272
{
7373
GUIUtil::restoreWindowGeometry("nWindow", QSize(850, 550), this);
7474

@@ -187,8 +187,6 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
187187
statusBar()->addWidget(progressBar);
188188
statusBar()->addPermanentWidget(frameBlocks);
189189

190-
syncIconMovie = new QMovie(":/movies/update_spinner", "mng", this);
191-
192190
connect(openRPCConsoleAction, SIGNAL(triggered()), rpcConsole, SLOT(show()));
193191

194192
// prevents an oben debug window from becoming stuck/unusable on client shutdown
@@ -684,9 +682,13 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
684682
progressBar->setVisible(true);
685683

686684
tooltip = tr("Catching up...") + QString("<br>") + tooltip;
687-
labelBlocksIcon->setMovie(syncIconMovie);
688685
if(count != prevBlocks)
689-
syncIconMovie->jumpToNextFrame();
686+
{
687+
labelBlocksIcon->setPixmap(QIcon(QString(
688+
":/movies/spinner-%1").arg(spinnerFrame, 3, 10, QChar('0')))
689+
.pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE));
690+
spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES;
691+
}
690692
prevBlocks = count;
691693

692694
#ifdef ENABLE_WALLET

src/qt/bitcoingui.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ class BitcoinGUI : public QMainWindow
9898
Notificator *notificator;
9999
RPCConsole *rpcConsole;
100100

101-
QMovie *syncIconMovie;
102101
/** Keep track of previous number of blocks, to detect progress */
103102
int prevBlocks;
103+
int spinnerFrame;
104104

105105
/** Create the main UI actions. */
106106
void createActions(bool fIsTestnet);

src/qt/guiconstants.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,7 @@ static const int MAX_PAYMENT_REQUEST_SIZE = 50000; // bytes
3838
/* QRCodeDialog -- size of exported QR Code image */
3939
#define EXPORT_IMAGE_SIZE 256
4040

41+
/* Number of frames in spinner animation */
42+
#define SPINNER_FRAMES 35
43+
4144
#endif // GUICONSTANTS_H

src/qt/res/movies/spinner-000.png

861 Bytes

0 commit comments

Comments
 (0)