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

Last change on this file since 1869 was 1869, checked in by malischewski, 11 years ago

Entropy switch visibility bug fix

File size: 9.6 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
39        private static DataManager dataMgr = new DataManager();
40        private const string DATATYPE = "transposition";
41        private static IDictionary<String, DataFileMetaInfo> txtList;
42        private static string[] files;
43        #endregion
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            }
175            else
176            {
177                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BytesToUse", Visibility.Visible)));
178                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("RegEx", Visibility.Collapsed)));
179            }
180
181            if (functionType.Equals(4) || functionType.Equals(2) || functionType.Equals(3) || functionType.Equals(6))
182            {
183                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("StatisticsCorpus", Visibility.Visible)));
184               
185            }
186            else
187            {
188                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("StatisticsCorpus", Visibility.Collapsed)));
189               
190               
191            }
192            if (functionType.Equals(6))
193            {
194                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("weighttable", Visibility.Visible)));
195
196            }
197            else
198            {
199                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("weighttable", Visibility.Collapsed)));
200
201            }
202            if (functionType.Equals(1))
203            {
204                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("entropy", Visibility.Visible)));
205            }
206            else
207            {
208                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("entropy", Visibility.Collapsed)));
209            }
210        }
211
212
213        private string regEx;
214        [TaskPane("Regular Expression:", "Regular Expression match", null, 5, false, DisplayLevel.Beginner, ControlType.TextBox)]
215        public String RegEx
216        {
217            get
218            {
219                return regEx;
220            }
221            set
222            {
223                regEx = value;
224                OnPropertyChanged("RegEx");
225            }
226        }
227
228        #region ISettings Members
229
230        public bool HasChanges
231        {
232            get
233            {
234                return hasChanges;
235            }
236            set
237            {
238                hasChanges = value;
239            }
240        }
241
242
243
244        #endregion
245
246        #region INotifyPropertyChanged Members
247
248        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
249
250        private void OnPropertyChanged(string p)
251        {
252            if (PropertyChanged != null)
253            {
254                PropertyChanged(this, new PropertyChangedEventArgs(p));
255            }
256        }
257
258        #endregion
259
260        #region testing
261        public void changeFunctionType(int type)
262        {
263                      this.functionType = type;
264                UpdateTaskPaneVisibility();
265                OnPropertyChanged("FunctionType");
266           
267       
268        }
269#endregion
270    }
271   
272   
273}
Note: See TracBrowser for help on using the repository browser.