summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour.menus6
-rw-r--r--gtk2_ardour/keyeditor.cc24
-rw-r--r--gtk2_ardour/keyeditor.h6
-rw-r--r--gtk2_ardour/processor_box.cc1
4 files changed, 36 insertions, 1 deletions
diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus
index 4c8c3d6df9..a24041374b 100644
--- a/gtk2_ardour/ardour.menus
+++ b/gtk2_ardour/ardour.menus
@@ -298,6 +298,10 @@
<menuitem action='UseSoftwareMonitoring'/>
<menuitem action='UseExternalMonitoring'/>
</menu>
+ <menu action='Plugins'>
+ <menuitem action='DisableAllPlugins'/>
+ <menuitem action='ABAllPlugins'/>
+ </menu>
<menu action='Metering'>
<menu action='MeteringFallOffRate'>
<menuitem action='MeterFalloffOff'/>
@@ -368,7 +372,7 @@
</menu>
</menubar>
- <popup name='redirectmenu'>
+ <popup name='processormenu'>
<menuitem action='newplugin'/>
<menuitem action='newinsert'/>
<menuitem action='newsend'/>
diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc
index 07aad652af..c9deebbb6a 100644
--- a/gtk2_ardour/keyeditor.cc
+++ b/gtk2_ardour/keyeditor.cc
@@ -20,6 +20,9 @@ using namespace Gdk;
KeyEditor::KeyEditor ()
: ArdourDialog (_("Keybinding Editor"), false)
{
+ can_bind = false;
+ last_state = 0;
+
model = TreeStore::create(columns);
view.set_model (model);
@@ -37,7 +40,9 @@ KeyEditor::KeyEditor ()
scroller.add (view);
scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+
get_vbox()->pack_start (scroller);
+ get_vbox()->set_border_width (12);
scroller.show ();
view.show ();
@@ -63,13 +68,28 @@ KeyEditor::action_selected ()
}
bool
+KeyEditor::on_key_press_event (GdkEventKey* ev)
+{
+ can_bind = true;
+ last_state = ev->state;
+}
+
+bool
KeyEditor::on_key_release_event (GdkEventKey* ev)
{
+ if (!can_bind || ev->state != last_state) {
+ return false;
+ }
+
TreeModel::iterator i = view.get_selection()->get_selected();
if (i != model->children().end()) {
string path = (*i)[columns.path];
+ if (!(*i)[columns.bindable]) {
+ goto out;
+ }
+
bool result = AccelMap::change_entry (path,
ev->keyval,
(ModifierType) ev->state,
@@ -91,6 +111,8 @@ KeyEditor::on_key_release_event (GdkEventKey* ev)
}
+ out:
+ can_bind = false;
return true;
}
@@ -136,6 +158,7 @@ KeyEditor::populate ()
nodes[parts[1]] = rowp;
parent = *(rowp);
parent[columns.action] = parts[1];
+ parent[columns.bindable] = false;
row = *(model->append (parent.children()));
@@ -149,6 +172,7 @@ KeyEditor::populate ()
row[columns.action] = (*l);
row[columns.path] = (*p);
+ row[columns.bindable] = true;
if (*k == ActionManager::unbound_string) {
row[columns.binding] = string();
diff --git a/gtk2_ardour/keyeditor.h b/gtk2_ardour/keyeditor.h
index b200adabf4..9fd129ca31 100644
--- a/gtk2_ardour/keyeditor.h
+++ b/gtk2_ardour/keyeditor.h
@@ -18,6 +18,7 @@ class KeyEditor : public ArdourDialog
protected:
void on_show ();
void on_unmap ();
+ bool on_key_press_event (GdkEventKey*);
bool on_key_release_event (GdkEventKey*);
private:
@@ -26,10 +27,12 @@ class KeyEditor : public ArdourDialog
add (action);
add (binding);
add (path);
+ add (bindable);
}
Gtk::TreeModelColumn<Glib::ustring> action;
Gtk::TreeModelColumn<std::string> binding;
Gtk::TreeModelColumn<std::string> path;
+ Gtk::TreeModelColumn<bool> bindable;
};
Gtk::ScrolledWindow scroller;
@@ -37,6 +40,9 @@ class KeyEditor : public ArdourDialog
Glib::RefPtr<Gtk::TreeStore> model;
KeyEditorColumns columns;
+ bool can_bind;
+ guint last_state;
+
void action_selected ();
void populate ();
};
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 12e30e59c0..e5ccc827f3 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -120,6 +120,7 @@ ProcessorBox::ProcessorBox (Placement pcmnt, Session& sess, boost::shared_ptr<Ro
processor_display.set_size_request (-1, 40);
processor_display.get_column(0)->set_sizing(TREE_VIEW_COLUMN_FIXED);
processor_display.get_column(0)->set_fixed_width(48);
+ processor_display.set_enable_search (false);
processor_display.add_object_drag (columns.processor.index(), "redirects");
processor_display.signal_object_drop.connect (mem_fun (*this, &ProcessorBox::object_drop));