From f34198c09ed5c888c65879915a56b24e0ce39bac Mon Sep 17 00:00:00 2001 From: petern Date: Sun, 29 Nov 2009 11:38:34 +0000 Subject: [PATCH] Split preferences window to its own file git-svn-id: file:///home/vcs/svn/jsweeper/trunk@17 6611ac79-6612-48ef-a1e9-b906f853523e --- CMakeLists.txt | 2 + src/gui.cpp | 158 +--------------------------------------- src/gui.h | 84 --------------------- src/preferences_gui.cpp | 156 +++++++++++++++++++++++++++++++++++++++ src/preferences_gui.h | 90 +++++++++++++++++++++++ 5 files changed, 250 insertions(+), 240 deletions(-) create mode 100644 src/preferences_gui.cpp create mode 100644 src/preferences_gui.h diff --git a/CMakeLists.txt b/CMakeLists.txt index cc99633..b91de35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,8 @@ SET(SOURCES src/port.h src/portmanager.cpp src/portmanager.h + src/preferences_gui.cpp + src/preferences_gui.h src/session.cpp src/session.h src/session_gui.cpp diff --git a/src/gui.cpp b/src/gui.cpp index c4b3ea1..44ca71c 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -1,11 +1,9 @@ -#include -#include -#include +#include "config.h" #include "jack.h" #include "portmanager.h" #include "gui.h" -#include "config.h" #include "session_gui.h" +#include "preferences_gui.h" Glib::RefPtr g_builder; @@ -203,155 +201,3 @@ void Gui::on_about() Gtk::AboutDialog *about; g_builder->get_widget("aboutdialog1", about); about->show(); } - -Preferences::Preferences(BaseObjectType *cobject, const Glib::RefPtr &builder) - : Gtk::Dialog(cobject) -{ - builder->get_widget("button_preferences_close", button_preferences_close); - - builder->get_widget("check_separate_port_type", check_separate_port_type); - builder->get_widget("check_expand_clients", check_expand_clients); - builder->get_widget("check_expand_groups", check_expand_groups); - - builder->get_widget("check_default_location", check_default_location); - builder->get_widget("filechooser_custom_location", filechooser_custom_location); - - builder->get_widget("check_activate_connections", check_activate_connections); - builder->get_widget("treeview_connections", treeview_connections); - builder->get_widget("button_connections_add", button_connections_add); - builder->get_widget("button_connections_remove", button_connections_remove); - builder->get_widget("button_connections_edit", button_connections_edit); - builder->get_widget("button_connections_up", button_connections_up); - builder->get_widget("button_connections_down", button_connections_down); - - builder->get_widget("check_activate_aliases", check_activate_aliases); - builder->get_widget("treeview_aliases", treeview_aliases); - builder->get_widget("button_aliases_add", button_aliases_add); - builder->get_widget("button_aliases_remove", button_aliases_remove); - builder->get_widget("button_aliases_edit", button_aliases_edit); - builder->get_widget("button_aliases_up", button_aliases_up); - builder->get_widget("button_aliases_down", button_aliases_down); - - builder->get_widget("fontbutton_font", fontbutton_font); - builder->get_widget("spin_cell_padding", spin_cell_padding); - - builder->get_widget("colorbutton_background", colour_background); - builder->get_widget("colorbutton_clients", colour_clients); - builder->get_widget("colorbutton_port_groups", colour_port_groups); - builder->get_widget("colorbutton_ports_audio", colour_ports_audio); - builder->get_widget("colorbutton_ports_midi", colour_ports_midi); - builder->get_widget("colorbutton_text", colour_text); - builder->get_widget("colorbutton_grid_client", colour_grid_client); - builder->get_widget("colorbutton_grid_group", colour_grid_group); - builder->get_widget("colorbutton_grid_port", colour_grid_port); - - check_separate_port_type->set_active(cfg.SeparateByPortType); - check_expand_clients->set_active(cfg.ExpandClients); - check_expand_groups->set_active(cfg.ExpandGroups); - - Refresh(); - - { - check_activate_aliases->set_active(cfg.UseAliases); - - m_tree_model_aliases = Gtk::ListStore::create(m_columns); - treeview_aliases->set_model(m_tree_model_aliases); - - const AliasList &list = pm.AliasGetList(); - AliasList::const_iterator it; - int i = 0; - for (it = list.begin(); it != list.end(); ++it, i++) { - const Alias &a = *it; - Gtk::TreeModel::Row row = *(m_tree_model_aliases->append()); - - row[m_columns.m_row] = i; - row[m_columns.m_first] = a.match; - row[m_columns.m_second] = a.replace; - } - - treeview_aliases->append_column("Match", m_columns.m_first); - treeview_aliases->append_column("Replace", m_columns.m_second); - } - - char font[256]; - snprintf(font, sizeof font, "%s %d", cfg.FontFace.c_str(), cfg.FontSize); - fontbutton_font->set_font_name(font); - spin_cell_padding->set_value(cfg.CellPadding); - - colour_background->set_color(cfg.Background.colour); - colour_clients->set_color(cfg.TabClient.colour); - colour_port_groups->set_color(cfg.TabGroup.colour); - colour_ports_audio->set_color(cfg.TabPortAudio.colour); - colour_ports_midi->set_color(cfg.TabPortMidi.colour); - colour_text->set_color(cfg.Text.colour); - colour_grid_client->set_color(cfg.GridLinesClient.colour); - colour_grid_group->set_color(cfg.GridLinesGroup.colour); - colour_grid_port->set_color(cfg.GridLinesPort.colour); - - button_preferences_close->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_preferences_close_click)); - - check_separate_port_type->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_separate_port_type_click)); - check_expand_clients->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_expand_clients_click)); - check_expand_groups->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_expand_groups_click)); - - check_activate_aliases->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_activate_aliases_click)); - - fontbutton_font->signal_font_set().connect(sigc::mem_fun(*this, &Preferences::on_fontbutton_font_click)); - spin_cell_padding->signal_value_changed().connect(sigc::mem_fun(*this, &Preferences::on_spin_cell_padding_click)); -} - -Preferences *Preferences::Open() -{ - Preferences *window = NULL; - g_builder->get_widget_derived("dialog_preferences", window); - window->Refresh(); - return window; -} - -void Preferences::Refresh() -{ -} - -void Preferences::on_preferences_close_click() -{ - hide(); -} - -void Preferences::on_check_separate_port_type_click() -{ - cfg.SeparateByPortType = check_separate_port_type->get_active(); - g->SetPortTypeSeparation(); - g->Refresh(); -} - -void Preferences::on_check_expand_clients_click() -{ - cfg.ExpandClients = check_expand_clients->get_active(); -} - -void Preferences::on_check_expand_groups_click() -{ - cfg.ExpandGroups = check_expand_groups->get_active(); -} - -void Preferences::on_check_activate_aliases_click() -{ - cfg.UseAliases = check_activate_aliases->get_active(); - pm.Refresh(); - g->Refresh(); - Refresh(); -} - -void Preferences::on_fontbutton_font_click() -{ - std::string font = fontbutton_font->get_font_name(); - cfg.FontFace = font.substr(0, font.find_last_of(' ')); - cfg.FontSize = ss_conv_to(font.substr(font.find_last_of(' ') + 1)); - g->Refresh(); -} - -void Preferences::on_spin_cell_padding_click() -{ - cfg.CellPadding = spin_cell_padding->get_value(); - g->Refresh(); -} diff --git a/src/gui.h b/src/gui.h index 31bac85..f363f91 100644 --- a/src/gui.h +++ b/src/gui.h @@ -43,90 +43,6 @@ protected: 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 diff --git a/src/preferences_gui.cpp b/src/preferences_gui.cpp new file mode 100644 index 0000000..2929a79 --- /dev/null +++ b/src/preferences_gui.cpp @@ -0,0 +1,156 @@ +#include "config.h" +#include "portmanager.h" +#include "gui.h" +#include "preferences_gui.h" + +Preferences::Preferences(BaseObjectType *cobject, const Glib::RefPtr &builder) + : Gtk::Dialog(cobject) +{ + builder->get_widget("button_preferences_close", button_preferences_close); + + builder->get_widget("check_separate_port_type", check_separate_port_type); + builder->get_widget("check_expand_clients", check_expand_clients); + builder->get_widget("check_expand_groups", check_expand_groups); + + builder->get_widget("check_default_location", check_default_location); + builder->get_widget("filechooser_custom_location", filechooser_custom_location); + + builder->get_widget("check_activate_connections", check_activate_connections); + builder->get_widget("treeview_connections", treeview_connections); + builder->get_widget("button_connections_add", button_connections_add); + builder->get_widget("button_connections_remove", button_connections_remove); + builder->get_widget("button_connections_edit", button_connections_edit); + builder->get_widget("button_connections_up", button_connections_up); + builder->get_widget("button_connections_down", button_connections_down); + + builder->get_widget("check_activate_aliases", check_activate_aliases); + builder->get_widget("treeview_aliases", treeview_aliases); + builder->get_widget("button_aliases_add", button_aliases_add); + builder->get_widget("button_aliases_remove", button_aliases_remove); + builder->get_widget("button_aliases_edit", button_aliases_edit); + builder->get_widget("button_aliases_up", button_aliases_up); + builder->get_widget("button_aliases_down", button_aliases_down); + + builder->get_widget("fontbutton_font", fontbutton_font); + builder->get_widget("spin_cell_padding", spin_cell_padding); + + builder->get_widget("colorbutton_background", colour_background); + builder->get_widget("colorbutton_clients", colour_clients); + builder->get_widget("colorbutton_port_groups", colour_port_groups); + builder->get_widget("colorbutton_ports_audio", colour_ports_audio); + builder->get_widget("colorbutton_ports_midi", colour_ports_midi); + builder->get_widget("colorbutton_text", colour_text); + builder->get_widget("colorbutton_grid_client", colour_grid_client); + builder->get_widget("colorbutton_grid_group", colour_grid_group); + builder->get_widget("colorbutton_grid_port", colour_grid_port); + + check_separate_port_type->set_active(cfg.SeparateByPortType); + check_expand_clients->set_active(cfg.ExpandClients); + check_expand_groups->set_active(cfg.ExpandGroups); + + Refresh(); + + { + check_activate_aliases->set_active(cfg.UseAliases); + + m_tree_model_aliases = Gtk::ListStore::create(m_columns); + treeview_aliases->set_model(m_tree_model_aliases); + + const AliasList &list = pm.AliasGetList(); + AliasList::const_iterator it; + int i = 0; + for (it = list.begin(); it != list.end(); ++it, i++) { + const Alias &a = *it; + Gtk::TreeModel::Row row = *(m_tree_model_aliases->append()); + + row[m_columns.m_row] = i; + row[m_columns.m_first] = a.match; + row[m_columns.m_second] = a.replace; + } + + treeview_aliases->append_column("Match", m_columns.m_first); + treeview_aliases->append_column("Replace", m_columns.m_second); + } + + char font[256]; + snprintf(font, sizeof font, "%s %d", cfg.FontFace.c_str(), cfg.FontSize); + fontbutton_font->set_font_name(font); + spin_cell_padding->set_value(cfg.CellPadding); + + colour_background->set_color(cfg.Background.colour); + colour_clients->set_color(cfg.TabClient.colour); + colour_port_groups->set_color(cfg.TabGroup.colour); + colour_ports_audio->set_color(cfg.TabPortAudio.colour); + colour_ports_midi->set_color(cfg.TabPortMidi.colour); + colour_text->set_color(cfg.Text.colour); + colour_grid_client->set_color(cfg.GridLinesClient.colour); + colour_grid_group->set_color(cfg.GridLinesGroup.colour); + colour_grid_port->set_color(cfg.GridLinesPort.colour); + + button_preferences_close->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_preferences_close_click)); + + check_separate_port_type->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_separate_port_type_click)); + check_expand_clients->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_expand_clients_click)); + check_expand_groups->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_expand_groups_click)); + + check_activate_aliases->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::on_check_activate_aliases_click)); + + fontbutton_font->signal_font_set().connect(sigc::mem_fun(*this, &Preferences::on_fontbutton_font_click)); + spin_cell_padding->signal_value_changed().connect(sigc::mem_fun(*this, &Preferences::on_spin_cell_padding_click)); +} + +Preferences *Preferences::Open() +{ + Preferences *window = NULL; + g_builder->get_widget_derived("dialog_preferences", window); + window->Refresh(); + return window; +} + +void Preferences::Refresh() +{ +} + +void Preferences::on_preferences_close_click() +{ + hide(); +} + +void Preferences::on_check_separate_port_type_click() +{ + cfg.SeparateByPortType = check_separate_port_type->get_active(); + g->SetPortTypeSeparation(); + g->Refresh(); +} + +void Preferences::on_check_expand_clients_click() +{ + cfg.ExpandClients = check_expand_clients->get_active(); +} + +void Preferences::on_check_expand_groups_click() +{ + cfg.ExpandGroups = check_expand_groups->get_active(); +} + +void Preferences::on_check_activate_aliases_click() +{ + cfg.UseAliases = check_activate_aliases->get_active(); + pm.Refresh(); + g->Refresh(); + Refresh(); +} + +void Preferences::on_fontbutton_font_click() +{ + std::string font = fontbutton_font->get_font_name(); + cfg.FontFace = font.substr(0, font.find_last_of(' ')); + cfg.FontSize = ss_conv_to(font.substr(font.find_last_of(' ') + 1)); + g->Refresh(); +} + +void Preferences::on_spin_cell_padding_click() +{ + cfg.CellPadding = spin_cell_padding->get_value(); + g->Refresh(); +} diff --git a/src/preferences_gui.h b/src/preferences_gui.h new file mode 100644 index 0000000..b439765 --- /dev/null +++ b/src/preferences_gui.h @@ -0,0 +1,90 @@ +#ifndef PREFERENCES_GUI_H +#define PREFERENCES_GUI_H + +#include + +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; +}; + +#endif // PREFERENCES_GUI_H