Changeset 2044
- Timestamp:
- 5/4/2010 2:07:02 AM (3 years ago)
- Location:
- trunk/eraser
- Files:
-
- 1 added
- 12 edited
-
Eraser.DefaultPlugins/Eraser.DefaultPlugins.csproj (modified) (1 diff)
-
Eraser.DefaultPlugins/ErasureTargets/FileErasureTarget.cs (modified) (1 diff)
-
Eraser.DefaultPlugins/ErasureTargets/FileErasureTargetConfigurer.cs (modified) (3 diffs)
-
Eraser.DefaultPlugins/ErasureTargets/FolderErasureTarget.cs (modified) (1 diff)
-
Eraser.DefaultPlugins/ErasureTargets/FolderErasureTargetConfigurer.cs (modified) (3 diffs)
-
Eraser.DefaultPlugins/ErasureTargets/RecycleBinErasureTargetConfigurer.cs (added)
-
Eraser.DefaultPlugins/ErasureTargets/UnusedSpaceErasureTarget.cs (modified) (1 diff)
-
Eraser.DefaultPlugins/ErasureTargets/UnusedSpaceErasureTargetConfigurer.cs (modified) (3 diffs)
-
Eraser.Manager/Eraser.Manager.csproj (modified) (1 diff)
-
Eraser.Manager/ErasureTarget.cs (modified) (1 diff)
-
Eraser.Manager/IConfigurer.cs (modified) (1 diff)
-
Eraser/Program.cs (modified) (1 diff)
-
Eraser/TaskDataSelectionForm.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/eraser/Eraser.DefaultPlugins/Eraser.DefaultPlugins.csproj
r2043 r2044 99 99 </Compile> 100 100 <Compile Include="ErasureTargets\RecycleBinErasureTarget.cs" /> 101 <Compile Include="ErasureTargets\RecycleBinErasureTargetConfigurer.cs" /> 101 102 <Compile Include="ErasureTargets\UnusedSpaceErasureTarget.cs" /> 102 103 <Compile Include="ErasureTargets\UnusedSpaceErasureTargetConfigurer.cs"> -
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FileErasureTarget.cs
r2040 r2044 61 61 public override IErasureTargetConfigurer Configurer 62 62 { 63 get { return new FileErasureTarget Settings(); }63 get { return new FileErasureTargetConfigurer(); } 64 64 } 65 65 -
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FileErasureTargetConfigurer.cs
r2043 r2044 29 29 using System.Windows.Forms; 30 30 31 using System.Text.RegularExpressions; 32 31 33 using Eraser.Manager; 32 34 using Eraser.Util; … … 41 43 } 42 44 43 #region I ErasureTargetConfigurerMembers45 #region IConfigurer<ErasureTarget> Members 44 46 45 47 public void LoadFrom(ErasureTarget target) … … 72 74 #endregion 73 75 76 #region ICliConfigurer<ErasureTarget> Members 77 78 public void Help() 79 { 80 throw new NotImplementedException(); 81 } 82 83 public bool ProcessArgument(string argument) 84 { 85 Regex regex = new Regex("file=(?<fileName>.*)", 86 RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.RightToLeft); 87 Match match = regex.Match(argument); 88 89 if (match.Groups["fileName"].Success) 90 { 91 filePath.Text = match.Groups["fileName"].Value; 92 return true; 93 } 94 95 return false; 96 } 97 98 #endregion 99 74 100 private void fileBrowse_Click(object sender, EventArgs e) 75 101 { -
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FolderErasureTarget.cs
r2039 r2044 79 79 public override IErasureTargetConfigurer Configurer 80 80 { 81 get { return new FolderErasureTarget Settings(); }81 get { return new FolderErasureTargetConfigurer(); } 82 82 } 83 83 -
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/FolderErasureTargetConfigurer.cs
r2043 r2044 29 29 using System.Windows.Forms; 30 30 31 using System.Text.RegularExpressions; 32 31 33 using Eraser.Manager; 32 34 using Eraser.Util; … … 41 43 } 42 44 43 #region I ErasureTargetConfigurerMembers45 #region IConfigurer<ErasureTarget> Members 44 46 45 47 public void LoadFrom(ErasureTarget target) … … 78 80 #endregion 79 81 82 #region ICliConfigurer<ErasureTarget> Members 83 84 public void Help() 85 { 86 throw new NotImplementedException(); 87 } 88 89 public bool ProcessArgument(string argument) 90 { 91 //The directory target, taking a list of + and - wildcard expressions. 92 Regex regex = new Regex("dir=(?<directoryName>.*)(?<directoryParams>(?<directoryExcludeMask>,-[^,]+)|(?<directoryIncludeMask>,\\+[^,]+)|(?<directoryDeleteIfEmpty>,deleteIfEmpty(=(?<directoryDeleteIfEmptyValue>true|false))?))*", 93 RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.RightToLeft); 94 Match match = regex.Match(argument); 95 96 if (match.Groups["directoryName"].Success) 97 { 98 folderPath.Text = match.Groups["directoryName"].Value; 99 if (!match.Groups["directoryDeleteIfEmpty"].Success) 100 folderDelete.Checked = false; 101 else if (!match.Groups["directoryDeleteIfEmptyValue"].Success) 102 folderDelete.Checked = true; 103 else 104 folderDelete.Checked = 105 trueValues.IndexOf(match.Groups["directoryDeleteIfEmptyValue"].Value) != -1; 106 107 if (match.Groups["directoryExcludeMask"].Success) 108 folderExclude.Text += match.Groups["directoryExcludeMask"].Value.Remove(0, 2) + ' '; 109 if (match.Groups["directoryIncludeMask"].Success) 110 folderInclude.Text += match.Groups["directoryIncludeMask"].Value.Remove(0, 2) + ' '; 111 } 112 113 return false; 114 } 115 116 #endregion 117 80 118 private void folderBrowse_Click(object sender, EventArgs e) 81 119 { -
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/UnusedSpaceErasureTarget.cs
r2039 r2044 113 113 public override IErasureTargetConfigurer Configurer 114 114 { 115 get { return new UnusedSpaceErasureTarget Settings(); }115 get { return new UnusedSpaceErasureTargetConfigurer(); } 116 116 } 117 117 -
trunk/eraser/Eraser.DefaultPlugins/ErasureTargets/UnusedSpaceErasureTargetConfigurer.cs
r2043 r2044 28 28 using System.Text; 29 29 using System.Windows.Forms; 30 30 31 using System.IO; 32 using System.Text.RegularExpressions; 31 33 32 34 using Eraser.Manager; … … 95 97 } 96 98 97 #region I ErasureTargetConfigurerMembers99 #region IConfigurer<ErasureTarget> Members 98 100 99 101 public void LoadFrom(ErasureTarget target) … … 120 122 unused.EraseClusterTips = unusedClusterTips.Checked; 121 123 return true; 124 } 125 126 #endregion 127 128 #region ICliConfigurer<ErasureTarget> Members 129 130 public void Help() 131 { 132 throw new NotImplementedException(); 133 } 134 135 public bool ProcessArgument(string argument) 136 { 137 //The unused space erasure target, taking the optional clusterTips 138 //argument which defaults to true; if none is specified it's assumed 139 //false 140 Regex regex = new Regex("unused=(?<unusedVolume>.*)(?<unusedTips>,clusterTips(=(?<unusedTipsValue>true|false))?)?", 141 RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.RightToLeft); 142 Match match = regex.Match(argument); 143 144 if (match.Groups["unusedVolume"].Success) 145 { 146 foreach (object item in unusedDisk.Items) 147 if (((DriveItem)item).Drive.ToUpperInvariant() == 148 match.Groups["unusedVolume"].Value.ToUpperInvariant()) 149 { 150 unusedDisk.SelectedItem = item; 151 } 152 153 if (!match.Groups["unusedTips"].Success) 154 unusedClusterTips.Checked = false; 155 else if (!match.Groups["unusedTipsValue"].Success) 156 unusedClusterTips.Checked = true; 157 else 158 unusedClusterTips.Checked = 159 trueValues.IndexOf(match.Groups["unusedTipsValue"].Value) != -1; 160 } 161 162 return false; 122 163 } 123 164 -
trunk/eraser/Eraser.Manager/Eraser.Manager.csproj
r2036 r2044 71 71 <Compile Include="Executor.cs" /> 72 72 <Compile Include="FileSystem.cs" /> 73 <Compile Include="IConfigurer.cs" /> 73 74 <Compile Include="IRegistrar.cs" /> 74 75 <Compile Include="ManagerLibrary.cs" /> -
trunk/eraser/Eraser.Manager/ErasureTarget.cs
r2042 r2044 179 179 /// object. 180 180 /// </summary> 181 public interface IErasureTargetConfigurer : IC onfigurer<ErasureTarget>181 public interface IErasureTargetConfigurer : ICliConfigurer<ErasureTarget> 182 182 { 183 183 } -
trunk/eraser/Eraser.Manager/IConfigurer.cs
r2042 r2044 48 48 bool SaveTo(T target); 49 49 } 50 51 /// <summary> 52 /// Represents an object which is able to configure a given instance of 53 /// <typeparamref name="T"/> from the Command Line. 54 /// </summary> 55 /// <typeparam name="T">The type to configure</typeparam> 56 public interface ICliConfigurer<T> : IConfigurer<T> 57 { 58 /// <summary> 59 /// Displays the help for the current configurer. 60 /// </summary> 61 void Help(); 62 63 /// <summary> 64 /// Sets the configuration of the current configurer from the provided 65 /// command line argument. 66 /// </summary> 67 /// <param name="argument">The argument on the command line.</param> 68 /// <returns>True if the argument is accepted by the configurer.</returns> 69 bool ProcessArgument(string argument); 70 } 50 71 } -
trunk/eraser/Eraser/Program.cs
r2015 r2044 400 400 //Parse the rest of the command line parameters as target expressions. 401 401 List<string> trueValues = new List<string>(new string[] { "yes", "true" }); 402 string[] strings = new string[] {403 //The recycle bin target404 "(?<recycleBin>recyclebin)",405 406 //The unused space erasure target, taking the optional clusterTips407 //argument which defaults to true; if none is specified it's assumed408 //false409 "unused=(?<unusedVolume>.*)(?<unusedTips>,clusterTips(=(?<unusedTipsValue>true|false))?)?",410 411 //The directory target, taking a list of + and - wildcard expressions.412 "dir=(?<directoryName>.*)(?<directoryParams>(?<directoryExcludeMask>,-[^,]+)|(?<directoryIncludeMask>,\\+[^,]+)|(?<directoryDeleteIfEmpty>,deleteIfEmpty(=(?<directoryDeleteIfEmptyValue>true|false))?))*",413 414 //The file target.415 "file=(?<fileName>.*)"416 };417 418 Regex regex = new Regex(string.Join("|", strings),419 RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.RightToLeft);420 402 foreach (string argument in arguments.PositionalArguments) 421 403 { 422 Match match = regex.Match(argument); 423 if (match.Captures.Count == 0) 404 bool processed = false; 405 foreach (ErasureTarget target in ManagerLibrary.Instance.ErasureTargetRegistrar) 406 if (target.Configurer.ProcessArgument(argument)) 407 { 408 target.Method = method; 409 task.Targets.Add(target); 410 processed = true; 411 break; 412 } 413 414 if (!processed) 424 415 { 425 416 Console.WriteLine("Unknown argument: {0}, skipped.", argument); 426 417 continue; 427 418 } 428 429 ErasureTarget target = null;430 if (match.Groups["recycleBin"].Success)431 {432 target = new RecycleBinTarget();433 }434 else if (match.Groups["unusedVolume"].Success)435 {436 UnusedSpaceTarget unusedSpaceTarget = new UnusedSpaceTarget();437 target = unusedSpaceTarget;438 unusedSpaceTarget.Drive = match.Groups["unusedVolume"].Value;439 440 if (!match.Groups["unusedTips"].Success)441 unusedSpaceTarget.EraseClusterTips = false;442 else if (!match.Groups["unusedTipsValue"].Success)443 unusedSpaceTarget.EraseClusterTips = true;444 else445 unusedSpaceTarget.EraseClusterTips =446 trueValues.IndexOf(match.Groups["unusedTipsValue"].Value) != -1;447 }448 else if (match.Groups["directoryName"].Success)449 {450 FolderTarget folderTarget = new FolderTarget();451 target = folderTarget;452 453 folderTarget.Path = match.Groups["directoryName"].Value;454 if (!match.Groups["directoryDeleteIfEmpty"].Success)455 folderTarget.DeleteIfEmpty = false;456 else if (!match.Groups["directoryDeleteIfEmptyValue"].Success)457 folderTarget.DeleteIfEmpty = true;458 else459 folderTarget.DeleteIfEmpty =460 trueValues.IndexOf(match.Groups["directoryDeleteIfEmptyValue"].Value) != -1;461 if (match.Groups["directoryExcludeMask"].Success)462 folderTarget.ExcludeMask += match.Groups["directoryExcludeMask"].Value.Remove(0, 2) + ' ';463 if (match.Groups["directoryIncludeMask"].Success)464 folderTarget.IncludeMask += match.Groups["directoryIncludeMask"].Value.Remove(0, 2) + ' ';465 }466 else if (match.Groups["fileName"].Success)467 {468 FileTarget fileTarget = new FileTarget();469 target = fileTarget;470 fileTarget.Path = match.Groups["fileName"].Value;471 }472 473 if (target == null)474 continue;475 476 target.Method = method;477 task.Targets.Add(target);478 419 } 479 420 -
trunk/eraser/Eraser/TaskDataSelectionForm.cs
r2029 r2044 67 67 68 68 //Insert the types of erasure targets 69 typeCmb.Items.Add(new ErasureType("File", new FileTarget())); 70 typeCmb.Items.Add(new ErasureType("Files in Folder", new FolderTarget())); 71 typeCmb.Items.Add(new ErasureType("Unused disk space", new UnusedSpaceTarget())); 72 typeCmb.Items.Add(new ErasureType("Recycle Bin", new RecycleBinTarget())); 73 typeCmb.SelectedIndex = 0; 69 foreach (ErasureTarget target in ManagerLibrary.Instance.ErasureTargetRegistrar) 70 typeCmb.Items.Add(new ErasureType(target.GetType().Name, target)); 71 if (typeCmb.Items.Count != 0) 72 typeCmb.SelectedIndex = 0; 74 73 75 76 74 //And the methods list 77 this.methodCmb.Items.Add(ErasureMethodRegistrar.Default);75 methodCmb.Items.Add(ErasureMethodRegistrar.Default); 78 76 foreach (ErasureMethod method in ManagerLibrary.Instance.ErasureMethodRegistrar) 79 this.methodCmb.Items.Add(method);80 if ( this.methodCmb.Items.Count != 0)81 this.methodCmb.SelectedIndex = 0;77 methodCmb.Items.Add(method); 78 if (methodCmb.Items.Count != 0) 79 methodCmb.SelectedIndex = 0; 82 80 } 83 81
Note: See TracChangeset
for help on using the changeset viewer.
