1 /* 2 * Copyright 2011 Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * John Scipione, jscipione@gmail.com 7 */ 8 #ifndef MODIFIER_KEYS_WINDOW_H 9 #define MODIFIER_KEYS_WINDOW_H 10 11 12 #include <Bitmap.h> 13 #include <Button.h> 14 #include <CheckBox.h> 15 #include <InterfaceDefs.h> 16 #include <MenuField.h> 17 #include <PopUpMenu.h> 18 #include <StringView.h> 19 #include <Window.h> 20 21 22 class ConflictView; 23 24 class ModifierKeysWindow : public BWindow { 25 public: 26 ModifierKeysWindow(); 27 virtual ~ModifierKeysWindow(); 28 29 virtual void MessageReceived(BMessage* message); 30 31 protected: 32 BMenuField* _CreateShiftMenuField(); 33 BMenuField* _CreateControlMenuField(); 34 BMenuField* _CreateOptionMenuField(); 35 BMenuField* _CreateCommandMenuField(); 36 37 void _MarkMenuItems(); 38 const char* _KeyToString(int32 key); 39 uint32 _KeyToKeyCode(int32 key, 40 bool right = false); 41 int32 _LastKey(); 42 void _ValidateDuplicateKeys(); 43 uint32 _DuplicateKeys(); 44 45 private: 46 BStringView* fShiftStringView; 47 BStringView* fControlStringView; 48 BStringView* fOptionStringView; 49 BStringView* fCommandStringView; 50 51 BPopUpMenu* fShiftMenu; 52 BPopUpMenu* fControlMenu; 53 BPopUpMenu* fOptionMenu; 54 BPopUpMenu* fCommandMenu; 55 56 ConflictView* fShiftConflictView; 57 ConflictView* fControlConflictView; 58 ConflictView* fOptionConflictView; 59 ConflictView* fCommandConflictView; 60 61 BButton* fRevertButton; 62 BButton* fCancelButton; 63 BButton* fOkButton; 64 65 key_map* fCurrentMap; 66 key_map* fSavedMap; 67 68 char* fCurrentBuffer; 69 char* fSavedBuffer; 70 }; 71 72 73 class ConflictView : public BView { 74 public: 75 ConflictView(const char* name); 76 ~ConflictView(); 77 BBitmap* Icon(); 78 void ShowIcon(bool show); 79 80 protected: 81 virtual void Draw(BRect updateRect); 82 void _FillSavedIcon(); 83 84 private: 85 BBitmap* fIcon; 86 BBitmap* fSavedIcon; 87 }; 88 89 90 #endif // MODIFIER_KEYS_WINDOW_H 91