fix double quote in fr.po
[ardour.git] / gtk2_ardour / session_metadata_dialog.h
index be64c90ae930cdc5f0ada7abc14c682ce22e25aa..b52efe4c0cdabb71f8e75c1c0bc20ae20d65359e 100644 (file)
 
 #include "ardour_dialog.h"
 
+#ifdef interface
+#undef interface
+#endif
+
 #include <gtkmm.h>
 #include <boost/shared_ptr.hpp>
 
@@ -36,15 +40,15 @@ typedef boost::shared_ptr<MetadataField> MetadataPtr;
 /// Wraps a metadata field to be used in a GUI
 class MetadataField {
   public:
-       MetadataField (Glib::ustring const & field_name);
+       MetadataField (std::string const & field_name);
        virtual ~MetadataField();
        virtual MetadataPtr copy () = 0;
 
        virtual void save_data (ARDOUR::SessionMetadata & data) const = 0;
        virtual void load_data (ARDOUR::SessionMetadata const & data) = 0;
 
-       virtual Glib::ustring name() { return _name; }
-       virtual Glib::ustring value() { return _value; }
+       virtual std::string name() { return _name; }
+       virtual std::string value() { return _value; }
 
        /// Get widget containing name of field
        virtual Gtk::Widget & name_widget () = 0;
@@ -53,17 +57,17 @@ class MetadataField {
        /// Get widget for editing value
        virtual Gtk::Widget & edit_widget () = 0;
   protected:
-       Glib::ustring _name;
-       Glib::ustring _value;
+        std::string _name;
+        std::string _value;
 };
 
 /// MetadataField that contains text
 class TextMetadataField : public MetadataField {
   private:
-       typedef Glib::ustring (ARDOUR::SessionMetadata::*Getter) () const;
-       typedef void (ARDOUR::SessionMetadata::*Setter) (Glib::ustring const &);
+       typedef std::string (ARDOUR::SessionMetadata::*Getter) () const;
+       typedef void (ARDOUR::SessionMetadata::*Setter) (std::string const &);
   public:
-       TextMetadataField (Getter getter, Setter setter, Glib::ustring const & field_name, guint width = 50);
+       TextMetadataField (Getter getter, Setter setter, std::string const & field_name, guint width = 50);
        MetadataPtr copy ();
 
        void save_data (ARDOUR::SessionMetadata & data) const;
@@ -82,7 +86,7 @@ class TextMetadataField : public MetadataField {
        Gtk::Label* value_label;
        Gtk::Entry* entry;
 
-       uint width;
+       guint width;
 };
 
 /// MetadataField that accepts only numbers
@@ -91,7 +95,7 @@ class NumberMetadataField : public MetadataField {
        typedef uint32_t (ARDOUR::SessionMetadata::*Getter) () const;
        typedef void (ARDOUR::SessionMetadata::*Setter) (uint32_t);
   public:
-       NumberMetadataField (Getter getter, Setter setter, Glib::ustring const & field_name, guint numbers, guint width = 50);
+       NumberMetadataField (Getter getter, Setter setter, std::string const & field_name, guint numbers, guint width = 50);
        MetadataPtr copy ();
 
        void save_data (ARDOUR::SessionMetadata & data) const;
@@ -102,8 +106,8 @@ class NumberMetadataField : public MetadataField {
        Gtk::Widget & edit_widget ();
   private:
        void update_value ();
-       Glib::ustring uint_to_str (uint32_t i) const;
-       uint32_t str_to_uint (Glib::ustring const & str) const;
+        std::string uint_to_str (uint32_t i) const;
+       uint32_t str_to_uint (std::string const & str) const;
 
        Getter getter;
        Setter setter;
@@ -116,10 +120,42 @@ 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:
-       SessionMetadataSet (Glib::ustring const & name);
+       SessionMetadataSet (std::string const & name);
        virtual ~SessionMetadataSet () {};
 
        void add_data_field (MetadataPtr field);
@@ -135,13 +171,13 @@ class SessionMetadataSet : public ARDOUR::SessionHandlePtr {
   protected:
        typedef std::list<MetadataPtr> DataList;
        DataList list;
-       Glib::ustring name;
+        std::string name;
 };
 
 /// Contains MetadataFields for editing
 class SessionMetadataSetEditable : public SessionMetadataSet {
   public:
-       SessionMetadataSetEditable (Glib::ustring const & name);
+       SessionMetadataSetEditable (std::string const & name);
 
        Gtk::Widget & get_widget () { return vbox; }
        Gtk::Widget & get_tab_widget ();
@@ -160,7 +196,7 @@ class SessionMetadataSetEditable : public SessionMetadataSet {
 /// Contains MetadataFields for importing
 class SessionMetadataSetImportable : public SessionMetadataSet {
   public:
-       SessionMetadataSetImportable (Glib::ustring const & name);
+       SessionMetadataSetImportable (std::string const & name);
 
        Gtk::Widget & get_widget () { return tree_view; }
        Gtk::Widget & get_tab_widget ();
@@ -178,8 +214,8 @@ class SessionMetadataSetImportable : public SessionMetadataSet {
        struct Columns : public Gtk::TreeModel::ColumnRecord
        {
          public:
-               Gtk::TreeModelColumn<Glib::ustring>     field;
-               Gtk::TreeModelColumn<Glib::ustring>     values;
+               Gtk::TreeModelColumn<std::string>     field;
+               Gtk::TreeModelColumn<std::string>     values;
                Gtk::TreeModelColumn<bool>        import;
                Gtk::TreeModelColumn<MetadataPtr> data;
 
@@ -194,7 +230,7 @@ class SessionMetadataSetImportable : public SessionMetadataSet {
        Gtk::CheckButton              select_all_check;
 
        void select_all ();
-       void selection_changed (Glib::ustring const & path);
+       void selection_changed (std::string const & path);
 };
 
 /// Metadata dialog interface
@@ -206,10 +242,10 @@ template <typename DataSet>
 class SessionMetadataDialog : public ArdourDialog
 {
   public:
-       SessionMetadataDialog (Glib::ustring const & name);
+       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 ();
 
@@ -217,7 +253,7 @@ class SessionMetadataDialog : public ArdourDialog
        virtual void save_and_close ();
        virtual void end_dialog ();
 
-       void warn_user (Glib::ustring const & string);
+       void warn_user (std::string const & string);
 
        typedef std::list<Gtk::Widget *> WidgetList;
        typedef boost::shared_ptr<WidgetList> WidgetListPtr;
@@ -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;