X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsession_metadata_dialog.h;h=9aa62ed4cae55922a94dfd658dc7878335f00024;hb=d1f45e9b3d6a7e272e5563cc50175dfb6d904361;hp=defd54061887e008c26c820ed08635f0d13f8e55;hpb=3b89d9eaa03406a5e03648f47734211f09b89d62;p=ardour.git diff --git a/gtk2_ardour/session_metadata_dialog.h b/gtk2_ardour/session_metadata_dialog.h index defd540618..9aa62ed4ca 100644 --- a/gtk2_ardour/session_metadata_dialog.h +++ b/gtk2_ardour/session_metadata_dialog.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2008 Paul Davis + Copyright (C) 2008 Paul Davis Author: Sakari Bergen This program is free software; you can redistribute it and/or modify it @@ -31,21 +31,21 @@ #include "ardour/session_metadata.h" class MetadataField; -typedef boost::shared_ptr MetadataPtr; +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; /// Get label containing value of field @@ -53,35 +53,35 @@ 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; void load_data (ARDOUR::SessionMetadata const & data); - + Gtk::Widget & name_widget (); Gtk::Widget & value_widget (); Gtk::Widget & edit_widget (); private: void update_value (); - + Getter getter; Setter setter; - + Gtk::Label* label; Gtk::Label* value_label; Gtk::Entry* entry; - + uint width; }; @@ -91,70 +91,68 @@ 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; void load_data (ARDOUR::SessionMetadata const & data); - + Gtk::Widget & name_widget (); Gtk::Widget & value_widget (); 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; - + Gtk::Label* label; Gtk::Label* value_label; Gtk::Entry* entry; - + guint numbers; 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) { } + virtual void load_extra_data (ARDOUR::SessionMetadata const & /*data*/) { } /// Saves data to session virtual void save_data () = 0; - + virtual Gtk::Widget & get_widget () = 0; virtual Gtk::Widget & get_tab_widget () = 0; - + 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); - - Gtk::Widget & get_widget () { return table; } + SessionMetadataSetEditable (std::string const & name); + + Gtk::Widget & get_widget () { return vbox; } Gtk::Widget & get_tab_widget (); - + /// Sets session and loads data void set_session (ARDOUR::Session * s); /// Saves from MetadataFields into data void save_data (); - + private: + Gtk::VBox vbox; Gtk::Table table; Gtk::Label tab_widget; }; @@ -162,41 +160,41 @@ 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 (); Gtk::Widget & get_select_all_widget (); - + /// Loads importable data from data void load_extra_data (ARDOUR::SessionMetadata const & data); /// Saves from importable data (see load_data) to session_data void save_data (); - + private: DataList & session_list; // References MetadataSet::list DataList import_list; - + 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; - + Columns() { add (field); add (values); add (import); add (data); } }; - + Glib::RefPtr tree; Columns tree_cols; Gtk::TreeView tree_view; - - Gtk::Label tab_widget; + + Gtk::Label tab_widget; 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 @@ -208,40 +206,42 @@ 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 (); - + virtual void init_gui () = 0; 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; typedef Gtk::Widget & (DataSet::*WidgetFunc) (); - + /// Returns list of widgets gathered by calling f for each data set WidgetListPtr get_custom_widgets (WidgetFunc f); - + /// Adds a widget to the table (vertical stacking) with automatic spacing void add_widget (Gtk::Widget & widget); 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; DataSetList data_list; - + Gtk::Button * save_button; Gtk::Button * cancel_button; }; @@ -263,11 +263,11 @@ class SessionMetadataImporter : public SessionMetadataDialog