X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsession_metadata_dialog.cc;h=67d04faa9e58d75ec5bfcaac80a614bd1b77a086;hb=cd0d68a591ee64bb0e85d9a364af9fe6abdeecbe;hp=996262f0fac49ed99451f7ea8c98504ca4aed8dc;hpb=79f2b919211aaf60b0e31bafd162fee7c45f40b8;p=ardour.git diff --git a/gtk2_ardour/session_metadata_dialog.cc b/gtk2_ardour/session_metadata_dialog.cc index 996262f0fa..67d04faa9e 100644 --- a/gtk2_ardour/session_metadata_dialog.cc +++ b/gtk2_ardour/session_metadata_dialog.cc @@ -24,14 +24,16 @@ #include #include "pbd/xml++.h" +#include "pbd/error.h" + #include "ardour/session.h" -#include "ardour/session_directory.h" #include "ardour/session_utils.h" #include "i18n.h" using namespace std; using namespace Glib; +using namespace PBD; #define CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember)) @@ -81,8 +83,8 @@ TextMetadataField::load_data (ARDOUR::SessionMetadata const & data) Gtk::Widget & TextMetadataField::name_widget () { - label = Gtk::manage (new Gtk::Label(_name + ':', Gtk::ALIGN_LEFT)); - label->set_alignment (0, 0.5); + label = Gtk::manage (new Gtk::Label(_name + ':')); + label->set_alignment (1, 0.5); return *label; } @@ -160,8 +162,8 @@ NumberMetadataField::update_value () Gtk::Widget & NumberMetadataField::name_widget () { - label = Gtk::manage (new Gtk::Label(_name + ':', Gtk::ALIGN_LEFT)); - label->set_alignment (0, 0.5); + label = Gtk::manage (new Gtk::Label(_name + ':')); + label->set_alignment (1, 0.5); return *label; } @@ -255,7 +257,7 @@ SessionMetadataSetEditable::set_session (ARDOUR::Session * s) return; } - ARDOUR::SessionMetadata const & data = _session->metadata(); + ARDOUR::SessionMetadata const & data = *(ARDOUR::SessionMetadata::Metadata()); table.resize (list.size(), 2); uint32_t row = 0; @@ -272,7 +274,7 @@ SessionMetadataSetEditable::set_session (ARDOUR::Session * s) void SessionMetadataSetEditable::save_data () { - ARDOUR::SessionMetadata & data = _session->metadata(); + ARDOUR::SessionMetadata & data = *(ARDOUR::SessionMetadata::Metadata()); for (DataList::const_iterator it = list.begin(); it != list.end(); ++it) { (*it)->save_data(data); } @@ -326,11 +328,11 @@ void SessionMetadataSetImportable::load_extra_data (ARDOUR::SessionMetadata const & data) { if (!_session) { - std::cerr << "Programming error: no session set for SessionMetaDataSetImportable (in load_data)!" << std::endl; + error << string_compose (_("programming error: %1"), "no session set for SessionMetaDataSetImportable (in load_data)!") << endmsg; return; } - ARDOUR::SessionMetadata & session_data = _session->metadata(); + ARDOUR::SessionMetadata const & session_data = *(ARDOUR::SessionMetadata::Metadata()); MetadataPtr session_field; MetadataPtr import_field; @@ -374,11 +376,11 @@ void SessionMetadataSetImportable::save_data () { if (!_session) { - std::cerr << "Programming error: no session set for SessionMetaDataSetImportable (in import_data)!" << std::endl; + error << string_compose (_("programming error: %1"), "no session set for SessionMetaDataSetImportable (in import_data)!") << endmsg; return; } - ARDOUR::SessionMetadata & session_data = _session->metadata(); + ARDOUR::SessionMetadata & session_data = *(ARDOUR::SessionMetadata::Metadata()); Gtk::TreeModel::Children fields = tree->children(); Gtk::TreeModel::Children::iterator it; @@ -421,22 +423,25 @@ SessionMetadataDialog::SessionMetadataDialog (string const & name) : { cancel_button = add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); cancel_button->signal_clicked().connect (sigc::mem_fun(*this, &SessionMetadataDialog::end_dialog)); - save_button = add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); + save_button = add_button (Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); save_button->signal_clicked().connect (sigc::mem_fun(*this, &SessionMetadataDialog::save_and_close)); } template void -SessionMetadataDialog::init_data () +SessionMetadataDialog::init_data ( bool skip_user ) { if (!_session) { - std::cerr << "Programming error: no session set for SessionMetaDataDialog (in init_data)!" << std::endl; + error << string_compose (_("programming error: %1"), "no session set for SessionMetaDataDialog (in init_data)!") << endmsg; return; } + if (!skip_user) + init_user_data (); init_track_data (); init_album_data (); init_people_data (); + init_school_data (); for (DataSetList::iterator it = data_list.begin(); it != data_list.end(); ++it) { (*it)->set_session (_session); @@ -468,6 +473,7 @@ void SessionMetadataDialog::save_and_close () { save_data (); + _session->set_dirty(); end_dialog (); } @@ -507,6 +513,32 @@ SessionMetadataDialog::add_widget (Gtk::Widget & widget) get_vbox()->pack_start (widget, true, true, 0); } +template +void +SessionMetadataDialog::init_user_data () +{ + DataSetPtr data_set (new DataSet (_("User"))); + data_list.push_back (data_set); + + MetadataPtr ptr; + + ptr = MetadataPtr (new TextMetadataField (&ARDOUR::SessionMetadata::user_name, &ARDOUR::SessionMetadata::set_user_name, _("Name"))); + data_set->add_data_field (ptr); + + ptr = MetadataPtr (new TextMetadataField (&ARDOUR::SessionMetadata::user_email, &ARDOUR::SessionMetadata::set_user_email, _("Email"))); + data_set->add_data_field (ptr); + + ptr = MetadataPtr (new TextMetadataField (&ARDOUR::SessionMetadata::user_web, &ARDOUR::SessionMetadata::set_user_web, _("Web"))); + data_set->add_data_field (ptr); + + ptr = MetadataPtr (new TextMetadataField (&ARDOUR::SessionMetadata::organization, &ARDOUR::SessionMetadata::set_organization, _("Organization"))); + data_set->add_data_field (ptr); + + ptr = MetadataPtr (new TextMetadataField (&ARDOUR::SessionMetadata::country, &ARDOUR::SessionMetadata::set_country, _("Country"))); + data_set->add_data_field (ptr); + +} + template void SessionMetadataDialog::init_track_data () @@ -615,6 +647,23 @@ SessionMetadataDialog::init_people_data () data_set->add_data_field (ptr); } +template +void +SessionMetadataDialog::init_school_data () +{ + DataSetPtr data_set (new DataSet (_("School"))); + data_list.push_back (data_set); + + MetadataPtr ptr; + + ptr = MetadataPtr (new TextMetadataField (&ARDOUR::SessionMetadata::instructor, &ARDOUR::SessionMetadata::set_instructor, _("Instructor"))); + data_set->add_data_field (ptr); + + ptr = MetadataPtr (new TextMetadataField (&ARDOUR::SessionMetadata::course, &ARDOUR::SessionMetadata::set_course, _("Course"))); + data_set->add_data_field (ptr); + +} + /* SessionMetadataEditor */ SessionMetadataEditor::SessionMetadataEditor () : @@ -664,7 +713,7 @@ void SessionMetadataImporter::run () { if (!_session) { - std::cerr << "Programming error: no session set for SessionMetaDataImporter (in run)!" << std::endl; + error << string_compose (_("programming error: %1"), "no session set for SessionMetaDataImporter (in run)!") << endmsg; return; } @@ -722,10 +771,10 @@ SessionMetadataImporter::run () return; } + //create a temporary ARDOUR::SessionMetadata data; data.set_state (*node, version); - - init_data (); + init_data ( true ); //skip user data here load_extra_data (data); init_gui();