summaryrefslogtreecommitdiff
path: root/gtk2_ardour/keyeditor.h
diff options
context:
space:
mode:
authorMathias Buhr <napcode@apparatus.de>2016-03-07 23:56:03 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2016-03-08 08:44:58 -0500
commit1375c454fbf40a5c698f8e95d9dc4f85d0835ebd (patch)
tree0e7d0602f992d7990c9a4531547de296374b28ff /gtk2_ardour/keyeditor.h
parent6565a1d0671f6953d210b11a32a284120ebbeb15 (diff)
Implements filtering in bindings editor
Diffstat (limited to 'gtk2_ardour/keyeditor.h')
-rw-r--r--gtk2_ardour/keyeditor.h24
1 files changed, 16 insertions, 8 deletions
diff --git a/gtk2_ardour/keyeditor.h b/gtk2_ardour/keyeditor.h
index b04b973009..1c90269875 100644
--- a/gtk2_ardour/keyeditor.h
+++ b/gtk2_ardour/keyeditor.h
@@ -27,6 +27,7 @@
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/treeview.h>
#include <gtkmm/treestore.h>
+#include "gtkmm2ext/searchbar.h"
#include "ardour_window.h"
@@ -41,14 +42,10 @@ class KeyEditor : public ArdourWindow
void add_tab (std::string const &name, Gtkmm2ext::Bindings&);
- protected:
- bool on_key_press_event (GdkEventKey*);
- bool on_key_release_event (GdkEventKey*);
-
- private:
+ private:
class Tab : public Gtk::VBox
{
- public:
+ public:
Tab (KeyEditor&, std::string const &name, Gtkmm2ext::Bindings*);
void populate ();
@@ -57,6 +54,7 @@ class KeyEditor : public ArdourWindow
void action_selected ();
void sort_column_changed ();
void tab_mapped ();
+ bool visible_func(const Gtk::TreeModel::const_iterator& iter) const;
struct KeyEditorColumns : public Gtk::TreeModel::ColumnRecord {
KeyEditorColumns () {
@@ -83,8 +81,16 @@ class KeyEditor : public ArdourWindow
Gtkmm2ext::Bindings* bindings;
Gtk::ScrolledWindow scroller;
Gtk::TreeView view;
- Glib::RefPtr<Gtk::TreeStore> model;
+ Glib::RefPtr<Gtk::TreeStore> data_model;
+ Glib::RefPtr<Gtk::TreeModelFilter> filter;
+ Glib::RefPtr<Gtk::TreeModelSort> sorted_filter;
KeyEditorColumns columns;
+ guint last_keyval;
+
+ protected:
+ bool on_key_press_event (GdkEventKey*);
+ bool on_key_release_event (GdkEventKey*);
+ Gtk::TreeModel::iterator find_action_path (Gtk::TreeModel::const_iterator begin, Gtk::TreeModel::const_iterator end, const std::string& path) const;
};
friend class Tab;
@@ -96,7 +102,8 @@ class KeyEditor : public ArdourWindow
Gtk::HBox reset_box;
Gtk::Button reset_button;
Gtk::Label reset_label;
- guint last_keyval;
+ Gtkmm2ext::SearchBar filter_entry;
+ std::string filter_string;
typedef std::vector<Tab*> Tabs;
@@ -110,6 +117,7 @@ class KeyEditor : public ArdourWindow
unsigned int sort_column;
Gtk::SortType sort_type;
void toggle_sort_type ();
+ void search_string_updated (const std::string&);
};
#endif /* __ardour_gtk_key_editor_h__ */