Use automation line's frame of reference for y position.
[ardour.git] / gtk2_ardour / option_editor.cc
index aa975b6b94693df07e03706aaea8b22de655c168..a8c35f250fb018808874ba7446086566b77baed0 100644 (file)
 #include <gtkmm/alignment.h>
 #include "gtkmm2ext/utils.h"
 
-#include "ardour/configuration.h"
-#include "ardour/rc_configuration.h"
-#include "ardour/utils.h"
 #include "ardour/dB.h"
+#include "ardour/rc_configuration.h"
 #include "ardour/session.h"
+#include "ardour/types.h"
+#include "ardour/utils.h"
+
+#include "pbd/configuration.h"
+#include "pbd/replace_all.h"
 
 #include "public_editor.h"
 #include "option_editor.h"
@@ -61,11 +64,11 @@ OptionEditorComponent::add_widgets_to_page (OptionEditorPage* p, Gtk::Widget* wa
        if (!_note.empty ()) {
                ++m;
        }
-       
+
        p->table.resize (m, 3);
        p->table.attach (*wa, 1, 2, n, n + 1, FILL);
        p->table.attach (*wb, 2, 3, n, n + 1, FILL | EXPAND);
-       
+
        maybe_add_note (p, n + 1);
 }
 
@@ -137,7 +140,9 @@ BoolOption::set_state_from_config ()
 void
 BoolOption::toggled ()
 {
-       _set (_button->get_active ());
+       if (!_set (_button->get_active ())) {
+               _button->set_active (_get ());
+       }
 }
 
 RouteDisplayBoolOption::RouteDisplayBoolOption (string const & i, string const & n, sigc::slot<bool> g, sigc::slot<bool, bool> s)
@@ -216,7 +221,7 @@ EntryOption::focus_out (GdkEventFocus*)
  *  @param s Slot to set the variable's value.
  */
 BoolComboOption::BoolComboOption (
-       string const & i, string const & n, string const & t, string const & f, 
+       string const & i, string const & n, string const & t, string const & f,
        sigc::slot<bool> g, sigc::slot<bool, bool> s
        )
        : Option (i, n)
@@ -231,7 +236,7 @@ BoolComboOption::BoolComboOption (
        _combo->append_text (f);
        /* and option 1 is the true */
        _combo->append_text (t);
-       
+
        _combo->signal_changed().connect (sigc::mem_fun (*this, &BoolComboOption::changed));
 }
 
@@ -258,9 +263,9 @@ BoolComboOption::set_sensitive (bool yn)
 {
        _combo->set_sensitive (yn);
 }
-       
 
-         
+
+
 FaderOption::FaderOption (string const & i, string const & n, sigc::slot<gain_t> g, sigc::slot<bool, gain_t> s)
        : Option (i, n)
        , _db_adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0, 1, 0.01, 0.1)
@@ -377,7 +382,7 @@ OptionEditorPage::OptionEditorPage (Gtk::Notebook& n, std::string const & t)
  *  @param o Configuration to edit.
  *  @param t Title for the dialog.
  */
-OptionEditor::OptionEditor (Configuration* c, std::string const & t)
+OptionEditor::OptionEditor (PBD::Configuration* c, std::string const & t)
        : ArdourWindow (t), _config (c)
 {
        using namespace Notebook_Helpers;
@@ -445,7 +450,7 @@ OptionEditor::add_option (std::string const & pn, OptionEditorComponent* o)
        o->set_state_from_config ();
 }
 
-/** Add a new page 
+/** Add a new page
  *  @param pn Page name (will be created if it doesn't already exist)
  *  @param w widget that fills the page
  */
@@ -481,15 +486,14 @@ DirectoryOption::DirectoryOption (string const & i, string const & n, sigc::slot
        , _set (s)
 {
        _file_chooser.set_action (Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER);
-       _file_chooser.signal_file_set().connect (sigc::mem_fun (*this, &DirectoryOption::file_set));
-       _file_chooser.signal_current_folder_changed().connect (sigc::mem_fun (*this, &DirectoryOption::current_folder_set));
+       _file_chooser.signal_selection_changed().connect (sigc::mem_fun (*this, &DirectoryOption::selection_changed));
 }
 
 
 void
 DirectoryOption::set_state_from_config ()
 {
-       _file_chooser.set_current_folder (_get ());
+       _file_chooser.set_current_folder (poor_mans_glob(_get ()));
 }
 
 void
@@ -502,13 +506,7 @@ DirectoryOption::add_to_page (OptionEditorPage* p)
 }
 
 void
-DirectoryOption::file_set ()
-{
-       _set (_file_chooser.get_filename ());
-}
-
-void
-DirectoryOption::current_folder_set ()
+DirectoryOption::selection_changed ()
 {
-       _set (_file_chooser.get_current_folder ());
+       _set (poor_mans_glob(_file_chooser.get_filename ()));
 }