libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
splitter.h
Go to the documentation of this file.
1
8#pragma once
9
11#include <promeki/tui/widget.h>
12
14
20class TuiSplitter : public TuiWidget {
21 PROMEKI_OBJECT(TuiSplitter, TuiWidget)
22 public:
23 enum Orientation { Horizontal, Vertical };
24
25 TuiSplitter(Orientation orientation = Horizontal,
26 ObjectBase *parent = nullptr);
27 ~TuiSplitter() override;
28
29 void setFirstWidget(TuiWidget *widget);
30 void setSecondWidget(TuiWidget *widget);
31
32 TuiWidget *firstWidget() const { return _first; }
33 TuiWidget *secondWidget() const { return _second; }
34
36 void setSplitRatio(double ratio);
37 double splitRatio() const { return _splitRatio; }
38
39 Orientation orientation() const { return _orientation; }
40
41 Size2Di32 sizeHint() const override;
42
43 protected:
44 void paintEvent(TuiPaintEvent *e) override;
45 void resizeEvent(TuiResizeEvent *e) override;
46 void keyEvent(KeyEvent *e) override;
47 void mouseEvent(MouseEvent *e) override;
48
49 private:
50 Orientation _orientation;
51 TuiWidget *_first = nullptr;
52 TuiWidget *_second = nullptr;
53 double _splitRatio = 0.5;
54 bool _dragging = false;
55
56 void updateChildGeometry();
57};
58
Event delivered when a key is pressed or released.
Definition keyevent.h:22
Dynamic array container wrapping std::vector.
Definition list.h:40
Event delivered for mouse input.
Definition mouseevent.h:23
Base object for promeki.
Definition objectbase.h:129
ObjectBase * parent() const
Returns the parent object, if one. nullptr if none.
Definition objectbase.h:258
Event delivered when a TUI widget needs to repaint.
Definition widget.h:28
Event delivered when a TUI widget is resized.
Definition widget.h:37
Resizable split between two child widgets.
Definition splitter.h:20
void keyEvent(KeyEvent *e) override
Called on keyboard input. Override in subclasses.
void resizeEvent(TuiResizeEvent *e) override
Called when the widget is resized. Override in subclasses.
void paintEvent(TuiPaintEvent *e) override
Called to paint the widget. Override in subclasses.
Size2Di32 sizeHint() const override
Returns the preferred size. Override in subclasses.
void setSplitRatio(double ratio)
Sets the split position (0.0 to 1.0).
void mouseEvent(MouseEvent *e) override
Called on mouse input. Override in subclasses.
Base class for all TUI widgets.
Definition widget.h:88
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19