replace ::cast_dynamic() with relevant ActionManager::get_*_action() calls
[ardour.git] / gtk2_ardour / session_metadata_dialog.h
index b52efe4c0cdabb71f8e75c1c0bc20ae20d65359e..72e56effc5f64a2d00acab9fedab8cbf98b30996 100644 (file)
 #undef interface
 #endif
 
-#include <gtkmm.h>
+#include <gtkmm/box.h>
+#include <gtkmm/button.h>
+#include <gtkmm/checkbutton.h>
+#include <gtkmm/entry.h>
+#include <gtkmm/label.h>
+#include <gtkmm/liststore.h>
+#include <gtkmm/notebook.h>
+#include <gtkmm/table.h>
+#include <gtkmm/textview.h>
+#include <gtkmm/treemodel.h>
+#include <gtkmm/treeview.h>
+
 #include <boost/shared_ptr.hpp>
 
 #include <string>
@@ -38,8 +49,9 @@ class MetadataField;
 typedef boost::shared_ptr<MetadataField> MetadataPtr;
 
 /// Wraps a metadata field to be used in a GUI
-class MetadataField {
-  public:
+class MetadataField
+{
+public:
        MetadataField (std::string const & field_name);
        virtual ~MetadataField();
        virtual MetadataPtr copy () = 0;
@@ -56,17 +68,18 @@ class MetadataField {
        virtual Gtk::Widget & value_widget () = 0;
        /// Get widget for editing value
        virtual Gtk::Widget & edit_widget () = 0;
-  protected:
-        std::string _name;
-        std::string _value;
+protected:
+       std::string _name;
+       std::string _value;
 };
 
 /// MetadataField that contains text
-class TextMetadataField : public MetadataField {
-  private:
+class TextMetadataField : public MetadataField
+{
+protected:
        typedef std::string (ARDOUR::SessionMetadata::*Getter) () const;
        typedef void (ARDOUR::SessionMetadata::*Setter) (std::string const &);
-  public:
+public:
        TextMetadataField (Getter getter, Setter setter, std::string const & field_name, guint width = 50);
        MetadataPtr copy ();
 
@@ -76,7 +89,7 @@ class TextMetadataField : public MetadataField {
        Gtk::Widget & name_widget ();
        Gtk::Widget & value_widget ();
        Gtk::Widget & edit_widget ();
-  private:
+protected:
        void update_value ();
 
        Getter getter;
@@ -89,12 +102,27 @@ class TextMetadataField : public MetadataField {
        guint width;
 };
 
+/// MetadataField that contains longform text
+class LongTextMetadataField : public TextMetadataField
+{
+public:
+       LongTextMetadataField (Getter getter, Setter setter, std::string const & field_name, guint width = 50);
+       MetadataPtr copy ();
+
+       Gtk::Widget & edit_widget ();
+private:
+       void update_value ();
+
+       Gtk::TextView* tview;
+};
+
 /// MetadataField that accepts only numbers
-class NumberMetadataField : public MetadataField {
-  private:
+class NumberMetadataField : public MetadataField
+{
+private:
        typedef uint32_t (ARDOUR::SessionMetadata::*Getter) () const;
        typedef void (ARDOUR::SessionMetadata::*Setter) (uint32_t);
-  public:
+public:
        NumberMetadataField (Getter getter, Setter setter, std::string const & field_name, guint numbers, guint width = 50);
        MetadataPtr copy ();
 
@@ -104,9 +132,9 @@ class NumberMetadataField : public MetadataField {
        Gtk::Widget & name_widget ();
        Gtk::Widget & value_widget ();
        Gtk::Widget & edit_widget ();
-  private:
+private:
        void update_value ();
-        std::string uint_to_str (uint32_t i) const;
+       std::string uint_to_str (uint32_t i) const;
        uint32_t str_to_uint (std::string const & str) const;
 
        Getter getter;
@@ -121,11 +149,12 @@ class NumberMetadataField : public MetadataField {
 };
 
 /// MetadataField that accepts EAN-13 data only
-class EAN13MetadataField : public MetadataField {
-  private:
+class EAN13MetadataField : public MetadataField
+{
+private:
        typedef std::string (ARDOUR::SessionMetadata::*Getter) () const;
        typedef void (ARDOUR::SessionMetadata::*Setter) (std::string const &);
-  public:
+public:
        EAN13MetadataField (Getter getter, Setter setter, std::string const & field_name, guint width = 13);
        MetadataPtr copy ();
 
@@ -138,9 +167,9 @@ class EAN13MetadataField : public MetadataField {
 
        Gtk::Label* status_label;
        void update_status ();
-  private:
+private:
        void update_value ();
-        std::string numeric_string (std::string const & str) const;
+       std::string numeric_string (std::string const & str) const;
 
        Getter getter;
        Setter setter;
@@ -153,8 +182,9 @@ class EAN13MetadataField : public MetadataField {
 };
 
 /// Interface for MetadataFields
-class SessionMetadataSet : public ARDOUR::SessionHandlePtr {
-  public:
+class SessionMetadataSet : public ARDOUR::SessionHandlePtr
+{
+public:
        SessionMetadataSet (std::string const & name);
        virtual ~SessionMetadataSet () {};
 
@@ -168,15 +198,16 @@ class SessionMetadataSet : public ARDOUR::SessionHandlePtr {
        virtual Gtk::Widget & get_widget () = 0;
        virtual Gtk::Widget & get_tab_widget () = 0;
 
-  protected:
+protected:
        typedef std::list<MetadataPtr> DataList;
        DataList list;
-        std::string name;
+       std::string name;
 };
 
 /// Contains MetadataFields for editing
-class SessionMetadataSetEditable : public SessionMetadataSet {
-  public:
+class SessionMetadataSetEditable : public SessionMetadataSet
+{
+public:
        SessionMetadataSetEditable (std::string const & name);
 
        Gtk::Widget & get_widget () { return vbox; }
@@ -187,15 +218,16 @@ class SessionMetadataSetEditable : public SessionMetadataSet {
        /// Saves from MetadataFields into data
        void save_data ();
 
-  private:
+private:
        Gtk::VBox vbox;
        Gtk::Table table;
        Gtk::Label tab_widget;
 };
 
 /// Contains MetadataFields for importing
-class SessionMetadataSetImportable : public SessionMetadataSet {
-  public:
+class SessionMetadataSetImportable : public SessionMetadataSet
+{
+public:
        SessionMetadataSetImportable (std::string const & name);
 
        Gtk::Widget & get_widget () { return tree_view; }
@@ -207,13 +239,13 @@ class SessionMetadataSetImportable : public SessionMetadataSet {
        /// Saves from importable data (see load_data) to session_data
        void save_data ();
 
-  private:
+private:
        DataList & session_list; // References MetadataSet::list
        DataList import_list;
 
        struct Columns : public Gtk::TreeModel::ColumnRecord
        {
-         public:
+       public:
                Gtk::TreeModelColumn<std::string>     field;
                Gtk::TreeModelColumn<std::string>     values;
                Gtk::TreeModelColumn<bool>        import;
@@ -241,10 +273,10 @@ class SessionMetadataSetImportable : public SessionMetadataSet {
 template <typename DataSet>
 class SessionMetadataDialog : public ArdourDialog
 {
-  public:
+public:
        SessionMetadataDialog (std::string const & name);
 
-  protected:
+protected:
        void init_data ( bool skip_user = false );
        void load_extra_data (ARDOUR::SessionMetadata const & data);
        void save_data ();
@@ -267,8 +299,9 @@ class SessionMetadataDialog : public ArdourDialog
 
        Gtk::Notebook     notebook;
 
-  private:
+private:
        void init_user_data ();
+       void init_description_data ();
        void init_track_data ();
        void init_album_data ();
        void init_people_data ();
@@ -282,12 +315,13 @@ class SessionMetadataDialog : public ArdourDialog
        Gtk::Button *     cancel_button;
 };
 
-class SessionMetadataEditor : public SessionMetadataDialog<SessionMetadataSetEditable> {
-  public:
+class SessionMetadataEditor : public SessionMetadataDialog<SessionMetadataSetEditable>
+{
+public:
        SessionMetadataEditor ();
        ~SessionMetadataEditor ();
        void run ();
-  private:
+private:
        void init_gui ();
 };