tab_container.h
1 /*************************************************************************/
2 /* tab_container.h */
3 /*************************************************************************/
4 /* This file is part of: */
5 /* GODOT ENGINE */
6 /* http://www.godotengine.org */
7 /*************************************************************************/
8 /* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
9 /* */
10 /* Permission is hereby granted, free of charge, to any person obtaining */
11 /* a copy of this software and associated documentation files (the */
12 /* "Software"), to deal in the Software without restriction, including */
13 /* without limitation the rights to use, copy, modify, merge, publish, */
14 /* distribute, sublicense, and/or sell copies of the Software, and to */
15 /* permit persons to whom the Software is furnished to do so, subject to */
16 /* the following conditions: */
17 /* */
18 /* The above copyright notice and this permission notice shall be */
19 /* included in all copies or substantial portions of the Software. */
20 /* */
21 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
22 /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
23 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
24 /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
25 /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
26 /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
27 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
28 /*************************************************************************/
29 #ifndef TAB_CONTAINER_H
30 #define TAB_CONTAINER_H
31 
32 
33 #include "scene/gui/control.h"
34 #include "scene/gui/popup.h"
35 class TabContainer : public Control {
36 
37  OBJ_TYPE( TabContainer, Control );
38 public:
39 
40  enum TabAlign {
41 
42  ALIGN_LEFT,
43  ALIGN_CENTER,
44  ALIGN_RIGHT
45  };
46 private:
47 
48  int mouse_x_cache;
49  int tab_display_ofs;
50  int tabs_ofs_cache;
51  int last_tab_cache;
52  int current;
53  bool tabs_visible;
54  bool buttons_visible_cache;
55  TabAlign align;
56  Control *_get_tab(int idx) const;
57  int _get_top_margin() const;
58  Popup *popup;
59 
60 
61 protected:
62 
63  void _child_renamed_callback();
64  void _input_event(const InputEvent& p_event);
65  void _notification(int p_what);
66  virtual void add_child_notify(Node *p_child);
67  virtual void remove_child_notify(Node *p_child);
68 
69  static void _bind_methods();
70 
71 public:
72 
73 
74  void set_tab_align(TabAlign p_align);
75  TabAlign get_tab_align() const;
76 
77  void set_tabs_visible(bool p_visibe);
78  bool are_tabs_visible() const;
79 
80  void set_tab_title(int p_tab,const String& p_title);
81  String get_tab_title(int p_tab) const;
82 
83  void set_tab_icon(int p_tab,const Ref<Texture>& p_icon);
84  Ref<Texture> get_tab_icon(int p_tab) const;
85 
86  int get_tab_count() const;
87  void set_current_tab(int p_current);
88  int get_current_tab() const;
89 
90  Control* get_tab_control(int p_idx) const;
91  Control* get_current_tab_control() const;
92 
93  virtual Size2 get_minimum_size() const;
94 
95  virtual void get_translatable_strings(List<String> *p_strings) const;
96 
97  void set_popup(Node *p_popup);
98  Popup* get_popup() const;
99 
100 
101  TabContainer();
102 };
103 
104 
105 VARIANT_ENUM_CAST( TabContainer::TabAlign );
106 
107 #endif // TAB_CONTAINER_H
Definition: node.h:42
Definition: tab_container.h:35
Definition: input_event.h:263
Definition: popup.h:37
Definition: math_2d.h:65
Definition: control.h:47
Definition: ustring.h:64