1/*
2 * Copyright 2011-2023 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		John Scipione, jscipione@gmail.com
7 *		Jorge Acereda, jacereda@gmail.com
8 */
9#ifndef MODIFIER_KEYS_WINDOW_H
10#define MODIFIER_KEYS_WINDOW_H
11
12
13#include <Window.h>
14
15
16class BButton;
17class BMenuField;
18class BPopUpMenu;
19class StatusMenuField;
20
21
22class ModifierKeysWindow : public BWindow {
23public:
24									ModifierKeysWindow();
25	virtual							~ModifierKeysWindow();
26
27	virtual	void					MessageReceived(BMessage* message);
28
29private:
30			void					_CreateMenuField(BPopUpMenu** _menu, BMenuField** _field,
31										uint32 key, const char* label);
32			void					_MarkMenuItems();
33			bool					_MarkMenuItem(const char*, BPopUpMenu*, uint32 l, uint32 r);
34			const char*				_KeyToString(int32 key);
35			int32					_KeyToKeyCode(int32 key, bool right = false);
36			int32					_LastKey();
37			void					_ValidateDuplicateKeys();
38			void					_ValidateDuplicateKey(StatusMenuField*, uint32);
39			uint32					_DuplicateKeys();
40			void					_UpdateStatus();
41
42			BPopUpMenu*				fCapsMenu;
43			BPopUpMenu*				fShiftMenu;
44			BPopUpMenu*				fControlMenu;
45			BPopUpMenu*				fOptionMenu;
46			BPopUpMenu*				fCommandMenu;
47
48			StatusMenuField*		fCapsField;
49			StatusMenuField*		fShiftField;
50			StatusMenuField*		fControlField;
51			StatusMenuField*		fOptionField;
52			StatusMenuField*		fCommandField;
53
54			BButton*				fRevertButton;
55			BButton*				fCancelButton;
56			BButton*				fOkButton;
57
58			key_map*				fCurrentMap;
59			key_map*				fSavedMap;
60
61			char*					fCurrentBuffer;
62			char*					fSavedBuffer;
63};
64
65
66#endif	// MODIFIER_KEYS_WINDOW_H
67