Salome HOME
Add tools
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetSwitch.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 /*
4  * ModuleBase_WidgetSwitch.h
5  *
6  *  Created on: Apr 16, 2014
7  *      Author: sbh
8  */
9
10 #ifndef MODULEBASE_WIDGETSWITCH_H_
11 #define MODULEBASE_WIDGETSWITCH_H_
12
13 #include <ModuleBase.h>
14 #include <ModuleBase_PagedContainer.h>
15
16 class QComboBox;
17 class QStackedLayout;
18
19 /**
20 * \ingroup GUI
21 * Implements a model widget for switch as a container widget. It can be defined in XML with "switch" keyword
22 */
23 class MODULEBASE_EXPORT ModuleBase_WidgetSwitch : public ModuleBase_PagedContainer
24 {
25   Q_OBJECT
26  public:
27    /// Constructor
28    /// \param parent a parent widget
29   ModuleBase_WidgetSwitch(QWidget* theParent,
30                           const Config_WidgetAPI* theData,
31                           const std::string& theParentId);
32   virtual ~ModuleBase_WidgetSwitch();
33
34   /// Defines if it is supported to set the value in this widget
35   /// It returns false because this is an info widget
36   virtual bool canSetValue() const { return false; };
37
38   /// Add a page to the widget
39   /// \param theWidget a page widget
40   /// \param theName a name of page
41   virtual int addPage( ModuleBase_PageBase* theWidget,
42                        const QString& theName,
43                        const QString& theCaseId,
44                        const QPixmap& theIcon );
45
46  protected:
47   virtual int currentPageIndex() const;
48    /// Set current page by index
49   /// \param index index of the page
50   virtual void setCurrentPageIndex(int index);
51
52  private:
53   /// Combo box
54   QComboBox* myCombo;
55   QStackedLayout* myPagesLayout;
56 };
57
58 #endif /* ModuleBase_WidgetSwitch_H_ */