#!/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//" \
	"\n// This library is free software; you can redistribute it and/or" \
	"\n// modify it under the terms of the GNU Library General Public" \
	"\n// License as published by the Free Software Foundation; either" \
	"\n// version 2 of the License, or (at your option) any later version." \
	"\n//" \
	"\n// This library is distributed in the hope that it will be useful," \
	"\n// but WITHOUT ANY WARRANTY; without even the implied warranty of" \
	"\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU" \
	"\n// Library General Public License for more details." \
	"\n//" \
	"\n// You should have received a copy of the GNU Library General Public License" \
	"\n// along with this library; see the file COPYING.LIB.  If not, write to" \
	"\n// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor," \
		"\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//" \
	"\n// This library is free software; you can redistribute it and/or" \
	"\n// modify it under the terms of the GNU Library General Public" \
	"\n// License as published by the Free Software Foundation; either" \
	"\n// version 2 of the License, or (at your option) any later version." \
	"\n//" \
	"\n// This library is distributed in the hope that it will be useful," \
	"\n// but WITHOUT ANY WARRANTY; without even the implied warranty of" \
	"\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU" \
	"\n// Library General Public License for more details." \
	"\n//" \
	"\n// You should have received a copy of the GNU Library General Public License" \
	"\n// along with this library; see the file COPYING.LIB.  If not, write to" \
	"\n// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor," \
		"\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
