6#include <icomp/CComponentBase.h>
7#include <imod/TModelWrap.h>
8#include <iprm/IOptionsList.h>
9#include <iprm/ISelectionParam.h>
12#include <imtbase/CSelectionAdapterBase.h>
13#include <imtbase/ICollectionInfo.h>
14#include <imtbase/ISelection.h>
21class CSelectionParamAdapterComp:
22 public icomp::CComponentBase,
23 public CSelectionAdapterBase,
24 virtual public iprm::ISelectionParam
27 typedef icomp::CComponentBase BaseClass;
29 I_BEGIN_COMPONENT(CSelectionParamAdapterComp);
30 I_REGISTER_SUBELEMENT(Constraints);
31 I_REGISTER_SUBELEMENT_INTERFACE(Constraints, iprm::IOptionsList, ExtractConstraints);
32 I_REGISTER_SUBELEMENT_INTERFACE(Constraints, imod::IModel, ExtractConstraints);
33 I_REGISTER_SUBELEMENT_INTERFACE(Constraints, istd::IChangeable, ExtractConstraints);
34 I_REGISTER_INTERFACE(iprm::ISelectionParam);
35 I_REGISTER_INTERFACE(iser::ISerializable);
36 I_ASSIGN(m_selectionCompPtr,
"Selection",
"Source selection",
true,
"");
39 CSelectionParamAdapterComp();
43 virtual const iprm::IOptionsList* GetSelectionConstraints()
const override;
44 virtual int GetSelectedOptionIndex()
const override;
45 virtual bool SetSelectedOptionIndex(
int index)
override;
46 virtual ISelectionParam* GetSubselection(
int index)
const override;
49 virtual void OnConstraintsChanged()
override;
50 virtual void OnSelectionChanged()
override;
53 virtual void OnComponentCreated()
override;
54 virtual void OnComponentDestroyed()
override;
57 virtual bool Serialize(iser::IArchive& archive)
override;
60 class Constraints:
virtual public iprm::IOptionsList
64 void SetParent(CSelectionParamAdapterComp* parentPtr);
67 virtual int GetOptionsFlags()
const override;
68 virtual int GetOptionsCount()
const override;
69 virtual QString GetOptionName(
int index)
const override;
70 virtual QString GetOptionDescription(
int index)
const override;
71 virtual QByteArray GetOptionId(
int index)
const override;
72 virtual bool IsOptionEnabled(
int index)
const override;
75 CSelectionParamAdapterComp* m_parentPtr;
78 template<
class InterfaceType>
79 static InterfaceType* ExtractConstraints(CSelectionParamAdapterComp& component)
81 return &component.m_constraints;
85 I_REF(ISelection, m_selectionCompPtr);
87 ISelection* m_selectionPtr;
88 const ICollectionInfo* m_selectionConstraintsPtr;
90 imod::TModelWrap<Constraints> m_constraints;