Do not try to restore Route solo state after clearing all solo state
[ardour.git] / gtk2_ardour / session_metadata_dialog.h
index fbe430e7ad43d0f0f110b730cb16a610ddaf7695..b52efe4c0cdabb71f8e75c1c0bc20ae20d65359e 100644 (file)
 
 #include "ardour_dialog.h"
 
+#ifdef interface
+#undef interface
+#endif
+
 #include <gtkmm.h>
 #include <boost/shared_ptr.hpp>
 
@@ -82,7 +86,7 @@ class TextMetadataField : public MetadataField {
        Gtk::Label* value_label;
        Gtk::Entry* entry;
 
-       uint width;
+       guint width;
 };
 
 /// MetadataField that accepts only numbers
@@ -116,6 +120,38 @@ class NumberMetadataField : public MetadataField {
        guint width;
 };
 
+/// MetadataField that accepts EAN-13 data only
+class EAN13MetadataField : public MetadataField {
+  private:
+       typedef std::string (ARDOUR::SessionMetadata::*Getter) () const;
+       typedef void (ARDOUR::SessionMetadata::*Setter) (std::string const &);
+  public:
+       EAN13MetadataField (Getter getter, Setter setter, std::string const & field_name, guint width = 13);
+       MetadataPtr copy ();
+
+       void save_data (ARDOUR::SessionMetadata & data) const;
+       void load_data (ARDOUR::SessionMetadata const & data);
+
+       Gtk::Widget & name_widget ();
+       Gtk::Widget & value_widget ();
+       Gtk::Widget & edit_widget ();
+
+       Gtk::Label* status_label;
+       void update_status ();
+  private:
+       void update_value ();
+        std::string numeric_string (std::string const & str) const;
+
+       Getter getter;
+       Setter setter;
+
+       Gtk::Label* label;
+       Gtk::Label* value_label;
+       Gtk::Entry* entry;
+
+       guint width;
+};
+
 /// Interface for MetadataFields
 class SessionMetadataSet : public ARDOUR::SessionHandlePtr {
   public:
@@ -209,7 +245,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 +268,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;