Krita Source Code Documentation
Loading...
Searching...
No Matches
KisOptionButtonStrip Class Reference

Provides a list of consecutive tool buttons. More...

#include <KisOptionButtonStrip.h>

+ Inheritance diagram for KisOptionButtonStrip:

Classes

class  Private
 

Signals

void buttonToggled (int index, bool checked)
 
void buttonToggled (KoGroupButton *button, bool checked)
 

Public Member Functions

KoGroupButtonaddButton ()
 
KoGroupButtonaddButton (const QIcon &icon, const QString &text=QString())
 
KoGroupButtonaddButton (const QString &text)
 
KoGroupButtonbutton (int index) const
 
QList< KoGroupButton * > buttons () const
 
KoGroupButtoncheckedButton () const
 
int checkedButtonIndex () const
 
bool exclusive () const
 
 KisOptionButtonStrip (QWidget *parent=nullptr)
 
void setExclusive (bool exclusive)
 
 ~KisOptionButtonStrip () override
 

Private Attributes

QScopedPointer< Privatem_d
 

Detailed Description

Provides a list of consecutive tool buttons.

Definition at line 21 of file KisOptionButtonStrip.h.

Constructor & Destructor Documentation

◆ KisOptionButtonStrip()

KisOptionButtonStrip::KisOptionButtonStrip ( QWidget * parent = nullptr)
explicit

Definition at line 22 of file KisOptionButtonStrip.cpp.

23 : QWidget(parent)
24 , m_d(new Private)
25{
26 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
27
28 QHBoxLayout *mainLayout = new QHBoxLayout;
29 mainLayout->setSpacing(0);
30 mainLayout->setContentsMargins(0, 0, 0, 0);
31 mainLayout->addStretch();
32 setLayout(mainLayout);
33
34 m_d->buttonGroup = new QButtonGroup(this);
35 m_d->buttonGroup->setExclusive(true);
36
37 connect(
38 m_d->buttonGroup,
39 QOverload<QAbstractButton *, bool>::of(&QButtonGroup::buttonToggled),
40 [this](QAbstractButton *button, bool checked) {
41 Q_EMIT buttonToggled(dynamic_cast<KoGroupButton *>(button), checked);
42 Q_EMIT buttonToggled(m_d->buttonGroup->id(button), checked);
43 });
44}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QScopedPointer< Private > m_d
KoGroupButton * button(int index) const

References button(), connect(), and m_d.

◆ ~KisOptionButtonStrip()

KisOptionButtonStrip::~KisOptionButtonStrip ( )
override

Definition at line 46 of file KisOptionButtonStrip.cpp.

47{
48}

Member Function Documentation

◆ addButton() [1/3]

KoGroupButton * KisOptionButtonStrip::addButton ( )

Definition at line 84 of file KisOptionButtonStrip.cpp.

85{
86 return addButton(QIcon(), QString());
87}

References addButton().

◆ addButton() [2/3]

KoGroupButton * KisOptionButtonStrip::addButton ( const QIcon & icon,
const QString & text = QString() )

Definition at line 50 of file KisOptionButtonStrip.cpp.

52{
53 KoGroupButton *newButton = new KoGroupButton(this);
54 newButton->setCheckable(true);
55 newButton->setIcon(icon);
56 newButton->setText(text);
57 newButton->setMinimumSize(28, 28);
58
59 if (m_d->numberOfButtons > 0) {
60 KoGroupButton *prevButton = dynamic_cast<KoGroupButton *>(
61 m_d->buttonGroup->button(m_d->numberOfButtons - 1));
62 prevButton->setGroupPosition(m_d->numberOfButtons == 1
64 : KoGroupButton::GroupCenter);
66 }
67
68 m_d->buttonGroup->addButton(newButton, m_d->numberOfButtons);
69
70 QHBoxLayout *mainLayout = dynamic_cast<QHBoxLayout *>(layout());
71 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(mainLayout, newButton);
72 mainLayout->insertWidget(m_d->numberOfButtons, newButton);
73
74 ++m_d->numberOfButtons;
75
76 return newButton;
77}
@ GroupLeft
The button is at the left of the group, so it would have rounded the left part.
@ GroupRight
The button is at the right of the group, so it would have rounded the right part.
void setGroupPosition(KoGroupButton::GroupPosition groupPosition)
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129

References KoGroupButton::GroupCenter, KoGroupButton::GroupLeft, KoGroupButton::GroupRight, KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, m_d, and KoGroupButton::setGroupPosition().

◆ addButton() [3/3]

KoGroupButton * KisOptionButtonStrip::addButton ( const QString & text)

Definition at line 79 of file KisOptionButtonStrip.cpp.

80{
81 return addButton(QIcon(), text);
82}

References addButton().

◆ button()

KoGroupButton * KisOptionButtonStrip::button ( int index) const

Definition at line 89 of file KisOptionButtonStrip.cpp.

90{
91 return dynamic_cast<KoGroupButton *>(m_d->buttonGroup->button(index));
92}

References m_d.

◆ buttons()

QList< KoGroupButton * > KisOptionButtonStrip::buttons ( ) const

Definition at line 94 of file KisOptionButtonStrip.cpp.

95{
97 for (QAbstractButton *b : m_d->buttonGroup->buttons()) {
98 list.append(dynamic_cast<KoGroupButton *>(b));
99 }
100 return list;
101}
QList< KoGroupButton * > buttons() const

References m_d.

◆ buttonToggled [1/2]

void KisOptionButtonStrip::buttonToggled ( int index,
bool checked )
signal

◆ buttonToggled [2/2]

void KisOptionButtonStrip::buttonToggled ( KoGroupButton * button,
bool checked )
signal

◆ checkedButton()

KoGroupButton * KisOptionButtonStrip::checkedButton ( ) const

Definition at line 113 of file KisOptionButtonStrip.cpp.

114{
115 return dynamic_cast<KoGroupButton *>(m_d->buttonGroup->checkedButton());
116}

References m_d.

◆ checkedButtonIndex()

int KisOptionButtonStrip::checkedButtonIndex ( ) const

Definition at line 118 of file KisOptionButtonStrip.cpp.

119{
120 return m_d->buttonGroup->checkedId();
121}

References m_d.

◆ exclusive()

bool KisOptionButtonStrip::exclusive ( ) const

Definition at line 103 of file KisOptionButtonStrip.cpp.

104{
105 return m_d->buttonGroup->exclusive();
106}

References m_d.

◆ setExclusive()

void KisOptionButtonStrip::setExclusive ( bool exclusive)

Definition at line 108 of file KisOptionButtonStrip.cpp.

109{
110 m_d->buttonGroup->setExclusive(exclusive);
111}

References exclusive(), and m_d.

Member Data Documentation

◆ m_d

QScopedPointer<Private> KisOptionButtonStrip::m_d
private

Definition at line 49 of file KisOptionButtonStrip.h.


The documentation for this class was generated from the following files: