/*************************************************************************** * 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 #include 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; }