Pioneer
GuiBox.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _GUIBOX_H
5 #define _GUIBOX_H
6 /*
7  * Box oriented packing widget container.
8  */
9 
10 #include "GuiContainer.h"
11 #include "GuiWidget.h"
12 
13 namespace Gui {
16  BOX_VERTICAL = 1
17  };
18 
19  class Box : public Container {
20  public:
21  Box(BoxOrientation orient);
22  void PackStart(Widget *child);
23  void PackEnd(Widget *child);
24  void Remove(Widget *child);
25  virtual ~Box();
26  virtual void GetSizeRequested(float size[2]) { GetSizeRequestedOrMinimum(size, false); }
27  virtual void GetMinimumSize(float size[2]) { GetSizeRequestedOrMinimum(size, true); }
28  virtual void OnChildResizeRequest(Widget *);
29  virtual void UpdateAllChildSizes();
30  void SetSizeRequest(float size[2]);
31  void SetSizeRequest(float x, float y);
32  void SetSpacing(float spacing) { m_spacing = spacing; }
33 
34  private:
35  void _Init();
36  void GetSizeRequestedOrMinimum(float size[2], bool minimum);
37  float m_wantedSize[2];
38  float m_spacing;
39  enum BoxOrientation m_orient;
40  };
41 
42  class VBox : public Box {
43  public:
44  VBox() :
45  Box(BOX_VERTICAL) {}
46  };
47 
48  class HBox : public Box {
49  public:
50  HBox() :
52  };
53 } // namespace Gui
54 
55 #endif /* _GUIBOX_H */
Definition: GuiBox.h:19
void Remove(Widget *child)
Definition: GuiBox.cpp:166
Box(BoxOrientation orient)
Definition: GuiBox.cpp:9
void PackEnd(Widget *child)
Definition: GuiBox.cpp:84
void SetSpacing(float spacing)
Definition: GuiBox.h:32
virtual void GetSizeRequested(float size[2])
Definition: GuiBox.h:26
virtual void GetMinimumSize(float size[2])
Definition: GuiBox.h:27
virtual void UpdateAllChildSizes()
Definition: GuiBox.cpp:90
virtual void OnChildResizeRequest(Widget *)
Definition: GuiBox.cpp:73
void PackStart(Widget *child)
Definition: GuiBox.cpp:78
virtual ~Box()
Definition: GuiBox.cpp:68
void SetSizeRequest(float size[2])
Definition: GuiBox.cpp:29
Definition: GuiContainer.h:16
Definition: GuiBox.h:48
HBox()
Definition: GuiBox.h:50
Definition: GuiBox.h:42
VBox()
Definition: GuiBox.h:44
Definition: GuiWidget.h:14
Definition: Gui.cpp:10
BoxOrientation
Definition: GuiBox.h:14
@ BOX_VERTICAL
Definition: GuiBox.h:16
@ BOX_HORIZONTAL
Definition: GuiBox.h:15