canvasitemparts.h

00001 /***************************************************************************
00002  *   Copyright (C) 2003-2005 by David Saxton                               *
00003  *   david@bluehaze.org                                                    *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  ***************************************************************************/
00010 
00011 #ifndef CANVASITEMPARTS_H
00012 #define CANVASITEMPARTS_H
00013 
00014 #include <qcanvas.h>
00015 #include <qguardedptr.h>
00016 #include <qslider.h>
00017 #include <qtoolbutton.h>
00018 
00019 class Cells;
00020 class CIWidgetMgr;
00021 class CNItem;
00022 class SliderWidget;
00023 class ToolButton;
00024 class QString;
00025 
00026 class GuiPart : public QObject, public QCanvasRectangle
00027 {
00028         Q_OBJECT
00029         public:
00035                 GuiPart( CNItem *parent, const QRect & r, QCanvas * canvas );
00036                 virtual ~GuiPart();
00037                 
00038                 virtual QRect recommendedRect() const { return m_originalRect; }
00039                 void setOriginalRect( const QRect & r ) { m_originalRect = r; }
00040                 
00041                 virtual void updateConnectorPoints( bool add );
00042                 
00050                 void setAngleDegrees( int angleDegrees );
00055                 void setGuiPartSize( int width, int height );
00060                 QRect drawRect();
00061                 
00062                 int angleDegrees() const { return m_angleDegrees; }
00063                 CNItem *parent() const { return p_parent; }
00064         
00065         protected:
00069                 virtual void posChanged() {;}
00074                 void initPainter( QPainter & p );
00079                 void deinitPainter( QPainter & p );
00080                 int m_angleDegrees;
00081                 CNItem *p_parent;
00082                 bool b_pointsAdded;
00083                 QRect m_originalRect;
00084                 
00085         private slots:
00086                 void slotMoveBy( double dx, double dy );
00087 };
00088 
00089 
00094 class Text : public GuiPart
00095 {
00096         Q_OBJECT
00097         public:
00098                 Text( const QString &text, CNItem *parent, const QRect & r, QCanvas * canvas, int flags = Qt::AlignHCenter | Qt::AlignVCenter );
00099                 ~Text();
00100                 
00105                 bool setText( const QString & text );
00106                 virtual QRect recommendedRect() const;
00107                 virtual void drawShape ( QPainter & p );
00112                 int flags() const { return m_flags; }
00116                 void setFlags( int flags );
00117                 
00118         protected:
00119                 QString m_text;
00120                 int m_flags;
00121 };
00122 typedef QMap<QString, QGuardedPtr<Text> > TextMap;
00123 
00124 
00129 class Widget : public GuiPart
00130 {
00131         public:
00132                 Widget( const QString & id, CNItem *parent, const QRect & r, QCanvas * canvas );
00133                 ~Widget();
00134                 
00135                 virtual int rtti() const;
00136                 
00137                 virtual QWidget *widget() const = 0;
00138                 QString id() const { return m_id; }
00139                 
00143                 void setEnabled( bool enabled );
00144                 
00145                 virtual void enterEvent() {};
00146                 virtual void leaveEvent() {};
00147                 
00151                 virtual void mousePressEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00155                 virtual void mouseReleaseEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00159                 virtual void mouseDoubleClickEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00163                 virtual void mouseMoveEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00167                 virtual void wheelEvent( QWheelEvent *e ) { Q_UNUSED(e); }
00168                 
00169                 virtual void drawShape( QPainter &p );
00170         
00171         protected:
00172                 virtual void posChanged();
00173                 QString m_id;
00174 };
00175 
00176 
00177 class ToolButton : public QToolButton
00178 {
00179         public:
00180                 ToolButton( QWidget* parent );
00181                 
00182                 virtual void mousePressEvent( QMouseEvent *e ) { QToolButton::mousePressEvent(e); }
00183                 virtual void mouseReleaseEvent( QMouseEvent *e ) { QToolButton::mouseReleaseEvent(e); }
00184                 virtual void mouseDoubleClickEvent ( QMouseEvent *e ) { QToolButton::mouseDoubleClickEvent(e); }
00185                 virtual void mouseMoveEvent( QMouseEvent *e ) { QToolButton::mouseMoveEvent(e); }
00186                 virtual void wheelEvent( QWheelEvent *e ) { QToolButton::wheelEvent(e); }
00187                 virtual void enterEvent() { QToolButton::enterEvent(0); }
00188                 virtual void leaveEvent() { QToolButton::leaveEvent(0); }
00189                 
00190                 void setAngleDegrees( int angleDegrees ) { m_angleDegrees = angleDegrees; }
00191                 
00192         protected:
00193                 virtual void drawButtonLabel( QPainter * p );
00194                 
00195                 int m_angleDegrees;
00196                 QFont m_font;
00197 };
00198 
00199 
00204 class Button : public Widget
00205 {
00206         Q_OBJECT
00207         public:
00208                 Button( const QString & id, CNItem *parent, bool isToggle, const QRect & r, QCanvas * canvas );
00209                 ~Button();
00210                 
00211                 virtual void mousePressEvent( QMouseEvent *e );
00212                 virtual void mouseReleaseEvent( QMouseEvent *e );
00213                 virtual void enterEvent();
00214                 virtual void leaveEvent();
00215                 
00219                 void setText( const QString &text );
00220                 void setToggle( bool toggle );
00221                 bool isToggle() const { return b_isToggle; }
00222                 virtual QWidget *widget() const;
00223                 bool state() const;
00224                 void setPixmap( const QPixmap & );
00225                 void setState( bool state );
00226                 virtual QRect recommendedRect() const;
00227                 
00228         protected:
00229                 virtual void posChanged();
00230                 
00231         private slots:
00232                 void slotStateChanged();
00233                 
00234         private:
00235                 bool b_isToggle; // i.e. whether it should be depressed when the mouse is released
00236                 ToolButton *m_button;
00237 };
00238         
00239         
00240 class SliderWidget : public QSlider
00241 {
00242         public:
00243                 SliderWidget( QWidget* parent );
00244         
00245                 virtual void mousePressEvent( QMouseEvent *e ) { QSlider::mousePressEvent(e); }
00246                 virtual void mouseReleaseEvent( QMouseEvent *e ) { QSlider::mouseReleaseEvent(e); }
00247                 virtual void mouseDoubleClickEvent ( QMouseEvent *e ) { QSlider::mouseDoubleClickEvent(e); }
00248                 virtual void mouseMoveEvent( QMouseEvent *e ) { QSlider::mouseMoveEvent(e); }
00249                 virtual void wheelEvent( QWheelEvent *e ) { QSlider::wheelEvent(e); }
00250                 virtual void enterEvent() { QSlider::enterEvent(0); }
00251                 virtual void leaveEvent() { QSlider::leaveEvent(0); }
00252 };
00253         
00254         
00259 class Slider : public Widget
00260 {
00261         Q_OBJECT
00262         public:
00263                 Slider( const QString & id, CNItem *parent, const QRect & r, QCanvas * canvas );
00264                 ~Slider();
00265                 
00266                 virtual void mousePressEvent( QMouseEvent *e );
00267                 virtual void mouseReleaseEvent( QMouseEvent *e );
00268                 virtual void mouseDoubleClickEvent ( QMouseEvent *e );
00269                 virtual void mouseMoveEvent( QMouseEvent *e );
00270                 virtual void wheelEvent( QWheelEvent *e );
00271                 virtual void enterEvent();
00272                 virtual void leaveEvent();
00273                 
00274                 virtual QWidget *widget() const;
00275                 int value() const;
00276                 void setValue( int value );
00277                 void setOrientation( Qt::Orientation o );
00278                 
00279         protected:
00280                 virtual void posChanged();
00281                 
00282         private slots:
00283                 void slotValueChanged( int value );
00284                 
00285         private:
00286                 SliderWidget *m_slider;
00287                 Orientation m_orientation;
00288 };
00289         
00290 #endif
00291         

Generated on Tue May 8 17:05:28 2007 for KTechLab by  doxygen 1.5.1