Logo Search packages:      
Sourcecode: ktechlab version File versions

dptext.cpp

/***************************************************************************
 *   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()
{
}

00073 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 );
}


00100 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 );
}


Generated by  Doxygen 1.6.0   Back to index