192 d->ui.reset(
new Ui_KoStrokeConfigWidget());
193 d->ui->setupUi(
this);
195 setObjectName(
"Stroke widget");
198 d->shapeChangedAcyclicConnector.connectBackwardVoid(
200 &
d->selectionChangedCompressor, SLOT(start()));
202 d->shapeChangedAcyclicConnector.connectBackwardVoid(
204 &
d->selectionChangedCompressor, SLOT(start()));
206 connect(&
d->selectionChangedCompressor, SIGNAL(timeout()),
this, SLOT(
selectionChanged()));
208 d->resourceManagerAcyclicConnector.connectBackwardResourcePair(
218 d->fillConfigWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
219 d->ui->fillConfigWidgetLayout->addWidget(
d->fillConfigWidget);
220 connect(
d->fillConfigWidget, SIGNAL(sigFillChanged()), SIGNAL(
sigStrokeChanged()));
223 d->ui->thicknessLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
224 d->ui->thicknessLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
227 d->ui->lineWidth->preventDecimalsChangeFromUnitManager(
true);
233 d->ui->lineWidth->setMinMaxStep(0.03, 240.0, 0.01);
234 d->ui->lineWidth->setDecimals(2);
235 d->ui->lineWidth->setToolTip(i18n(
"Set line width of actual selection"));
237 d->ui->capNJoinButton->setMinimumHeight(25);
239 d->ui->capNJoinButton->setMenu(
d->capNJoinMenu);
240 d->ui->capNJoinButton->setText(
"...");
241 d->ui->capNJoinButton->setPopupMode(QToolButton::InstantPopup);
246 d->ui->strokeStyleLabel->setText(i18n(
"Line Style:"));
247 d->ui->strokeStyleLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
249 d->ui->lineStyle->setToolTip(i18nc(
"@info:tooltip",
"Line style"));
250 d->ui->lineStyle->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
260 d->startMarkerSelector->setToolTip(i18nc(
"@info:tooltip",
"Start marker"));
261 d->startMarkerSelector->updateMarkers(emptyMarkers);
262 d->startMarkerSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred );
263 d->ui->markerLayout->addWidget(
d->startMarkerSelector);
267 d->midMarkerSelector->setToolTip(i18nc(
"@info:tooltip",
"Node marker"));
268 d->midMarkerSelector->updateMarkers(emptyMarkers);
269 d->midMarkerSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred );
270 d->ui->markerLayout->addWidget(
d->midMarkerSelector);
274 d->endMarkerSelector->setToolTip(i18nc(
"@info:tooltip",
"End marker"));
275 d->endMarkerSelector->updateMarkers(emptyMarkers);
276 d->endMarkerSelector->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred );
278 d->ui->markerLayout->addWidget(
d->endMarkerSelector);
282 d->spacer =
new QWidget();
283 d->spacer->setObjectName(
"SpecialSpacer");
285 d->ui->markerLayout->addWidget(
d->spacer);
292 connect(
d->capNJoinMenu->miterLimit, SIGNAL(valueChangedPt(qreal)),
this, SLOT(
applyJoinCapChanges()));
298 connect(
d->startMarkerSelector, SIGNAL(currentIndexChanged(
int)), mapper, SLOT(map()));
299 connect(
d->midMarkerSelector, SIGNAL(currentIndexChanged(
int)), mapper, SLOT(map()));
300 connect(
d->endMarkerSelector, SIGNAL(currentIndexChanged(
int)), mapper, SLOT(map()));
308 if (resourceManager) {
315 d->selectionChangedCompressor.start();
655 if (
d->noSelectionTrackingMode)
return;
658 if (!selection)
return;
665 KoShape *shape = !shapes.isEmpty() ? shapes.first() : 0;
675 if (stroke && KoFlake::compareShapePropertiesEqual<CheckShapeStrokeWidthPolicy>(shapes)) {
676 d->ui->lineWidth->changeValue(stroke->lineWidth());
678 d->ui->lineWidth->changeValue(0);
683 if (stroke && KoFlake::compareShapePropertiesEqual<CheckShapeStrokeCapJoinPolicy>(shapes)) {
684 Qt::PenCapStyle
capStyle = stroke->capStyle() >= 0 ? stroke->capStyle() : Qt::FlatCap;
685 Qt::PenJoinStyle
joinStyle = stroke->joinStyle() >= 0 ? stroke->joinStyle() : Qt::MiterJoin;
699 d->capNJoinMenu->miterLimit->changeValue(stroke->miterLimit());
700 d->capNJoinMenu->miterLimit->setEnabled(
joinStyle == Qt::MiterJoin);
702 d->capNJoinMenu->capGroup->button(Qt::FlatCap)->setChecked(
true);
703 d->capNJoinMenu->joinGroup->button(Qt::MiterJoin)->setChecked(
true);
704 d->capNJoinMenu->miterLimit->changeValue(0.0);
705 d->capNJoinMenu->miterLimit->setEnabled(
true);
710 if (stroke && KoFlake::compareShapePropertiesEqual<CheckShapeStrokeDashesPolicy>(shapes)) {
711 d->ui->lineStyle->setLineStyle(stroke->lineStyle(), stroke->lineDashes());
730 const bool lineOptionsVisible = (
d->fillConfigWidget->selectedFillIndex() != 0);
735 switch(
d->fillConfigWidget->selectedFillIndex()) {
737 this->setMinimumHeight(130);
740 this->setMinimumHeight(200);
743 this->setMinimumHeight(350);
749 d->ui->thicknessLineBreak->setVisible(lineOptionsVisible);
750 d->ui->lineWidth->setVisible(lineOptionsVisible);
751 d->ui->capNJoinButton->setVisible(lineOptionsVisible);
752 d->ui->lineStyle->setVisible(lineOptionsVisible);
753 d->startMarkerSelector->setVisible(lineOptionsVisible);
754 d->midMarkerSelector->setVisible(lineOptionsVisible);
755 d->endMarkerSelector->setVisible(lineOptionsVisible);
756 d->ui->thicknessLabel->setVisible(lineOptionsVisible);
757 d->ui->strokeStyleLabel->setVisible(lineOptionsVisible);