]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/XGUI/XGUI_FacesPanel.cpp
Salome HOME
updated copyright message
[modules/shaper.git] / src / XGUI / XGUI_FacesPanel.cpp
index 89528ce7c875d76ea297cb4303e57dab926011da..73cdb7481501251417062464563c3f950087169d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2020  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include <ModelAPI_Events.h>
 #include <ModelAPI_AttributeSelectionList.h>
 
+#include <ModuleBase_Operation.h>
+#include <ModuleBase_OperationFeature.h>
+#include <XGUI_OperationMgr.h>
+
 #include <QAction>
 #include <QCheckBox>
 #include <QFocusEvent>
 #include <QMainWindow>
 #include <QTimer>
 
+#ifdef WIN32
+#pragma warning(disable : 4189) // for skipping MAYBE_UNUSED on Win
+#endif
+
 static const int LayoutMargin = 3;
 
 //********************************************************************
@@ -88,7 +96,7 @@ void updateHiddenShapes(Handle(ModuleBase_ResultPrs) thePrs, const TopoDS_ListOf
 
 //********************************************************************
 XGUI_FacesPanel::XGUI_FacesPanel(QWidget* theParent, XGUI_Workshop* theWorkshop)
-  : QDockWidget(theParent), myWorkshop(theWorkshop), myIsActive(false)
+  : QDockWidget(theParent), myWorkshop(theWorkshop), myIsActive(false), myLastItemIndex(0)
 {
   setWindowTitle(tr("Hide Faces"));
   setObjectName("Hide Faces");
@@ -207,8 +215,10 @@ void XGUI_FacesPanel::setActivePanel(const bool theIsActive)
     // the selection is cleared by activating selection control
     myWorkshop->selector()->clearSelection();
   }
-  else
+  else{
     emit deactivated();
+    myUndoList.clear();
+  }
 }
 
 //********************************************************************
@@ -379,7 +389,7 @@ void XGUI_FacesPanel::processSelection()
     }
 
     QString aItemName = aResGroup.get()?
-      aResGroup->data()->name().c_str() : XGUI_Tools::generateName(aPrs);
+      QString::fromStdWString(aResGroup->data()->name()) : XGUI_Tools::generateName(aPrs);
     if (myListView->hasItem(aItemName))
       continue;
 
@@ -413,6 +423,8 @@ void XGUI_FacesPanel::processSelection()
 
     myItems.insert(myLastItemIndex, aPrs);
     myListView->addItem(aItemName, myLastItemIndex);
+    // add in undo list
+    myUndoList.push_back(myLastItemIndex);
     myLastItemIndex++;
     isModified = true;
   }
@@ -462,7 +474,7 @@ void XGUI_FacesPanel::processSelection()
 bool XGUI_FacesPanel::processDelete()
 {
   //appendFirstSelectionInHistory();
-  QModelIndexList anIndices = myListView->getControl()->selectionModel()->selectedIndexes();
+  //QModelIndexList anIndices = myListView->getControl()->selectionModel()->selectedIndexes();
 
   std::set<int> aSelectedIds;
   myListView->getSelectedIndices(aSelectedIds);
@@ -604,6 +616,18 @@ void XGUI_FacesPanel::onClosed()
   reset(true);
 }
 
+//********************************************************************
+
+void XGUI_FacesPanel::processUndo()
+{
+ if(!myUndoList.size())
+   return;
+
+ myListView->selectIndices({myUndoList.back()});
+ processDelete();
+ myUndoList.pop_back();
+}
+
 //********************************************************************
 void XGUI_FacesPanel::flushRedisplay() const
 {