ccGraphicalSegmentationTool::ccGraphicalSegmentationTool(QWidget* parent) : ccOverlayDialog(parent) , Ui::GraphicalSegmentationDlg() , m_somethingHasChanged(false) , m_state(0) , m_segmentationPoly(0) , m_polyVertices(0) , m_rectangularSelection(false) , m_deleteHiddenParts(false) { // Set QDialog background as transparent (DGM: doesn't work over an OpenGL context) //setAttribute(Qt::WA_NoSystemBackground); setupUi(this); setWindowFlags(Qt::FramelessWindowHint | Qt::Tool); connect(inButton, SIGNAL(clicked()), this, SLOT(segmentIn())); connect(outButton, SIGNAL(clicked()), this, SLOT(segmentOut())); connect(razButton, SIGNAL(clicked()), this, SLOT(reset())); connect(validButton, SIGNAL(clicked()), this, SLOT(apply())); connect(validAndDeleteButton, SIGNAL(clicked()), this, SLOT(applyAndDelete())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel())); connect(pauseButton, SIGNAL(toggled(bool)), this, SLOT(pauseSegmentationMode(bool))); //selection modes connect(actionSetPolylineSelection, SIGNAL(triggered()), this, SLOT(doSetPolylineSelection())); connect(actionSetRectangularSelection, SIGNAL(triggered()), this, SLOT(doSetRectangularSelection())); //import/export options connect(actionUseExistingPolyline, SIGNAL(triggered()), this, SLOT(doActionUseExistingPolyline())); connect(actionExportSegmentationPolyline, SIGNAL(triggered()), this, SLOT(doExportSegmentationPolyline())); //add shortcuts addOverridenShortcut(Qt::Key_Space); //space bar for the "pause" button addOverridenShortcut(Qt::Key_Escape); //escape key for the "cancel" button addOverridenShortcut(Qt::Key_Return); //return key for the "apply" button addOverridenShortcut(Qt::Key_Delete); //delete key for the "apply and delete" button addOverridenShortcut(Qt::Key_Tab); //tab key to switch between rectangular and polygonal selection modes addOverridenShortcut(Qt::Key_I); //'I' key for the "segment in" button addOverridenShortcut(Qt::Key_O); //'O' key for the "segment out" button connect(this, SIGNAL(shortcutTriggered(int)), this, SLOT(onShortcutTriggered(int))); QMenu* selectionModeMenu = new QMenu(this); selectionModeMenu->addAction(actionSetPolylineSelection); selectionModeMenu->addAction(actionSetRectangularSelection); selectionModelButton->setDefaultAction(actionSetPolylineSelection); selectionModelButton->setMenu(selectionModeMenu); QMenu* importExportMenu = new QMenu(this); importExportMenu->addAction(actionUseExistingPolyline); importExportMenu->addAction(actionExportSegmentationPolyline); loadSaveToolButton->setMenu(importExportMenu); m_polyVertices = new ccPointCloud("vertices"); m_segmentationPoly = new ccPolyline(m_polyVertices); m_segmentationPoly->setForeground(true); m_segmentationPoly->setColor(ccColor::green); m_segmentationPoly->showColors(true); m_segmentationPoly->set2DMode(true); allowPolylineExport(false); }
ccGraphicalSegmentationTool::ccGraphicalSegmentationTool(QWidget* parent) : QDialog(parent) , Ui::GraphicalSegmentationDlg() , m_somethingHasChanged(false) , m_state(0) , m_segmentationPoly(0) , m_polyVertices(0) , m_associatedWin(0) , m_rectangularSelection(false) , m_deleteHiddenPoints(false) { // Set QDialog background as transparent (DGM: doesn't work over an OpenGL context) //setAttribute(Qt::WA_NoSystemBackground); setupUi(this); setWindowFlags(Qt::FramelessWindowHint | Qt::Tool); connect(inButton, SIGNAL(clicked()), this, SLOT(segmentIn())); connect(outButton, SIGNAL(clicked()), this, SLOT(segmentOut())); connect(razButton, SIGNAL(clicked()), this, SLOT(reset())); connect(validButton, SIGNAL(clicked()), this, SLOT(apply())); connect(validAndDeleteButton, SIGNAL(clicked()), this, SLOT(applyAndDelete())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel())); connect(pauseButton, SIGNAL(toggled(bool)), this, SLOT(pauseSegmentationMode(bool))); //selection modes connect(actionSetPolylineSelection, SIGNAL(triggered()), this, SLOT(doSetPolylineSelection())); connect(actionSetRectangularSelection, SIGNAL(triggered()), this, SLOT(doSetRectangularSelection())); QMenu* selectionModeMenu = new QMenu(this); selectionModeMenu->addAction(actionSetPolylineSelection); selectionModeMenu->addAction(actionSetRectangularSelection); selectionModelButton->setDefaultAction(actionSetPolylineSelection); selectionModelButton->setMenu(selectionModeMenu); m_polyVertices = new ccPointCloud(); m_segmentationPoly = new ccPolyline(m_polyVertices); m_segmentationPoly->setForeground(true); m_segmentationPoly->setColor(ccColor::green); m_segmentationPoly->showColors(true); m_segmentationPoly->set2DMode(true); }
void ccGraphicalSegmentationTool::onShortcutTriggered(int key) { switch(key) { case Qt::Key_Space: pauseButton->toggle(); return; case Qt::Key_I: inButton->click(); return; case Qt::Key_O: outButton->click(); return; case Qt::Key_Return: validButton->click(); return; case Qt::Key_Delete: validAndDeleteButton->click(); return; case Qt::Key_Escape: cancelButton->click(); return; case Qt::Key_Tab: if (m_rectangularSelection) doSetPolylineSelection(); else doSetRectangularSelection(); return; default: //nothing to do break; } }