summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/gui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-04-13 17:06:35 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-04-13 17:06:35 +0000
commit2329be8f6cf8817613ef8b185aa0dbbad06ed489 (patch)
tree90583b6669bf4eb042e4dbde6b33f83203e87b33 /libs/surfaces/mackie/gui.cc
parentfa471ea47169235649ba3fa223b34bc2cab0ea69 (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.cc76
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