|
- /*
- * Patchbay Canvas engine using QGraphicsView/Scene
- * Copyright (C) 2010-2012 Filipe Coelho <falktx@falktx.com>
- *
- * 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
- * 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.
- *
- * For a full copy of the GNU General Public License see the COPYING file
- */
-
- #ifndef CANVASBOX_H
- #define CANVASBOX_H
-
- #include "patchcanvas.h"
-
- class QGraphicsSceneContextMenuEvent;
- class QGraphicsSceneMouseEvent;
- class QPainter;
-
- START_NAMESPACE_PATCHCANVAS
-
- class AbstractCanvasLine;
- class CanvasBoxShadow;
- class CanvasPort;
- class CanvasIcon;
-
- struct cb_line_t {
- AbstractCanvasLine* line;
- int connection_id;
- };
-
- class CanvasBox : public QGraphicsItem
- {
- public:
- CanvasBox(int group_id, QString group_name, Icon icon, QGraphicsItem* parent=0);
- virtual ~CanvasBox();
-
- int getGroupId();
- QString getGroupName();
- bool isSplitted();
- PortMode getSplittedMode();
-
- int getPortCount();
- QList<int> getPortList();
-
- void setIcon(Icon icon);
- void setSplit(bool split, PortMode mode=PORT_MODE_NULL);
- void setGroupName(QString group_name);
-
- void setShadowOpacity(float opacity);
-
- CanvasPort* addPortFromGroup(int port_id, QString port_name, PortMode port_mode, PortType port_type);
- void removePortFromGroup(int port_id);
- void addLineFromGroup(AbstractCanvasLine* line, int connection_id);
- void removeLineFromGroup(int connection_id);
-
- void checkItemPos();
- void removeIconFromScene();
-
- void updatePositions();
- void repaintLines(bool forced=false);
- void resetLinesZValue();
-
- virtual int type() const;
-
- private:
- int m_group_id;
- QString m_group_name;
-
- int p_width;
- int p_height;
-
- QList<int> m_port_list_ids;
- QList<cb_line_t> m_connection_lines;
-
- QPointF m_last_pos;
- bool m_splitted;
- PortMode m_splitted_mode;
-
- bool m_forced_split;
- bool m_cursor_moving;
- bool m_mouse_down;
-
- QFont m_font_name;
- QFont m_font_port;
-
- CanvasIcon* icon_svg;
- CanvasBoxShadow* shadow;
-
- virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent* event);
- virtual void mousePressEvent(QGraphicsSceneMouseEvent* event);
- virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
- virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* event);
-
- virtual QRectF boundingRect() const;
- virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget);
- };
-
- END_NAMESPACE_PATCHCANVAS
-
- #endif // CANVASBOX_H
|