Changeset 973


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
Files:
2 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/BigNumber/BigNumberOperation.cs

    r807 r973  
    244244
    245245        public void Initialize()
    246         {
     246        {           
     247            //change to the correct icon which belongs to actual selected arithmetic function
     248            ((BigNumberOperationSettings)this.settings).changeToCorrectIcon(((BigNumberOperationSettings)this.settings).Operat);
    247249        }
    248250
  • trunk/CrypPlugins/BigNumber/BigNumberOperationSettings.cs

    r753 r973  
    5050                    HasChanges = true;
    5151
    52                     switch (operat)
    53                     {
    54                         //x+y
    55                         case 0:
    56                             ChangePluginIcon(0);
    57                             break;
    58                         //x-y
    59                         case 1:
    60                             ChangePluginIcon(1);
    61                             break;
    62                         //x*y
    63                         case 2:
    64                             ChangePluginIcon(2);
    65                             break;
    66                         //x/y
    67                         case 3:
    68                             ChangePluginIcon(3);
    69                             break;
    70                         //x^y
    71                         case 4:
    72                             ChangePluginIcon(4);
    73                             break;
    74                         //gcd(x,y)
    75                         case 5:
    76                             ChangePluginIcon(5);
    77                             break;
    78                     }
     52                    changeToCorrectIcon(operat);
    7953                }
     54            }
     55        }
     56
     57        /// <summary>
     58        /// Changes the plugins icon to the icon fitting to actual selected arithmetic function
     59        /// </summary>
     60        /// <param name="operat"></param>
     61        public void changeToCorrectIcon(int operat)
     62        {
     63            switch (operat)
     64            {
     65                //x+y
     66                case 0:
     67                    ChangePluginIcon(0);
     68                    break;
     69                //x-y
     70                case 1:
     71                    ChangePluginIcon(1);
     72                    break;
     73                //x*y
     74                case 2:
     75                    ChangePluginIcon(2);
     76                    break;
     77                //x/y
     78                case 3:
     79                    ChangePluginIcon(3);
     80                    break;
     81                //x^y
     82                case 4:
     83                    ChangePluginIcon(4);
     84                    break;
     85                //gcd(x,y)
     86                case 5:
     87                    ChangePluginIcon(5);
     88                    break;
    8089            }
    8190        }
  • 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.