SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
ribbongroup.h
Go to the documentation of this file.
1#ifndef RIBBONGROUP_H
2#define RIBBONGROUP_H
3
24#include <QHash>
25#include <QList>
26#include <QString>
27#include <QWidget>
28
29#include "ribbonlayoutsolver.h"
30
31class QAction;
32class QFrame;
33class QHBoxLayout;
34class QLabel;
35class QToolButton;
36
37namespace openswmmvis::ui {
38
39class RibbonSplitButton;
40
44inline constexpr int kRibbonRowHeight = 100;
46inline constexpr int kRibbonIconFull = 32;
48inline constexpr int kRibbonIconCompact = 24;
49
50class RibbonGroup : public QWidget
51{
52 Q_OBJECT
53
54public:
55 explicit RibbonGroup(const QString &caption, QWidget *parent = nullptr);
56
57 QString caption() const { return mCaption; }
58
63 QToolButton *addAction(QAction *action, const QString &shortLabel = QString());
64
67 RibbonSplitButton *addFamily(const QString &familyId,
68 const QList<QAction *> &members);
69
72 void addWidget(QWidget *widget, int stretch = 0);
73
76 QToolButton *buttonForAction(const QAction *action) const;
77
79 RibbonMode mode() const { return mMode; }
80
84 int widthForMode(RibbonMode m) const;
85
88
93 {
94 invalidateWidthCache();
95 updateGeometry();
96 }
97
98 bool isCollapsible() const { return mCollapsible; }
99
101 QList<QAction *> groupActions() const { return mActions; }
102
109 QSize sizeHint() const override;
110 QSize minimumSizeHint() const override;
111
112protected:
113 void changeEvent(QEvent *event) override;
114
115private:
116 void applyMode(RibbonMode mode);
117 void invalidateWidthCache() { mWidthCache.clear(); }
118 QToolButton *makeButton();
119
120 QString mCaption;
122 bool mCollapsible = true;
123 QWidget *mContent = nullptr;
124 QHBoxLayout *mContentLayout = nullptr;
125 QLabel *mCaptionLabel = nullptr;
126 QFrame *mSeparator = nullptr;
127 QToolButton *mCollapsedButton = nullptr;
128 QList<QAction *> mActions;
129 QList<QToolButton *> mButtons;
130 mutable QHash<int, int> mWidthCache;
131};
132
133} // namespace openswmmvis::ui
134
135#endif // RIBBONGROUP_H
Definition ribbongroup.h:51
RibbonMode mode() const
Definition ribbongroup.h:79
bool isCollapsible() const
Definition ribbongroup.h:98
QString caption() const
Definition ribbongroup.h:57
void refreshWidth()
Definition ribbongroup.h:92
void setMode(RibbonMode mode)
Definition ribbongroup.cpp:165
QSize minimumSizeHint() const override
Definition ribbongroup.cpp:268
QList< QAction * > groupActions() const
Definition ribbongroup.h:101
QToolButton * buttonForAction(const QAction *action) const
Definition ribbongroup.cpp:152
int widthForMode(RibbonMode m) const
Definition ribbongroup.cpp:212
QSize sizeHint() const override
Definition ribbongroup.cpp:263
RibbonSplitButton * addFamily(const QString &familyId, const QList< QAction * > &members)
Definition ribbongroup.cpp:122
void changeEvent(QEvent *event) override
Definition ribbongroup.cpp:288
void addWidget(QWidget *widget, int stretch=0)
Definition ribbongroup.cpp:143
QToolButton * addAction(QAction *action, const QString &shortLabel=QString())
Definition ribbongroup.cpp:102
RibbonGroupWidths groupWidths() const
Definition ribbongroup.cpp:275
Definition ribbonsplitbutton.h:31
MaskMode m
Definition maskspec.cpp:18
Definition openswmmvislayer.h:43
constexpr int kRibbonRowHeight
Definition ribbongroup.h:44
RibbonMode
Definition ribbonlayoutsolver.h:23
@ Full
text-under-icon buttons, large icons, caption
constexpr int kRibbonIconCompact
Icon edge in Compact mode.
Definition ribbongroup.h:48
constexpr int kRibbonIconFull
Icon edge in Full mode.
Definition ribbongroup.h:46
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
Definition ribbonlayoutsolver.h:29