#ifndef GUI_H #define GUI_H #include #include "matrix.h" extern Glib::RefPtr g_builder; class Gui : public Gtk::Window { private: Gtk::Notebook m_notebook; Gtk::ScrolledWindow m_scrolledwindow_audio; Gtk::ScrolledWindow m_scrolledwindow_midi; Gtk::VBox *m_vbox; Matrix *m_matrix_audio; Matrix *m_matrix_midi; bool m_closing; public: Gui(BaseObjectType *cobject, const Glib::RefPtr &builder); static Gui *Open(); virtual ~Gui(); void SetPortTypeSeparation(); void Refresh(); protected: bool on_idle(); void on_notebook_switch_page(GtkNotebookPage * /* page */, guint /* page_num */); void on_quit(); void on_session_open(); void on_session_save(); void on_session_save_as(); void on_session_close(); void on_preferences(); void on_connect(); void on_disconnect(); void on_about(); }; class Preferences : public Gtk::Dialog { private: Gtk::Button *button_preferences_close; // Grid behaviour Gtk::CheckButton *check_separate_port_type; Gtk::CheckButton *check_expand_clients; Gtk::CheckButton *check_expand_groups; // Session Gtk::CheckButton *check_default_location; Gtk::FileChooserButton *filechooser_custom_location; // Connections Gtk::CheckButton *check_activate_connections; Gtk::TreeView *treeview_connections; Gtk::Button *button_connections_add; Gtk::Button *button_connections_remove; Gtk::Button *button_connections_edit; Gtk::Button *button_connections_up; Gtk::Button *button_connections_down; // Aliases Gtk::CheckButton *check_activate_aliases; Gtk::TreeView *treeview_aliases; Gtk::Button *button_aliases_add; Gtk::Button *button_aliases_remove; Gtk::Button *button_aliases_edit; Gtk::Button *button_aliases_up; Gtk::Button *button_aliases_down; // Grid layout Gtk::FontButton *fontbutton_font; Gtk::SpinButton *spin_cell_padding; // Colours Gtk::ColorButton *colour_background; Gtk::ColorButton *colour_clients; Gtk::ColorButton *colour_port_groups; Gtk::ColorButton *colour_ports_audio; Gtk::ColorButton *colour_ports_midi; Gtk::ColorButton *colour_text; Gtk::ColorButton *colour_grid_client; Gtk::ColorButton *colour_grid_group; Gtk::ColorButton *colour_grid_port; public: Preferences(BaseObjectType *cobject, const Glib::RefPtr &builder); static Preferences *Open(); void Refresh(); protected: void on_preferences_close_click(); void on_check_separate_port_type_click(); void on_check_expand_clients_click(); void on_check_expand_groups_click(); void on_check_activate_aliases_click(); void on_fontbutton_font_click(); void on_spin_cell_padding_click(); class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_row); add(m_first); add(m_second); } Gtk::TreeModelColumn m_row; Gtk::TreeModelColumn m_first; Gtk::TreeModelColumn m_second; }; ModelColumns m_columns; Glib::RefPtr m_tree_model_connections; Glib::RefPtr m_tree_model_aliases; }; extern Gui *g; #endif // GUI_H