From 7dcf52379eb35e0a1553ecb6961b8376833e7603 Mon Sep 17 00:00:00 2001 From: sr55 Date: Wed, 2 Jul 2008 19:01:36 +0000 Subject: WinGui: - Better implementation of the presets bar. Code moved into it's own class. - Can now Remove Single or delete all built in presets. - User presets are no longer taged with "--" - CLI window no longer appears when grabbing the information for presets.dat from HandBrakeCLI.exe git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1552 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- win/C#/Functions/Presets.cs | 258 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 252 insertions(+), 6 deletions(-) (limited to 'win/C#/Functions/Presets.cs') diff --git a/win/C#/Functions/Presets.cs b/win/C#/Functions/Presets.cs index 213a6ea8b..dda7f12b4 100644 --- a/win/C#/Functions/Presets.cs +++ b/win/C#/Functions/Presets.cs @@ -1,15 +1,261 @@ using System; -using System.Collections.Generic; +using System.Collections; using System.Text; +using System.Windows.Forms; +using System.IO; +using System.Text.RegularExpressions; + namespace Handbrake.Functions { - // This file is going to be used for all the preset stuff, when i get around to switching out to something that works a bit better. - - class Presets + public class Presets { - public void loadPresetPanel(frmMain mainWindow) + ArrayList presets = new ArrayList(); + ArrayList user_presets = new ArrayList(); + + /// + /// Add a new preset to the system + /// + /// String, The name of the new preset + /// String, the CLI query for the new preset + public Boolean addPreset(string presetName, string query) + { + if (checkIfPresetExists(presetName) == false) + { + String preset = "+ " + presetName + ": " + query; + user_presets.Add(preset); + addPresetToFile(preset); + return true; + } + else + { + MessageBox.Show("Sorry, that preset name already exists. Please choose another!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return false; + } + } + + /// + /// Remove a preset with a given name from either the built in or user preset list. + /// + /// String, the preset name + public void remove(string name) + { + ArrayList newPresets = new ArrayList(); + ArrayList newUserPresets = new ArrayList(); + + // Built In Presets + foreach (string item in presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(x); + if (presetName[0] != name) + newPresets.Add(item); + } + + // User Presets + foreach (string item in user_presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(x); + if (presetName[0] != name) + newUserPresets.Add(item); + } + + // Now, Update the presets.dat and user_presets.dat file with the new items. + string userPresets = Application.StartupPath.ToString() + "\\user_presets.dat"; + string presetsFile = Application.StartupPath.ToString() + "\\presets.dat"; + + // Rebuild the presets.dat file + StreamWriter line = new StreamWriter(presetsFile); + foreach (string item in newPresets) + { + line.WriteLine("+ " + item); + } + line.Close(); + line.Dispose(); + + // Rebuild the user_presets.dat file + line = new StreamWriter(userPresets); + foreach (string item in newUserPresets) + { + line.WriteLine("+ " + item); + } + line.Close(); + line.Dispose(); + } + + /// + /// Count the number of presets there are. + /// + /// Integer + public int count() + { + int c = presets.Count; + int d = user_presets.Count; + + return c + d; + } + + /// + /// Get an Arraylist of all the preset names. + /// Includes both built in and user presets. + /// + /// Arraylist of preset names + public ArrayList getPresetNames() + { + ArrayList names = new ArrayList(); + + // Built In Presets + foreach (string item in presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(x); + names.Add(presetName[0]); + + } + + // User Presets + foreach (string item in user_presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); + string[] presetName = r.Split(x); + names.Add(presetName[0]); + + } + + return names; + } + + /// + /// Return the CLI query for a preset name given in name + /// + /// String, The preset's name + /// String, the CLI query for the given preset name + public string getCliForPreset(string name) + { + // Built In Presets + foreach (string item in presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(x); + if (presetName[0] == name) + return presetName[2]; + } + + // User Presets + foreach (string item in user_presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(x); + if (presetName[0] == name) + return presetName[2]; + } + + return null; + } + + /// + /// Load in the preset data from presets.dat and user_presets.dat + /// Load it into the 2 arraylist's presets and user_presets + /// + public void loadPresetFiles() { + // First clear the presets arraylists + presets.Clear(); + user_presets.Clear(); + + // Load in the built in presets from presets.dat + // We'll store them in the array in the format: presetName: ClI Query + string filePath = Application.StartupPath.ToString() + "\\presets.dat"; + if (File.Exists(filePath)) + { + StreamReader presetInput = new StreamReader(filePath); + while (!presetInput.EndOfStream) + { + if ((char)presetInput.Peek() == '+') + presets.Add(presetInput.ReadLine().Replace("+ ", "")); + else + presetInput.ReadLine(); + } + presetInput.Close(); + presetInput.Dispose(); + } + + // Load in the users presets from user_presets.dat + filePath = Application.StartupPath.ToString() + "\\user_presets.dat"; + if (File.Exists(filePath)) + { + StreamReader presetInput = new StreamReader(filePath); + while (!presetInput.EndOfStream) + { + if ((char)presetInput.Peek() == '+') + user_presets.Add(presetInput.ReadLine().Replace("+ ", "")); + else + presetInput.ReadLine(); + } + presetInput.Close(); + presetInput.Dispose(); + } + } + + // Add a single preset to user_presets.dat + private void addPresetToFile(string preset) + { + string userPresets = Application.StartupPath.ToString() + "\\user_presets.dat"; + try + { + // Create a StreamWriter and open the file + StreamWriter line = File.AppendText(userPresets); + + // Generate and write the preset string to the file + line.WriteLine(preset); + + // close the stream + line.Close(); + line.Dispose(); + MessageBox.Show("Your profile has been sucessfully added.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + } + catch (Exception exc) + { + MessageBox.Show("Unable to write to the file. Please make sure the location has the correct permissions for file writing.\n Error Information: \n\n" + exc.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand); + } + + } + + // Check if a preset already exists in either the built in or user presets + private Boolean checkIfPresetExists(string name) + { + if (name == "") + return true; + + // Built In Presets + foreach (string item in presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(x); + if (presetName[0] == name) + return true; + } + + // User Presets + foreach (string item in user_presets) + { + string x = item.Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(x); + if (presetName[0] == name) + return true; + } + + return false; } } -} + +} \ No newline at end of file -- cgit v1.2.3