diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-13 17:06:35 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-13 17:06:35 +0000 |
commit | 2329be8f6cf8817613ef8b185aa0dbbad06ed489 (patch) | |
tree | 90583b6669bf4eb042e4dbde6b33f83203e87b33 /libs/surfaces/mackie/gui.cc | |
parent | fa471ea47169235649ba3fa223b34bc2cab0ea69 (diff) |
MCP: fix uninitialized variable; start work on extending MCP gui
git-svn-id: svn://localhost/ardour2/branches/3.0@11961 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/mackie/gui.cc')
-rw-r--r-- | libs/surfaces/mackie/gui.cc | 76 |
1 files changed, 57 insertions, 19 deletions
diff --git a/libs/surfaces/mackie/gui.cc b/libs/surfaces/mackie/gui.cc index 76715a4751..b710f8076f 100644 --- a/libs/surfaces/mackie/gui.cc +++ b/libs/surfaces/mackie/gui.cc @@ -20,29 +20,24 @@ #include <gtkmm/box.h> #include <gtkmm/spinbutton.h> #include <gtkmm/table.h> +#include <gtkmm/treeview.h> +#include <gtkmm/liststore.h> +#include <gtkmm/treestore.h> +#include <gtkmm/notebook.h> +#include <gtkmm/cellrenderercombo.h> + #include "gtkmm2ext/utils.h" -#include "ardour/rc_configuration.h" +#include "gtkmm2ext/actions.h" #include "mackie_control_protocol.h" #include "device_info.h" +#include "gui.h" #include "i18n.h" using namespace std; using namespace Mackie; - -class MackieControlProtocolGUI : public Gtk::VBox -{ -public: - MackieControlProtocolGUI (MackieControlProtocol &); - -private: - - void surface_combo_changed (); - - MackieControlProtocol& _cp; - Gtk::ComboBoxText _surface_combo; -}; +using namespace Gtk; void* MackieControlProtocol::get_gui () const @@ -69,6 +64,8 @@ MackieControlProtocol::build_gui () MackieControlProtocolGUI::MackieControlProtocolGUI (MackieControlProtocol& p) : _cp (p) { + set_border_width (12); + Gtk::Table* table = Gtk::manage (new Gtk::Table (2, 2)); table->set_spacings (4); @@ -83,14 +80,55 @@ MackieControlProtocolGUI::MackieControlProtocolGUI (MackieControlProtocol& p) } Gtkmm2ext::set_popdown_strings (_surface_combo, surfaces); _surface_combo.set_active_text (p.device_info().name()); + _surface_combo.signal_changed().connect (sigc::mem_fun (*this, &MackieControlProtocolGUI::surface_combo_changed)); - pack_start (*table); + append_page (*table, _("Device Selection")); + table->show_all(); - set_spacing (4); - set_border_width (12); - show_all (); + /* function key editor */ - _surface_combo.signal_changed().connect (sigc::mem_fun (*this, &MackieControlProtocolGUI::surface_combo_changed)); + append_page (function_key_scroller, _("Function Keys")); + function_key_scroller.add (function_key_editor); + + rebuild_function_key_editor (); + function_key_scroller.show_all(); +} + +void +MackieControlProtocolGUI::rebuild_function_key_editor () +{ + /* build a model of all available actions (needs to be tree structured + * more) + */ + + available_action_model = TreeStore::create (available_action_columns); + + vector<string> a_names; + vector<string> a_paths; + vector<string> a_tooltips; + vector<string> a_keys; + vector<Gtk::AccelKey> a_bindings; + + ActionManager::get_all_actions (a_names, a_paths, a_tooltips, a_keys, a_bindings); + + vector<string>::iterator n = a_names.begin(); + vector<string>::iterator p = a_paths.begin(); + TreeModel::Row r; + + for (; n != a_names.end(); ++n, ++p) { + r = *(available_action_model->append()); + r[available_action_columns.name] = (*n); + r[available_action_columns.path] = (*p); + } + + function_key_editor.append_column (_("Key"), function_key_columns.name); + + CellRendererCombo* plain_renderer = manage (new CellRendererCombo); + plain_renderer->property_model() = available_action_model; + plain_renderer->property_editable() = true; + plain_renderer->property_text_column() = 1; + TreeViewColumn* plain_column = manage (new TreeViewColumn (_("plain"), *plain_renderer)); + function_key_editor.append_column (*plain_column); } void |