Changeset 681 for trunk/geant4


Ignore:
Timestamp:
Jan 11, 2008, 5:21:44 PM (16 years ago)
Author:
garnier
Message:

correction ticket #107 et ajout du picking

Location:
trunk/geant4/visualization/OpenGL
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/geant4/visualization/OpenGL/include/G4OpenGLQtViewer.hh

    r678 r681  
    103103  QMenu *fContextMenu;
    104104#endif
    105   enum mouseActions {ROTATE, MOVE, ZOOM};
     105  enum mouseActions {ROTATE, MOVE, ZOOM, PICK};
    106106  mouseActions fMouseAction; // 1: rotate 0:move
    107107  QPoint lastPos;
     
    110110  QPopupMenu *fMouseMove;
    111111  QPopupMenu *fMouseZoom;
     112  QPopupMenu *fMousePick;
    112113  QPopupMenu *fDrawingWireframe;
    113114  QPopupMenu *fDrawingLineRemoval;
     
    118119  QAction *fMouseMove;
    119120  QAction *fMouseZoom;
     121  QAction *fMousePick;
    120122  QAction *fDrawingWireframe;
    121123  QAction *fDrawingLineRemoval;
     
    128130  void actionMouseMove();
    129131  void actionMouseZoom();
     132  void actionMousePick();
    130133  void actionDrawingWireframe();
    131134  void actionDrawingLineRemoval();
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r678 r681  
    339339  fMouseZoom->setCheckable(true);
    340340
     341  fMousePick = new QPopupMenu(mMouseAction);
     342  mMouseAction->insertItem("&Pick",fMousePick);
     343  fMousePick->setCheckable(true);
     344
    341345#else
    342346  // === Mouse menu ===
     
    350354  fMouseZoom = mMouseAction->addAction("Zoom");
    351355  fMouseZoom->setCheckable(true);
     356
     357  fMousePick = mMouseAction->addAction("Pick");
     358  fMousePick->setCheckable(true);
    352359#endif
    353360
     
    371378                    SLOT(actionMouseZoom()));
    372379
     380  QObject ::connect(fMousePick,
     381                    SIGNAL(activated(int)),
     382                    this,
     383                    SLOT(actionMousePick()));
     384
    373385#else
    374386  fMouseRotate->setChecked(true);
     
    388400                    this,
    389401                    SLOT(actionMouseZoom()));
     402
     403  QObject ::connect(fMousePick,
     404                    SIGNAL(triggered(bool)),
     405                    this,
     406                    SLOT(actionMousePick()));
    390407#endif
    391408
     
    835852
    836853/**
     854   Slot activate when mouseAction->pick menu is set
     855 */
     856void G4OpenGLQtViewer::actionMouseZoom() {
     857#ifdef GEANT4_QT_DEBUG
     858  printf("G4OpenGLQtViewer::actionMouseZoom \n");
     859#endif
     860  emit toggleMouseAction(ZOOM);
     861}
     862
     863/**
    837864   Slot activate when mouseAction->zoom menu is set
    838865 */
    839 void G4OpenGLQtViewer::actionMouseZoom() {
    840 #ifdef GEANT4_QT_DEBUG
    841   printf("G4OpenGLQtViewer::actionMouseZoom \n");
    842 #endif
    843   emit toggleMouseAction(ZOOM);
     866void G4OpenGLQtViewer::actionMousePick() {
     867#ifdef GEANT4_QT_DEBUG
     868  printf("G4OpenGLQtViewer::actionMousePick \n");
     869#endif
     870  emit toggleMouseAction(PICK);
    844871}
    845872
     
    879906void G4OpenGLQtViewer::toggleMouseAction(mouseActions aAction) {
    880907 
    881 
    882 #ifdef GEANT4_QT_DEBUG
    883   printf("G4OpenGLQtViewer::toggleMouseAction **** \n");
    884 #endif
    885908  if (aAction == ROTATE) {
    886 #ifdef GEANT4_QT_DEBUG
    887   printf("G4OpenGLQtViewer::toggleMouseAction ROTATE \n");
    888 #endif
    889909#if QT_VERSION < 0x040000
    890910    fMouseRotate->setItemChecked (0,true);
    891911    fMouseMove->setItemChecked (0,false);
    892912    fMouseZoom->setItemChecked (0,false);
     913    fMousePick->setItemChecked (0,false);
    893914#else
    894915    fMouseRotate->setChecked (true);
    895916    fMouseMove->setChecked (false);
    896917    fMouseZoom->setChecked (false);
     918    fMousePick->setChecked (false);
    897919#endif
    898920    fMouseAction = ROTATE;
     921    fVP.SetPicking(false);
    899922  } else  if (aAction == MOVE) {
    900 #ifdef GEANT4_QT_DEBUG
    901   printf("G4OpenGLQtViewer::toggleMouseAction MOVE \n");
    902 #endif
    903923#if QT_VERSION < 0x040000
    904924    fMouseRotate->setItemChecked (0,false);
    905925    fMouseMove->setItemChecked (0,true);
    906926    fMouseZoom->setItemChecked (0,false);
     927    fMousePick->setItemChecked (0,false);
    907928#else
    908929    fMouseRotate->setChecked (false);
    909930    fMouseMove->setChecked (true);
    910931    fMouseZoom->setChecked (false);
     932    fMousePick->setChecked (false);
    911933#endif
    912934    fMouseAction = MOVE;
     935    fVP.SetPicking(false);
    913936  } else  if (aAction == ZOOM) {
    914 #ifdef GEANT4_QT_DEBUG
    915   printf("G4OpenGLQtViewer::toggleMouseAction ZOOM \n");
    916 #endif
    917937#if QT_VERSION < 0x040000
    918938    fMouseRotate->setItemChecked (0,false);
    919939    fMouseMove->setItemChecked (0,false);
    920940    fMouseZoom->setItemChecked (0,true);
     941    fMousePick->setItemChecked (0,false);
    921942#else
    922943    fMouseRotate->setChecked (false);
    923944    fMouseMove->setChecked (false);
    924945    fMouseZoom->setChecked (true);
     946    fMousePick->setChecked (false);
    925947#endif
    926948    fMouseAction = ZOOM;
    927   }
    928 
    929 #ifdef GEANT4_QT_DEBUG
    930   printf("G4OpenGLQtViewer::toggleMouseAction\n");
    931 #endif
     949    fVP.SetPicking(false);
     950  } else  if (aAction == PICK) {
     951#if QT_VERSION < 0x040000
     952    fMouseRotate->setItemChecked (0,false);
     953    fMouseMove->setItemChecked (0,false);
     954    fMouseZoom->setItemChecked (0,false);
     955    fMousePick->setItemChecked (0,true);
     956#else
     957    fMouseRotate->setChecked (false);
     958    fMouseMove->setChecked (false);
     959    fMouseZoom->setChecked (false);
     960    fMousePick->setChecked (true);
     961#endif
     962    fVP.SetPicking(true);
     963    fMouseAction = PICK;
     964  }
     965
    932966}
    933967/**
     
    13171351{
    13181352  lastPos = p;
     1353  if (fMouseAction == PICK){  // pick
     1354    Pick(p.x(),p.y());
     1355  }
    13191356}
    13201357
     
    13941431    }
    13951432  } else   if (fMouseAction == MOVE){  // move
     1433    if (mButtons & Qt::LeftButton) {
    13961434     
    1397     float dx = pos_x - lastPos.x();
    1398     float dy = pos_y - lastPos.y();
    1399    
    1400     G4Point3D stp
    1401       = GetSceneHandler()->GetScene()->GetStandardTargetPoint();
    1402    
    1403     G4Point3D tp = stp + fVP.GetCurrentTargetPoint ();
    1404    
    1405     const G4Vector3D& upVector = fVP.GetUpVector ();
    1406     const G4Vector3D& vpVector = fVP.GetViewpointDirection ();
    1407    
    1408     G4Vector3D unitRight = (upVector.cross (vpVector)).unit();
    1409     G4Vector3D unitUp    = (vpVector.cross (unitRight)).unit();
    1410    
    1411     tp += -dx * unitRight + dy * unitUp;
    1412     fVP.SetCurrentTargetPoint (tp - stp);
    1413    
    1414     updateQWidget();
     1435      float dx = pos_x - lastPos.x();
     1436      float dy = pos_y - lastPos.y();
     1437     
     1438      G4Point3D stp
     1439        = GetSceneHandler()->GetScene()->GetStandardTargetPoint();
     1440     
     1441      G4Point3D tp = stp + fVP.GetCurrentTargetPoint ();
     1442     
     1443      const G4Vector3D& upVector = fVP.GetUpVector ();
     1444      const G4Vector3D& vpVector = fVP.GetViewpointDirection ();
     1445     
     1446      G4Vector3D unitRight = (upVector.cross (vpVector)).unit();
     1447      G4Vector3D unitUp    = (vpVector.cross (unitRight)).unit();
     1448     
     1449      tp += -dx * unitRight + dy * unitUp;
     1450      fVP.SetCurrentTargetPoint (tp - stp);
     1451     
     1452      updateQWidget();
     1453    }
    14151454  } else   if (fMouseAction == ZOOM){  // zoom
    14161455    if (mButtons & Qt::LeftButton) {
    1417       Pick(pos_x,pos_y);
    14181456      G4cerr << "Zoom not implemented for the moment\n" << G4endl;
    1419     }
    1420   } else   if (fMouseAction == MOVE){  // pick
    1421     if (mButtons & Qt::LeftButton) {
    1422       Pick(pos_x,pos_y);
    14231457    }
    14241458  }
Note: See TracChangeset for help on using the changeset viewer.