summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorBen Loftis <ben@glw.com>2012-04-18 17:46:29 +0000
committerBen Loftis <ben@glw.com>2012-04-18 17:46:29 +0000
commit45ac9c8861be4b4290fdf64f2bea8e300ab13e8f (patch)
treeedfef34a7500d6e8be05cc677b333f57f4f21be3 /gtk2_ardour
parentc7c9c1bd2622b86ca4494098c80463fe15afeca4 (diff)
add User metadata. user metadata is edited from the same dialog and read/writable using the same mechanism as session metadata, but it is stored in the ardour.rc file instead of with the session. Importing metadata from another session does not change user metadata. SessionMetadata is now a singleton that is available to the session object and the various config objects.
git-svn-id: svn://localhost/ardour2/branches/3.0@12014 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/session_metadata_dialog.cc72
-rw-r--r--gtk2_ardour/session_metadata_dialog.h4
-rw-r--r--gtk2_ardour/session_option_editor.cc16
3 files changed, 63 insertions, 29 deletions
diff --git a/gtk2_ardour/session_metadata_dialog.cc b/gtk2_ardour/session_metadata_dialog.cc
index 996262f0fa..5bac706106 100644
--- a/gtk2_ardour/session_metadata_dialog.cc
+++ b/gtk2_ardour/session_metadata_dialog.cc
@@ -27,6 +27,7 @@
#include "ardour/session.h"
#include "ardour/session_directory.h"
#include "ardour/session_utils.h"
+#include "ardour/configuration.h"
#include "i18n.h"
@@ -81,8 +82,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 +161,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 +256,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 +273,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);
}
@@ -330,7 +331,7 @@ SessionMetadataSetImportable::load_extra_data (ARDOUR::SessionMetadata const & d
return;
}
- ARDOUR::SessionMetadata & session_data = _session->metadata();
+ ARDOUR::SessionMetadata const & session_data = *(ARDOUR::SessionMetadata::Metadata());
MetadataPtr session_field;
MetadataPtr import_field;
@@ -378,7 +379,7 @@ SessionMetadataSetImportable::save_data ()
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 +422,25 @@ SessionMetadataDialog<DataSet>::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 <typename DataSet>
void
-SessionMetadataDialog<DataSet>::init_data ()
+SessionMetadataDialog<DataSet>::init_data ( bool skip_user )
{
if (!_session) {
std::cerr << "Programming error: no session set for SessionMetaDataDialog (in init_data)!" << std::endl;
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 +472,7 @@ void
SessionMetadataDialog<DataSet>::save_and_close ()
{
save_data ();
+ _session->set_dirty();
end_dialog ();
}
@@ -509,6 +514,32 @@ SessionMetadataDialog<DataSet>::add_widget (Gtk::Widget & widget)
template <typename DataSet>
void
+SessionMetadataDialog<DataSet>::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 <typename DataSet>
+void
SessionMetadataDialog<DataSet>::init_track_data ()
{
DataSetPtr data_set (new DataSet (_("Track")));
@@ -615,6 +646,23 @@ SessionMetadataDialog<DataSet>::init_people_data ()
data_set->add_data_field (ptr);
}
+template <typename DataSet>
+void
+SessionMetadataDialog<DataSet>::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 () :
@@ -722,10 +770,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();
diff --git a/gtk2_ardour/session_metadata_dialog.h b/gtk2_ardour/session_metadata_dialog.h
index fbe430e7ad..9aa62ed4ca 100644
--- a/gtk2_ardour/session_metadata_dialog.h
+++ b/gtk2_ardour/session_metadata_dialog.h
@@ -209,7 +209,7 @@ class SessionMetadataDialog : public ArdourDialog
SessionMetadataDialog (std::string const & name);
protected:
- void init_data ();
+ void init_data ( bool skip_user = false );
void load_extra_data (ARDOUR::SessionMetadata const & data);
void save_data ();
@@ -232,9 +232,11 @@ class SessionMetadataDialog : public ArdourDialog
Gtk::Notebook notebook;
private:
+ void init_user_data ();
void init_track_data ();
void init_album_data ();
void init_people_data ();
+ void init_school_data ();
typedef boost::shared_ptr<SessionMetadataSet> DataSetPtr;
typedef std::list<DataSetPtr> DataSetList;
diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc
index b524644542..62d555c13d 100644
--- a/gtk2_ardour/session_option_editor.cc
+++ b/gtk2_ardour/session_option_editor.cc
@@ -294,22 +294,6 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
add_option (_("Misc"), li);
- add_option (_("Misc"), new OptionEditorHeading (_("Broadcast WAVE metadata")));
-
- add_option (_("Misc"), new EntryOption (
- "bwf-country-code",
- _("Country code"),
- sigc::mem_fun (*_session_config, &SessionConfiguration::get_bwf_country_code),
- sigc::mem_fun (*_session_config, &SessionConfiguration::set_bwf_country_code)
- ));
-
- add_option (_("Misc"), new EntryOption (
- "bwf-organization-code",
- _("Organization code"),
- sigc::mem_fun (*_session_config, &SessionConfiguration::get_bwf_organization_code),
- sigc::mem_fun (*_session_config, &SessionConfiguration::set_bwf_organization_code)
- ));
-
add_option (_("Misc"), new OptionEditorHeading (_("Glue to bars and beats")));
add_option (_("Misc"), new BoolOption (