~baltix/+junk/irrlicht-test

« back to all changes in this revision

Viewing changes to tools/GUIEditor/CGUIPanel.h

  • Committer: Mantas Kriaučiūnas
  • Date: 2011-07-18 13:06:25 UTC
  • Revision ID: mantas@akl.lt-20110718130625-c5pvifp61e7kj1ol
Included whole irrlicht SVN libraries to work around launchpad recipe issue with quilt, see https://answers.launchpad.net/launchpad/+question/165193

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2006-2011 Asger Feldthaus
 
2
// This file is part of the "Irrlicht Engine".
 
3
// For conditions of distribution and use, see copyright notice in irrlicht.h
 
4
 
 
5
#ifndef _C_GUI_PANEL_H_
 
6
#define _C_GUI_PANEL_H_
 
7
 
 
8
#include "IGUIElement.h"
 
9
#include "EGUIEditTypes.h"
 
10
 
 
11
namespace irr
 
12
{
 
13
namespace gui
 
14
{
 
15
 
 
16
class IGUIScrollBar;
 
17
class IGUITab;
 
18
 
 
19
enum E_SCROLL_BAR_MODE
 
20
{
 
21
        //! The scrollbar will only show up when needed.
 
22
        ESBM_AUTOMATIC = 0,
 
23
 
 
24
        //! The scrollbar will never be visible.
 
25
        ESBM_ALWAYS_INVISIBLE,
 
26
 
 
27
        //! The scrollbar will always the visible.
 
28
        ESBM_ALWAYS_VISIBLE,
 
29
 
 
30
        //! just a count of how many are in this enum
 
31
        ESBM_COUNT
 
32
};
 
33
 
 
34
const c8* const GUIScrollBarModeNames[] =
 
35
{
 
36
        "automatic",
 
37
        "alwaysInvisible",
 
38
        "alwaysVisible",
 
39
        0
 
40
};
 
41
 
 
42
class CGUIPanel : public IGUIElement
 
43
{
 
44
public:
 
45
        CGUIPanel( IGUIEnvironment* environment, IGUIElement* parent, s32 id=-1,
 
46
                        const core::rect<s32>& rectangle = core::rect<s32>(0,0,100,100),
 
47
                        bool border=false,
 
48
                        E_SCROLL_BAR_MODE vMode=ESBM_AUTOMATIC,
 
49
                        E_SCROLL_BAR_MODE hMode=ESBM_ALWAYS_INVISIBLE );
 
50
 
 
51
        virtual ~CGUIPanel();
 
52
 
 
53
        //! draws the panel and its children
 
54
        virtual void draw();
 
55
 
 
56
        //! returns true if it has a border, false if not
 
57
        bool hasBorder() const;
 
58
 
 
59
        //! sets whether the element draws a border
 
60
        void setBorder(bool enabled);
 
61
 
 
62
        //! returns a pointer to the vertical scrollbar
 
63
        IGUIScrollBar* getVScrollBar() const;
 
64
 
 
65
        //! returns a pointer to the horizontal scrollbar
 
66
        IGUIScrollBar* getHScrollBar() const;
 
67
 
 
68
        //! returns the vertical scrollbar visibility rule
 
69
        E_SCROLL_BAR_MODE getVScrollBarMode() const;
 
70
 
 
71
        //! sets the vertical scrollbar visibility rule
 
72
        void setVScrollBarMode(E_SCROLL_BAR_MODE mode);
 
73
 
 
74
        //! returns the horizontal scrollbar visibility rule
 
75
        E_SCROLL_BAR_MODE getHScrollBarMode() const;
 
76
 
 
77
        //! sets the horizontal scrollbar visibility rule
 
78
        void setHScrollBarMode(E_SCROLL_BAR_MODE mode);
 
79
 
 
80
        //! returns the visible area inside the panel, excluding scrollbar and border
 
81
        core::rect<s32> getClientArea() const;
 
82
 
 
83
        virtual bool OnEvent(const SEvent &event);
 
84
 
 
85
        //! adds a child to the panel
 
86
        virtual void addChild(IGUIElement* child);
 
87
 
 
88
        //! removes a child from the panel
 
89
        virtual void removeChild(IGUIElement* child);
 
90
 
 
91
        //! updates the absolute position
 
92
        virtual void updateAbsolutePosition();
 
93
 
 
94
        //! returns children of the inner pane
 
95
        virtual const core::list<IGUIElement*>& getChildren();
 
96
 
 
97
        //! Returns the type name of the gui element.
 
98
        virtual const c8* getTypeName() const
 
99
        {
 
100
                return GUIEditElementTypeNames[EGUIEDIT_GUIPANEL];
 
101
        }
 
102
 
 
103
        virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0);
 
104
        virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0);
 
105
 
 
106
protected:
 
107
        void moveInnerPane();
 
108
        void resizeInnerPane();
 
109
        void calculateClientArea();
 
110
 
 
111
private:
 
112
 
 
113
        IGUIScrollBar*  VScrollBar;
 
114
        IGUIScrollBar*  HScrollBar;
 
115
        IGUITab*        ClipPane;
 
116
        IGUITab*        InnerPane;
 
117
 
 
118
        E_SCROLL_BAR_MODE VScrollBarMode;
 
119
        E_SCROLL_BAR_MODE HScrollBarMode;
 
120
 
 
121
        bool NeedsUpdate;
 
122
        bool Border;
 
123
};
 
124
 
 
125
} // namespace gui
 
126
} // namespace irr
 
127
 
 
128
#endif