]> andersk Git - moira.git/blob - clients/mmoira/menus.awk
618b56be64ad94e8e7cdf362df5bcf1f32b2e727
[moira.git] / clients / mmoira / menus.awk
1 # $Header$
2
3 BEGIN           { numfields = 0; nummenus = 0;
4                   printf("/* This file is machine generated, do not edit. */");
5                   printf("\n#include <Xm/Text.h>\n");
6                   printf("#include \"mmoira.h\"\n\n");
7                 }
8
9 /^;/            { next }
10 NF == 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");
18                         printf("static MenuItem menu%d = { \"%s\", menu%dsub, %s };\n", \
19                         menuno, menuname, menuno, menuaccel);
20                   }
21
22                   menuname = $2;
23                   for (i = 3; (i <= NF) && (substr($i, 0, 1) != "\""); i++)
24                         menuname = sprintf("%s %s", menuname, $i);
25                   if (substr($i, 0, 1) == "\"")
26                         menuaccel = $i;
27                   else
28                         menuaccel = "NULL";
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++;
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", \
43                         menuno, itemname, \
44                         $(i + 1), $(i + 2), $(i + 3), $(i + 4));
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
56 END             { 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);
63                 }
This page took 0.033872 seconds and 3 git commands to generate.