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.
265 lines
6.7 KiB
265 lines
6.7 KiB
/***************************************************************************
|
|
* Copyright (C) 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 "itemdocument.h"
|
|
#include "itemdocumentdata.h"
|
|
#include "drawpart.h"
|
|
#include "variant.h"
|
|
|
|
#include <tdelocale.h>
|
|
#include <tqbitarray.h>
|
|
|
|
DrawPart::DrawPart( ItemDocument *itemDocument, bool newItem, const char *id )
|
|
: Item( itemDocument, newItem, id )
|
|
{
|
|
itemDocument->registerItem(this);
|
|
}
|
|
|
|
|
|
DrawPart::~DrawPart()
|
|
{
|
|
}
|
|
|
|
|
|
int DrawPart::rtti() const
|
|
{
|
|
return ItemDocument::RTTI::DrawPart;
|
|
}
|
|
|
|
|
|
Variant * DrawPart::createProperty( const TQString & id, Variant::Type::Value type )
|
|
{
|
|
if ( type == Variant::Type::PenStyle )
|
|
{
|
|
TQStringList penStyles;
|
|
penStyles << DrawPart::penStyleToName(Qt::SolidLine) << DrawPart::penStyleToName(Qt::DashLine)
|
|
<< DrawPart::penStyleToName(Qt::DotLine) << DrawPart::penStyleToName(Qt::DashDotLine)
|
|
<< DrawPart::penStyleToName(Qt::DashDotDotLine);
|
|
|
|
Variant * v = createProperty( id, Variant::Type::String );
|
|
v->setType( Variant::Type::PenStyle );
|
|
v->setAllowed(penStyles);
|
|
return v;
|
|
}
|
|
|
|
if ( type == Variant::Type::PenCapStyle )
|
|
{
|
|
TQStringList penCapStyles;
|
|
penCapStyles << DrawPart::penCapStyleToName(Qt::FlatCap) << DrawPart::penCapStyleToName(Qt::SquareCap)
|
|
<< DrawPart::penCapStyleToName(Qt::RoundCap);
|
|
|
|
Variant * v = createProperty( id, Variant::Type::String );
|
|
v->setType( Variant::Type::PenCapStyle );
|
|
v->setAllowed(penCapStyles);
|
|
return v;
|
|
}
|
|
|
|
return Item::createProperty( id, type );
|
|
}
|
|
|
|
|
|
Qt::PenStyle DrawPart::getDataPenStyle( const TQString & id )
|
|
{
|
|
return nameToPenStyle( dataString(id) );
|
|
}
|
|
Qt::PenCapStyle DrawPart::getDataPenCapStyle( const TQString & id )
|
|
{
|
|
return nameToPenCapStyle( dataString(id) );
|
|
}
|
|
void DrawPart::setDataPenStyle( const TQString & id, Qt::PenStyle value )
|
|
{
|
|
property(id)->setValue( penStyleToName(value) );
|
|
}
|
|
void DrawPart::setDataPenCapStyle( const TQString & id, Qt::PenCapStyle value )
|
|
{
|
|
property(id)->setValue( penCapStyleToName(value) );
|
|
}
|
|
|
|
|
|
ItemData DrawPart::itemData() const
|
|
{
|
|
ItemData itemData = Item::itemData();
|
|
|
|
const VariantDataMap::const_iterator end = m_variantData.end();
|
|
for ( VariantDataMap::const_iterator it = m_variantData.begin(); it != end; ++it )
|
|
{
|
|
switch( it.data()->type() )
|
|
{
|
|
case Variant::Type::PenStyle:
|
|
itemData.dataString[it.key()] = penStyleToID( nameToPenStyle( it.data()->value().toString() ) );
|
|
break;
|
|
case Variant::Type::PenCapStyle:
|
|
itemData.dataString[it.key()] = penCapStyleToID( nameToPenCapStyle( it.data()->value().toString() ) );
|
|
break;
|
|
case Variant::Type::String:
|
|
case Variant::Type::FileName:
|
|
case Variant::Type::Port:
|
|
case Variant::Type::Pin:
|
|
case Variant::Type::VarName:
|
|
case Variant::Type::Combo:
|
|
case Variant::Type::Select:
|
|
case Variant::Type::Multiline:
|
|
case Variant::Type::Int:
|
|
case Variant::Type::Double:
|
|
case Variant::Type::Color:
|
|
case Variant::Type::Bool:
|
|
case Variant::Type::Raw:
|
|
case Variant::Type::SevenSegment:
|
|
case Variant::Type::KeyPad:
|
|
case Variant::Type::None:
|
|
// All of these are handled by Item
|
|
break;
|
|
}
|
|
}
|
|
|
|
return itemData;
|
|
}
|
|
|
|
|
|
void DrawPart::restoreFromItemData( const ItemData &itemData )
|
|
{
|
|
Item::restoreFromItemData(itemData);
|
|
|
|
const TQStringMap::const_iterator stringEnd = itemData.dataString.end();
|
|
for ( TQStringMap::const_iterator it = itemData.dataString.begin(); it != stringEnd; ++it )
|
|
{
|
|
VariantDataMap::iterator vit = m_variantData.find(it.key());
|
|
if ( vit == m_variantData.end() )
|
|
continue;
|
|
|
|
if ( vit.data()->type() == Variant::Type::PenStyle )
|
|
setDataPenStyle( it.key(), idToPenStyle( it.data() ) );
|
|
|
|
else if ( vit.data()->type() == Variant::Type::PenCapStyle )
|
|
setDataPenCapStyle( it.key(), idToPenCapStyle( it.data() ) );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TQString DrawPart::penStyleToID( Qt::PenStyle style )
|
|
{
|
|
switch (style)
|
|
{
|
|
case Qt::SolidLine:
|
|
return "SolidLine";
|
|
case Qt::NoPen:
|
|
return "NoPen";
|
|
case Qt::DashLine:
|
|
return "DashLine";
|
|
case Qt::DotLine:
|
|
return "DotLine";
|
|
case Qt::DashDotLine:
|
|
return "DashDotLine";
|
|
case Qt::DashDotDotLine:
|
|
return "DashDotDotLine";
|
|
case Qt::MPenStyle:
|
|
default:
|
|
return ""; // ?!
|
|
}
|
|
}
|
|
Qt::PenStyle DrawPart::idToPenStyle( const TQString & id )
|
|
{
|
|
if ( id == "NoPen" )
|
|
return Qt::NoPen;
|
|
if ( id == "DashLine" )
|
|
return Qt::DashLine;
|
|
if ( id == "DotLine" )
|
|
return Qt::DotLine;
|
|
if ( id == "DashDotLine" )
|
|
return Qt::DashDotLine;
|
|
if ( id == "DashDotDotLine" )
|
|
return Qt::DashDotDotLine;
|
|
return Qt::SolidLine;
|
|
}
|
|
TQString DrawPart::penCapStyleToID( Qt::PenCapStyle style )
|
|
{
|
|
switch (style)
|
|
{
|
|
case Qt::FlatCap:
|
|
return "FlatCap";
|
|
case Qt::SquareCap:
|
|
return "SquareCap";
|
|
case Qt::RoundCap:
|
|
return "RoundCap";
|
|
case Qt::MPenCapStyle:
|
|
default:
|
|
return ""; // ?!
|
|
}
|
|
}
|
|
Qt::PenCapStyle DrawPart::idToPenCapStyle( const TQString & id )
|
|
{
|
|
if ( id == "SquareCap" )
|
|
return Qt::SquareCap;
|
|
if ( id == "RoundCap" )
|
|
return Qt::RoundCap;
|
|
return Qt::FlatCap;
|
|
}
|
|
|
|
TQString DrawPart::penStyleToName( Qt::PenStyle style )
|
|
{
|
|
switch (style)
|
|
{
|
|
case Qt::SolidLine:
|
|
return i18n("Solid");
|
|
case Qt::NoPen:
|
|
return i18n("None");
|
|
case Qt::DashLine:
|
|
return i18n("Dash");
|
|
case Qt::DotLine:
|
|
return i18n("Dot");
|
|
case Qt::DashDotLine:
|
|
return i18n("Dash Dot");
|
|
case Qt::DashDotDotLine:
|
|
return i18n("Dash Dot Dot");
|
|
case Qt::MPenStyle:
|
|
default:
|
|
return ""; // ?!
|
|
}
|
|
}
|
|
Qt::PenStyle DrawPart::nameToPenStyle( const TQString & name )
|
|
{
|
|
if ( name == i18n("None") )
|
|
return Qt::NoPen;
|
|
if ( name == i18n("Dash") )
|
|
return Qt::DashLine;
|
|
if ( name == i18n("Dot") )
|
|
return Qt::DotLine;
|
|
if ( name == i18n("Dash Dot") )
|
|
return Qt::DashDotLine;
|
|
if ( name == i18n("Dash Dot Dot") )
|
|
return Qt::DashDotDotLine;
|
|
return Qt::SolidLine;
|
|
}
|
|
TQString DrawPart::penCapStyleToName( Qt::PenCapStyle style )
|
|
{
|
|
switch (style)
|
|
{
|
|
case Qt::FlatCap:
|
|
return i18n("Flat");
|
|
case Qt::SquareCap:
|
|
return i18n("Square");
|
|
case Qt::RoundCap:
|
|
return i18n("Round");
|
|
case Qt::MPenCapStyle:
|
|
default:
|
|
return ""; // ?!
|
|
}
|
|
}
|
|
Qt::PenCapStyle DrawPart::nameToPenCapStyle( const TQString & name )
|
|
{
|
|
if ( name == i18n("Square") )
|
|
return Qt::SquareCap;
|
|
if ( name == i18n("Round") )
|
|
return Qt::RoundCap;
|
|
return Qt::FlatCap;
|
|
}
|
|
|