diff options
Diffstat (limited to 'src/drawparts/dptext.cpp')
-rw-r--r-- | src/drawparts/dptext.cpp | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/src/drawparts/dptext.cpp b/src/drawparts/dptext.cpp new file mode 100644 index 0000000..ebb239a --- /dev/null +++ b/src/drawparts/dptext.cpp @@ -0,0 +1,133 @@ +/*************************************************************************** + * Copyright (C) 2003-2005 by David Saxton * + * david@bluehaze.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ + +#include "dptext.h" +#include "itemdocument.h" +#include "libraryitem.h" +#include "resizeoverlay.h" + +#include <kiconloader.h> +#include <klocale.h> +#include <qpainter.h> + +Item* DPText::construct( ItemDocument *itemDocument, bool newItem, const char *id ) +{ + return new DPText( itemDocument, newItem, id ); +} + +LibraryItem* DPText::libraryItem() +{ + QStringList idList; + idList << "dp/text" << "dp/canvas_text" << "canvas_text"; + + return new LibraryItem( + idList, + i18n("Canvas Text"), + i18n("Other"), + KGlobal::iconLoader()->loadIcon( "text", KIcon::Small ), + LibraryItem::lit_drawpart, + DPText::construct ); +} + +DPText::DPText( ItemDocument *itemDocument, bool newItem, const char *id ) + : DrawPart( itemDocument, newItem, (id) ? id : "canvas_text" ) +{ + m_rectangularOverlay = new RectangularOverlay(this); + m_name = i18n("Text"); + m_desc = i18n("Doubleclick the Text Item to set the text"); + + createProperty( "text", Variant::Type::Multiline ); + property("text")->setValue( i18n("Text") ); + + createProperty( "background", Variant::Type::Bool ); + property("background")->setValue(false); + property("background")->setCaption( i18n("Display Background") ); + property("background")->setAdvanced(true); + + createProperty( "background-color", Variant::Type::Color ); + property("background-color")->setValue(Qt::white); + property("background-color")->setCaption( i18n("Background Color") ); + property("background-color")->setAdvanced(true); + + createProperty( "frame-color", Variant::Type::Color ); + property("frame-color")->setValue(Qt::black); + property("frame-color")->setCaption( i18n("Frame Color") ); + property("frame-color")->setAdvanced(true); + + createProperty( "text-color", Variant::Type::Color ); + property("text-color")->setValue(Qt::black); + property("text-color")->setCaption( i18n("Text Color") ); +} + +DPText::~DPText() +{ +} + +void DPText::setSelected( bool yes ) +{ + if ( yes == isSelected() ) + return; + + DrawPart::setSelected(yes); + m_rectangularOverlay->showResizeHandles(yes); +} + + +void DPText::dataChanged() +{ + m_caption = dataString("text"); + b_displayBackground = dataBool("background"); + m_backgroundColor = dataColor("background-color"); + m_textColor = dataColor("text-color"); + m_frameColor = dataColor("frame-color"); + update(); +} + + +void DPText::postResize() +{ + setItemPoints( QPointArray(m_sizeRect), false ); +} + + +QSize DPText::minimumSize() const +{ + return QSize( 48, 24 ); +} + + +void DPText::drawShape( QPainter &p ) +{ + QRect bound = m_sizeRect; + bound.setWidth( bound.width()-2 ); + bound.setHeight( bound.height()-2 ); + bound.moveBy( int(x()+1), int(y()+1) ); + + if (b_displayBackground) + { + p.save(); + p.setPen( QPen( m_frameColor, 1, Qt::DotLine) ); + p.setBrush(m_backgroundColor); + p.drawRect(bound); + p.restore(); + } + + const int pad = 6; + + bound.setLeft( bound.left()+pad ); + bound.setTop( bound.top()+pad ); + bound.setRight( bound.right()-pad ); + bound.setBottom( bound.bottom()-pad ); + + p.setPen(m_textColor); + p.setFont( font() ); + p.drawText( bound, (Qt::WordBreak | Qt::AlignHCenter | Qt::AlignVCenter), m_caption ); +} + |