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 Process hbProc;\r
22         private delegate void UpdateUIHandler();\r
23         //private int cancel = 0;\r
24 \r
25         public frmReadDVD(string inputFile, frmMain parent, frmDvdInfo dvdInfoWindow)\r
26         {\r
27             InitializeComponent();\r
28             this.inputFile = inputFile;\r
29             this.mainWindow = parent;\r
30             this.dvdInfo = dvdInfoWindow;\r
31         }\r
32 \r
33         private void btn_ok_Click(object sender, EventArgs e)\r
34         {\r
35       \r
36             try\r
37             {\r
38                 btn_ok.Enabled = false;\r
39                 //btn_skip.Visible = true;\r
40                 lbl_pressOk.Visible = false;\r
41                 lbl_progress.Text = "0%";\r
42                 //lbl_progress.Visible = true;\r
43                 lbl_status.Visible = true;\r
44                 // throw cli call and parsing on it's own thread\r
45                 ThreadPool.QueueUserWorkItem(startProc);\r
46             }\r
47             catch(Exception exc)\r
48             {\r
49                 MessageBox.Show(exc.ToString());\r
50             }\r
51         }\r
52      \r
53         private void updateUIElements()\r
54         {\r
55             try\r
56             {\r
57                 if (this.InvokeRequired)\r
58                 {\r
59                     this.BeginInvoke(new UpdateUIHandler(updateUIElements));\r
60                     return;\r
61                 }\r
62                 // Now pass this streamreader to frmMain so that it can be used there.\r
63                 mainWindow.setStreamReader(thisDvd);\r
64 \r
65                 mainWindow.drp_dvdtitle.Items.Clear();\r
66                 mainWindow.drp_dvdtitle.Items.AddRange(thisDvd.Titles.ToArray());\r
67 \r
68                 this.Close();\r
69             }\r
70             catch(Exception exc)\r
71             {\r
72                 MessageBox.Show(exc.ToString());\r
73             }\r
74         }\r
75 \r
76         Functions.CLI process = new Functions.CLI();\r
77         private void startProc(object state)\r
78         {\r
79             //string query = "-i " + '"' + inputFile + '"' + " -t0";\r
80             // hbProc = process.runCli(this, query, true, true, false, true);\r
81 \r
82             //*********************************************************************************************************************************************\r
83             /*\r
84              * Quick and Dirty hack to get around the stderr crashes of hbcli. Lets try feeding brians parser text straight from a text file.\r
85              */\r
86             try\r
87             {\r
88                 string appPath = Application.StartupPath.ToString();\r
89                 appPath = appPath + "\\";\r
90                 string strCmdLine = "cmd /c " + '"' + '"' + appPath + "\\hbcli.exe" + '"' +  " -i" + '"' + inputFile + '"' + " -t0 >" + '"'+ appPath + "\\dvdinfo.dat" + '"' + " 2>&1" + '"';\r
91                 Process hbproc = Process.Start("CMD.exe", strCmdLine);\r
92                 hbproc.WaitForExit();\r
93                 hbproc.Dispose();\r
94                 hbproc.Close();\r
95 \r
96           \r
97                 StreamReader sr = new StreamReader(appPath + "dvdinfo.dat");\r
98                 thisDvd = Parsing.DVD.Parse(sr);\r
99 \r
100                 sr.Close();\r
101 \r
102                 Console.ReadLine();\r
103 \r
104                 updateUIElements();\r
105             }\r
106             catch (Exception exc)\r
107             {\r
108                 MessageBox.Show(exc.ToString());\r
109             }\r
110 \r
111         }\r
112 \r
113             //*********************************************************************************************************************************************\r
114             /*\r
115              * This has been temporily disabled due to the stderr issue\r
116              * \r
117              * \r
118             Parsing.Parser readData = new Parsing.Parser(hbProc.StandardError.BaseStream);\r
119             readData.OnScanProgress += Parser_OnScanProgress;\r
120             readData.OnReadLine += dvdInfo.HandleParsedData;\r
121             readData.OnReadToEnd += dvdInfo.HandleParsedData;\r
122 \r
123             // Setup the parser\r
124             \r
125 \r
126             if (cancel != 1)\r
127             {\r
128                 updateUIElements();\r
129                 process.killCLI();\r
130                 process.closeCLI();\r
131             }\r
132             */\r
133             //*********************************************************************************************************************************************\r
134 \r
135 \r
136         /*private void Parser_OnScanProgress(object Sender, int CurrentTitle, int TitleCount)\r
137         {\r
138             if (this.InvokeRequired)\r
139             {\r
140                 this.BeginInvoke(new Parsing.ScanProgressEventHandler(Parser_OnScanProgress), new object[] { Sender, CurrentTitle, TitleCount });\r
141                 return;\r
142             }\r
143             int progress = Convert.ToInt32(Convert.ToDouble(CurrentTitle) / Convert.ToDouble(TitleCount) * 100) + 1;\r
144             if (progress > 100)\r
145             {\r
146                 progress = 100;\r
147             }\r
148             this.lbl_progress.Text = progress.ToString() + "%";\r
149         }*/\r
150 \r
151         private void btn_skip_Click(object sender, EventArgs e)\r
152         {\r
153             try\r
154             {\r
155                 this.Close();\r
156                 //cancel = 1;\r
157             }\r
158             catch (Exception exc)\r
159             {\r
160                 MessageBox.Show(exc.ToString());\r
161             }\r
162         }\r
163     }\r
164 }