Use LV2_SUPPORT define instead of HAVE_SLV2.
[ardour.git] / gtk2_ardour / option_editor.h
index 0f14b05b2580e812709599ce041ddef782f80ca2..b81672e094035b6651062ca7a5b4dd7695c74c0c 100644 (file)
 #include <gtkmm/comboboxtext.h>
 #include <gtkmm/spinbutton.h>
 #include <gtkmm/table.h>
+#include "gtkmm2ext/slider_controller.h"
 #include "ardour_dialog.h"
+#include "audio_clock.h"
+#include "ardour/types.h"
 
 /** @file option_editor.h
  *  @brief Base class for option editing dialog boxes.
@@ -106,8 +109,8 @@ protected:
 };
 
 /** Base class for components which provide UI to change an option */
-class Option : public OptionEditorComponent {
-
+class Option : public OptionEditorComponent
+{
 public:
        /** Construct an Option.
         *  @param i Option id (e.g. "plugins-stop-with-transport")
@@ -134,21 +137,25 @@ public:
                return _id;
        }
 
-private:
+protected:
 
        std::string _id;
        std::string _name;
 };
 
 /** Component which provides the UI to handle a boolean option using a GTK CheckButton */
-class BoolOption : public Option {
-
+class BoolOption : public Option
+{
 public:
 
        BoolOption (std::string const &, std::string const &, sigc::slot<bool>, sigc::slot<bool, bool>);
        void set_state_from_config ();
        void add_to_page (OptionEditorPage*);
 
+       void set_sensitive (bool yn) {
+               _button->set_sensitive (yn);
+       }
+       
 private:
 
        void toggled ();
@@ -159,8 +166,8 @@ private:
 };
 
 /** Component which provides the UI to handle a string option using a GTK Entry */
-class EntryOption : public Option {
-
+class EntryOption : public Option
+{
 public:
 
        EntryOption (std::string const &, std::string const &, sigc::slot<std::string>, sigc::slot<bool, std::string>);
@@ -182,8 +189,8 @@ private:
  *  The template parameter is the enumeration.
  */
 template <class T>
-class ComboOption : public Option {
-
+class ComboOption : public Option
+{
 public:
 
        /** Construct an ComboOption.
@@ -334,6 +341,42 @@ private:
        Gtk::SpinButton* _spin;
 };
 
+class FaderOption : public Option
+{
+public:
+
+       FaderOption (std::string const &, std::string const &, sigc::slot<ARDOUR::gain_t> g, sigc::slot<bool, ARDOUR::gain_t> s);
+       void set_state_from_config ();
+       void add_to_page (OptionEditorPage *);
+
+private:
+       void db_changed ();
+       
+       Gtk::Adjustment _db_adjustment;
+       Gtkmm2ext::HSliderController* _db_slider;
+       Glib::RefPtr<Gdk::Pixbuf> _pix;
+       Gtk::Entry _db_display;
+       Gtk::Label _label;
+       Gtk::HBox _box;
+       sigc::slot<ARDOUR::gain_t> _get;
+       sigc::slot<bool, ARDOUR::gain_t> _set;
+};
+
+class ClockOption : public Option
+{
+public:
+       ClockOption (std::string const &, std::string const &, sigc::slot<ARDOUR::framecnt_t>, sigc::slot<bool, ARDOUR::framecnt_t>);
+       void set_state_from_config ();
+       void add_to_page (OptionEditorPage *);
+       void set_session (ARDOUR::Session *);
+
+private:
+       Gtk::Label _label;
+       AudioClock _clock;
+       sigc::slot<ARDOUR::framecnt_t> _get;
+       sigc::slot<bool, ARDOUR::framecnt_t> _set;
+};
+
 /** Class to represent a single page in an OptionEditor's notebook.
  *  Pages are laid out using a 3-column table; the 1st column is used
  *  to indent non-headings, and the 2nd and 3rd for actual content.
@@ -357,13 +400,16 @@ public:
 
        void add_option (std::string const &, OptionEditorComponent *);
 
+       void set_current_page (std::string const &);
+
 protected:
 
+       virtual void parameter_changed (std::string const &);
+       
        ARDOUR::Configuration* _config;
 
 private:
 
-       void parameter_changed (std::string const &);
        PBD::ScopedConnection config_connection;
 
        Gtk::Notebook _notebook;