Changeset 713 for trunk/geant4
- Timestamp:
- Feb 5, 2008, 4:46:54 PM (17 years ago)
- Location:
- trunk/geant4/visualization/OpenGL
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/geant4/visualization/OpenGL/include/G4OpenGLQtViewer.hh
r712 r713 84 84 void G4MouseEvent(int, int, Qt::MouseButtons); 85 85 #endif 86 void G4MouseRotateEvent( int, int);87 void G4MouseMoveEvent( int, int, int);86 void G4MouseRotateEvent(G4double, G4double); 87 void G4MouseMoveEvent(G4double, G4double, G4double); 88 88 void G4keyPressEvent (QKeyEvent * event); 89 89 … … 108 108 QMenu *fContextMenu; 109 109 #endif 110 enum mouseActions {STYLE1,STYLE2,STYLE3 };111 mouseActions fMouseAction; // 1: rotate 2: zoom 3:pick110 enum mouseActions {STYLE1,STYLE2,STYLE3,STYLE4}; 111 mouseActions fMouseAction; // 1: rotate 2:move 3:pick 4:shortcuts 112 112 QPoint fLastPos; 113 /** delta of scene rotation. This delta is put in degree */ 114 G4double fDeltaRotation; 113 115 /** delta of scene translation. This delta is put in % of the scene view */ 114 116 G4double fDeltaSceneTranslation; … … 121 123 #if QT_VERSION < 0x040000 122 124 QPopupMenu *fMouseRotate; 125 QPopupMenu *fMouseMove; 123 126 QPopupMenu *fMousePick; 124 127 QPopupMenu *fMouseShortcuts; … … 129 132 #else 130 133 QAction *fMouseRotate; 134 QAction *fMouseMove; 131 135 QAction *fMousePick; 132 136 QAction *fMouseShortcuts; … … 139 143 private slots : 140 144 void actionMouseRotate(); 145 void actionMouseMove(); 141 146 void actionMousePick(); 142 147 void actionMouseShortcuts(); -
trunk/geant4/visualization/OpenGL/src/G4OpenGLQtViewer.cc
r712 r713 287 287 ,fContextMenu(0) 288 288 ,fMouseAction(STYLE1) 289 ,fDeltaRotation(1) 289 290 ,fDeltaSceneTranslation(0.01) 290 291 ,fDeltaDepth(0.01) … … 330 331 // === Mouse menu === 331 332 333 mMouseAction->setCheckable(true); 334 332 335 fMouseRotate = new QPopupMenu(mMouseAction); 333 336 mMouseAction->insertItem("&Rotate",fMouseRotate); 334 335 mMouseAction->setCheckable(true);336 337 fMouseRotate->setCheckable(true); 338 339 fMouseMove = new QPopupMenu(mMouseAction); 340 mMouseAction->insertItem("&Move",fMouseMove); 341 fMouseMove->setCheckable(true); 337 342 338 343 fMousePick = new QPopupMenu(mMouseAction); … … 349 354 fMouseRotate = mMouseAction->addAction("Rotate"); 350 355 fMouseRotate->setCheckable(true); 356 357 fMouseMove = mMouseAction->addAction("Move"); 358 fMouseMove->setCheckable(true); 351 359 352 360 fMousePick = mMouseAction->addAction("Pick"); … … 366 374 SLOT(actionMouseRotate())); 367 375 376 QObject ::connect(fMouseMove, 377 SIGNAL(activated(int)), 378 this, 379 SLOT(actionMouseMove())); 380 368 381 QObject ::connect(fMousePick, 369 382 SIGNAL(activated(int)), … … 383 396 this, 384 397 SLOT(actionMouseRotate())); 398 399 QObject ::connect(fMouseMove, 400 SIGNAL(triggered(bool)), 401 this, 402 SLOT(actionMouseMove())); 385 403 386 404 QObject ::connect(fMousePick, … … 834 852 835 853 /** 854 Slot activate when mouseAction->rotate menu is set 855 */ 856 void G4OpenGLQtViewer::actionMouseMove() { 857 emit toggleMouseAction(STYLE2); 858 } 859 860 861 /** 836 862 Slot activate when mouseAction->zoom menu is set 837 863 */ … … 850 876 printf("G4OpenGLQtViewer::actionMouseShortcuts \n"); 851 877 #endif 852 emit toggleMouseAction(STYLE 3);878 emit toggleMouseAction(STYLE4); 853 879 } 854 880 … … 888 914 void G4OpenGLQtViewer::toggleMouseAction(mouseActions aAction) { 889 915 916 if ((aAction == STYLE1) || //initialize all 917 (aAction == STYLE2) || 918 (aAction == STYLE3) || 919 (aAction == STYLE4)) { 920 #if QT_VERSION < 0x040000 921 fMouseRotate->setItemChecked (0,false); 922 fMouseMove->setItemChecked (0,false); 923 fMousePick->setItemChecked (0,false); 924 fMouseShortcuts->setItemChecked (0,false); 925 #else 926 fMouseRotate->setChecked (false); 927 fMouseMove->setChecked (false); 928 fMousePick->setChecked (false); 929 fMouseShortcuts->setChecked (false); 930 #endif 931 fVP.SetPicking(false); 932 fMouseAction = aAction; 933 } 934 // rotate 890 935 if (aAction == STYLE1) { // rotate 891 936 G4cout << "Click and move mouse to rotate volume \n" << G4endl; … … 898 943 #if QT_VERSION < 0x040000 899 944 fMouseRotate->setItemChecked (0,true); 900 fMousePick->setItemChecked (0,false);901 fMouseShortcuts->setItemChecked (0,false);902 945 #else 903 946 fMouseRotate->setChecked (true); 904 fMousePick->setChecked (false); 905 fMouseShortcuts->setChecked (false); 906 #endif 907 fMouseAction = STYLE1; 908 fVP.SetPicking(false); 909 } else if (aAction == STYLE2) { //pick 947 #endif 948 } else if (aAction == STYLE2) { //move 949 G4cout << "Move camera point of view with mouse\n" << G4endl; 950 #if QT_VERSION < 0x040000 951 fMouseMove->setItemChecked (0,true); 952 #else 953 fMouseMove->setChecked (true); 954 #endif 955 } else if (aAction == STYLE3) { //pick 910 956 G4cout << "Click and pick \n" << G4endl; 911 957 #if QT_VERSION < 0x040000 912 fMouseRotate->setItemChecked (0,false);913 958 fMousePick->setItemChecked (0,true); 914 959 #else 915 fMouseRotate->setChecked (false);916 960 fMousePick->setChecked (true); 917 961 #endif 918 962 fVP.SetPicking(true); 919 fMouseAction = STYLE2; 920 } else if (aAction == STYLE3) { // display shortcuts 921 #if QT_VERSION < 0x040000 922 fMouseRotate->setItemChecked (0,false); 923 fMousePick->setItemChecked (0,false); 963 } else if (aAction == STYLE4) { // display shortcuts 964 #if QT_VERSION < 0x040000 924 965 fMouseShortcuts->setItemChecked (0,true); 925 966 #else 926 fMouseRotate->setChecked (false);927 fMousePick->setChecked (false);928 967 fMouseShortcuts->setChecked (true); 929 968 #endif 930 fMouseAction = STYLE3;931 fVP.SetPicking(false);932 969 933 970 G4cout << "Click and move mouse to rotate volume \n" << G4endl; … … 1376 1413 #endif 1377 1414 { 1415 1378 1416 int dx = fLastPos.x() - pos_x; 1379 1417 int dy = fLastPos.y() - pos_y; 1418 1419 1380 1420 if (fMouseAction == STYLE1) { // rotate 1381 1421 if (mButtons & Qt::LeftButton) { 1382 1422 G4MouseRotateEvent(dx,dy); 1383 1423 } 1424 } else if (fMouseAction == STYLE2) { // move 1425 if (mButtons & Qt::LeftButton) { 1426 G4double coef = ((G4double)getSceneNearWidth())/((G4double)WinSize_x); 1427 if (WinSize_y <WinSize_x) { 1428 coef = ((G4double)getSceneNearWidth())/((G4double)WinSize_y); 1429 } 1430 fVP.IncrementPan(dx*coef,-dy*coef); 1431 updateQWidget(); 1432 } 1384 1433 } 1385 1434 fLastPos = QPoint(pos_x, pos_y); … … 1388 1437 /** 1389 1438 Move the scene of dx, dy, dz values. 1390 Values are in1391 100 moves of 1 => move of 10cm of the scene1392 1439 @param dx delta mouse x position 1393 1440 @param dy delta mouse y position 1394 1441 */ 1395 1442 1396 void G4OpenGLQtViewer::G4MouseMoveEvent( int dx, int dy, intdz)1443 void G4OpenGLQtViewer::G4MouseMoveEvent(G4double dx,G4double dy, G4double dz) 1397 1444 { 1398 1445 GLdouble coefTrans = getSceneNearWidth()*fDeltaSceneTranslation; 1399 1446 GLdouble coefDepth = getSceneDepth()*fDeltaDepth; 1400 1447 1401 printf("Increment : %f %f\n",getSceneNearWidth(),getSceneDepth()); 1402 printf("Increment : %f %f %f \n",-dx*coefTrans,dy*coefTrans,dz*coefDepth); 1403 fVP.IncrementPan(-dx*coefTrans,dy*coefTrans,dz*coefDepth); 1448 fVP.IncrementPan(-dx*coefTrans,dy*coefTrans,dz*coefDepth); 1404 1449 1405 updateQWidget();1450 updateQWidget(); 1406 1451 } 1407 1452 … … 1412 1457 */ 1413 1458 1414 void G4OpenGLQtViewer::G4MouseRotateEvent( int dx, intdy)1459 void G4OpenGLQtViewer::G4MouseRotateEvent(G4double dx, G4double dy) 1415 1460 { 1461 dx = dx * fDeltaRotation; 1462 dy = dy * fDeltaRotation; 1463 1416 1464 //phi spin stuff here 1417 1465
Note: See TracChangeset
for help on using the changeset viewer.