Salome HOME
Selection validators improvements
[modules/shaper.git] / src / XGUI / XGUI_Command.cpp
index 3ba1689a3b5168c44bb828a7f22de419154429ee..b289f8014ec6b65c6efe2084978bebd0fe0a6068 100644 (file)
@@ -1,62 +1,68 @@
 #include "XGUI_Command.h"
 
-#include <QPushButton>
+#include <QToolButton>
 
-XGUI_Command::XGUI_Command(const QString& theId, QObject * parent) :
-    QWidgetAction(parent), myId(theId)
+XGUI_Command::XGUI_Command(const QString& theId, QObject * parent, bool isCheckable)
+    : QWidgetAction(parent), myCheckable(isCheckable)
 {
+  setData(theId);
 }
 
-XGUI_Command::XGUI_Command(const QString& theId, const QIcon& icon, const QString& text, QObject* parent):
-    QWidgetAction(parent), myId(theId)
+XGUI_Command::XGUI_Command(const QString& theId, const QIcon& icon, const QString& text,
+                           QObject* parent, bool isCheckable)
+    : QWidgetAction(parent), myCheckable(isCheckable)
 {
-    setIcon(icon);
-    setText(text);
+  setIcon(icon);
+  setText(text);
+  setData(theId);
 }
 
-
 XGUI_Command::~XGUI_Command()
 {
 }
 
 QWidget* XGUI_Command::createWidget(QWidget* theParent)
 {
-    if (theParent->inherits("XGUI_MenuGroupPanel")) {
-        QPushButton* aBtn = new QPushButton(theParent);
-        aBtn->setIcon(icon());
-        aBtn->setText(text());
-        QKeySequence aKeys = shortcut();
-        QString aToolTip = toolTip();
-        if (!aKeys.isEmpty())
-            aToolTip = aToolTip + " (" + aKeys.toString() + ")";
-        if (!aToolTip.isEmpty())
-            aBtn->setToolTip(aToolTip);
-
-        aBtn->addAction(this);
-        connect(aBtn, SIGNAL(clicked()), this, SLOT(trigger()));
-        aBtn->setFlat(true);
-        aBtn->setMinimumSize(MIN_BUTTON_WIDTH, MIN_BUTTON_HEIGHT);
-        return aBtn;
-    }
-    return QWidgetAction::createWidget(theParent);
-}
+  if (theParent->inherits("XGUI_MenuGroupPanel")) {
+    QToolButton* aButton = new QToolButton(theParent);
+    aButton->setIcon(icon());
+    aButton->setText(text());
+    aButton->setStyleSheet("QToolButton::menu-indicator { image: none; }");
+    aButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+    aButton->setAutoRaise(true);
+    aButton->setArrowType(Qt::NoArrow);
+    aButton->setCheckable(myCheckable);
+    aButton->setMinimumSize(MIN_BUTTON_WIDTH, MIN_BUTTON_HEIGHT);
+    aButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+    QKeySequence aKeys = shortcut();
+    QString aToolTip = toolTip();
+    if (!aKeys.isEmpty())
+      aToolTip = aToolTip + " (" + aKeys.toString() + ")";
+    if (!aToolTip.isEmpty())
+      aButton->setToolTip(aToolTip);
 
-bool XGUI_Command::enabled() const
-{
-    return isEnabled();
+    aButton->addAction(this);
+    connect(aButton, SIGNAL(clicked()), this, SLOT(trigger()));
+    connect(this, SIGNAL(toggled(bool)), aButton, SLOT(setChecked(bool)));
+    connect(this, SIGNAL(toggled(bool)), aButton, SLOT(setChecked(bool)));
+    this->setCheckable(myCheckable);
+
+    return aButton;
+  }
+  return QWidgetAction::createWidget(theParent);
 }
 
-void XGUI_Command::enable()
+void XGUI_Command::connectTo(const QObject* theResiver, const char* theSlot)
 {
-    setEnabled(true);
+    connect(this, SIGNAL(triggered(bool)), theResiver, theSlot);
 }
 
-void XGUI_Command::disable()
+const QStringList& XGUI_Command::nestedCommands() const
 {
-    setEnabled(false);
+  return myNestedCommands;
 }
 
-void XGUI_Command::connectTo(const QObject* theResiver, const char* theSlot)
+void XGUI_Command::setNestedCommands(const QStringList& myUnblockableCommands)
 {
-    connect(this, SIGNAL(triggered()), theResiver, theSlot);
-}
\ No newline at end of file
+  this->myNestedCommands = myUnblockableCommands;
+}