Horizon
3d_view.hpp
1 #pragma once
2 #include "util/window_state_store.hpp"
3 #include "common/common.hpp"
4 #include "util/changeable.hpp"
5 #include <gtkmm.h>
6 #include <set>
7 
8 namespace horizon {
9 class View3DWindow : public Gtk::Window, public Changeable {
10 public:
11  enum class Mode { BOARD, PACKAGE };
12  View3DWindow(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x, const class Board &b, class IPool &p,
13  Mode mode);
14  static View3DWindow *create(const class Board &b, class IPool &p, Mode mode);
15  void update(bool clear = false);
16  void set_highlights(const std::set<UUID> &pkgs);
17  void add_widget(Gtk::Widget *w);
18  void set_smooth_zoom(bool smooth);
19  void set_solder_mask_color(const Gdk::RGBA &c);
20  Gdk::RGBA get_solder_mask_color();
21  void set_substrate_color(const Gdk::RGBA &c);
22  Gdk::RGBA get_substrate_color();
23  void set_appearance(const class Appearance &a);
24 
25  typedef sigc::signal<void> type_signal_request_update;
26  type_signal_request_update signal_request_update()
27  {
28  return s_signal_request_update;
29  }
30 
31 private:
32  class Canvas3D *canvas = nullptr;
33  const class Board &board;
34  class IPool &pool;
35  const Mode mode;
36  Gtk::Box *main_box = nullptr;
37  Gtk::Revealer *model_loading_revealer = nullptr;
38  Gtk::Spinner *model_loading_spinner = nullptr;
39  Gtk::ProgressBar *model_loading_progress = nullptr;
40 
41  Gtk::ColorButton *background_top_color_button = nullptr;
42  Gtk::ColorButton *background_bottom_color_button = nullptr;
43  Gtk::ColorButton *solder_mask_color_button = nullptr;
44  Gtk::ColorButton *substrate_color_button = nullptr;
45  Gtk::ComboBoxText *background_color_preset_combo = nullptr;
46  bool setting_background_color_from_preset = false;
47 
48  WindowStateStore state_store;
49 
50  type_signal_request_update s_signal_request_update;
51 };
52 } // namespace horizon
horizon::WindowStateStore
Definition: window_state_store.hpp:20
horizon::Canvas3D
Definition: canvas3d.hpp:16
horizon::Changeable
Definition: changeable.hpp:5
horizon::Board
Definition: board.hpp:42
horizon::Appearance
Definition: appearance.hpp:7
horizon::IPool
Definition: ipool.hpp:12
horizon::View3DWindow
Definition: 3d_view.hpp:9