1 #pragma once 2 #include "pool/symbol.hpp" 3 #include <gtkmm.h> 4 #include <utility> 5 #include "util/changeable.hpp" 6 7 namespace horizon { 8 class SymbolPreviewBox : public Gtk::Box, public Changeable { 9 public: 10 SymbolPreviewBox(const std::pair<int, bool> &view); 11 void update(const Symbol &sym); 12 void zoom_to_fit(); 13 std::map<std::tuple<int, bool, UUID>, Placement> get_text_placements() const; 14 void set_text_placements(const std::map<std::tuple<int, bool, UUID>, Placement> &p); 15 void set_canvas_appearance(const class Appearance &a); 16 void set_can_load(bool can_load); 17 18 typedef sigc::signal<void, int, bool> type_signal_load; signal_load()19 type_signal_load signal_load() 20 { 21 return s_signal_load; 22 } 23 24 private: 25 class CanvasGL *canvas = nullptr; 26 Gtk::Button *set_button = nullptr; 27 Gtk::Button *load_button = nullptr; 28 const std::pair<int, bool> view; 29 Symbol symbol; 30 std::map<UUID, Placement> text_placements; 31 void set_placements(); 32 void clear_placements(); 33 type_signal_load s_signal_load; 34 }; 35 } // namespace horizon 36