1 #include "preferences_window.hpp"
2 #include "preferences/preferences.hpp"
3 #include "util/gtk_util.hpp"
4 #include "imp/action_catalog.hpp"
5 #include "preferences_window_keys.hpp"
6 #include "preferences_window_in_tool_keys.hpp"
7 #include "preferences_window_canvas.hpp"
8 #include "preferences_window_stock_info.hpp"
9 #include "preferences_window_misc.hpp"
10 #include "canvas/color_palette.hpp"
11 #include "board/board_layers.hpp"
12 #include "pool/pool_manager.hpp"
13 #include <map>
14 
15 namespace horizon {
16 
PreferencesWindow(Preferences & prefs)17 PreferencesWindow::PreferencesWindow(Preferences &prefs) : Gtk::Window(), preferences(prefs)
18 {
19     set_default_size(1300, -1);
20     set_type_hint(Gdk::WINDOW_TYPE_HINT_DIALOG);
21     auto header = Gtk::manage(new Gtk::HeaderBar());
22     header->set_show_close_button(true);
23     header->set_title("Preferences");
24     set_titlebar(*header);
25     header->show();
26 
27     auto box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 0));
28     auto sidebar = Gtk::manage(new Gtk::StackSidebar);
29     box->pack_start(*sidebar, false, false, 0);
30     sidebar->show();
31 
32     stack = Gtk::manage(new Gtk::Stack);
33     sidebar->set_stack(*stack);
34     box->pack_start(*stack, true, true, 0);
35     stack->show();
36 
37     {
38         auto ed = CanvasPreferencesEditor::create(preferences, true);
39         stack->add(*ed, "layer", "Board appearance");
40         ed->show();
41         ed->unreference();
42     }
43     {
44         auto ed = CanvasPreferencesEditor::create(preferences, false);
45         stack->add(*ed, "non-layer", "Schematic appearance");
46         ed->show();
47         ed->unreference();
48     }
49     {
50         auto ed = Gtk::manage(new MiscPreferencesEditor(preferences));
51         stack->add(*ed, "misc", "Editor");
52         ed->show();
53     }
54     {
55         auto ed = Gtk::manage(new StockInfoPreferencesEditor(preferences));
56         stack->add(*ed, "stockinfo", "Stock info");
57         ed->show();
58     }
59     {
60         auto ed = KeySequencesPreferencesEditor::create(preferences);
61         stack->add(*ed, "keys", "Keys");
62         ed->show();
63         ed->unreference();
64     }
65     {
66         auto ed = InToolKeySequencesPreferencesEditor::create(preferences);
67         stack->add(*ed, "in_tool_keys", "In-tool keys");
68         ed->show();
69         ed->unreference();
70     }
71 
72     box->show();
73     add(*box);
74 }
75 
show_page(const std::string & pg)76 void PreferencesWindow::show_page(const std::string &pg)
77 {
78     stack->set_visible_child(pg);
79 }
80 
81 } // namespace horizon
82