Esempio n. 1
0
QNEMainWindow::QNEMainWindow(QWidget *parent) :
  QMainWindow(parent) {


  scene = new QGraphicsScene();


  QAction *quitAct = new QAction(tr("&Quit"), this);
  quitAct->setShortcuts(QKeySequence::Quit);
  quitAct->setStatusTip(tr("Quit the application"));
  connect(quitAct, SIGNAL(triggered()), qApp, SLOT(quit()));

  QAction *loadAct = new QAction(tr("&Load"), this);
  loadAct->setShortcuts(QKeySequence::Open);
  loadAct->setStatusTip(tr("Open a file"));
  connect(loadAct, SIGNAL(triggered()), this, SLOT(loadFile()));

  QAction *saveAct = new QAction(tr("&Save"), this);
  saveAct->setShortcuts(QKeySequence::Save);
  saveAct->setStatusTip(tr("Save a file"));
  connect(saveAct, SIGNAL(triggered()), this, SLOT(saveFile()));

  QAction *addAct = new QAction(tr("&Add"), this);
  addAct->setStatusTip(tr("Add a block"));
  connect(addAct, SIGNAL(triggered()), this, SLOT(addBlock()));

  fileMenu = menuBar()->addMenu(tr("&File"));
  fileMenu->addAction(addAct);
  fileMenu->addAction(loadAct);
  fileMenu->addAction(saveAct);
  fileMenu->addSeparator();
  fileMenu->addAction(quitAct);

  setWindowTitle(tr("Node Editor"));



  QDockWidget *dock = new QDockWidget(tr("Nodes"), this);
  dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
  view = new QGraphicsView(dock);
  view->setScene(scene);

  view->setRenderHint(QPainter::Antialiasing, true);

  dock->setWidget(view);
  addDockWidget(Qt::LeftDockWidgetArea, dock);








  nodesEditor = new QNodesEditor(this);
  nodesEditor->install(scene);


  QNEBlock *b = new QNEBlock(0);
  scene->addItem(b);
  b->addPort("test", 0, QNEPort::NamePort);
  b->addPort("TestBlock", 0, QNEPort::TypePort);
  b->addInputPort("in1");
  b->addInputPort("in2");
  b->addInputPort("in3");
  b->addOutputPort("out1");
  b->addOutputPort("out2");
  b->addOutputPort("out3");

  b = b->clone();
  b->setPos(150, 0);

  b = b->clone();
  b->setPos(150, 150);
}
Esempio n. 2
0
void QNodesEditor::addBlock(BlockType type, int x, int y)
{
	static int id_count = 0;

	QNEBlock *block = nullptr;

	if(type == ImageIn)
	{
		QNEBlock *imgIn = new QNEBlock;
		scene->addItem(imgIn);
		imgIn->addPort(tr("Image In"), 0, QNEPort::NamePort);
		imgIn->addPort(" ", 0, QNEPort::TypePort);
		imgIn->addOutputPort("out [img]");
		imgIn->setPos(x, y);

		imgIn->setID(id_count);
		imgIn->setType(ImageIn);
		id_count++;

		block = imgIn;
	}
	else if(type == ImageDisplay)
	{
		QNEBlock *imgDisp = new QNEBlock;
		scene->addItem(imgDisp);
		imgDisp->addPort(tr("Display Image"), 0, QNEPort::NamePort);
		imgDisp->addPort(" ", 0, QNEPort::TypePort);
		imgDisp->addInputPort("in [img]");
		imgDisp->setPos(x, y);

		imgDisp->setID(id_count);
		imgDisp->setType(ImageDisplay);
		id_count++;

		block = imgDisp;
	}
	else if(type == GaussianBlur)
	{
		QNEBlock *gaussianBlur = new QNEBlock;
		scene->addItem(gaussianBlur);
		gaussianBlur->addPort(tr("Gaussian Blur"), 0, QNEPort::NamePort);
		gaussianBlur->addPort(" ", 0, QNEPort::TypePort);
		gaussianBlur->addInputPort("in [img]");
		gaussianBlur->addInputPort("kernel width [uint]");
		gaussianBlur->addInputPort("kernel height [uint]");
		gaussianBlur->addPort("", 0, QNEPort::TypePort);
		gaussianBlur->addOutputPort("out [img]");
		gaussianBlur->setPos(x, y);

		gaussianBlur->setID(id_count);
		gaussianBlur->setType(GaussianBlur);
		id_count++;

		block = gaussianBlur;
	}
	else if(type == Number)
	{
		QNENumberBlock *number = new QNENumberBlock;
		scene->addItem(number);
		number->initialize(/*this*/);
		number->setPos(x, y);

		number->setID(id_count);
		number->setType(Number);
		id_count++;

		block = number;
	}

	if(block != nullptr) // Check if an item was actually added
	{
		for(INodesEditorListener *listener : listeners)
		{
			listener->nodeAdded(block);
		}
	}
}