source: trunk/CrypPlugins/QuadraticSieve/QuadraticSieveSettings.cs @ 1470

Last change on this file since 1470 was 1470, checked in by Sven Rech, 12 years ago

added peer2peer stuff to quadratic sieve settings (without functionality)

File size: 6.3 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 Cryptool.PluginBase;
22using System.ComponentModel;
23using Cryptool.PluginBase.Miscellaneous;
24using System.Collections.ObjectModel;
25using System.Windows;
26
27namespace QuadraticSieve
28{
29    class QuadraticSieveSettings : ISettings
30    {
31        #region private variables
32        private int coresUsed;
33        private bool hasChanges = false;
34        private ObservableCollection<string> coresAvailable = new ObservableCollection<string>();
35        private bool deleteCache;
36        private bool usePeer2Peer;
37        private string channel;
38        #endregion
39
40        #region events
41        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
42        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
43        #endregion
44
45        #region public
46
47        /// <summary>
48        /// Constructs a new QuadraticSieveSettings
49        ///
50        /// Also calculates the amount of cores which can be used for the quadratic sieve
51        /// </summary>
52        public QuadraticSieveSettings()
53        {
54            CoresAvailable.Clear();
55            for (int i = 0; i < Environment.ProcessorCount; i++)
56                CoresAvailable.Add((i+1).ToString());
57            CoresUsed = Environment.ProcessorCount-1;
58        }
59
60        /// <summary>
61        /// Getter/Setter for the amount of cores which the user wants to have used by the quadratic sieve
62        /// </summary>
63        [TaskPane("CoresUsed", "Choose how many cores should be used for sieving", null, 1, false, DisplayLevel.Beginner, ControlType.DynamicComboBox, new string[] { "CoresAvailable" })]
64        public int CoresUsed
65        {
66            get { return this.coresUsed; }
67            set
68            {
69                if (value != this.coresUsed)
70                {
71                    this.coresUsed = value;
72                    OnPropertyChanged("CoresUsed");
73                    HasChanges = true;
74                }
75            }
76        }
77       
78        /// <summary>
79        /// Get the available amount of cores of this pc
80        /// </summary>
81        public ObservableCollection<string> CoresAvailable
82        {
83            get { return coresAvailable; }
84            set
85            {
86                if (value != coresAvailable)
87                {
88                    coresAvailable = value;
89                }
90                OnPropertyChanged("CoresAvailable");
91            }
92        }
93
94        /// <summary>
95        /// Getter / Setter to enable/disable the deletion of the cache
96        /// </summary>
97        [TaskPane("Delete cache", "If checked, this plugin will delete the old cache file before it starts sieving", null, 2, false, DisplayLevel.Expert, ControlType.CheckBox, "", null)]
98        public bool DeleteCache
99        {
100            get { return deleteCache; }
101            set
102            {
103                if (value != deleteCache)
104                {
105                    deleteCache = value;
106                    hasChanges = true;
107                    OnPropertyChanged("DeleteCache");
108                }
109            }
110        }
111       
112        /// <summary>
113        /// Getter / Setter to enable/disable the use of peer2peer
114        /// </summary>
115        [TaskPane("Use Peer2Peer", "If checked, this plugin will connect to Peer2Peer network to sieve together with other clients", null, 3, false, DisplayLevel.Experienced, ControlType.CheckBox, "", null)]
116        public bool UsePeer2Peer
117        {
118            get { return usePeer2Peer; }
119            set
120            {
121                if (value != usePeer2Peer)
122                {
123                    usePeer2Peer = value;
124                    hasChanges = true;
125                    if (usePeer2Peer)
126                    {
127                        TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Channel", Visibility.Visible)));
128                    }
129                    else
130                    {
131                        TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("Channel", Visibility.Collapsed)));
132                    }
133                    OnPropertyChanged("UsePeer2Peer");
134                }
135            }
136        }
137
138        /// <summary>
139        /// Channel of the Peer2Peer network
140        /// </summary>
141        [TaskPane("Channel", "Channel of the Peer2Peer network", null, 4, false, DisplayLevel.Experienced, ControlType.TextBox, "", null)]
142        public string Channel
143        {
144            get { return channel; }
145            set
146            {
147                if (value != channel)
148                {
149                    channel = value;
150                    hasChanges = true;
151                    OnPropertyChanged("Channel");
152                }
153            }
154        }
155
156        /// <summary>
157        /// Called if the settings have changes
158        /// </summary>
159        public bool HasChanges
160        {
161            get
162            {
163                return hasChanges;
164            }
165            set
166            {
167                hasChanges = value;
168            }
169        }
170
171        #endregion
172
173        #region private
174
175        /// <summary>
176        /// A property changed
177        /// </summary>
178        /// <param name="name">name</param>
179        private void OnPropertyChanged(string name)
180        {
181            if (PropertyChanged != null)
182            {
183                PropertyChanged(this, new PropertyChangedEventArgs(name));
184            }
185        }
186
187        #endregion
188
189    }
190}
Note: See TracBrowser for help on using the repository browser.