#include "gtk2ardour-config.h"
#endif
-#include "pbd/i18n.h"
-
#include <map>
#include <cerrno>
#include <sstream>
#include <limits.h>
#include <gtkmm/box.h>
+#include <gtkmm/scrolledwindow.h>
#include <gtkmm/stock.h>
#include "pbd/gstdio_compat.h"
#include <glibmm/fileutils.h>
-#include "pbd/convert.h"
#include "pbd/tokenizer.h"
#include "pbd/enumwriter.h"
#include "pbd/pthread_utils.h"
+#include "pbd/string_convert.h"
#include "pbd/xml++.h"
#include <gtkmm2ext/utils.h>
#include "ardour_ui.h"
#include "editing.h"
#include "gui_thread.h"
-#include "prompter.h"
#include "sfdb_ui.h"
#include "editing.h"
#include "gain_meter.h"
#include "sfdb_freesound_mootcher.h"
+#include "pbd/i18n.h"
+
using namespace ARDOUR;
using namespace PBD;
using namespace std;
table.attach (timecode_clock, 1, 2, 5, 6, FILL, FILL);
table.attach (tempomap_value, 1, 2, 6, 7, FILL, FILL);
- length_clock.set_mode (ARDOUR_UI::instance()->secondary_clock->mode());
+ length_clock.set_mode (ARDOUR_UI::instance()->primary_clock->mode());
timecode_clock.set_mode (AudioClock::Timecode);
main_box.pack_start (table, false, false);
play_btn.signal_clicked().connect (sigc::mem_fun (*this, &SoundFileBox::audition));
stop_btn.signal_clicked().connect (sigc::mem_fun (*this, &SoundFileBox::stop_audition));
+ update_autoplay ();
+ autoplay_btn.signal_toggled().connect(sigc::mem_fun (*this, &SoundFileBox::autoplay_toggled));
+
stop_btn.set_sensitive (false);
channels_value.set_alignment (0.0f, 0.5f);
}
void
-SoundFileBox::audition_progress(ARDOUR::framecnt_t pos, ARDOUR::framecnt_t len) {
+SoundFileBox::audition_progress(ARDOUR::samplecnt_t pos, ARDOUR::samplecnt_t len) {
if (!_seeking) {
seek_slider.set_value( 1000.0 * pos / len);
seek_slider.set_sensitive (true);
if (ms) {
if (ms->is_type0()) {
- channels_value.set_text (to_string(ms->channels().size(), std::dec));
+ channels_value.set_text (to_string<uint32_t>(ms->channels().size()));
} else {
if (ms->num_tracks() > 1) {
- channels_value.set_text (to_string(ms->num_tracks(), std::dec) + _("(Tracks)"));
+ channels_value.set_text (to_string(ms->num_tracks()) + _("(Tracks)"));
} else {
- channels_value.set_text (to_string(ms->num_tracks(), std::dec));
+ channels_value.set_text (to_string(ms->num_tracks()));
}
}
length_clock.set (ms->length(ms->timeline_position()));
n = n.substr (8);
}
format_text.set_text (n);
- channels_value.set_text (to_string (sf_info.channels, std::dec));
+ channels_value.set_text (to_string (sf_info.channels));
- if (_session && sf_info.samplerate != _session->frame_rate()) {
+ if (_session && sf_info.samplerate != _session->sample_rate()) {
samplerate.set_markup (string_compose ("<b>%1</b>", _("Sample rate:")));
samplerate_value.set_markup (string_compose (X_("<b>%1 Hz</b>"), sf_info.samplerate));
samplerate_value.set_name ("NewSessionSR1Label");
samplerate.set_name ("NewSessionSR2Label");
}
- framecnt_t const nfr = _session ? _session->nominal_frame_rate() : 25;
+ samplecnt_t const nfr = _session ? _session->nominal_sample_rate() : 25;
double src_coef = (double) nfr / sf_info.samplerate;
length_clock.set (sf_info.length * src_coef + 0.5, true);
return true;
}
+void
+SoundFileBox::update_autoplay ()
+{
+ const bool config_autoplay = UIConfiguration::instance().get_autoplay_files();
+
+ if (autoplay_btn.get_active() != config_autoplay) {
+ autoplay_btn.set_active (config_autoplay);
+ }
+}
+
+void
+SoundFileBox::autoplay_toggled()
+{
+ UIConfiguration::instance().set_autoplay_files(autoplay_btn.get_active());
+}
+
bool
SoundFileBox::autoplay() const
{
SourceFactory::createExternal (DataType::AUDIO, *_session,
path, n,
Source::Flag (ARDOUR::AudioFileSource::NoPeakFile), false));
- if (afs->sample_rate() != _session->nominal_frame_rate()) {
+ if (afs->sample_rate() != _session->nominal_sample_rate()) {
boost::shared_ptr<SrcFileSource> sfs (new SrcFileSource(*_session, afs, _src_quality));
srclist.push_back(sfs);
} else {
r = boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (srclist, plist, false));
}
- frameoffset_t audition_position = 0;
+ sampleoffset_t audition_position = 0;
switch(_import_position) {
case ImportAtTimestamp:
audition_position = 0;
break;
case ImportAtPlayhead:
- audition_position = _session->transport_frame();
+ audition_position = _session->transport_sample();
break;
case ImportAtStart:
- audition_position = _session->current_start_frame();
+ audition_position = _session->current_start_sample();
break;
case ImportAtEditPoint:
audition_position = PublicEditor::instance().get_preferred_edit_position ();
, _status (0)
, _done (false)
, import_button (_("Import"))
- , close_button (Stock::CLOSE)
, gm (0)
{
Gtk::HButtonBox* button_box = manage (new HButtonBox);
button_box->set_layout (BUTTONBOX_END);
- button_box->pack_start (close_button, false, false);
- close_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &SoundFileBrowser::do_something), RESPONSE_CLOSE));
button_box->pack_start (import_button, false, false);
import_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &SoundFileBrowser::do_something), RESPONSE_OK));
Gtkmm2ext::UI::instance()->set_tip (import_button, _("Press to import selected files"));
- Gtkmm2ext::UI::instance()->set_tip (close_button, _("Press to close this window without importing any files"));
vpacker.pack_end (*button_box, false, false);
import_button.set_sensitive (yn);
}
+bool
+SoundFileBrowser::get_action_sensitive () const
+{
+ return import_button.get_sensitive ();
+}
+
void
SoundFileBrowser::do_something (int action)
{
start_metering ();
}
+bool
+SoundFileBrowser::on_key_press_event (GdkEventKey* ev)
+{
+ if (ev->keyval == GDK_Escape) {
+ do_something (RESPONSE_CLOSE);
+ return true;
+ }
+ if (ev->keyval == GDK_space && ev->type == GDK_KEY_PRESS) {
+ if (get_action_sensitive()) {
+ preview.audition();
+ return true;
+ }
+ }
+ return ArdourWindow::on_key_press_event (ev);
+}
+
void
SoundFileBrowser::clear_selection ()
{
void
SoundFileBrowser::chooser_file_activated ()
{
- preview.audition ();
+ do_something (RESPONSE_OK);
}
void
SoundFileOmega::check_info (const vector<string>& paths, bool& same_size, bool& src_needed, bool& multichannel)
{
SoundFileInfo info;
- framepos_t sz = 0;
+ samplepos_t sz = 0;
bool err = false;
string errmsg;
}
}
- if (info.samplerate != _session->frame_rate()) {
+ if (info.samplerate != _session->sample_rate()) {
src_needed = true;
}
ImportMode mode = get_mode ();
ImportDisposition chns = get_channel_disposition ();
PluginInfoPtr instrument = instrument_combo.selected_instrument();
- framepos_t where;
+ samplepos_t where;
MidiTrackNameSource mts = get_midi_track_name_source ();
MidiTempoMapDisposition mtd = (get_use_smf_tempo_map () ? SMFTempoUse : SMFTempoIgnore);
where = -1;
break;
case ImportAtPlayhead:
- where = _session->transport_frame();
+ where = _session->transport_sample();
break;
case ImportAtStart:
- where = _session->current_start_frame();
+ where = _session->current_start_sample();
break;
}