X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsession_metadata_dialog.h;h=72e56effc5f64a2d00acab9fedab8cbf98b30996;hb=e297951b3080bedab8c4cba415178ecdef8e1fb2;hp=be64c90ae930cdc5f0ada7abc14c682ce22e25aa;hpb=f6fdd8dcbf41f864e9f0cc32dabe81fe3533ddfe;p=ardour.git diff --git a/gtk2_ardour/session_metadata_dialog.h b/gtk2_ardour/session_metadata_dialog.h index be64c90ae9..72e56effc5 100644 --- a/gtk2_ardour/session_metadata_dialog.h +++ b/gtk2_ardour/session_metadata_dialog.h @@ -22,7 +22,22 @@ #include "ardour_dialog.h" -#include +#ifdef interface +#undef interface +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include #include @@ -34,17 +49,18 @@ class MetadataField; typedef boost::shared_ptr MetadataPtr; /// Wraps a metadata field to be used in a GUI -class MetadataField { - public: - MetadataField (Glib::ustring const & field_name); +class MetadataField +{ +public: + 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; @@ -52,18 +68,19 @@ class MetadataField { virtual Gtk::Widget & value_widget () = 0; /// Get widget for editing value virtual Gtk::Widget & edit_widget () = 0; - protected: - Glib::ustring _name; - Glib::ustring _value; +protected: + 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 &); - public: - TextMetadataField (Getter getter, Setter setter, Glib::ustring const & field_name, guint width = 50); +class TextMetadataField : public MetadataField +{ +protected: + typedef std::string (ARDOUR::SessionMetadata::*Getter) () const; + typedef void (ARDOUR::SessionMetadata::*Setter) (std::string const &); +public: + TextMetadataField (Getter getter, Setter setter, std::string const & field_name, guint width = 50); MetadataPtr copy (); void save_data (ARDOUR::SessionMetadata & data) const; @@ -72,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; @@ -82,16 +99,31 @@ class TextMetadataField : public MetadataField { Gtk::Label* value_label; Gtk::Entry* entry; - uint width; + 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: - NumberMetadataField (Getter getter, Setter setter, Glib::ustring const & field_name, guint numbers, guint width = 50); +public: + NumberMetadataField (Getter getter, Setter setter, std::string const & field_name, guint numbers, guint width = 50); MetadataPtr copy (); void save_data (ARDOUR::SessionMetadata & data) const; @@ -100,10 +132,10 @@ class NumberMetadataField : public MetadataField { Gtk::Widget & name_widget (); Gtk::Widget & value_widget (); Gtk::Widget & edit_widget (); - private: +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 +148,44 @@ 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); +class SessionMetadataSet : public ARDOUR::SessionHandlePtr +{ +public: + SessionMetadataSet (std::string const & name); virtual ~SessionMetadataSet () {}; void add_data_field (MetadataPtr field); @@ -132,16 +198,17 @@ class SessionMetadataSet : public ARDOUR::SessionHandlePtr { virtual Gtk::Widget & get_widget () = 0; virtual Gtk::Widget & get_tab_widget () = 0; - protected: +protected: typedef std::list DataList; DataList list; - Glib::ustring name; + std::string name; }; /// Contains MetadataFields for editing -class SessionMetadataSetEditable : public SessionMetadataSet { - public: - SessionMetadataSetEditable (Glib::ustring const & name); +class SessionMetadataSetEditable : public SessionMetadataSet +{ +public: + SessionMetadataSetEditable (std::string const & name); Gtk::Widget & get_widget () { return vbox; } Gtk::Widget & get_tab_widget (); @@ -151,16 +218,17 @@ 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: - SessionMetadataSetImportable (Glib::ustring const & name); +class SessionMetadataSetImportable : public SessionMetadataSet +{ +public: + SessionMetadataSetImportable (std::string const & name); Gtk::Widget & get_widget () { return tree_view; } Gtk::Widget & get_tab_widget (); @@ -171,15 +239,15 @@ 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: - Gtk::TreeModelColumn field; - Gtk::TreeModelColumn values; + public: + Gtk::TreeModelColumn field; + Gtk::TreeModelColumn values; Gtk::TreeModelColumn import; Gtk::TreeModelColumn data; @@ -194,7 +262,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 @@ -205,11 +273,11 @@ class SessionMetadataSetImportable : public SessionMetadataSet { template class SessionMetadataDialog : public ArdourDialog { - public: - SessionMetadataDialog (Glib::ustring const & name); +public: + SessionMetadataDialog (std::string const & name); - protected: - void init_data (); +protected: + void init_data ( bool skip_user = false ); void load_extra_data (ARDOUR::SessionMetadata const & data); void save_data (); @@ -217,7 +285,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; @@ -231,10 +299,13 @@ 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 (); + void init_school_data (); typedef boost::shared_ptr DataSetPtr; typedef std::list DataSetList; @@ -244,12 +315,13 @@ class SessionMetadataDialog : public ArdourDialog Gtk::Button * cancel_button; }; -class SessionMetadataEditor : public SessionMetadataDialog { - public: +class SessionMetadataEditor : public SessionMetadataDialog +{ +public: SessionMetadataEditor (); ~SessionMetadataEditor (); void run (); - private: +private: void init_gui (); };