using std::setprecision;
using std::list;
using std::vector;
+using std::max;
using boost::shared_ptr;
using boost::weak_ptr;
using boost::dynamic_pointer_cast;
} else if (property == FFmpegContentProperty::AUDIO_STREAMS) {
setup_streams ();
setup_show_audio_sensitivity ();
- } else if (property == VideoContentProperty::VIDEO_LENGTH) {
+ } else if (property == VideoContentProperty::VIDEO_LENGTH || property == AudioContentProperty::AUDIO_LENGTH) {
setup_length ();
boost::shared_ptr<Content> c = content.lock ();
if (c && c == selected_content()) {
FilmEditor::setup_length ()
{
stringstream s;
- if (_film->video_frame_rate() > 0 && _film->video_length()) {
- s << _film->video_length() << " "
- << wx_to_std (_("frames")) << "; " << seconds_to_hms (_film->video_length() / _film->video_frame_rate());
- } else if (_film->video_length()) {
- s << _film->video_length() << " "
- << wx_to_std (_("frames"));
- }
+ ContentVideoFrame const frames = _film->content_length ();
+
+ if (frames && _film->video_frame_rate()) {
+ s << frames << " " << wx_to_std (_("frames")) << "; " << seconds_to_hms (frames / _film->video_frame_rate());
+ } else if (frames) {
+ s << frames << " " << wx_to_std (_("frames"));
+ }
+
_length->SetLabel (std_to_wx (s.str ()));
- if (_film->video_length()) {
- _trim_start->SetRange (0, _film->video_length());
- _trim_end->SetRange (0, _film->video_length());
+
+ if (frames) {
+ _trim_start->SetRange (0, frames);
+ _trim_end->SetRange (0, frames);
}
}
void
FilmEditor::content_add_clicked (wxCommandEvent &)
{
- wxFileDialog* d = new wxFileDialog (this);
+ wxFileDialog* d = new wxFileDialog (this, _("Choose a file or files"), wxT (""), wxT (""), wxT ("*.*"), wxFD_MULTIPLE);
int const r = d->ShowModal ();
d->Destroy ();
return;
}
- boost::filesystem::path p (wx_to_std (d->GetPath()));
+ wxArrayString paths;
+ d->GetPaths (paths);
- if (ImageMagickContent::valid_file (p)) {
- _film->add_content (shared_ptr<ImageMagickContent> (new ImageMagickContent (p)));
- } else if (SndfileContent::valid_file (p)) {
- _film->add_content (shared_ptr<SndfileContent> (new SndfileContent (p)));
- } else {
- _film->add_content (shared_ptr<FFmpegContent> (new FFmpegContent (p)));
+ for (unsigned int i = 0; i < paths.GetCount(); ++i) {
+ boost::filesystem::path p (wx_to_std (paths[i]));
+
+ if (ImageMagickContent::valid_file (p)) {
+ _film->add_content (shared_ptr<ImageMagickContent> (new ImageMagickContent (p)));
+ } else if (SndfileContent::valid_file (p)) {
+ _film->add_content (shared_ptr<SndfileContent> (new SndfileContent (p)));
+ } else {
+ _film->add_content (shared_ptr<FFmpegContent> (new FFmpegContent (p)));
+ }
}
-
}
void