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