diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kivio/kiviopart/kiviosdk/kivio_connector_target.cpp | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kivio/kiviopart/kiviosdk/kivio_connector_target.cpp')
-rw-r--r-- | kivio/kiviopart/kiviosdk/kivio_connector_target.cpp | 285 |
1 files changed, 285 insertions, 0 deletions
diff --git a/kivio/kiviopart/kiviosdk/kivio_connector_target.cpp b/kivio/kiviopart/kiviosdk/kivio_connector_target.cpp new file mode 100644 index 00000000..60fe0316 --- /dev/null +++ b/kivio/kiviopart/kiviosdk/kivio_connector_target.cpp @@ -0,0 +1,285 @@ +/* + * Kivio - Visual Modelling and Flowcharting + * Copyright (C) 2000-2001 theKompany.com & Dave Marotti + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "kivio_common.h" +#include "kivio_connector_point.h" +#include "kivio_connector_target.h" +#include "kivio_point.h" +#include "kivio_stencil.h" +#include "kivio_intra_stencil_data.h" + +#include <kdebug.h> + +KivioConnectorTarget::KivioConnectorTarget() + : m_pConnectors(NULL) +{ + m_position.setX( 0.0f ); + m_position.setY( 0.0f ); + m_pConnectors = new QPtrList<KivioConnectorPoint>; + m_pConnectors->setAutoDelete(false); + m_id = -1; + m_xOffset = m_yOffset = 0; +} + +KivioConnectorTarget::KivioConnectorTarget(double x, double y) +{ + m_position.setX( x ); + m_position.setY( y ); + m_pConnectors = new QPtrList<KivioConnectorPoint>; + m_pConnectors->setAutoDelete(false); + + m_id = -1; + m_xOffset = m_yOffset = 0; +} + +KivioConnectorTarget::KivioConnectorTarget(double x, double y, double xOffset, double yOffset) +{ + m_position.setX( x ); + m_position.setY( y ); + m_pConnectors = new QPtrList<KivioConnectorPoint>; + m_pConnectors->setAutoDelete(false); + + m_id = -1; + setOffsets(xOffset, yOffset); +} + +/** + * Duplicates this target. + * + * Duplicates this target, only the position. The connections + * are not preserved. + */ +KivioConnectorTarget *KivioConnectorTarget::duplicate() +{ + KivioConnectorTarget *pTarget = new KivioConnectorTarget( m_position.x(), m_position.y(), m_xOffset, m_yOffset ); + + return pTarget; +} + + +/** + * Kill this object and disconnects all KivioConnectorPoints from this. + * + * This is a slightly odd function in that it does not call the disconnect() method + * of KivioConnectorPoint. The reason for this is that FIX ME DAVE! + */ +KivioConnectorTarget::~KivioConnectorTarget() +{ + // Iterate through all connectors diconnecting them from this + KivioConnectorPoint *point; + + if( m_pConnectors ) + { + point = m_pConnectors->first(); + point = m_pConnectors->take(); + + while( point ) + { + kdDebug(43000) << "KivioConnectorTarget:: -> diconnecting" << endl; + + // Disconnect the point. But tell the point to not call + // KivioConnectorTarget::removeConnectorFromList() because it will cause our + // position in the list to be screwed up. + point->disconnect( false ); + + point = m_pConnectors->take(); + } + + delete m_pConnectors; + m_pConnectors = NULL; + } +} + + +/** + * Loads this object from an XML file. + */ +bool KivioConnectorTarget::loadXML( const QDomElement &e ) +{ + if( e.tagName().compare( "KivioConnectorTarget" ) != 0 ) + { + kdDebug(43000) << "Attempted to load KivioConnectorTarget from non-KivioConnectorTarget element" << endl; + return false; + } + + m_position.setX(XmlReadFloat( e, "x", 1.0f )); + m_position.setY(XmlReadFloat( e, "y", 1.0f )); + + m_id = XmlReadInt( e, "id", -1 ); + + return true; +} + + +/** + * Saves this object to an XML file. + */ +QDomElement KivioConnectorTarget::saveXML( QDomDocument &doc ) +{ + QDomElement e; + + e = doc.createElement("KivioConnectorTarget"); + + XmlWriteFloat( e, "x", m_position.x() ); + XmlWriteFloat( e, "y", m_position.y() ); + + if( m_id != -1 ) + XmlWriteInt( e, "id", m_id ); + + return e; +} + + +/** + * Adds a KivioConnectorPoint to the list of connections. + */ +void KivioConnectorTarget::addConnectorPointToList( KivioConnectorPoint *p ) +{ + if( p ) + m_pConnectors->append(p); +} + + +/** + * Removes a KivioConnectorPoint from the list of connections. + * + * Removes a KivioConnectorPoint from the list of connections. Note, it does + * not disconnect the point on the KivioConnectorPoint side. This function + * is mainly used by KivioConnectorPoint, and probably shouldn't be used by + * anything/one else unless you really know what you are doing. + */ +bool KivioConnectorTarget::removeConnectorPointFromList( KivioConnectorPoint *p ) +{ + if( !p ) + return false; + + + return m_pConnectors->remove(p); +} + + +/** + * Sets a new position and updates all connected points. + */ +void KivioConnectorTarget::setX( float _x ) +{ + m_position.setX(_x); + + KivioConnectorPoint *pPoint = m_pConnectors->first(); + while( pPoint ) + { + pPoint->setX( _x, true ); + + pPoint = m_pConnectors->next(); + } +} + + +/** + * Sets a new position and updates all connected points. + */ + +void KivioConnectorTarget::setY( float _y ) +{ + m_position.setY(_y); + + KivioConnectorPoint *pPoint = m_pConnectors->first(); + while( pPoint ) + { + pPoint->setY( _y, true ); + + pPoint = m_pConnectors->next(); + } +} + + +/** + * Sets a new position and updates all connected points. + */ + +void KivioConnectorTarget::setPosition( float _x, float _y ) +{ + m_position.setX( _x ); + m_position.setY( _y ); + + KivioConnectorPoint *pPoint = m_pConnectors->first(); + while( pPoint ) + { + pPoint->setPosition( _x, _y, true ); + + pPoint = m_pConnectors->next(); + } +} + + +/** + * Issues paintOutline requests to all connected stencils. + */ +void KivioConnectorTarget::paintOutline( KivioIntraStencilData *pData ) +{ + KivioConnectorPoint *pPoint; + KivioStencil *pStencil; + + pPoint = m_pConnectors->first(); + while( pPoint ) + { + pStencil = pPoint->stencil(); + + if( pStencil ) + pStencil->paintOutline( pData ); + + pPoint = m_pConnectors->next(); + } +} + + +/** + * Tests is this target has any connections. + */ +bool KivioConnectorTarget::hasConnections() +{ + KivioConnectorPoint *pPoint = m_pConnectors->first(); + + if( pPoint ) + return true; + + return false; +} + + +/** + * Sets this target's unique ID, for generateIds() during a saveXML(). + */ +void KivioConnectorTarget::setId( int i ) +{ + KivioConnectorPoint *pPoint = m_pConnectors->first(); + m_id= i; + + while( pPoint ) + { + pPoint->setTargetId( i ); + + pPoint = m_pConnectors->next(); + } +} + +void KivioConnectorTarget::setOffsets(double x, double y) +{ + m_xOffset = x; + m_yOffset = y; +} |