summaryrefslogtreecommitdiff
path: root/gtk2_ardour/session_metadata_dialog.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2017-07-14 13:58:41 -0500
committerBen Loftis <ben@harrisonconsoles.com>2017-08-14 14:08:17 -0500
commit0a0eec2adca785e6fff1b1e798bbded196188f4c (patch)
treefacdaf889d0f6d467849acd8ebf09f740a2825aa /gtk2_ardour/session_metadata_dialog.cc
parenta1143a0ed648a0f3dd0febc204dd38e70dc363b0 (diff)
Session Metadata: add a Description field.
* This is a multi-line text field. * If the session is a template, we might show this in the New Session dialog.
Diffstat (limited to 'gtk2_ardour/session_metadata_dialog.cc')
-rw-r--r--gtk2_ardour/session_metadata_dialog.cc59
1 files changed, 56 insertions, 3 deletions
diff --git a/gtk2_ardour/session_metadata_dialog.cc b/gtk2_ardour/session_metadata_dialog.cc
index 43bf320be8..ce8d76c57e 100644
--- a/gtk2_ardour/session_metadata_dialog.cc
+++ b/gtk2_ardour/session_metadata_dialog.cc
@@ -88,7 +88,7 @@ Gtk::Widget &
TextMetadataField::name_widget ()
{
label = Gtk::manage (new Gtk::Label(_name + ':'));
- label->set_alignment (1, 0.5);
+ label->set_alignment (1, 0);
return *label;
}
@@ -117,6 +117,44 @@ TextMetadataField::update_value ()
_value = entry->get_text ();
}
+/* LongTextMetadataField */
+
+LongTextMetadataField::LongTextMetadataField (Getter getter, Setter setter, string const & field_name, guint width ) :
+ TextMetadataField (getter, setter, field_name, width)
+{
+ tview = 0;
+ label = 0;
+ value_label = 0;
+}
+
+MetadataPtr
+LongTextMetadataField::copy ()
+{
+ return MetadataPtr (new TextMetadataField (getter, setter, _name, width));
+}
+
+Gtk::Widget &
+LongTextMetadataField::edit_widget ()
+{
+ tview = Gtk::manage (new Gtk::TextView());
+
+ tview->get_buffer()->set_text (_value);
+ tview->set_wrap_mode (Gtk::WRAP_WORD);
+ tview->set_size_request (-1, 400);
+ tview->set_editable (true);
+
+ Glib::RefPtr<Gtk::TextBuffer> tb (tview->get_buffer());
+ tb->signal_changed().connect (sigc::mem_fun(*this, &LongTextMetadataField::update_value));
+
+ return *tview;
+}
+
+void
+LongTextMetadataField::update_value ()
+{
+ _value = tview->get_buffer()->get_text ();
+}
+
/* NumberMetadataField */
NumberMetadataField::NumberMetadataField (Getter getter, Setter setter, string const & field_name, guint numbers, guint width) :
@@ -167,7 +205,7 @@ Gtk::Widget &
NumberMetadataField::name_widget ()
{
label = Gtk::manage (new Gtk::Label(_name + ':'));
- label->set_alignment (1, 0.5);
+ label->set_alignment (1, 0);
return *label;
}
@@ -307,7 +345,7 @@ Gtk::Widget &
EAN13MetadataField::name_widget ()
{
label = Gtk::manage (new Gtk::Label(_name + ':'));
- label->set_alignment (1, 0.5);
+ label->set_alignment (1, 0);
return *label;
}
@@ -569,6 +607,7 @@ SessionMetadataDialog<DataSet>::init_data ( bool skip_user )
init_album_data ();
init_people_data ();
init_school_data ();
+ init_description_data ();
for (DataSetList::iterator it = data_list.begin(); it != data_list.end(); ++it) {
(*it)->set_session (_session);
@@ -668,6 +707,20 @@ SessionMetadataDialog<DataSet>::init_user_data ()
template <typename DataSet>
void
+SessionMetadataDialog<DataSet>::init_description_data ()
+{
+ DataSetPtr data_set (new DataSet (_("Description")));
+ data_list.push_back (data_set);
+
+ MetadataPtr ptr;
+
+ ptr = MetadataPtr (new LongTextMetadataField (&ARDOUR::SessionMetadata::description, &ARDOUR::SessionMetadata::set_description, _("Description")));
+ data_set->add_data_field (ptr);
+}
+
+
+template <typename DataSet>
+void
SessionMetadataDialog<DataSet>::init_track_data ()
{
DataSetPtr data_set (new DataSet (_("Track")));