fix OSX compilation
[ardour.git] / gtk2_ardour / option_editor.h
index 0823d16630fbe21cd0188558f7389f247eb537f0..53c671287831a4288383490cf2abd5a933715644 100644 (file)
 #include <gtkmm/comboboxtext.h>
 #include <gtkmm/spinbutton.h>
 #include <gtkmm/table.h>
+#include <gtkmm/window.h>
+
 #include "gtkmm2ext/slider_controller.h"
+
 #include "ardour_window.h"
 #include "audio_clock.h"
 #include "ardour/types.h"
@@ -680,11 +683,11 @@ public:
 };
 
 /** The OptionEditor dialog base class */
-class OptionEditor : public Gtk::VBox, public ARDOUR::SessionHandlePtr
+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);
@@ -692,19 +695,56 @@ public:
        void set_current_page (std::string const &);
 
 protected:
-
        virtual void parameter_changed (std::string const &);
 
        PBD::Configuration* _config;
+       Gtk::Notebook& notebook() { return _notebook; }
+       Gtk::TreeView& treeview() { return option_treeview; }
 
-private:
+       class OptionColumns : public Gtk::TreeModel::ColumnRecord
+       {
+          public:
+               Gtk::TreeModelColumn<std::string> name;
+               Gtk::TreeModelColumn<Gtk::Widget*> widget;
 
-       PBD::ScopedConnection config_connection;
+               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&);
+       void treeview_row_selected ();
 };
 
-#endif /* __gtk_ardour_option_editor_h__ */
+/** The OptionEditor dialog-as-container base class */
+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 ArdourWindow
+{
+public:
+       OptionEditorWindow (PBD::Configuration *, std::string const &);
+       ~OptionEditorWindow() {}
+private:
+       Gtk::VBox container;
+       Gtk::HBox hpacker;
+};
 
+#endif /* __gtk_ardour_option_editor_h__ */