-// Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#ifndef XGUI_FacesPanel_H_
#include <ModelAPI_Object.h>
#include <ModuleBase_ActionType.h>
+#include <ModuleBase_Definitions.h>
#include <ModuleBase_ViewerPrs.h>
+#include <SelectMgr_ListOfFilter.hxx>
+
#include <QDockWidget>
#include <QObject>
#include <QMap>
/// \param isToFlushRedisplay flag if redisplay should be flushed immediatelly
virtual void reset(const bool isToFlushRedisplay);
+ /// Returns whether faces panel contains elements
+ /// \return boolean value
+ bool isEmpty() const;
+
+ /// Fills container with the panel selection mode: FACE
+ // \param theModes [out] a container of modes
+ void selectionModes(QIntList& theModes);
+
+ /// Appends into container of workshop selection filters
+ /// \param [out] selection filters
+ void selectionFilters(SelectMgr_ListOfFilter& theSelectionFilters);
+
/// Returns whether the panel is active or not
bool isActivePanel() const { return myIsActive; }
bool customizeObject(const std::shared_ptr<ModelAPI_Object>& theObject,
const std::shared_ptr<GeomAPI_AISObject>& thePresentation);
-protected:
- /// Add panel selection filters to the current viewer
- virtual void activateSelectionFilters() {}
-
- /// Remove panel selection filters from the current viewer
- virtual void deactivateSelectionFilters() {}
-
protected:
/// Reimplementation to emit a signal about the panel close
virtual void closeEvent(QCloseEvent* theEvent);
void closed();
private:
- /// Activate or deactivate selection and selection filters
- void activateSelection(bool toActivate);
-
/// Redisplay objects.
/// \param theObjects container of objects
- /// \param isToFlushRedisplay flag if redisplay should be flushed immediatelly
/// \return true if some of objects was redisplayed
- static bool redisplayObjects(const std::set<std::shared_ptr<ModelAPI_Object> >& theObjects,
- const bool isToFlushRedisplay);
+ static bool redisplayObjects(const std::set<std::shared_ptr<ModelAPI_Object> >& theObjects);
/// Display objects if the objects are in a container of hidden by this pane.
/// \param theObjects container of objects
/// \param theHiddenObjects hidden objects, if object is in the container, it should be removed
- /// \param isToFlushRedisplay flag if redisplay should be flushed immediatelly
/// \return true if some of objects was redisplayed
static bool displayHiddenObjects(const std::set<std::shared_ptr<ModelAPI_Object> >& theObjects,
- std::set<std::shared_ptr<ModelAPI_Object> >& theHiddenObjects,
- const bool isToFlushRedisplay);
+ std::set<std::shared_ptr<ModelAPI_Object> >& theHiddenObjects);
/// Iterates by items and hide objects where all sub-shapes are hidden
/// \return true if some of objects was redisplayed
static void updateProcessedObjects(QMap<int, std::shared_ptr<ModuleBase_ViewerPrs> > theItems,
std::set<std::shared_ptr<ModelAPI_Object> >& theObjects);
- /// Generates a presentation name in form: <object_name>/<face>_<face_index>
- /// \param thePrs a presentation
- /// \return string value
- static QString generateName(const std::shared_ptr<ModuleBase_ViewerPrs>& thePrs);
-
protected slots:
/// Deletes element in list of items
void onDeleteItem();
/// Closes faces panel restore all hidden faces by calling reset()
void onClosed();
+private:
+ /// Flushes redisplay event and perform update of object browser icons
+ /// (objects might be hidden/shown)
+ void flushRedisplay() const;
+
protected:
QCheckBox* myHiddenOrTransparent; ///< if checked - transparent, else hidden
ModuleBase_ListView* myListView; ///< list control of processed faces