OSDN Git Service

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