Horizon
property_panels.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include "core/core.hpp"
4 #include "canvas/selectables.hpp"
5 #include <deque>
6 
7 namespace horizon {
8 class PropertyPanels : public Gtk::Box {
9  friend class PropertyPanel;
10 
11 public:
12  PropertyPanels(Core *c);
13  void update_objects(const std::set<SelectableRef> &selection);
14  void reload();
15  typedef sigc::signal<void> type_signal_update;
16  type_signal_update signal_update()
17  {
18  return s_signal_update;
19  }
20  type_signal_update signal_activate()
21  {
22  return s_signal_activate;
23  }
24 
25  typedef sigc::signal<void, bool> type_signal_throttled;
26  type_signal_throttled signal_throttled()
27  {
28  return s_signal_throttled;
29  }
30 
31  const std::set<SelectableRef> &get_selection() const
32  {
33  return selection_stored;
34  }
35 
36 private:
37  Core *core;
38  type_signal_update s_signal_update;
39  type_signal_update s_signal_activate;
40  type_signal_throttled s_signal_throttled;
41  std::set<SelectableRef> selection_stored;
42 
43  void set_property(ObjectType ty, const std::deque<UUID> &uus, ObjectProperty::ID property,
44  const class PropertyValue &value);
45  sigc::connection throttle_connection;
46  void force_commit();
47 };
48 } // namespace horizon