summaryrefslogtreecommitdiffstats
path: root/kivio/kiviopart/kiviosdk/kivio_connector_target.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kivio/kiviopart/kiviosdk/kivio_connector_target.cpp
downloadkoffice-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.cpp285
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;
+}