Changeset 645


Ignore:
Timestamp:
Oct 4, 2009, 11:01:05 PM (12 years ago)
Author:
Sören Rinne
Message:
  • added QuickWatchPresentation for CLK (not working right now - not getting any mouse event from QuickWatchPresentation)
  • small mods in LFSR and NLFSR
Location:
trunk/CrypPlugins
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/CLK/CLK.cs

    r560 r645  
    1212//timer
    1313using System.Timers;
    14 
    15 namespace Cryptool.Plugins.CLK
     14// for mouse click
     15using System.Windows.Input;
     16// for QuickwatchPresentaton
     17using System.Windows.Threading;
     18
     19
     20using System.Windows;
     21//using System.Windows.Data;
     22//using System.IO;
     23//using System.Runtime.CompilerServices;
     24
     25namespace Cryptool.CLK
    1626{
    1727    [Author("Soeren Rinne", "soeren.rinne@cryptool.de", "Ruhr-Universitaet Bochum, Chair for System Security", "http://www.trust.rub.de/")]
    1828  [PluginInfo(true, "CLK", "Simple clock for clock-based plugins.", null, "CLK/icon.png", "CLK/Images/true.png", "CLK/Images/false.png")]
    19   public class CLK : IInput
     29  public class CLK : DependencyObject, IInput
    2030  {
    2131    # region private variables
     32    private CLKPresentation cLKPresentation;
    2233    private bool output;
    2334    private bool eventInput;
     
    3546        settings.PropertyChanged += settings_PropertyChanged;
    3647
     48        cLKPresentation = new CLKPresentation();
     49        Presentation = cLKPresentation;
     50
     51        cLKPresentation.CLKButtonImage.MouseLeftButtonUp += cLKButton_MouseLeftButtonUp;
     52        cLKPresentation.myTextBox.TextChanged += textchanged;
     53        //cLKPresentation.CLKButtonImage.MouseEnter += mousenter;
     54
    3755        // set picture according to settings value
    3856        /* BRINGT NIX - WARUM?
    3957        if (settings.SetClockToTrue) StatusChanged((int)CLKImage.True);
    4058        else StatusChanged((int)CLKImage.False);*/
     59    }
     60
     61    void mousenter(object sender, MouseEventArgs e)
     62    {
     63        GuiLogMessage("mouse event is coming", NotificationLevel.Info);
     64        OnPropertyChanged("Output");
     65    }
     66
     67    void textchanged(object sender, TextChangedEventArgs e)
     68    {
     69        GuiLogMessage("text event is coming", NotificationLevel.Info);
     70        OnPropertyChanged("Output");
     71    }
     72
     73    void cLKButton_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
     74    {
     75        GuiLogMessage("mouse event is coming", NotificationLevel.Info);
     76        if (e.LeftButton == MouseButtonState.Released)
     77        {
     78            GuiLogMessage("Left Mouse Button released", NotificationLevel.Info);
     79            OnPropertyChanged("Output");
     80        }
    4181    }
    4282
     
    104144    }
    105145
    106     public UserControl Presentation
    107     {
    108         get { return null; }
    109     }
    110 
    111     public UserControl QuickWatchPresentation
    112     {
    113         get { return null; }
     146    public UserControl Presentation { get; private set; }
     147
     148    public System.Windows.Controls.UserControl QuickWatchPresentation
     149    {
     150        get { return Presentation; }
    114151    }
    115152
  • trunk/CrypPlugins/CLK/CLK.csproj

    r286 r645  
    5454  <ItemGroup>
    5555    <Compile Include="CLK.cs" />
     56    <Compile Include="CLKPresentation.xaml.cs">
     57      <DependentUpon>CLKPresentation.xaml</DependentUpon>
     58    </Compile>
    5659    <Compile Include="CLKSettings.cs" />
    5760    <Compile Include="Properties\AssemblyInfo.cs">
     
    9396    <Resource Include="Images\true.png" />
    9497  </ItemGroup>
     98  <ItemGroup>
     99    <Page Include="CLKPresentation.xaml">
     100      <Generator>MSBuild:Compile</Generator>
     101      <SubType>Designer</SubType>
     102    </Page>
     103  </ItemGroup>
    95104  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    96105  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
  • trunk/CrypPlugins/CLK/CLKSettings.cs

    r430 r645  
    99using System.Windows;
    1010
    11 namespace Cryptool.Plugins.CLK
     11namespace Cryptool.CLK
    1212{
    1313  public class CLKSettings : ISettings
  • trunk/CrypPlugins/LFSR/LFSR.cs

    r560 r645  
    470470                        tapSequencebuffer = settings.Polynomial;
    471471
    472                     //read seed only one time until stop of chain
     472                    //read seed
    473473                    if (settings.Seed == null || (settings.Seed != null && settings.Seed.Length == 0))
    474474                        seedbuffer = inputSeed;
     
    597597
    598598                    // check if Rounds are given
    599                     int defaultRounds = 1;
     599                    int defaultRounds = 10;
    600600
    601601                    // check if Rounds in settings are given and use them only if no bool clock is selected
     
    750750                            }
    751751                        }
    752 
    753                         //GuiLogMessage("LFSR Clock is 0, no computation.", NotificationLevel.Info);
    754                         //return;
    755752                    }
    756753                    // in both cases update additional output bit if set in settings
     
    812809        public void Initialize()
    813810        {
    814             //throw new NotImplementedException();
    815811        }
    816812
     
    831827        public void Pause()
    832828        {
    833             //throw new NotImplementedException();
    834829        }
    835830
  • trunk/CrypPlugins/LFSR/LFSRSettings.cs

    r560 r645  
    4040
    4141        string polynomial;
    42         [TaskPane("Polynomial", "Define the feedback polynomial either in a textual or a numeric way. For example x^5 +x^2 + 1 which is equal to 10010", null, 0, false, DisplayLevel.Beginner, ControlType.TextBox)]
     42        [TaskPane("Polynomial", "Define the feedback polynomial either in a textual or a numeric way. For example x^5 + x^2 + 1 which is equal to 10010.", null, 0, false, DisplayLevel.Beginner, ControlType.TextBox)]
    4343        public string Polynomial
    4444        {
     
    5151            }
    5252        }
    53 
    54 
    55 
     53       
    5654        string seed;
    5755        [TaskPane("Seed", "Define the seed of the LFSR. For example 11100", null, 1, false, DisplayLevel.Beginner, ControlType.TextBox)]
  • trunk/CrypPlugins/NLFSR/NLFSR.cs

    r560 r645  
    3434        private String inputTapSequence;
    3535        private String inputSeed;
    36         private CryptoolStream inputClock;
    3736        private CryptoolStream outputStream;
    3837        private String outputString;
     
    4039        private bool inputClockBool;
    4140        private bool outputClockingBit;
    42         private string tapSequenceString = null;
     41        //private string tapSequenceString = null;
    4342       
    4443        private NLFSRPresentation NLFSRPresentation;
     
    10099        }
    101100
    102         [PropertyInfo(Direction.InputData, "Seed", "Seed of the NLFSR in binary presentation.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
     101        [PropertyInfo(Direction.InputData, "Seed", "Seed of the NLFSR in binary presentation.", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
    103102        public String InputSeed
    104103        {
     
    198197        }
    199198
     199        bool[] outputBoolArray = new bool[1];
     200        [PropertyInfo(Direction.OutputData, "Boolean[] Output", "NLFSR Boolean Output. Use this output together with a clock input.", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
     201        public bool[] OutputBoolArray
     202        {
     203            get { return outputBoolArray; }
     204            set
     205            {
     206                outputBoolArray = (bool[])value;
     207                //OnPropertyChanged("OutputBool");
     208            }
     209        }
     210
    200211        [PropertyInfo(Direction.OutputData, "Clocking Bit Output", "Clocking Bit Output.", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
    201212        public bool OutputClockingBit
     
    217228                outputString = null;
    218229                outputStringBuffer = null;
    219                 inputClock = null;
    220230                inputTapSequence = null;
    221231                inputSeed = null;
    222 
    223                 if (inputClock != null)
    224                 {
    225                     inputClock.Flush();
    226                     inputClock.Close();
    227                     inputClock = null;
    228                 }
    229232
    230233                if (outputStream != null)
     
    251254        #region private functions
    252255
    253         private void checkForInputTapSequence()
    254         {
    255             if ((inputTapSequence == null || (inputTapSequence != null && inputTapSequence.Length == 0)))
     256        private int checkForInputTapSequence()
     257        {
     258            if ((inputTapSequence == null || (inputTapSequence != null && inputTapSequence.Length == 0)) && (settings.Polynomial == null || (settings.Polynomial != null && settings.Polynomial.Length == 0)))
    256259            {
    257260                // create some input
    258                 String dummystring = "1011";
     261                String dummystring = "x^2 * 1";
    259262                // this.inputTapSequence = new String();
    260263                inputTapSequence = dummystring;
    261264                // write a warning to the outside world
    262265                GuiLogMessage("WARNING - No TapSequence provided. Using dummy data (" + dummystring + ").", NotificationLevel.Warning);
    263             }
    264         }
    265 
    266         private void checkForInputSeed()
    267         {
    268             if ((inputSeed == null || (inputSeed != null && inputSeed.Length == 0)))
     266                return 1;
     267            }
     268            else
     269            {
     270                return 0;
     271            }
     272        }
     273
     274        private int checkForInputSeed()
     275        {
     276            if ((inputSeed == null || (inputSeed != null && inputSeed.Length == 0)) && (settings.Seed == null || (settings.Seed != null && settings.Seed.Length == 0)))
    269277            {
    270278                // create some input
     
    274282                // write a warning to the outside world
    275283                GuiLogMessage("WARNING - No Seed provided. Using dummy data (" + dummystring + ").", NotificationLevel.Warning);
    276             }
    277         }
    278 
    279         private void checkForInputClock()
    280         {
    281             if ((inputClock == null || (inputClock != null && inputClock.Length == 0)))
    282             {
    283                 //create some input
    284                 String dummystring = "1";
    285                 this.inputClock = new CryptoolStream();
    286                 this.inputClock.OpenRead(this.GetPluginInfoAttribute().Caption, Encoding.Default.GetBytes(dummystring.ToCharArray()));
    287                 // write a warning to the outside world
    288                 GuiLogMessage("FYI - No clock input provided. Assuming number of rounds specified in NLFSR settings.", NotificationLevel.Info);
     284                return 1;
     285            }
     286            else
     287            {
     288                return 0;
    289289            }
    290290        }
    291291
    292292        // Function to make binary representation of polynomial
    293         private String MakeBinary(String strPoly)
     293        /*private String MakeBinary(String strPoly)
    294294        {
    295295            bool gotX = false;
     
    340340
    341341            return strPolyBinary;
    342         }
     342        }*/
    343343
    344344        // Function to test for NLFSR Polnyomial
     
    349349            //(x\^([2-9]|[0-9][0-9])\+)*[x]?([\+]?1){1}
    350350            // TODO
    351             //Regex objPolynomial = new Regex("(x\\^([2-9]|[0-9][0-9])([\\*]|[\\+]|[\\|]|[\\-]|[_]|[°]|[v]|[\\^]))+[x]?");
    352             Regex objBoolExpression = new Regex("([0-1]([\\*]|[\\+]|[\\|]|[\\-]|[_]|[°]|[v]|[\\^])+[0-1]{1})");
     351            //Regex objPolynomial = new Regex("(x\\^([0-9]|[1-9][0-9])([\\*]|[\\+]|[\\|]|[\\-]|[_]|[°]|[v]|[\\^]))*");
     352            Regex objBoolExpression = new Regex("([0-1]([\\*]|[\\+]|[\\|]|[\\-]|[_]|[°]|[v]|[\\^]))*");
    353353            //Regex keinHoch0 = new Regex("(x\\^[0]\\+)+");
    354354            //return !keinHoch0.IsMatch(strPoly) && objBoolExpression.IsMatch(strPoly);
     
    376376        }
    377377
    378         private string BuildPolynomialFromBinary(char [] tapSequence)
     378        /*private string BuildPolynomialFromBinary(char [] tapSequence)
    379379        {
    380380            string polynomial = "Feedback polynomial: \n";
     
    397397
    398398            return  polynomial;
    399         }
     399        }*/
     400
     401        private string makeStarsInText(Match m)
     402        {
     403            // Get the matched string.
     404            string x = m.ToString();
     405            // insert an * before the x
     406            x = x.Insert(x.Length - 1, "*");
     407            return x;
     408        }
     409
    400410
    401411        private string ReplaceVariables(string strExpressionWithVariables, char[] currentState)
    402412        {
    403             string strExpression = strExpressionWithVariables;
     413            // remove all spaces in function
     414            string strExpression = strExpressionWithVariables.Replace(" ", "");
     415            // first, lets put in *, if there aren't any (and should be there)
     416            // example: x^2+x^2x^3 ==> x^2+x^2*x^3
     417            Regex makeStars = new Regex("([0-9])x");
     418            strExpression = makeStars.Replace(strExpression, new MatchEvaluator(makeStarsInText));
     419
    404420            //GuiLogMessage("strExpression /w vars: " + strExpression, NotificationLevel.Info);
    405421            char[] strFSRValues = new char[currentState.Length]; // fix the length
     
    410426            string replacement = null;
    411427
    412             for (int i = 1; i <= strFSRValues.Length; i++)
     428            for (int i = strFSRValues.Length - 1; i >= 0; i--)
    413429            {
    414430                replacement = "x^" + i;
    415                 strExpression = strExpression.Replace(replacement, temp[i-1].ToString());
     431                strExpression = strExpression.Replace(replacement, temp[i].ToString());
    416432                //GuiLogMessage("temp[i-1]: " + temp[i - 1].ToString(), NotificationLevel.Info);
    417433            }
     
    450466        private bool EvaluateString(string function)
    451467        {
    452             // remove all spaces in function
    453             function = function.Replace(" ", "");
    454 
    455468            // test for AND aka '*'
    456469            int positionAND = function.IndexOf("*");
     
    460473                //GuiLogMessage("Position of '*': " + positionAND, NotificationLevel.Debug);
    461474
    462                 // remove XOR
    463                 function = function.Remove(positionAND, 1);
    464 
    465 
    466475                // get both operands
    467476                string operator1 = function.Substring(positionAND - 1, 1);
    468                 string operator2 = function.Substring(positionAND, 1);
     477                string operator2 = function.Substring(positionAND + 1, 1);
    469478                //GuiLogMessage("op1 and op2: " + operator1 + ", " + operator2, NotificationLevel.Debug);
    470479
     
    472481                //GuiLogMessage("product: " + product, NotificationLevel.Debug);
    473482                // remove old values
    474                 function = function.Remove(positionAND, 1);
    475                 function = function.Remove(positionAND - 1, 1);
     483                function = function.Remove(positionAND - 1, 3);
    476484                // insert new value
    477485                function = function.Insert(positionAND - 1, product);
     
    489497                //GuiLogMessage("Position of '+': " + positionXOR, NotificationLevel.Debug);
    490498
    491                 // remove XOR
    492                 function = function.Remove(positionXOR, 1);
    493 
    494 
    495499                // get both operands
    496500                string operator1 = function.Substring(positionXOR - 1, 1);
    497                 string operator2 = function.Substring(positionXOR, 1);
     501                string operator2 = function.Substring(positionXOR + 1, 1);
    498502                //GuiLogMessage("op1 and op2: " + operator1 + ", " + operator2, NotificationLevel.Debug);
    499503
     
    501505                //GuiLogMessage("sum: " + sum, NotificationLevel.Debug);
    502506                // remove old values
    503                 function = function.Remove(positionXOR, 1);
    504                 function = function.Remove(positionXOR - 1, 1);
     507                function = function.Remove(positionXOR - 1, 3);
    505508                // insert new value
    506509                function = function.Insert(positionXOR - 1, sum);
     
    560563                if (newSeed)
    561564                {
    562                     checkForInputTapSequence();
    563                     checkForInputSeed();
    564 
    565                     if (inputSeed == null || (inputSeed != null && inputSeed.Length == 0))
     565                    if (checkForInputTapSequence() == 1) return;
     566                    if (checkForInputSeed() == 1) return;
     567
     568                    /*if (inputSeed == null || (inputSeed != null && inputSeed.Length == 0))
    566569                    {
    567570                        GuiLogMessage("No Seed given. Aborting now.", NotificationLevel.Error);
     
    575578                        if (!settings.UseBoolClock) inputClock.Close();
    576579                        return;
    577                     }
     580                    }*/
    578581
    579582                    // read tapSequence
    580                     tapSequencebuffer = inputTapSequence;
    581 
    582                     // check if tapSequence is binary
    583                     /*bool tapSeqisBool = true;
    584                     foreach (char character in tapSequencebuffer)
    585                     {
    586                         if (character != '0' && character != '1')
    587                         {
    588                             tapSeqisBool = false;
    589                             //return;
    590                         }
    591                     }*/
    592 
    593                     // if tapSequence is not binary, await polynomial
    594                     /*if (!tapSeqisBool)
    595                     {
    596                         GuiLogMessage("TapSequence should not binary. Awaiting polynomial.", NotificationLevel.Info);
    597                         if (IsPolynomial(tapSequencebuffer))
    598                         {
    599                             GuiLogMessage(tapSequencebuffer + " is a valid polynomial.", NotificationLevel.Info);
    600                             tapSequenceString = tapSequencebuffer;
    601                             tapSequencebuffer = MakeBinary(tapSequencebuffer);
    602                             GuiLogMessage("Polynomial in binary form: " + tapSequencebuffer, NotificationLevel.Info);
    603 
    604                             // check if polynomial has false length
    605                             if (tapSequencebuffer.Length != inputSeed.Length)
    606                             {
    607                                 GuiLogMessage("ERROR - Your polynomial " + tapSequencebuffer + " has to be the same length (" + tapSequencebuffer.Length + " Bits) as your seed (" + inputSeed.Length + " Bits). Aborting now.", NotificationLevel.Error);
    608                                 if (!settings.UseBoolClock) inputClock.Close();
    609                                 return;
    610                             }
    611 
    612                             //GuiLogMessage("Polynomial after length fitting: " + tapSequencebuffer, NotificationLevel.Info);
    613                         }
    614                         else
    615                         {
    616                             GuiLogMessage("ERROR - " + tapSequencebuffer + " is NOT a valid polynomial. Aborting now.", NotificationLevel.Error);
    617                             //Console.WriteLine("\n{0} is NOT a valid polynomial.", tapSequencebuffer);
    618                             if (!settings.UseBoolClock) inputClock.Close();
    619                             return;
    620                         }
    621                     }*/
     583                    if (settings.Polynomial == null || (settings.Polynomial != null && settings.Polynomial.Length == 0))
     584                        tapSequencebuffer = inputTapSequence;
     585                    else
     586                        tapSequencebuffer = settings.Polynomial;
     587
     588                    //read seed
     589                    if (settings.Seed == null || (settings.Seed != null && settings.Seed.Length == 0))
     590                        seedbuffer = inputSeed;
     591                    else
     592                        seedbuffer = settings.Seed;
    622593
    623594                    // convert tapSequence into char array
     
    625596                    tapSequenceCharArray = tapSequencebuffer.ToCharArray();
    626597
    627                     int tapSequenceBits = inputTapSequence.Length;
    628                     seedBits = inputSeed.Length;
     598                    int tapSequenceBits = tapSequencebuffer.Length;
     599                    seedBits = seedbuffer.Length;
    629600
    630601                    GuiLogMessage("inputTapSequence length [bits]: " + tapSequenceBits.ToString(), NotificationLevel.Debug);
    631602                    GuiLogMessage("inputSeed length [bits]: " + seedBits.ToString(), NotificationLevel.Debug);
    632 
    633                     //read seed only one time until stop of chain
    634                     seedbuffer = inputSeed;
    635603
    636604                    //check if last tap is 1, otherwise stop
     
    675643
    676644                    // check if Rounds are given
    677                     int defaultRounds = 1;
     645                    int defaultRounds = 10;
    678646
    679647                    // check if Rounds in settings are given and use them only if no bool clock is selected
     
    688656               
    689657                // Here we go!
    690                 // check which clock to use
    691                 if (settings.UseBoolClock)
    692                 {
    693                     myClock = inputClockBool;
    694                 }
    695                 else if (!settings.UseBoolClock)
    696                 {
    697                     // read stream clock
    698                     checkForInputClock();
    699                     inputClock.OpenWrite("NLFSR Restart");
    700                     String stringClock = inputClock.ReadByte().ToString();
    701                     inputClock.Position = 0;
    702                     if (String.Equals(stringClock, "49")) myClock = true; else myClock = false;
    703                     //inputClock.Close();
    704                 }
    705 
    706658                // draw NLFSR Quickwatch
    707659                if (!settings.NoQuickwatch)
     
    713665                outputStream = new CryptoolStream();
    714666                listCryptoolStreamsOut.Add(outputStream);
    715                 outputStream.OpenWrite(this.GetPluginInfoAttribute().Caption);
     667                outputStream.OpenWrite();
    716668
    717669                //GuiLogMessage("Action is: Now!", NotificationLevel.Debug);
     
    741693                        outputStream.Write((Byte)outputbuffer);
    742694                        outputStringBuffer += seedCharArray[seedBits - 1];
     695                        outputBoolArray[0] = outputBool;
    743696
    744697                        // update outputs
    745698                        OnPropertyChanged("OutputBool");
     699                        OnPropertyChanged("OutputBoolArray");
    746700                        OnPropertyChanged("OutputStream");
    747701
     
    754708                        string tapPolynomial = null;
    755709                        tapPolynomial = ReplaceVariables(tapSequencebuffer, seedCharArray);
     710                        //GuiLogMessage("tapPoly: " + tapPolynomial, NotificationLevel.Info);
    756711                        if (!IsPolynomial(tapPolynomial))
    757712                        {
    758713                            GuiLogMessage("ERROR - " + tapSequencebuffer + " is NOT a valid polynomial. Aborting now.", NotificationLevel.Error);
    759                             if (!settings.UseBoolClock) inputClock.Close();
    760714                            return;
    761715                        }
     
    819773
    820774                            outputStream.Write((Byte)outputbuffer);
     775                            outputBoolArray[0] = outputBool;
    821776                            OnPropertyChanged("OutputBool");
     777                            OnPropertyChanged("OutputBoolArray");
    822778                            OnPropertyChanged("OutputStream");
    823779
     
    825781                            if (!settings.NoQuickwatch)
    826782                            {
    827                                 NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, outputbuffer, BuildPolynomialFromBinary(tapSequenceCharArray));
     783                                NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, outputbuffer, tapSequencebuffer);
    828784                            }
    829785                            /////////
     
    834790                            if (!settings.NoQuickwatch)
    835791                            {
    836                                 NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, ' ', BuildPolynomialFromBinary(tapSequenceCharArray));
     792                                NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, ' ', tapSequencebuffer);
    837793                            }
    838794                        }
     
    872828                    GuiLogMessage("Time used: " + duration, NotificationLevel.Debug);
    873829                    outputStream.Close();
    874                     if (!settings.UseBoolClock) inputClock.Close();
    875830                    OnPropertyChanged("OutputStream");
    876831                }
     
    880835                    outputStream.Close();
    881836                    outputStringBuffer = null;
    882                     if (!settings.UseBoolClock) inputClock.Close();
    883837                    GuiLogMessage("Aborted!", NotificationLevel.Debug);
    884838                }
  • trunk/CrypPlugins/NLFSR/NLFSRPresentation.xaml

    r559 r645  
    22    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    33    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4              Height="Auto" Width="Auto" Margin="0">
    5     <Grid>
    6         <Grid.RowDefinitions>
    7             <RowDefinition Height="Auto" />
    8             <RowDefinition Height="1*" />
    9         </Grid.RowDefinitions>
    10         <Grid Grid.Row="0">
    11             <!-- <StackPanel Orientation="Horizontal">
    12                 <Button Margin="2" >
    13                     <Image Source="icon.png" />
    14                 </Button>
    15                 <Button Margin="2">
    16                     <Image Source="icon.png" />
    17                 </Button>
    18             </StackPanel> -->
    19         </Grid>
    20         <Grid Grid.Row="1">
    21             <TabControl Height="Auto" Width="Auto" Background="PowderBlue" BorderBrush="PowderBlue">
    22                 <TabItem Header="Presentation" Background="PowderBlue">
    23                     <Grid Background="White">
    24                         <Grid Height="Auto" Width="Auto" Margin="0,5,0,0" Name="myGrid" HorizontalAlignment="Center" VerticalAlignment="Center" />
    25                         <Label Content="No Quickwatch data right now." Name="infoText" HorizontalAlignment="Center" VerticalAlignment="Center" />
    26                     </Grid>
    27                 </TabItem>
    28                 <TabItem Header="Tap Sequence" Background="PowderBlue">
    29                     <Grid Margin="5">
    30                         <Grid.RowDefinitions>
    31                             <RowDefinition Height="Auto" />
    32                             <RowDefinition Height="1*" />
    33                         </Grid.RowDefinitions>
    34 
    35                         <Label Name="tapSequenceLabel" Content="Enter tap sequence here (binary or polynome):" Grid.Row="0" />
    36                         <TextBox Name="tapSequenceTextBox" Grid.Row="1" />
    37                     </Grid>
    38                 </TabItem>
    39                 <TabItem Header="Seed" Background="PowderBlue">
    40                     <Grid Margin="5">
    41                         <Grid.RowDefinitions>
    42                             <RowDefinition Height="Auto" />
    43                             <RowDefinition Height="1*" />
    44                         </Grid.RowDefinitions>
    45 
    46                         <Label Name="seedLabel" Content="Enter seed here:" Grid.Row="0" />
    47                         <TextBox Name="seedTextBox" Grid.Row="1" />
    48                     </Grid>
    49                 </TabItem>
    50             </TabControl>
    51         </Grid>
     4    Height="Auto" Width="Auto" Margin="0">
     5   
     6    <Grid Background="White">
     7        <Grid Height="Auto" Width="Auto" Margin="0,5,0,0" Name="myGrid" HorizontalAlignment="Center" VerticalAlignment="Center" />
     8        <Label Content="No Quickwatch data right now." Name="infoText" HorizontalAlignment="Center" VerticalAlignment="Center" />
    529    </Grid>
    5310</UserControl>
  • trunk/CrypPlugins/NLFSR/NLFSRPresentation.xaml.cs

    r490 r645  
    7575                myGrid.Children.Add(VertLine1);
    7676
    77                 Line VertLine2 = new Line();
     77                /*Line VertLine2 = new Line();
    7878                VertLine2.X1 = 35 + (state.Length - 1) * 29;
    7979                VertLine2.Y1 = 32;
     
    8282                VertLine2.Stroke = Brushes.Black;
    8383                VertLine2.StrokeThickness = 1;
    84                 myGrid.Children.Add(VertLine2);
     84                myGrid.Children.Add(VertLine2);*/
    8585
    8686                // add connection circle
     
    254254                // disable /*last*/ and first XOR
    255255                //myGrids[0].Visibility = Visibility.Hidden;
    256                 myGrids[state.Length - 1].Visibility = Visibility.Hidden;
     256                //myGrids[state.Length - 1].Visibility = Visibility.Hidden;
    257257
    258258                // add output bit label
     
    302302                for (i = 0; i < state.Length; i++)
    303303                {
    304                     childVisual = (Visual)VisualTreeHelper.GetChild(myGrid, 6 + i * 2);
     304                    childVisual = (Visual)VisualTreeHelper.GetChild(myGrid, 5 + i * 2);
    305305                    childVisual.SetValue(TextBox.TextProperty, state[i].ToString());
    306306
     
    315315
    316316                // update output label
    317                 childVisual = (Visual)VisualTreeHelper.GetChild(myGrid, 8 + (i-1) * 2);
     317                childVisual = (Visual)VisualTreeHelper.GetChild(myGrid, 7 + (i-1) * 2);
    318318                childVisual.SetValue(Label.ContentProperty, output);
    319319
    320320                // update polynome
    321                 childVisual = (Visual)VisualTreeHelper.GetChild(myGrid, 9 + (i - 1) * 2);
     321                childVisual = (Visual)VisualTreeHelper.GetChild(myGrid, 8 + (i - 1) * 2);
    322322                childVisual.SetValue(TextBox.TextProperty, polynomial);
    323323
  • trunk/CrypPlugins/NLFSR/NLFSRSettings.cs

    r490 r645  
    2727        //[ContextMenu("Rounds", "How many bits shall be generated?", 1, DisplayLevel.Beginner, ContextMenuControlType.ComboBox, new int[] { 10, 50, 100 }, "10 bits", "50 bits", "100 bits")]
    2828        //[TaskPane("Rounds", "How many bits shall be generated?", null, 1, false, DisplayLevel.Beginner, ControlType.TextBox)]
    29         [TaskPane("Number of rounds", "How many bits shall be generated? Note: This only applies if no boolean clock is used.", null, 0, false, DisplayLevel.Beginner, ControlType.NumericUpDown, ValidationType.RangeInteger, 0, int.MaxValue)]
     29        [TaskPane("Number of rounds", "How many bits shall be generated? Note: This only applies if no boolean clock is used.", null, 2, false, DisplayLevel.Beginner, ControlType.NumericUpDown, ValidationType.RangeInteger, 0, int.MaxValue)]
    3030        public int Rounds
    3131        {
     
    3434                this.rounds = value;
    3535                OnPropertyChanged("Rounds");
     36                HasChanges = true;
     37            }
     38        }
     39
     40        string polynomial;
     41        [TaskPane("Polynomial", "Define the feedback polynomial. For example x^5 * x^2 + 1.", null, 0, false, DisplayLevel.Beginner, ControlType.TextBox)]
     42        public string Polynomial
     43        {
     44            get { return this.polynomial; }
     45            set
     46            {
     47                this.polynomial = value;
     48                OnPropertyChanged("Polynomial");
     49                HasChanges = true;
     50            }
     51        }
     52
     53        string seed;
     54        [TaskPane("Seed", "Define the seed of the LFSR. For example 11100", null, 1, false, DisplayLevel.Beginner, ControlType.TextBox)]
     55        public string Seed
     56        {
     57            get { return this.seed; }
     58            set
     59            {
     60                this.seed = value;
     61                OnPropertyChanged("Seed");
    3662                HasChanges = true;
    3763            }
Note: See TracChangeset for help on using the changeset viewer.