OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / frmMain.cs
index 6f93416..83ea0de 100644 (file)
@@ -8,14 +8,10 @@ using System;
 using System.Collections;\r
 using System.Collections.Generic;\r
 using System.Drawing;\r
-using System.Text;\r
 using System.Windows.Forms;\r
 using System.IO;\r
 using System.Diagnostics;\r
 using System.Threading;\r
-using System.Runtime.InteropServices;\r
-using System.Globalization;\r
-using System.Text.RegularExpressions;\r
 \r
 namespace Handbrake\r
 {\r
@@ -88,7 +84,7 @@ namespace Handbrake
             loadPresetPanel();                       // Load the Preset Panel\r
             treeView_presets.ExpandAll();\r
             lbl_encode.Text = "";\r
-            queueWindow = new frmQueue(this);        // Prepare the Queue\r
+            queueWindow = new frmQueue(encodeQueue);        // Prepare the Queue\r
             if (Properties.Settings.Default.QueryEditorTab != "Checked")\r
                 tabs_panel.TabPages.RemoveAt(5); // Remove the query editor tab if the user does not want it enabled.\r
 \r
@@ -133,8 +129,7 @@ namespace Handbrake
             this.Enabled = true;\r
 \r
             // Event Handlers\r
-            if (Properties.Settings.Default.MainWindowMinimize == "Checked")\r
-                this.Resize += new EventHandler(frmMain_Resize);\r
+            events();\r
 \r
             // Queue Recovery\r
             queueRecovery();\r
@@ -180,6 +175,34 @@ namespace Handbrake
         }\r
         #endregion\r
 \r
+        #region Events\r
+        // Encoding Events for setting up the GUI\r
+        private void events()\r
+        {\r
+            // Handle Window Resize\r
+            if (Properties.Settings.Default.MainWindowMinimize == "Checked")\r
+                this.Resize += new EventHandler(frmMain_Resize);\r
+\r
+            // Handle Encode Start\r
+            encodeQueue.OnEncodeEnded += new EventHandler(encodeEnded);\r
+            encodeQueue.OnPaused += new EventHandler(encodePaused);\r
+            encodeQueue.OnEncodeStart += new EventHandler(encodeStarted);\r
+        }\r
+        private void encodeStarted(object sender, EventArgs e)\r
+        {\r
+            setLastAction("encode");\r
+            setEncodeStarted();\r
+        }\r
+        private void encodeEnded(object sender, EventArgs e)\r
+        {\r
+            setEncodeFinished();\r
+        }\r
+        private void encodePaused(object sender, EventArgs e)\r
+        {\r
+            setEncodeFinished();\r
+        }\r
+        #endregion\r
+\r
         // User Interface Menus / Tool Strips *********************************\r
 \r
         #region File Menu\r
@@ -192,7 +215,7 @@ namespace Handbrake
         #region Tools Menu\r
         private void mnu_encode_Click(object sender, EventArgs e)\r
         {\r
-            queueWindow.setQueue(encodeQueue);\r
+            queueWindow.setQueue();\r
             queueWindow.Show();\r
         }\r
         private void mnu_encodeLog_Click(object sender, EventArgs e)\r
@@ -208,7 +231,7 @@ namespace Handbrake
         }\r
         private void mnu_options_Click(object sender, EventArgs e)\r
         {\r
-            Form Options = new frmOptions(this);\r
+            Form Options = new frmOptions();\r
             Options.ShowDialog();\r
         }\r
         #endregion\r
@@ -305,6 +328,14 @@ namespace Handbrake
         {\r
             treeView_presets.CollapseAll();\r
         }\r
+        private void pmnu_saveChanges_Click(object sender, EventArgs e)\r
+        {\r
+            DialogResult result = MessageBox.Show("Do you wish to include picture settings when updating the preset: " + treeView_presets.SelectedNode.Text, "Update Preset", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);\r
+            if (result == DialogResult.Yes)\r
+                presetHandler.updatePreset(treeView_presets.SelectedNode.Text, queryGen.generateTabbedComponentsQuery(this), true);\r
+            else if (result == DialogResult.No)\r
+                presetHandler.updatePreset(treeView_presets.SelectedNode.Text, queryGen.generateTabbedComponentsQuery(this), false);\r
+        }\r
         private void pmnu_delete_click(object sender, EventArgs e)\r
         {\r
             if (treeView_presets.SelectedNode != null)\r
@@ -322,6 +353,21 @@ namespace Handbrake
             }\r
             treeView_presets.Select();\r
         }\r
