#include <gtkmm/stock.h>
#include <glibmm/fileutils.h>
-#include <pbd/convert.h>
-#include <pbd/tokenizer.h>
-#include <pbd/enumwriter.h>
-#include <pbd/pthread_utils.h>
-#include <pbd/xml++.h>
+#include "pbd/convert.h"
+#include "pbd/tokenizer.h"
+#include "pbd/enumwriter.h"
+#include "pbd/pthread_utils.h"
+#include "pbd/xml++.h"
#include <gtkmm2ext/utils.h>
-#include <evoral/SMFReader.hpp>
+#include "evoral/SMF.hpp"
-#include <ardour/audio_library.h>
-#include <ardour/auditioner.h>
-#include <ardour/audioregion.h>
-#include <ardour/audiofilesource.h>
-#include <ardour/smf_source.h>
-#include <ardour/region_factory.h>
-#include <ardour/source_factory.h>
-#include <ardour/session.h>
-#include <ardour/session_directory.h>
-#include <ardour/profile.h>
+#include "ardour/amp.h"
+#include "ardour/audio_library.h"
+#include "ardour/auditioner.h"
+#include "ardour/audioregion.h"
+#include "ardour/audiofilesource.h"
+#include "ardour/smf_source.h"
+#include "ardour/region_factory.h"
+#include "ardour/source_factory.h"
+#include "ardour/session.h"
+#include "ardour/session_directory.h"
+#include "ardour/profile.h"
#include "ardour_ui.h"
#include "editing.h"
autoplay_btn (_("Auto-play"))
{
- HBox* hbox;
- VBox* vbox;
-
set_name (X_("SoundFileBox"));
set_size_request (300, -1);
- preview_label.set_markup (_("<b>Soundfile Info</b>"));
+ preview_label.set_markup (_("<b>Sound File Information</b>"));
border_frame.set_label_widget (preview_label);
border_frame.add (main_box);
set_border_width (6);
main_box.set_border_width (6);
- main_box.set_spacing (12);
length.set_text (_("Length:"));
+ length.set_alignment (1, 0.5);
timecode.set_text (_("Timestamp:"));
+ timecode.set_alignment (1, 0.5);
format.set_text (_("Format:"));
+ format.set_alignment (1, 0.5);
channels.set_text (_("Channels:"));
+ channels.set_alignment (1, 0.5);
samplerate.set_text (_("Sample rate:"));
+ samplerate.set_alignment (1, 0.5);
+
+ format_text.set_max_width_chars (8);
+ format_text.set_ellipsize (Pango::ELLIPSIZE_END);
+ format_text.set_alignment (0, 1);
table.set_col_spacings (6);
table.set_homogeneous (false);
table.set_row_spacings (6);
- table.attach (channels, 0, 1, 0, 1, FILL|EXPAND, (AttachOptions) 0);
- table.attach (samplerate, 0, 1, 1, 2, FILL|EXPAND, (AttachOptions) 0);
- table.attach (format, 0, 1, 2, 4, FILL|EXPAND, (AttachOptions) 0);
- table.attach (length, 0, 1, 4, 5, FILL|EXPAND, (AttachOptions) 0);
- table.attach (timecode, 0, 1, 5, 6, FILL|EXPAND, (AttachOptions) 0);
+ table.attach (channels, 0, 1, 0, 1, FILL, FILL);
+ table.attach (samplerate, 0, 1, 1, 2, FILL, FILL);
+ table.attach (format, 0, 1, 2, 4, FILL, FILL);
+ table.attach (length, 0, 1, 4, 5, FILL, FILL);
+ table.attach (timecode, 0, 1, 5, 6, FILL, FILL);
- table.attach (channels_value, 1, 2, 0, 1, FILL, (AttachOptions) 0);
- table.attach (samplerate_value, 1, 2, 1, 2, FILL, (AttachOptions) 0);
- table.attach (format_text, 1, 2, 2, 4, FILL, AttachOptions (0));
- table.attach (length_clock, 1, 2, 4, 5, FILL, (AttachOptions) 0);
- table.attach (timecode_clock, 1, 2, 5, 6, FILL, (AttachOptions) 0);
+ table.attach (channels_value, 1, 2, 0, 1, FILL, FILL);
+ table.attach (samplerate_value, 1, 2, 1, 2, FILL, FILL);
+ table.attach (format_text, 1, 2, 2, 4, FILL, FILL);
+ table.attach (length_clock, 1, 2, 4, 5, FILL, FILL);
+ table.attach (timecode_clock, 1, 2, 5, 6, FILL, FILL);
length_clock.set_mode (ARDOUR_UI::instance()->secondary_clock.mode());
timecode_clock.set_mode (AudioClock::SMPTE);
- hbox = manage (new HBox);
- hbox->pack_start (table, false, false);
- main_box.pack_start (*hbox, false, false);
+ main_box.pack_start (table, false, false);
tags_entry.set_editable (true);
tags_entry.signal_focus_out_event().connect (mem_fun (*this, &SoundFileBox::tags_entry_left));
- hbox = manage (new HBox);
- hbox->pack_start (tags_entry, true, true);
-
- vbox = manage (new VBox);
Label* label = manage (new Label (_("Tags:")));
label->set_alignment (0.0f, 0.5f);
- vbox->set_spacing (6);
- vbox->pack_start(*label, false, false);
- vbox->pack_start(*hbox, true, true);
+ main_box.pack_start (*label, false, false);
+ main_box.pack_start (tags_entry, true, true);
- main_box.pack_start(*vbox, true, true);
- main_box.pack_start(bottom_box, false, false);
+ main_box.pack_start (bottom_box, false, false);
play_btn.set_image (*(manage (new Image (Stock::MEDIA_PLAY, ICON_SIZE_BUTTON))));
- play_btn.set_label (_("Play (double click)"));
+ play_btn.set_label (_("Play"));
stop_btn.set_image (*(manage (new Image (Stock::MEDIA_STOP, ICON_SIZE_BUTTON))));
stop_btn.set_label (_("Stop"));
play_btn.signal_clicked().connect (mem_fun (*this, &SoundFileBox::audition));
stop_btn.signal_clicked().connect (mem_fun (*this, &SoundFileBox::stop_audition));
- length.set_alignment (0.0f, 0.5f);
- format.set_alignment (0.0f, 0.5f);
- channels.set_alignment (0.0f, 0.5f);
- samplerate.set_alignment (0.0f, 0.5f);
- timecode.set_alignment (0.0f, 0.5f);
-
channels_value.set_alignment (0.0f, 0.5f);
samplerate_value.set_alignment (0.0f, 0.5f);
}
if(!AudioFileSource::get_soundfile_info (filename, sf_info, error_msg)) {
- preview_label.set_markup (_("<b>Soundfile Info</b>"));
- format_text.set_text (_("n/a"));
- channels_value.set_text (_("n/a"));
- samplerate_value.set_text (_("n/a"));
+ preview_label.set_markup (_("<b>Sound File Information</b>"));
+ format_text.set_text ("");
+ channels_value.set_text ("");
+ samplerate_value.set_text ("");
tags_entry.get_buffer()->set_text ("");
length_clock.set (0);
}
preview_label.set_markup (string_compose ("<b>%1</b>", Glib::path_get_basename (filename)));
- format_text.set_text (sf_info.format_name);
+ std::string n = sf_info.format_name;
+ if (n.substr (0, 8) == X_("Format: ")) {
+ n = n.substr (8);
+ }
+ format_text.set_text (n);
channels_value.set_text (to_string (sf_info.channels, std::dec));
if (_session && sf_info.samplerate != _session->frame_rate()) {
samplerate.set_name ("NewSessionSR2Label");
}
- double src_coef = (double) _session->nominal_frame_rate() / sf_info.samplerate;
+ nframes_t const nfr = _session ? _session->nominal_frame_rate() : 25;
+ double src_coef = (double) nfr / sf_info.samplerate;
length_clock.set (sf_info.length * src_coef + 0.5, true);
timecode_clock.set (sf_info.timecode * src_coef + 0.5, true);
}
bool
-SoundFileBox::tags_entry_left (GdkEventFocus *ev)
+SoundFileBox::tags_entry_left (GdkEventFocus *)
{
tags_changed ();
return false;
}
void
-SoundFileBrowser::found_list_view_activated (const TreeModel::Path& path, TreeViewColumn* col)
+SoundFileBrowser::found_list_view_activated (const TreeModel::Path&, TreeViewColumn*)
{
preview.audition ();
}
void
-SoundFileBrowser::freesound_list_view_activated (const TreeModel::Path& path, TreeViewColumn* col)
+SoundFileBrowser::freesound_list_view_activated (const TreeModel::Path&, TreeViewColumn*)
{
preview.audition ();
}
delete gm;
gm = new GainMeter (*session);
- gm->set_io (session->the_auditioner());
+
+ boost::shared_ptr<Route> r = session->the_auditioner ();
+
+ gm->set_controls (r, r->shared_peak_meter(), r->amp());
meter_packer.set_border_width (12);
meter_packer.pack_start (*gm, false, true);
} else if (SMFSource::safe_midi_file_extension (*i)) {
- Evoral::SMFReader reader(*i);
+ Evoral::SMF reader;
+ reader.open(*i);
if (reader.num_tracks() > 1) {
multichannel = true; // "channel" == track here...
}
options.set_spacing (12);
str.clear ();
- str.push_back (_("use file timestamp"));
- str.push_back (_("at edit point"));
- str.push_back (_("at playhead"));
- str.push_back (_("at session start"));
+ str.push_back (_("file timestamp"));
+ str.push_back (_("edit point"));
+ str.push_back (_("playhead"));
+ str.push_back (_("session start"));
set_popdown_strings (where_combo, str);
where_combo.set_active_text (str.front());
action_combo.set_sensitive (false);
l = manage (new Label);
- l->set_text (_("Insert:"));
+ l->set_text (_("Insert at:"));
hbox = manage (new HBox);
hbox->set_border_width (12);
channel_combo.set_sensitive (false);
l = manage (new Label);
- l->set_text (_("Conversion Quality:"));
+ l->set_text (_("Conversion quality:"));
hbox = manage (new HBox);
hbox->set_border_width (12);
disposition_map.insert (pair<ustring,ImportDisposition>(_("all files in one region"), ImportMergeFiles));
chooser.signal_selection_changed().connect (mem_fun (*this, &SoundFileOmega::file_selection_changed));
+
+ /* set size requests for a couple of combos to allow them to display the longest text
+ they will ever be asked to display. This prevents them being resized when the user
+ selects a file to import, which in turn prevents the size of the dialog from jumping
+ around. */
+
+ vector<string> t;
+ t.push_back (_("one track per file"));
+ t.push_back (_("one track per channel"));
+ t.push_back (_("sequence files"));
+ t.push_back (_("all files in one region"));
+ set_size_request_to_display_given_text (channel_combo, t, COMBO_FUDGE + 10, 15);
+
+ t.clear ();
+ t.push_back (importmode2string (ImportAsTrack));
+ t.push_back (importmode2string (ImportToTrack));
+ t.push_back (importmode2string (ImportAsRegion));
+ t.push_back (importmode2string (ImportAsTapeTrack));
+ set_size_request_to_display_given_text (action_combo, t, COMBO_FUDGE + 10, 15);
}
void
{
ustring str = where_combo.get_active_text();
- if (str == _("use file timestamp")) {
+ if (str == _("file timestamp")) {
return ImportAtTimestamp;
- } else if (str == _("at edit point")) {
+ } else if (str == _("edit point")) {
return ImportAtEditPoint;
- } else if (str == _("at playhead")) {
+ } else if (str == _("playhead")) {
return ImportAtPlayhead;
} else {
return ImportAtStart;