X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetMultiSelector.h;h=f65d09a70e0d2b9c7cca4b76899818c311c7a9d9;hb=5c51b3b5025a77e6bb9ceccb29145b153beb5b00;hp=1e61a581e5ef371b3fe9553bbf696162097761db;hpb=d04d1bcc41a20e3afd64e26b25207aa6dce2afe6;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetMultiSelector.h b/src/ModuleBase/ModuleBase_WidgetMultiSelector.h old mode 100755 new mode 100644 index 1e61a581e..f65d09a70 --- a/src/ModuleBase/ModuleBase_WidgetMultiSelector.h +++ b/src/ModuleBase/ModuleBase_WidgetMultiSelector.h @@ -1,11 +1,21 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -/* - * ModuleBase_WidgetMultiSelector.h - * - * Created on: Oct 8, 2014 - * Author: sbh - */ +// 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 +// 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 +// #ifndef MODULEBASE_WIDGETMULTISELECTOR_H_ #define MODULEBASE_WIDGETMULTISELECTOR_H_ @@ -26,11 +36,11 @@ #include class QWidget; -class QListWidget; -class QComboBox; +class QCheckBox; +//class QComboBox; +class ModuleBase_ListView; class ModuleBase_IWorkshop; -class QAction; - +class ModuleBase_ChoiceCtrl; /** * \ingroup GUI @@ -66,6 +76,12 @@ class MODULEBASE_EXPORT ModuleBase_WidgetMultiSelector : public ModuleBase_Widge /// The methiod called when widget is deactivated virtual void deactivate(); + /// Update Undo/Redo actions state + virtual void updateAfterDeactivation(); + + /// Update Undo/Redo actions state + virtual void updateAfterActivation(); + /// Set the given wrapped value to the current widget /// This value should be processed in the widget according to the needs /// \param theValues the wrapped selection values @@ -77,33 +93,51 @@ class MODULEBASE_EXPORT ModuleBase_WidgetMultiSelector : public ModuleBase_Widge /// \param theValues a list of presentations virtual void getHighlighted(QList>& theValues); + /// Returns true if the action can be processed. By default it is empty and returns false. + /// \param theActionType an action type + /// \param isActionEnabled if true, the enable state of the action + virtual bool canProcessAction(ModuleBase_ActionType theActionType, bool& isActionEnabled); + + /// Returns true if the event is processed. The default implementation is empty, returns false. + virtual bool processAction(ModuleBase_ActionType theActionType, + const ActionParamPtr& theParam = ActionParamPtr()); + /// Checks the widget validity. By default, it returns true. /// \param thePrs a selected presentation in the view /// \return a boolean value virtual bool isValidSelectionCustom(const std::shared_ptr& thePrs); - /// Returns true if the event is processed. The default implementation is empty, returns false. - virtual bool processDelete(); + /// Returns list of accessible actions for Undo/Redo commands. By default it returns empty list. + /// \param theActionType type of action. It can be ActionUndo or ActionRedo. + virtual QList actionsList(ModuleBase_ActionType theActionType) const; + + /// The slot is called when user press Ok or OkPlus buttons in the parent property panel + virtual void onFeatureAccepted(); public slots: /// Slot is called on selection type changed void onSelectionTypeChanged(); - /// Slot which is called on selection event. Redefined to process XML state about - /// clear selection in neutral point - virtual void onSelectionChanged(); +protected: + /// Returns true if envent is processed. + /// Redefined to process XML state about clear selection in neutral point + virtual bool processSelection(); protected slots: - /// Slot for copy command in a list pop-up menu - void onCopyItem(); - /// Slot for delete command in a list pop-up menu void onDeleteItem(); /// Slot is called on selection of list of selected items void onListSelection(); + void onListActivated(); + + void onSameTopology(bool theOn); + protected: + /// Returns true if the event is processed. The default implementation is empty, returns false. + virtual bool processDelete(); + /// The methiod called when widget is activated virtual void activateCustom(); @@ -111,14 +145,29 @@ protected: /// \return True in success virtual bool storeValueCustom(); + /// restire type of selection by feature attribute virtual bool restoreValueCustom(); + /// Creates an element of the attribute current selection if history is empty + virtual void appendFirstSelectionInHistory(); + + /// Create an element in the history that stores the current selection, + /// position in the history is incremented + void appendSelectionInHistory(); + + /// Clear list of stored selected items, reset current position into '-1' + void clearSelectedHistory(); + /// Set the focus on the last item in the list virtual void updateFocus(); /// Computes and updates name of selected object in the widget virtual void updateSelectionName(); + /// Emits model changed info, updates the current control by selection change + /// \param theDone a state whether the selection is set + virtual void updateOnSelectionChanged(const bool theDone); + /// Retunrs a list of possible shape types /// \return a list of shapes virtual QIntList shapeTypes() const; @@ -169,32 +218,39 @@ protected: /// \param theObject a model object, a set of shapes is searched by it /// \param theShape a shape to be in the set of the object shapes /// \param theGeomSelection a map built on selection + /// \param theWorkshop a current workshop /// \return boolean result static bool findInSelection(const ObjectPtr& theObject, - const GeomShapePtr& theShape, - const std::map >& theGeomSelection); + GeomShapePtr theShape, + const std::map >& theGeomSelection, + ModuleBase_IWorkshop* theWorkshop); protected: - /// List control - QListWidget* myListControl; + ModuleBase_ListView* myListView; ///< List control - /// Combobox of types - QComboBox* myTypeCombo; + bool myIsUseChoice; ///< A flag to store use_choice parameter state - /// Provides correspondance between Result object and its shape - typedef QPair GeomSelection; + QStringList myShapeTypes; ///< List of Shape types defined in XML - /// A copy action for pop-up menu in a list control - QAction* myCopyAction; - - /// A delete action for pop-up menu in a list control - QAction* myDeleteAction; - - /// A flag to store use_choice parameter state - bool myIsUseChoice; + /// Control for types + ModuleBase_ChoiceCtrl* myTypeCtrl; /// A flag to clear selection by click in empty place in the viewer bool myIsNeutralPointClear; + + /// A flag to block set selection perform if the method is in process + bool myIsSetSelectionBlocked; + + /// A container of selected objects + QList > > mySelectedHistoryValues; + + /// Position in a container of selected values + int myCurrentHistoryIndex; + + bool myIsFirst; + std::string myDefMode; + + QCheckBox* myGeomCheck; }; #endif /* MODULEBASE_WIDGETFILESELECTOR_H_ */