void GcWindow::setDragState(DragState d) { dragState = d; setProperty("gripped", dragState == Move ? true : false); setCursorShape(d); }
void GcOverlayWidget::mousePressEvent(QMouseEvent *e) { position = QPoint(e->globalX()-geometry().x(), e->globalY()-geometry().y()); if (!m_isEditing) return; if (!m_infocus) return; //QWidget::mouseMoveEvent(e); if (!e->buttons() & Qt::LeftButton) { setCursorShape(e->pos()); return; } if(e->button()==Qt::RightButton) { //e->accept(); } }
VisualizationWidget::VisualizationWidget( QWidget* parent /*= 0*/ ) : QWidget(parent) { this->setupUi(this); _interactorStyle = VtkCustomInteractorStyle::New(); vtkWidget->GetRenderWindow()->GetInteractor()->SetInteractorStyle(_interactorStyle); _vtkPickCallback = VtkPickCallback::New(); vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New(); picker->AddObserver(vtkCommand::EndPickEvent, _vtkPickCallback); vtkWidget->GetRenderWindow()->GetInteractor()->SetPicker(picker); vtkRenderWindow* renderWindow = vtkWidget->GetRenderWindow(); renderWindow->StereoCapableWindowOn(); renderWindow->SetStereoTypeToCrystalEyes(); _vtkRender = vtkRenderer::New(); renderWindow->AddRenderer(_vtkRender); _interactorStyle->SetDefaultRenderer(_vtkRender); QSettings settings; _vtkRender->SetBackground(0.0,0.0,0.0); // Create an orientation marker using vtkAxesActor vtkSmartPointer<vtkAxesActor> axesActor = vtkSmartPointer<vtkAxesActor>::New(); vtkOrientationMarkerWidget* markerWidget = vtkOrientationMarkerWidget::New(); markerWidget->SetOrientationMarker(axesActor); //markerWidget->SetViewport(0.0, 0.0, 0.15, 0.3); // size markerWidget->SetInteractor(vtkWidget->GetRenderWindow()->GetInteractor()); markerWidget->EnabledOn(); markerWidget->InteractiveOff(); _isShowAllOnLoad = settings.value("resetViewOnLoad", true).toBool(); // Set alternate cursor shapes connect(_interactorStyle, SIGNAL(cursorChanged(Qt::CursorShape)), this, SLOT(setCursorShape(Qt::CursorShape))); }
VisualizationWidget::VisualizationWidget( QWidget* parent /*= 0*/ ) : QWidget(parent) { this->setupUi(this); _interactorStyle = VtkCustomInteractorStyle::New(); vtkWidget->GetRenderWindow()->GetInteractor()->SetInteractorStyle(_interactorStyle); _vtkPickCallback = VtkPickCallback::New(); vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New(); picker->AddObserver(vtkCommand::EndPickEvent, _vtkPickCallback); vtkWidget->GetRenderWindow()->GetInteractor()->SetPicker(picker); // BUG Render Window conflicts with VREDs render window #ifndef OGS_VRED_PLUGIN vtkRenderWindow* renderWindow = vtkWidget->GetRenderWindow(); renderWindow->StereoCapableWindowOn(); renderWindow->SetStereoTypeToCrystalEyes(); _vtkRender = vtkRenderer::New(); renderWindow->AddRenderer(_vtkRender); _interactorStyle->SetDefaultRenderer(_vtkRender); #endif // OGS_VRED_PLUGIN QSettings settings("UFZ", "OpenGeoSys-5"); #ifdef OGS_USE_VRPN VtkTrackedCamera* cam = new VtkTrackedCamera(this); _vtkRender->SetActiveCamera(cam); connect( cam, SIGNAL(viewUpdated()), this, SLOT(updateView()) ); //QSpaceNavigatorClient* spacenav = QSpaceNavigatorClient::Instance(); //spacenav->init("spacenav@localhost", 1000 / 15, SpaceNavigatorClient::Z); //cam->setFocalPoint(0, 5.0, 0.5); //cam->updateView(); //spacenav->setTranslationFactor(2.0); //connect( spacenav, SIGNAL(translated(double, double, double)), cam, SLOT(setTrackingData(double, double, double)) ); //connect( spacenav, SIGNAL(translated(double, double, double)), cam, SLOT(translate(double, double, double)) ); QVrpnArtTrackingClient* art = QVrpnArtTrackingClient::Instance(this); if (settings.contains("Tracking/artDeviceName")) { QString deviceName = settings.value("Tracking/artDeviceName").toString(); QString deviceNameAt = settings.value("Tracking/artDeviceNameAt").toString(); art->StartTracking(QString(deviceName + "@" + deviceNameAt).toStdString().c_str(), settings.value("Tracking/artUpdateInterval").toInt()); } else art->StartTracking("[email protected]"); connect( art, SIGNAL(positionUpdated(double, double, double)), cam, SLOT(setTrackingData(double, double, double)) ); // Connect the vtk event to the qt slot _qtConnect = vtkEventQtSlotConnect::New(); _qtConnect->Connect(vtkWidget->GetRenderWindow()->GetInteractor(), vtkCommand::EndInteractionEvent, cam, SLOT(updatedFromOutside())); #endif // OGS_USE_VRPN _vtkRender->SetBackground(0.0,0.0,0.0); // Restore settings stereoToolButton->setChecked(settings.value("stereoEnabled").toBool()); //if (settings.contains("stereoEyeAngle")) // cam->SetEyeAngle(settings.value("stereoEyeAngle").toDouble()); //else // cam->SetEyeAngle(2.0); /* if (!stereoToolButton->isChecked()) { eyeAngleLabel->setEnabled(false); eyeAngleSlider->setEnabled(false); } */ //eyeAngleSlider->setValue((int)(_vtkRender->GetActiveCamera()->GetEyeAngle() * 10)); // Create an orientation marker using vtkAxesActor vtkSmartPointer<vtkAxesActor> axesActor = vtkSmartPointer<vtkAxesActor>::New(); vtkOrientationMarkerWidget* markerWidget = vtkOrientationMarkerWidget::New(); markerWidget->SetOrientationMarker(axesActor); //markerWidget->SetViewport(0.0, 0.0, 0.15, 0.3); // size markerWidget->SetInteractor(vtkWidget->GetRenderWindow()->GetInteractor()); markerWidget->EnabledOn(); markerWidget->InteractiveOff(); _isShowAllOnLoad = true; // Set alternate cursor shapes connect(_interactorStyle, SIGNAL(cursorChanged(Qt::CursorShape)), this, SLOT(setCursorShape(Qt::CursorShape))); }
void PlotWidgetLevelDrawingState::initializeState() { setInteractions(); setCursorShape(); mPlotWidget->updateTracers(); }
void GcWindow::mouseMoveEvent(QMouseEvent *e) { if (!resizable()) return; if (dragState == None) { // set the cursor shape setCursorShape(spotHotSpot(e)); return; } // work out the relative move x and y int relx = mapFromGlobal(QCursor::pos()).x() - mX; int rely = mapFromGlobal(QCursor::pos()).y() - mY; switch (dragState) { default: case Move : //move(oX + relx, oY + rely); #if QT_VERSION < 0x040700 setCursor(Qt::ClosedHandCursor); #else setCursor(Qt::DragMoveCursor); #endif emit moving(this); break; case TLCorner : { int newWidth = oWidth - relx; int newHeight = oHeight - rely; // need to move and resize if (newWidth > 30 && newHeight > 30) { move(oX + relx, oY + rely); setNewSize(newWidth, newHeight); emit resizing(this); } } break; case TRCorner : { int newWidth = oWidth + relx; int newHeight = oHeight - rely; // need to move and resize if changes on y plane if (newWidth > 30 && newHeight > 30) { move(oX, oY + rely); setNewSize(newWidth, newHeight); emit resizing(this); } } break; case BLCorner : { int newWidth = oWidth - relx; int newHeight = oHeight + rely; // need to move and resize if (newWidth > 30 && newHeight > 30) { move(oX + relx, oY); setNewSize(newWidth, newHeight); emit resizing(this); } } break; case BRCorner : { int newWidth = oWidth + relx; int newHeight = oHeight + rely; // need to move and resize if (newWidth > 30 && newHeight > 30) { setNewSize(newWidth, newHeight); emit resizing(this); } } break; case Top : { int newHeight = oHeight - rely; // need to move and resize if (newHeight > 30) { move (oX, oY + rely); setNewSize(oWidth, newHeight); emit resizing(this); } } break; case Bottom : { int newHeight = oHeight + rely; // need to move and resize if (newHeight > 30) { setNewSize(oWidth, newHeight); emit resizing(this); } } break; case Left : { int newWidth = oWidth - relx; // need to move and resize if (newWidth > 30) { move (oX + relx, oY); setNewSize(newWidth, oHeight); emit resizing(this); } } break; case Right : { int newWidth = oWidth + relx; // need to move and resize if (newWidth > 30) { setNewSize(newWidth, oHeight); emit resizing(this); } } break; } oX = pos().x(); oY = pos().y(); //repaint(); //QApplication::processEvents(); // flicker... }
void GcOverlayWidget::mouseMoveEvent(QMouseEvent *e) { QWidget::mouseMoveEvent(e); if (!m_isEditing) return; if (!m_infocus) return; if (!e->buttons() & Qt::LeftButton) { QPoint p = QPoint(e->x()+geometry().x(), e->y()+geometry().y()); setCursorShape(p); return; } if ((mode == moving || mode == none) && e->buttons() && Qt::LeftButton) { QPoint toMove = e->globalPos() - position; if (toMove.x() < 0) return; if (toMove.y() < 0) return; if (toMove.x() > parentWidget()->width()-width()) return; move(toMove); emit newGeometry(geometry()); parentWidget()->repaint(); return; } if ((mode != moving) && e->buttons() && Qt::LeftButton) { switch (mode){ case resizetl: { //Left-Top int newwidth = e->globalX() - position.x() - geometry().x(); int newheight = e->globalY() - position.y() - geometry().y(); QPoint toMove = e->globalPos() - position; resize(geometry().width()-newwidth,geometry().height()-newheight); move(toMove.x(),toMove.y()); break; } case resizetr: { //Right-Top int newheight = e->globalY() - position.y() - geometry().y(); QPoint toMove = e->globalPos() - position; resize(e->x(),geometry().height()-newheight); move(x(),toMove.y()); break; } case resizebl: { //Left-Bottom int newwidth = e->globalX() - position.x() - geometry().x(); QPoint toMove = e->globalPos() - position; resize(geometry().width()-newwidth,e->y()); move(toMove.x(),y()); break; } case resizeb: { //Bottom resize(width(),e->y()); break;} case resizel: { //Left int newwidth = e->globalX() - position.x() - geometry().x(); QPoint toMove = e->globalPos() - position; resize(geometry().width()-newwidth,height()); move(toMove.x(),y()); break; } case resizet: { //Top int newheight = e->globalY() - position.y() - geometry().y(); QPoint toMove = e->globalPos() - position; resize(width(),geometry().height()-newheight); move(x(),toMove.y()); break; } case resizer: { //Right resize(e->x(),height()); break;} case resizebr: { //Right-Bottom resize(e->x(),e->y()); break;} } parentWidget()->repaint(); } emit newGeometry(geometry()); //QWidget::mouseMoveEvent(e); }