PARP Research Group University of Murcia, Spain


src/qvgui/qvdesigner/slate/groupnode.h

00001 /*
00002  *      Copyright (C) 2008, 2009. PARP Research Group.
00003  *      <http://perception.inf.um.es>
00004  *      University of Murcia, Spain.
00005  *
00006  *      This file is part of the QVision library.
00007  *
00008  *      QVision is free software: you can redistribute it and/or modify
00009  *      it under the terms of the GNU Lesser General Public License as
00010  *      published by the Free Software Foundation, version 3 of the License.
00011  *
00012  *      QVision is distributed in the hope that it will be useful,
00013  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  *      GNU Lesser General Public License for more details.
00016  *
00017  *      You should have received a copy of the GNU Lesser General Public
00018  *      License along with QVision. If not, see <http://www.gnu.org/licenses/>.
00019  */
00020 
00021 
00022 #ifndef GROUPNODE_H
00023 #define GROUPNODE_H
00024 
00025 #include "node.h"
00026 
00027 #define SUBSCALE 0.3
00028 
00029 #ifndef DOXYGEN_IGNORE_THIS
00030 
00031 class GroupNode : public Node
00032 {
00033 public:
00034     GroupNode(QString _name, SlateWindow *wind, QGraphicsItem * parent = 0, QGraphicsScene * scene = 0);
00035     ~GroupNode();
00036 
00037     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
00038     void addNode(Node *node);
00039         void updateLinksPos();
00040     void removeLink(Link *link);
00041         GroupInfo getInfo();
00042         void abstractView(bool mode);
00043 
00044 protected:
00045     void paintProps(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
00046     void paintGroup(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
00047     void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
00048         void drawCurvArrow(const QRectF rectangle, QPainter *painter);
00049         void changeLinkToGroup(Link *link, bool toNode /* si el nodo que se incluye es el toNode del link */);
00050     QRectF outlineRect() const;
00051         void setHide(bool hide);
00052 
00053         bool abstractPaint; // el primero indica el modo en que se pinta (influye el nivel de zoom), el segundo si el zoom paso el umbral
00054         QMap<Link *, Link *> internalLinks; // los links externos asociados, indexados por su link interno del grupo
00055 
00056         static uint maxId;
00057         static uint getNewId() { return ++maxId; }
00058 };
00059 
00060 #endif
00061 #endif



QVision framework. PARP research group, copyright 2007, 2008.