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 signal_activate_hud_link()53 Glib::SignalProxy<bool, const Glib::ustring &> signal_activate_hud_link() 54 { 55 return hud_label->signal_activate_link(); 56 } 57 58 59 void tool_bar_set_visible(bool v); 60 void tool_bar_set_tool_name(const std::string &s); 61 void tool_bar_set_tool_tip(const std::string &s); 62 void tool_bar_flash(const std::string &s); 63 void tool_bar_set_use_actions(bool use_actions); 64 void tool_bar_clear_actions(); 65 void tool_bar_append_action(Gtk::Widget &w); 66 67 void hud_update(const std::string &s); 68 void hud_hide(); 69 70 void show_nonmodal(const std::string &la, const std::string &button, std::function<void(void)> fn, 71 const std::string &la2 = ""); 72 73 void set_view_hints_label(const std::vector<std::string> &s); 74 75 void disable_grid_options(); 76 77 void set_version_info(const std::string &s); 78 79 // virtual ~MainWindow(); 80 private: 81 Gtk::EventBox *gl_container = nullptr; 82 83 Gtk::Revealer *tool_bar = nullptr; 84 Gtk::Label *tool_bar_name_label = nullptr; 85 Gtk::Label *tool_bar_tip_label = nullptr; 86 Gtk::Label *tool_bar_flash_label = nullptr; 87 Gtk::Stack *tool_bar_stack = nullptr; 88 Gtk::Label *tool_bar_action_tip_label = nullptr; 89 Gtk::Box *tool_bar_actions_box = nullptr; 90 sigc::connection tip_timeout_connection; 91 bool tool_bar_queue_close = false; 92 93 Gtk::Revealer *hud = nullptr; 94 Gtk::Label *hud_label = nullptr; 95 96 sigc::connection hud_timeout_connection; 97 bool hud_queue_close = false; 98 99 Gtk::Button *nonmodal_close_button = nullptr; 100 Gtk::Button *nonmodal_button = nullptr; 101 Gtk::Revealer *nonmodal_rev = nullptr; 102 Gtk::Label *nonmodal_label = nullptr; 103 Gtk::Label *nonmodal_label2 = nullptr; 104 std::function<void(void)> nonmodal_fn; 105 106 Gtk::Label *view_hints_label = nullptr; 107 108 Gtk::ToggleButton *grid_options_button = nullptr; 109 Gtk::Revealer *grid_options_revealer = nullptr; 110 111 Gtk::Stack *grid_box_stack = nullptr; 112 113 Gtk::InfoBar *version_info_bar = nullptr; 114 Gtk::Label *version_label = nullptr; 115 116 bool tool_bar_use_actions = false; 117 118 Gtk::Revealer *key_hint_revealer = nullptr; 119 sigc::connection key_hint_connection; 120 void update_key_hint_position(); 121 }; 122 } // namespace horizon 123