X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsearch_path_option.cc;h=9aea6178120fe71aaa6bffe2e8655bfbf56d8066;hb=8509b5fddc538853a80c97dfdb5b425996bf9662;hp=be01b9b1aa6893f7977cfcce967bf6c331dba38d;hpb=5c6ba165f684fbd45be33c83d41083567d4dd88f;p=ardour.git diff --git a/gtk2_ardour/search_path_option.cc b/gtk2_ardour/search_path_option.cc index be01b9b1aa..9aea617812 100644 --- a/gtk2_ardour/search_path_option.cc +++ b/gtk2_ardour/search_path_option.cc @@ -17,12 +17,17 @@ */ #include "pbd/strsplit.h" +#include "pbd/compose.h" +#include "pbd/shortpath.h" + #include "search_path_option.h" +#include "i18n.h" using namespace std; using namespace Gtk; SearchPathOption::SearchPathOption (const string& pathname, const string& label, + const string& default_path, sigc::slot get, sigc::slot set) : Option (pathname, label) , _get (get) @@ -35,22 +40,24 @@ SearchPathOption::SearchPathOption (const string& pathname, const string& label, hbox->set_border_width (12); hbox->set_spacing (6); - hbox->pack_end (add_chooser, false, false); - hbox->pack_end (*manage (new Label ("Click to add a new location")), false, false); + hbox->pack_end (add_chooser, true, true); + hbox->pack_end (*manage (new Label (_("Click to add a new location"))), false, false); hbox->show_all (); - + vbox.pack_start (path_box); vbox.pack_end (*hbox); session_label.set_use_markup (true); - session_label.set_markup (string_compose ("%1", _("the session folder"))); + session_label.set_markup (string_compose ("%1 (%2)", _("the session folder"), short_path (default_path, 32))); session_label.set_alignment (0.0, 0.5); session_label.show (); + + path_box.pack_start (session_label); } SearchPathOption::~SearchPathOption() { - + } @@ -59,20 +66,21 @@ SearchPathOption::path_chosen () { string path = add_chooser.get_filename (); add_path (path); + changed (); } void SearchPathOption::add_to_page (OptionEditorPage* p) { int const n = p->table.property_n_rows(); - p->table.resize (n + 2, 3); + p->table.resize (n + 1, 3); Label* label = manage (new Label); - label->set_alignment (0.0, 0.5); - label->set_markup (string_compose ("%1", _name)); + label->set_alignment (0.0, 0.0); + label->set_text (string_compose ("%1", _name)); - p->table.attach (*label, 0, 1, n, n + 1, FILL | EXPAND); - p->table.attach (vbox, 0, 3, n + 1, n + 2, FILL | EXPAND); + p->table.attach (*label, 1, 2, n, n + 1, FILL | EXPAND); + p->table.attach (vbox, 2, 3, n, n + 1, FILL | EXPAND); } void @@ -95,8 +103,8 @@ SearchPathOption::set_state_from_config () clear (); path_box.pack_start (session_label); - split (str, dirs, ':'); - + split (str, dirs, G_SEARCHPATH_SEPARATOR); + for (vector::iterator d = dirs.begin(); d != dirs.end(); ++d) { add_path (*d); } @@ -106,17 +114,11 @@ void SearchPathOption::changed () { string str; - - for (list::iterator p = paths.begin(); p != paths.end(); ++p) { - if (p == paths.begin()) { - /* skip first entry, its always "the session" - */ - continue; - } + for (list::iterator p = paths.begin(); p != paths.end(); ++p) { if (!str.empty()) { - str += ':'; + str += G_SEARCHPATH_SEPARATOR; } str += (*p)->entry.get_text (); } @@ -130,11 +132,16 @@ SearchPathOption::add_path (const string& path, bool removable) PathEntry* pe = new PathEntry (path, removable); paths.push_back (pe); path_box.pack_start (pe->box, false, false); + pe->remove_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &SearchPathOption::remove_path), pe)); } void -SearchPathOption::remove_path (const string& path) +SearchPathOption::remove_path (PathEntry* pe) { + path_box.remove (pe->box); + paths.remove (pe); + delete pe; + changed (); } SearchPathOption::PathEntry::PathEntry (const std::string& path, bool removable) @@ -146,7 +153,7 @@ SearchPathOption::PathEntry::PathEntry (const std::string& path, bool removable) box.set_spacing (6); box.set_homogeneous (false); box.pack_start (entry, true, true); - + if (removable) { box.pack_start (remove_button, false, false); remove_button.show ();