factor out shuttle controller to its own class, new design
[ardour2.git] / gtk2_ardour / search_path_option.h
blob68fb6494817949ee9ccf00ad7e4b0d5c10b3291b
1 #ifndef __gtk_ardour_search_path_option_h__
2 #define __gtk_ardour_search_path_option_h__
4 #include <string>
6 #include <gtkmm/filechooserbutton.h>
7 #include <gtkmm/entry.h>
8 #include <gtkmm/button.h>
9 #include <gtkmm/box.h>
11 #include "option_editor.h"
13 class SearchPathOption : public Option
15 public:
16 SearchPathOption (const std::string& pathname, const std::string& label,
17 sigc::slot<std::string>, sigc::slot<bool, std::string>);
18 ~SearchPathOption ();
20 void set_state_from_config ();
21 void add_to_page (OptionEditorPage*);
22 void clear ();
24 protected:
25 sigc::slot<std::string> _get; ///< slot to get the configuration variable's value
26 sigc::slot<bool, std::string> _set; ///< slot to set the configuration variable's value
28 struct PathEntry {
29 PathEntry (const std::string& path, bool removable=true);
31 Gtk::Entry entry;
32 Gtk::Button remove_button;
33 Gtk::HBox box;
35 std::string path;
38 std::list<PathEntry*> paths;
39 Gtk::FileChooserButton add_chooser;
40 Gtk::VBox vbox;
41 Gtk::VBox path_box;
42 Gtk::Label session_label;
44 void add_path (const std::string& path, bool removable=true);
45 void remove_path (PathEntry*);
46 void changed ();
47 void path_chosen ();
50 #endif /* __gtk_ardour_search_path_option_h__ */