OSDN Git Service

516f746bb81c024cdfa2b3a4d5842fe6a894c608
[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             startScan();\r
30             \r
31         }\r
32 \r
33         private void startScan()\r
34         {\r
35             try\r
36             {\r
37                 lbl_status.Visible = true;\r
38                 ThreadPool.QueueUserWorkItem(startProc);\r
39             }\r
40             catch (Exception exc)\r
41             {\r
42                 if (Properties.Settings.Default.GuiDebug == "Checked")\r
43                 {\r
44                     MessageBox.Show("frmReadDVD.cs - startScan " + exc.ToString());\r
45                 }\r
46                 else\r
47                 {\r
48                     MessageBox.Show(Properties.Settings.Default.defaultError.ToString());\r
49                 }\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                 mainWindow.drp_dvdtitle.Text = "Automatic";\r
68                 mainWindow.drop_chapterFinish.Text = "Auto";\r
69                 mainWindow.drop_chapterStart.Text = "Auto";\r
70   \r
71                 this.Close();\r
72             }\r
73             catch(Exception exc)\r
74             {\r
75                 if (Properties.Settings.Default.GuiDebug == "Checked")\r
76                 {\r
77                     MessageBox.Show("frmReadDVD.cs - updateUIElements " + exc.ToString());\r
78                 }\r
79                 else\r
80                 {\r
81                     MessageBox.Show(Properties.Settings.Default.defaultError.ToString());\r
82                 }\r
83             }\r
84         }\r
85 \r
86         Functions.CLI process = new Functions.CLI();\r
87 \r
88         private void startProc(object state)\r
89         {\r
90             try\r
91             {\r
92                 string appPath = Application.StartupPath.ToString()+ "\\";\r
93                 string strCmdLine = "cmd /c " + '"' + '"' + appPath + "HandBrakeCLI.exe" + '"' + " -i " + '"' + inputFile + '"' + " -t0 >" + '"' + appPath + "dvdinfo.dat" + '"' + " 2>&1" + '"';\r
94                 Process hbproc = Process.Start("CMD.exe", strCmdLine);\r
95                 hbproc.WaitForExit();\r
96                 hbproc.Dispose();\r
97                 hbproc.Close();\r
98 \r
99           \r
100                 StreamReader sr = new StreamReader(appPath + "dvdinfo.dat");\r
101                 thisDvd = Parsing.DVD.Parse(sr);\r
102                 sr.Close();\r
103 \r
104                 updateUIElements();\r
105             }\r
106             catch (Exception exc)\r
107             {\r
108                 if (Properties.Settings.Default.GuiDebug == "Checked")\r
109                 {\r
110                     MessageBox.Show("frmReadDVD.cs - startProc " + exc.ToString());\r
111                 }\r
112                 else\r
113                 {\r
114                     MessageBox.Show(Properties.Settings.Default.defaultError.ToString());\r
115                 }\r
116             }\r
117 \r
118         }\r
119     }\r
120 }