ImagingTools Core SDK
CSelection.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <imod/TSingleModelObserverBase.h>
7
8// ImtCore includes
9#include <imtbase/TModelUpdateBinder.h>
10#include <imtbase/ICollectionInfo.h>
11#include <imtbase/ISelection.h>
12
13
14namespace imtbase
15{
16
17
21class CSelection: virtual public ISelection
22{
23public:
24 CSelection();
25 CSelection(SelectionMode selectionMode);
26
27 void SetSelectionConstraints(ICollectionInfo* selectionConstraintsPtr);
28
29 // reimplemented (ISelection)
30 virtual const ICollectionInfo* GetSelectionConstraints() const override;
31 virtual SelectionMode GetSelectionMode() const override;
32 virtual bool SetSelectionMode(SelectionMode mode) override;
33 virtual Ids GetSelectedIds() const override;
34 virtual bool SetSelectedIds(const Ids& selectedIds) override;
35
36 // reimplement (iser::ISerializable)
37 virtual bool Serialize(iser::IArchive& archive) override;
38
39 // reimplemented (istd::IChangeable)
40 virtual int GetSupportedOperations() const override;
41 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
42 virtual bool IsEqual(const IChangeable& object) const override;
43 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
44 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
45
49 bool ApplySelectionMode(SelectionMode selectionMode);
50 bool ApplySelection(const Ids& selectionIds);
51
52protected:
53 virtual void OnConstraintsUpdated(const istd::IChangeable::ChangeSet& changeset, const ICollectionInfo* modelPtr);
54
55private:
56 SelectionMode m_selectionMode;
57 Ids m_selectedIds;
59};
60
61
62} // namespace imtbase
63
64
bool ApplySelectionMode(SelectionMode selectionMode)