X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsfdb_ui.h;h=4a4bdf9c7d2aa84de8fd85493c54f6fec4c11047;hb=b4d7120a58cb3fc2a49542acab868e0eb0790864;hp=43f76a9ea24402028eee6785ff3d139c9dba90d6;hpb=f7f9d6fdc40248b190ec9c6e1a886261d55777ae;p=ardour.git diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h index 43f76a9ea2..4a4bdf9c7d 100644 --- a/gtk2_ardour/sfdb_ui.h +++ b/gtk2_ardour/sfdb_ui.h @@ -23,7 +23,6 @@ #include #include #include -#include #include @@ -36,12 +35,14 @@ #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; @@ -49,27 +50,26 @@ namespace ARDOUR { class GainMeter; -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 +78,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 +87,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 +109,66 @@ 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; + + FreesoundColumns() { add(id); add(filename); add(uri); } + }; + FoundTagColumns found_list_columns; Glib::RefPtr found_list; + FreesoundColumns freesound_list_columns; + Glib::RefPtr freesound_list; + + Gtk::ProgressBar progress_bar; + 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; + + void freesound_search(); + protected: bool resetting_ourselves; - + + 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 +181,19 @@ 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 freesound_list_view_selected (); + void freesound_list_view_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn*); + void freesound_search_clicked (); + void chooser_file_activated (); - - bool on_custom (const Gtk::FileFilter::Info& filter_info); + + bool on_audio_filter (const Gtk::FileFilter::Info& filter_info); + bool on_midi_filter (const Gtk::FileFilter::Info& filter_info); virtual bool reset_options() { return true; } @@ -173,8 +207,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 +218,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 +242,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 +253,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 ();