LuaProc::can_support_io_configuration: don't mix int and int32_t
[ardour.git] / gtk2_ardour / option_editor.h
index 51cdc0131f3b095f1137c6976f8d6069baeab47a..b5d44d577ca048d3b94fb44cc8ddda13bb0c1fdd 100644 (file)
@@ -683,11 +683,11 @@ public:
 };
 
 /** The OptionEditor dialog base class */
-class OptionEditor : public ARDOUR::SessionHandlePtr, virtual public sigc::trackable
+class OptionEditor : virtual public sigc::trackable
 {
 public:
-       OptionEditor (PBD::Configuration *, std::string const &);
-       ~OptionEditor ();
+       OptionEditor (PBD::Configuration *);
+       virtual ~OptionEditor ();
 
        void add_option (std::string const &, OptionEditorComponent *);
        void add_page (std::string const &, Gtk::Widget& page_widget);
@@ -699,11 +699,33 @@ protected:
 
        PBD::Configuration* _config;
        Gtk::Notebook& notebook() { return _notebook; }
+       Gtk::TreeView& treeview() { return option_treeview; }
+
+       class OptionColumns : public Gtk::TreeModel::ColumnRecord
+       {
+          public:
+               Gtk::TreeModelColumn<std::string> name;
+               Gtk::TreeModelColumn<Gtk::Widget*> widget;
+
+               OptionColumns() {
+                       add (name);
+                       add (widget);
+               }
+       };
+
+       OptionColumns option_columns;
+       Glib::RefPtr<Gtk::TreeStore> option_tree;
 
 private:
        PBD::ScopedConnection config_connection;
        Gtk::Notebook _notebook;
+       Gtk::TreeView option_treeview;
        std::map<std::string, OptionEditorPage*> _pages;
+
+       void add_path_to_treeview (std::string const &, Gtk::Widget&);
+       Gtk::TreeModel::iterator find_path_in_treemodel (std::string const & pn,
+                                                        bool create_missing = false);
+       void treeview_row_selected ();
 };
 
 /** The OptionEditor dialog-as-container base class */
@@ -712,16 +734,19 @@ class OptionEditorContainer : public OptionEditor, public Gtk::VBox
 public:
        OptionEditorContainer (PBD::Configuration *, std::string const &);
        ~OptionEditorContainer() {}
+private:
+       Gtk::HBox hpacker;
 };
 
 /** The OptionEditor dialog-as-container base class */
-class OptionEditorWindow : public OptionEditor, public Gtk::Window
+class OptionEditorWindow : public OptionEditor, public ArdourWindow
 {
 public:
        OptionEditorWindow (PBD::Configuration *, std::string const &);
        ~OptionEditorWindow() {}
 private:
        Gtk::VBox container;
+       Gtk::HBox hpacker;
 };
 
 #endif /* __gtk_ardour_option_editor_h__ */