+        private void presets_menu_Opening(object sender, System.ComponentModel.CancelEventArgs e)\r
+        {\r
+            // Make sure that the save menu is always disabled by default\r
+            pmnu_saveChanges.Enabled = false;\r
+\r
+            // Now enable the save menu if the selected preset is a user preset\r
+            if (treeView_presets.SelectedNode != null)\r
+            {\r
+                if (presetHandler.checkIfUserPresetExists(treeView_presets.SelectedNode.Text))\r
+                {\r
+                    pmnu_saveChanges.Enabled = true;\r
+                }\r
+            }\r
+            treeView_presets.Select();\r
+        }\r
 \r
         // Presets Management\r
         private void btn_addPreset_Click(object sender, EventArgs e)\r
@@ -504,6 +550,10 @@ namespace Handbrake
 \r
                 if (result == DialogResult.Yes)\r
                 {\r
+                    // Pause The Queue\r
+                    encodeQueue.pauseEncode();\r
+\r
+                    // Kill the current process.\r
                     Process[] aProc = Process.GetProcessesByName("HandBrakeCLI");\r
                     Process HandBrakeCLI;\r
                     if (aProc.Length > 0)\r
@@ -511,8 +561,9 @@ namespace Handbrake
                         HandBrakeCLI = aProc[0];\r
                         HandBrakeCLI.Kill();\r
                     }\r
-                    if (!queueWindow.isEncoding())\r
-                        setEncodeFinished();\r
+\r
+                    // Update the GUI\r
+                    setEncodeFinished();\r
                 }\r
             }\r
             else\r
@@ -534,13 +585,13 @@ namespace Handbrake
                         encodeQueue.add(query, text_source.Text, text_destination.Text);\r
                         encodeQueue.write2disk("hb_queue_recovery.xml");\r
                     }\r
-                    queueWindow.setQueue(encodeQueue);\r
+                    queueWindow.setQueue();\r
                     if (encodeQueue.count() > 1)\r
                         queueWindow.Show();\r
 \r
-                    queueWindow.frmMain_encode();\r
-\r
                     setEncodeStarted(); // Encode is running, so setup the GUI appropriately\r
+                    encodeQueue.startEncode(); // Start The Queue Encoding Process\r
+\r
                 }\r
                 else if (text_source.Text == string.Empty || text_source.Text == "Click 'Source' to continue" || text_destination.Text == string.Empty)\r
                     MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
@@ -560,13 +611,13 @@ namespace Handbrake
                 encodeQueue.add(query, text_source.Text, text_destination.Text);\r
                 encodeQueue.write2disk("hb_queue_recovery.xml"); // Writes the queue to the recovery file, just incase the GUI crashes.\r
 \r
-                queueWindow.setQueue(encodeQueue);\r
+                queueWindow.setQueue();\r
                 queueWindow.Show();\r
             }\r
         }\r
         private void btn_showQueue_Click(object sender, EventArgs e)\r
         {\r
-            queueWindow.setQueue(encodeQueue);\r
+            queueWindow.setQueue();\r
             queueWindow.Show();\r
         }\r
         private void mnu_vlcpreview_Click(object sender, EventArgs e)\r
@@ -884,15 +935,15 @@ namespace Handbrake
             DVD_Save.FileName = DVD_Save.FileName.Replace(".mp4", "").Replace(".m4v", "").Replace(".mkv", "").Replace(".ogm", "").Replace(".avi", "");\r
 \r
             // Show the dialog and set the main form file path\r
-            if (text_destination.Text.EndsWith(".mp4"))\r
+            if (drop_format.SelectedIndex.Equals(0))\r
                 DVD_Save.FilterIndex = 1;\r
-            else if (text_destination.Text.EndsWith(".m4v"))\r
+            else if (drop_format.SelectedIndex.Equals(1))\r
                 DVD_Save.FilterIndex = 2;\r
-            else if (text_destination.Text.EndsWith(".avi"))\r
+            else if (drop_format.SelectedIndex.Equals(2))\r
                 DVD_Save.FilterIndex = 3;\r
-            else if (text_destination.Text.EndsWith(".ogm"))\r
+            else if (drop_format.SelectedIndex.Equals(3))\r
                 DVD_Save.FilterIndex = 4;\r
-            else if (text_destination.Text.EndsWith(".mkv"))\r
+            else if (drop_format.SelectedIndex.Equals(4))\r
                 DVD_Save.FilterIndex = 5;\r
 \r
             if (DVD_Save.ShowDialog() == DialogResult.OK)\r
@@ -1896,6 +1947,9 @@ namespace Handbrake
 \r
         #endregion\r
 \r
+\r
+\r
+\r
         // This is the END of the road ------------------------------------------------------------------------------\r
     }\r
 }
\ No newline at end of file