You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ktechlab/src/drawparts/dptext.cpp

134 lines
3.7 KiB

/***************************************************************************
* 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 <tqpainter.h>
Item* DPText::construct( ItemDocument *itemDocument, bool newItem, const char *id )
{
return new DPText( itemDocument, newItem, id );
}
LibraryItem* DPText::libraryItem()
{
TQStringList 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(TQt::white);
property("background-color")->setCaption( i18n("Background Color") );
property("background-color")->setAdvanced(true);
createProperty( "frame-color", Variant::Type::Color );
property("frame-color")->setValue(TQt::black);
property("frame-color")->setCaption( i18n("Frame Color") );
property("frame-color")->setAdvanced(true);
createProperty( "text-color", Variant::Type::Color );
property("text-color")->setValue(TQt::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( TQPointArray(m_sizeRect), false );
}
TQSize DPText::minimumSize() const
{
return TQSize( 48, 24 );
}
void DPText::drawShape( TQPainter &p )
{
TQRect 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( TQPen( m_frameColor, 1, TQt::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, (TQt::WordBreak | TQt::AlignHCenter | TQt::AlignVCenter), m_caption );
}