using System.Windows.Forms;\r
using System.IO;\r
using System.Threading;\r
+using System.Diagnostics;\r
\r
\r
namespace Handbrake\r
{\r
private string inputFile;\r
private frmMain mainWindow;\r
+ private frmDvdInfo dvdInfo;\r
private Parsing.DVD thisDvd;\r
+ private Process hbProc;\r
private delegate void UpdateUIHandler();\r
\r
- public frmReadDVD(string inputFile, frmMain parent)\r
+ public frmReadDVD(string inputFile, frmMain parent, frmDvdInfo dvdInfoWindow)\r
{\r
InitializeComponent();\r
this.inputFile = inputFile;\r
this.mainWindow = parent;\r
+ this.dvdInfo = dvdInfoWindow;\r
+ startScan();\r
+ \r
}\r
\r
- private void btn_ok_Click(object sender, EventArgs e)\r
+ private void startScan()\r
{\r
- lbl_status.Visible = true;\r
- btn_ok.Enabled = false;\r
- lbl_pressOk.Visible = false;\r
- // throw cli call and parsing on it's own thread\r
- ThreadPool.QueueUserWorkItem(startProc);\r
+ try\r
+ {\r
+ //btn_skip.Visible = true;\r
+ lbl_progress.Text = "0%";\r
+ //lbl_progress.Visible = true;\r
+ lbl_status.Visible = true;\r
+ // throw cli call and parsing on it's own thread\r
+ ThreadPool.QueueUserWorkItem(startProc);\r
+ }\r
+ catch (Exception exc)\r
+ {\r
+ if (Properties.Settings.Default.GuiDebug == "Checked")\r
+ {\r
+ MessageBox.Show("frmReadDVD.cs - startScan " + exc.ToString());\r
+ }\r
+ else\r
+ {\r
+ MessageBox.Show(Properties.Settings.Default.defaultError.ToString());\r
+ }\r
+ }\r
}\r
-\r
+ \r
private void updateUIElements()\r
{\r
- if (this.InvokeRequired)\r
+ try\r
{\r
- this.BeginInvoke(new UpdateUIHandler(updateUIElements));\r
- return;\r
- }\r
- // Now pass this streamreader to frmMain so that it can be used there.\r
- mainWindow.setStreamReader(thisDvd);\r
+ if (this.InvokeRequired)\r
+ {\r
+ this.BeginInvoke(new UpdateUIHandler(updateUIElements));\r
+ return;\r
+ }\r
+ // Now pass this streamreader to frmMain so that it can be used there.\r
+ mainWindow.setStreamReader(thisDvd);\r
\r
- mainWindow.drp_dvdtitle.Items.Clear();\r
- mainWindow.drp_dvdtitle.Items.AddRange(thisDvd.Titles.ToArray());\r
- this.Close();\r
+ mainWindow.drp_dvdtitle.Items.Clear();\r
+ mainWindow.drp_dvdtitle.Items.AddRange(thisDvd.Titles.ToArray());\r
+ mainWindow.drp_dvdtitle.Text = "Automatic";\r
+ mainWindow.drop_chapterFinish.Text = "Auto";\r
+ mainWindow.drop_chapterStart.Text = "Auto";\r
+ \r
+ this.Close();\r
+ }\r
+ catch(Exception exc)\r
+ {\r
+ if (Properties.Settings.Default.GuiDebug == "Checked")\r
+ {\r
+ MessageBox.Show("frmReadDVD.cs - updateUIElements " + exc.ToString());\r
+ }\r
+ else\r
+ {\r
+ MessageBox.Show(Properties.Settings.Default.defaultError.ToString());\r
+ }\r
+ }\r
}\r
\r
+ Functions.CLI process = new Functions.CLI();\r
+\r
private void startProc(object state)\r
{\r
- string query = "-i " + '"' + inputFile + '"' + " -t0";\r
- System.Diagnostics.Process hbProc = new System.Diagnostics.Process();\r
- hbProc.StartInfo.FileName = "hbcli.exe";\r
- hbProc.StartInfo.RedirectStandardOutput = true;\r
- hbProc.StartInfo.RedirectStandardError = true;\r
- hbProc.StartInfo.Arguments = query;\r
- hbProc.StartInfo.UseShellExecute = false;\r
- hbProc.StartInfo.CreateNoWindow = true;\r
-\r
- hbProc.Start();\r
+ //string query = "-i " + '"' + inputFile + '"' + " -t0";\r
+ // hbProc = process.runCli(this, query, true, true, false, true);\r
+\r
+ try\r
+ {\r
+ string appPath = Application.StartupPath.ToString()+ "\\";\r
+ string strCmdLine = "cmd /c " + '"' + '"' + appPath + "hbcli.exe" + '"' + " -i " + '"' + inputFile + '"' + " -t0 >" + '"'+ appPath + "dvdinfo.dat" + '"' + " 2>&1" + '"';\r
+ Process hbproc = Process.Start("CMD.exe", strCmdLine);\r
+ hbproc.WaitForExit();\r
+ hbproc.Dispose();\r
+ hbproc.Close();\r
+\r
+ \r
+ StreamReader sr = new StreamReader(appPath + "dvdinfo.dat");\r
+ thisDvd = Parsing.DVD.Parse(sr);\r
+ sr.Close();\r
+\r
+ updateUIElements();\r
+ }\r
+ catch (Exception exc)\r
+ {\r
+ if (Properties.Settings.Default.GuiDebug == "Checked")\r
+ {\r
+ MessageBox.Show("frmReadDVD.cs - startProc " + exc.ToString());\r
+ }\r
+ else\r
+ {\r
+ MessageBox.Show(Properties.Settings.Default.defaultError.ToString());\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ //*********************************************************************************************************************************************\r
+ /*\r
+ * This has been temporily disabled due to the stderr issue\r
+ * \r
+ * \r
Parsing.Parser readData = new Parsing.Parser(hbProc.StandardError.BaseStream);\r
- hbProc.WaitForExit();\r
- hbProc.Close();\r
+ readData.OnScanProgress += Parser_OnScanProgress;\r
+ readData.OnReadLine += dvdInfo.HandleParsedData;\r
+ readData.OnReadToEnd += dvdInfo.HandleParsedData;\r
\r
// Setup the parser\r
- thisDvd = Parsing.DVD.Parse(readData);\r
+ \r
\r
- updateUIElements();\r
- }\r
+ if (cancel != 1)\r
+ {\r
+ updateUIElements();\r
+ process.killCLI();\r
+ process.closeCLI();\r
+ }\r
+ */\r
+ //*********************************************************************************************************************************************\r
\r
- private void frmReadDVD_Load(object sender, EventArgs e)\r
+\r
+ /*private void Parser_OnScanProgress(object Sender, int CurrentTitle, int TitleCount)\r
{\r
+ if (this.InvokeRequired)\r
+ {\r
+ this.BeginInvoke(new Parsing.ScanProgressEventHandler(Parser_OnScanProgress), new object[] { Sender, CurrentTitle, TitleCount });\r
+ return;\r
+ }\r
+ int progress = Convert.ToInt32(Convert.ToDouble(CurrentTitle) / Convert.ToDouble(TitleCount) * 100) + 1;\r
+ if (progress > 100)\r
+ {\r
+ progress = 100;\r
+ }\r
+ this.lbl_progress.Text = progress.ToString() + "%";\r
+ }*/\r
\r
- }\r
}\r
}
\ No newline at end of file