#include "ardour_dialog.h"
+#ifdef interface
+#undef interface
+#endif
+
#include <gtkmm.h>
#include <boost/shared_ptr.hpp>
/// 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;
/// 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;
Gtk::Label* value_label;
Gtk::Entry* entry;
- uint width;
+ guint width;
};
/// MetadataField that accepts only numbers
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;
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;
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);
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 ();
/// 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 ();
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;
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
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 ();
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;
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;