Krita Source Code Documentation
Loading...
Searching...
No Matches
EllipseShapeConfigWidget.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2007 Jan Hambrecht <jaham@gmx.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
9#include <klocalizedstring.h>
10#include <kis_signals_blocker.h>
11#include "kis_assert.h"
12
14 : m_ellipse(0)
15{
16 widget.setupUi(this);
17
18 widget.ellipseType->clear();
19 widget.ellipseType->addItem(i18n("Arc"));
20 widget.ellipseType->addItem(i18n("Pie"));
21 widget.ellipseType->addItem(i18n("Chord"));
22
23 widget.startAngle->setFlipOptionsMode(KisAngleSelector::FlipOptionsMode_MenuButton);
24
25 widget.endAngle->setFlipOptionsMode(KisAngleSelector::FlipOptionsMode_MenuButton);
26
27 connect(widget.ellipseType, SIGNAL(currentIndexChanged(int)), this, SIGNAL(propertyChanged()));
28 connect(widget.startAngle, SIGNAL(angleChanged(qreal)), this, SIGNAL(propertyChanged()));
29 connect(widget.endAngle, SIGNAL(angleChanged(qreal)), this, SIGNAL(propertyChanged()));
30 connect(widget.closeEllipse, SIGNAL(clicked(bool)), this, SLOT(closeEllipse()));
31}
32
34{
35 if (m_ellipse) {
37 }
38
39 m_ellipse = dynamic_cast<EllipseShape *>(shape);
40 if (!m_ellipse) return;
41
43
45}
46
48{
49 KisSignalsBlocker b(widget.ellipseType, widget.startAngle, widget.endAngle);
50
51 widget.ellipseType->setCurrentIndex(shape->type());
52 widget.startAngle->setAngle(shape->startAngle());
53 widget.endAngle->setAngle(shape->endAngle());
54}
55
56
58{
59 if (!m_ellipse) {
60 return;
61 }
62
63 m_ellipse->setType(static_cast<EllipseShape::EllipseType>(widget.ellipseType->currentIndex()));
64 m_ellipse->setStartAngle(widget.startAngle->angle());
65 m_ellipse->setEndAngle(widget.endAngle->angle());
66}
67
69{
70 if (!m_ellipse) {
71 return 0;
72 } else {
73 EllipseShape::EllipseType type = static_cast<EllipseShape::EllipseType>(widget.ellipseType->currentIndex());
74 return new EllipseShapeConfigCommand(m_ellipse, type, widget.startAngle->angle(), widget.endAngle->angle());
75 }
76}
77
86
88{
89 widget.startAngle->blockSignals(true);
90 widget.endAngle->blockSignals(true);
91
92 widget.startAngle->setAngle(0.0);
93 widget.endAngle->setAngle(360.0);
94
95 widget.startAngle->blockSignals(false);
96 widget.endAngle->blockSignals(false);
97
98 Q_EMIT propertyChanged();
99}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
The undo / redo command for configuring an ellipse shape.
void open(KoShape *shape) override
reimplemented
void loadPropertiesFromShape(EllipseShape *shape)
void notifyShapeChanged(KoShape::ChangeType type, KoShape *shape) override
KUndo2Command * createCommand() override
reimplemented
void save() override
reimplemented
Ui::EllipseShapeConfigWidget widget
void setType(EllipseType type)
qreal startAngle() const
Returns the actual ellipse start angle in degree.
void setStartAngle(qreal angle)
qreal endAngle() const
Returns the actual ellipse end angle in degree.
void setEndAngle(qreal angle)
EllipseType type() const
Returns the actual ellipse type.
EllipseType
the possible ellipse types
@ FlipOptionsMode_MenuButton
The flip options are shown as a menu accessible via a options button.
void propertyChanged()
is emitted after one of the config options has changed
void addShapeChangeListener(ShapeChangeListener *listener)
Definition KoShape.cpp:1360
void removeShapeChangeListener(ShapeChangeListener *listener)
Definition KoShape.cpp:1368
ChangeType
Used by shapeChanged() to select which change was made.
Definition KoShape.h:95
@ ParameterChanged
the shapes parameter has changed (KoParameterShape only)
Definition KoShape.h:109
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128