Mercurial > hg > bitcoin
changeset 1293:ca609330a28c draft
move qt-specific scripts to qt-specific directory in scripts/
author | Wladimir J. van der Laan <laanwj@gmail.com> |
---|---|
date | Sun, 18 Sep 2011 12:04:03 +0200 (2011-09-18) |
parents | 024a12d5558d |
children | 8c70236c9f87 |
files | scripts/extract_strings_qt.py scripts/img/reload.xcf scripts/make_spinner.py scripts/make_windows_icon.py scripts/qt/extract_strings_qt.py scripts/qt/img/reload.xcf scripts/qt/make_spinner.py scripts/qt/make_windows_icon.py |
diffstat | 8 files changed, 115 insertions(+), 115 deletions(-) [+] |
line wrap: on
line diff
deleted file mode 100755 --- a/scripts/extract_strings_qt.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/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 - -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 = ['src/base58.h', 'src/bignum.h', 'src/db.cpp', 'src/db.h', 'src/headers.h', 'src/init.cpp', 'src/init.h', 'src/irc.cpp', 'src/irc.h', 'src/key.h', 'src/main.cpp', 'src/main.h', 'src/net.cpp', 'src/net.h', 'src/noui.h', 'src/script.cpp', 'src/script.h', 'src/serialize.h', 'src/strlcpy.h', 'src/uint256.h', 'src/util.cpp', 'src/util.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()
deleted file mode 100644 index dc8be62831673c2e99f05f5e5b42581e6e4e1db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001
deleted file mode 100755 --- a/scripts/make_spinner.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/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() - - -
deleted file mode 100755 --- a/scripts/make_windows_icon.py +++ /dev/null @@ -1,9 +0,0 @@ -#!/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} -
new file mode 100755 --- /dev/null +++ b/scripts/qt/extract_strings_qt.py @@ -0,0 +1,63 @@ +#!/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 + +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 = ['src/base58.h', 'src/bignum.h', 'src/db.cpp', 'src/db.h', 'src/headers.h', 'src/init.cpp', 'src/init.h', 'src/irc.cpp', 'src/irc.h', 'src/key.h', 'src/main.cpp', 'src/main.h', 'src/net.cpp', 'src/net.h', 'src/noui.h', 'src/script.cpp', 'src/script.h', 'src/serialize.h', 'src/strlcpy.h', 'src/uint256.h', 'src/util.cpp', 'src/util.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()
new file mode 100644 index 0000000000000000000000000000000000000000..dc8be62831673c2e99f05f5e5b42581e6e4e1db1 GIT binary patch literal 25292 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 DhY;cx
new file mode 100755 --- /dev/null +++ b/scripts/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() + + +
new file mode 100755 --- /dev/null +++ b/scripts/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} +