summaryrefslogtreecommitdiffstats
path: root/win/C#/Functions
diff options
context:
space:
mode:
authorsr55 <[email protected]>2008-11-26 19:32:53 +0000
committersr55 <[email protected]>2008-11-26 19:32:53 +0000
commite8b7af4abd15d0035f69ebd96cc592e171d2ae43 (patch)
tree0826c5d09461ee6eb6eb5fe3022a0bdd875d161b /win/C#/Functions
parent80fa9daad46cf5281b71ed287868e535fa9fbdb9 (diff)
WinGui:
- The Queue Recovery, inport/export features now use an XML based file system rather than text file. - Queue now uses class based Queue Items for storing data rather than an arraylist. - Fixes an issue where the source and/or destination would not show up in the list of queue items. - Queue progress meter will now update correctly if a user adds more items to the queue after starting the queue. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1958 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/C#/Functions')
-rw-r--r--win/C#/Functions/Encode.cs6
-rw-r--r--win/C#/Functions/Main.cs28
-rw-r--r--win/C#/Functions/QueryParser.cs46
-rw-r--r--win/C#/Functions/Queue.cs206
4 files changed, 22 insertions, 264 deletions
diff --git a/win/C#/Functions/Encode.cs b/win/C#/Functions/Encode.cs
index 0445392d0..471acb586 100644
--- a/win/C#/Functions/Encode.cs
+++ b/win/C#/Functions/Encode.cs
@@ -133,7 +133,7 @@ namespace Handbrake.Functions
/// if this feature is enabled in options.
/// </summary>
/// <param name="query"></param>
- public void copyLog(string query)
+ public void copyLog(string query, string destination)
{
// The user may wish to do something with the log.
if (Properties.Settings.Default.saveLog == "Checked")
@@ -143,7 +143,7 @@ namespace Handbrake.Functions
if (Properties.Settings.Default.saveLogWithVideo == "Checked")
{
- string[] destName = parsed.Destination.Split('\\');
+ string[] destName = destination.Split('\\');
string destinationFile = "";
for (int i = 0; i < destName.Length - 1; i++)
{
@@ -156,7 +156,7 @@ namespace Handbrake.Functions
}
else if (Properties.Settings.Default.saveLogPath != String.Empty)
{
- string[] destName = parsed.Destination.Split('\\');
+ string[] destName = destination.Split('\\');
string dest = destName[destName.Length - 1];
string filename = DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + " " + dest + ".txt";
string useDefinedLogPath = Path.Combine(Properties.Settings.Default.saveLogPath, filename);
diff --git a/win/C#/Functions/Main.cs b/win/C#/Functions/Main.cs
index f8600d3e9..0a202b15d 100644
--- a/win/C#/Functions/Main.cs
+++ b/win/C#/Functions/Main.cs
@@ -13,11 +13,16 @@ using System.IO;
using System.Drawing;
using System.Diagnostics;
using System.Text.RegularExpressions;
+using System.Collections.Generic;
+using System.Xml.Serialization;
namespace Handbrake.Functions
{
class Main
{
+ // Private Variables
+ private static XmlSerializer ser = new XmlSerializer(typeof(List<Queue.QueueItem>));
+
/// <summary>
/// Calculate the duration of the selected title and chapters
/// </summary>
@@ -361,28 +366,21 @@ namespace Handbrake.Functions
{
try
{
- string tempPath = Path.Combine(Path.GetTempPath(), "hb_queue_recovery.dat");
- using (StreamReader reader = new StreamReader(tempPath))
+ string tempPath = Path.Combine(Path.GetTempPath(), "hb_queue_recovery.xml");
+ if (File.Exists(tempPath))
{
- string queue_item = reader.ReadLine();
- if (queue_item == null)
- {
- reader.Close();
- reader.Dispose();
- return false;
- }
- else // There exists an item in the recovery queue file, so try and recovr it.
+ using (FileStream strm = new FileStream(tempPath, FileMode.Open, FileAccess.Read))
{
- reader.Close();
- reader.Dispose();
- return true;
+ List<Queue.QueueItem> list = ser.Deserialize(strm) as List<Queue.QueueItem>;
+ if (list.Count != 0)
+ return true;
}
}
+ return false;
}
catch (Exception)
{
- // Keep quiet about the error.
- return false;
+ return false; // Keep quiet about the error.
}
}
diff --git a/win/C#/Functions/QueryParser.cs b/win/C#/Functions/QueryParser.cs
index 3e8b18ebe..b2d2ee661 100644
--- a/win/C#/Functions/QueryParser.cs
+++ b/win/C#/Functions/QueryParser.cs
@@ -19,20 +19,6 @@ namespace Handbrake.Functions
#region Varibles
#region Source
-
- private string q_source;
- /// <summary>
- /// Returns a String
- /// Full path of the source.
- /// </summary>
- public string Source
- {
- get
- {
- return this.q_source;
- }
- }
-
private int q_dvdTitle;
/// <summary>
/// Returns an Integer
@@ -74,20 +60,6 @@ namespace Handbrake.Functions
#endregion
#region Destination
-
- private string q_destination;
- /// <summary>
- /// Returns a String
- /// Full path of the destination.
- /// </summary>
- public string Destination
- {
- get
- {
- return this.q_destination;
- }
- }
-
private string q_format;
/// <summary>
/// Returns a String
@@ -811,16 +783,16 @@ namespace Handbrake.Functions
QueryParser thisQuery = new QueryParser();
#region Regular Expressions
+ // Useful Destination Finder
+ //Regex r1 = new Regex(@"(-i)(?:\s\"")([a-zA-Z0-9?';!^%&*()_\-:\\\s\.]+)(?:\"")");
+ //Match source = r1.Match(input.Replace('"', '\"'));
+
//Source
- Regex r1 = new Regex(@"(-i)(?:\s\"")([a-zA-Z0-9_\-:\\\s\.]+)(?:\"")");
- Match source = r1.Match(input.Replace('"', '\"'));
Match title = Regex.Match(input, @"-t ([0-9]*)");
Match chapters = Regex.Match(input, @"-c ([0-9-]*)");
Match format = Regex.Match(input, @"-f ([a-z0-9a-z0-9a-z0-9]*)");
//Destination
- Regex r2 = new Regex(@"(-o)(?:\s\"")([a-zA-Z0-9_\-:\\\s\.]+)(?:\"")");
- Match destination = r2.Match(input.Replace('"', '\"'));
Match videoEncoder = Regex.Match(input, @"-e ([a-zA-Z0-9]*)");
//Picture Settings Tab
@@ -896,12 +868,9 @@ namespace Handbrake.Functions
#region Set Varibles
try
{
-
#region Source Tab
-
- thisQuery.q_source = source.ToString().Replace("-i ", "").Replace("\"", "");
if (title.Success != false)
- thisQuery.q_dvdTitle = int.Parse(title.ToString().Replace("-t ", ""));
+ thisQuery.q_dvdTitle = int.Parse(title.ToString().Replace("-t ", ""));
if (chapters.Success != false)
{
@@ -923,11 +892,8 @@ namespace Handbrake.Functions
#endregion
#region Destination
- thisQuery.q_destination = destination.ToString().Replace("-o ", "").Replace("\"", "");
-
- string videoEncoderConvertion;
- videoEncoderConvertion = videoEncoder.ToString().Replace("-e ", "");
+ string videoEncoderConvertion = videoEncoder.ToString().Replace("-e ", "");
switch (videoEncoderConvertion)
{
case "ffmpeg":
diff --git a/win/C#/Functions/Queue.cs b/win/C#/Functions/Queue.cs
deleted file mode 100644
index 3afca7d3e..000000000
--- a/win/C#/Functions/Queue.cs
+++ /dev/null
@@ -1,206 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Collections;
-using System.IO;
-using System.Windows.Forms;
-
-namespace Handbrake.Functions
-{
- public class Queue
- {
- ArrayList queue = new ArrayList();
- ArrayList lastQuery;
- int id = 0; // Unique identifer number for each job
-
- public ArrayList getQueue()
- {
- return queue;
- }
-
- /// <summary>
- /// Get's the next CLI query for encoding
- /// </summary>
- /// <returns>String</returns>
- public String getNextItemForEncoding()
- {
- Object query = queue[0];
- lastQuery = (ArrayList)query;
- remove(0); // Remove the item which we are about to pass out.
- return lastQuery[1].ToString();
- }
-
- /// <summary>
- /// Add's a new item to the queue
- /// </summary>
- /// <param name="query">String</param>
- public void add(string query)
- {
- // Creates a new job with a unique identifer and cli query
- ArrayList newJob = new ArrayList();
- newJob.Add(id);
- newJob.Add(query);
- id++;
-
- // Adds the job to the queue
- queue.Add(newJob);
- }
-
- /// <summary>
- /// Removes an item from the queue.
- /// </summary>
- /// <param name="index">Index</param>
- /// <returns>Bolean true if successful</returns>
- public Boolean remove(int index)
- {
- queue.RemoveAt(index);
- return true;
- }
-
- /// <summary>
- /// Returns how many items are in the queue
- /// </summary>
- /// <returns>Int</returns>
- public int count()
- {
- return queue.Count;
- }
-
- /// <summary>
- /// Get's the last query to be selected for encoding by getNextItemForEncoding()
- /// </summary>
- /// <returns>String</returns>
- public string getLastQuery()
- {
- return lastQuery[1].ToString();
- }
-
- /// <summary>
- /// Move an item with an index x, up in the queue
- /// </summary>
- /// <param name="index">Int</param>
- public void moveUp(int index)
- {
- if (index != 0)
- {
- ArrayList item = (ArrayList)queue[index];
-
- queue.Insert((index - 1), item);
- queue.RemoveAt((index + 1));
- }
- }
-
- /// <summary>
- /// Move an item with an index x, down in the queue
- /// </summary>
- /// <param name="index">Int</param>
- public void moveDown(int index)
- {
- if (index != queue.Count - 1)
- {
- ArrayList item = (ArrayList)queue[index];
-
- queue.Insert((index + 2), item);
- queue.RemoveAt((index));
- }
- }
-
- /// <summary>
- /// Writes the current queue to disk. hb_queue_recovery.dat
- /// This function is called after getNextItemForEncoding()
- /// </summary>
- public void write2disk(string file)
- {
- try
- {
- string tempPath = "";
- if (file == "hb_queue_recovery.dat")
- tempPath = Path.Combine(Path.GetTempPath(), "hb_queue_recovery.dat");
- else
- tempPath = file;
- using (StreamWriter writer = new StreamWriter(tempPath))
- {
- foreach (ArrayList item in queue)
- {
- writer.WriteLine(item[1].ToString());
- }
- writer.Close();
- writer.Dispose();
- }
- }
- catch (Exception)
- {
- // Any Errors will be out of diskspace/permissions problems. Don't report them as they'll annoy the user.
- }
- }
-
- /// <summary>
- /// Writes the current queue to disk to the location specified in file
- /// </summary>
- /// <param name="file"></param>
- public void writeBatchScript(string file)
- {
- string queries = "";
- foreach (ArrayList queue_item in queue)
- {
- string q_item = queue_item[1].ToString();
- string fullQuery = '"' + Application.StartupPath.ToString() + "\\HandBrakeCLI.exe" + '"' + q_item;
-
- if (queries == string.Empty)
- queries = queries + fullQuery;
- else
- queries = queries + " && " + fullQuery;
- }
- string strCmdLine = queries;
-
- if (file != "")
- {
- try
- {
- // Create a StreamWriter and open the file, Write the batch file query to the file and
- // Close the stream
- StreamWriter line = new StreamWriter(file);
- line.WriteLine(strCmdLine);
- line.Close();
-
- 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>
- /// Recover the queue from hb_queue_recovery.dat
- /// </summary>
- public void recoverQueue(string file)
- {
- try
- {
- string tempPath = "";
- if (file == "hb_queue_recovery.dat")
- tempPath = Path.Combine(Path.GetTempPath(), "hb_queue_recovery.dat");
- else
- tempPath = file;
- using (StreamReader reader = new StreamReader(tempPath))
- {
- string queue_item = reader.ReadLine();
-
- while (queue_item != null)
- {
- this.add(queue_item);
- queue_item = reader.ReadLine();
- }
- }
- }
- catch (Exception exc)
- {
- MessageBox.Show("HandBrake was unable to recover the queue. \nError Information:" + exc.ToString(), "Queue Recovery Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
-
- }
-}