summaryrefslogtreecommitdiffstats
path: root/kdevdesigner/designer/connectionitems.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdevdesigner/designer/connectionitems.h')
-rw-r--r--kdevdesigner/designer/connectionitems.h220
1 files changed, 220 insertions, 0 deletions
diff --git a/kdevdesigner/designer/connectionitems.h b/kdevdesigner/designer/connectionitems.h
new file mode 100644
index 00000000..2442e475
--- /dev/null
+++ b/kdevdesigner/designer/connectionitems.h
@@ -0,0 +1,220 @@
+/**********************************************************************
+** Copyright (C) 2002 Trolltech AS. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
+** licenses may use this file in accordance with the Qt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+** See http://www.trolltech.com/pricing.html or email [email protected] for
+** information about Qt Commercial License Agreements.
+**
+** Contact [email protected] if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef CONNECTIONITEMS_H
+#define CONNECTIONITEMS_H
+
+class FormWindow;
+
+#include <qtable.h>
+
+class SenderItem;
+class ReceiverItem;
+class SignalItem;
+class SlotItem;
+class ConnectionContainer;
+
+
+class ConnectionItem : public QObject,
+ public QComboTableItem
+{
+ Q_OBJECT
+
+public:
+ ConnectionItem( QTable *table, FormWindow *fw );
+
+ void paint( QPainter *p, const QColorGroup &cg,
+ const QRect &cr, bool selected );
+
+ void setSender( SenderItem *i );
+ void setReceiver( ReceiverItem *i );
+ void setSignal( SignalItem *i );
+ void setSlot( SlotItem *i );
+ void setConnection( ConnectionContainer *c );
+
+public slots:
+ virtual void senderChanged( QObject *sender );
+ virtual void receiverChanged( QObject *receiver );
+ virtual void signalChanged( const QString &sig );
+ virtual void slotChanged( const QString &slot );
+
+signals:
+ void changed();
+
+protected:
+ FormWindow *formWindow;
+
+private:
+ ConnectionContainer *conn;
+
+};
+
+// ------------------------------------------------------------------
+
+class SenderItem : public ConnectionItem
+{
+ Q_OBJECT
+
+public:
+ SenderItem( QTable *table, FormWindow *fw );
+ QWidget *createEditor() const;
+ void setSenderEx( QObject *sender );
+
+signals:
+ void currentSenderChanged( QObject *sender );
+
+private slots:
+ void senderChanged( const QString &sender );
+
+};
+
+// ------------------------------------------------------------------
+
+class ReceiverItem : public ConnectionItem
+{
+ Q_OBJECT
+
+public:
+ ReceiverItem( QTable *table, FormWindow *fw );
+ QWidget *createEditor() const;
+ void setReceiverEx( QObject *receiver );
+
+signals:
+ void currentReceiverChanged( QObject *receiver );
+
+private slots:
+ void receiverChanged( const QString &receiver );
+
+};
+
+// ------------------------------------------------------------------
+
+class SignalItem : public ConnectionItem
+{
+ Q_OBJECT
+
+public:
+ SignalItem( QTable *table, FormWindow *fw );
+
+ void senderChanged( QObject *sender );
+ QWidget *createEditor() const;
+
+signals:
+ void currentSignalChanged( const QString & );
+
+};
+
+// ------------------------------------------------------------------
+
+class SlotItem : public ConnectionItem
+{
+ Q_OBJECT
+
+public:
+ SlotItem( QTable *table, FormWindow *fw );
+
+ void receiverChanged( QObject *receiver );
+ void signalChanged( const QString &signal );
+ QWidget *createEditor() const;
+
+ void customSlotsChanged();
+
+signals:
+ void currentSlotChanged( const QString & );
+
+private:
+ void updateSlotList();
+ bool ignoreSlot( const char* slot ) const;
+
+private:
+ QObject *lastReceiver;
+ QString lastSignal;
+
+};
+
+// ------------------------------------------------------------------
+
+class ConnectionContainer : public QObject
+{
+ Q_OBJECT
+
+public:
+ ConnectionContainer( QObject *parent, SenderItem *i1, SignalItem *i2,
+ ReceiverItem *i3, SlotItem *i4, int r )
+ : QObject( parent ), mod( FALSE ), se( i1 ), si( i2 ),
+ re( i3 ), sl( i4 ), rw ( r ) {
+ i1->setConnection( this );
+ i2->setConnection( this );
+ i3->setConnection( this );
+ i4->setConnection( this );
+ connect( i1, SIGNAL( changed() ), this, SLOT( somethingChanged() ) );
+ connect( i2, SIGNAL( changed() ), this, SLOT( somethingChanged() ) );
+ connect( i3, SIGNAL( changed() ), this, SLOT( somethingChanged() ) );
+ connect( i4, SIGNAL( changed() ), this, SLOT( somethingChanged() ) );
+ }
+
+ bool isModified() const { return mod; }
+ void setModified( bool b ) { mod = b; repaint(); }
+ bool isValid() const {
+ return se->currentText()[0] != '<' &&
+ si->currentText()[0] != '<' &&
+ re->currentText()[0] != '<' &&
+ sl->currentText()[0] != '<';
+ }
+
+ void repaint() {
+ se->table()->updateCell( se->row(), se->col() );
+ si->table()->updateCell( si->row(), si->col() );
+ re->table()->updateCell( re->row(), re->col() );
+ sl->table()->updateCell( sl->row(), sl->col() );
+ }
+
+ int row() const { return rw; }
+ void setRow( int r ) { rw = r; }
+
+ SenderItem *senderItem() const { return se; }
+ SignalItem *signalItem() const { return si; }
+ ReceiverItem *receiverItem() const { return re; }
+ SlotItem *slotItem() const { return sl; }
+
+public slots:
+ void somethingChanged() { mod = TRUE; emit changed( this ); }
+
+signals:
+ void changed( ConnectionContainer *c );
+
+private:
+ bool mod;
+ SenderItem *se;
+ SignalItem *si;
+ ReceiverItem *re;
+ SlotItem *sl;
+ int rw;
+
+};
+
+
+#endif