source: trunk/CrypPlugins/CostFunction/CostFunctionSettings.cs @ 2147

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

fixed #163

  • DataManager is able to find data files again
  • cause: Data directory has moved from top level Data\ to CrypPlugins\Data\
File size: 10.3 KB
Line 
1/*                             
2   Copyright 2009 Team CrypTool (Sven Rech,Dennis Nolte,Raoul Falk,Nils Kopal), Uni Duisburg-Essen
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*/
16
17using System;
18using System.Collections.Generic;
19using System.Linq;
20using System.Text;
21using System.ComponentModel;
22using Cryptool.PluginBase;
23using System.Collections.ObjectModel;
24using System.Windows;
25using Cryptool.PluginBase.Miscellaneous;
26
27using System.Windows.Forms;
28
29namespace Cryptool.Plugins.CostFunction
30{
31    class CostFunctionSettings : ISettings
32    {
33        #region private variables
34        private bool hasChanges = false;
35        private int functionType;
36        private String bytesToUse = "256";
37        private int bytesToUseInteger = 256;
38        #endregion
39
40        public void Initialize()
41        {
42            UpdateTaskPaneVisibility();
43        }
44
45        [TaskPane("FunctionType", "Select the type of function", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Index of coincidence", "Entropy", "Bigrams: log 2", "Bigrams: Sinkov", "Bigrams: Percentaged", "Regular Expression", "Weighted Bigrams/Trigrams"})]
46        public int FunctionType
47        {
48            get { return this.functionType; }
49            set
50            {
51                this.functionType = (int)value;
52                UpdateTaskPaneVisibility();
53                OnPropertyChanged("FunctionType");
54            }
55        }
56
57        [TaskPane("Bytes to use", "Which amount of bytes should be used for calculating?", null, 4, false, DisplayLevel.Beginner, ControlType.TextBox)]
58        public String BytesToUse
59        {
60            get
61            {
62                return bytesToUse;
63            }
64            set
65            {
66                bytesToUse = value;
67                bytesToUseInteger = int.Parse(value);
68                OnPropertyChanged("BytesToUse");
69            }
70        }
71
72        public int BytesToUseInteger
73        {
74            get { return bytesToUseInteger; }
75        }
76
77
78        public string customFilePath;
79        public int statisticscorpus = 0;
80        [TaskPane("Text Corpus File to use", "Select a text corpus file (Default is (DE))", null, 7, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Text corpus (DE)", "Text corpus (EN)", "Custom (...)" })]
81        public int StatisticsCorpus
82        {
83            get
84            {
85              return statisticscorpus;
86            }
87            set
88            {
89                statisticscorpus = value;
90                if (statisticscorpus == 2)
91                {
92                   
93
94                    OpenFileDialog openCorpusFile = new OpenFileDialog();
95                    openCorpusFile.Title = "Select text corpus file";
96                    openCorpusFile.CheckFileExists = true;
97                    openCorpusFile.CheckPathExists = true;
98                    openCorpusFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
99                    if (openCorpusFile.ShowDialog() == DialogResult.OK)
100                    {
101                        customFilePath = openCorpusFile.FileName;
102                    }
103                    else
104                    {
105                        statisticscorpus = 0; // Fall back to default
106                    }
107                }
108                UpdateTaskPaneVisibility();
109                OnPropertyChanged("StatisticsCorpus");
110            }
111        }
112        public int entropyselect;
113        [TaskPane("Select Entropy function", "Select an Entropy function", null, 9, false, DisplayLevel.Expert, ControlType.ComboBox, new string[] { "External (NativeCryptography, default)", "Internal" })]
114        public int entropy
115        {
116            get
117            {
118                return entropyselect;
119            }
120
121            set
122            {
123                entropyselect = value;
124                OnPropertyChanged("entropy");
125            }
126        }
127
128        public string customfwtpath;
129        public int fwt = 0; //fwt = fitness weight table
130        [TaskPane("Fitness Weight Table to use", "Select a fitness weight table", null, 8, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Matthews", "Toemeh-Arumugam", "Custom Weight table (*.csv)" })]
131        public int weighttable
132        {
133            get
134            {
135                return fwt;
136            }
137            set
138            {
139                fwt = value;
140                if (fwt == 2)
141                {
142                    OpenFileDialog openfwt = new OpenFileDialog();
143                    openfwt.Title = "Select fitness weight table";
144                    openfwt.CheckFileExists = true;
145                    openfwt.CheckPathExists = true;
146                    openfwt.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*";
147                    if (openfwt.ShowDialog() == DialogResult.OK)
148                    {
149                        customfwtpath = openfwt.FileName;
150                    }
151                    else
152                    {
153                        fwt = 0; // Fall back to default
154                    }
155                }
156                OnPropertyChanged("weighttable");
157            }
158        }
159       
160
161        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
162
163        internal void UpdateTaskPaneVisibility()
164        {
165            if (TaskPaneAttributeChanged == null)
166            {
167                return;
168            }
169
170            if (functionType.Equals(5))
171            {
172                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BytesToUse", Visibility.Visible)));
173                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("RegEx", Visibility.Visible)));
174                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CaseInsensitiv", Visibility.Visible)));
175            }
176            else
177            {
178                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BytesToUse", Visibility.Visible)));
179                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("RegEx", Visibility.Collapsed)));
180                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("CaseInsensitiv", Visibility.Collapsed)));
181            }
182
183            if (functionType.Equals(4) || functionType.Equals(2) || functionType.Equals(3) || functionType.Equals(6))
184            {
185                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("StatisticsCorpus", Visibility.Visible)));
186               
187            }
188            else
189            {
190                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("StatisticsCorpus", Visibility.Collapsed)));
191               
192               
193            }
194            if (functionType.Equals(6))
195            {
196                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("weighttable", Visibility.Visible)));
197
198            }
199            else
200            {
201                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("weighttable", Visibility.Collapsed)));
202
203            }
204            if (functionType.Equals(1))
205            {
206                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("entropy", Visibility.Visible)));
207            }
208            else
209            {
210                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("entropy", Visibility.Collapsed)));
211            }
212        }
213
214
215        private string regEx;
216        [TaskPane("Regular Expression", "Regular Expression match", null, 5, false, DisplayLevel.Beginner, ControlType.TextBox)]
217        public String RegEx
218        {
219            get
220            {
221                return regEx;
222            }
223            set
224            {
225                regEx = value;
226                OnPropertyChanged("RegEx");
227            }
228        }
229
230        private bool caseInsensitiv;
231        [TaskPane("Case Insensitiv", "If checked, the regular expression will be used in a case insensitiv manner.", null, 6, false, DisplayLevel.Beginner, ControlType.CheckBox)]
232        public bool CaseInsensitiv
233        {
234            get { return caseInsensitiv; }
235            set
236            {
237                if (value != caseInsensitiv)
238                {
239                    caseInsensitiv = value;
240                    hasChanges = true;
241                    OnPropertyChanged("CaseInsensitiv");
242                }
243            }
244        }
245
246        #region ISettings Members
247
248        public bool HasChanges
249        {
250            get
251            {
252                return hasChanges;
253            }
254            set
255            {
256                hasChanges = value;
257            }
258        }
259
260
261
262        #endregion
263
264        #region INotifyPropertyChanged Members
265
266        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
267
268        private void OnPropertyChanged(string p)
269        {
270            if (PropertyChanged != null)
271            {
272                PropertyChanged(this, new PropertyChangedEventArgs(p));
273            }
274        }
275
276        #endregion
277
278        #region testing
279        public void changeFunctionType(int type)
280        {
281                      this.functionType = type;
282                UpdateTaskPaneVisibility();
283                OnPropertyChanged("FunctionType");
284           
285       
286        }
287#endregion
288    }
289   
290   
291}
Note: See TracBrowser for help on using the repository browser.