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

#include <KoAnchorSelectionWidget.h>

+ Inheritance diagram for KoAnchorSelectionWidget:

Public Slots

void slotGroupClicked (int id)
 

Signals

void valueChanged (KoFlake::AnchorPosition id)
 

Public Member Functions

 KoAnchorSelectionWidget (QWidget *parent=0)
 
QSize minimumSizeHint () const override
 
void setValue (KoFlake::AnchorPosition value)
 
QSize sizeHint () const override
 
KoFlake::AnchorPosition value () const
 
QPointF value (const QRectF rect, bool *valid) const
 
 ~KoAnchorSelectionWidget () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Public Attributes

QButtonGroup * buttonGroup
 
std::array< QToolButton *, KoFlake::NumAnchorPositionsbuttons
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Private Attributes

QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 21 of file KoAnchorSelectionWidget.cpp.

Constructor & Destructor Documentation

◆ KoAnchorSelectionWidget()

KoAnchorSelectionWidget::KoAnchorSelectionWidget ( QWidget * parent = 0)
explicit

Definition at line 27 of file KoAnchorSelectionWidget.cpp.

28 : QWidget(parent),
29 m_d(new Private)
30{
31 QVector<QIcon> icons;
32
33 icons << KisIconUtils::loadIcon("arrow-topleft");
34 icons << KisIconUtils::loadIcon("arrow-up");
35 icons << KisIconUtils::loadIcon("arrow-topright");
36 icons << KisIconUtils::loadIcon("arrow-left");
37 icons << QIcon(); // center
38 icons << KisIconUtils::loadIcon("arrow-right");
39 icons << KisIconUtils::loadIcon("arrow-downleft");
40 icons << KisIconUtils::loadIcon("arrow-down");
41 icons << KisIconUtils::loadIcon("arrow-downright");
42 icons << QIcon(); // no anchor
43
44 QGridLayout *gridLayout = new QGridLayout(this);
45 gridLayout->setSpacing(0);
46 gridLayout->setContentsMargins(0,0,0,0);
47
48 m_d->buttonGroup = new QButtonGroup(this);
49
50 for (int i = 0; i < KoFlake::NumAnchorPositions; i++) {
51 QToolButton *button = new QToolButton(this);
52 button->setCheckable(true);
53 //button->setAutoRaise(true);
54 button->setAutoExclusive(true);
55 button->setIcon(icons[i]);
56 button->setFocusPolicy(Qt::NoFocus);
57 button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
58
59 if (i != KoFlake::NoAnchor) {
60 gridLayout->addWidget(button, i / 3, i % 3, Qt::AlignCenter);
61 } else {
62 button->setVisible(false);
63 }
64
65 m_d->buttonGroup->addButton(button, i);
66 m_d->buttons[i] = button;
67 }
68
69 connect(m_d->buttonGroup, SIGNAL(idClicked(int)), SLOT(slotGroupClicked(int)));
70}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QString button(const QWheelEvent &ev)
QIcon loadIcon(const QString &name)
@ NoAnchor
Definition KoFlake.h:95
@ NumAnchorPositions
Definition KoFlake.h:96
QScopedPointer< Private > m_d

References button(), connect(), KisIconUtils::loadIcon(), m_d, KoFlake::NoAnchor, KoFlake::NumAnchorPositions, and slotGroupClicked().

◆ ~KoAnchorSelectionWidget()

KoAnchorSelectionWidget::~KoAnchorSelectionWidget ( )
override

Definition at line 72 of file KoAnchorSelectionWidget.cpp.

73{
74}

Member Function Documentation

◆ minimumSizeHint()

QSize KoAnchorSelectionWidget::minimumSizeHint ( ) const
override

Definition at line 112 of file KoAnchorSelectionWidget.cpp.

113{
114 QFontMetrics metrics(this->font());
115 const int minHeight = 3 * (metrics.height() + 5);
116 return QSize(minHeight, minHeight);
117}

◆ setValue()

void KoAnchorSelectionWidget::setValue ( KoFlake::AnchorPosition value)

Definition at line 87 of file KoAnchorSelectionWidget.cpp.

88{
89 if (value == this->value()) return;
90
91 KisSignalsBlocker b(m_d->buttonGroup);
92
93 if (value >= 0) {
94 m_d->buttonGroup->button(int(value))->setChecked(true);
95 } else {
96 QAbstractButton *button = m_d->buttonGroup->checkedButton();
97 if (button) {
98 button->setChecked(false);
99 }
100 }
101
102 Q_EMIT valueChanged(value);
103}
KoFlake::AnchorPosition value() const
void valueChanged(KoFlake::AnchorPosition id)

References button(), m_d, value(), and valueChanged().

◆ sizeHint()

QSize KoAnchorSelectionWidget::sizeHint ( ) const
override

Definition at line 105 of file KoAnchorSelectionWidget.cpp.

106{
107 const QSize minSize = minimumSizeHint();
108 const int preferredHint = qMax(minSize.height(), height());
109 return QSize(preferredHint, preferredHint);
110}
QSize minimumSizeHint() const override

References minimumSizeHint().

◆ slotGroupClicked

void KoAnchorSelectionWidget::slotGroupClicked ( int id)
slot

Definition at line 119 of file KoAnchorSelectionWidget.cpp.

120{
123}
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
AnchorPosition
Definition KoFlake.h:85

References KIS_SAFE_ASSERT_RECOVER_RETURN, KoFlake::NumAnchorPositions, and valueChanged().

◆ value() [1/2]

KoFlake::AnchorPosition KoAnchorSelectionWidget::value ( ) const

Definition at line 76 of file KoAnchorSelectionWidget.cpp.

77{
78 return KoFlake::AnchorPosition(m_d->buttonGroup->checkedId());
79}

References m_d.

◆ value() [2/2]

QPointF KoAnchorSelectionWidget::value ( const QRectF rect,
bool * valid ) const

Definition at line 81 of file KoAnchorSelectionWidget.cpp.

82{
83 KoFlake::AnchorPosition anchor = this->value();
84 return anchorToPoint(anchor, rect, valid);
85}
KRITAFLAKE_EXPORT QPointF anchorToPoint(AnchorPosition anchor, const QRectF rect, bool *valid=0)
Definition KoFlake.cpp:329

References value().

◆ valueChanged

void KoAnchorSelectionWidget::valueChanged ( KoFlake::AnchorPosition id)
signal

Member Data Documentation

◆ buttonGroup

QButtonGroup* KoAnchorSelectionWidget::buttonGroup

Definition at line 23 of file KoAnchorSelectionWidget.cpp.

◆ buttons

std::array<QToolButton*, KoFlake::NumAnchorPositions> KoAnchorSelectionWidget::buttons

Definition at line 22 of file KoAnchorSelectionWidget.cpp.

◆ m_d

QScopedPointer<Private> KoAnchorSelectionWidget::m_d
private

Definition at line 38 of file KoAnchorSelectionWidget.h.


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