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