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 | |
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')
-rw-r--r-- | libs/surfaces/mackie/gui.cc | 76 | ||||
-rw-r--r-- | libs/surfaces/mackie/gui.h | 81 | ||||
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 1 |
3 files changed, 139 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 diff --git a/libs/surfaces/mackie/gui.h b/libs/surfaces/mackie/gui.h new file mode 100644 index 0000000000..a20429a60a --- /dev/null +++ b/libs/surfaces/mackie/gui.h @@ -0,0 +1,81 @@ +/* + Copyright (C) 2010 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include <gtkmm/comboboxtext.h> +#include <gtkmm/box.h> +#include <gtkmm/spinbutton.h> +#include <gtkmm/table.h> +#include <gtkmm/treeview.h> +#include <gtkmm/liststore.h> +#include <gtkmm/notebook.h> +#include <gtkmm/scrolledwindow.h> + +class MackieControlProtocol; + +#include "i18n.h" + +class MackieControlProtocolGUI : public Gtk::Notebook +{ + public: + MackieControlProtocolGUI (MackieControlProtocol &); + + private: + void surface_combo_changed (); + + MackieControlProtocol& _cp; + Gtk::ComboBoxText _surface_combo; + + struct AvailableActionColumns : public Gtk::TreeModel::ColumnRecord { + AvailableActionColumns() { + add (name); + add (path); + } + Gtk::TreeModelColumn<std::string> name; + Gtk::TreeModelColumn<std::string> path; + }; + + struct FunctionKeyColumns : public Gtk::TreeModel::ColumnRecord { + FunctionKeyColumns() { + add (name); + add (unmodified); + add (shift); + add (control); + add (option); + add (cmdalt); + add (shiftcontrol); + }; + Gtk::TreeModelColumn<std::string> name; + Gtk::TreeModelColumn<std::string> unmodified; + Gtk::TreeModelColumn<std::string> shift; + Gtk::TreeModelColumn<std::string> control; + Gtk::TreeModelColumn<std::string> option; + Gtk::TreeModelColumn<std::string> cmdalt; + Gtk::TreeModelColumn<std::string> shiftcontrol; + }; + + AvailableActionColumns available_action_columns; + FunctionKeyColumns function_key_columns; + + Gtk::ScrolledWindow function_key_scroller; + Gtk::TreeView function_key_editor; + Glib::RefPtr<Gtk::ListStore> function_key_model; + Glib::RefPtr<Gtk::TreeStore> available_action_model; + + void rebuild_function_key_editor (); +}; + diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index 3a39cc3522..2b9cda7479 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -102,6 +102,7 @@ MackieControlProtocol::MackieControlProtocol (Session& session) , _flip_mode (false) , _view_mode (Mixer) , _current_selected_track (-1) + , _modifier_state (0) { DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::MackieControlProtocol\n"); |