Horizon
main_window.hpp
1 #pragma once
2 #include "common/common.hpp"
3 #include <gtkmm.h>
4 
5 namespace horizon {
6 
7 class MainWindow : public Gtk::ApplicationWindow {
8 public:
9  MainWindow(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x);
10  static MainWindow *create();
11  class CanvasGL *canvas = nullptr;
12  Gtk::Label *tool_hint_label = nullptr;
13  Gtk::Label *cursor_label = nullptr;
14  Gtk::Box *left_panel = nullptr;
15  Gtk::Box *grid_box_square = nullptr;
16  Gtk::Box *grid_box_rect = nullptr;
17  Gtk::Label *grid_mul_label = nullptr;
18  Gtk::Label *selection_label = nullptr;
19  Gtk::Viewport *property_viewport = nullptr;
20  Gtk::ScrolledWindow *property_scrolled_window = nullptr;
21  Gtk::Revealer *property_throttled_revealer = nullptr;
22  Gtk::HeaderBar *header = nullptr;
23  Glib::RefPtr<Gtk::Builder> builder;
24 
25  Gtk::Button *pool_reload_button = nullptr;
26 
27  Gtk::SearchEntry *search_entry = nullptr;
28  Gtk::Button *search_previous_button = nullptr;
29  Gtk::Button *search_next_button = nullptr;
30  Gtk::Label *search_status_label = nullptr;
31  Gtk::Revealer *search_revealer = nullptr;
32  Gtk::CheckButton *search_exact_cb = nullptr;
33  Gtk::Expander *search_expander = nullptr;
34  Gtk::Box *search_types_box = nullptr;
35  Gtk::Label *selection_mode_label = nullptr;
36  Gtk::MenuButton *view_options_button = nullptr;
37 
38  Gtk::Revealer *action_bar_revealer = nullptr;
39  Gtk::Box *action_bar_box = nullptr;
40  void set_use_action_bar(bool u);
41 
42  Gtk::RadioButton *grid_square_button = nullptr;
43  Gtk::RadioButton *grid_rect_button = nullptr;
44  Gtk::Grid *grid_grid = nullptr;
45  Gtk::Button *grid_reset_origin_button = nullptr;
46 
47  Gtk::Button *grid_window_button = nullptr;
48 
49  Gtk::ListBox *key_hint_box = nullptr;
50  Glib::RefPtr<Gtk::SizeGroup> key_hint_size_group;
51  void key_hint_set_visible(bool v);
52 
53  Gtk::Revealer *instance_path_revealer = nullptr;
54  Gtk::Button *parent_block_button = nullptr;
55  Gtk::Box *instance_path_box = nullptr;
56  Gtk::Button *block_symbol_button = nullptr;
57  Gtk::Button *ports_button = nullptr;
58  Gtk::Stack *hierarchy_stack = nullptr;
59  Gtk::Label *out_of_hierarchy_label = nullptr;
60 
61  Glib::SignalProxy<bool, const Glib::ustring &> signal_activate_hud_link()
62  {
63  return hud_label->signal_activate_link();
64  }
65 
66 
67  void tool_bar_set_visible(bool v);
68  void tool_bar_set_tool_name(const std::string &s);
69  void tool_bar_set_tool_tip(const std::string &s);
70  void tool_bar_flash(const std::string &s);
71  void tool_bar_set_use_actions(bool use_actions);
72  void tool_bar_clear_actions();
73  void tool_bar_append_action(Gtk::Widget &w);
74 
75  void hud_update(const std::string &s);
76  void hud_hide();
77 
78  void show_nonmodal(const std::string &la, const std::string &button, std::function<void(void)> fn,
79  const std::string &la2 = "");
80 
81  void set_view_hints_label(const std::vector<std::string> &s);
82 
83  void disable_grid_options();
84 
85  void set_version_info(const std::string &s);
86 
87  void set_undo_redo_hint(const std::string &s);
88 
89  // virtual ~MainWindow();
90 private:
91  Gtk::EventBox *gl_container = nullptr;
92 
93  Gtk::Revealer *tool_bar = nullptr;
94  Gtk::Label *tool_bar_name_label = nullptr;
95  Gtk::Label *tool_bar_tip_label = nullptr;
96  Gtk::Label *tool_bar_flash_label = nullptr;
97  Gtk::Stack *tool_bar_stack = nullptr;
98  Gtk::Label *tool_bar_action_tip_label = nullptr;
99  Gtk::Box *tool_bar_actions_box = nullptr;
100  sigc::connection tip_timeout_connection;
101  bool tool_bar_queue_close = false;
102 
103  Gtk::Revealer *hud = nullptr;
104  Gtk::Label *hud_label = nullptr;
105 
106  sigc::connection hud_timeout_connection;
107  bool hud_queue_close = false;
108 
109  Gtk::Button *nonmodal_close_button = nullptr;
110  Gtk::Button *nonmodal_button = nullptr;
111  Gtk::Revealer *nonmodal_rev = nullptr;
112  Gtk::Label *nonmodal_label = nullptr;
113  Gtk::Label *nonmodal_label2 = nullptr;
114  std::function<void(void)> nonmodal_fn;
115 
116  Gtk::Label *view_hints_label = nullptr;
117 
118  Gtk::ToggleButton *grid_options_button = nullptr;
119  Gtk::Revealer *grid_options_revealer = nullptr;
120 
121  Gtk::Stack *grid_box_stack = nullptr;
122 
123  Gtk::InfoBar *version_info_bar = nullptr;
124  Gtk::Label *version_label = nullptr;
125 
126  bool tool_bar_use_actions = false;
127 
128  Gtk::Revealer *key_hint_revealer = nullptr;
129  sigc::connection key_hint_connection;
130  void update_key_hint_position();
131 
132  Gtk::Frame *undo_redo_hint_frame = nullptr;
133  Gtk::Label *undo_redo_hint_label = nullptr;
134  sigc::connection undo_redo_hint_connection;
135 };
136 } // namespace horizon
Definition: canvas_gl.hpp:18
Definition: main_window.hpp:7