1 /////////////////////////////////////////////////////////////////////////////
2 // Name: ProcessPreview.cpp
3 // Author: Alex Thuering
4 // Created: 3.10.2014 (refactored)
5 // RCS-ID: $Id: ProcessPreview.cpp,v 1.6 2016/08/21 13:36:55 ntalex Exp $
6 // Copyright: (c) Alex Thuering
7 // Licence: GPL
8 /////////////////////////////////////////////////////////////////////////////
9
10 #include "ProcessPreview.h"
11 #include "Config.h"
12 #include "ProgressDlg.h"
13 #include "BurnDlg.h"
14 #include <wx/msgdlg.h>
15
16 /** Constructor */
ProcessPreview(ProgressDlg * progressDlg,BurnDlg * burnDlg,const wxString & dvdOutDir)17 ProcessPreview::ProcessPreview(ProgressDlg* progressDlg, BurnDlg* burnDlg, const wxString& dvdOutDir): Process(progressDlg) {
18 this->burnDlg = burnDlg;
19 this->dvdOutDir = dvdOutDir;
20 }
21
22 /** Returns true, if process need be executed */
IsNeedExecute()23 bool ProcessPreview::IsNeedExecute() {
24 return burnDlg->DoPreview() && !progressDlg->DoShutdown();
25 }
26
27 /** Returns true, if gauge need be updated */
IsUpdateGauge()28 bool ProcessPreview::IsUpdateGauge() {
29 return false;
30 }
31
32 /** Executes process */
Execute()33 bool ProcessPreview::Execute() {
34 if (progressDlg->WasCanceled())
35 return false;
36 progressDlg->AddSummaryMsg(_("Start preview"));
37 wxString cmd = s_config.GetPreviewCmd();
38 if (cmd == wxT("wmplayer")) {
39 cmd = wxT("start wmplayer \"$DIR\\VIDEO_TS\\VIDEO_TS.VOB\"");
40 cmd.Replace(wxT("$DIR"), dvdOutDir.Mid(0, dvdOutDir.length() - 1));
41 if (!wxShell(cmd)) {
42 wxString msg = _("Starting of selected DVD player is failed. \
43 Please open the following directory with your favorite DVD player: ");
44 msg += dvdOutDir;
45 wxMessageBox(msg, _("Burn"), wxOK|wxICON_ERROR, progressDlg);
46 }
47 } else if (cmd.StartsWith(wxT("/Applications/VLC.app/Contents/MacOS/VLC"))) {
48 if (!wxFileExists(wxT("/Applications/VLC.app/Contents/MacOS/VLC"))) {
49 wxString msg = _("VLC player is not found. \
50 Please install VLC player (http://www.videolan.org) in Applications directory \
51 or open the following directory with your favorite DVD player: ");
52 msg += dvdOutDir;
53 wxMessageBox(msg, _("Burn"), wxOK|wxICON_ERROR, progressDlg);
54 } else {
55 cmd += wxT(" \"dvd:///$DIR\"");
56 cmd.Replace(wxT("$DIR"), dvdOutDir.Mid(0, dvdOutDir.length() - 1));
57 if (wxExecute(cmd, wxEXEC_ASYNC) < 0) {
58 wxString msg = _("Starting of selected DVD player is failed. \
59 Please open the following directory with your favorite DVD player: ");
60 msg += dvdOutDir;
61 wxMessageBox(msg, _("Burn"), wxOK|wxICON_ERROR, progressDlg);
62 }
63 }
64 } else {
65 if (cmd.Find(wxT("%1")) > 0) {
66 cmd.Replace(wxT("%1"), wxT("$DIR"));
67 } else if (cmd.Find(wxT("$DIR")) < 0) {
68 if (cmd[0] != wxT('"'))
69 cmd = wxT('"') + cmd + wxT('"');
70 if (cmd.Find(wxT("wmplayer")) >= 0)
71 cmd += wxT(" \"$DIR\\VIDEO_TS\\VIDEO_TS.VOB\"");
72 else if (cmd.Find(wxT("mpc-hc")) >= 0)
73 cmd += wxT(" /dvd \"$DIR\"");
74 else
75 cmd += wxT(" \"dvd:///$DIR\"");
76 }
77 cmd.Replace(wxT("$DIR"), dvdOutDir.Mid(0, dvdOutDir.length() - 1));
78 if (!ExecAsync(cmd)) {
79 wxString msg = _("Starting of selected DVD player is failed. \
80 Please open the following directory with your favorite DVD player: ");
81 msg += dvdOutDir;
82 wxMessageBox(msg, _("Burn"), wxOK|wxICON_ERROR, progressDlg);
83 }
84 }
85 if (burnDlg->DoBurn() || burnDlg->DoCreateIso()) {
86 wxString msg = burnDlg->DoBurn() ? _("Do you want to burn this video to DVD?") : _("Do you want to create an iso image of this video?");
87 if (wxMessageBox(msg, _("Burn"), wxYES_NO|wxICON_QUESTION, progressDlg) == wxNO) {
88 progressDlg->AddSummaryMsg(_("Aborted"), wxEmptyString, *wxRED);
89 return false;
90 }
91 }
92 return true;
93 }
94