From 3db5cdff1249e4f7186d8779ff191d511fc1e3b9 Mon Sep 17 00:00:00 2001 From: vsv Date: Mon, 3 Jun 2019 16:05:43 +0300 Subject: [PATCH] Update of GUI --- .../ModuleBase_WidgetMultiSelector.cpp | 28 ++++- .../ModuleBase_WidgetMultiSelector.h | 2 + .../ModuleBase_WidgetSelectionFilter.cpp | 108 +++++++++--------- .../ModuleBase_WidgetSelectionFilter.h | 10 +- src/XGUI/XGUI_pictures.qrc | 3 +- src/XGUI/pictures/add.png | Bin 3329 -> 1173 bytes src/XGUI/pictures/delete.png | Bin 517 -> 226 bytes src/XGUI/pictures/reverce.png | Bin 0 -> 679 bytes 8 files changed, 84 insertions(+), 67 deletions(-) create mode 100644 src/XGUI/pictures/reverce.png diff --git a/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp b/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp index 33fdafa0a..11c502778 100644 --- a/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp +++ b/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp @@ -63,6 +63,7 @@ #include #include #include +#include #include #include @@ -157,11 +158,6 @@ ModuleBase_WidgetMultiSelector::ModuleBase_WidgetMultiSelector(QWidget* theParen } } } - std::string aUseFilters = theData->getProperty("use_filters"); - if (aUseFilters.length() > 0) { - myFiltersWgt = new ModuleBase_FilterStarter(aUseFilters.c_str(), this, theWorkshop); - aMainLay->addWidget(myFiltersWgt); - } QString aToolTip = QString::fromStdString(theData->widgetTooltip()); QString anObjName = QString::fromStdString(attributeID()); @@ -173,6 +169,23 @@ ModuleBase_WidgetMultiSelector::ModuleBase_WidgetMultiSelector(QWidget* theParen aMainLay->addWidget(myListView->getControl()); connect(myTypeCtrl, SIGNAL(valueChanged(int)), this, SLOT(onSelectionTypeChanged())); + std::string aUseFilters = theData->getProperty("use_filters"); + if (aUseFilters.length() > 0) { + QWidget* aFltrWgt = new QWidget(this); + QHBoxLayout* aFltrLayout = new QHBoxLayout(aFltrWgt); + + myFiltersWgt = new ModuleBase_FilterStarter(aUseFilters.c_str(), aFltrWgt, theWorkshop); + aFltrLayout->addWidget(myFiltersWgt); + + aFltrLayout->addStretch(); + + QPushButton* aShowBtn = new QPushButton(tr("Show only"), aFltrWgt); + connect(aShowBtn, SIGNAL(clicked(bool)), SLOT(onShowOnly())); + aFltrLayout->addWidget(aShowBtn); + + aMainLay->addWidget(aFltrWgt); + } + bool aSameTop = theData->getBooleanAttribute("same_topology", false); if (aSameTop) { myGeomCheck = new QCheckBox(tr("Add elements that share the same topology"), this); @@ -1075,3 +1088,8 @@ void ModuleBase_WidgetMultiSelector::onSameTopology(bool theOn) updateObject(myFeature); } } + +void ModuleBase_WidgetMultiSelector::onShowOnly() +{ + +} diff --git a/src/ModuleBase/ModuleBase_WidgetMultiSelector.h b/src/ModuleBase/ModuleBase_WidgetMultiSelector.h index b77ea969f..651526ea8 100644 --- a/src/ModuleBase/ModuleBase_WidgetMultiSelector.h +++ b/src/ModuleBase/ModuleBase_WidgetMultiSelector.h @@ -135,6 +135,8 @@ protected slots: void onSameTopology(bool theOn); + void onShowOnly(); + protected: /// Returns true if the event is processed. The default implementation is empty, returns false. virtual bool processDelete(); diff --git a/src/ModuleBase/ModuleBase_WidgetSelectionFilter.cpp b/src/ModuleBase/ModuleBase_WidgetSelectionFilter.cpp index 5112ba68b..9da94eb6c 100644 --- a/src/ModuleBase/ModuleBase_WidgetSelectionFilter.cpp +++ b/src/ModuleBase/ModuleBase_WidgetSelectionFilter.cpp @@ -43,6 +43,7 @@ #include #include #include +#include static FeaturePtr SelectorFeature; static std::string AttributeId; @@ -101,8 +102,15 @@ ModuleBase_FilterStarter::ModuleBase_FilterStarter(const std::string& theFeature void ModuleBase_FilterStarter::onFiltersLaunch() { + QWidget* aParent = parentWidget(); ModuleBase_WidgetMultiSelector* aSelector = - dynamic_cast(parent()); + dynamic_cast(aParent); + while (!aSelector) { + aParent = aParent->parentWidget(); + aSelector = dynamic_cast(aParent); + } + if (!aSelector) + return; SelectorFeature = aSelector->feature(); AttributeId = aSelector->attributeID(); @@ -121,14 +129,14 @@ ModuleBase_FilterItem::ModuleBase_FilterItem( mySelection(std::dynamic_pointer_cast(theSelection)) { QHBoxLayout* aLayout = new QHBoxLayout(this); - aLayout->setContentsMargins(0, 0, 0, 0); + ModuleBase_Tools::zeroMargins(aLayout); // Reverse filter button myRevBtn = new QToolButton(this); myRevBtn->setCheckable(true); myRevBtn->setChecked(false); myRevBtn->setAutoRaise(true); - myRevBtn->setIcon(QIcon(":pictures/accept.png")); + myRevBtn->setIcon(QIcon(":pictures/add.png")); myRevBtn->setToolTip(tr("Reverse the filter")); connect(myRevBtn, SIGNAL(toggled(bool)), SLOT(onReverse(bool))); aLayout->addWidget(myRevBtn); @@ -137,23 +145,21 @@ ModuleBase_FilterItem::ModuleBase_FilterItem( aLayout->addWidget(new QLabel(aFilterName.c_str(), this), 1); QToolButton* aDelBtn = new QToolButton(this); - aDelBtn->setIcon(QIcon(":pictures/button_cancel.png")); + aDelBtn->setIcon(QIcon(":pictures/delete.png")); aDelBtn->setAutoRaise(true); aDelBtn->setToolTip(tr("Delete the filter")); connect(aDelBtn, SIGNAL(clicked(bool)), SLOT(onDelete())); aLayout->addWidget(aDelBtn); - - myRevBtn->setChecked(mySelection->isReversed(myFilterID)); } void ModuleBase_FilterItem::onReverse(bool theCheck) { - mySelection->setReversed(myFilterID, theCheck); + //mySelection->setReversed(myFilterID, theCheck); if (theCheck) - myRevBtn->setIcon(QIcon(":pictures/stop.png")); + myRevBtn->setIcon(QIcon(":pictures/reverce.png")); else - myRevBtn->setIcon(QIcon(":pictures/accept.png")); + myRevBtn->setIcon(QIcon(":pictures/add.png")); } void ModuleBase_FilterItem::onDelete() @@ -183,19 +189,18 @@ ModuleBase_WidgetSelectionFilter::ModuleBase_WidgetSelectionFilter(QWidget* theP QVBoxLayout* aMainLayout = new QVBoxLayout(this); ModuleBase_Tools::adjustMargins(aMainLayout); - myFiltersGroup = new QGroupBox(tr("Dynamic Filters"), this); - myGroupLayout = new QVBoxLayout(myFiltersGroup); - myGroupLayout->setContentsMargins(0, 0, 0, 0); - myGroupLayout->setSpacing(0); - - QWidget* aFiltersWgt = new QWidget(myFiltersGroup); - QHBoxLayout* aFiltersLay = new QHBoxLayout(aFiltersWgt); - ModuleBase_Tools::adjustMargins(aFiltersLay); + QGroupBox* aFiltersGroup = new QGroupBox(tr("Filters"), this); + QVBoxLayout* aGroupLayout = new QVBoxLayout(aFiltersGroup); + aGroupLayout->setContentsMargins(0, 0, 0, 0); + aGroupLayout->setSpacing(0); - QLabel* aFilterLbl = new QLabel(aFiltersWgt); - aFilterLbl->setPixmap(QPixmap(":pictures/filter.png")); + myFiltersWgt = new QWidget(); + myFiltersLayout = new QVBoxLayout(myFiltersWgt); + myFiltersLayout->setContentsMargins(0, 0, 0, 0); + aGroupLayout->addWidget(myFiltersWgt); - myFiltersCombo = new QComboBox(aFiltersWgt); + myFiltersCombo = new QComboBox(aFiltersGroup); + myFiltersCombo->addItem(tr("Add new filter...")); SessionPtr aSession = ModelAPI_Session::get(); std::list allFilters = aSession->filters()->filters((GeomAPI_Shape::ShapeType) mySelectionType); @@ -206,20 +211,10 @@ ModuleBase_WidgetSelectionFilter::ModuleBase_WidgetSelectionFilter(QWidget* theP myFilters.push_back(aSession->filters()->id(*aIt)); } myFiltersCombo->addItems(aItems); + connect(myFiltersCombo, SIGNAL(currentIndexChanged(int)), SLOT(onAddFilter(int))); - QToolButton* aAddBtn = new QToolButton(aFiltersWgt); - aAddBtn->setIcon(QIcon(":pictures/add.png")); - aAddBtn->setAutoRaise(true); - aAddBtn->setToolTip(tr("Add the current filter")); - connect(aAddBtn, SIGNAL(clicked()), SLOT(onAddItem())); - - aFiltersLay->addWidget(aFilterLbl); - aFiltersLay->addWidget(myFiltersCombo, 1); - aFiltersLay->addWidget(aAddBtn); - - myGroupLayout->addWidget(aFiltersWgt); - - aMainLayout->addWidget(myFiltersGroup); + aGroupLayout->addWidget(myFiltersCombo); + aMainLayout->addWidget(aFiltersGroup); // Select Button QWidget* aBtnWgt = new QWidget(this); @@ -237,28 +232,19 @@ ModuleBase_WidgetSelectionFilter::ModuleBase_WidgetSelectionFilter(QWidget* theP // Label widgets QWidget* aLblWgt = new QWidget(this); QHBoxLayout* aLblLayout = new QHBoxLayout(aLblWgt); - ModuleBase_Tools::adjustMargins(aLblLayout); + ModuleBase_Tools::zeroMargins(aLblLayout); aLblLayout->addWidget(new QLabel(tr("Number of selected objects:"), aLblWgt)); myNbLbl = new QLabel("0", aLblWgt); aLblLayout->addWidget(myNbLbl); - aMainLayout->addWidget(aLblWgt); - // Show only button - QWidget* aBtn2Wgt = new QWidget(this); - QHBoxLayout* aBtn2Layout = new QHBoxLayout(aBtn2Wgt); - ModuleBase_Tools::adjustMargins(aBtn2Layout); - - aBtn2Layout->addStretch(1); - - myShowBtn = new QPushButton(tr("Show only"), aBtn2Wgt); - myShowBtn->setCheckable(true); + myShowBtn = new QCheckBox(tr("Show only"), this); connect(myShowBtn, SIGNAL(toggled(bool)), SLOT(onShowOnly(bool))); - aBtn2Layout->addWidget(myShowBtn); + aLblLayout->addWidget(myShowBtn); - aMainLayout->addWidget(aBtn2Wgt); + aMainLayout->addWidget(aLblWgt); aMainLayout->addStretch(1); @@ -288,16 +274,16 @@ ModuleBase_WidgetSelectionFilter::~ModuleBase_WidgetSelectionFilter() AttributeId = ""; } -void ModuleBase_WidgetSelectionFilter::onAddItem() +void ModuleBase_WidgetSelectionFilter::onAddFilter(int theIndex) { - int aId = myFiltersCombo->currentIndex(); - myFiltersCombo->removeItem(aId); + if (theIndex == 0) + return; std::list::iterator aIt; int i; std::string aFilter; for (aIt = myFilters.begin(), i = 0; aIt != myFilters.cend(); i++, aIt++) { - if (i == aId) { + if (i == (theIndex - 1)) { aFilter = (*aIt); myFilters.erase(aIt); break; @@ -306,26 +292,36 @@ void ModuleBase_WidgetSelectionFilter::onAddItem() if (!aFilter.empty()) { myUseFilters.push_back(aFilter); ModuleBase_FilterItem* aItem = - new ModuleBase_FilterItem(aFilter, mySelectorFeature, myFiltersGroup); + new ModuleBase_FilterItem(aFilter, mySelectorFeature, myFiltersWgt); connect(aItem, SIGNAL(deleteItem(ModuleBase_FilterItem*)), SLOT(onDeleteItem(ModuleBase_FilterItem*))); - myGroupLayout->addWidget(aItem); + myFiltersLayout->addWidget(aItem); + + FiltersFeaturePtr aFiltersFeature = + std::dynamic_pointer_cast(myFeature); + aFiltersFeature->addFilter(aFilter); } updateSelectBtn(); clearCurrentSelection(true); updateNumberSelected(); + myFiltersCombo->setCurrentIndex(0); + myFiltersCombo->removeItem(theIndex); } void ModuleBase_WidgetSelectionFilter::onDeleteItem(ModuleBase_FilterItem* theItem) { std::string aFilter = theItem->filter(); - myGroupLayout->removeWidget(theItem); + myFiltersLayout->removeWidget(theItem); theItem->deleteLater(); myUseFilters.remove(aFilter); myFilters.push_back(aFilter); myFiltersCombo->addItem(ModelAPI_Session::get()->filters()->filter(aFilter)->name().c_str()); + FiltersFeaturePtr aFiltersFeature = + std::dynamic_pointer_cast(myFeature); + aFiltersFeature->removeFilter(aFilter); + updateSelectBtn(); clearCurrentSelection(true); updateNumberSelected(); @@ -402,13 +398,13 @@ void ModuleBase_WidgetSelectionFilter::updatePreview(const TopoDS_Shape& theShap } -void ModuleBase_WidgetSelectionFilter::onShowOnly(bool theErase) +void ModuleBase_WidgetSelectionFilter::onShowOnly(bool theShow) { if (myPreview.IsNull()) return; Handle(AIS_InteractiveContext) aCtx = myWorkshop->viewer()->AISContext(); - if (theErase) { + if (theShow) { aCtx->SetDisplayMode(myPreview, AIS_Shaded, false); myListIO.Clear(); aCtx->DisplayedObjects(AIS_KOI_Shape, -1, myListIO); @@ -422,7 +418,7 @@ void ModuleBase_WidgetSelectionFilter::onShowOnly(bool theErase) for (aIt = myListIO.cbegin(); aIt != myListIO.cend(); aIt++) { aShapeIO = Handle(AIS_Shape)::DownCast(*aIt); if (!aShapeIO.IsNull()) { - if (theErase) + if (theShow) aCtx->Erase(aShapeIO, false); else aCtx->Display(aShapeIO, false); diff --git a/src/ModuleBase/ModuleBase_WidgetSelectionFilter.h b/src/ModuleBase/ModuleBase_WidgetSelectionFilter.h index 2fe5b05da..39645d88b 100644 --- a/src/ModuleBase/ModuleBase_WidgetSelectionFilter.h +++ b/src/ModuleBase/ModuleBase_WidgetSelectionFilter.h @@ -39,6 +39,7 @@ class QGroupBox; class QToolButton; class QVBoxLayout; class QPushButton; +class QCheckBox; class ModuleBase_IWorkshop; @@ -110,7 +111,7 @@ protected: virtual bool restoreValueCustom() { return true; } private slots: - void onAddItem(); + void onAddFilter(int); void onDeleteItem(ModuleBase_FilterItem* theItem); void onSelect(); void onShowOnly(bool theErase); @@ -124,12 +125,13 @@ private: private: ModuleBase_IWorkshop* myWorkshop; + QWidget* myFiltersWgt; + QVBoxLayout* myFiltersLayout; + QComboBox* myFiltersCombo; - QGroupBox* myFiltersGroup; - QVBoxLayout* myGroupLayout; QPushButton* mySelectBtn; QLabel* myNbLbl; - QPushButton* myShowBtn; + QCheckBox* myShowBtn; int mySelectionType; std::list myFilters; diff --git a/src/XGUI/XGUI_pictures.qrc b/src/XGUI/XGUI_pictures.qrc index 11b4af9de..b8163172b 100644 --- a/src/XGUI/XGUI_pictures.qrc +++ b/src/XGUI/XGUI_pictures.qrc @@ -86,7 +86,6 @@ pictures/arrow-down.png pictures/configure_toolbars.png pictures/add.png - pictures/accept.png - pictures/stop.png + pictures/reverce.png diff --git a/src/XGUI/pictures/add.png b/src/XGUI/pictures/add.png index 5b051f647fecd43ea4ed665486734acb38eaa952..388f8ffed3ed1d1a8cff3ae8b81bd0a24e891f34 100644 GIT binary patch delta 1165 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 LNkvXXu0mjf4`n&o diff --git a/src/XGUI/pictures/delete.png b/src/XGUI/pictures/delete.png index 8bc7506aa2962d07854eac6c97cc7ac1b80c4e20..6d2aea896730f72445e4121699dad5a875889490 100644 GIT binary patch delta 198 zcmZo=dBiwDrJk`k$lZxy-8q?;3=9k`>5jgR3=A9lx&I`x0{NT;9+AZi47}Gsm~ldW z*4gkc80ti6i-G?P7?-iedCl&Xj_U+Zzo(o{|&Ylt<0nMyyn7p$O zd~pH9*icn|woXspW}(+A)$3T|U-17MqrXmw%4XL13T26MzsClhqSFK|;QMYGyb}aD z;Cb7B)fyX6ugAdMs(H4SX3&ckHh~5Q2lmlm7%TK}Q)JhO#g004&y004{`008|G004oC004bx008N<002Dr000?VJDhBG0004t zX+uL$Nkc;*P;zf(X>4Tx04UF`l1)njQ51&XnGiQt8;OtPh}{AE2f$dCa;yM~hx`!4;MC9JvvSm5W|u@UOWAxu z!#~T?wwyeXl2JADdd`x{Go}T}S#kak@Pz~tT(Meoo zZ2X^Cyc&q1S|OlcM<;2bp5A|CJl(ED> literal 0 HcmV?d00001 -- 2.39.2