fixup keybinding editor binding action; restore some menu items lost in the trunk...
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 12 Oct 2007 22:30:25 +0000 (22:30 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 12 Oct 2007 22:30:25 +0000 (22:30 +0000)
git-svn-id: svn://localhost/ardour2/trunk@2548 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour.menus
gtk2_ardour/keyeditor.cc
gtk2_ardour/keyeditor.h
gtk2_ardour/processor_box.cc

index 4c8c3d6df99f3001bf7797e435119b069aa8a6a1..a24041374bfbaad553861c3f688820c6d69aaf24 100644 (file)
                    <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'/>
        </menu>
      </menubar>
 
-     <popup name='redirectmenu'>
+     <popup name='processormenu'>
         <menuitem action='newplugin'/>
         <menuitem action='newinsert'/>
         <menuitem action='newsend'/>
index 07aad652afef65209ae104e64c9240154ddaecbc..c9deebbb6a065b0a63877442ec54fcc38282cf86 100644 (file)
@@ -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 ();
@@ -62,14 +67,29 @@ 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();
index b200adabf4a59e14997637337a009cf96e6cbc42..9fd129ca312c6757d3c6fd5a76afb4cd6f637bfe 100644 (file)
@@ -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 ();
 };
index 12e30e59c0b4668d16cab982a6648375a0e86e9c..e5ccc827f3ff04617677efbab272c5c1933fe49c 100644 (file)
@@ -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));