void GeneralTreeBrowser::contextMenuEvent(QContextMenuEvent *evt) { QtBrowserItem *citem = currentItem(); if(citem == 0) return; CBaseEditor *e = OgitorsRoot::getSingletonPtr()->GetSelection()->getAsSingle(); LastProperty = static_cast<GeneralPropertiesViewWidget*>(parent())->getOgitorProperty(citem->property()); if(!LastProperty) LastPropertyName = citem->property()->propertyName(); else LastPropertyName = LastProperty->getName().c_str(); if(e != 0) { UTFStringVector menuList; e->getPropertyContextMenu(LastPropertyName.toStdString(), menuList); if(menuList.size() > 0) { UTFStringVector vList; int counter = 0; QMenu* contextMenu = new QMenu(this); QSignalMapper *signalMapper = new QSignalMapper(this); for(unsigned int i = 0;i < menuList.size();i++) { OgitorsUtils::ParseUTFStringVector(menuList[i], vList); if(vList.size() > 0 && vList[0] != "") { QAction *item = contextMenu->addAction( ConvertToQString(vList[0]), signalMapper, SLOT(map()), 0); if(vList.size() > 1) item->setIcon(QIcon(ConvertToQString(vList[1]))); signalMapper->setMapping(item, i); counter++; } } if(counter) { connect(signalMapper, SIGNAL(mapped( int )), this, SLOT(contextMenu( int ))); contextMenu->exec(QCursor::pos()); } delete contextMenu; delete signalMapper; }