OpenMW
apps/openmw/mwgui/quickkeysmenu.hpp
Go to the documentation of this file.
00001 #ifndef MWGUI_QUICKKEYS_H
00002 #define MWGUI_QUICKKEYS_H
00003 
00004 #include "../mwworld/ptr.hpp"
00005 
00006 #include "windowbase.hpp"
00007 
00008 namespace MWGui
00009 {
00010 
00011     class QuickKeysMenuAssign;
00012     class ItemSelectionDialog;
00013     class MagicSelectionDialog;
00014 
00015     class QuickKeysMenu : public WindowBase
00016     {
00017     public:
00018         QuickKeysMenu();
00019         ~QuickKeysMenu();
00020 
00021 
00022         void onItemButtonClicked(MyGUI::Widget* sender);
00023         void onMagicButtonClicked(MyGUI::Widget* sender);
00024         void onUnassignButtonClicked(MyGUI::Widget* sender);
00025         void onCancelButtonClicked(MyGUI::Widget* sender);
00026 
00027         void onAssignItem (MWWorld::Ptr item);
00028         void onAssignItemCancel ();
00029         void onAssignMagicItem (MWWorld::Ptr item);
00030         void onAssignMagic (const std::string& spellId);
00031         void onAssignMagicCancel ();
00032 
00033         void activateQuickKey(int index);
00034 
00035         enum QuickKeyType
00036         {
00037             Type_Item,
00038             Type_Magic,
00039             Type_MagicItem,
00040             Type_Unassigned
00041         };
00042 
00043 
00044     private:
00045         MyGUI::EditBox* mInstructionLabel;
00046         MyGUI::Button* mOkButton;
00047 
00048         std::vector<MyGUI::Button*> mQuickKeyButtons;
00049 
00050         QuickKeysMenuAssign* mAssignDialog;
00051         ItemSelectionDialog* mItemSelectionDialog;
00052         MagicSelectionDialog* mMagicSelectionDialog;
00053 
00054         int mSelectedIndex;
00055 
00056 
00057         void onQuickKeyButtonClicked(MyGUI::Widget* sender);
00058         void onOkButtonClicked(MyGUI::Widget* sender);
00059 
00060         void unassign(MyGUI::Widget* key, int index);
00061     };
00062 
00063     class QuickKeysMenuAssign : public WindowModal
00064     {
00065     public:
00066         QuickKeysMenuAssign(QuickKeysMenu* parent);
00067 
00068     private:
00069         MyGUI::TextBox* mLabel;
00070         MyGUI::Button* mItemButton;
00071         MyGUI::Button* mMagicButton;
00072         MyGUI::Button* mUnassignButton;
00073         MyGUI::Button* mCancelButton;
00074 
00075         QuickKeysMenu* mParent;
00076     };
00077 
00078     class MagicSelectionDialog : public WindowModal
00079     {
00080     public:
00081         MagicSelectionDialog(QuickKeysMenu* parent);
00082 
00083         virtual void open();
00084 
00085     private:
00086         MyGUI::Button* mCancelButton;
00087         MyGUI::ScrollView* mMagicList;
00088 
00089         int mWidth;
00090         int mHeight;
00091 
00092         QuickKeysMenu* mParent;
00093 
00094         void onCancelButtonClicked (MyGUI::Widget* sender);
00095         void onMouseWheel(MyGUI::Widget* _sender, int _rel);
00096         void onEnchantedItemSelected(MyGUI::Widget* _sender);
00097         void onSpellSelected(MyGUI::Widget* _sender);
00098         int estimateHeight(int numSpells) const;
00099 
00100 
00101         void addGroup(const std::string& label, const std::string& label2);
00102     };
00103 }
00104 
00105 
00106 #endif