//Copyright (C) 2006 Dominic Letourneau (Dominic.Letourneau@USherbrooke.ca)
#ifndef _QTNETWORK_H_
#define _QTNETWORK_H_
#include <QtGui/QGraphicsView>
#include <map>
#include <QMenu>
namespace FD
{
//forward declaration
class QtNode;
class QtLink;
class QtTerminal;
class UINetworkController;
class UINode;
class UINodeController;
class UILink;
class UILinkController;
class QtNetwork : public QGraphicsView
{
Q_OBJECT;
public:
QtNetwork(UINetworkController *uiNetwork);
const std::string getName() const;
//Node
QtNode* addNode(UINodeController* node);
void removeNode(QtNode* node);
//Link
QtLink* addLink(QtTerminal *source, QtTerminal *dest, UILinkController* link);
void addQtLink(QtLink *link);
void removeLink(QtLink* link);
protected:
void mouseMoveEvent ( QMouseEvent * e );
void keyPressEvent(QKeyEvent *event);
void wheelEvent(QWheelEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
QContextMenuEvent *m_contextMenuEvent;
QMenu* menu;
// void mouseReleaseEvent(QMouseEvent *event);
// void drawBackground(QPainter *painter, const QRectF &rect);
void scaleView(qreal scaleFactor);
UINetworkController *m_uiNetwork;
//std::vector<QtNode*> m_nodes;
//std::vector<QtLink*> m_links;
//std::map<UINodeController*,QtNode*> m_nodeMap;
std::map<QtNode*, UINodeController*> m_nodeMap;
//std::map<UILink*,QtLink*> m_linkMap;
std::map<QtLink*, UILinkController*> m_linkMap;
bool isNodeExist(const QString &name);
//Drag & Drop
void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dropEvent(QDropEvent *event);
protected slots:
void menuTriggered(QAction* action);
};
}//namespace FD
#endif
syntax highlighted by Code2HTML, v. 0.9.1