Salome HOME
Issue #2581: Initialize attributes if they are not initialized. It can be in case...
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetConcealedObjects.h
1 // Copyright (C) 2014-2017  CEA/DEN, EDF R&D
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
18 // email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 //
20
21 #ifndef MODULEBASE_WIDGETCONCEALEDOBJECTS_H_
22 #define MODULEBASE_WIDGETCONCEALEDOBJECTS_H_
23
24 #include <ModuleBase.h>
25 #include <ModuleBase_ModelWidget.h>
26
27 #include <string>
28 #include <map>
29 #include <memory>
30
31 class ModelAPI_Object;
32
33 class QWidget;
34 class QTableWidget;
35
36 /**
37 * \ingroup GUI
38 * Implementation of model widget for table of concealed objects.
39 */
40 class MODULEBASE_EXPORT ModuleBase_WidgetConcealedObjects : public ModuleBase_ModelWidget
41 {
42   Q_OBJECT
43  public:
44   /// Constructor
45   /// \param theParent the parent object
46   /// \param theData the widget configuration.
47   ModuleBase_WidgetConcealedObjects(QWidget* theParent,
48                                     const Config_WidgetAPI* theData);
49   virtual ~ModuleBase_WidgetConcealedObjects();
50
51   /// Redefinition of virtual method
52   virtual QList<QWidget*> getControls() const;
53
54   /// The widget can not accept focus
55   virtual bool canAcceptFocus() const { return false; };
56
57 protected:
58   /// Saves the internal parameters to the given feature
59   /// \return True in success
60   virtual bool storeValueCustom();
61
62   /// Redefinition of virtual method
63   virtual bool restoreValueCustom();
64
65 private:
66   /// Creates a row in view
67   /// \param theResult a result for the row
68   void addViewRow(const std::shared_ptr<ModelAPI_Result>& theResult);
69
70 private slots:
71   /// Processes the display button click in the view.
72   /// \param theState a new state
73   void onItemToggled(bool theState);
74
75 private:
76   std::string myBaseShapeAttribute; ///< attribute of the base object
77   QTableWidget* myView; ///< table view of visibility states
78
79   std::shared_ptr<ModelAPI_Feature> myBaseFeature; ///< backup of feature of filling the table view
80   /// backup of visualized in the view concealed objects, stored to avoid table rebuild by restore
81   std::map<int, std::shared_ptr<ModelAPI_Result> > myConcealedResults;
82 };
83
84 #endif /* MODULEBASE_WIDGETCONCEALEDOBJECTS_H_ */