Example #1
0
SchemaEditor::SchemaEditor(QWidget *parent, SchemaGui *schemaGui, Engine * engine, PanelScrollView *panelScrollView) :
  Q3CanvasView(schemaGui, parent, NAME.c_str(),0),
  _engine(engine),
  _schemaGui(schemaGui),
  _state(IDLE),
  _zoom(1),
  _activeConnection(0),
  _contextMenuPos(0,0),
  _contextGear(NULL),
  _panelScrollView(panelScrollView),
  _selectBox(NULL)

{
  viewport()->setMouseTracking(TRUE);
  setAcceptDrops(TRUE); 
    
  _contextMenu = new Q3PopupMenu(this);
  _gearListMenu = new GearListMenu(this);    
  _gearListMenu->create();
  
  _contextMenu->insertItem("Gears", _gearListMenu);
  QObject::connect(_gearListMenu, SIGNAL(gearSelected(QString)), this, SLOT(slotMenuGearSelected(QString)));
  
  _metaGearListMenu = new MetaGearListMenu(this);    
  _metaGearListMenu->create();
  
  _contextMenu->insertItem("MetaGears", _metaGearListMenu);
  QObject::connect(_metaGearListMenu, SIGNAL(metaGearSelected(QFileInfo*)), this, SLOT(slotMenuMetaGearSelected(QFileInfo*)));

  _contextMenu->insertItem("New MetaGear", this, SLOT(slotNewMetaGear()));
    
  _gearContextMenu = new Q3PopupMenu(this);
  _gearContextMenu->insertItem("delete",  this, SLOT(slotGearDelete()));
  _gearContextMenu->insertItem("Properties", this, SLOT(slotGearProperties()));
	_gearContextMenu->insertItem("ZoomIn", this, SLOT(zoomIn()));  
	_gearContextMenu->insertItem("ZoomOut", this, SLOT(zoomOut()));  

  _gearContextMenu->insertItem("About");    
  
  _metaGearContextMenu = new Q3PopupMenu(this);
  _metaGearContextMenu->insertItem("delete", this, SLOT(slotGearDelete()),Qt::Key_Delete);
  _metaGearContextMenu->insertItem("Select All", this, SLOT(slotGearSelectAll()),Qt::CTRL + Qt::Key_A);
  _metaGearContextMenu->insertItem("Copy", this, SLOT(slotGearCopy()),Qt::CTRL + Qt::Key_C);
  _metaGearContextMenu->insertItem("Paste", this, SLOT(slotGearPaste()),Qt::CTRL + Qt::Key_V);
  _metaGearContextMenu->insertItem("Properties", this, SLOT(slotGearProperties()));  
  _metaGearContextMenu->insertItem("About");    
  _metaGearContextMenu->insertSeparator();
  _metaGearContextMenu->insertItem("Save MetaGear",  this, SLOT(slotSaveMetaGear()));


  // plug context menu initialization
  _plugContextMenu = new Q3PopupMenu(this);
  _plugContextMenu->insertItem("expose", this, SLOT(slotPlugExpose()),0,EXPOSE);
  _plugContextMenu->insertItem("unexpose", this, SLOT(slotPlugUnexpose()),0,UNEXPOSE);

}
Example #2
0
void SchemaEditor::buildContextMenus()
{
  _contextMenu = new QMenu();
  _gearListMenu = new GearListMenu(_contextMenu);    
  _gearListMenu->create();
  MainWindow* mainWindow = MainWindow::getInstance();

  QMenu* newGearMenu = _contextMenu->addMenu("Add gear");

  QAction * sub = newGearMenu->addMenu(_gearListMenu);
  sub->setText("Gears");
  
  QObject::connect(_gearListMenu, SIGNAL(gearSelected(QString)), this, SLOT(slotMenuGearSelected(QString)));

  _metaGearListMenu = new MetaGearListMenu(_contextMenu);    
  _metaGearListMenu->create();
  
  QAction* mgSubAction = newGearMenu->addMenu(_metaGearListMenu);
  mgSubAction->setText("MetaGears");
  
  QObject::connect(_metaGearListMenu, SIGNAL(metaGearSelected(QFileInfo*)), this, SLOT(slotMenuMetaGearSelected(QFileInfo*)));

  _contextMenu->addAction("New MetaGear", this, SLOT(slotNewMetaGear()));
  _contextMenu->addAction(mainWindow->_actZoomIn);  
	_contextMenu->addAction(mainWindow->_actZoomOut);  
  _contextMenu->addAction(mainWindow->_actSelectAll);
  _contextMenu->addAction(mainWindow->_actDeleteSelected);
  _contextMenu->addAction(mainWindow->_actCopy);
  _contextMenu->addAction(mainWindow->_actPaste);
	
  
  _gearContextMenu = new QMenu();
  _gearContextMenu->addAction("Properties", this, SLOT(slotGearProperties()));

  _gearContextMenu->addAction("About");    
  
  _metaGearContextMenu = new QMenu();
  _metaGearContextMenu->addAction("Properties", this, SLOT(slotGearProperties()));  
  _metaGearContextMenu->addAction("About");    
  _metaGearContextMenu->addSeparator();
  _metaGearContextMenu->addAction("Save MetaGear",  this, SLOT(slotSaveMetaGear()));


  // plug context menu initialization
  _plugContextMenu = new QMenu();
  _exposePlugAction = _plugContextMenu->addAction("Expose", this, SLOT(slotPlugToggleExpose()));

}
Example #3
0
void SchemaEditor::contentsMousePressEvent(QMouseEvent* mouseEvent)
{
  QPoint p = inverseWorldMatrix().map(mouseEvent->pos());
  GearGui *gearGui = _schemaGui->testForGearCollision(p);
  PlugBox *selectedPlugBox;


  if(_state==MOVING_GEAR)
  {
    _state=IDLE;
    return;
  }
  
  if (gearGui!=NULL)
  {    
    //send mouse events
    gearGui->mouseEvent(p, mouseEvent->button());

		//signal
		emit gearSelected(gearGui);

    if (gearGui->titleBarHitted(p))
    {
      // select only the clicked gear
      if(mouseEvent->state()&Qt::ControlModifier || mouseEvent->state()&Qt::ShiftModifier)
        toggleGearSelection(gearGui);
      else if(!gearGui->isSelected())
        selectOneGear(gearGui);
    }

    //on left button we...
    if (mouseEvent->button() == Qt::LeftButton)
    {      
      //plug collision to start connections ?
      if ( ((selectedPlugBox = gearGui->plugHitted(p)) != NULL))
      {        
        _state=CONNECTING;
        _activeConnection = new ConnectionItem(canvas());
        _activeConnection->setSourcePlugBox(selectedPlugBox);
        _activeConnection->show();        

      } else if (gearGui->titleBarHitted(p))
      {
        // start moving it (but only if it has not been unselected, in
        // which case it is weird to move remaining gears.. (well, in my opinion JK)
        if(gearGui->isSelected())
        {
          _state = MOVING_GEAR;            
          _movingGearStartPos = p;            
        }
      }
    }
  } 
  else if (mouseEvent->button() == Qt::LeftButton)
  {
    delete _selectBox;
    _selectBox=NULL;
    unselectAllGears();
    _state = DRAGGING_SELECT_BOX;
    _selectBoxStartPos = p;
  }

}