1 #ifndef MWGUI_BOOKWINDOW_H
2 #define MWGUI_BOOKWINDOW_H
3 
4 #include "windowbase.hpp"
5 
6 #include "../mwworld/ptr.hpp"
7 
8 #include <components/widgets/imagebutton.hpp>
9 
10 namespace MWGui
11 {
12     class BookWindow : public BookWindowBase
13     {
14         public:
15             BookWindow();
16 
17             void setPtr(const MWWorld::Ptr& book) override;
18             void setInventoryAllowed(bool allowed);
19 
onResChange(int,int)20             void onResChange(int, int) override { center(); }
21 
22         protected:
23             void onNextPageButtonClicked (MyGUI::Widget* sender);
24             void onPrevPageButtonClicked (MyGUI::Widget* sender);
25             void onCloseButtonClicked (MyGUI::Widget* sender);
26             void onTakeButtonClicked (MyGUI::Widget* sender);
27             void onMouseWheel(MyGUI::Widget* _sender, int _rel);
28             void setTakeButtonShow(bool show);
29 
30             void onKeyButtonPressed(MyGUI::Widget* sender, MyGUI::KeyCode key, MyGUI::Char character);
31 
32             void nextPage();
33             void prevPage();
34 
35             void updatePages();
36             void clearPages();
37 
38         private:
39             typedef std::pair<int, int> Page;
40             typedef std::vector<Page> Pages;
41 
42             Gui::ImageButton* mCloseButton;
43             Gui::ImageButton* mTakeButton;
44             Gui::ImageButton* mNextPageButton;
45             Gui::ImageButton* mPrevPageButton;
46 
47             MyGUI::TextBox* mLeftPageNumber;
48             MyGUI::TextBox* mRightPageNumber;
49             MyGUI::Widget* mLeftPage;
50             MyGUI::Widget* mRightPage;
51 
52             unsigned int mCurrentPage; // 0 is first page
53             Pages mPages;
54 
55             MWWorld::Ptr mBook;
56 
57             bool mTakeButtonShow;
58             bool mTakeButtonAllowed;
59     };
60 
61 }
62 
63 #endif
64