xref: /haiku/src/tests/kits/interface/MenuTriggerTest.cpp (revision 1e60bdeab63fa7a57bc9a55b032052e95a18bd2c)
1 /*
2  * Copyright 2007, Haiku Inc.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  */
8 
9 
10 #include <Application.h>
11 #include <Menu.h>
12 #include <MenuBar.h>
13 #include <MenuItem.h>
14 #include <Window.h>
15 
16 #include <stdio.h>
17 
18 
19 class Window : public BWindow {
20 	public:
21 		Window();
22 		virtual ~Window();
23 
24 		virtual bool QuitRequested();
25 };
26 
27 
28 Window::Window()
29 	: BWindow(BRect(100, 100, 400, 400), "Menu Trigger Test",
30 			B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS)
31 {
32 	BMenuBar* bar = new BMenuBar(BRect(0, 0, 10, 10), "menuBar");
33 	AddChild(bar);
34 
35 	BMenu* menu = new BMenu("File");
36 	menu->AddItem(new BMenuItem("Bart", NULL));
37 	menu->AddItem(new BMenuItem("bart", NULL));
38 	menu->AddItem(new BMenuItem("bart", NULL));
39 	menu->AddItem(new BMenuItem("Bart", NULL));
40 	menu->AddItem(new BMenuItem("BART", NULL));
41 	menu->AddItem(new BMenuItem("bärt", NULL));
42 	menu->AddItem(new BMenuItem("bärst", NULL));
43 	menu->AddSeparatorItem();
44 	menu->AddItem(new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED)));
45 	bar->AddItem(menu);
46 
47 	menu = new BMenu("Edit");
48 	menu->AddItem(new BMenuItem("1 a", NULL));
49 	menu->AddItem(new BMenuItem("2 a", NULL));
50 	menu->AddItem(new BMenuItem("3 a", NULL));
51 	menu->AddItem(new BMenuItem("3 a", NULL));
52 	menu->AddItem(new BMenuItem("3 aöa", NULL));
53 	bar->AddItem(menu);
54 
55 	menu = new BMenu("Extra");
56 	BMenuItem* item = new BMenuItem("\xe3\x81\x82 haiku", NULL);
57 	item->SetTrigger('h');
58 	menu->AddItem(item);
59 	bar->AddItem(menu);
60 }
61 
62 Window::~Window()
63 {
64 }
65 
66 
67 bool
68 Window::QuitRequested()
69 {
70 	be_app->PostMessage(B_QUIT_REQUESTED);
71 	return true;
72 }
73 
74 
75 //	#pragma mark -
76 
77 
78 class Application : public BApplication {
79 	public:
80 		Application();
81 
82 		virtual void ReadyToRun(void);
83 };
84 
85 
86 Application::Application()
87 	: BApplication("application/x-vnd.haiku-view_state")
88 {
89 }
90 
91 
92 void
93 Application::ReadyToRun(void)
94 {
95 	Window *window = new Window();
96 	window->Show();
97 }
98 
99 
100 //	#pragma mark -
101 
102 
103 int
104 main(int argc, char **argv)
105 {
106 	Application app;// app;
107 
108 	app.Run();
109 	return 0;
110 }
111