ImagingTools Core SDK
CButtonBasedSelectionGuiComp.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// Qt includes
6#include <QtWidgets/QToolButton>
7
8// ACF includes
9#include <iprm/IOptionsList.h>
10#include <iprm/ISelectionParam.h>
11#include <iqtgui/IIconProvider.h>
12#include <iqtgui/TDesignerGuiObserverCompBase.h>
13
14// ImtCore includes
15#include <imtbase/TModelUpdateBinder.h>
16#include <GeneratedFiles/imtgui/ui_CButtonBasedSelectionGuiComp.h>
17
18
19namespace imtgui
20{
21
22
23class CButtonBasedSelectionGuiComp
24 : public iqtgui::TDesignerGuiObserverCompBase<Ui::CButtonBasedSelectionGuiComp, iprm::ISelectionParam>
25{
26 Q_OBJECT
27public:
28 typedef iqtgui::TDesignerGuiObserverCompBase<Ui::CButtonBasedSelectionGuiComp, iprm::ISelectionParam> BaseClass;
29
30 enum Orientation
31 {
32 O_HORIZONTAL = 0,
33 O_VERTICAL
34 };
35
36 I_BEGIN_COMPONENT(CButtonBasedSelectionGuiComp);
37 I_ASSIGN(m_iconProviderCompPtr, "IconProvider", "Icons for buttons", false, "IconProvider");
38 I_ASSIGN(m_orientationAttrPtr, "Orientation", "Orientation of the toolbar", true, 0);
39 I_ASSIGN(m_hideTheOnlyButtonAttrPtr, "HideTheOnlyButton", "Hide button if there is only one option", true, false);
40 I_ASSIGN(m_spacingAttrPtr, "Spacing", "Spacing between consecutive buttons", true, 0);
41 I_ASSIGN(m_iconSizeAttrPtr, "IconSize", "Icon size", true, 16);
42 I_ASSIGN(m_buttonStyleAttrPtr, "ButtonStyle", "See Qt::ToolButtonStyle", true, 0);
43 I_END_COMPONENT;
44
45 CButtonBasedSelectionGuiComp();
46
47protected:
48 // reimplemented (iqtgui::TGuiObserverWrap)
49 virtual void UpdateGui(const istd::IChangeable::ChangeSet& changeSet) override;
50 virtual void OnGuiModelAttached() override;
51 virtual void OnGuiModelDetached() override;
52
53 // reimplemented (iqtgui::CGuiComponentBase)
54 virtual void OnGuiDesignChanged() override;
55
56private Q_SLOTS:
57 void OnButtonClicked(bool checked);
58
59private:
60 void OnOptionListUpdate(const istd::IChangeable::ChangeSet& changeSet, const iprm::IOptionsList* objectPtr);
61 void OnIconsUpdate(const istd::IChangeable::ChangeSet& changeSet, const iqtgui::IIconProvider* objectPtr);
62
63private:
64 I_REF(iqtgui::IIconProvider, m_iconProviderCompPtr);
65 I_ATTR(int, m_orientationAttrPtr);
66 I_ATTR(bool, m_hideTheOnlyButtonAttrPtr);
67 I_ATTR(int, m_spacingAttrPtr);
68 I_ATTR(int, m_iconSizeAttrPtr);
69 I_ATTR(int, m_buttonStyleAttrPtr);
70
73};
74
75
76} // namespace imtgui