OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / frmReadDVD.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.ComponentModel;\r
4 using System.Data;\r
5 using System.Drawing;\r
6 using System.Text;\r
7 using System.Windows.Forms;\r
8 using System.IO;\r
9 using System.Threading;\r
10 \r
11 \r
12 namespace Handbrake\r
13 {\r
14     public partial class frmReadDVD : Form\r
15     {\r
16         private string inputFile;\r
17         private frmMain mainWindow;\r
18         private Parsing.DVD thisDvd;\r
19         private delegate void UpdateUIHandler();\r
20 \r
21         public frmReadDVD(string inputFile, frmMain parent)\r
22         {\r
23             InitializeComponent();\r
24             this.inputFile = inputFile;\r
25             this.mainWindow = parent;\r
26         }\r
27 \r
28         private void btn_ok_Click(object sender, EventArgs e)\r
29         {\r
30             lbl_status.Visible = true;\r
31             btn_ok.Enabled = false;\r
32             lbl_pressOk.Visible = false;\r
33             // throw cli call and parsing on it's own thread\r
34             ThreadPool.QueueUserWorkItem(startProc);\r
35         }\r
36 \r
37         private void updateUIElements()\r
38         {\r
39             if (this.InvokeRequired)\r
40             {\r
41                 this.BeginInvoke(new UpdateUIHandler(updateUIElements));\r
42                 return;\r
43             }\r
44             // Now pass this streamreader to frmMain so that it can be used there.\r
45             mainWindow.setStreamReader(thisDvd);\r
46 \r
47             mainWindow.drp_dvdtitle.Items.Clear();\r
48             mainWindow.drp_dvdtitle.Items.AddRange(thisDvd.Titles.ToArray());\r
49             this.Close();\r
50         }\r
51 \r
52         private void startProc(object state)\r
53         {\r
54             string query = "-i " + '"' + inputFile + '"' + " -t0";\r
55             System.Diagnostics.Process hbProc = new System.Diagnostics.Process();\r
56             hbProc.StartInfo.FileName = "hbcli.exe";\r
57             hbProc.StartInfo.RedirectStandardOutput = true;\r
58             hbProc.StartInfo.RedirectStandardError = true;\r
59             hbProc.StartInfo.Arguments = query;\r
60             hbProc.StartInfo.UseShellExecute = false;\r
61             hbProc.StartInfo.CreateNoWindow = true;\r
62 \r
63             hbProc.Start();\r
64             Parsing.Parser readData = new Parsing.Parser(hbProc.StandardError.BaseStream);\r
65             hbProc.WaitForExit();\r
66             hbProc.Close();\r
67 \r
68             // Setup the parser\r
69             thisDvd = Parsing.DVD.Parse(readData);\r
70 \r
71             updateUIElements();\r
72         }\r
73 \r
74         private void frmReadDVD_Load(object sender, EventArgs e)\r
75         {\r
76 \r
77         }\r
78     }\r
79 }