Salome HOME
[bos #32216][CEA] GUI ergonomic. Fixed scaling of Sketcher symbols because of using...
[modules/shaper.git] / src / SHAPERGUI / SHAPERGUI_NestedButton.h
1 // Copyright (C) 2014-2024  CEA, EDF
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
20 /*
21  * SHAPERGUI_NestedButton.h
22  *
23  *  Created on: Apr 13, 2015
24  *      Author: sbh
25  */
26
27 #ifndef SRC_SHAPERGUI_NESTEDBUTTON_H_
28 #define SRC_SHAPERGUI_NESTEDBUTTON_H_
29
30 #include <QtxAction.h>
31
32 class QFrame;
33 class QAction;
34 class QWidget;
35 class QToolButton;
36
37 /*!
38  * \ingroup Salome
39  * Custom (nested) button in salome mode.
40  */
41 class SHAPERGUI_NestedButton : public QtxAction
42 {
43   Q_OBJECT
44
45 public:
46   /// Constructor
47   /// \param theParent a parent objects
48   /// \param theID Application-unique action ID is used by ShortcutMgr, FindAction dialog, etc.
49   /// \param theNestedActions a list of nested actions
50   SHAPERGUI_NestedButton(QObject* theParent, const QString& theID, const QList<QAction*>& theNestedActions);
51   virtual ~SHAPERGUI_NestedButton() = default;
52
53   virtual void setEnabled(bool theOn);
54
55 private slots:
56   /// Shows/hides the additional buttons widget
57   void showAdditionalButtons(bool);
58
59 protected:
60   /// Creates the button representation
61   /// \param theParent a parent widget
62   virtual QWidget * createWidget(QWidget * theParent);
63
64 private:
65   QList<QAction*> myNestedActions; ///< list of nested actions
66   QWidget* myAdditionalButtonsWidget; ///< widget to precess additional buttons visibility
67   QFrame* myButtonFrame; ///< frame arround button representation
68   QToolButton* myThisButton; ///< main button
69 };
70
71 #endif /* SRC_SHAPERGUI_NESTEDBUTTON_H_ */