Horizon
layer_box.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include "canvas/layer_display.hpp"
4 #include "canvas/canvas_gl.hpp"
5 
6 namespace horizon {
7 class LayerBox : public Gtk::Box {
8 public:
9  LayerBox(class LayerProvider &lp, bool show_title = true);
10  void set_appearance(const Appearance &a);
11  void update();
12  Glib::PropertyProxy<int> property_work_layer()
13  {
14  return p_property_work_layer.get_proxy();
15  }
16  typedef sigc::signal<void, int, LayerDisplay> type_signal_set_layer_display;
17  type_signal_set_layer_display signal_set_layer_display()
18  {
19  return s_signal_set_layer_display;
20  }
21 
22 
23  Glib::PropertyProxy<float> property_layer_opacity()
24  {
25  return p_property_layer_opacity.get_proxy();
26  }
27  Glib::PropertyProxy<CanvasGL::HighlightMode> property_highlight_mode()
28  {
29  return p_property_highlight_mode.get_proxy();
30  }
31  Glib::PropertyProxy<CanvasGL::LayerMode> property_layer_mode()
32  {
33  return p_property_layer_mode.get_proxy();
34  }
35  void set_layer_display(int layer, const LayerDisplay &ld);
36 
37  json serialize();
38  void load_from_json(const json &j);
39 
40 private:
41  class LayerProvider &lp;
42  Appearance appearance;
43 
44  Gtk::ListBox *lb = nullptr;
45 
46  Glib::Property<int> p_property_work_layer;
47  Glib::Property<float> p_property_layer_opacity;
48  Glib::Property<CanvasGL::HighlightMode> p_property_highlight_mode;
49  Glib::Property<CanvasGL::LayerMode> p_property_layer_mode;
50  type_signal_set_layer_display s_signal_set_layer_display;
51  void emit_layer_display(class LayerBoxRow *row);
52  void update_work_layer();
53 
54  Glib::RefPtr<Glib::Binding> binding_select_work_layer_only;
55  Glib::RefPtr<Glib::Binding> binding_layer_opacity;
56 };
57 } // namespace horizon
Definition: appearance.hpp:7
Definition: layer_box.cpp:196
Definition: layer_box.hpp:7
Definition: layer_display.hpp:5
Definition: layer_provider.hpp:7
a class to store JSON values
Definition: json.hpp:177