19#include "kivio_common.h"
20#include "kivio_connector_target.h"
21#include "kivio_shape.h"
22#include "kivio_shape_data.h"
23#include "kivio_sml_stencil.h"
24#include "kivio_sml_stencil_spawner.h"
25#include "kivio_stencil_spawner_set.h"
26#include "kivio_stencil_spawner.h"
27#include "kivio_stencil_spawner_info.h"
31#include <tqiodevice.h>
36#include <tqfileinfo.h>
40KivioSMLStencilSpawner::KivioSMLStencilSpawner( KivioStencilSpawnerSet *p )
41 : KivioStencilSpawner( p ),
44 m_pStencil =
new KivioSMLStencil();
46 m_pTargets =
new TQPtrList<KivioConnectorTarget>;
47 m_pTargets->setAutoDelete(
true);
50KivioSMLStencilSpawner::~KivioSMLStencilSpawner()
64 kdDebug(43000) <<
"* SMLStencilSpawner "<< m_pInfo->id() <<
" deleted" << endl;
67TQDomElement KivioSMLStencilSpawner::saveXML( TQDomDocument &doc )
69 TQDomElement spawnE = doc.createElement(
"KivioSMLStencilSpawner");
71 XmlWriteString( spawnE,
"id", m_pInfo->id() );
76bool KivioSMLStencilSpawner::load(
const TQString &file )
78 TQDomDocument d(
"test");
80 m_filename = TQString(file);
83 if( f.open( IO_ReadOnly )==
false )
85 kdDebug(43000) <<
"KivioSMLStencilSpawner::load() - Error opening stencil: " << file << endl;
102bool KivioSMLStencilSpawner::loadXML(
const TQString &file, TQDomDocument &d )
104 KivioConnectorTarget *pTarget;
106 TQDomElement root = d.documentElement();
108 TQDomNode node = root.firstChild();
111 while( !node.isNull() )
113 nodeName = node.nodeName();
115 if( nodeName.compare(
"KivioSMLStencilSpawnerInfo")==0 )
117 m_pInfo->loadXML( (
const TQDomElement)node.toElement() );
119 else if( nodeName.compare(
"KivioShape")==0 )
123 else if( nodeName.compare(
"Dimensions")==0 )
125 e = node.toElement();
127 m_defWidth = XmlReadFloat( e,
"w", 72.0f );
128 m_defHeight = XmlReadFloat( e,
"h", 72.0f );
130 else if( nodeName.compare(
"KivioConnectorTarget")==0 )
132 pTarget =
new KivioConnectorTarget();
133 pTarget->loadXML( (
const TQDomElement)node.toElement() );
135 m_pStencil->m_pConnectorTargets->append( pTarget );
139 kdDebug(43000) <<
"KivioSMLStencilSpawner::load() - Unknown node " << nodeName <<
" while loading " << file << endl;
142 node = node.nextSibling();
145 pTarget = m_pStencil->m_pConnectorTargets->first();
148 pTarget->setOffsets(pTarget->x() / m_defWidth, pTarget->y() / m_defHeight);
149 m_pTargets->append(pTarget->duplicate());
150 pTarget = m_pStencil->m_pConnectorTargets->next();
154 TQFileInfo finfo(file);
155 TQString pixFile = finfo.dirPath(
true) +
"/" + finfo.baseName() +
".xpm";
157 if(!m_icon.load( pixFile )) {
158 TQString pixFile = finfo.dirPath(
true) +
"/" + finfo.baseName() +
".png";
159 m_icon.load( pixFile );
169void KivioSMLStencilSpawner::loadShape( TQDomNode &shapeNode )
172 KivioShape *pShape = NULL;
173 TQDomElement shapeElement = shapeNode.toElement();
175 t = KivioShapeData::shapeTypeFromString( XmlReadString( shapeElement,
"type",
"None" ) );
179 case KivioShapeData::kstNone:
182 case KivioShapeData::kstArc:
183 pShape = KivioShape::loadShapeArc( shapeElement );
186 case KivioShapeData::kstPie:
187 pShape = KivioShape::loadShapePie( shapeElement );
190 case KivioShapeData::kstLineArray:
191 pShape = KivioShape::loadShapeLineArray( shapeElement );
194 case KivioShapeData::kstPolyline:
195 pShape = KivioShape::loadShapePolyline( shapeElement );
198 case KivioShapeData::kstPolygon:
199 pShape = KivioShape::loadShapePolygon( shapeElement );
202 case KivioShapeData::kstBezier:
203 pShape = KivioShape::loadShapeBezier( shapeElement );
206 case KivioShapeData::kstRectangle:
207 pShape = KivioShape::loadShapeRectangle( shapeElement );
210 case KivioShapeData::kstRoundRectangle:
211 pShape = KivioShape::loadShapeRoundRectangle( shapeElement );
214 case KivioShapeData::kstEllipse:
215 pShape = KivioShape::loadShapeEllipse( shapeElement );
218 case KivioShapeData::kstOpenPath:
219 pShape = KivioShape::loadShapeOpenPath( shapeElement );
222 case KivioShapeData::kstClosedPath:
223 pShape = KivioShape::loadShapeClosedPath( shapeElement );
226 case KivioShapeData::kstTextBox:
227 pShape = KivioShape::loadShapeTextBox( shapeElement );
236 m_pStencil->m_pShapeList->append( pShape );
246KivioStencil *KivioSMLStencilSpawner::newStencil()
248 KivioStencil *pNewStencil = m_pStencil->duplicate();
250 pNewStencil->setSpawner(
this);
252 pNewStencil->setDimensions( m_defWidth, m_defHeight );
KivioShapeType
The possible shape types.