Salome HOME
Creat\Edit stream operation.
[modules/hydro.git] / src / HYDROCurveCreator / OCCViewer_Utilities.cxx
1
2 #include "OCCViewer_Utilities.h"
3 #include "OCCViewer_ViewWidget.h"
4
5 #include <OCCViewer_ViewFrame.h>
6 #include <OCCViewer_ViewModel.h>
7 #include <SUIT_ViewManager.h>
8
9 #include <QtxActionToolMgr.h>
10
11 #include <QAction>
12
13 void OCCViewer_Utilities::setViewer2DMode( OCCViewer_Viewer* theViewer,
14                                            const OCCViewer_ViewWindow::Mode2dType& theMode )
15 {
16   OCCViewer_ViewFrame* aFrame = dynamic_cast<OCCViewer_ViewFrame*>
17                                      ( theViewer->getViewManager()->getActiveView() );
18   OCCViewer_ViewWindow* aView = aFrame ? aFrame->getView( OCCViewer_ViewFrame::MAIN_VIEW ) : 0;
19   if ( !aView )
20     return;
21
22   // set a view mode
23   aView->set2dMode( theMode );
24   bool is2dMode = theMode != OCCViewer_ViewWindow::No2dMode;
25
26   // enable/disable view actions
27   QList<int> aNo2dActions;
28   aNo2dActions << OCCViewer_ViewWindow::ChangeRotationPointId
29                << OCCViewer_ViewWindow::RotationId
30                << OCCViewer_ViewWindow::FrontId
31                << OCCViewer_ViewWindow::BackId
32                << OCCViewer_ViewWindow::TopId
33                << OCCViewer_ViewWindow::BottomId
34                << OCCViewer_ViewWindow::LeftId
35                << OCCViewer_ViewWindow::RightId
36                << OCCViewer_ViewWindow::AntiClockWiseId
37                << OCCViewer_ViewWindow::ClockWiseId
38                << OCCViewer_ViewWindow::ResetId;
39
40   QtxActionToolMgr* aToolMgr = aView->toolMgr();
41   QAction* anAction;
42   for ( int i = 0, aNb = aNo2dActions.size(); i < aNb; i++ ) {
43     anAction = aToolMgr->action( aNo2dActions[i] );
44     if ( anAction )
45       anAction->setEnabled( !is2dMode );
46   }
47
48   // change view position
49   switch ( theMode ) {
50     case OCCViewer_ViewWindow::XYPlane:
51       aView->onTopView();
52       break;
53     case OCCViewer_ViewWindow::XZPlane:
54       aView->onLeftView();
55       break;
56     case OCCViewer_ViewWindow::YZPlane:
57       aView->onFrontView();
58       break;
59   }
60 }
61
62 void OCCViewer_Utilities::setViewWidget2DMode( OCCViewer_ViewWidget* theViewWidget,
63                                                const OCCViewer_ViewWidget::Mode2dType& theMode )
64 {
65   if ( !theViewWidget )
66     return;
67
68   // set a view mode
69   theViewWidget->set2dMode( theMode );
70   bool is2dMode = theMode != OCCViewer_ViewWindow::No2dMode;
71
72   // enable/disable view actions
73   QList<OCCViewer_ViewWidget::ButtonsType> aNo2dActions;
74   aNo2dActions << OCCViewer_ViewWidget::RotationId
75                << OCCViewer_ViewWidget::FrontId
76                << OCCViewer_ViewWidget::BackId
77                << OCCViewer_ViewWidget::TopId
78                << OCCViewer_ViewWidget::BottomId
79                << OCCViewer_ViewWidget::LeftId
80                << OCCViewer_ViewWidget::RightId;
81
82   QAction* anAction;
83   for ( int i = 0, aNb = aNo2dActions.size(); i < aNb; i++ ) {
84     anAction = theViewWidget->action( aNo2dActions[i] );
85     if ( anAction )
86       anAction->setVisible( !is2dMode );
87   }
88
89   // change view position
90   switch ( theMode ) {
91     case OCCViewer_ViewWindow::XYPlane:
92       theViewWidget->onTopView();
93       break;
94     case OCCViewer_ViewWindow::XZPlane:
95       theViewWidget->onLeftView();
96       break;
97     case OCCViewer_ViewWindow::YZPlane:
98       theViewWidget->onFrontView();
99       break;
100   }
101 }