xref: /haiku/src/preferences/keymap/ModifierKeysWindow.h (revision 4fc18643b9646e41a5ec98e1b046c6c1a8303399)
1f5ac2da0SJohn Scipione /*
2d51ee1e8SJorge Acereda  * Copyright 2011-2023 Haiku, Inc. All rights reserved.
3f5ac2da0SJohn Scipione  * Distributed under the terms of the MIT License.
4f5ac2da0SJohn Scipione  *
5f5ac2da0SJohn Scipione  * Authors:
6f5ac2da0SJohn Scipione  *		John Scipione, jscipione@gmail.com
7d51ee1e8SJorge Acereda  *		Jorge Acereda, jacereda@gmail.com
8f5ac2da0SJohn Scipione  */
9f5ac2da0SJohn Scipione #ifndef MODIFIER_KEYS_WINDOW_H
10f5ac2da0SJohn Scipione #define MODIFIER_KEYS_WINDOW_H
11f5ac2da0SJohn Scipione 
12f5ac2da0SJohn Scipione 
13f5ac2da0SJohn Scipione #include <Window.h>
14f5ac2da0SJohn Scipione 
15f5ac2da0SJohn Scipione 
16*4fc18643SJohn Scipione class BButton;
172388b04aSJohn Scipione class BMenuField;
182388b04aSJohn Scipione class BPopUpMenu;
19*4fc18643SJohn Scipione class StatusMenuField;
202388b04aSJohn Scipione 
213cee15aaSJohn Scipione 
22f5ac2da0SJohn Scipione class ModifierKeysWindow : public BWindow {
23f5ac2da0SJohn Scipione public:
24f5ac2da0SJohn Scipione 									ModifierKeysWindow();
25f5ac2da0SJohn Scipione 	virtual							~ModifierKeysWindow();
26f5ac2da0SJohn Scipione 
27f5ac2da0SJohn Scipione 	virtual	void					MessageReceived(BMessage* message);
28f5ac2da0SJohn Scipione 
29460168d5SJohn Scipione private:
300b3890feSJohn Scipione 			void					_CreateMenuField(BPopUpMenu** _menu, BMenuField** _field,
310b3890feSJohn Scipione 										uint32 key, const char* label);
32f5ac2da0SJohn Scipione 			void					_MarkMenuItems();
33*4fc18643SJohn Scipione 			bool					_MarkMenuItem(const char*, BPopUpMenu*, uint32 l, uint32 r);
34bce949f5SJohn Scipione 			const char*				_KeyToString(int32 key);
35*4fc18643SJohn Scipione 			int32					_KeyToKeyCode(int32 key, bool right = false);
363cee15aaSJohn Scipione 			int32					_LastKey();
373cee15aaSJohn Scipione 			void					_ValidateDuplicateKeys();
38*4fc18643SJohn Scipione 			void					_ValidateDuplicateKey(StatusMenuField*, uint32);
393cee15aaSJohn Scipione 			uint32					_DuplicateKeys();
400b3890feSJohn Scipione 			void					_UpdateStatus();
41f5ac2da0SJohn Scipione 
42d51ee1e8SJorge Acereda 			BPopUpMenu*				fCapsMenu;
433cee15aaSJohn Scipione 			BPopUpMenu*				fShiftMenu;
44f5ac2da0SJohn Scipione 			BPopUpMenu*				fControlMenu;
45f5ac2da0SJohn Scipione 			BPopUpMenu*				fOptionMenu;
46f5ac2da0SJohn Scipione 			BPopUpMenu*				fCommandMenu;
47f5ac2da0SJohn Scipione 
48*4fc18643SJohn Scipione 			StatusMenuField*		fCapsField;
49*4fc18643SJohn Scipione 			StatusMenuField*		fShiftField;
50*4fc18643SJohn Scipione 			StatusMenuField*		fControlField;
51*4fc18643SJohn Scipione 			StatusMenuField*		fOptionField;
52*4fc18643SJohn Scipione 			StatusMenuField*		fCommandField;
531a6b60e6SJohn Scipione 
54f5ac2da0SJohn Scipione 			BButton*				fRevertButton;
55f5ac2da0SJohn Scipione 			BButton*				fCancelButton;
56f5ac2da0SJohn Scipione 			BButton*				fOkButton;
57f5ac2da0SJohn Scipione 
58f5ac2da0SJohn Scipione 			key_map*				fCurrentMap;
59f5ac2da0SJohn Scipione 			key_map*				fSavedMap;
60f5ac2da0SJohn Scipione 
61f5ac2da0SJohn Scipione 			char*					fCurrentBuffer;
62f5ac2da0SJohn Scipione 			char*					fSavedBuffer;
63f5ac2da0SJohn Scipione };
64f5ac2da0SJohn Scipione 
65bce949f5SJohn Scipione 
66f5ac2da0SJohn Scipione #endif	// MODIFIER_KEYS_WINDOW_H
67