Ignore:
Timestamp:
Dec 9, 2009, 11:01:12 AM (12 years ago)
Author:
kopal
Message:
  • icons of BigNumberOperators now are set correctly after loading
  • "BooleanInput and BoolButton" -> merged functions into BooleanInput and deleted BoolButton (only need one BooleanInput)
  • BooleanFunctions now have a new setting (set if an update needs both inputs changed or not)
Location:
trunk/CrypPlugins/BooleanOperators
Files:
2 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/BooleanOperators/BooleanBinaryOperators.cs

    r561 r973  
    3939    public class BooleanBinaryOperators : IThroughput
    4040    {
     41        private Boolean FlagA = false;
     42        private Boolean FlagB = false;
    4143
    4244        private Boolean inputA = false;
     
    6365            {
    6466                this.inputA = value;
     67                this.FlagA = true;
    6568                OnPropertyChange("InputA");
    6669            }
     
    7780            {
    7881                this.inputB = value;
     82                this.FlagB = true;
    7983                OnPropertyChange("InputB");
    8084            }
     
    96100        }
    97101
     102
    98103        public ISettings Settings
    99104        {
     
    111116        public void Execute()
    112117        {
     118
     119            if (((BooleanBinaryOperatorsSettings)settings).UpdateOnlyAtBothInputsChanged &&
     120                !(this.FlagA && this.FlagB))
     121            {
     122                //We only update our output if both inputs have changed
     123                return;
     124            }
     125
    113126            switch (this.settings.OperatorType)
    114127            {
     
    139152            }//end switch
    140153
     154            this.FlagA = false;
     155            this.FlagB = false;
     156
    141157            ProgressChanged(1, 1);
    142158
     
    177193        public void Stop()
    178194        {
     195            this.FlagA = false;
     196            this.FlagB = false;
    179197        }
    180198
  • trunk/CrypPlugins/BooleanOperators/BooleanBinaryOperatorsSettings.cs

    r561 r973  
    3737
    3838        private bool hasChanges = false;
     39        private bool updateOnlyAtBothInputsChanged = true;
    3940
    4041        #region ISettings Members
     
    6768        }
    6869
     70
     71        [TaskPane("Update needs both inputs", "If checked, this plugin will only update its status if both inputs have changed", null, 2, false, DisplayLevel.Beginner, ControlType.CheckBox, "", null)]
     72        public bool UpdateOnlyAtBothInputsChanged
     73        {
     74            get { return updateOnlyAtBothInputsChanged; }
     75            set
     76            {
     77                if (value != updateOnlyAtBothInputsChanged)
     78                {
     79                    updateOnlyAtBothInputsChanged = value;
     80                    hasChanges = true;
     81                    OnPropertyChanged("UpdateOnlyAtBothInputsChanged");
     82                }
     83            }
     84        }
     85
    6986        #endregion
    7087
  • trunk/CrypPlugins/BooleanOperators/BooleanInput.cs

    r561 r973  
    1919using System.Linq;
    2020using System.Text;
    21 using System.IO;
     21using System.Windows;
     22using System.Windows.Controls;
    2223using System.ComponentModel;
     24using System.Windows.Input;
     25using System.Windows.Media;
     26
     27using Cryptool;
    2328using Cryptool.PluginBase;
     29using Cryptool.PluginBase.Cryptography;
     30using Cryptool.PluginBase.Miscellaneous;
     31using Cryptool.Plugins.BooleanOperators;
    2432using Cryptool.PluginBase.IO;
    25 using Cryptool;
    26 using Cryptool.PluginBase.Miscellaneous;
    27 using System.Windows;
     33
     34using BooleanOperators;
    2835
    2936namespace Cryptool.Plugins.BooleanOperators
    3037{
    31     [Author("Nils Kopal", "nils.kopal@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-duisburg-essen.de")]
     38    [Author("Julian Weyers", "julian.weyers@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-duisburg-essen.de")]
    3239    [PluginInfo(true, "Boolean Input", "Boolean Input", "BooleanOperators/DetailedDescription/Description.xaml", "BooleanOperators/icons/false.png", "BooleanOperators/icons/true.png")]
     40
    3341    public class BooleanInput : IInput
    3442    {
     43
     44        private Boolean output = true;
    3545        private BooleanInputSettings settings;
    36         private Boolean output = false;
     46        private ButtonInputPresentation myButton;
     47        private Boolean setorbut = false;
    3748
    3849        public BooleanInput()
    3950        {
    40             this.settings = new BooleanInputSettings();           
    41             this.settings.OnPluginStatusChanged += settings_OnPluginStatusChanged;
    42             this.settings.PropertyChanged += settings_PropertyChanged;
    43         }
    44 
    45         void settings_PropertyChanged(object sender, PropertyChangedEventArgs e)
    46         {
    47             if (e.PropertyName == "Value")
    48             {
    49                 // as the setting is not changeable in play mode, there is no need to update Output property
    50                 //Output = (settings.Value == 1);
    51 
    52                 settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, settings.Value));
    53             }
    54         }
    55 
    56         [PropertyInfo(Direction.OutputData, "Output", "Output", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
     51            this.settings = new BooleanInputSettings();
     52            myButton = new ButtonInputPresentation();
     53            Presentation = myButton;
     54            myButton.StatusChanged += new EventHandler(myButton_StatusChanged);
     55            this.settings.PropertyChanged += settings_OnPropertyChange;
     56        }
     57        private void settings_OnPropertyChange(object sender, PropertyChangedEventArgs e)
     58        {
     59            setorbut = true;
     60            Execute();
     61        }
     62        private void myButton_StatusChanged(object sender, EventArgs e)
     63        {
     64            setorbut = false;
     65            Execute();
     66        }
     67
     68
     69        [PropertyInfo(Direction.OutputData, "Output", "Output", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.None, null)]
    5770        public Boolean Output
    5871        {
     
    7083        #region IPlugin Member
    7184
     85
     86
    7287        public void Dispose()
    7388        {
    74             //throw new NotImplementedException();
    7589        }
    7690
    7791        public void Execute()
    7892        {
    79             Output = (settings.Value == 1);
    80             settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, settings.Value));
     93            if (!setorbut)
     94            {
     95                Output = myButton.Value;
     96
     97                if (myButton.Value)
     98                {
     99                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 1));
     100                    settings.Value = 1;
     101                }else{
     102                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 0));
     103                    settings.Value = 0;
     104                }
     105
     106            }else{
     107
     108                Output = (settings.Value == 1);
     109
     110                if (settings.Value == 1)
     111                {
     112                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 1));
     113                    myButton.Value = true;
     114                    myButton.update();
     115                }else{
     116                    settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 0));
     117                    myButton.Value = false;
     118                    myButton.update();
     119                }
     120            }
    81121
    82122            ProgressChanged(1, 1);
     
    85125        public void Initialize()
    86126        {
    87             // not working, see ticket #80
    88             settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, settings.Value));
     127            if (settings.Value == 1){
     128                settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 1));
     129            }else{
     130                settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 0));
     131            }
    89132        }
    90133
     
    101144        }
    102145
    103         public System.Windows.Controls.UserControl Presentation
    104         {
    105             get { return null; }
     146        public UserControl Presentation
     147        {
     148            get;
     149            private set;
    106150        }
    107151
    108152        public System.Windows.Controls.UserControl QuickWatchPresentation
    109153        {
    110             get { return null; }
     154
     155            get { return Presentation; }
    111156        }
    112157
  • trunk/CrypPlugins/BooleanOperators/BooleanInputSettings.cs

    r561 r973  
    3030    {
    3131
     32        #region ISettings Members
     33
    3234        private bool hasChanges = false;
    3335        private int bool_value = 0; //0 false; 1 true
    3436
    35         #region ISettings Members
    36        
    37         [ContextMenu("Value", "Set the boolean value", 1, DisplayLevel.Beginner, ContextMenuControlType.ComboBox, new int[] { 0, 1 }, "false", "true")]
    38         [TaskPane("Value", "Set the boolean value", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "false", "true" })]
     37        [ContextMenu("Value", "Set the boolean value", 1, DisplayLevel.Beginner, ContextMenuControlType.ComboBox, new int[] { 0, 1 }, "False", "True")]
     38        [TaskPane("Value", "Set the boolean value", null, 1, false, DisplayLevel.Beginner, ControlType.ComboBox, new string[] { "False", "True" })]
    3939        public int Value
    4040        {
     
    4545                this.bool_value = value;
    4646                OnPropertyChanged("Value");
    47 
    48                 // icon update is handled by BooleanInput
    4947            }
    5048        }
  • trunk/CrypPlugins/BooleanOperators/BooleanOperators.csproj

    r759 r973  
    44    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    55    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    6     <ProductVersion>9.0.30729</ProductVersion>
     6    <ProductVersion>9.0.21022</ProductVersion>
    77    <SchemaVersion>2.0</SchemaVersion>
    88    <ProjectGuid>{9A8A0EC9-80AB-4015-923A-0CCFB198741A}</ProjectGuid>
     
    6464  </ItemGroup>
    6565  <ItemGroup>
    66     <Compile Include="BoolButton.cs" />
    67     <Compile Include="BoolButtonSettings.cs" />
    6866    <Compile Include="BooleanBinaryOperators.cs" />
    6967    <Compile Include="BooleanBinaryOperatorsSettings.cs" />
Note: See TracChangeset for help on using the changeset viewer.