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