diff options
author | sr55 <[email protected]> | 2010-02-26 22:49:18 +0000 |
---|---|---|
committer | sr55 <[email protected]> | 2010-02-26 22:49:18 +0000 |
commit | 9e08a2bc781b020f15d477ae2d89da669d4743b1 (patch) | |
tree | 55792d64908f1930385ed9416eab392635bcfce5 | |
parent | 16f7933765671ab563d17620b071cdaf99d98bbf (diff) |
WinGui:
- Fixed some issues with the DirectRun() Code and implemented some standard input / error readers received events / handlers
- Moved some code around. EncodeQueue is now a services layer
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3141 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | win/C#/EncodeQueue/Encode.cs | 401 | ||||
-rw-r--r-- | win/C#/EncodeQueue/Queue.cs | 382 | ||||
-rw-r--r-- | win/C#/Functions/Scan.cs | 182 | ||||
-rw-r--r-- | win/C#/HandBrakeCS.csproj | 10 | ||||
-rw-r--r-- | win/C#/Model/Job.cs (renamed from win/C#/EncodeQueue/Job.cs) | 3 | ||||
-rw-r--r-- | win/C#/frmActivityWindow.cs | 27 | ||||
-rw-r--r-- | win/C#/frmMain.Designer.cs | 2 | ||||
-rw-r--r-- | win/C#/frmMain.cs | 2 | ||||
-rw-r--r-- | win/C#/frmPreview.cs | 2 | ||||
-rw-r--r-- | win/C#/frmQueue.cs | 2 |
10 files changed, 38 insertions, 975 deletions
diff --git a/win/C#/EncodeQueue/Encode.cs b/win/C#/EncodeQueue/Encode.cs deleted file mode 100644 index 2d788b710..000000000 --- a/win/C#/EncodeQueue/Encode.cs +++ /dev/null @@ -1,401 +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. */
-
-namespace Handbrake.EncodeQueue
-{
- using System;
- using System.Diagnostics;
- using System.IO;
- using System.Windows.Forms;
- using Functions;
- using Properties;
-
- /// <summary>
- /// Class which handles the CLI
- /// </summary>
- public class Encode
- {
- /// <summary>
- /// Fires when a new CLI Job starts
- /// </summary>
- public event EventHandler EncodeStarted;
-
- /// <summary>
- /// Fires when a CLI job finishes.
- /// </summary>
- public event EventHandler EncodeEnded;
-
- /// <summary>
- /// Gets or sets The HB Process
- /// </summary>
- public Process HbProcess { get; set; }
-
- /// <summary>
- /// Gets or sets The Process Handle
- /// </summary>
- public IntPtr ProcessHandle { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether HandBrakeCLI.exe is running
- /// </summary>
- public bool IsEncoding { get; set; }
-
- /// <summary>
- /// Gets or sets the Process ID
- /// </summary>
- private int ProcessID { get; set; }
-
- /// <summary>
- /// Create a preview sample video
- /// </summary>
- /// <param name="query">
- /// The CLI Query
- /// </param>
- public void CreatePreviewSample(string query)
- {
- this.Run(query);
- }
-
- /// <summary>
- /// Kill the CLI process
- /// </summary>
- public void Stop()
- {
- if (this.HbProcess != null)
- this.HbProcess.Kill();
-
- Process[] list = Process.GetProcessesByName("HandBrakeCLI");
- foreach (Process process in list)
- process.Kill();
-
- this.IsEncoding = false;
-
- if (this.EncodeEnded != null)
- this.EncodeEnded(this, new EventArgs());
- }
-
- /// <summary>
- /// Attempt to Safely kill a DirectRun() CLI
- /// NOTE: This will not work with a MinGW CLI
- /// Note: http://www.cygwin.com/ml/cygwin/2006-03/msg00330.html
- /// </summary>
- public void SafelyClose()
- {
- if ((int) this.ProcessHandle == 0)
- return;
-
- // Allow the CLI to exit cleanly
- Win32.SetForegroundWindow((int) this.ProcessHandle);
- SendKeys.Send("^C");
-
- // HbProcess.StandardInput.AutoFlush = true;
- // HbProcess.StandardInput.WriteLine("^C");
- }
-
- /// <summary>
- /// Execute a HandBrakeCLI process.
- /// </summary>
- /// <param name="query">
- /// The CLI Query
- /// </param>
- protected void Run(string query)
- {
- try
- {
- if (this.EncodeStarted != null)
- this.EncodeStarted(this, new EventArgs());
-
- this.IsEncoding = true;
-
- string handbrakeCLIPath = Path.Combine(Application.StartupPath, "HandBrakeCLI.exe");
- string logPath =
- Path.Combine(
- Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HandBrake\\logs",
- "last_encode_log.txt");
- string strCmdLine = String.Format(@" /C """"{0}"" {1} 2>""{2}"" """, handbrakeCLIPath, query, logPath);
- var cliStart = new ProcessStartInfo("CMD.exe", strCmdLine);
-
- if (Settings.Default.enocdeStatusInGui)
- {
- cliStart.RedirectStandardOutput = true;
- cliStart.UseShellExecute = false;
- if (!Settings.Default.showCliForInGuiEncodeStatus)
- cliStart.CreateNoWindow = true;
- }
- if (Settings.Default.cli_minimized)
- cliStart.WindowStyle = ProcessWindowStyle.Minimized;
-
- Process[] before = Process.GetProcesses(); // Get a list of running processes before starting.
- this.HbProcess = Process.Start(cliStart);
- this.ProcessID = Main.GetCliProcess(before);
-
- if (this.HbProcess != null)
- this.ProcessHandle = this.HbProcess.MainWindowHandle; // Set the process Handle
-
- // Set the process Priority
- Process hbCliProcess = null;
- if (this.ProcessID != -1)
- hbCliProcess = Process.GetProcessById(this.ProcessID);
-
- if (hbCliProcess != null)
- switch (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(
- "It would appear that HandBrakeCLI has not started correctly. You should take a look at the Activity log as it may indicate the reason why.\n\nDetailed Error Information: error occured in runCli()\n\n" +
- exc,
- "Error",
- MessageBoxButtons.OK,
- MessageBoxIcon.Error);
- }
- }
-
- /// <summary>
- /// Function to run the CLI directly rather than via CMD
- /// TODO: Code to handle the Log data has yet to be written.
- /// TODO: Code to handle the % / ETA info has to be written.
- /// </summary>
- /// <param name="query">
- /// The query.
- /// </param>
- protected void DirectRun(string query)
- {
- try
- {
- if (this.EncodeStarted != null)
- this.EncodeStarted(this, new EventArgs());
-
- this.IsEncoding = true;
-
- // Setup the job
- string handbrakeCLIPath = Path.Combine(Environment.CurrentDirectory, "HandBrakeCLI.exe");
- var hbProc = new Process
- {
- StartInfo =
- {
- FileName = handbrakeCLIPath,
- Arguments = query,
- UseShellExecute = false,
- RedirectStandardOutput = true,
- RedirectStandardError = true,
- RedirectStandardInput = true,
- CreateNoWindow = false,
- WindowStyle = ProcessWindowStyle.Minimized
- }
- };
-
- // Setup the redirects
- hbProc.ErrorDataReceived += new DataReceivedEventHandler(HbProcErrorDataReceived);
- hbProc.OutputDataReceived += new DataReceivedEventHandler(HbProcOutputDataReceived);
-
- // Start the process
- hbProc.Start();
-
- // Set the Process Priority
- switch (Settings.Default.processPriority)
- {
- case "Realtime":
- hbProc.PriorityClass = ProcessPriorityClass.RealTime;
- break;
- case "High":
- hbProc.PriorityClass = ProcessPriorityClass.High;
- break;
- case "Above Normal":
- hbProc.PriorityClass = ProcessPriorityClass.AboveNormal;
- break;
- case "Normal":
- hbProc.PriorityClass = ProcessPriorityClass.Normal;
- break;
- case "Low":
- hbProc.PriorityClass = ProcessPriorityClass.Idle;
- break;
- default:
- hbProc.PriorityClass = ProcessPriorityClass.BelowNormal;
- break;
- }
-
- // Set the class items
- this.HbProcess = hbProc;
- this.ProcessID = hbProc.Id;
- this.ProcessHandle = hbProc.Handle;
- }
- catch (Exception exc)
- {
- Console.WriteLine(exc);
- }
- }
-
- /// <summary>
- /// Perform an action after an encode. e.g a shutdown, standby, restart etc.
- /// </summary>
- protected void Finish()
- {
- if (this.EncodeEnded != null)
- this.EncodeEnded(this, new EventArgs());
-
- this.IsEncoding = false;
-
- // Growl
- if (Settings.Default.growlQueue)
- GrowlCommunicator.Notify("Queue Completed", "Put down that cocktail...\nyour Handbrake queue is done.");
-
- // Do something whent he encode ends.
- switch (Settings.Default.CompletionOption)
- {
- case "Shutdown":
- Process.Start("Shutdown", "-s -t 60");
- break;
- case "Log Off":
- Win32.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":
- Win32.LockWorkStation();
- break;
- case "Quit HandBrake":
- Application.Exit();
- break;
- default:
- break;
- }
- }
-
- /// <summary>
- /// Add the CLI Query to the Log File.
- /// </summary>
- /// <param name="encJob">
- /// The Encode Job Object
- /// </param>
- protected void AddCLIQueryToLog(Job encJob)
- {
- try
- {
- string logDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
- "\\HandBrake\\logs";
- string logPath = Path.Combine(logDir, "last_encode_log.txt");
-
- var reader =
- new StreamReader(File.Open(logPath, FileMode.Open, FileAccess.Read, FileShare.Read));
- string log = reader.ReadToEnd();
- reader.Close();
-
- var writer = new StreamWriter(File.Create(logPath));
-
- writer.Write("### CLI Query: " + encJob.Query + "\n\n");
- writer.Write("### User Query: " + encJob.CustomQuery + "\n\n");
- writer.Write("#########################################\n\n");
- writer.WriteLine(log);
- writer.Flush();
- writer.Close();
- }
- catch (Exception)
- {
- return;
- }
- }
-
- /// <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">
- /// The Destination File Path
- /// </param>
- protected 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 destinationFile = Path.GetFileName(destination);
- string encodeLogFile = destinationFile + " " +
- DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + ".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 (Settings.Default.saveLogWithVideo)
- File.Copy(tempLogFile, Path.Combine(encodeDestinationPath, encodeLogFile));
-
- // Save a copy of the log file to a user specified location
- if (Directory.Exists(Settings.Default.saveLogPath))
- if (Settings.Default.saveLogPath != String.Empty && Settings.Default.saveLogToSpecifiedPath)
- File.Copy(tempLogFile, Path.Combine(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>
- /// Recieve the Standard Error information and process it
- /// </summary>
- /// <param name="sender">
- /// The Sender Object
- /// </param>
- /// <param name="e">
- /// DataReceived EventArgs
- /// </param>
- private static void HbProcErrorDataReceived(object sender, DataReceivedEventArgs e)
- {
- // TODO: Recieve the Log data and process it
- throw new NotImplementedException();
- }
-
- /// <summary>
- /// Standard Input Data Recieved from the CLI
- /// </summary>
- /// <param name="sender">
- /// The Sender Object
- /// </param>
- /// <param name="e">
- /// DataReceived EventArgs
- /// </param>
- private static void HbProcOutputDataReceived(object sender, DataReceivedEventArgs e)
- {
- // TODO: Recieve the %, ETA, FPS etc and process it
- throw new NotImplementedException();
- }
- }
-}
\ No newline at end of file diff --git a/win/C#/EncodeQueue/Queue.cs b/win/C#/EncodeQueue/Queue.cs deleted file mode 100644 index d31caf9be..000000000 --- a/win/C#/EncodeQueue/Queue.cs +++ /dev/null @@ -1,382 +0,0 @@ -/* Queue.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. */
-
-namespace Handbrake.EncodeQueue
-{
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.IO;
- using System.Threading;
- using System.Windows.Forms;
- using System.Xml.Serialization;
- using Functions;
-
- /// <summary>
- /// The HandBrake Queue
- /// </summary>
- public class Queue : Encode
- {
- /// <summary>
- /// An XML Serializer
- /// </summary>
- private static XmlSerializer serializer;
-
- /// <summary>
- /// The Queue Job List
- /// </summary>
- private readonly List<Job> queue = new List<Job>();
-
- /// <summary>
- /// The Next Job ID
- /// </summary>
- private int nextJobId;
-
- /// <summary>
- /// Fires when a pause to the encode queue has been requested.
- /// </summary>
- public event EventHandler QueuePauseRequested;
-
- /// <summary>
- /// Fires when the entire encode queue has completed.
- /// </summary>
- public event EventHandler QueueCompleted;
-
- #region Queue
-
- /// <summary>
- /// Gets and removes the next job in the queue.
- /// </summary>
- /// <returns>The job that was removed from the queue.</returns>
- private Job GetNextJob()
- {
- Job job = this.queue[0];
- this.LastEncode = job;
- this.Remove(0); // Remove the item which we are about to pass out.
-
- this.WriteQueueStateToFile("hb_queue_recovery.xml");
-
- return job;
- }
-
- /// <summary>
- /// Gets the current state of the encode queue.
- /// </summary>
- public ReadOnlyCollection<Job> CurrentQueue
- {
- get { return this.queue.AsReadOnly(); }
- }
-
- /// <summary>
- /// Gets the number of items in the queue.
- /// </summary>
- public int Count
- {
- get { return this.queue.Count; }
- }
-
- /// <summary>
- /// Adds an item to the queue.
- /// </summary>
- /// <param name="query">
- /// The query that will be passed to the HandBrake CLI.
- /// </param>
- /// <param name="source">
- /// The location of the source video.
- /// </param>
- /// <param name="destination">
- /// The location where the encoded video will be.
- /// </param>
- /// <param name="customJob">
- /// Custom job
- /// </param>
- public void Add(string query, string source, string destination, bool customJob)
- {
- Job newJob = new Job
- {
- Id = this.nextJobId++,
- Query = query,
- Source = source,
- Destination = destination,
- CustomQuery = customJob
- };
-
- this.queue.Add(newJob);
- this.WriteQueueStateToFile("hb_queue_recovery.xml");
- }
-
- /// <summary>
- /// Removes an item from the queue.
- /// </summary>
- /// <param name="index">The zero-based location of the job in the queue.</param>
- public void Remove(int index)
- {
- this.queue.RemoveAt(index);
- this.WriteQueueStateToFile("hb_queue_recovery.xml");
- }
-
- /// <summary>
- /// Retrieve a job from the queue
- /// </summary>
- /// <param name="index">the job id</param>
- /// <returns>A job for the given index or blank job object</returns>
- public Job GetJob(int index)
- {
- if (this.queue.Count >= (index + 1))
- return this.queue[index];
-
- return new Job();
- }
-
- /// <summary>
- /// Moves an item up one position in the queue.
- /// </summary>
- /// <param name="index">The zero-based location of the job in the queue.</param>
- public void MoveUp(int index)
- {
- if (index > 0)
- {
- Job item = queue[index];
-
- queue.RemoveAt(index);
- queue.Insert((index - 1), item);
- }
-
- WriteQueueStateToFile("hb_queue_recovery.xml"); // Update the queue recovery file
- }
-
- /// <summary>
- /// Moves an item down one position in the queue.
- /// </summary>
- /// <param name="index">The zero-based location of the job in the queue.</param>
- public void MoveDown(int index)
- {
- if (index < this.queue.Count - 1)
- {
- Job item = this.queue[index];
-
- this.queue.RemoveAt(index);
- this.queue.Insert((index + 1), item);
- }
-
- this.WriteQueueStateToFile("hb_queue_recovery.xml"); // Update the queue recovery file
- }
-
- /// <summary>
- /// Writes the current state of the queue to a file.
- /// </summary>
- /// <param name="file">The location of the file to write the queue to.</param>
- public void WriteQueueStateToFile(string file)
- {
- string appDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
- @"HandBrake\hb_queue_recovery.xml");
- string tempPath = file == "hb_queue_recovery.xml" ? appDataPath : file;
-
- try
- {
- using (FileStream strm = new FileStream(tempPath, FileMode.Create, FileAccess.Write))
- {
- if (serializer == null)
- serializer = new XmlSerializer(typeof (List<Job>));
- serializer.Serialize(strm, queue);
- strm.Close();
- strm.Dispose();
- }
- }
- catch (Exception)
- {
- return;
- }
- }
-
- /// <summary>
- /// Writes the current state of the queue in the form of a batch (.bat) file.
- /// </summary>
- /// <param name="file">The location of the file to write the batch file to.</param>
- public void WriteBatchScriptToFile(string file)
- {
- string queries = string.Empty;
- foreach (Job queueItem in this.queue)
- {
- string qItem = queueItem.Query;
- string fullQuery = '"' + Application.StartupPath + "\\HandBrakeCLI.exe" + '"' + qItem;
-
- if (queries == string.Empty)
- queries = queries + fullQuery;
- else
- queries = queries + " && " + fullQuery;
- }
- string strCmdLine = queries;
-
- if (file != string.Empty)
- {
- try
- {
- // Create a StreamWriter and open the file, Write the batch file query to the file and
- // Close the stream
- using (StreamWriter line = new StreamWriter(file))
- {
- line.WriteLine(strCmdLine);
- }
-
- MessageBox.Show("Your batch script has been sucessfully saved.", "Status", MessageBoxButtons.OK,
- MessageBoxIcon.Asterisk);
- }
- catch (Exception)
- {
- MessageBox.Show(
- "Unable to write to the file. Please make sure that the location has the correct permissions for file writing.",
- "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
- }
- }
- }
-
- /// <summary>
- /// Reads a serialized XML file that represents a queue of encoding jobs.
- /// </summary>
- /// <param name="file">The location of the file to read the queue from.</param>
- public void LoadQueueFromFile(string file)
- {
- string appDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
- @"HandBrake\hb_queue_recovery.xml");
- string tempPath = file == "hb_queue_recovery.xml" ? appDataPath : file;
-
- if (File.Exists(tempPath))
- {
- using (FileStream strm = new FileStream(tempPath, FileMode.Open, FileAccess.Read))
- {
- if (strm.Length != 0)
- {
- if (serializer == null)
- serializer = new XmlSerializer(typeof (List<Job>));
-
- List<Job> list = serializer.Deserialize(strm) as List<Job>;
-
- if (list != null)
- foreach (Job item in list)
- this.queue.Add(item);
-
- if (file != "hb_queue_recovery.xml")
- this.WriteQueueStateToFile("hb_queue_recovery.xml");
- }
- }
- }
- }
-
- /// <summary>
- /// Checks the current queue for an existing instance of the specified destination.
- /// </summary>
- /// <param name="destination">The destination of the encode.</param>
- /// <returns>Whether or not the supplied destination is already in the queue.</returns>
- public bool CheckForDestinationDuplicate(string destination)
- {
- foreach (Job checkItem in this.queue)
- {
- if (checkItem.Destination.Contains(destination.Replace("\\\\", "\\")))
- return true;
- }
-
- return false;
- }
-
- #endregion
-
- #region Encoding
-
- /// <summary>
- /// Gets or sets the last encode that was processed.
- /// </summary>
- /// <returns></returns>
- public Job LastEncode { get; set; }
-
- /// <summary>
- /// Gets a value indicating whether Request Pause
- /// </summary>
- public bool PauseRequested { get; private set; }
-
- /// <summary>
- /// Starts encoding the first job in the queue and continues encoding until all jobs
- /// have been encoded.
- /// </summary>
- public void Start()
- {
- if (this.Count != 0)
- {
- if (this.PauseRequested)
- this.PauseRequested = false;
- else
- {
- this.PauseRequested = false;
- try
- {
- Thread theQueue = new Thread(this.StartQueue) {IsBackground = true};
- theQueue.Start();
- }
- catch (Exception exc)
- {
- MessageBox.Show(exc.ToString());
- }
- }
- }
- }
-
- /// <summary>
- /// Requests a pause of the encode queue.
- /// </summary>
- public void Pause()
- {
- this.PauseRequested = true;
-
- if (this.QueuePauseRequested != null)
- this.QueuePauseRequested(this, new EventArgs());
- }
-
- /// <summary>
- /// Run through all the jobs on the queue.
- /// </summary>
- /// <param name="state">Object State</param>
- private void StartQueue(object state)
- {
- // Run through each item on the queue
- while (this.Count != 0)
- {
- Job encJob = this.GetNextJob();
- string query = encJob.Query;
- this.WriteQueueStateToFile("hb_queue_recovery.xml"); // Update the queue recovery file
-
- Run(query);
-
- HbProcess.WaitForExit();
-
- AddCLIQueryToLog(encJob);
- this.CopyLog(this.LastEncode.Destination);
-
- HbProcess.Close();
- HbProcess.Dispose();
-
- IsEncoding = false;
-
- // Growl
- if (Properties.Settings.Default.growlEncode)
- GrowlCommunicator.Notify("Encode Completed",
- "Put down that cocktail...\nyour Handbrake encode is done.");
-
- while (this.PauseRequested) // Need to find a better way of doing this.
- {
- Thread.Sleep(2000);
- }
- }
- this.LastEncode = new Job();
-
- if (this.QueueCompleted != null)
- this.QueueCompleted(this, new EventArgs());
-
- // After the encode is done, we may want to shutdown, suspend etc.
- Finish();
- }
-
- #endregion
- }
-}
\ No newline at end of file diff --git a/win/C#/Functions/Scan.cs b/win/C#/Functions/Scan.cs deleted file mode 100644 index 8532b353c..000000000 --- a/win/C#/Functions/Scan.cs +++ /dev/null @@ -1,182 +0,0 @@ -/* Scan.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. */
-
-namespace Handbrake.Functions
-{
- using System;
- using System.Diagnostics;
- using System.IO;
- using System.Threading;
- using System.Windows.Forms;
- using Parsing;
-
- /// <summary>
- /// Scan a Source
- /// </summary>
- public class Scan
- {
- /// <summary>
- /// The information for this source
- /// </summary>
- private DVD thisDvd;
-
- /// <summary>
- /// The CLI data parser
- /// </summary>
- private Parser readData;
-
- /// <summary>
- /// The Process belonging to the CLI
- /// </summary>
- private Process hbProc;
-
- /// <summary>
- /// The Progress of the scan
- /// </summary>
- private string scanProgress;
-
- /// <summary>
- /// Scan has Started
- /// </summary>
- public event EventHandler ScanStared;
-
- /// <summary>
- /// Scan has completed
- /// </summary>
- public event EventHandler ScanCompleted;
-
- /// <summary>
- /// Scan process has changed to a new title
- /// </summary>
- public event EventHandler ScanStatusChanged;
-
- /// <summary>
- /// Gets or sets a value indicating whether IsScanning.
- /// </summary>
- public bool IsScanning { get; set; }
-
- /// <summary>
- /// Scan a Source Path.
- /// Title 0: scan all
- /// </summary>
- /// <param name="sourcePath">Path to the file to scan</param>
- /// <param name="title">int title number. 0 for scan all</param>
- public void ScanSource(string sourcePath, int title)
- {
- Thread t = new Thread(unused => this.RunScan(sourcePath, title));
- t.Start();
- }
-
- /// <summary>
- /// Object containing the information parsed in the scan.
- /// </summary>
- /// <returns>The DVD object containing the scan information</returns>
- public DVD SouceData()
- {
- return this.thisDvd;
- }
-
- /// <summary>
- /// Raw log output from HandBrake CLI
- /// </summary>
- /// <returns>The Log Data</returns>
- public string LogData()
- {
- return this.readData.Buffer;
- }
-
- /// <summary>
- /// Progress of the scan.
- /// </summary>
- /// <returns>The progress of the scan</returns>
- public string ScanStatus()
- {
- return this.scanProgress;
- }
-
- /// <summary>
- /// The Scan Process
- /// </summary>
- /// <returns>The CLI process</returns>
- public Process ScanProcess()
- {
- return this.hbProc;
- }
-
- /// <summary>
- /// Start a scan for a given source path and title
- /// </summary>
- /// <param name="sourcePath">Path to the source file</param>
- /// <param name="title">the title number to look at</param>
- private void RunScan(object sourcePath, int title)
- {
- try
- {
- IsScanning = true;
- if (this.ScanStared != null)
- this.ScanStared(this, new EventArgs());
-
- string handbrakeCLIPath = Path.Combine(Application.StartupPath, "HandBrakeCLI.exe");
- string logDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
- "\\HandBrake\\logs";
- string dvdInfoPath = Path.Combine(logDir, "last_scan_log.txt");
-
- // Make we don't pick up a stale last_encode_log.txt (and that we have rights to the file)
- if (File.Exists(dvdInfoPath))
- File.Delete(dvdInfoPath);
-
- string dvdnav = string.Empty;
- if (Properties.Settings.Default.noDvdNav)
- dvdnav = " --no-dvdnav";
-
- this.hbProc = new Process
- {
- StartInfo =
- {
- FileName = handbrakeCLIPath,
- Arguments =
- String.Format(@" -i ""{0}"" -t{1} {2} -v ", sourcePath, title, dvdnav),
- RedirectStandardOutput = true,
- RedirectStandardError = true,
- UseShellExecute = false,
- CreateNoWindow = true
- }
- };
- this.hbProc.Start();
-
- this.readData = new Parser(this.hbProc.StandardError.BaseStream);
- this.readData.OnScanProgress += new ScanProgressEventHandler(this.OnScanProgress);
- this.thisDvd = DVD.Parse(this.readData);
-
- // Write the Buffer out to file.
- StreamWriter scanLog = new StreamWriter(dvdInfoPath);
- scanLog.Write(this.readData.Buffer);
- scanLog.Flush();
- scanLog.Close();
-
- if (this.ScanCompleted != null)
- this.ScanCompleted(this, new EventArgs());
- IsScanning = false;
- }
- catch (Exception exc)
- {
- Console.WriteLine("frmMain.cs - scanProcess() " + exc);
- }
- }
-
- /// <summary>
- /// Fire an event when the scan process progresses
- /// </summary>
- /// <param name="sender">the sender</param>
- /// <param name="currentTitle">the current title being scanned</param>
- /// <param name="titleCount">the total number of titles</param>
- private void OnScanProgress(object sender, int currentTitle, int titleCount)
- {
- this.scanProgress = string.Format("Processing Title: {0} of {1}", currentTitle, titleCount);
- if (this.ScanStatusChanged != null)
- this.ScanStatusChanged(this, new EventArgs());
- }
- }
-}
\ No newline at end of file diff --git a/win/C#/HandBrakeCS.csproj b/win/C#/HandBrakeCS.csproj index 8f02ff8fe..f4902e3e1 100644 --- a/win/C#/HandBrakeCS.csproj +++ b/win/C#/HandBrakeCS.csproj @@ -164,7 +164,7 @@ <Compile Include="Controls\x264Panel.Designer.cs">
<DependentUpon>x264Panel.cs</DependentUpon>
</Compile>
- <Compile Include="EncodeQueue\Encode.cs" />
+ <Compile Include="Services\Encode.cs" />
<Compile Include="frmPreview.cs">
<SubType>Form</SubType>
</Compile>
@@ -217,7 +217,7 @@ <Compile Include="Functions\PresetLoader.cs" />
<Compile Include="Functions\QueryGenerator.cs" />
<Compile Include="Functions\Main.cs" />
- <Compile Include="Functions\Scan.cs" />
+ <Compile Include="Services\Scan.cs" />
<Compile Include="Functions\System.cs" />
<Compile Include="Functions\UpdateCheckInformation.cs" />
<Compile Include="Functions\Win32.cs" />
@@ -234,7 +234,7 @@ <Compile Include="Presets\PlistPresetHandler.cs" />
<Compile Include="Presets\Preset.cs" />
<Compile Include="Presets\PresetsHandler.cs" />
- <Compile Include="EncodeQueue\Queue.cs" />
+ <Compile Include="Services\Queue.cs" />
<Compile Include="Functions\AppcastReader.cs" />
<Compile Include="Functions\QueryParser.cs" />
<Compile Include="Parsing\AudioTrack.cs" />
@@ -331,7 +331,7 @@ <Compile Include="frmSplashScreen.Designer.cs">
<DependentUpon>frmSplashScreen.cs</DependentUpon>
</Compile>
- <Compile Include="EncodeQueue\Job.cs" />
+ <Compile Include="Model\Job.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="handbrakepineapple.ico" />
@@ -427,5 +427,5 @@ <Target Name="AfterBuild">
</Target>
-->
- <Import Project="$(ProgramFiles)\MSBuild\Microsoft\StyleCop\v4.3\Microsoft.StyleCop.targets" />
+ <Import Project="$(ProgramFiles)\MSBuild\Microsoft\StyleCop\v4.3\Microsoft.StyleCop.targets" />
</Project>
\ No newline at end of file diff --git a/win/C#/EncodeQueue/Job.cs b/win/C#/Model/Job.cs index 6c87cd606..bd8888e58 100644 --- a/win/C#/EncodeQueue/Job.cs +++ b/win/C#/Model/Job.cs @@ -3,7 +3,8 @@ Homepage: <http://handbrake.fr>.
It may be used under the terms of the GNU General Public License. */
-namespace Handbrake.EncodeQueue
+
+namespace Handbrake.Model
{
/// <summary>
/// The job.
diff --git a/win/C#/frmActivityWindow.cs b/win/C#/frmActivityWindow.cs index 879dd54a5..70f62d5e9 100644 --- a/win/C#/frmActivityWindow.cs +++ b/win/C#/frmActivityWindow.cs @@ -180,6 +180,33 @@ namespace Handbrake return appendText;
}
+
+ // TODO This is just Experimental Code. Just ignore it.
+ ////if (encode.ActivityLog == null)
+ ////{
+ //// appendText.AppendFormat("Waiting for the log file to be generated ...\n");
+ //// position = 0;
+ //// ClearWindowText();
+ //// PrintLogHeader();
+ //// return appendText;
+ ////}
+
+ ////using (StringReader reader = new StringReader(encode.ActivityLog))
+ ////{
+ //// string line;
+ //// int i = 1;
+ //// while ((line = reader.ReadLine()) != null)
+ //// {
+ //// if (i > position)
+ //// {
+ //// appendText.AppendLine(line);
+ //// position++;
+ //// }
+ //// i++;
+ //// }
+
+ ////}
+
// Start the Reader
// Only use text which continues on from the last read line
StreamReader sr = new StreamReader(logFile2);
diff --git a/win/C#/frmMain.Designer.cs b/win/C#/frmMain.Designer.cs index 505b49a47..6be9034b3 100644 --- a/win/C#/frmMain.Designer.cs +++ b/win/C#/frmMain.Designer.cs @@ -1077,7 +1077,7 @@ namespace Handbrake this.x264Panel.Name = "x264Panel";
this.x264Panel.Size = new System.Drawing.Size(720, 306);
this.x264Panel.TabIndex = 0;
- this.x264Panel.X264Query = " -x -x ";
+ this.x264Panel.X264Query = " -x -x -x ";
//
// tab_query
//
diff --git a/win/C#/frmMain.cs b/win/C#/frmMain.cs index 8e7e31db2..5ec925973 100644 --- a/win/C#/frmMain.cs +++ b/win/C#/frmMain.cs @@ -15,11 +15,11 @@ namespace Handbrake using System.IO;
using System.Threading;
using System.Windows.Forms;
- using EncodeQueue;
using Functions;
using Model;
using Parsing;
using Presets;
+ using Services;
public partial class frmMain : Form
{
diff --git a/win/C#/frmPreview.cs b/win/C#/frmPreview.cs index 436688565..0951f34a7 100644 --- a/win/C#/frmPreview.cs +++ b/win/C#/frmPreview.cs @@ -6,10 +6,10 @@ using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
- using EncodeQueue;
using Functions;
using QTOControlLib;
using QTOLibrary;
+ using Services;
public partial class frmPreview : Form
{
diff --git a/win/C#/frmQueue.cs b/win/C#/frmQueue.cs index 86596e052..51dafd032 100644 --- a/win/C#/frmQueue.cs +++ b/win/C#/frmQueue.cs @@ -11,9 +11,9 @@ namespace Handbrake using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Forms;
- using EncodeQueue;
using Functions;
using Model;
+ using Services;
public partial class frmQueue : Form
{
|