]> andersk Git - moira.git/blame - clients/mmoira/menus.awk
only list options once in usage message to be less confusing
[moira.git] / clients / mmoira / menus.awk
CommitLineData
d3666151 1# $Header$
2
3BEGIN { numfields = 0; nummenus = 0;
4 printf("/* This file is machine generated, do not edit. */");
5 printf("\n#include <Xm/Text.h>\n");
b2d21e59 6 printf("#include \"mmoira.h\"\n\n");
d3666151 7 }
8
9/^;/ { next }
10NF == 0 { next }
11
12$1 == "=" { if (menuname != "") {
13 menuno = menumap[menuname] = nummenus++;
14 printf("static MenuItem *menu%dsub[] = {\n", menuno);
15 for (i = 0; i < count; i++)
16 printf("\t&menu%d,\n", save[i]);
17 printf("\t(MenuItem *) NULL\n};\n");
1a3bc9ff 18 printf("static MenuItem menu%d = { \"%s\", menu%dsub, %s };\n", \
19 menuno, menuname, menuno, menuaccel);
d3666151 20 }
21
22 menuname = $2;
1a3bc9ff 23 for (i = 3; (i <= NF) && (substr($i, 0, 1) != "\""); i++)
d3666151 24 menuname = sprintf("%s %s", menuname, $i);
1a3bc9ff 25 if (substr($i, 0, 1) == "\"")
26 menuaccel = $i;
27 else
28 menuaccel = "NULL";
d3666151 29 count = 0;
30 next
31 }
32
33$NF == "}" { itemname = $1;
34 for (i = 2; i <= NF && $i != "{"; i++)
35 itemname = sprintf("%s %s", itemname, $i);
36 menuno = nummenus++;
1a3bc9ff 37 if (i + 5 < NF)
38 printf("static MenuItem menu%d = { \"%s\", NULL, %s, %s \"%s\", \"%s\", %d };\n", \
39 menuno, itemname, $(i + 5), \
40 $(i + 1), $(i + 2), $(i + 3), $(i + 4));
41 else
42 printf("static MenuItem menu%d = { \"%s\", NULL, NULL, %s \"%s\", \"%s\", %d };\n", \
b2d21e59 43 menuno, itemname, \
44 $(i + 1), $(i + 2), $(i + 3), $(i + 4));
d3666151 45 save[count++] = menuno;
46 next
47 }
48
49 { itemname = $1;
50 for (i = 2; i <= NF && $i != "{"; i++)
51 itemname = sprintf("%s %s", itemname, $i);
52 save[count++] = menumap[itemname];
53 next
54 }
55
56END { menuno = menumap[menuname] = nummenus++;
57 printf("static MenuItem *menu%dsub[] = {\n", menuno);
58 for (i = 0; i < count; i++)
59 printf("\t&menu%d,\n", save[i]);
60 printf("\t(MenuItem *) NULL\n};\n");
61 printf("MenuItem MenuRoot = { \"%s\", menu%dsub };\n", \
62 menuname, menuno);
967c71aa 63 printf("int NumMenus = %d;\n", nummenus);
d3666151 64 }
This page took 0.111401 seconds and 5 git commands to generate.