forwarding build fix when MUIA_Scrollgroup_AutoBars is defined (NicJA).
[AROS-Contrib.git] / scalos / main / Test / AddMoreMenus.c
blob47ae5561f84f8eed8f751505bed24cc99a545b7a
1 /*
2 * $Id$
4 * :ts=8
5 */
7 //#include "/workbench.h"
8 #include <workbench/startup.h>
10 #include <dos/dos.h>
12 #include <clib/dos_protos.h>
13 #include <clib/exec_protos.h>
14 #include <clib/wb_protos.h>
16 #include <pragmas/exec_sysbase_pragmas.h>
17 #include <pragmas/dos_pragmas.h>
18 #include <pragmas/wb_pragmas.h>
20 /****************************************************************************/
22 extern struct Library *SysBase;
23 extern struct Library *DOSBase;
25 /****************************************************************************/
27 struct Library * WorkbenchBase;
29 /****************************************************************************/
31 int
32 main(int argc,char ** argv)
34 struct MsgPort * mp = NULL;
35 struct AppMenu * menu = NULL;
36 struct AppMenuItem * item1 = NULL;
37 struct AppMenuItem * item2 = NULL;
38 struct AppMenuItem * item3 = NULL;
39 struct AppMenuItem * sub = NULL;
40 struct AppMessage * am;
41 ULONG key;
42 ULONG key2;
43 BOOL done;
45 WorkbenchBase = OpenLibrary("workbench.library",45);
46 if(WorkbenchBase == NULL)
48 Printf("Couldn't open workbench.library V45.\n");
49 goto out;
52 mp = CreateMsgPort();
53 if(mp == NULL)
55 Printf("Couldn't create MsgPort.\n");
56 goto out;
59 key = 0;
61 // AddAppMenuItemA()
62 menu = (struct AppMenu *)AddAppMenuItem(0,
63 (ULONG)"new top menu",
64 "New menu title",
65 mp,
66 WBAPPMENUA_GetTitleKey,&key,
67 TAG_DONE);
68 if(menu == NULL)
70 Printf("Couldn't create menu.\n");
71 goto out;
74 Printf("Key=%08lx\n", key);
76 if(key == 0)
78 Printf("Can't get a key for the menu\n");
79 goto out;
82 item1 = AddAppMenuItem(1,
83 (ULONG)"menu item 1",
84 "This is the first menu item",
85 mp,
86 WBAPPMENUA_UseKey,key,
87 TAG_DONE);
88 if(item1 == NULL)
90 Printf("Couldn't create first menu item.\n");
91 goto out;
94 item2 = AddAppMenuItem(2,
95 (ULONG)"menu item 2",
96 "This is the second menu item",
97 mp,
98 WBAPPMENUA_UseKey,key,
99 TAG_DONE);
100 if(item2 == NULL)
102 Printf("Couldn't create second menu item.\n");
103 goto out;
106 key2 = 0;
107 item3 = AddAppMenuItem(3,
108 (ULONG)"menu item 3",
109 "This is the third menu item, and it has a subitem",
111 WBAPPMENUA_UseKey,key,
112 WBAPPMENUA_GetKey,&key2,
113 TAG_DONE);
114 if(item2 == NULL)
116 Printf("Couldn't create third level menu item.\n");
117 goto out;
120 Printf("Key2=%08lx\n", key2);
122 if(key2 == 0)
124 Printf("Can't get a key for the submenu\n");
125 goto out;
128 sub = AddAppMenuItem(4,
129 (ULONG)"sub menu item",
130 "This is the sub menu item",
132 WBAPPMENUA_UseKey,key2,
133 TAG_DONE);
134 if(sub == NULL)
136 Printf("Couldn't create sub menu item.\n");
137 goto out;
140 done = FALSE;
143 WaitPort(mp);
145 while((am = (struct AppMessage *)GetMsg(mp)) != NULL)
147 if(am->am_UserData != (ULONG)NULL)
148 Printf("%s\n",am->am_UserData);
150 if(am->am_ID == 1)
151 done = TRUE;
154 while(NOT done);
156 Printf("removing the two; press ^C to continue... ");
157 Flush(Output());
158 Wait(SIGBREAKF_CTRL_C);
160 RemoveAppMenuItem(item1);
161 item1 = NULL;
163 RemoveAppMenuItem(item2);
164 item2 = NULL;
166 Printf("removing the submenu; press ^C to continue... ");
167 Flush(Output());
168 Wait(SIGBREAKF_CTRL_C);
170 RemoveAppMenuItem(item3);
171 item3 = NULL;
173 RemoveAppMenuItem(sub);
174 sub = NULL;
176 out:
178 if(item1 != NULL)
179 RemoveAppMenuItem(item1);
181 if(item2 != NULL)
182 RemoveAppMenuItem(item2);
184 if(item3 != NULL)
185 RemoveAppMenuItem(item3);
187 if(sub != NULL)
188 RemoveAppMenuItem(sub);
190 if(menu != NULL)
191 RemoveAppMenuItem((struct AppMenuItem *)menu);
193 if(mp != NULL)
195 while((am = (struct AppMessage *)GetMsg(mp)) != NULL)
196 ReplyMsg((struct Message *)am);
198 DeleteMsgPort(mp);
201 if(WorkbenchBase != NULL)
203 CloseLibrary(WorkbenchBase);
204 WorkbenchBase = NULL;
207 return(0);