1 #pragma once
2 #include <gtkmm.h>
3 #include "preferences/preferences.hpp"
4 #include "nlohmann/json.hpp"
5 
6 namespace horizon {
7 using json = nlohmann::json;
8 class CanvasPreferencesEditor : public Gtk::Box {
9 public:
10     CanvasPreferencesEditor(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x, class Preferences &prefs,
11                             bool layered);
12     static CanvasPreferencesEditor *create(Preferences &prefs, bool layered);
13 
14 private:
15     Preferences &preferences;
16     CanvasPreferences &canvas_preferences;
17     const bool is_layered;
18     json color_presets;
19     Gtk::FlowBox *canvas_colors_fb = nullptr;
20     Glib::RefPtr<Gtk::ColorChooser> color_chooser;
21     sigc::connection color_chooser_conn;
22     void handle_export();
23     void handle_import();
24     void handle_default();
25     void handle_load_preset(unsigned int idx);
26     void load_colors(const json &j);
27     void update_color_chooser();
28 };
29 
30 
31 } // namespace horizon
32