source: trunk/CrypPlugins/PlayfairAnalysisStatistic/PlayfairAnalysisStatisticSettings.cs @ 2334

Last change on this file since 2334 was 2334, checked in by Matthäus Wander, 11 years ago

removed 1006 occurences of DisplayLevel in 218 files (see #122)

File size: 9.0 KB
Line 
1/* HOWTO: Change year, author name and organization.
2   Copyright 2010 Your Name, University of Duckburg
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15*/
16using System;
17using System.Collections.Generic;
18using System.Linq;
19using System.Text;
20using Cryptool.PluginBase;
21using System.ComponentModel;
22using System.Windows;
23using System.Windows.Controls;
24
25namespace Cryptool.Plugins.PlayfairAnalysisStatistic
26{
27    public class PlayfairAnalysisStatisticSettings : ISettings
28    {
29        #region Private Variables
30
31        private string textCorpusFile;
32        private bool hasChanges = false;
33        private int matrixSize = 0;
34        private string alphabet;
35        private char removeChar;
36        private char replacementChar;
37        private char separator;
38        private char separatorReplacement;
39        private bool corpusToUpper;
40        private bool convertSpecialSigns;
41        private bool replaceCharacter;
42                       
43        #endregion
44
45        #region Constructor
46
47        public PlayfairAnalysisStatisticSettings()
48        {
49
50        }
51
52        #endregion
53
54        #region TaskPane Settings
55
56        [PropertySaveOrder(0)]
57        [TaskPane("Text Corpus", "txt file used to create the bigraph statistic", null, 1, false, ControlType.OpenFileDialog)]
58        public string TextCorpusFile
59        {
60            get
61            {
62                return textCorpusFile;
63            }
64            set
65            {               
66                if (textCorpusFile != value)
67                {
68                    textCorpusFile = value;
69                    hasChanges = true;
70                }
71            }
72        }
73
74        [PropertySaveOrder(2)]
75        [TaskPane("Matrix Size", "Size of Matrix used for fomatting", null, 2, false, ControlType.RadioButton, new string[] { "5 x 5", "6 x 6" })]
76        public int MatrixSize
77        {
78            get
79            {
80                return matrixSize;
81            }
82            set
83            {
84                if (matrixSize != value)
85                {
86                    if (value == 0)
87                    {
88                        Alphabet = SmallAlphabet;                       
89                    }
90                    else
91                    {
92                        Alphabet = LargeAlphabet;                       
93                    }
94                                       
95                    matrixSize = value;
96                    OnPropertyChanged("MatrixSize");
97                    hasChanges = true;
98                }
99            }
100        }
101
102        [PropertySaveOrder(3)]
103        [TaskPane("Alphabet", "Alphabet used for formatting", null, 3, false, ControlType.TextBox, "")]
104        public string Alphabet
105        {
106            get { return this.alphabet; }
107            set
108            {
109                if (value != this.alphabet) HasChanges = true;
110                this.alphabet = value;
111                OnPropertyChanged("Alphabet");
112            }
113        }
114
115        [PropertySaveOrder(6)]
116        [TaskPane("Replace Character", "Replace a character by another", null, 4, false, ControlType.CheckBox, "")]
117        public bool ReplaceCharacter
118        {
119            get { return this.replaceCharacter; }
120            set
121            {
122                if (value != this.replaceCharacter) HasChanges = true;
123                this.replaceCharacter = value;
124                OnPropertyChanged("ReplaceCharacter");
125                if (value)
126                {
127                    if (TaskPaneAttributeChanged != null)
128                    {
129                        TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("RemoveChar", Visibility.Visible)));
130                        TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("ReplacementChar", Visibility.Visible)));
131                    }
132                }
133                else
134                {
135                    if (TaskPaneAttributeChanged != null)
136                    {
137                        TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("RemoveChar", Visibility.Collapsed)));
138                        TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("ReplacementChar", Visibility.Collapsed)));
139                    }
140                }
141            }
142        }
143
144        [PropertySaveOrder(4)]
145        [TaskPane("Replace", "Character to be replaced", null, 5, false, ControlType.TextBox, "")]
146        public char RemoveChar
147        {
148            get { return this.removeChar; }
149            set
150            {
151                if (value != this.removeChar) HasChanges = true;
152                this.removeChar = value;
153                OnPropertyChanged("RemoveChar");
154            }
155        }
156
157
158        [PropertySaveOrder(5)]
159        [TaskPane("by", "Replacement character", null, 6, false, ControlType.TextBox, "")]
160        public char ReplacementChar
161        {
162            get { return this.replacementChar; }
163            set
164            {
165                if (value != this.replacementChar) HasChanges = true;
166                this.replacementChar = value;
167                OnPropertyChanged("ReplacementChar");
168            }
169        }
170
171        [PropertySaveOrder(7)]
172        [TaskPane("Separator", "Enter the character to separate pairs of identical letters", null, 7, false, ControlType.TextBox, "")]
173        public char Separator
174        {
175            get { return this.separator; }
176            set
177            {
178                if (value != this.separator) HasChanges = true;
179                this.separator = value;
180                OnPropertyChanged("Separator");
181            }
182        }
183
184        [PropertySaveOrder(8)]
185        [TaskPane("Separator Replacement", "Enter the character to separate double separators", null, 8, false, ControlType.TextBox, "")]
186        public char SeparatorReplacement
187        {
188            get { return this.separatorReplacement; }
189            set
190            {
191                if (value != this.separatorReplacement) HasChanges = true;
192                this.separatorReplacement = value;
193                OnPropertyChanged("SeparatorReplacement");
194            }
195        }
196
197        [PropertySaveOrder(9)]
198        [TaskPane("Text Corpus to upper", "Convert text corpus to upper case", null, 9, false, ControlType.CheckBox, "")]
199        public bool CorpusToUpper
200        {
201            get { return this.corpusToUpper; }
202            set
203            {
204                if (value != this.corpusToUpper) HasChanges = true;
205                this.corpusToUpper = value;
206                OnPropertyChanged("CorpusToUpper");
207            }
208        }
209
210        [PropertySaveOrder(10)]
211        [TaskPane("Convert mutated vowels and sharp s", "Convert mutated vowels and sharp s", null, 10, false, ControlType.CheckBox, "")]
212        public bool ConvertSpecialSigns
213        {
214            get { return this.convertSpecialSigns; }
215            set
216            {
217                if (value != this.convertSpecialSigns) HasChanges = true;
218                this.convertSpecialSigns = value;
219                OnPropertyChanged("ConvertSpecialSigns");
220            }
221        }
222
223
224        #endregion
225
226        #region public variables
227
228        public string SmallAlphabet = "ABCDEFGHIKLMNOPQRSTUVWXYZ";
229        public string LargeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
230
231        #endregion
232
233
234
235        #region ISettings Members
236
237        /// <summary>
238        /// HOWTO: This flags indicates whether some setting has been changed since the last save.
239        /// If a property was changed, this becomes true, hence CrypTool will ask automatically if you want to save your changes.
240        /// </summary>
241        public bool HasChanges
242        {
243            get
244            {
245                return hasChanges;
246            }
247            set
248            {
249                hasChanges = value;
250            }
251        }
252
253        #endregion
254
255        #region INotifyPropertyChanged Members
256
257        public event PropertyChangedEventHandler PropertyChanged;
258        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
259               
260        protected void OnPropertyChanged(string name)
261        {
262            if (PropertyChanged != null)
263            {
264                PropertyChanged(this, new PropertyChangedEventArgs(name));
265            }
266        }
267
268        #endregion
269    }
270}
Note: See TracBrowser for help on using the repository browser.