20#include "KPrPenStyleWidget.h"
23#include "KPrPBPreview.h"
29#include <kcolorbutton.h>
35KPrPenStyleWidget::KPrPenStyleWidget( TQWidget *parent,
const char *name,
const KoPenCmd::Pen &pen,
bool configureLineEnds )
36: TQWidget( parent, name )
39 TQVBoxLayout *layout =
new TQVBoxLayout(
this );
40 layout->addWidget( m_ui =
new PenStyleUI(
this ) );
42 TQSpacerItem* spacer =
new TQSpacerItem( 20, 20, TQSizePolicy::Minimum, TQSizePolicy::Expanding );
43 layout->addItem( spacer );
45 connect( m_ui->colorChooser, TQ_SIGNAL( changed(
const TQColor& ) ),
46 this, TQ_SLOT( slotPenChanged() ) );
48 m_ui->styleCombo->insertItem( i18n(
"No Outline" ) );
49 m_ui->styleCombo->insertItem(
"__________" );
50 m_ui->styleCombo->insertItem(
"__ __ __ __" );
51 m_ui->styleCombo->insertItem(
"_ _ _ _ _ _" );
52 m_ui->styleCombo->insertItem(
"__ _ __ _ __" );
53 m_ui->styleCombo->insertItem(
"__ _ _ __ _" );
55 m_ui->widthInput->setRange( 1, 10, 1,
false);
57 connect( m_ui->styleCombo, TQ_SIGNAL( activated(
int ) ),
58 this, TQ_SLOT( slotPenChanged() ) );
60 connect( m_ui->widthInput, TQ_SIGNAL( valueChanged(
double ) ),
61 this, TQ_SLOT( slotPenChanged() ) );
63 m_ui->lineBeginCombo->insertItem( i18n(
"Normal") );
64 m_ui->lineBeginCombo->insertItem( i18n(
"Arrow") );
65 m_ui->lineBeginCombo->insertItem( i18n(
"Square") );
66 m_ui->lineBeginCombo->insertItem( i18n(
"Circle") );
67 m_ui->lineBeginCombo->insertItem( i18n(
"Line Arrow") );
68 m_ui->lineBeginCombo->insertItem( i18n(
"Dimension Line") );
69 m_ui->lineBeginCombo->insertItem( i18n(
"Double Arrow") );
70 m_ui->lineBeginCombo->insertItem( i18n(
"Double Line Arrow") );
72 connect( m_ui->lineBeginCombo, TQ_SIGNAL( activated(
int ) ),
73 this, TQ_SLOT( slotLineBeginChanged() ) );
75 m_ui->lineEndCombo->insertItem( i18n(
"Normal") );
76 m_ui->lineEndCombo->insertItem( i18n(
"Arrow") );
77 m_ui->lineEndCombo->insertItem( i18n(
"Square") );
78 m_ui->lineEndCombo->insertItem( i18n(
"Circle") );
79 m_ui->lineEndCombo->insertItem( i18n(
"Line Arrow") );
80 m_ui->lineEndCombo->insertItem( i18n(
"Dimension Line") );
81 m_ui->lineEndCombo->insertItem( i18n(
"Double Arrow") );
82 m_ui->lineEndCombo->insertItem( i18n(
"Double Line Arrow") );
84 connect( m_ui->lineEndCombo, TQ_SIGNAL( activated(
int ) ),
85 this, TQ_SLOT( slotLineEndChanged() ) );
87 if ( !configureLineEnds )
88 m_ui->arrowGroup->hide();
95KPrPenStyleWidget::~KPrPenStyleWidget()
101void KPrPenStyleWidget::setPen(
const KoPen &pen )
103 m_ui->colorChooser->setColor( pen.color() );
105 switch ( pen.style() )
108 m_ui->styleCombo->setCurrentItem( 0 );
111 m_ui->styleCombo->setCurrentItem( 1 );
114 m_ui->styleCombo->setCurrentItem( 2 );
117 m_ui->styleCombo->setCurrentItem( 3 );
120 m_ui->styleCombo->setCurrentItem( 4 );
123 m_ui->styleCombo->setCurrentItem( 5 );
129 m_ui->widthInput->setValue( pen.pointWidth() );
130 m_ui->pbPreview->setPen( pen );
134void KPrPenStyleWidget::setLineBegin( LineEnd lb )
136 m_ui->lineBeginCombo->setCurrentItem( (
int)lb );
137 m_ui->pbPreview->setLineBegin( lb );
141void KPrPenStyleWidget::setLineEnd( LineEnd le )
143 m_ui->lineEndCombo->setCurrentItem( (
int)le );
144 m_ui->pbPreview->setLineEnd( le );
148KoPen KPrPenStyleWidget::getKPPen()
const
152 switch ( m_ui->styleCombo->currentItem() )
155 pen.setStyle( TQt::NoPen );
158 pen.setStyle( TQt::SolidLine );
161 pen.setStyle( TQt::DashLine );
164 pen.setStyle( TQt::DotLine );
167 pen.setStyle( TQt::DashDotLine );
170 pen.setStyle( TQt::DashDotDotLine );
174 pen.setColor( m_ui->colorChooser->color() );
175 pen.setPointWidth( m_ui->widthInput->value() );
181LineEnd KPrPenStyleWidget::getLineBegin()
const
183 return (LineEnd) m_ui->lineBeginCombo->currentItem();
187LineEnd KPrPenStyleWidget::getLineEnd()
const
189 return (LineEnd) m_ui->lineEndCombo->currentItem();
193int KPrPenStyleWidget::getPenConfigChange()
const
197 if ( getLineEnd() != m_pen.lineEnd )
198 flags = flags | KoPenCmd::EndLine;
199 if ( getLineBegin() != m_pen.lineBegin )
200 flags = flags | KoPenCmd::BeginLine;
201 if ( getKPPen().color() != m_pen.pen.color() )
202 flags = flags | KoPenCmd::Color;
203 if ( getKPPen().style() != m_pen.pen.style() )
204 flags = flags | KoPenCmd::Style;
205 if ( getKPPen().pointWidth() != m_pen.pen.pointWidth() )
206 flags = flags | KoPenCmd::Width;
212KoPenCmd::Pen KPrPenStyleWidget::getPen()
const
214 KoPenCmd::Pen pen( getKPPen(), getLineBegin(), getLineEnd() );
219void KPrPenStyleWidget::setPen(
const KoPenCmd::Pen &pen )
226void KPrPenStyleWidget::apply()
228 int flags = getPenConfigChange();
230 if ( flags & KoPenCmd::EndLine )
231 m_pen.lineEnd = getLineEnd();
233 if ( flags & KoPenCmd::BeginLine )
234 m_pen.lineBegin = getLineBegin();
236 if ( flags & KoPenCmd::Color )
237 m_pen.pen.setColor( getKPPen().color() );
239 if ( flags & KoPenCmd::Style )
240 m_pen.pen.setStyle( getKPPen().style() );
242 if ( flags & KoPenCmd::Width )
243 m_pen.pen.setPointWidth( getKPPen().pointWidth() );
247void KPrPenStyleWidget::slotReset()
250 m_ui->widthLabel->setEnabled( m_pen.pen.style() != NoPen );
251 m_ui->widthInput->setEnabled( m_pen.pen.style() != NoPen );
253 setLineBegin( m_pen.lineBegin );
254 setLineEnd( m_pen.lineEnd );
258void KPrPenStyleWidget::slotPenChanged()
260 KoPen pen = getKPPen();
261 m_ui->widthLabel->setEnabled( pen.style() != NoPen );
262 m_ui->widthInput->setEnabled( pen.style() != NoPen );
263 m_ui->pbPreview->setPen( pen );
267void KPrPenStyleWidget::slotLineBeginChanged()
269 m_ui->pbPreview->setLineBegin( getLineBegin() );
273void KPrPenStyleWidget::slotLineEndChanged()
275 m_ui->pbPreview->setLineEnd( getLineEnd() );
278#include "KPrPenStyleWidget.moc"