diff options
author | sr55 <[email protected]> | 2009-05-23 14:57:00 +0000 |
---|---|---|
committer | sr55 <[email protected]> | 2009-05-23 14:57:00 +0000 |
commit | ee294958088a96ca232a1334eea6542dd7e30d60 (patch) | |
tree | 56fd62f1f300c731ee3316b52a8d65dc247bc695 /win/C#/Functions | |
parent | b1ef4b866e0a29e3274d521eb0b768d48195fc9e (diff) |
WinGui:WinGui:
- Stop button, now allows the CLI to cleanly exit by sending ctrl-c rather than killing the process.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2444 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/C#/Functions')
-rw-r--r-- | win/C#/Functions/Encode.cs | 218 | ||||
-rw-r--r-- | win/C#/Functions/Main.cs | 5 |
2 files changed, 3 insertions, 220 deletions
diff --git a/win/C#/Functions/Encode.cs b/win/C#/Functions/Encode.cs deleted file mode 100644 index 8d93b780c..000000000 --- a/win/C#/Functions/Encode.cs +++ /dev/null @@ -1,218 +0,0 @@ -/* Encode.cs $
-
- This file is part of the HandBrake source code.
- Homepage: <http://handbrake.fr>.
- It may be used under the terms of the GNU General Public License. */
-
-using System;
-using System.Diagnostics;
-using System.Windows.Forms;
-using System.IO;
-using System.Runtime.InteropServices;
-
-namespace Handbrake.Functions
-{
- public class Encode
- {
- // DLL Imports
- [DllImport("user32.dll")]
- private static extern void LockWorkStation();
- [DllImport("user32.dll")]
- private static extern int ExitWindowsEx(int uFlags, int dwReason);
-
- /// <summary>
- /// Execute a HandBrakeCLI process.
- /// </summary>
- /// <param name="query">The CLI Query</param>
- public Process runCli(string query)
- {
- Process hbProc = new Process();
- try
- {
- string handbrakeCLIPath = Path.Combine(Application.StartupPath, "HandBrakeCLI.exe");
- string logDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HandBrake\\logs";
- string logPath = Path.Combine(logDir, "last_encode_log.txt");
- string strCmdLine = String.Format(@" CMD /c """"{0}"" {1} 2>""{2}"" """, handbrakeCLIPath, query, logPath);
-
- ProcessStartInfo cliStart = new ProcessStartInfo("CMD.exe", strCmdLine);
- if (Properties.Settings.Default.enocdeStatusInGui == "Checked")
- {
- cliStart.RedirectStandardOutput = true;
- cliStart.UseShellExecute = false;
- }
- if (Properties.Settings.Default.cli_minimized == "Checked")
- cliStart.WindowStyle = ProcessWindowStyle.Minimized;
-
- Process[] before = Process.GetProcesses(); // Get a list of running processes before starting.
- hbProc = Process.Start(cliStart);
- processID = Main.getCliProcess(before);
- isEncoding = true;
- currentQuery = query;
-
- // Set the process Priority
- Process hbCliProcess = null;
- if (processID != -1)
- hbCliProcess = Process.GetProcessById(processID);
-
- if (hbCliProcess != null)
- switch (Properties.Settings.Default.processPriority)
- {
- case "Realtime":
- hbCliProcess.PriorityClass = ProcessPriorityClass.RealTime;
- break;
- case "High":
- hbCliProcess.PriorityClass = ProcessPriorityClass.High;
- break;
- case "Above Normal":
- hbCliProcess.PriorityClass = ProcessPriorityClass.AboveNormal;
- break;
- case "Normal":
- hbCliProcess.PriorityClass = ProcessPriorityClass.Normal;
- break;
- case "Low":
- hbCliProcess.PriorityClass = ProcessPriorityClass.Idle;
- break;
- default:
- hbCliProcess.PriorityClass = ProcessPriorityClass.BelowNormal;
- break;
- }
- }
- catch (Exception exc)
- {
- MessageBox.Show("An error occured in runCli()\n Error Information: \n\n" + exc);
- }
-
- return hbProc;
- }
-
- /// <summary>
- /// Kill the CLI process
- /// </summary>
- public void closeCLI()
- {
- Process[] prs = Process.GetProcesses();
- foreach (Process process in prs)
- {
- if (process.Id == processID)
- {
- process.Refresh();
- if (!process.HasExited)
- process.Kill();
-
- process.WaitForExit();
- }
- }
- }
-
- /// <summary>
- /// Perform an action after an encode. e.g a shutdown, standby, restart etc.
- /// </summary>
- public void afterEncodeAction()
- {
- isEncoding = false;
- currentQuery = String.Empty;
- // Do something whent he encode ends.
- switch (Properties.Settings.Default.CompletionOption)
- {
- case "Shutdown":
- Process.Start("Shutdown", "-s -t 60");
- break;
- case "Log Off":
- ExitWindowsEx(0, 0);
- break;
- case "Suspend":
- Application.SetSuspendState(PowerState.Suspend, true, true);
- break;
- case "Hibernate":
- Application.SetSuspendState(PowerState.Hibernate, true, true);
- break;
- case "Lock System":
- LockWorkStation();
- break;
- case "Quit HandBrake":
- Application.Exit();
- break;
- default:
- break;
- }
- }
-
- /// <summary>
- /// Append the CLI query to the start of the log file.
- /// </summary>
- /// <param name="query"></param>
- public void addCLIQueryToLog(string query)
- {
- string logDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HandBrake\\logs";
- string logPath = Path.Combine(logDir, "last_encode_log.txt");
-
- StreamReader reader = new StreamReader(File.Open(logPath, FileMode.Open, FileAccess.Read));
- String log = reader.ReadToEnd();
- reader.Close();
-
- StreamWriter writer = new StreamWriter(File.Create(logPath));
-
- writer.Write("### CLI Query: " + query + "\n\n");
- writer.Write("#########################################\n\n");
- writer.WriteLine(log);
- writer.Flush();
- writer.Close();
- }
-
- /// <summary>
- /// Save a copy of the log to the users desired location or a default location
- /// if this feature is enabled in options.
- /// </summary>
- /// <param name="destination"></param>
- public void copyLog(string destination)
- {
- try
- {
- string logDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HandBrake\\logs";
- string tempLogFile = Path.Combine(logDir, "last_encode_log.txt");
-
- string encodeDestinationPath = Path.GetDirectoryName(destination);
- String[] destName = destination.Split('\\');
- string destinationFile = destName[destName.Length - 1];
- string encodeLogFile = DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + " " + destinationFile + ".txt";
-
- // Make sure the log directory exists.
- if (!Directory.Exists(logDir))
- Directory.CreateDirectory(logDir);
-
- // Copy the Log to HandBrakes log folder in the users applciation data folder.
- File.Copy(tempLogFile, Path.Combine(logDir, encodeLogFile));
-
- // Save a copy of the log file in the same location as the enocde.
- if (Properties.Settings.Default.saveLogWithVideo == "Checked")
- File.Copy(tempLogFile, Path.Combine(encodeDestinationPath, encodeLogFile));
-
- // Save a copy of the log file to a user specified location
- if (Directory.Exists(Properties.Settings.Default.saveLogPath))
- if (Properties.Settings.Default.saveLogPath != String.Empty && Properties.Settings.Default.saveLogToSpecifiedPath == "Checked")
- File.Copy(tempLogFile, Path.Combine(Properties.Settings.Default.saveLogPath, encodeLogFile));
- }
- catch (Exception exc)
- {
- MessageBox.Show("Something went a bit wrong trying to copy your log file.\nError Information:\n\n" + exc, "Error",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
-
- /// <summary>
- /// Returns whether HandBrake is currently encoding or not.
- /// </summary>
- public Boolean isEncoding { get; set; }
-
- /// <summary>
- /// Returns the currently encoding query string
- /// </summary>
- public String currentQuery { get; set; }
-
- /// <summary>
- /// Get the process ID of the current encode.
- /// </summary>
- public int processID { get; set; }
-
- }
-}
diff --git a/win/C#/Functions/Main.cs b/win/C#/Functions/Main.cs index a95f5e144..be46465d4 100644 --- a/win/C#/Functions/Main.cs +++ b/win/C#/Functions/Main.cs @@ -12,13 +12,14 @@ using System.Text.RegularExpressions; using System.Collections.Generic;
using System.Xml.Serialization;
using System.Threading;
+using Handbrake.EncodeQueue;
namespace Handbrake.Functions
{
static class Main
{
// Private Variables
- private static readonly XmlSerializer ser = new XmlSerializer(typeof(List<Queue.QueueItem>));
+ private static readonly XmlSerializer ser = new XmlSerializer(typeof(List<QueueItem>));
/// <summary>
/// Calculate the duration of the selected title and chapters
@@ -358,7 +359,7 @@ namespace Handbrake.Functions {
using (FileStream strm = new FileStream(tempPath, FileMode.Open, FileAccess.Read))
{
- List<Queue.QueueItem> list = ser.Deserialize(strm) as List<Queue.QueueItem>;
+ List<QueueItem> list = ser.Deserialize(strm) as List<QueueItem>;
if (list != null)
if (list.Count != 0)
return true;
|