X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_IModule.h;h=3817abcb7bf4bf247df66385bb58a2239456bd08;hb=2e60d80d7d0b998fded953311cc8d2931ef5bb4b;hp=62b746eabb821cd8fe4c368bbece1eb705162d6c;hpb=a87ec82289d152ffd66b1cb7133bfb5cbfe92281;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_IModule.h b/src/ModuleBase/ModuleBase_IModule.h index 62b746eab..3817abcb7 100755 --- a/src/ModuleBase/ModuleBase_IModule.h +++ b/src/ModuleBase/ModuleBase_IModule.h @@ -1,3 +1,23 @@ +// Copyright (C) 2014-2017 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 +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// 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 +// +// See http://www.salome-platform.org/ or +// email : webmaster.salome@opencascade.com +// + // Copyright (C) 2014-20xx CEA/DEN, EDF R&D #ifndef ModuleBase_IModule_H @@ -12,6 +32,8 @@ #include #include +#include + #include #include #include @@ -26,11 +48,13 @@ class QMouseEvent; class QKeyEvent; class QMenu; class Config_WidgetAPI; + class ModuleBase_ModelWidget; class ModuleBase_Operation; class ModuleBase_ViewerPrs; - +class ModuleBase_ITreeNode; class ModuleBase_IWorkshop; + class ModelAPI_Result; class Events_Message; @@ -57,12 +81,6 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject virtual ~ModuleBase_IModule() {} - /// Add default selection filters of the module to the current viewer - virtual void activateSelectionFilters() {} - - /// Remove default selection filters of the module from the current viewer - virtual void deactivateSelectionFilters() {} - /// Stores the current selection virtual void storeSelection() {} @@ -85,7 +103,10 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject /// Creates an operation and send it to loop /// \param theCmdId the operation name - virtual void launchOperation(const QString& theCmdId); + /// \param isStartAfterCommitOnly operation is launched if there is no active operation or + /// it is committed + virtual void launchOperation(const QString& theCmdId, + const bool& isStartAfterCommitOnly); /// Executes feature as a modal dialog box /// \param theCmdId the operation name @@ -180,6 +201,14 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject /// \param theObject a model object virtual bool canDisplayObject(const ObjectPtr& theObject) const; + /// Returns whether the started operation may use preselection of the previous one + /// Cases are: previous operation is null, edit operation, previuos and started operations + /// kinds are the same + /// \param thePreviousOperationKind a kind of previous operation + /// \param theStartedOperationKind a kind of a started operation + virtual bool canUsePreselection(const QString& thePreviousOperationKind, + const QString& theStartedOperationKind); + /// Make some functionality after the objects are hidden in viewer /// \param theObjects a list of hidden objects //virtual void processHiddenObject(const std::list& theObjects) {}; @@ -204,8 +233,24 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject virtual void activeSelectionModes(QIntList& theModes) {} /// Appends specific selection modes for the module to the list of types - /// \param theTypes a selection modes to be extended - virtual void customSubShapesSelectionModes(QIntList& theTypes) {} + /// \param theModesType combination of available selection filters + /// \param theModes a selection modes to be extended + virtual void moduleSelectionModes(int theModesType, QIntList& theModes) = 0; + + /// Appends into container of filters module filters corresponded to the modes type + /// \param theFilterTypes container of available selection filters + /// \param theSelectionFilters [out] container to be extend by elements + virtual void moduleSelectionFilters(const QIntList& theFilterTypes, + SelectMgr_ListOfFilter& theSelectionFilters) = 0; + + /// Returns types of registered module selection filters + /// \param theSelectionFilters [out] container of type value + virtual QIntList selectionFilters() { return QIntList(); } + + /// Returns selection filter + /// \param theType selection filter type + /// \param theFilter instance of filter + virtual Handle(SelectMgr_Filter) selectionFilter(const int theType) = 0; /// Return true if the custom presentation is activated /// \param theFlag a flag of level of customization, which means that only part of sub-elements @@ -334,10 +379,10 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject void getXMLRepresentation(const std::string& theFeatureId, std::string& theXmlCfg, std::string& theDescription); -signals: - /// Signal which is emitted when operation is launched - void operationLaunched(); + /// Returns root tree node which represents a data model + virtual ModuleBase_ITreeNode* rootNode() const = 0; +signals: /// Segnal emitted when an operation is resumed /// \param theOp a resumed operation void resumed(ModuleBase_Operation* theOp);