source: trunk/CrypPlugins/SZ42/LorenzSettings.cs @ 2263

Last change on this file since 2263 was 1986, checked in by Wilmer Andres Daza Gomez, 11 years ago

improvements on the way to
setup the wheels pattern and
position. separate the pattern and position of each wheel
to be entered individual

File size: 18.4 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;
22
23namespace Cryptool.Plugins.SZ42
24{
25    public class LorenzSettings : ISettings
26    {
27        #region Private Variables
28
29        private int limitation = 0;
30        private string[] patterns = new string[12];
31        private string [] positions = new string[12];
32        private int action = 0;
33        private bool inputParsed = false;
34        private bool outputParsed = false;
35        private bool hasChanges = false;
36
37        #endregion
38
39        #region Public Interface
40
41        /// <summary>
42        /// We use this delegate to send log messages from the settings class to the Caesar plugin
43        /// </summary>
44        public delegate void LorenzLogMessage(string msg, NotificationLevel loglevel);
45        public event LorenzLogMessage LogMessage;
46        public delegate void LorenzReExecute();
47        public event LorenzReExecute ReExecute;
48
49        public string[] Patterns
50        {
51            get { return patterns; }
52            //set { patterns = value; }
53        }
54
55        public string[] Positions
56        {
57            get { return positions; }
58            //set { positions = value; }
59        }
60
61        #endregion
62
63        #region TaskPane Settings
64
65        #region General Settings
66
67        [TaskPane("Action", "Select the Algorithm action", "General Settings", 0, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Encrypt", "Decrypt" })]
68        public int Action
69        {
70            get
71            {
72                return this.action;
73            }
74            set
75            {
76                if (value != action) HasChanges = true;
77                this.action = value;
78                OnPropertyChanged("Action");
79
80                if (ReExecute != null) ReExecute();
81            }
82        }
83
84        [TaskPane("Limitation", "Select the limitation type", "General Settings", 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "Chi2 One Back", "None" })]
85        public int Limitation
86        {
87            get
88            {
89                return this.limitation;
90            }
91            set
92            {
93                if (value != limitation) HasChanges = true;
94                this.limitation = value;
95                OnPropertyChanged("Limitation");
96
97                if (ReExecute != null) ReExecute();
98            }
99        }
100
101        #endregion
102
103        #region Wheels Patterns
104
105        [TaskPane("Wheel χ1 Pattern ", "Set the wheel χ1 pattern", "Wheels Patterns", 2, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
106        public string Patternχ1
107        {
108            get
109            {
110                return this.patterns[0];
111            }
112            set
113            {
114                if (value != patterns[0]) HasChanges = true;
115                this.patterns[0] = value;
116                OnPropertyChanged("Pattern");
117
118                if (ReExecute != null) ReExecute();
119            }
120        }
121
122        [TaskPane("Wheel χ2 Pattern ", "Set the wheel χ2 pattern", "Wheels Patterns", 3, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
123        public string Patternχ2
124        {
125            get
126            {
127                return this.patterns[1];
128            }
129            set
130            {
131                if (value != patterns[1]) HasChanges = true;
132                this.patterns[1] = value;
133                OnPropertyChanged("Patternχ2");
134
135                if (ReExecute != null) ReExecute();
136            }
137        }
138
139        [TaskPane("Wheel χ3 Pattern ", "Set the wheel χ3 pattern", "Wheels Patterns", 4, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
140        public string Patternχ3
141        {
142            get
143            {
144                return this.patterns[2];
145            }
146            set
147            {
148                if (value != patterns[2]) HasChanges = true;
149                this.patterns[2] = value;
150                OnPropertyChanged("Patternχ3");
151
152                if (ReExecute != null) ReExecute();
153            }
154        }
155
156        [TaskPane("Wheel χ4 Pattern ", "Set the wheel χ4 pattern", "Wheels Patterns", 5, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
157        public string Patternχ4
158        {
159            get
160            {
161                return this.patterns[3];
162            }
163            set
164            {
165                if (value != patterns[3]) HasChanges = true;
166                this.patterns[3] = value;
167                OnPropertyChanged("Patternχ4");
168
169                if (ReExecute != null) ReExecute();
170            }
171        }
172
173        [TaskPane("Wheel χ5 Pattern ", "Set the wheel χ5 pattern", "Wheels Patterns", 6, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
174        public string Patternχ5
175        {
176            get
177            {
178                return this.patterns[4];
179            }
180            set
181            {
182                if (value != patterns[4]) HasChanges = true;
183                this.patterns[4] = value;
184                OnPropertyChanged("Patternχ5");
185
186                if (ReExecute != null) ReExecute();
187            }
188        }
189
190        [TaskPane("Wheel Ψ1 Pattern", "Set the wheel Ψ1 pattern", "Wheels Patterns", 7, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
191        public string PatternΨ1
192        {
193            get
194            {
195                return this.patterns[5];
196            }
197            set
198            {
199                if (value != patterns[5]) HasChanges = true;
200                this.patterns[5] = value;
201                OnPropertyChanged("PatternΨ1");
202
203                if (ReExecute != null) ReExecute();
204            }
205        }
206
207        [TaskPane("Wheel Ψ2 Pattern", "Set the wheel Ψ2 pattern", "Wheels Patterns", 8, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
208        public string PatternΨ2
209        {
210            get
211            {
212                return this.patterns[6];
213            }
214            set
215            {
216                if (value != patterns[6]) HasChanges = true;
217                this.patterns[6] = value;
218                OnPropertyChanged("PatternΨ2");
219
220                if (ReExecute != null) ReExecute();
221            }
222        }
223
224        [TaskPane("Wheel Ψ3 Pattern", "Set the wheel Ψ3 pattern", "Wheels Patterns", 9, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
225        public string PatternΨ3
226        {
227            get
228            {
229                return this.patterns[7];
230            }
231            set
232            {
233                if (value != patterns[7]) HasChanges = true;
234                this.patterns[7] = value;
235                OnPropertyChanged("PatternΨ3");
236
237                if (ReExecute != null) ReExecute();
238            }
239        }
240
241        [TaskPane("Wheel Ψ4 Pattern", "Set the wheel Ψ4 pattern", "Wheels Patterns", 10, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
242        public string PatternΨ4
243        {
244            get
245            {
246                return this.patterns[8];
247            }
248            set
249            {
250                if (value != patterns[8]) HasChanges = true;
251                this.patterns[8] = value;
252                OnPropertyChanged("PatternΨ4");
253
254                if (ReExecute != null) ReExecute();
255            }
256        }
257
258        [TaskPane("Wheel Ψ5 Pattern", "Set the wheel Ψ5 pattern", "Wheels Patterns", 11, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
259        public string PatternΨ5
260        {
261            get
262            {
263                return this.patterns[9];
264            }
265            set
266            {
267                if (value != patterns[9]) HasChanges = true;
268                this.patterns[9] = value;
269                OnPropertyChanged("PatternΨ5");
270
271                if (ReExecute != null) ReExecute();
272            }
273        }
274
275        [TaskPane("Wheel μ61 Pattern", "Set the wheel μ61 pattern", "Wheels Patterns", 12, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
276        public string Patternμ61
277        {
278            get
279            {
280                return this.patterns[10];
281            }
282            set
283            {
284                if (value != patterns[10]) HasChanges = true;
285                this.patterns[10] = value;
286                OnPropertyChanged("Patternμ61");
287
288                if (ReExecute != null) ReExecute();
289            }
290        }
291
292        [TaskPane("Wheel μ37 Pattern", "Set the wheel μ37 pattern", "Wheels Patterns", 13, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
293        public string Patternμ37
294        {
295            get
296            {
297                return this.patterns[11];
298            }
299            set
300            {
301                if (value != patterns[11]) HasChanges = true;
302                this.patterns[11] = value;
303                OnPropertyChanged("Patternμ37");
304
305                if (ReExecute != null) ReExecute();
306            }
307        }
308
309        #endregion
310
311        #region Wheels Positions
312
313        [TaskPane("Wheel χ1 Position", "Set the wheel χ1 position", "Wheels Positions", 14, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
314        public string Positionχ1
315        {
316            get
317            {
318                return this.positions[0];
319            }
320            set
321            {
322                if (value != positions[0]) HasChanges = true;
323                this.positions[0] = value;
324                OnPropertyChanged("Positionχ1");
325
326                if (ReExecute != null) ReExecute();
327            }
328        }
329
330        [TaskPane("Wheel χ2 Position", "Set the wheel χ2 position", "Wheels Positions", 15, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
331        public string Positionχ2
332        {
333            get
334            {
335                return this.positions[1];
336            }
337            set
338            {
339                if (value != positions[1]) HasChanges = true;
340                this.positions[1] = value;
341                OnPropertyChanged("Positionχ2");
342
343                if (ReExecute != null) ReExecute();
344            }
345        }
346
347        [TaskPane("Wheel χ3 Position", "Set the wheel χ3 position", "Wheels Positions", 16, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
348        public string Positionχ3
349        {
350            get
351            {
352                return this.positions[2];
353            }
354            set
355            {
356                if (value != positions[2]) HasChanges = true;
357                this.positions[2] = value;
358                OnPropertyChanged("Positionχ3");
359
360                if (ReExecute != null) ReExecute();
361            }
362        }
363
364        [TaskPane("Wheel χ4 Position", "Set the wheel χ4 position", "Wheels Positions", 17, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
365        public string Positionχ4
366        {
367            get
368            {
369                return this.positions[3];
370            }
371            set
372            {
373                if (value != positions[3]) HasChanges = true;
374                this.positions[3] = value;
375                OnPropertyChanged("Positionχ4");
376
377                if (ReExecute != null) ReExecute();
378            }
379        }
380
381        [TaskPane("Wheel χ5 Position", "Set the wheel χ5 position", "Wheels Positions", 18, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
382        public string Positionχ5
383        {
384            get
385            {
386                return this.positions[4];
387            }
388            set
389            {
390                if (value != positions[4]) HasChanges = true;
391                this.positions[4] = value;
392                OnPropertyChanged("Positionχ5");
393
394                if (ReExecute != null) ReExecute();
395            }
396        }
397
398        [TaskPane("Wheel Ψ1 Position", "Set the wheel Ψ1 position", "Wheels Positions", 19, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
399        public string PositionΨ1
400        {
401            get
402            {
403                return this.positions[5];
404            }
405            set
406            {
407                if (value != positions[5]) HasChanges = true;
408                this.positions[5] = value;
409                OnPropertyChanged("PositionΨ1");
410
411                if (ReExecute != null) ReExecute();
412            }
413        }
414
415        [TaskPane("Wheel Ψ2 Position", "Set the wheel Ψ2 position", "Wheels Positions", 20, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
416        public string PositionΨ2
417        {
418            get
419            {
420                return this.positions[6];
421            }
422            set
423            {
424                if (value != positions[6]) HasChanges = true;
425                this.positions[6] = value;
426                OnPropertyChanged("PositionΨ2");
427
428                if (ReExecute != null) ReExecute();
429            }
430        }
431
432        [TaskPane("Wheel Ψ3 Position", "Set the wheel Ψ3 position", "Wheels Positions", 21, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
433        public string PositionΨ3
434        {
435            get
436            {
437                return this.positions[7];
438            }
439            set
440            {
441                if (value != positions[7]) HasChanges = true;
442                this.positions[7] = value;
443                OnPropertyChanged("PositionΨ3");
444
445                if (ReExecute != null) ReExecute();
446            }
447        }
448
449        [TaskPane("Wheel Ψ4 Position", "Set the wheel Ψ4 position", "Wheels Positions", 22, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
450        public string PositionΨ4
451        {
452            get
453            {
454                return this.positions[8];
455            }
456            set
457            {
458                if (value != positions[8]) HasChanges = true;
459                this.positions[8] = value;
460                OnPropertyChanged("PositionΨ4");
461
462                if (ReExecute != null) ReExecute();
463            }
464        }
465
466        [TaskPane("Wheel Ψ5 Position", "Set the wheel Ψ5 position", "Wheels Positions", 23, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
467        public string PositionΨ5
468        {
469            get
470            {
471                return this.positions[9];
472            }
473            set
474            {
475                if (value != positions[9]) HasChanges = true;
476                this.positions[9] = value;
477                OnPropertyChanged("PositionΨ5");
478
479                if (ReExecute != null) ReExecute();
480            }
481        }
482
483        [TaskPane("Wheel μ61 Position", "Set the wheel μ61 position", "Wheels Positions", 24, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
484        public string Positionμ61
485        {
486            get
487            {
488                return this.positions[10];
489            }
490            set
491            {
492                if (value != positions[10]) HasChanges = true;
493                this.positions[10] = value;
494                OnPropertyChanged("Positionμ61");
495
496                if (ReExecute != null) ReExecute();
497            }
498        }
499
500        [TaskPane("Wheel μ37 Position", "Set the wheel μ37 position", "Wheels Positions", 25, false, DisplayLevel.Beginner, ControlType.TextBox, "")]
501        public string Positionμ37
502        {
503            get
504            {
505                return this.positions[10];
506            }
507            set
508            {
509                if (value != positions[10]) HasChanges = true;
510                this.positions[10] = value;
511                OnPropertyChanged("Positionμ37");
512
513                if (ReExecute != null) ReExecute();
514            }
515        }
516
517        #endregion
518
519        #region Format Settings
520
521        [TaskPane("Input Parsed", "Set if the input is parsed or not", "Format Settings", 26, false, DisplayLevel.Beginner, ControlType.CheckBox, "")]
522        public bool InputParsed
523        {
524            get
525            {
526                return this.inputParsed;
527            }
528            set
529            {
530                if (value != inputParsed) HasChanges = true;
531                this.inputParsed = value;
532                OnPropertyChanged("InputParsed");
533
534                if (ReExecute != null) ReExecute();
535            }
536        }
537
538        [TaskPane("Output Parsed", "Set if the output is parsed or not", "Format Settings", 27, false, DisplayLevel.Beginner, ControlType.CheckBox, "")]
539        public bool OutputParsed
540        {
541            get
542            {
543                return this.outputParsed;
544            }
545            set
546            {
547                if (value != outputParsed) HasChanges = true;
548                this.outputParsed = value;
549                OnPropertyChanged("OutputParsed");
550
551                if (ReExecute != null) ReExecute();
552            }
553        }
554
555        #endregion
556       
557        #endregion
558
559        #region ISettings Members
560
561        /// <summary>
562        /// HOWTO: This flags indicates whether some setting has been changed since the last save.
563        /// If a property was changed, this becomes true, hence CrypTool will ask automatically if you want to save your changes.
564        /// </summary>
565        public bool HasChanges
566        {
567            get
568            {
569                return hasChanges;
570            }
571            set
572            {
573                hasChanges = value;
574            }
575        }
576
577        #endregion
578
579        #region INotifyPropertyChanged Members
580
581        public event PropertyChangedEventHandler PropertyChanged;
582
583        protected void OnPropertyChanged(string name)
584        {
585            if (PropertyChanged != null)
586            {
587                PropertyChanged(this, new PropertyChangedEventArgs(name));
588            }
589        }
590
591        #endregion
592    }
593}
Note: See TracBrowser for help on using the repository browser.