Horizon
Loading...
Searching...
No Matches
parameter_set_editor.hpp
1#pragma once
2#include <gtkmm.h>
3#include <set>
4#include "parameter/set.hpp"
5#include "util/changeable.hpp"
6#include "util/list_accumulator.hpp"
7#include <optional>
8
9namespace horizon {
10class ParameterSetEditor : public Gtk::Box, public Changeable {
11 friend class ParameterEditor;
12
13public:
14 enum class Style { SEPARATOR, BORDER };
15 ParameterSetEditor(ParameterSet *ps, bool populate_init = true, Style style = Style::SEPARATOR);
16 void populate();
17 void focus_first();
18 void set_button_margin_left(int margin);
19 void add_or_set_parameter(ParameterID param, int64_t value);
20 void set_has_apply_all(const std::string &tooltip_text);
21 void set_has_apply_all_toggle(const std::string &tooltip_text);
22 void set_apply_all(std::set<ParameterID> params);
23
24 typedef sigc::signal<void> type_signal_activate_last;
25 type_signal_activate_last signal_activate_last()
26 {
27 return s_signal_activate_last;
28 }
29
30 typedef sigc::signal<void, ParameterID> type_signal_apply_all;
31 type_signal_apply_all signal_apply_all()
32 {
33 return s_signal_apply_all;
34 }
35
36 typedef sigc::signal<void, ParameterID, bool> type_signal_apply_all_toggled;
37 type_signal_apply_all_toggled signal_apply_all_toggled()
38 {
39 return s_signal_apply_all_toggled;
40 }
41
42 typedef sigc::signal<Gtk::Widget *, ParameterID>::accumulated<list_accumulator<Gtk::Widget *, false>>
43 type_signal_create_extra_widget;
44 type_signal_create_extra_widget signal_create_extra_widget()
45 {
46 return s_signal_create_extra_widget;
47 }
48
49 type_signal_apply_all signal_remove_extra_widget()
50 {
51 return s_signal_remove_extra_widget;
52 }
53
54private:
55 Gtk::Widget *create_apply_all_button(ParameterID id);
56 Gtk::MenuButton *add_button = nullptr;
57 Gtk::ListBox *listbox = nullptr;
58 Gtk::Menu menu;
59 std::map<ParameterID, Gtk::MenuItem &> menu_items;
60 ParameterSet *parameter_set;
61 Glib::RefPtr<Gtk::SizeGroup> sg_label;
62 void update_menu();
63 std::optional<std::string> apply_all_tooltip_text;
64 bool apply_all_toggle = false;
65
66 type_signal_activate_last s_signal_activate_last;
67
68 type_signal_create_extra_widget s_signal_create_extra_widget;
69 type_signal_apply_all s_signal_remove_extra_widget;
70
71protected:
72 type_signal_apply_all s_signal_apply_all;
73 type_signal_apply_all_toggled s_signal_apply_all_toggled;
74};
75} // namespace horizon
Definition changeable.hpp:5
Definition parameter_set_editor.cpp:15
Definition parameter_set_editor.hpp:10
Definition list_accumulator.hpp:5