X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_MenuGroupPanel.cpp;h=f268c369122f0d70094eb6546747a7b1d506d71c;hb=4224f4dbe7ceaefe74b5d6b79a5840a9f5df2d7a;hp=b88960f7b769d6fc7868fb8001e5b0f1ec9ff21f;hpb=f09c9895be486d30c9aa48da040c3aeb3ccbaa74;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_MenuGroupPanel.cpp b/src/XGUI/XGUI_MenuGroupPanel.cpp index b88960f7b..f268c3691 100644 --- a/src/XGUI/XGUI_MenuGroupPanel.cpp +++ b/src/XGUI/XGUI_MenuGroupPanel.cpp @@ -7,55 +7,83 @@ #include #include +#include -XGUI_MenuGroupPanel::XGUI_MenuGroupPanel(QWidget *parent) : - QWidget(parent), myNewRow(0), myNewCol(0), myMaxRow(1) +XGUI_MenuGroupPanel::XGUI_MenuGroupPanel(QWidget *parent) + : QFrame(parent), myNewRow(0), myNewCol(0), myMaxRow(1) { - myLayout = new QGridLayout(this); - myLayout->setSpacing(0); - myLayout->setMargin(0); - myLayout->setContentsMargins(0,0,0,0); + myLayout = new QGridLayout(this); + myLayout->setSpacing(0); + myLayout->setMargin(0); + myLayout->setContentsMargins(0, 0, 0, 0); + setFrameShape(QFrame::NoFrame); } + void XGUI_MenuGroupPanel::addCommand(XGUI_Command* theAction) { - addWidget(theAction->requestWidget(this)); + myActions.append(theAction); + QWidget* aWdg = theAction->requestWidget(this); + myActionWidget.append(aWdg); + addWidget(aWdg); } void XGUI_MenuGroupPanel::placeWidget(QWidget* theWgt) { - if (myMaxRow == myNewRow) { - myNewRow = 0; - myNewCol++; - } - myLayout->addWidget(theWgt, myNewRow, myNewCol, Qt::AlignLeft); - myNewRow++; + if (myMaxRow == myNewRow) { + myNewRow = 0; + myNewCol++; + } + myLayout->addWidget(theWgt, myNewRow, myNewCol); + myLayout->setRowStretch(myNewRow, 0); + myNewRow++; } void XGUI_MenuGroupPanel::addWidget(QWidget* theWgt) { - placeWidget(theWgt); - myWidgets.append(theWgt); + placeWidget(theWgt); } - void XGUI_MenuGroupPanel::resizeEvent(QResizeEvent* theEvent) { - QWidget::resizeEvent(theEvent); - if (myWidgets.size() == 0) - return; + QWidget::resizeEvent(theEvent); + if (myActions.size() == 0) + return; - int aH = theEvent->size().height(); - int aMaxRow = (int) floor(double(aH / MIN_BUTTON_HEIGHT)); - if (aMaxRow == myMaxRow) - return; + int aH = theEvent->size().height(); + int aMaxRow = (int) floor(double(aH / MIN_BUTTON_HEIGHT)); + if (aMaxRow == myMaxRow) + return; - myMaxRow = aMaxRow; - QListIterator aIt(myWidgets); - myNewRow = 0; - myNewCol = 0; - while (aIt.hasNext()) { - placeWidget(aIt.next()); - } + myMaxRow = aMaxRow; + myNewRow = 0; + myNewCol = 0; + foreach(QWidget* eachWidget, myActionWidget) { + placeWidget(eachWidget); + } + myLayout->setRowStretch(myMaxRow + 1, 1); +} + +XGUI_Command* XGUI_MenuGroupPanel::addFeature(const QString& theId, const QString& theTitle, + const QString& theTip, const QIcon& theIcon, + const QKeySequence& theKeys, bool isCheckable) +{ + XGUI_Command* aCommand = new XGUI_Command(theId, theIcon, theTitle, this, isCheckable); + aCommand->setToolTip(theTip); + if (!theKeys.isEmpty()) { + aCommand->setShortcut(theKeys); + } + addCommand(aCommand); + return aCommand; +} + + +XGUI_Command* XGUI_MenuGroupPanel::feature(const QString& theId) const +{ + foreach (XGUI_Command* aCmd, myActions) { + if (aCmd->data().toString() == theId) + return aCmd; + } + return 0; }