source: trunk/CrypPlugins/Converter/ConverterSettings.cs @ 2061

Last change on this file since 2061 was 943, checked in by Matthäus Wander, 12 years ago

Converter:

  • added initialization for icon and task pane visibility (references #80, #46)
  • set default conversion to string (init fails otherwise)
File size: 10.9 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.ComponentModel;
20using System.Linq;
21using System.Text;
22using System.Windows;
23using System.Windows.Media;
24using System.Windows.Controls;
25using Cryptool.PluginBase;
26
27namespace Cryptool.Plugins.Converter
28{
29    public class ConverterSettings : ISettings
30    {
31        #region private variables
32        private int converter = 0; // 0 = String, 1 = int, 2 = short, 3 = byte, 4 = double, 5 = bigInteger, 6= Int[] , 7=Byte[], 8=CryptoolStream
33        private bool hasChanges;
34        private bool numeric = false;
35        private bool formatAmer = false;
36        public enum EncodingTypes { Default = 0, Unicode = 1, UTF7 = 2, UTF8 = 3, UTF32 = 4, ASCII = 5, BigEndianUnicode = 6 };
37        public enum PresentationFormat { Text, Hex, Base64 }
38        private EncodingTypes encoding = EncodingTypes.Default;
39        private PresentationFormat presentation = PresentationFormat.Text;
40
41        public PresentationFormat Presentation
42        {
43            get { return this.presentation; }
44            set
45            {
46                if (this.presentation != value) hasChanges = true;
47                this.presentation = value;
48                OnPropertyChanged("Presentation");
49            }
50        }
51        #endregion
52
53        #region taskpane
54     
55        [ContextMenu("Stream encoding", "Choose the expected encoding of the byte array and stream.", 1, DisplayLevel.Experienced, ContextMenuControlType.ComboBox, null, new string[] { "Default system encoding", "Unicode", "UTF-7", "UTF-8", "UTF-32", "ASCII", "Big endian unicode" })]
56        [TaskPane("Stream encoding", "Choose the expected encoding of the byte array and stream.", "", 1, false, DisplayLevel.Experienced, ControlType.RadioButton, new string[] { "Default system encoding", "Unicode", "UTF-7", "UTF-8", "UTF-32", "ASCII", "Big endian unicode" })]
57        public int EncodingSetting
58        {
59            get
60            {
61                return (int)this.encoding;
62            }
63            set
64            {
65                if (this.Encoding != (EncodingTypes)value)
66                {
67                    hasChanges = true;
68                    this.Encoding = (EncodingTypes)value;
69                    OnPropertyChanged("EncodingSetting");
70                    HasChanges = true;
71                }
72            }
73        }
74
75        [TaskPane("Converter", "Choose the output type", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "string", "int", "short", "byte", "double", "BigInteger", "int[]", "byte[]","Cryptoolstream" })]
76        public int Converter
77        {
78            get { return this.converter; }
79            set
80            {
81                if (value != this.converter)
82                {
83                    this.converter = value;
84                    UpdateTaskPaneVisibility();
85                    OnPropertyChanged("Converter");
86                    HasChanges = true;
87
88                    UpdateIcon();
89                }
90            }
91        }
92
93        private void settingChanged(string setting, Visibility vis)
94        {
95            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer(setting, vis)));
96        }
97
98        internal void UpdateIcon()
99        {
100            ChangePluginIcon(converter + 1);
101        }
102
103        internal void UpdateTaskPaneVisibility()
104        {
105            if (TaskPaneAttributeChanged == null)
106                return;
107
108            switch (Converter)
109            {
110                case 0:
111                    {
112
113                        settingChanged("Numeric", Visibility.Collapsed);
114                        settingChanged("EncodingSetting", Visibility.Collapsed);
115                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
116                        //settingChanged("Format", Visibility.Collapsed)));
117                        break;
118                    }
119                case 1:
120                    {
121                        settingChanged("Numeric", Visibility.Collapsed);
122                        settingChanged("EncodingSetting", Visibility.Collapsed);
123                        settingChanged("Format", Visibility.Collapsed);
124                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
125                        break;
126                    }
127                case 2:
128                    {
129                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
130                        settingChanged("EncodingSetting", Visibility.Collapsed);
131                        settingChanged("Numeric", Visibility.Collapsed);
132                        settingChanged("Format", Visibility.Collapsed);
133                        break;
134                    }
135                case 3:
136                    {
137                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
138                        settingChanged("EncodingSetting", Visibility.Collapsed);
139                        settingChanged("Numeric", Visibility.Collapsed);
140                        settingChanged("Format", Visibility.Collapsed);
141                        break;
142                    }
143                case 4:
144                    {
145                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
146                        settingChanged("EncodingSetting", Visibility.Collapsed);
147                        settingChanged("Numeric", Visibility.Collapsed);
148                        settingChanged("Format", Visibility.Collapsed);
149                        break;
150                    }
151                case 5:
152                    {
153                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
154                        settingChanged("EncodingSetting", Visibility.Collapsed);
155                        settingChanged("Numeric", Visibility.Collapsed);
156                        settingChanged("Format", Visibility.Collapsed);
157                        break;
158                    }
159                case 6:
160                    {
161                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
162                        settingChanged("EncodingSetting", Visibility.Collapsed);
163                        settingChanged("Numeric", Visibility.Collapsed);
164                        //settingChanged("Format", Visibility.Collapsed);
165                        break;
166                    }
167                case 7:
168                    {
169                        settingChanged("PresentationFormatSetting", Visibility.Visible);
170                        settingChanged("Numeric", Visibility.Visible);
171                        settingChanged("EncodingSetting", Visibility.Visible);
172                        //settingChanged("Format", Visibility.Collapsed);
173                        break;
174                    }
175                case 8:
176                    {
177                        settingChanged("PresentationFormatSetting", Visibility.Collapsed);
178                        settingChanged("EncodingSetting", Visibility.Collapsed);
179                        settingChanged("Numeric", Visibility.Collapsed);
180                        //settingChanged("Format", Visibility.Collapsed);
181                        break;
182                    }
183            }
184        }
185
186        [TaskPane("Numeric", "Choose whether inputs are interpreted as numeric values if possible", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "no", "yes" })]
187        public bool Numeric
188        {
189            get { return this.numeric; }
190            set
191            {
192                if (value != this.numeric)
193                {
194                    this.numeric = value;
195                    OnPropertyChanged("Numeric");
196                    HasChanges = true;
197                }
198            }
199        }
200
201        [TaskPane("Format", "Choose whether double values are recognized via german or american syntax. German: \"123.345.34,34\" American: \"123,345,34.34 ", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "german", "american" })]
202        public bool FormatAmer
203        {
204            get { return this.formatAmer; }
205            set
206            {
207                if (value != this.formatAmer)
208                {
209                    this.formatAmer = value;
210                    OnPropertyChanged("Format");
211                    HasChanges = true;
212                }
213            }
214        }
215
216        [TaskPane("PresentationFormatSetting", "Choose the format that will be used te present the output data.", null, 1, false, DisplayLevel.Beginner, ControlType.RadioButton, new string[] { "Text", "Hex", "Base64" })]
217        public int PresentationFormatSetting
218        {
219            get
220            {
221                return (int)this.presentation;
222            }
223            set
224            {
225                if (this.presentation != (PresentationFormat)value) HasChanges = true;
226                this.presentation = (PresentationFormat)value;
227                OnPropertyChanged("PresentationFormatSetting");
228            }
229        }
230     
231        #endregion
232
233        #region ISettings Member
234
235        public bool HasChanges
236        {
237            get { return hasChanges; }
238            set { hasChanges = value; }
239
240        }
241        public EncodingTypes Encoding
242        {
243            get { return this.encoding; }
244            set
245            {
246                if (this.encoding != value)
247                {
248                    hasChanges = true;
249                    this.encoding = value;
250                    OnPropertyChanged("EncodingSetting");
251                }
252            }
253        }
254
255
256        #endregion
257
258        #region INotifyPropertyChanged Member
259
260        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
261
262        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
263
264        protected void OnPropertyChanged(string name)
265        {
266
267        }
268        public event StatusChangedEventHandler OnPluginStatusChanged;
269        private void ChangePluginIcon(int iconIndex)
270        {
271            if (OnPluginStatusChanged != null) OnPluginStatusChanged(null, new StatusEventArgs(StatusChangedMode.ImageUpdate, iconIndex));
272        }
273        #endregion
274    }
275}
Note: See TracBrowser for help on using the repository browser.