/*************************************************************************** * Copyright (C) 2003,2005 by David Saxton * * david@bluehaze.org * * * * 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. * ***************************************************************************/ #ifndef PICITEM_H #define PICITEM_H #include "cnitem.h" #include class MicroSettings; class FlowCodeDocument; class PinSettings; /** @short Allows visual setting of pin type/state @author David Saxton */ class PinItem : public QObject, public QCanvasRectangle { Q_OBJECT public: PinItem( FlowCodeDocument* _view, QPoint position, bool _onLeft, PinSettings *_pinSettings ); int rtti() const; QRect boundingRect () const; void switchState(); QString id(); /** * Called from ICNDocument when the pin item was dragged */ void dragged( int dx ); virtual void moveBy ( double dx, double dy ); public slots: void updateDrawing(); private: void initItem(); void drawShape( QPainter& p ); void calcTextRect(); FlowCodeDocument *view; // Pointer to canvas view that the component item is currently on bool onLeft; PinSettings * m_pinSettings; QRect m_textRect; QFont m_font; }; typedef QValueList PinItemList; /** Allows visual editing of inital PIC settings @author David Saxton */ class PicItem : public CNItem { Q_OBJECT public: PicItem( ICNDocument *icnDocument, bool newItem, const char *id, MicroSettings *_microSettings ); ~PicItem(); void drawShape( QPainter &p ); virtual void buttonStateChanged( const QString &id, bool state ); virtual bool isMovable() const { return false; } static QString typeString() { return "microitem"; } virtual void updateZ( int baseZ ); protected slots: void slotMicroSettingsDlgAccepted(); protected: void updateVisibility(); MicroSettings *microSettings; PinItemList m_pinItemList; ICNDocument *p_icnDocument; bool m_bExpanded; int m_innerHeight; }; #endif