source: trunk/eraser6/Eraser.DefaultPlugins/SettingsForm.cs @ 1360

Revision 1360, 5.3 KB checked in by lowjoel, 5 years ago (diff)

Eraser's still under development, so update the copyright notice.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1/*
2 * $Id$
3 * Copyright 2008-2009 The Eraser Project
4 * Original Author: Joel Low <lowjoel@users.sourceforge.net>
5 * Modified By:
6 *
7 * This file is part of Eraser.
8 *
9 * Eraser is free software: you can redistribute it and/or modify it under the
10 * terms of the GNU General Public License as published by the Free Software
11 * Foundation, either version 3 of the License, or (at your option) any later
12 * version.
13 *
14 * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY
15 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
16 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17 *
18 * A copy of the GNU General Public License can be found at
19 * <http://www.gnu.org/licenses/>.
20 */
21
22using System;
23using System.Collections.Generic;
24using System.ComponentModel;
25using System.Data;
26using System.Drawing;
27using System.Text;
28using System.Windows.Forms;
29using System.Globalization;
30
31using Eraser.Manager;
32using Eraser.Util;
33
34namespace Eraser.DefaultPlugins
35{
36    public partial class SettingsForm : Form
37    {
38        public SettingsForm()
39        {
40            InitializeComponent();
41            UXThemeApi.UpdateControlTheme(this);
42
43            //Populate the list of erasure passes, except the FL16KB.
44            foreach (ErasureMethod method in ErasureMethodManager.Items.Values)
45                if (method.Guid != new Guid("{0C2E07BF-0207-49a3-ADE8-46F9E1499C01}"))
46                    fl16MethodCmb.Items.Add(method);
47
48            //Load the settings.
49            DefaultPluginSettings settings = DefaultPlugin.Settings;
50            if (settings.FL16Method != Guid.Empty)
51                foreach (object item in fl16MethodCmb.Items)
52                    if (((ErasureMethod)item).Guid == settings.FL16Method)
53                    {
54                        fl16MethodCmb.SelectedItem = item;
55                        break;
56                    }
57
58            if (fl16MethodCmb.SelectedIndex == -1)
59            {
60                Guid defaultMethodGuid =
61                    ManagerLibrary.Settings.DefaultFileErasureMethod;
62                foreach (object item in fl16MethodCmb.Items)
63                    if (((ErasureMethod)item).Guid == defaultMethodGuid)
64                    {
65                        fl16MethodCmb.SelectedItem = item;
66                        break;
67                    } 
68            }
69
70            if (DefaultPlugin.Settings.EraseCustom != null)
71            {
72                customMethods = DefaultPlugin.Settings.EraseCustom;
73
74                //Display the whole set on the list.
75                foreach (Guid guid in customMethods.Keys)
76                    AddMethod(customMethods[guid]);
77            }
78            else
79                customMethods = new Dictionary<Guid, CustomErasureMethod>();
80        }
81
82        private void customMethod_ItemActivate(object sender, EventArgs e)
83        {
84            //Create the dialog
85            CustomMethodEditorForm editorForm = new CustomMethodEditorForm();
86            ListViewItem item = customMethod.SelectedItems[0];
87            editorForm.Method = (CustomErasureMethod)item.Tag;
88
89            if (editorForm.ShowDialog() == DialogResult.OK)
90            {
91                //Remove the old definition of the erasure method
92                CustomErasureMethod method = editorForm.Method;
93                removeCustomMethods.Add(method.Guid);
94                customMethod.Items.Remove(item);
95                customMethods.Remove(method.Guid);
96
97                //Add the new definition
98                method = editorForm.Method;
99                addCustomMethods.Add(method);
100                AddMethod(method);
101            }
102        }
103
104        private void customMethodAdd_Click(object sender, EventArgs e)
105        {
106            CustomMethodEditorForm form = new CustomMethodEditorForm();
107            if (form.ShowDialog() == DialogResult.OK)
108            {
109                CustomErasureMethod method = form.Method;
110                customMethods.Add(method.Guid, method);
111                addCustomMethods.Add(method);
112                AddMethod(method);
113            }
114        }
115
116        private void customMethodContextMenuStrip_Opening(object sender, CancelEventArgs e)
117        {
118            e.Cancel = customMethod.SelectedIndices.Count == 0;
119        }
120
121        private void deleteMethodToolStripMenuItem_Click(object sender, EventArgs e)
122        {
123            foreach (ListViewItem item in customMethod.SelectedItems)
124            {
125                CustomErasureMethod method = (CustomErasureMethod)item.Tag;
126                if (addCustomMethods.IndexOf(method) >= 0)
127                    addCustomMethods.Remove(method);
128                else
129                    removeCustomMethods.Add(method.Guid);
130                customMethod.Items.Remove(item);
131            }
132        }
133
134        private void okBtn_Click(object sender, EventArgs e)
135        {
136            //Save the settings to the settings dictionary
137            if (fl16MethodCmb.SelectedIndex == -1)
138            {
139                errorProvider.SetError(fl16MethodCmb, S._("An invalid erasure method was selected."));
140                return;
141            }
142
143            DefaultPlugin.Settings.FL16Method = ((ErasureMethod)fl16MethodCmb.SelectedItem).Guid;
144
145            //Remove the old methods.
146            foreach (Guid guid in removeCustomMethods)
147            {
148                customMethods.Remove(guid);
149                ErasureMethodManager.Unregister(guid);
150            }
151
152            //Save the list of custom erasure methods
153            DefaultPlugin.Settings.EraseCustom = customMethods;
154
155            //Update the Erasure method manager on the methods
156            foreach (CustomErasureMethod method in addCustomMethods)
157                ErasureMethodManager.Register(new EraseCustom(method), new object[] { method });
158
159            //Close the dialog
160            DialogResult = DialogResult.OK;
161            Close();
162        }
163
164        /// <summary>
165        /// Adds the given method to the custom methods list.
166        /// </summary>
167        /// <param name="method">The method to add.</param>
168        private void AddMethod(CustomErasureMethod method)
169        {
170            ListViewItem item = customMethod.Items.Add(method.Name);
171            item.SubItems.Add(method.Passes.Length.ToString(CultureInfo.CurrentCulture));
172            item.Tag = method;
173        }
174
175        private Dictionary<Guid, CustomErasureMethod> customMethods;
176        private List<CustomErasureMethod> addCustomMethods = new List<CustomErasureMethod>();
177        private List<Guid> removeCustomMethods = new List<Guid>();
178    }
179}
Note: See TracBrowser for help on using the repository browser.