colinf's vertical double arrow track resize cursor patch
[ardour.git] / gtk2_ardour / session_metadata_dialog.cc
index be2e6fe0121b5fe34b8f1f8c1551ab1f3b7ce520..0bce776c62412f7875aedce1dd160c44695aeddf 100644 (file)
@@ -22,7 +22,6 @@
 #include <sstream>
 
 #include <gtkmm2ext/utils.h>
-#include <gtkmm2ext/window_title.h>
 
 #include "pbd/xml++.h"
 #include "ardour/session.h"
@@ -217,7 +216,6 @@ NumberMetadataField::str_to_uint (ustring const & str) const
 SessionMetadataSet::SessionMetadataSet (ustring const & name) :
   name (name)
 {
-       session = 0;
 }
 
 void
@@ -248,9 +246,13 @@ SessionMetadataSetEditable::get_tab_widget ()
 void
 SessionMetadataSetEditable::set_session (ARDOUR::Session * s)
 {
-       session = s;
+       SessionHandlePtr::set_session (s);
 
-       ARDOUR::SessionMetadata const & data = session->metadata();
+       if (!_session) {
+               return;
+       }
+
+       ARDOUR::SessionMetadata const & data = _session->metadata();
 
        table.resize (list.size(), 2);
        uint32_t row = 0;
@@ -267,7 +269,7 @@ SessionMetadataSetEditable::set_session (ARDOUR::Session * s)
 void
 SessionMetadataSetEditable::save_data ()
 {
-       ARDOUR::SessionMetadata & data = session->metadata();
+       ARDOUR::SessionMetadata & data = _session->metadata();
        for (DataList::const_iterator it = list.begin(); it != list.end(); ++it) {
                (*it)->save_data(data);
        }
@@ -301,8 +303,6 @@ SessionMetadataSetImportable::SessionMetadataSetImportable (ustring const & name
        tree_view.append_column (*viewcol);
 
        select_all_check.signal_toggled().connect (sigc::mem_fun(*this, &SessionMetadataSetImportable::select_all));
-
-       session = 0;
 }
 
 Gtk::Widget &
@@ -322,12 +322,12 @@ SessionMetadataSetImportable::get_select_all_widget ()
 void
 SessionMetadataSetImportable::load_extra_data (ARDOUR::SessionMetadata const & data)
 {
-       if (!session) {
+       if (!_session) {
                std::cerr << "Programming error: no session set for SessionMetaDataSetImportable (in load_data)!" << std::endl;
                return;
        }
 
-       ARDOUR::SessionMetadata & session_data = session->metadata();
+       ARDOUR::SessionMetadata & session_data = _session->metadata();
 
        MetadataPtr session_field;
        MetadataPtr import_field;
@@ -370,12 +370,12 @@ SessionMetadataSetImportable::load_extra_data (ARDOUR::SessionMetadata const & d
 void
 SessionMetadataSetImportable::save_data ()
 {
-       if (!session) {
+       if (!_session) {
                std::cerr << "Programming error: no session set for SessionMetaDataSetImportable (in import_data)!" << std::endl;
                return;
        }
 
-       ARDOUR::SessionMetadata & session_data = session->metadata();
+       ARDOUR::SessionMetadata & session_data = _session->metadata();
 
        Gtk::TreeModel::Children fields = tree->children();
        Gtk::TreeModel::Children::iterator it;
@@ -417,16 +417,16 @@ SessionMetadataDialog<DataSet>::SessionMetadataDialog (ustring const & name) :
   ArdourDialog (name, true)
 {
        cancel_button = add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
-       cancel_button->signal_clicked().connect (mem_fun(*this, &SessionMetadataDialog::end_dialog));
+       cancel_button->signal_clicked().connect (sigc::mem_fun(*this, &SessionMetadataDialog::end_dialog));
        save_button = add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
-       save_button->signal_clicked().connect (mem_fun(*this, &SessionMetadataDialog::save_and_close));
+       save_button->signal_clicked().connect (sigc::mem_fun(*this, &SessionMetadataDialog::save_and_close));
 }
 
 template <typename DataSet>
 void
 SessionMetadataDialog<DataSet>::init_data ()
 {
-       if (!session) {
+       if (!_session) {
                std::cerr << "Programming error: no session set for SessionMetaDataDialog (in init_data)!" << std::endl;
                return;
        }
@@ -436,7 +436,7 @@ SessionMetadataDialog<DataSet>::init_data ()
        init_people_data ();
 
        for (DataSetList::iterator it = data_list.begin(); it != data_list.end(); ++it) {
-               (*it)->set_session (session);
+               (*it)->set_session (_session);
 
                notebook.append_page ((*it)->get_widget(), (*it)->get_tab_widget());
        }
@@ -615,7 +615,7 @@ SessionMetadataDialog<DataSet>::init_people_data ()
 /* SessionMetadataEditor */
 
 SessionMetadataEditor::SessionMetadataEditor () :
-  SessionMetadataDialog<SessionMetadataSetEditable> (_("Edit session metadata"))
+  SessionMetadataDialog<SessionMetadataSetEditable> (_("Edit Session Metadata"))
 {
 
 }
@@ -660,7 +660,7 @@ SessionMetadataImporter::~SessionMetadataImporter ()
 void
 SessionMetadataImporter::run ()
 {
-       if (!session) {
+       if (!_session) {
                std::cerr << "Programming error: no session set for SessionMetaDataImporter (in run)!" << std::endl;
                return;
        }
@@ -709,6 +709,9 @@ SessionMetadataImporter::run ()
                return;
        }
 
+       /* XXX GET VERSION FROM TREE */
+       int version = 3000;
+
        XMLNode * node = session_tree.root()->child ("Metadata");
 
        if (!node) {
@@ -717,7 +720,7 @@ SessionMetadataImporter::run ()
        }
 
        ARDOUR::SessionMetadata data;
-       data.set_state (*node);
+       data.set_state (*node, version);
 
        init_data ();
        load_extra_data (data);