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 using System.Diagnostics;\r
11 \r
12 \r
13 namespace Handbrake\r
14 {\r
15     public partial class frmReadDVD : Form\r
16     {\r
17         private string inputFile;\r
18         private frmMain mainWindow;\r
19         private frmDvdInfo dvdInfo;\r
20         private Parsing.DVD thisDvd;\r
21         private delegate void UpdateUIHandler();\r
22 \r
23         public frmReadDVD(string inputFile, frmMain parent, frmDvdInfo dvdInfoWindow)\r
24         {\r
25             InitializeComponent();\r
26             this.inputFile = inputFile;\r
27             this.mainWindow = parent;\r
28             this.dvdInfo = dvdInfoWindow;\r
29         }\r
30 \r
31         private void btn_ok_Click(object sender, EventArgs e)\r
32         {\r
33             lbl_status.Visible = true;\r
34             btn_ok.Enabled = false;\r
35             lbl_pressOk.Visible = false;\r
36             // throw cli call and parsing on it's own thread\r
37             ThreadPool.QueueUserWorkItem(startProc);\r
38         }\r
39      \r
40         private void updateUIElements()\r
41         {\r
42             if (this.InvokeRequired)\r
43             {\r
44                 this.BeginInvoke(new UpdateUIHandler(updateUIElements));\r
45                 return;\r
46             }\r
47             // Now pass this streamreader to frmMain so that it can be used there.\r
48             mainWindow.setStreamReader(thisDvd);\r
49 \r
50             mainWindow.drp_dvdtitle.Items.Clear();\r
51             mainWindow.drp_dvdtitle.Items.AddRange(thisDvd.Titles.ToArray());\r
52 \r
53             // Just a quick test to see if data can be pushed to frmDvdInfo.\r
54             // What needs to happen here is the plaintext outout needs to be sent to the frmDvdInfo.\r
55             dvdInfo.rtf_dvdInfo.Text = thisDvd.ToString();\r
56 \r
57             this.Close();\r
58         }\r
59 \r
60         private void startProc(object state)\r
61         {\r
62             string query = "-i " + '"' + inputFile + '"' + " -t0";\r
63           \r
64             Functions.CLI process = new Functions.CLI();\r
65             Process hbProc = process.runCli(this, query, true, true, false, true);\r
66 \r
67             Parsing.Parser readData = new Parsing.Parser(hbProc.StandardError.BaseStream);\r
68             hbProc.WaitForExit();\r
69             hbProc.Close();\r
70 \r
71             // Setup the parser\r
72             thisDvd = Parsing.DVD.Parse(readData);\r
73 \r
74             updateUIElements();\r
75         }\r
76 \r
77     }\r
78 }