Use PBD::open_uri in about dialog to open website, should fix #6463
[ardour.git] / gtk2_ardour / transcode_video_dialog.cc
index 6e4a1a3298ad6c90560110913e82fa28e36ffde7..04c21b6140dd86bb714c318c24318c35787bb34a 100644 (file)
@@ -29,6 +29,8 @@
 
 #include <sigc++/bind.h>
 
+#include <glib/gstdio.h>
+
 #include "pbd/error.h"
 #include "pbd/convert.h"
 #include "gtkmm2ext/utils.h"
@@ -39,7 +41,6 @@
 #include "ardour_ui.h"
 #include "gui_thread.h"
 
-#include "utils.h"
 #include "opts.h"
 #include "transcode_video_dialog.h"
 #include "utils_videotl.h"
@@ -121,12 +122,15 @@ TranscodeVideoDialog::TranscodeVideoDialog (Session* s, std::string infile)
                aspect_checkbox.set_sensitive(false);
                bitrate_checkbox.set_sensitive(false);
        } else {
-               ffok = true;
                w = transcoder->get_width();
                h = transcoder->get_height();
                as = transcoder->get_audio();
                m_aspect = transcoder->get_aspect();
 
+               if (w > 0 && h > 0 && transcoder->get_fps() > 0 && transcoder->get_duration() > 0) {
+                       ffok = true;
+               }
+
                Table* t = manage (new Table (4, 2));
                t->set_spacings (4);
                options_box->pack_start (*t, true, true, 4);
@@ -177,15 +181,40 @@ TranscodeVideoDialog::TranscodeVideoDialog (Session* s, std::string infile)
        options_box->pack_start (*l, false, true, 4);
 
        video_combo.set_name ("PaddedButton");
-       video_combo.append_text(_("Do Not Import Video"));
-       video_combo.append_text(_("Reference From Current Location"));
-       if (ffok)  {
+
+       if (ffok) {
+               video_combo.append_text(_("Reference From Current Location (Previously Transcoded Files Only)"));
                video_combo.append_text(_("Import/Transcode Video to Session"));
-               video_combo.set_active(2);
-       } else {
                video_combo.set_active(1);
+               if (as.size() > 0) {
+                       video_combo.append_text(_("Do Not Import Video (Audio Import Only)"));
+                       audio_combo.set_sensitive(true);
+               } else {
+                       audio_combo.set_sensitive(false);
+               }
+               video_combo.set_sensitive(true);
+               transcode_button.set_sensitive(true);
+               path_entry.set_sensitive (true);
+               browse_button.set_sensitive (true);
+       } else if (as.size() > 0) {
+               video_combo.append_text(_("Do Not Import Video (Audio Import Only)"));
+               video_combo.set_active(0);
+               path_entry.set_text ("");
+
+               video_combo.set_sensitive(false);
+               audio_combo.set_sensitive(true);
+               transcode_button.set_sensitive(true);
+               path_entry.set_sensitive (false);
+               browse_button.set_sensitive (false);
+       } else {
+               video_combo.append_text(_("Do Not Import Video"));
+               video_combo.set_active(0);
+               path_entry.set_text ("");
                video_combo.set_sensitive(false);
                audio_combo.set_sensitive(false);
+               transcode_button.set_sensitive(false);
+               path_entry.set_sensitive (false);
+               browse_button.set_sensitive (false);
        }
 
        options_box->pack_start (video_combo, false, false, 4);
@@ -225,8 +254,11 @@ TranscodeVideoDialog::TranscodeVideoDialog (Session* s, std::string infile)
        t->attach (*l, 0, 1, 2, 3);
        audio_combo.set_name ("PaddedButton");
        t->attach (audio_combo, 1, 4, 2, 3);
-       audio_combo.append_text("No audio");
-       if (as.size() > 0) {
+       if (as.size() == 0) {
+               audio_combo.append_text(_("No Audio Track Present"));
+               audio_combo.set_sensitive(false);
+       } else {
+               audio_combo.append_text(_("Do Not Extract Audio"));
                for (TranscodeFfmpeg::FFAudioStreams::iterator it = as.begin(); it < as.end(); ++it) {
                        audio_combo.append_text((*it).name);
                }
@@ -301,9 +333,9 @@ void
 TranscodeVideoDialog::finished ()
 {
        if (aborted) {
-               unlink(path_entry.get_text().c_str());
+               ::g_unlink(path_entry.get_text().c_str());
                if (!audiofile.empty()) {
-                       unlink(audiofile.c_str());
+                       ::g_unlink(audiofile.c_str());
                }
                Gtk::Dialog::response(RESPONSE_CANCEL);
        } else {
@@ -364,7 +396,7 @@ TranscodeVideoDialog::dialog_progress_mode ()
 void
 TranscodeVideoDialog::launch_transcode ()
 {
-       if (video_combo.get_active_row_number() != 2) {
+       if (video_combo.get_active_row_number() != 1) {
                launch_audioonly();
                return;
        }
@@ -413,8 +445,8 @@ TranscodeVideoDialog::launch_transcode ()
 void
 TranscodeVideoDialog::video_combo_changed ()
 {
-       int i = video_combo.get_active_row_number();
-       if (i != 2) {
+       const int i = video_combo.get_active_row_number();
+       if (i != 1) {
                scale_combo.set_sensitive(false);
                aspect_checkbox.set_sensitive(false);
                height_spinner.set_sensitive(false);
@@ -427,12 +459,19 @@ TranscodeVideoDialog::video_combo_changed ()
                bitrate_checkbox.set_sensitive(true);
                bitrate_spinner.set_sensitive(true);
        }
+       if (i == 2 && audio_combo.get_active_row_number() == 0) {
+               audio_combo.set_active(1);
+       }
 }
 
 void
 TranscodeVideoDialog::audio_combo_changed ()
 {
-       ;
+       if (video_combo.get_active_row_number() == 2
+                       && audio_combo.get_active_row_number() == 0)
+       {
+               audio_combo.set_active(1);
+       }
 }
 
 void