source: trunk/CrypPlugins/BooleanOperators/BoolButton.cs @ 763

Last change on this file since 763 was 763, checked in by weyers, 12 years ago

BoolButton und BoolInput gemergt!

File size: 5.9 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.ComponentModel;
8using System.Windows.Input;
9using System.Windows.Media;
10
11using Cryptool;
12using Cryptool.PluginBase;
13using Cryptool.PluginBase.Cryptography;
14using Cryptool.PluginBase.Miscellaneous;
15using Cryptool.Plugins.BooleanOperators;
16using Cryptool.PluginBase.IO;
17
18using BooleanOperators;
19
20
21
22
23
24namespace Cryptool.Plugins.BoolButton
25{
26    [Author("Julian Weyers", "julian.weyers@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-duisburg-essen.de")]
27    [PluginInfo(true, "Boolean Button", "Boolean Button", "BooleanOperators/DetailedDescription/Description.xaml", "BooleanOperators/icons/false.png", "BooleanOperators/icons/true.png")]
28
29    public class BoolButton : IInput
30    {
31       
32        private Boolean output = true;
33        private BoolButtonSettings settings;
34        private ButtonInputPresentation myButton;
35        private Boolean setorbut = false;
36
37
38        public BoolButton()
39        {
40            this.settings = new BoolButtonSettings();           
41            myButton = new ButtonInputPresentation();
42            Presentation = myButton;
43            myButton.StatusChanged += new EventHandler(myButton_StatusChanged);
44            this.settings.PropertyChanged += settings_OnPropertyChange;
45       }
46        private void settings_OnPropertyChange(object sender, PropertyChangedEventArgs e) 
47        {
48            setorbut = true;
49            Execute();
50        }
51        private void myButton_StatusChanged(object sender, EventArgs e)
52        {
53            setorbut = false;
54            Execute();
55        }
56
57     
58        [PropertyInfo(Direction.OutputData, "Output", "Output", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.None, null)] 
59        public Boolean Output
60        {
61            get
62            {
63                return this.output;
64            }
65            set
66            {
67                this.output = value;
68                OnPropertyChange("Output");
69            }
70        }
71
72        #region IPlugin Member
73       
74       
75
76        public void Dispose()
77        {
78            //throw new NotImplementedException(); 
79        }
80
81        public void Execute()
82        {
83            if (!setorbut)
84            { 
85                Output = myButton.Value;
86                if (myButton.Value)
87                {
88                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 1));
89                    settings.Value = 1;
90                }
91                if (!myButton.Value)
92                {
93                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 0));
94                    settings.Value = 0;
95                }
96            }
97            if (setorbut)
98            { 
99                Output = (settings.Value == 1);
100               
101                if (settings.Value == 1)
102                {
103                   
104                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 1));
105                    myButton.Value = true;
106                    myButton.update();
107                }
108                if (settings.Value == 0)
109                {
110                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 0));
111                    myButton.Value = false;
112                    myButton.update();
113                }
114            }
115       
116            ProgressChanged(1, 1);
117        }
118
119        public void Initialize()
120        {
121           // Output = true;
122           // if (myButton.buttonval == true)
123           // {
124           //     Output = false;
125           // }
126           // if (myButton.buttonval == false)
127           // {
128           //     Output = true;
129           // }
130           // // not working, see ticket #80
131           //// settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, settings.Value));
132
133        }
134
135        public void Pause()
136        {
137        }
138
139        public void PostExecution()
140        {
141        }
142
143        public void PreExecution()
144        {
145        }
146
147        public UserControl Presentation
148        { 
149            get; 
150            private set; 
151        }
152
153        public System.Windows.Controls.UserControl QuickWatchPresentation
154        {
155           
156            get { return Presentation; }
157        }
158
159        public ISettings Settings
160        {
161            get { return this.settings; }
162            set { this.settings = (BoolButtonSettings)value; }
163        }
164
165        public void Stop()
166        {
167        }
168
169        #endregion
170
171        #region event handling
172
173        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
174        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
175        public event StatusChangedEventHandler OnPluginStatusChanged;
176        public event PropertyChangedEventHandler PropertyChanged;
177
178        private void OnPropertyChange(String propertyname)
179        {
180            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(propertyname));
181        }
182
183        private void settings_OnPluginStatusChanged(IPlugin sender, StatusEventArgs args)
184        {
185            if (OnPluginStatusChanged != null) OnPluginStatusChanged(this, args);
186        }
187
188        private void ProgressChanged(double value, double max)
189        {
190            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
191        }
192
193        private void GuiLogMessage(string p, NotificationLevel notificationLevel)
194        {
195            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(p, this, notificationLevel));
196        }
197
198        #endregion
199       
200    }
201}
Note: See TracBrowser for help on using the repository browser.