Salome HOME
Bug #183: regression: polyline - unnecessary table in Additition mode.
[modules/hydro.git] / src / HYDROCurveCreator / OCCViewer_Utilities.cxx
1
2 #include "OCCViewer_Utilities.h"
3
4 #include <OCCViewer_ViewFrame.h>
5 #include <OCCViewer_ViewModel.h>
6 #include <SUIT_ViewManager.h>
7
8 #include <QtxActionToolMgr.h>
9
10 #include <QAction>
11
12 void OCCViewer_Utilities::setViewer2DMode( OCCViewer_Viewer* theViewer,
13                                            const OCCViewer_ViewWindow::Mode2dType& theMode )
14 {
15   OCCViewer_ViewFrame* aFrame = dynamic_cast<OCCViewer_ViewFrame*>
16                                      ( theViewer->getViewManager()->getActiveView() );
17   OCCViewer_ViewWindow* aView = aFrame ? aFrame->getView( OCCViewer_ViewFrame::MAIN_VIEW ) : 0;
18   if ( !aView )
19     return;
20
21   // set a view mode
22   aView->set2dMode( theMode );
23   bool is2dMode = theMode != OCCViewer_ViewWindow::No2dMode;
24
25   // enable/disable view actions
26   QList<int> aNo2dActions;
27   aNo2dActions << OCCViewer_ViewWindow::ChangeRotationPointId
28                << OCCViewer_ViewWindow::RotationId
29                << OCCViewer_ViewWindow::FrontId
30                << OCCViewer_ViewWindow::BackId
31                << OCCViewer_ViewWindow::TopId
32                << OCCViewer_ViewWindow::BottomId
33                << OCCViewer_ViewWindow::LeftId
34                << OCCViewer_ViewWindow::RightId
35                << OCCViewer_ViewWindow::AntiClockWiseId
36                << OCCViewer_ViewWindow::ClockWiseId
37                << OCCViewer_ViewWindow::ResetId;
38
39   QtxActionToolMgr* aToolMgr = aView->toolMgr();
40   QAction* anAction;
41   for ( int i = 0, aNb = aNo2dActions.size(); i < aNb; i++ ) {
42     anAction = aToolMgr->action( aNo2dActions[i] );
43     if ( anAction )
44       anAction->setEnabled( !is2dMode );
45   }
46
47   // change view position
48   switch ( theMode ) {
49     case OCCViewer_ViewWindow::XYPlane:
50       aView->onTopView();
51       break;
52     case OCCViewer_ViewWindow::XZPlane:
53       aView->onLeftView();
54       break;
55     case OCCViewer_ViewWindow::YZPlane:
56       aView->onFrontView();
57       break;
58   }
59 }