Salome HOME
aa9d70a7b66f6ac4759f27765bb48ba5c5e68d28
[modules/gui.git] / src / VTKViewer / VTKViewer_MarkerDlg.cxx
1 // Copyright (C) 2007-2022  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 //  File   : VTKViewer_MarkerDlg.cxx
20 //  Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
21
22 #include "VTKViewer_MarkerDlg.h"
23 #include "VTKViewer_MarkerWidget.h"
24
25 #include <SUIT_Application.h>
26 #include <SUIT_MessageBox.h>
27 #include <SUIT_ResourceMgr.h>
28 #include <SUIT_Session.h>
29
30 #include <QFrame>
31 #include <QVBoxLayout>
32 #include <QKeyEvent>
33
34 /*!
35   \class VTKViewer_MarkerDlg
36   \brief Dialog for specifying of point marker parameters
37 */
38
39 /*!
40   \brief Constructor
41   \param parent parent widget
42 */
43 VTKViewer_MarkerDlg::VTKViewer_MarkerDlg( QWidget* parent )
44 : QtxDialog( parent, true, true )
45 {
46   // set title
47   setWindowTitle( tr( "SET_MARKER_TLT" ) );
48
49   // create widgets
50   QFrame* frame = new QFrame( mainFrame() );
51   frame->setFrameStyle( QFrame::Sunken | QFrame::Box );
52   myMarkerWidget = new VTKViewer_MarkerWidget( frame );
53
54   // layoting
55   QBoxLayout* vl = new QVBoxLayout( frame );
56   vl->setSpacing( 6 ) ;
57   vl->setMargin( 11 );
58   vl->addWidget( myMarkerWidget );
59
60   QBoxLayout* topLayout = new QVBoxLayout( mainFrame() );
61   topLayout->setSpacing( 0 ) ;
62   topLayout->setMargin( 0 );
63   topLayout->addWidget( frame );
64
65   // connect signals / slots
66   connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() ) );
67 }
68
69 /*!
70   \brief Destructor
71 */
72 VTKViewer_MarkerDlg::~VTKViewer_MarkerDlg()
73 {
74 }
75
76 /*!
77   \brief Associate documentation page with the dialog box
78   \param module module name
79   \param helpFile reference help file
80 */
81 void VTKViewer_MarkerDlg::setHelpData( const QString& module,
82                                        const QString& helpFile )
83 {
84   myModule   = module;
85   myHelpFile = helpFile;
86 }
87
88 /*!
89   \brief Process key press event
90   \param e key press event
91 */
92 void VTKViewer_MarkerDlg::keyPressEvent( QKeyEvent* e )
93 {
94   QtxDialog::keyPressEvent( e );
95   if ( e->isAccepted() )
96     return;
97
98   // invoke Help on <F1> key presss
99   if ( e->key() == Qt::Key_F1 ) {
100     e->accept();
101     onHelp();
102   }
103 }
104
105 /*!
106   \brief Activate help for the dialog box
107 */
108 void VTKViewer_MarkerDlg::onHelp()
109 {
110   if ( !myModule.isEmpty() && !myHelpFile.isEmpty() ) {
111     SUIT_Session::session()->activeApplication()->onHelpContextModule( myModule, myHelpFile );
112   }
113 }
114
115 /*!
116   \brief Set custom markers data
117   \param markerMap custom marker data (a map {index:texture})
118 */
119 void VTKViewer_MarkerDlg::setCustomMarkers( const VTK::MarkerMap& markerMap )
120 {
121   myMarkerWidget->setCustomMarkers( markerMap );
122 }
123
124 /*!
125   \brief Get custom markers data
126   \return custom marker data
127 */
128 VTK::MarkerMap VTKViewer_MarkerDlg::customMarkers() const
129 {
130   return myMarkerWidget->customMarkers();
131 }
132
133 /*!
134   \brief Add standard marker
135   The marker type specified with \a type must be > VTK::MT_USER
136   \param type marker type
137   \param icon marker icon
138 */
139 void VTKViewer_MarkerDlg::addMarker( VTK::MarkerType type, const QPixmap& icon )
140 {
141   myMarkerWidget->addMarker( type, icon );
142 }
143
144 /*!
145   \brief Select specified standard marker as current one
146   \param type marker type
147   \param scale marker scale (optional parameter; can be omitted for extended markers)
148 */
149 void VTKViewer_MarkerDlg::setMarker( VTK::MarkerType type, VTK::MarkerScale scale )
150 {
151   myMarkerWidget->setMarker( type, scale );
152 }
153
154 /*!
155   \brief Select specified custom marker as current one
156   \param id custom marker identifier
157 */
158 void VTKViewer_MarkerDlg::setCustomMarker( int id )
159 {
160   myMarkerWidget->setCustomMarker( id );
161 }
162
163 /*!
164   \brief Get current marker's type.
165   For custom marker, VTK::MT_USER is returned and markerId() function 
166   then returns its identifier.
167   \return currently selected marker type
168 */
169 VTK::MarkerType VTKViewer_MarkerDlg::markerType() const
170 {
171   return myMarkerWidget->markerType();
172 }
173
174 /*!
175   \brief Get current marker's scale size.
176   For custom marker return value is undefined.
177   \return currently selected marker scale size
178 */
179 VTK::MarkerScale VTKViewer_MarkerDlg::markerScale() const
180 {
181   return myMarkerWidget->markerScale();
182 }
183
184 /*!
185   \bried Get currently selected custom marker's identifier.
186   For standard markers return value is VTK::MT_NONE.
187 */
188 int VTKViewer_MarkerDlg::markerId() const
189 {
190   return myMarkerWidget->markerId();
191 }