aboutsummaryrefslogtreecommitdiff
path: root/share/qt
diff options
context:
space:
mode:
Diffstat (limited to 'share/qt')
-rwxr-xr-xshare/qt/extract_strings_qt.py64
-rw-r--r--share/qt/img/reload.xcfbin0 -> 25292 bytes
-rwxr-xr-xshare/qt/make_spinner.py43
-rwxr-xr-xshare/qt/make_windows_icon.py9
4 files changed, 116 insertions, 0 deletions
diff --git a/share/qt/extract_strings_qt.py b/share/qt/extract_strings_qt.py
new file mode 100755
index 0000000000..03d3a1ba37
--- /dev/null
+++ b/share/qt/extract_strings_qt.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+'''
+Extract _("...") strings for translation and convert to Qt4 stringdefs so that
+they can be picked up by Qt linguist.
+'''
+from subprocess import Popen, PIPE
+import glob
+
+OUT_CPP="src/qt/bitcoinstrings.cpp"
+EMPTY=['""']
+
+def parse_po(text):
+ """
+ Parse 'po' format produced by xgettext.
+ Return a list of (msgid,msgstr) tuples.
+ """
+ messages = []
+ msgid = []
+ msgstr = []
+ in_msgid = False
+ in_msgstr = False
+
+ for line in text.split('\n'):
+ line = line.rstrip('\r')
+ if line.startswith('msgid '):
+ if in_msgstr:
+ messages.append((msgid, msgstr))
+ in_msgstr = False
+ # message start
+ in_msgid = True
+
+ msgid = [line[6:]]
+ elif line.startswith('msgstr '):
+ in_msgid = False
+ in_msgstr = True
+ msgstr = [line[7:]]
+ elif line.startswith('"'):
+ if in_msgid:
+ msgid.append(line)
+ if in_msgstr:
+ msgstr.append(line)
+
+ if in_msgstr:
+ messages.append((msgid, msgstr))
+
+ return messages
+
+files = glob.glob('src/*.cpp') + glob.glob('src/*.h')
+
+# xgettext -n --keyword=_ $FILES
+child = Popen(['xgettext','--output=-','-n','--keyword=_'] + files, stdout=PIPE)
+(out, err) = child.communicate()
+
+messages = parse_po(out)
+
+f = open(OUT_CPP, 'w')
+f.write('#include <QtGlobal>\n')
+f.write('// Automatically generated by extract_strings.py\n')
+f.write('static const char *bitcoin_strings[] = {')
+for (msgid, msgstr) in messages:
+ if msgid != EMPTY:
+ f.write('QT_TRANSLATE_NOOP("bitcoin-core", %s),\n' % ('\n'.join(msgid)))
+f.write('};')
+f.close()
diff --git a/share/qt/img/reload.xcf b/share/qt/img/reload.xcf
new file mode 100644
index 0000000000..dc8be62831
--- /dev/null
+++ b/share/qt/img/reload.xcf
Binary files differ
diff --git a/share/qt/make_spinner.py b/share/qt/make_spinner.py
new file mode 100755
index 0000000000..136aff3cb7
--- /dev/null
+++ b/share/qt/make_spinner.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+# W.J. van der Laan, 2011
+# Make spinning .mng animation from a .png
+# Requires imagemagick 6.7+
+from __future__ import division
+from os import path
+from PIL import Image
+from subprocess import Popen
+
+SRC='img/reload_scaled.png'
+DST='../../src/qt/res/movies/update_spinner.mng'
+TMPDIR='/tmp'
+TMPNAME='tmp-%03i.png'
+NUMFRAMES=35
+FRAMERATE=10.0
+CONVERT='convert'
+CLOCKWISE=True
+DSIZE=(16,16)
+
+im_src = Image.open(SRC)
+
+if CLOCKWISE:
+ im_src = im_src.transpose(Image.FLIP_LEFT_RIGHT)
+
+def frame_to_filename(frame):
+ return path.join(TMPDIR, TMPNAME % frame)
+
+frame_files = []
+for frame in xrange(NUMFRAMES):
+ rotation = (frame + 0.5) / NUMFRAMES * 360.0
+ if CLOCKWISE:
+ rotation = -rotation
+ im_new = im_src.rotate(rotation, Image.BICUBIC)
+ im_new.thumbnail(DSIZE, Image.ANTIALIAS)
+ outfile = frame_to_filename(frame)
+ im_new.save(outfile, 'png')
+ frame_files.append(outfile)
+
+p = Popen([CONVERT, "-delay", str(FRAMERATE), "-dispose", "2"] + frame_files + [DST])
+p.communicate()
+
+
+
diff --git a/share/qt/make_windows_icon.py b/share/qt/make_windows_icon.py
new file mode 100755
index 0000000000..bf607b1c62
--- /dev/null
+++ b/share/qt/make_windows_icon.py
@@ -0,0 +1,9 @@
+#!/bin/bash
+# create multiresolution windows icon
+ICON_SRC=../../src/qt/res/icons/bitcoin.png
+ICON_DST=../../src/qt/res/icons/bitcoin.ico
+convert ${ICON_SRC} -resize 16x16 bitcoin-16.png
+convert ${ICON_SRC} -resize 32x32 bitcoin-32.png
+convert ${ICON_SRC} -resize 48x48 bitcoin-48.png
+convert bitcoin-16.png bitcoin-32.png bitcoin-48.png ${ICON_DST}
+