ACF $AcfVersion:0$
TCircleBasedParamsGuiComp.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// ACF includes
7
8#include <GeneratedFiles/iqt2d/ui_CCircleParamsGuiComp.h>
9
10
11namespace iqt2d
12{
13
14
15template <class CircleBasedShape, class CircleBasedModel, class CircleBasedGui = Ui::CCircleParamsGuiComp>
18 CircleBasedGui,
19 CircleBasedShape,
20 CircleBasedModel>
21{
22public:
24 CircleBasedGui,
25 CircleBasedShape,
26 CircleBasedModel> BaseClass;
27
28 I_BEGIN_BASE_COMPONENT(TCircleBasedParamsGuiComp);
29 I_END_COMPONENT;
30
31protected:
32 // reimplemented (iqtgui::TGuiObserverWrap)
33 virtual void OnGuiModelAttached() override;
34 virtual void UpdateModel() const override;
35 virtual void UpdateGui(const istd::IChangeable::ChangeSet& changeSet) override;
36
37 // reimplemented (iqtgui::CGuiComponentBase)
38 virtual void OnGuiCreated() override;
39 virtual void OnGuiRetranslate() override;
40 virtual void OnGuiDesignChanged() override;
41
42protected:
43 using BaseClass::GetObservedObject;
44 using BaseClass::GetObservedModel;
45 using BaseClass::DoUpdateModel;
49 using BaseClass::tr;
50 using BaseClass::GetQtWidget;
51 using BaseClass::XSpin;
52 using BaseClass::YSpin;
53 using BaseClass::RadiusSpin;
54 using BaseClass::ToolsButton;
56 using BaseClass::PositionUnitLabel;
57 using BaseClass::RadiusUnitLabel;
58};
59
60
61// protected methods
62
63// reimplemented (iqtgui::TGuiObserverWrap)
64
65template <class CircleBasedShape, class CircleBasedModel, class CircleBasedGui>
70
71
72template <class CircleBasedShape, class CircleBasedModel, class CircleBasedGui>
74{
75 Q_ASSERT(BaseClass::IsGuiCreated());
76
77 CircleBasedModel* objectPtr = GetObservedObject();
78 Q_ASSERT(objectPtr != NULL);
79
80 istd::CChangeGroup changeGroup(objectPtr);
81 Q_UNUSED(changeGroup);
82
83 i2d::CVector2d postion(XSpin->value(), YSpin->value());
84 objectPtr->SetPosition(postion);
85
86 double radius = RadiusSpin->value();
87 objectPtr->SetRadius(radius);
88}
89
90
91template <class CircleBasedShape, class CircleBasedModel, class CircleBasedGui>
93{
94 Q_ASSERT(BaseClass::IsGuiCreated());
95
96 CircleBasedModel* objectPtr = GetObservedObject();
97 if (objectPtr != NULL){
98 const i2d::CVector2d& center = objectPtr->GetCenter();
99
100 XSpin->setValue(center.GetX());
101 YSpin->setValue(center.GetY());
102
103 RadiusSpin->setValue(objectPtr->GetRadius());
104
105 UpdateAllViews();
106 }
107
108 // tools actions
109 CreateToolsMenu(ToolsButton);
110}
111
112
113// reimplemented (iqtgui::CGuiComponentBase)
114
115template <class CircleBasedShape, class CircleBasedModel, class CircleBasedGui>
117{
118 BaseClass::OnGuiCreated();
119
120 if (IsPositionFixed()){
121 XSpin->setEnabled(false);
122 YSpin->setEnabled(false);
123 }
124 else{
125 QObject::connect(XSpin, SIGNAL(valueChanged(double)), this, SLOT(OnParamsChanged(double)));
126 QObject::connect(YSpin, SIGNAL(valueChanged(double)), this, SLOT(OnParamsChanged(double)));
127 }
128
129 QObject::connect(RadiusSpin, SIGNAL(valueChanged(double)), this, SLOT(OnParamsChanged(double)));
130}
131
132
133// reimplemented (iqtgui::CGuiComponentBase)
134
135template <class CircleBasedShape, class CircleBasedModel, class CircleBasedGui>
137{
138 BaseClass::OnGuiRetranslate();
139
140 QString unitName = GetUnitName();
141
142 if (!unitName.isEmpty()){
143 PositionUnitLabel->setText(unitName);
144 RadiusUnitLabel->setText(unitName);
145 PositionUnitLabel->setVisible(true);
146 RadiusUnitLabel->setVisible(true);
147 }
148 else{
149 PositionUnitLabel->setVisible(false);
150 RadiusUnitLabel->setVisible(false);
151 }
152}
153
154
155template<class CircleBasedShape, class CircleBasedModel, class CircleBasedGui>
157{
158 BaseClass::OnGuiDesignChanged();
159
160 ToolsButton->setIcon(this->GetIcon(":/Icons/Tools"));
161}
162
163
164} // namespace iqt2d
165
166
167
168
Definition of position or mathematical vector on 2D plane.
Definition CVector2d.h:29
double GetY() const
Get Y position of this vector.
Definition CVector2d.h:184
double GetX() const
Get X position of this vector.
Definition CVector2d.h:172
iqt2d::TShapeParamsGuiCompBase< CircleBasedGui, CircleBasedShape, CircleBasedModel > BaseClass
virtual void UpdateModel() const override
virtual void UpdateGui(const istd::IChangeable::ChangeSet &changeSet) override
virtual void CreateToolsMenu(QAbstractButton *buttonPtr)
Maintenance of the tools actions.
Help class which provides the group of changes for update mechanism of the model.
Set of change flags (its IDs).
Definition IChangeable.h:36
#define NULL
Definition istd.h:74
This package contains Qt based implementations for 2D graphic objects.