source: trunk/CrypPlugins/KeySearcher/KeySearcherSettings.cs @ 1701

Last change on this file since 1701 was 1701, checked in by Paul Lelgemann, 11 years ago

o P2PEditor fixes

File size: 5.9 KB
Line 
1using System;
2using System.Numerics;
3using Cryptool.PluginBase;
4using System.ComponentModel;
5using System.Collections.ObjectModel;
6using KeySearcher.KeyPattern;
7
8namespace KeySearcher
9{
10    public class KeySearcherSettings : ISettings
11    {
12        private readonly KeySearcher keysearcher;
13        private int coresUsed;
14        private const string GroupPeerToPeer = "Peer-to-Peer network";
15
16        public KeySearcherSettings(KeySearcher ks)
17        {
18            keysearcher = ks;
19            CoresAvailable.Clear();
20            for (int i = 0; i < Environment.ProcessorCount; i++)
21                CoresAvailable.Add((i + 1).ToString());
22            CoresUsed = Environment.ProcessorCount - 1;
23
24            chunkSize = 21;
25        }
26
27        private string key;
28        [TaskPane("Key", "Key pattern used to bruteforce", null, 1, false, DisplayLevel.Beginner, ControlType.TextBox)]
29        public String Key
30        {
31            get
32            {
33                return key;
34            }
35            set
36            {
37                key = value;
38                OnPropertyChanged("Key");
39                if (!(keysearcher.Pattern != null && keysearcher.Pattern.testWildcardKey(value)))
40                    keysearcher.GuiLogMessage("Wrong key pattern!", NotificationLevel.Error);
41                HasChanges = true;
42            }
43        }
44
45        [TaskPane("Reset", "Reset Key", null, 2, false, DisplayLevel.Beginner, ControlType.Button)]
46        public void Reset()
47        {
48            Key = keysearcher.Pattern.giveInputPattern();
49        }
50       
51        [TaskPane("CoresUsed", "Choose how many cores should be used", null, 3, false, DisplayLevel.Beginner, ControlType.DynamicComboBox, new string[] { "CoresAvailable" })]
52        public int CoresUsed
53        {
54            get { return this.coresUsed; }
55            set
56            {
57                if (value != this.coresUsed)
58                {
59                    this.coresUsed = value;
60                    OnPropertyChanged("CoresUsed");
61                    HasChanges = true;
62                }
63            }
64        }
65
66        private bool usePeerToPeer;
67        [TaskPane("Use Peer-to-Peer network", "Distributes the operation on available peers by using the built-in peer-to-peer network.", GroupPeerToPeer, 0, false, DisplayLevel.Beginner,
68            ControlType.CheckBox)]
69        public bool UsePeerToPeer
70        {
71            get { return usePeerToPeer; }
72            set
73            {
74                if (value != usePeerToPeer)
75                {
76                    usePeerToPeer = value;
77                    OnPropertyChanged("UsePeerToPeer");
78                    HasChanges = true;
79                }
80            }
81        }
82
83        private bool autoconnectPeerToPeer;
84        [TaskPane("Autoconnect network", "Establish a connection to the network if the workspace is started without the background connection being active.", GroupPeerToPeer, 1, false, DisplayLevel.Beginner,
85            ControlType.CheckBox)]
86        public bool AutoconnectPeerToPeer
87        {
88            get { return autoconnectPeerToPeer; }
89            set
90            {
91                if (value != autoconnectPeerToPeer)
92                {
93                    autoconnectPeerToPeer = value;
94                    OnPropertyChanged("AutoconnectPeerToPeer");
95                    HasChanges = true;
96                }
97            }
98        }
99
100        private bool verbosePeerToPeerDisplay;
101        [TaskPane("Display verbose information", "Display verbose information about network requests in the quick watch.", GroupPeerToPeer, 2, true, DisplayLevel.Beginner,
102            ControlType.CheckBox)]
103        public bool VerbosePeerToPeerDisplay
104        {
105            get { return verbosePeerToPeerDisplay; }
106            set
107            {
108                if (value != verbosePeerToPeerDisplay)
109                {
110                    verbosePeerToPeerDisplay = value;
111                    OnPropertyChanged("VerbosePeerToPeerDisplay");
112                    HasChanges = true;
113                }
114            }
115        }
116
117        private int chunkSize;
118        [TaskPane("Chunk size", "Amount of keys, that will be calculated by one peer at a time. This value is the exponent of the power of two used for the chunk size.", GroupPeerToPeer, 3, false, DisplayLevel.Professional,
119            ControlType.NumericUpDown, ValidationType.RangeInteger, 1, 1000)]
120        public int ChunkSize
121        {
122            get { return chunkSize; }
123            set
124            {
125                if (value != chunkSize)
126                {
127                    chunkSize = value;
128                    OnPropertyChanged("ChunkSize");
129                    HasChanges = true;
130                }
131            }
132        }
133
134        private ObservableCollection<string> coresAvailable = new ObservableCollection<string>();
135        public ObservableCollection<string> CoresAvailable
136        {
137            get { return coresAvailable; }
138            set
139            {
140                if (value != coresAvailable)
141                {
142                    coresAvailable = value;
143                }
144                OnPropertyChanged("CoresAvailable");
145            }
146        }
147
148        #region ISettings Members
149
150        private bool hasChanges;
151
152        public bool HasChanges
153        {
154            get
155            {
156                return hasChanges;
157            }
158            set
159            {
160                hasChanges = value;
161                OnPropertyChanged("HasChanges");
162            }
163        }
164
165        #endregion
166
167        #region INotifyPropertyChanged Members
168
169        public event PropertyChangedEventHandler PropertyChanged;
170
171        private void OnPropertyChanged(string p)
172        {
173            if (PropertyChanged != null)
174            {
175                PropertyChanged(this, new PropertyChangedEventArgs(p));
176            }
177        }
178
179        #endregion
180    }
181}
Note: See TracBrowser for help on using the repository browser.