libwtk-sdl2  0.0.1
notebook.hpp
1 #ifndef LIBWTK_SDL2_NOTEBOOK_HPP
2 #define LIBWTK_SDL2_NOTEBOOK_HPP
3 
4 #include <vector>
5 
6 #include "widget.hpp"
7 
8 // A container that has a widget on every page but only one page is visible at a
9 // time.
10 struct notebook : widget
11 {
12  notebook(std::vector<widget_ptr> pages);
13  ~notebook() override;
14 
15  void on_child_dirty(widget * w) override;
16  std::vector<widget *> get_visible_children() override;
17  std::vector<widget const *> get_visible_children() const override;
18 
19  void on_draw(draw_context & dc, selection_context const & sc) const override;
20  void on_mouse_up_event(mouse_up_event const & e) override;
21  void on_mouse_down_event(mouse_down_event const & e) override;
22 
23  void on_box_allocated() override;
24 
25  widget * find_selectable(navigation_type nt, point center) override;
26  widget * navigate_selectable(navigation_type nt, point center) override;
27  widget * navigate_selectable_from_children(navigation_type nt, widget * w, point center) override;
28 
29  std::vector<widget *> get_children() override;
30 
31  size_hint get_size_hint(int width, int height) const override;
32 
38  std::size_t get_page() const;
39  void set_page(std::size_t index);
40 
43  private:
44 
45  widget * get_shown_widget();
46  widget const * get_shown_widget() const;
47 
48 
49  std::vector<widget_ptr> _pages;
50  std::size_t _current_page_index;
51 };
52 
53 #endif
widget * navigate_selectable(navigation_type nt, point center) override
Definition: mouse_event.hpp:19
std::vector< widget * > get_children() override
Definition: mouse_event.hpp:8
size_hint get_size_hint(int width, int height) const override
widget * navigate_selectable_from_children(navigation_type nt, widget *w, point center) override
Definition: draw_context.hpp:126
void on_draw(draw_context &dc, selection_context const &sc) const override
void on_child_dirty(widget *w) override
Definition: geometry.hpp:6
Definition: notebook.hpp:10
Definition: selection_context.hpp:18
void on_box_allocated() override
Definition: widget.hpp:52
std::vector< widget * > get_visible_children() override
widget * find_selectable(navigation_type nt, point center) override
Definition: widget.hpp:35