terminalgui  0.1.0
Widgets for your terminal, powered by Qt! Create textual GUI (TUI) in your console easily.
tgscrollarea.h
1 #pragma once
2 
3 #include <widgets/tgwidget.h>
4 
5 #include <QPointer>
6 
7 namespace Tg {
8 class ScrollBar;
9 
10 class ScrollArea : public Widget
11 {
12  Q_OBJECT
13 
14  Q_PROPERTY(QPoint contentsPosition READ contentsPosition WRITE setContentsPosition NOTIFY contentsPositionChanged)
15 
16  friend class ListView;
17 
18 public:
19  enum class ScrollBarPolicy {
20  AlwaysShow,
21  ShowWhenNeeded,
22  NeverShow
23  };
24  Q_ENUM(ScrollBarPolicy)
25 
26  ScrollArea(Widget *parent);
28 
29  QPoint contentsPosition() const;
30 
31 public slots:
32  void setContentsPosition(const QPoint &contentsPosition);
33 
34 signals:
35  void contentsPositionChanged(const QPoint &contentsPosition) const;
36 
37 protected:
38  void init() override;
39  void consumeKeyboardBuffer(const QString &keyboardBuffer) override;
40  QString drawPixel(const QPoint &pixel) const override;
41  virtual QString drawAreaContents(const QPoint &pixel) const;
42 
43  QPoint childPixel(const QPoint &pixel) const;
44 
45  int childrenWidth() const;
46  int childrenHeight() const;
47  QRect scrollableArea() const;
48 
49  void updateScrollBarStates();
50  void updateScrollBarPositions();
51 
52  int _childrenWidth = 0;
53  int _childrenHeight = 0;
54 
55 protected slots:
56  virtual void updateChildrenDimensions();
57  void connectChild(Widget *child);
58 
59 private:
60  QPointer<ScrollBar> _verticalScrollBar;
61  ScrollBarPolicy _verticalScrollBarPolicy = ScrollBarPolicy::ShowWhenNeeded;
62  QPointer<ScrollBar> _horizontalScrollBar;
63  ScrollBarPolicy _horizontalScrollBarPolicy = ScrollBarPolicy::ShowWhenNeeded;
64 
65  QPoint _contentsPosition;
66 };
67 }
Tg::Screen
Screen is the "canvas" on which widgets (subclasses of Widget) are drawn.
Definition: tgscreen.h:31
Tg::ScrollArea::consumeKeyboardBuffer
void consumeKeyboardBuffer(const QString &keyboardBuffer) override
Called when Widget accepts focus and keyboardBuffer is not empty.
Definition: tgscrollarea.cpp:113
Tg::ScrollArea::init
void init() override
Initializes Widget and it's connections.
Definition: tgscrollarea.cpp:86
Tg::ListView
Definition: tglistview.h:11
Tg
All Terminal GUI classes (both core and widgets) are defined within the Tg namespace.
Definition: tgcolor.h:6
Tg::Widget
Base class for all widgets in a Terminal Gui application.
Definition: tgwidget.h:64
Tg::Widget::screen
Screen * screen() const
Returns the Screen on which this Widget is being drawn.
Definition: tgwidget.cpp:174
Tg::ScrollArea::drawPixel
QString drawPixel(const QPoint &pixel) const override
Returns ANSI-encoded string, used by Screen to draw the pixel.
Definition: tgscrollarea.cpp:18
Tg::ScrollArea
Definition: tgscrollarea.h:11