X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsession_metadata_dialog.h;h=b52efe4c0cdabb71f8e75c1c0bc20ae20d65359e;hb=f413b83cb9fa50954969a3d849999e1890ce6690;hp=3e618c079ffb5525617779030e928c72fe47e156;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/gtk2_ardour/session_metadata_dialog.h b/gtk2_ardour/session_metadata_dialog.h index 3e618c079f..b52efe4c0c 100644 --- a/gtk2_ardour/session_metadata_dialog.h +++ b/gtk2_ardour/session_metadata_dialog.h @@ -22,6 +22,10 @@ #include "ardour_dialog.h" +#ifdef interface +#undef interface +#endif + #include #include @@ -36,15 +40,15 @@ typedef boost::shared_ptr 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,16 +120,46 @@ 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 { +class SessionMetadataSet : public ARDOUR::SessionHandlePtr { public: - SessionMetadataSet (Glib::ustring const & name); + SessionMetadataSet (std::string const & name); virtual ~SessionMetadataSet () {}; void add_data_field (MetadataPtr field); - /// Sets session, into which the data is eventually saved - virtual void set_session (ARDOUR::Session * s) { session = s; } /// allows loading extra data into data sets (for importing etc.) virtual void load_extra_data (ARDOUR::SessionMetadata const & /*data*/) { } /// Saves data to session @@ -137,14 +171,13 @@ class SessionMetadataSet { protected: typedef std::list DataList; DataList list; - Glib::ustring name; - ARDOUR::Session *session; + 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 (); @@ -163,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 (); @@ -181,8 +214,8 @@ class SessionMetadataSetImportable : public SessionMetadataSet { struct Columns : public Gtk::TreeModel::ColumnRecord { public: - Gtk::TreeModelColumn field; - Gtk::TreeModelColumn values; + Gtk::TreeModelColumn field; + Gtk::TreeModelColumn values; Gtk::TreeModelColumn import; Gtk::TreeModelColumn data; @@ -197,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 @@ -209,10 +242,10 @@ template 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 (); @@ -220,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 WidgetList; typedef boost::shared_ptr WidgetListPtr; @@ -235,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 DataSetPtr; typedef std::list DataSetList;