Horizon
Loading...
Searching...
No Matches
property_editor.hpp
1#pragma once
2#include <gtkmm.h>
3#include "core/core.hpp"
4#include "common/object_descr.hpp"
5#include "core/core_properties.hpp"
6#include "widgets/generic_combo_box.hpp"
7
8namespace horizon {
9class PropertyEditor : public Gtk::Box {
10public:
11 PropertyEditor(ObjectType t, ObjectProperty::ID prop, class PropertyPanel *p);
12 virtual void construct();
13 void set_can_apply_all(bool v);
14
15 virtual void reload(){};
16 virtual PropertyValue &get_value()
17 {
18 return dummy;
19 }
20 virtual PropertyMeta &get_meta()
21 {
22 return meta;
23 }
24
25 typedef sigc::signal<void> type_signal_changed;
26 type_signal_changed signal_changed()
27 {
28 return s_signal_changed;
29 }
30
31 type_signal_changed signal_apply_all()
32 {
33 return s_signal_apply_all;
34 }
35
36 type_signal_changed signal_activate()
37 {
38 return s_signal_activate;
39 }
40
41 bool get_apply_all();
42
43 virtual ~PropertyEditor()
44 {
45 }
46
47 class PropertyPanel *parent;
48 const ObjectProperty::ID property_id;
49
50protected:
51 const ObjectType type;
52
53 const ObjectProperty &property;
54 Gtk::ToggleButton *apply_all_button = nullptr;
55
56 virtual Gtk::Widget *create_editor();
57
58 type_signal_changed s_signal_changed;
59 type_signal_changed s_signal_apply_all;
60 type_signal_changed s_signal_activate;
61 PropertyValue dummy;
63
64 bool readonly = false;
65
66 std::vector<sigc::connection> connections;
67
68private:
69};
70
72 using PropertyEditor::PropertyEditor;
73
74public:
75 void reload() override;
76 PropertyValue &get_value() override;
77
78protected:
79 Gtk::Widget *create_editor() override;
80
81private:
82 Gtk::Switch *sw = nullptr;
84};
85
87 using PropertyEditor::PropertyEditor;
88
89public:
90 void reload() override;
91 PropertyValue &get_value() override;
92
93protected:
94 Gtk::Widget *create_editor() override;
95
96private:
97 Gtk::Entry *en = nullptr;
98 void changed();
99 void activate();
100 bool focus_out_event(GdkEventFocus *e);
101 bool modified = false;
102
104};
105
107 using PropertyEditor::PropertyEditor;
108
109public:
110 void reload() override;
111 PropertyValue &get_value() override;
112 void set_range(int64_t min, int64_t max);
113
114protected:
115 Gtk::Widget *create_editor() override;
116
117private:
118 class SpinButtonDim *sp = nullptr;
119 PropertyValueInt value;
120 std::pair<int64_t, int64_t> range = {-1e9, 1e9};
121};
122
124 using PropertyEditor::PropertyEditor;
125
126public:
127 void reload() override;
128 PropertyValue &get_value() override;
129
130protected:
131 Gtk::Widget *create_editor() override;
132
133private:
134 GenericComboBox<int> *combo = nullptr;
135 void changed();
136 PropertyValueInt value;
137};
138
140 using PropertyEditor::PropertyEditor;
141
142public:
143 void reload() override;
144 PropertyValue &get_value() override;
145
146protected:
147 Gtk::Widget *create_editor() override;
148
149private:
150 Gtk::Label *la = nullptr;
152};
153
155 using PropertyEditor::PropertyEditor;
156
157public:
158 void reload() override;
159 PropertyValue &get_value() override;
160 PropertyMeta &get_meta() override
161 {
162 return my_meta;
163 };
164
165protected:
166 Gtk::Widget *create_editor() override;
167
168private:
169 GenericComboBox<UUID> *combo = nullptr;
170 void changed();
171 PropertyValueUUID value;
173};
174
176 using PropertyEditor::PropertyEditor;
177
178public:
179 void reload() override;
180 PropertyValue &get_value() override;
181 PropertyMeta &get_meta() override
182 {
183 return my_meta;
184 };
185 bool copper_only = false;
186
187protected:
188 Gtk::Widget *create_editor() override;
189
190private:
191 class LayerComboBox *combo = nullptr;
192 void changed();
193 PropertyValueInt value;
194 PropertyMetaLayers my_meta;
195};
196
198 using PropertyEditor::PropertyEditor;
199
200public:
201 void reload() override;
202 PropertyValue &get_value() override;
203
204protected:
205 Gtk::Widget *create_editor() override;
206
207private:
208 Gtk::SpinButton *sp = nullptr;
209 PropertyValueInt value;
210};
211
213 using PropertyEditor::PropertyEditor;
214
215public:
216 void reload() override;
217 PropertyValue &get_value() override;
218 void construct() override;
219
220protected:
221 Gtk::Widget *create_editor() override;
222
223private:
224 class TextEditor *editor = nullptr;
225 void changed();
226 void activate();
227 bool modified = false;
228
230};
231
233 using PropertyEditor::PropertyEditor;
234
235public:
236 void reload() override;
237 PropertyValue &get_value() override;
238
239protected:
240 Gtk::Widget *create_editor() override;
241
242 Gtk::SpinButton *sp = nullptr;
243 PropertyValueInt value;
244};
245
247 using PropertyEditorInt::PropertyEditorInt;
248
249protected:
250 Gtk::Widget *create_editor() override;
251};
252
254 using PropertyEditorInt::PropertyEditorInt;
255
256protected:
257 Gtk::Widget *create_editor() override;
258};
259
261 using PropertyEditor::PropertyEditor;
262
263public:
264 void reload() override;
265 PropertyValue &get_value() override;
266
267protected:
268 Gtk::Widget *create_editor() override;
269
270 Gtk::SpinButton *sp = nullptr;
272 void changed();
273};
274
276 using PropertyEditorDouble::PropertyEditorDouble;
277
278protected:
279 Gtk::Widget *create_editor() override;
280};
281
283 using PropertyEditorDouble::PropertyEditorDouble;
284
285protected:
286 Gtk::Widget *create_editor() override;
287};
288
290 using PropertyEditor::PropertyEditor;
291
292public:
293 void reload() override;
294 PropertyValue &get_value() override;
295 PropertyMeta &get_meta() override
296 {
297 return my_meta;
298 };
299
300protected:
301 Gtk::Widget *create_editor() override;
302
303private:
304 class LayerComboBox *combo_start = nullptr;
305 class LayerComboBox *combo_end = nullptr;
306 void changed();
308 PropertyMetaLayers my_meta;
309
310 void update();
311};
312
313
314} // namespace horizon
Definition generic_combo_box.hpp:5
Definition layer_combo_box.hpp:5
Definition object_descr.hpp:6
Definition property_editor.hpp:197
Definition property_editor.hpp:71
Definition property_editor.hpp:106
Definition property_editor.hpp:260
Definition property_editor.hpp:123
Definition property_editor.hpp:246
Definition property_editor.hpp:232
Definition property_editor.hpp:289
Definition property_editor.hpp:175
Definition property_editor.hpp:154
Definition property_editor.hpp:275
Definition property_editor.hpp:253
Definition property_editor.hpp:282
Definition property_editor.hpp:212
Definition property_editor.hpp:139
Definition property_editor.hpp:86
Definition property_editor.hpp:9
Definition core_properties.hpp:122
Definition core_properties.hpp:116
Definition core_properties.hpp:104
Definition property_panel.hpp:10
Definition core_properties.hpp:52
Definition core_properties.hpp:39
Definition core_properties.hpp:26
Definition core_properties.hpp:91
Definition core_properties.hpp:65
Definition core_properties.hpp:78
Definition core_properties.hpp:8
Definition spin_button_dim.hpp:5
Definition text_editor.hpp:6
Tiny metaprogramming library.
Definition meta.hpp:116