195 d->ui.reset(
new Ui_KoStrokeConfigWidget());
196 d->ui->setupUi(
this);
198 setObjectName(
"Stroke widget");
201 d->shapeChangedAcyclicConnector.connectBackwardVoid(
203 &
d->selectionChangedCompressor, SLOT(start()));
205 d->shapeChangedAcyclicConnector.connectBackwardVoid(
207 &
d->selectionChangedCompressor, SLOT(start()));
209 connect(&
d->selectionChangedCompressor, SIGNAL(timeout()),
this, SLOT(
selectionChanged()));
211 d->resourceManagerAcyclicConnector.connectBackwardResourcePair(
221 d->fillConfigWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
222 d->ui->fillConfigWidgetLayout->addWidget(
d->fillConfigWidget);
223 connect(
d->fillConfigWidget, SIGNAL(sigFillChanged()), SIGNAL(
sigStrokeChanged()));
226 d->ui->thicknessLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
227 d->ui->thicknessLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
230 d->ui->lineWidth->preventDecimalsChangeFromUnitManager(
true);
236 d->ui->lineWidth->setMinMaxStep(0.03, 240.0, 0.01);
237 d->ui->lineWidth->setDecimals(2);
238 d->ui->lineWidth->setToolTip(i18n(
"Set line width of actual selection"));
240 d->ui->capNJoinButton->setMinimumHeight(25);
242 d->ui->capNJoinButton->setMenu(
d->capNJoinMenu);
243 d->ui->capNJoinButton->setText(
"...");
244 d->ui->capNJoinButton->setPopupMode(QToolButton::InstantPopup);
249 d->ui->strokeStyleLabel->setText(i18n(
"Line Style:"));
250 d->ui->strokeStyleLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
252 d->ui->lineStyle->setToolTip(i18nc(
"@info:tooltip",
"Line style"));
253 d->ui->lineStyle->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
263 d->startMarkerSelector->setToolTip(i18nc(
"@info:tooltip",
"Start marker"));
264 d->startMarkerSelector->updateMarkers(emptyMarkers);
265 d->startMarkerSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred );
266 d->ui->markerLayout->addWidget(
d->startMarkerSelector);
270 d->midMarkerSelector->setToolTip(i18nc(
"@info:tooltip",
"Node marker"));
271 d->midMarkerSelector->updateMarkers(emptyMarkers);
272 d->midMarkerSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred );
273 d->ui->markerLayout->addWidget(
d->midMarkerSelector);
277 d->endMarkerSelector->setToolTip(i18nc(
"@info:tooltip",
"End marker"));
278 d->endMarkerSelector->updateMarkers(emptyMarkers);
279 d->endMarkerSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred );
281 d->ui->markerLayout->addWidget(
d->endMarkerSelector);
285 d->spacer =
new QWidget();
286 d->spacer->setObjectName(
"SpecialSpacer");
288 d->ui->markerLayout->addWidget(
d->spacer);
295 connect(
d->capNJoinMenu->miterLimit, SIGNAL(valueChangedPt(qreal)),
this, SLOT(
applyJoinCapChanges()));
301 connect(
d->startMarkerSelector, SIGNAL(currentIndexChanged(
int)), mapper, SLOT(map()));
302 connect(
d->midMarkerSelector, SIGNAL(currentIndexChanged(
int)), mapper, SLOT(map()));
303 connect(
d->endMarkerSelector, SIGNAL(currentIndexChanged(
int)), mapper, SLOT(map()));
311 if (resourceManager) {
318 d->selectionChangedCompressor.start();
658 if (
d->noSelectionTrackingMode)
return;
661 if (!selection)
return;
668 KoShape *shape = !shapes.isEmpty() ? shapes.first() : 0;
678 if (stroke && KoFlake::compareShapePropertiesEqual<CheckShapeStrokeWidthPolicy>(shapes)) {
679 d->ui->lineWidth->changeValue(stroke->lineWidth());
681 d->ui->lineWidth->changeValue(0);
686 if (stroke && KoFlake::compareShapePropertiesEqual<CheckShapeStrokeCapJoinPolicy>(shapes)) {
687 Qt::PenCapStyle
capStyle = stroke->capStyle() >= 0 ? stroke->capStyle() : Qt::FlatCap;
688 Qt::PenJoinStyle
joinStyle = stroke->joinStyle() >= 0 ? stroke->joinStyle() : Qt::MiterJoin;
702 d->capNJoinMenu->miterLimit->changeValue(stroke->miterLimit());
703 d->capNJoinMenu->miterLimit->setEnabled(
joinStyle == Qt::MiterJoin);
705 d->capNJoinMenu->capGroup->button(Qt::FlatCap)->setChecked(
true);
706 d->capNJoinMenu->joinGroup->button(Qt::MiterJoin)->setChecked(
true);
707 d->capNJoinMenu->miterLimit->changeValue(0.0);
708 d->capNJoinMenu->miterLimit->setEnabled(
true);
713 if (stroke && KoFlake::compareShapePropertiesEqual<CheckShapeStrokeDashesPolicy>(shapes)) {
714 d->ui->lineStyle->setLineStyle(stroke->lineStyle(), stroke->lineDashes());
733 const bool lineOptionsVisible = (
d->fillConfigWidget->selectedFillIndex() != 0);
738 switch(
d->fillConfigWidget->selectedFillIndex()) {
740 this->setMinimumHeight(130);
743 this->setMinimumHeight(200);
746 this->setMinimumHeight(350);
752 d->ui->thicknessLineBreak->setVisible(lineOptionsVisible);
753 d->ui->lineWidth->setVisible(lineOptionsVisible);
754 d->ui->capNJoinButton->setVisible(lineOptionsVisible);
755 d->ui->lineStyle->setVisible(lineOptionsVisible);
756 d->startMarkerSelector->setVisible(lineOptionsVisible);
757 d->midMarkerSelector->setVisible(lineOptionsVisible);
758 d->endMarkerSelector->setVisible(lineOptionsVisible);
759 d->ui->thicknessLabel->setVisible(lineOptionsVisible);
760 d->ui->strokeStyleLabel->setVisible(lineOptionsVisible);