diff options
Diffstat (limited to 'kdecore/generate_keys.sh')
-rwxr-xr-x | kdecore/generate_keys.sh | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/kdecore/generate_keys.sh b/kdecore/generate_keys.sh new file mode 100755 index 000000000..d0fea1cdd --- /dev/null +++ b/kdecore/generate_keys.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +## This script extracts the key names from the QT header +## +## Copyright (c) 1999 Nicolas HADACEK (hadacek@kde.org) +## Distributed under the GNU General Public License + +# remove files +rm -f kckey.h kckey.cpp kckey_a + +# extract key names and code from QT header +sed -n '/enum Key/!d + :1 + N + /}/!b1 + p' $1 \ +| sed -n '/=/p' \ +| sed -n 's/\s*Key_/{ "/ + s/,.*$/ },/ + s/ =/",/ + s/Key_/Qt::Key_/ + $s/.*/& }/ + p' \ +> kckey_a +list=`grep '{ "' kckey_a | sed -e 's#.*{ "\([^"]*\)".*#\1#'` +for i in $list; do + if grep -q "i18n(\"QAccel\", \"$i\");" ../common_texts.cpp; then + sed -e "s#^\(.*\"$i\",.*\$\)#\1 // translated#" kckey_a > kckey_a.new && mv kckey_a.new kckey_a + fi +done + +# write header file +begin_line="// This file has been automatically generated by \"generate_keys.sh\"" +echo -e $begin_line \ + "\n// Distributed under the GNU Library General Public License" \ + "\n#ifndef KCKEY_H" \ + "\n#define KCKEY_H" \ + "\n\ntypedef struct {" \ + "\n\tconst char *name;" \ + "\n\tint code;" \ + "\n} KKeys;" \ + "\n\n#define MAX_KEY_LENGTH 15 // should be calculated (gawk ?)" \ + "\n#define MAX_KEY_MODIFIER_LENGTH 21 // \"SHIFT + CRTL + ALT + \" : " \ + "\n#define MAX_FCTN_LENGTH 50 // arbitrary limit" \ + "\n#define NB_KEYS " `cat kckey_a | wc -l` \ + "\nextern const KKeys kde_KKEYS[NB_KEYS];" \ + "\n\n#endif" \ +> kckey.h + +# write source file +echo -e $begin_line \ + "\n// Distributed under the GNU Library General Public License" \ + "\n\n#include <qnamespace.h>" \ + "\n#include \"kckey.h\"" \ + "\n\nconst KKeys kde_KKEYS[NB_KEYS] = {" \ +> kckey.cpp + +cat kckey_a >> kckey.cpp + +echo -e "};" >> kckey.cpp + +# cleaning +rm -f kckey_a |