Salome HOME
Make concealment of results working on compsolids: if at least one sub-body is concea...
[modules/shaper.git] / src / NewGeom / NewGeom_NestedButton.cpp
1 /*
2  * NewGeom_NestedButton.cpp
3  *
4  *  Created on: Apr 13, 2015
5  *      Author: sbh
6  */
7
8 #include <NewGeom_NestedButton.h>
9
10 #include <QAction>
11 #include <QFrame>
12 #include <QHBoxLayout>
13 #include <QToolButton>
14
15 NewGeom_NestedButton::NewGeom_NestedButton(QObject* theParent,
16                                            const QList<QAction*>& theNestedActions)
17 : QWidgetAction(theParent),
18   myNestedActions(theNestedActions),
19   myAdditionalButtonsWidget(0),
20   myButtonFrame(0),
21   myThisButton(0)
22 {
23 }
24
25 NewGeom_NestedButton::~NewGeom_NestedButton()
26 {
27 }
28
29 void NewGeom_NestedButton::showAdditionalButtons(bool isShow)
30 {
31   myAdditionalButtonsWidget->setVisible(isShow);
32   if (isShow) {
33     myButtonFrame->setFrameStyle(QFrame::WinPanel);
34     myButtonFrame->setFrameShadow(QFrame::Sunken);
35     myThisButton->setAutoRaise(false);
36   } else {
37     myButtonFrame->setFrameStyle(QFrame::NoFrame);
38     myButtonFrame->setFrameShadow(QFrame::Plain);
39     myThisButton->setAutoRaise(true);
40   }
41 }
42
43 QWidget * NewGeom_NestedButton::createWidget(QWidget * theParent)
44 {
45   myButtonFrame = new QFrame(theParent);
46   QHBoxLayout* aBoxLay = new QHBoxLayout(myButtonFrame);
47   aBoxLay->setContentsMargins(2, 0, 0, 0);
48   aBoxLay->setSpacing(1);
49   QSizePolicy aSizePolicy;
50   aSizePolicy.setControlType(QSizePolicy::ToolButton);
51   myButtonFrame->setSizePolicy(aSizePolicy);
52
53   myThisButton = new QToolButton(myButtonFrame);
54   myThisButton->setDefaultAction(this);
55   myThisButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
56   aBoxLay->addWidget(myThisButton, 1);
57
58   myAdditionalButtonsWidget = new QWidget(myButtonFrame);
59   QHBoxLayout* aAdditionalBoxLay = new QHBoxLayout(myAdditionalButtonsWidget);
60   aAdditionalBoxLay->setContentsMargins(0, 0, 0, 0);
61   aAdditionalBoxLay->setSpacing(1);
62   foreach (QAction* eachAct, myNestedActions) {
63     QToolButton* aButton = new QToolButton(myButtonFrame);
64     aButton->setDefaultAction(eachAct);
65     aButton->setAutoRaise(true);
66     aAdditionalBoxLay->addWidget(aButton);
67   }
68   myAdditionalButtonsWidget->setLayout(aAdditionalBoxLay);
69   aBoxLay->addWidget(myAdditionalButtonsWidget);
70
71   myButtonFrame->setLayout(aBoxLay);
72
73   showAdditionalButtons(false);
74   connect(this, SIGNAL(toggled(bool)), this, SLOT(showAdditionalButtons(bool)));
75   connect(this, SIGNAL(changed()), this, SLOT(actionStateChanged()));
76   return myButtonFrame;
77 }
78
79 void NewGeom_NestedButton::actionStateChanged()
80 {
81   if (isEnabled()) {
82     QString s = "true";
83   } else {
84     QString s = "false";
85   }
86   
87 }