summaryrefslogtreecommitdiffstats
path: root/tdecore/generate_keys.sh
blob: d0fea1cdd1f1c0f331b2c2d123eebc1ed2cfc4ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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