X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fsfdb_ui.h;h=249ebf3535834d6d49662c4b8c0578abc6cc535f;hb=6ee23029a338951705c589be6c61ab52099758b6;hp=43f76a9ea24402028eee6785ff3d139c9dba90d6;hpb=f7f9d6fdc40248b190ec9c6e1a886261d55777ae;p=ardour.git diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h index 43f76a9ea2..249ebf3535 100644 --- a/gtk2_ardour/sfdb_ui.h +++ b/gtk2_ardour/sfdb_ui.h @@ -23,10 +23,10 @@ #include #include #include -#include #include +#include #include #include #include @@ -36,40 +36,47 @@ #include #include #include +#include +#include +#include +#include +#include -#include -#include + +#include "ardour/audiofilesource.h" +#include "ardour/session_handle.h" #include "ardour_dialog.h" #include "editing.h" +#include "audio_clock.h" namespace ARDOUR { class Session; }; class GainMeter; +class Mootcher; -class SoundFileBox : public Gtk::VBox +class SoundFileBox : public Gtk::VBox, public ARDOUR::SessionHandlePtr { public: SoundFileBox (bool persistent); virtual ~SoundFileBox () {}; - + void set_session (ARDOUR::Session* s); - bool setup_labels (const Glib::ustring& filename); + bool setup_labels (const std::string& filename); void audition(); bool audition_oneshot(); bool autoplay () const; protected: - ARDOUR::Session* _session; - Glib::ustring path; - + std::string path; + ARDOUR::SoundFileInfo sf_info; - + Gtk::Table table; - + Gtk::Label length; Gtk::Label format; Gtk::Label channels; @@ -78,7 +85,7 @@ class SoundFileBox : public Gtk::VBox Gtk::Label channels_value; Gtk::Label samplerate_value; - + Gtk::Label format_text; AudioClock length_clock; AudioClock timecode_clock; @@ -87,11 +94,11 @@ class SoundFileBox : public Gtk::VBox Gtk::Label preview_label; Gtk::TextView tags_entry; - + Gtk::VBox main_box; Gtk::VBox path_box; Gtk::HBox bottom_box; - + Gtk::Button play_btn; Gtk::Button stop_btn; Gtk::CheckButton autoplay_btn; @@ -109,38 +116,81 @@ class SoundFileBrowser : public ArdourDialog class FoundTagColumns : public Gtk::TreeModel::ColumnRecord { public: - Gtk::TreeModelColumn pathname; - + Gtk::TreeModelColumn pathname; + FoundTagColumns() { add(pathname); } }; - + + class FreesoundColumns : public Gtk::TreeModel::ColumnRecord + { + public: + Gtk::TreeModelColumn id; + Gtk::TreeModelColumn uri; + Gtk::TreeModelColumn filename; + Gtk::TreeModelColumn duration; + + FreesoundColumns() { + add(id); + add(filename); + add(uri); + add(duration); + } + }; + FoundTagColumns found_list_columns; Glib::RefPtr found_list; + FreesoundColumns freesound_list_columns; + Glib::RefPtr freesound_list; + + Gtk::Button freesound_stop_btn; + public: SoundFileBrowser (Gtk::Window& parent, std::string title, ARDOUR::Session* _s, bool persistent); virtual ~SoundFileBrowser (); - + virtual void set_session (ARDOUR::Session*); - std::vector get_paths (); - + std::vector get_paths (); + void clear_selection (); Gtk::FileChooserWidget chooser; + + SoundFileBox preview; + + Gtk::Entry found_entry; + Gtk::Button found_search_btn; Gtk::TreeView found_list_view; + Gtk::Entry freesound_entry; + Gtk::ComboBoxText freesound_sort; + Gtk::SpinButton freesound_page; + + Gtk::Button freesound_search_btn; + Gtk::TreeView freesound_list_view; + Gtk::ProgressBar freesound_progress_bar; + + bool freesound_search_cancel; + bool freesound_download_cancel; + + void freesound_search(); + +#ifdef FREESOUND + Mootcher *mootcher; +#endif + protected: bool resetting_ourselves; - + + Gtk::FileFilter audio_and_midi_filter; + Gtk::FileFilter audio_filter; + Gtk::FileFilter midi_filter; Gtk::FileFilter custom_filter; Gtk::FileFilter matchall_filter; - SoundFileBox preview; Gtk::HBox hpacker; - static Glib::ustring persistent_folder; + static std::string persistent_folder; - Gtk::Entry found_entry; - Gtk::Button found_search_btn; Gtk::Notebook notebook; GainMeter* gm; @@ -153,13 +203,21 @@ class SoundFileBrowser : public ArdourDialog sigc::connection metering_connection; void update_preview (); + void found_list_view_selected (); void found_list_view_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn*); void found_search_clicked (); - void chooser_file_activated (); + void freesound_list_view_selected (); + void freesound_list_view_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn*); + void freesound_search_clicked (); + void freesound_stop_clicked (); - bool on_custom (const Gtk::FileFilter::Info& filter_info); + void chooser_file_activated (); + + bool on_audio_filter (const Gtk::FileFilter::Info& filter_info); + bool on_midi_filter (const Gtk::FileFilter::Info& filter_info); + bool on_audio_and_midi_filter (const Gtk::FileFilter::Info& filter_info); virtual bool reset_options() { return true; } @@ -173,8 +231,8 @@ class SoundFileChooser : public SoundFileBrowser public: SoundFileChooser (Gtk::Window& parent, std::string title, ARDOUR::Session* _s = 0); virtual ~SoundFileChooser () {}; - - Glib::ustring get_filename (); + + std::string get_filename (); protected: void on_hide(); @@ -184,11 +242,13 @@ class SoundFileOmega : public SoundFileBrowser { public: - SoundFileOmega (Gtk::Window& parent, std::string title, ARDOUR::Session* _s, int selected_tracks, bool persistent, + SoundFileOmega (Gtk::Window& parent, std::string title, ARDOUR::Session* _s, + uint32_t selected_audio_tracks, uint32_t selected_midi_tracks, + bool persistent, Editing::ImportMode mode_hint = Editing::ImportAsTrack); - - void reset (int selected_tracks); - + + void reset (uint32_t selected_audio_tracks, uint32_t selected_midi_tracks); + Gtk::ComboBoxText action_combo; Gtk::ComboBoxText where_combo; Gtk::ComboBoxText channel_combo; @@ -206,9 +266,10 @@ class SoundFileOmega : public SoundFileBrowser void on_hide(); private: - uint32_t selected_track_cnt; + uint32_t selected_audio_track_cnt; + uint32_t selected_midi_track_cnt; - typedef std::map DispositionMap; + typedef std::map DispositionMap; DispositionMap disposition_map; Gtk::HBox options; @@ -216,10 +277,10 @@ class SoundFileOmega : public SoundFileBrowser Gtk::VBox block_three; Gtk::VBox block_four; - bool check_info (const std::vector& paths, + bool check_info (const std::vector& paths, bool& same_size, bool& src_needed, bool& multichannel); - static bool check_link_status (const ARDOUR::Session&, const std::vector& paths); + static bool check_link_status (const ARDOUR::Session*, const std::vector& paths); void file_selection_changed (); bool reset_options ();