sfdb paths are saved and restored. prercu
authorTaybin Rutkin <taybin@taybin.com>
Thu, 27 Jul 2006 03:30:03 +0000 (03:30 +0000)
committerTaybin Rutkin <taybin@taybin.com>
Thu, 27 Jul 2006 03:30:03 +0000 (03:30 +0000)
git-svn-id: svn://localhost/ardour2/trunk@700 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/sfdb_ui.cc
gtk2_ardour/sfdb_ui.h
libs/ardour/ardour/audio_library.h
libs/ardour/audio_library.cc
libs/ardour/configuration.cc
libs/ardour/globals.cc

index 79546880de0644c3f04719b48ed4831bf2d69c0f..5cca008dc0ffb8503d04ce65a7e2eb0544313c18 100644 (file)
@@ -97,6 +97,9 @@ SoundFileBox::SoundFileBox ()
                        (mem_fun (*this, &SoundFileBox::add_field_clicked));
        remove_field_btn.signal_clicked().connect
                        (mem_fun (*this, &SoundFileBox::remove_field_clicked));
+       
+       Gtk::CellRendererText* cell(static_cast<Gtk::CellRendererText*>(field_view.get_column_cell_renderer(1)));
+       cell->signal_edited().connect (mem_fun (*this, &SoundFileBox::field_edited));
 
        field_view.get_selection()->signal_changed().connect (mem_fun (*this, &SoundFileBox::field_selected));
        Library->fields_changed.connect (mem_fun (*this, &SoundFileBox::setup_fields));
@@ -259,6 +262,13 @@ SoundFileBox::remove_field_clicked ()
        Library->save_changes ();
 }
 
+void
+SoundFileBox::field_edited (const Glib::ustring& str1, const Glib::ustring& str2)
+{
+       cout << "field_edited" << endl;
+       Library->save_changes ();
+}
+
 void
 SoundFileBox::delete_row (const Gtk::TreeModel::iterator& iter)
 {
index 79c73b97ac9b5f800bbe7701e304488289f17b17..8ef57d7b9f8539bce5ab024271fa01c7756435a7 100644 (file)
@@ -100,6 +100,7 @@ class SoundFileBox : public Gtk::VBox
     void stop_btn_clicked ();
     void add_field_clicked ();
     void remove_field_clicked ();
+       void field_edited (const Glib::ustring&, const Glib::ustring&);
        void delete_row (const Gtk::TreeModel::iterator& iter);
 
     void field_selected ();
index 3d4585fbd88bd81fde6d77a8ddd2601648183a2e..f5ac6da65497683fdb979b38677736d25e57ccc5 100644 (file)
@@ -42,6 +42,8 @@ class AudioLibrary : public Stateful
        AudioLibrary ();
        ~AudioLibrary ();
 
+       static string state_node_name;
+       
        XMLNode& get_state (void);
        int set_state (const XMLNode&);
 
index 1358ebd6d9be92613d8cab8b357452a513eea693..ad008f6312d4463444fe2db8b3929bcdb1184d02 100644 (file)
@@ -46,6 +46,8 @@ using namespace PBD;
 
 static char* SOUNDFILE = "http://ardour.org/ontology/Soundfile";
 
+string AudioLibrary::state_node_name = "AudioLibrary";
+
 AudioLibrary::AudioLibrary ()
 {
 //     sfdb_paths.push_back("/Users/taybin/sounds");
@@ -74,12 +76,6 @@ AudioLibrary::AudioLibrary ()
        } 
 
        lrdf_free_statements(matches);
-
-       XMLNode* state = instant_xml(X_("AudioLibrary"), get_user_ardour_path());
-       if (state) {
-               set_state(*state);
-       }
-       scan_paths();
 }
 
 AudioLibrary::~AudioLibrary ()
@@ -361,7 +357,7 @@ AudioLibrary::set_paths (vector<string> paths)
 {
        sfdb_paths = paths;
        
-       add_instant_xml(get_state(), get_user_ardour_path());
+       scan_paths ();
 }
 
 vector<string> 
@@ -478,7 +474,7 @@ AudioLibrary::set_state (const XMLNode& node)
                }
        }
        
-       sfdb_paths = paths;
+       set_paths (paths);
        
        return 0;
 }
index fc708f805de832b5b67d81f3c38af8b1d0722759..58da77f933105fb26e03aae22472741df1e4f9f1 100644 (file)
@@ -25,6 +25,7 @@
 #include <pbd/xml++.h>
 
 #include <ardour/ardour.h>
+#include <ardour/audio_library.h>
 #include <ardour/configuration.h>
 #include <ardour/audio_diskstream.h>
 #include <ardour/destructive_filesource.h>
@@ -178,6 +179,7 @@ Configuration::state (bool user_only)
        }
 
        root->add_child_nocopy (ControlProtocolManager::instance().get_state());
+       root->add_child_nocopy (Library->get_state());
 
        return *root;
 }
@@ -229,6 +231,8 @@ Configuration::set_state (const XMLNode& root)
 
                } else if (node->name() == ControlProtocolManager::state_node_name) {
                        _control_protocol_state = new XMLNode (*node);
+               } else if (node->name() == AudioLibrary::state_node_name) {
+                       Library->set_state (*node);
                }
        }
 
index ffcc4ddb059434e58a54f66458e2b95eabe63ef0..308f502d2a46270d826b651da1711f56063d7995 100644 (file)
@@ -198,6 +198,9 @@ ARDOUR::init (AudioEngine& engine, bool use_vst, bool try_optimization)
 
        PBD::ID::init ();
 
+       lrdf_init();
+       Library = new AudioLibrary;
+
        Config = new Configuration;
 
        if (Config->load_state ()) {
@@ -296,9 +299,6 @@ ARDOUR::init (AudioEngine& engine, bool use_vst, bool try_optimization)
                info << "No H/W specific optimizations in use" << endmsg;
        }
 
-       lrdf_init();
-       Library = new AudioLibrary;
-
        /* singleton - first object is "it" */
        new PluginManager (engine);