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

Last change on this file since 1426 was 1426, checked in by malischewski, 12 years ago

Added support for multiple language files used for generation of Bigram/Trigram statistics, German/English for now.
Added support for custom (selected by user) language files for Bigram/Trigram statistics.

File size: 6.7 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       
113        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
114
115        internal void UpdateTaskPaneVisibility()
116        {
117            if (TaskPaneAttributeChanged == null)
118            {
119                return;
120            }
121
122            if (functionType.Equals(5))
123            {
124                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BytesToUse", Visibility.Visible)));
125                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("RegEx", Visibility.Visible)));
126            }
127            else
128            {
129                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BytesToUse", Visibility.Visible)));
130                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("RegEx", Visibility.Collapsed)));
131            }
132
133            if (functionType.Equals(4) || functionType.Equals(2) || functionType.Equals(3) || functionType.Equals(6))
134            {
135                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("StatisticsCorpus", Visibility.Visible)));
136
137            }
138            else
139            {
140                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("StatisticsCorpus", Visibility.Collapsed)));
141               
142            }
143           
144
145        }
146
147
148        private string regEx;
149        [TaskPane("Regular Expression:", "Regular Expression match", null, 5, false, DisplayLevel.Beginner, ControlType.TextBox)]
150        public String RegEx
151        {
152            get
153            {
154                return regEx;
155            }
156            set
157            {
158                regEx = value;
159                OnPropertyChanged("RegEx");
160            }
161        }
162
163        #region ISettings Members
164
165        public bool HasChanges
166        {
167            get
168            {
169                return hasChanges;
170            }
171            set
172            {
173                hasChanges = value;
174            }
175        }
176
177        #endregion
178
179        #region INotifyPropertyChanged Members
180
181        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
182
183        private void OnPropertyChanged(string p)
184        {
185            if (PropertyChanged != null)
186            {
187                PropertyChanged(this, new PropertyChangedEventArgs(p));
188            }
189        }
190
191        #endregion
192    }
193   
194   
195}
Note: See TracBrowser for help on using the repository browser.