Changeset 490


Ignore:
Timestamp:
Sep 9, 2009, 5:06:41 PM (12 years ago)
Author:
Sören Rinne
Message:
  • added NLFSR sample
  • modified LFSR sample
  • modified NLFSR QuickWatchPresentation
  • minor changes in BooleanFunctionParser, CLK, LFSR
Location:
trunk
Files:
3 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/BooleanFunctionParser/BooleanFunctionParser.csproj

    r477 r490  
    100100    <Resource Include="Images\cube.gif" />
    101101  </ItemGroup>
     102  <ItemGroup>
     103    <Resource Include="Images\copy.png" />
     104    <Resource Include="Images\paste.png" />
     105  </ItemGroup>
    102106  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    103107  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
  • trunk/CrypPlugins/BooleanFunctionParser/BooleanFunctionParserPresentation.xaml

    r477 r490  
    66        <Grid.ColumnDefinitions>
    77            <ColumnDefinition Name="col0" Width="1*"/>
     8            <ColumnDefinition Name="colm" Width="5"/>
    89            <ColumnDefinition Name="col1" Width="1*"/>
    910        </Grid.ColumnDefinitions>
     
    1920            Boolean function:
    2021        </Label>
     22        <!-- <Button Name="myButton" Grid.Column="0" Grid.Row="0" Width="20" Height="20" HorizontalAlignment="Left" Background="White" Foreground="White" BorderBrush="White" >
     23            <Image Source="Images\copy.png" />
     24        </Button>-->
    2125        <Grid Background="White" Grid.Column="0" Grid.Row="1">
    2226        <TextBox Name="textBoxInputFunction" AcceptsTab="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" AcceptsReturn="True">
     
    3943        </Grid>
    4044       
    41         <Label Name="labelInputFunction2" Grid.Column="1" Grid.Row="0" VerticalAlignment="Top" Margin="4" Padding="0">
    42             Boolean function 2 (Cube):
     45        <Label Name="labelInputFunction2" Grid.Column="2" Grid.Row="0" VerticalAlignment="Top" Margin="4" Padding="0">
     46            2nd boolean function for cube attack:
    4347        </Label>
    44         <Grid Background="White" Grid.Column="1" Grid.Row="1">
     48        <Grid Background="White" Grid.Column="2" Grid.Row="1">
    4549        <TextBox Name="textBoxInputFunction2" AcceptsTab="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" AcceptsReturn="True">
    4650            <TextBox.Background>
     
    4953        </TextBox>
    5054        </Grid>
    51         <Label Name="labelInputData2" Grid.Column="1" Grid.Row="2" VerticalAlignment="Top" Margin="4" Padding="0" >
     55        <Label Name="labelInputData2" Grid.Column="2" Grid.Row="2" VerticalAlignment="Top" Margin="4" Padding="0" >
    5256            Secret Key data:
    5357        </Label>
    54         <Grid Background="White" Grid.Column="1" Grid.Row="3">
     58        <Grid Background="White" Grid.Column="2" Grid.Row="3">
    5559        <TextBox Name="textBoxInputData2" AcceptsTab="True"
    5660               TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"
  • trunk/CrypPlugins/BooleanFunctionParser/BooleanFunctionParserPresentation.xaml.cs

    r471 r490  
    247247                      col0.Width = col0Length;
    248248                  }, null);
    249               //col0.Width = System.Windows.GridLength.Auto;
     249
    250250              if (col1 != null)
    251251                  Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     
    253253                      col1.Width = col1Length;
    254254                  }, null);
    255               //col1.Width = col1Length;
     255              if (colm != null)
     256                  Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     257                  {
     258                      colm.Width = col1Length;
     259                  }, null);
    256260          }
    257261          else
    258262          {
    259263              GridLength colLength = (GridLength)myGridLengthConverter.ConvertFromString("1*");
     264              GridLength colmLength = (GridLength)myGridLengthConverter.ConvertFromString("5");
    260265              if (col0 != null)
    261266                  Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     
    263268                      col0.Width = colLength;
    264269                  }, null);
    265               //col0.Width = colLength;
     270
    266271              if (col1 != null)
    267272                  Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     
    269274                      col1.Width = colLength;
    270275                  }, null);
    271               //col1.Width = colLength;
     276              if (colm != null)
     277                  Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     278                  {
     279                      colm.Width = colmLength;
     280                  }, null);
    272281          }
    273282      }
  • trunk/CrypPlugins/BooleanFunctionParser/BooleanFunctionParserSettings.cs

    r471 r490  
    8686        }
    8787
    88         [ContextMenu("Use BFP for CubeAttack",
    89             "Adjust the BFP for use with Cube Attack.",
    90             2,
    91             DisplayLevel.Beginner,
     88        [ContextMenu("CubeAttack mode",
     89            "Extend the BFP for use as a slave for Cube Attack.",
     90            1,
     91            DisplayLevel.Experienced,
    9292            ContextMenuControlType.CheckBox,
    9393            null,
    9494            "")]
    95         [TaskPane("Use BFP for CubeAttack",
    96             "Adjust the BFP for use with Cube Attack.",
     95        [TaskPane("CubeAttack mode",
     96            "Extend the BFP for use as a slave for Cube Attack.",
    9797            null,
    9898            1,
    9999            false,
    100             DisplayLevel.Expert,
     100            DisplayLevel.Experienced,
    101101            ControlType.CheckBox, "")]
    102102        public bool UseBFPforCube
  • trunk/CrypPlugins/CLK/CLK.cs

    r419 r490  
    116116
    117117        myRounds = settings.Rounds;
    118         GuiLogMessage("myRounds: " + myRounds.ToString(), NotificationLevel.Info);
     118        //GuiLogMessage("myRounds: " + myRounds.ToString(), NotificationLevel.Info);
    119119
    120120        startTime = DateTime.Now;
     
    136136                // compute overall time
    137137                TimeSpan duration = stopTime - startTime;
    138                 GuiLogMessage("Overall time used: " + duration, NotificationLevel.Info);
     138                GuiLogMessage("Overall time used: " + duration, NotificationLevel.Debug);
    139139            }
    140140        }
  • trunk/CrypPlugins/LFSR/LFSR.cs

    r419 r490  
    411411            else
    412412            {
     413                // do nothing if we should use bool clock, but become event from other inputs
    413414                if (settings.UseBoolClock) return;
    414415                //GuiLogMessage("Second if.", NotificationLevel.Info);
     
    635636                        outputbuffer = seedCharArray[seedBits - 1];
    636637                        outputStream.Write((Byte)outputbuffer);
    637                         if (!settings.UseBoolClock) outputStringBuffer += seedCharArray[seedBits - 1];
     638                        outputStringBuffer += seedCharArray[seedBits - 1];
    638639
    639640                        // update outputs
     
    769770                if (!stop)
    770771                {
    771                     // finally write output string if no bool-clock was used
    772                     if (!settings.UseBoolClock)
    773                     {
    774                         outputString = outputStringBuffer;
    775                         OnPropertyChanged("OutputString");
    776                     }
     772                    // finally write output string
     773                    outputString = outputStringBuffer;
     774                    OnPropertyChanged("OutputString");
    777775
    778776                    GuiLogMessage("Complete!", NotificationLevel.Debug);
     
    786784                {
    787785                    outputStream.Close();
     786                    outputStringBuffer = null;
    788787                    GuiLogMessage("Aborted!", NotificationLevel.Debug);
    789788                }
  • trunk/CrypPlugins/NLFSR/NLFSR.cs

    r444 r490  
    207207            }
    208208        }
    209        
    210         private bool controllerOutput;
    211         // [ControllerProperty(Direction.OutputData, "Controller Output", "", DisplayLevel.Beginner)]
    212         public object ControllerOutput
    213         {
    214             get { return controllerOutput; }
    215             set { controllerOutput = (bool)value; }
    216         }
    217209
    218210        public void Dispose()
     
    454446        }
    455447
    456         private ATreeNode FillTree(string strExpression)
    457         {
    458             // fill tree
    459             //char[] charPolynomial = { '0', '*', '1', '+', '0', '*', '1', '+', '1' }; // sample for debug
    460             // replace spaces with nothing
    461             strExpression = strExpression.Replace(" ", "");
    462             char[] charPolynomial = strExpression.ToCharArray();
    463             int i;
    464             ATreeNode[] treeArray = new ATreeNode[charPolynomial.Length];
    465 
    466             for (i = 0; i < charPolynomial.Length; i++)
    467             {
    468                 if (Char.IsDigit(charPolynomial[i]))
    469                 // should be a digit
    470                 {
    471                     if (i == 0)
    472                     {
    473                         // first digit
    474                         treeArray[i] = new ATreeNode("Constant");
    475                         if (charPolynomial[i] == '0') treeArray[i].ConstantData = false;
    476                         else treeArray[i].ConstantData = true;
    477                     }
    478                     else
    479                     {
    480                         // any other digit
    481                         treeArray[i] = new ATreeNode("Constant");
    482                         if (charPolynomial[i] == '0') treeArray[i].ConstantData = false;
    483                         else treeArray[i].ConstantData = true;
    484                         treeArray[i - 1].RightChild = treeArray[i];
    485                     }
    486                 }
    487                 else
    488                 // should be an operand
    489                 {
    490 
    491                     /*if (charPolynomial[i] == '!')
    492                     {
    493                         // ! operand
    494                         // TO DO
    495                     }
    496                     else*/
    497                     {
    498                         // * or + operands
    499                         if (i == 1)
    500                         {
    501                             treeArray[i] = new ATreeNode(charPolynomial[i].ToString());
    502                             treeArray[i].LeftChild = treeArray[i - 1];
    503                         }
    504                         else
    505                         {
    506                             treeArray[i] = new ATreeNode(charPolynomial[i].ToString());
    507                             treeArray[i].LeftChild = treeArray[i - 2];
    508                         }
    509                     }
    510                 }
    511                 // debug output
    512                 //Console.Out.Write(treeArray[i].NodeType + " ");
    513             }
    514 
    515             return treeArray[treeArray.Length - 2];
    516         }
    517 
    518         private bool EvaluateTree(bool X, ATreeNode NodePointer)
    519         {
    520             //float RightTemp, LeftTemp, UnaryTemp;
    521 
    522             switch (NodePointer.NodeType)
    523             {
    524                 case "+":
    525                     X = EvaluateTree(X, NodePointer.LeftChild) && EvaluateTree(X, NodePointer.RightChild);
    526                     break;
    527 
    528                 case "-":
    529                     X = !(EvaluateTree(X, NodePointer.LeftChild) && EvaluateTree(X, NodePointer.RightChild));
    530                     break;
    531 
    532                 case "*":
    533                     X = EvaluateTree(X, NodePointer.LeftChild) ^ EvaluateTree(X, NodePointer.RightChild);
    534                     break;
    535 
    536                 case "°":
    537                     X = !(EvaluateTree(X, NodePointer.LeftChild) ^ EvaluateTree(X, NodePointer.RightChild));
    538                     break;
    539 
    540                 case "|":
    541                     X = EvaluateTree(X, NodePointer.LeftChild) | EvaluateTree(X, NodePointer.RightChild);
    542                     break;
    543 
    544                 case "_":
    545                     X = !(EvaluateTree(X, NodePointer.LeftChild) | EvaluateTree(X, NodePointer.RightChild));
    546                     break;
    547 
    548                 case "XVariable":
    549                     // X = X;
    550                     break;
    551 
    552                 case "Constant":
    553                     X = NodePointer.ConstantData;
    554                     break;
    555             }
    556 
    557             return X;
     448        // solves string with variables replaced by values
     449        private bool EvaluateString(string function)
     450        {
     451            // remove all spaces in function
     452            function = function.Replace(" ", "");
     453
     454            // test for AND aka '*'
     455            int positionAND = function.IndexOf("*");
     456
     457            while (positionAND != -1)
     458            {
     459                //GuiLogMessage("Position of '*': " + positionAND, NotificationLevel.Debug);
     460
     461                // remove XOR
     462                function = function.Remove(positionAND, 1);
     463
     464
     465                // get both operands
     466                string operator1 = function.Substring(positionAND - 1, 1);
     467                string operator2 = function.Substring(positionAND, 1);
     468                //GuiLogMessage("op1 and op2: " + operator1 + ", " + operator2, NotificationLevel.Debug);
     469
     470                string product = (Int32.Parse(operator1) & Int32.Parse(operator2)).ToString();
     471                //GuiLogMessage("product: " + product, NotificationLevel.Debug);
     472                // remove old values
     473                function = function.Remove(positionAND, 1);
     474                function = function.Remove(positionAND - 1, 1);
     475                // insert new value
     476                function = function.Insert(positionAND - 1, product);
     477                //GuiLogMessage("function: " + function, NotificationLevel.Debug);
     478
     479                // any other ANDs in there?
     480                positionAND = function.IndexOf("*");
     481            }
     482
     483            // test for XOR aka '+'
     484            int positionXOR = function.IndexOf("+");
     485
     486            while (positionXOR != -1)
     487            {
     488                //GuiLogMessage("Position of '+': " + positionXOR, NotificationLevel.Debug);
     489
     490                // remove XOR
     491                function = function.Remove(positionXOR, 1);
     492
     493
     494                // get both operands
     495                string operator1 = function.Substring(positionXOR - 1, 1);
     496                string operator2 = function.Substring(positionXOR, 1);
     497                //GuiLogMessage("op1 and op2: " + operator1 + ", " + operator2, NotificationLevel.Debug);
     498
     499                string sum = (Int32.Parse(operator1) ^ Int32.Parse(operator2)).ToString();
     500                //GuiLogMessage("sum: " + sum, NotificationLevel.Debug);
     501                // remove old values
     502                function = function.Remove(positionXOR, 1);
     503                function = function.Remove(positionXOR - 1, 1);
     504                // insert new value
     505                function = function.Insert(positionXOR - 1, sum);
     506                //GuiLogMessage("function: " + function, NotificationLevel.Debug);
     507
     508                // any other XORs in there?
     509                positionXOR = function.IndexOf("+");
     510            }
     511
     512            bool result = Convert.ToBoolean(Int32.Parse(function));
     513
     514            return result;
    558515        }
    559516
     
    688645
    689646                    // check if seed is binary
    690                     foreach (char character in seedCharArray)
    691                     {
    692                         if (character != '0' && character != '1')
    693                         {
    694                             GuiLogMessage("ERROR 0 - Seed has to be binary. Aborting now. Character is: " + character, NotificationLevel.Error);
     647                    for (int z = 0; z < seedCharArray.Length; z++)
     648                    {
     649                        if (seedCharArray[z] != '0' && seedCharArray[z] != '1')
     650                        {
     651                            GuiLogMessage("ERROR 0 - Seed has to be binary. Aborting now. Character is: " + seedCharArray[z], NotificationLevel.Error);
    695652                            return;
    696653                        }
     654                        // create tapSequence for drawing NLFSR
     655                        string temp = "x^" + z;
     656                        if (tapSequencebuffer.Contains(temp))
     657                        {
     658                            tapSequenceCharArray[((z - seedCharArray.Length) * -1)-1] = '1';
     659                        }
     660                        else
     661                            tapSequenceCharArray[((z - seedCharArray.Length) * -1)-1] = '0';
    697662                    }
     663
    698664                    if (settings.UseClockingBit)
    699665                    {
     
    717683                    }
    718684                    else actualRounds = 1;
     685
     686                    // create tapSequence for drawing NLFSR
    719687                }
    720688               
     
    740708                if (!settings.NoQuickwatch)
    741709                {
    742                     NLFSRPresentation.DrawNLFSR(seedCharArray, seedCharArray, clocking);
     710                    NLFSRPresentation.DrawNLFSR(seedCharArray, tapSequenceCharArray, clocking);
    743711                }
    744712
     
    773741                        outputbuffer = seedCharArray[seedBits - 1];
    774742                        outputStream.Write((Byte)outputbuffer);
    775                         if (!settings.UseBoolClock) outputStringBuffer += seedCharArray[seedBits - 1];
     743                        outputStringBuffer += seedCharArray[seedBits - 1];
    776744
    777745                        // update outputs
     
    793761                            return;
    794762                        }
    795                         GuiLogMessage("tapPolynomial is: " + tapPolynomial, NotificationLevel.Info);
     763                        //GuiLogMessage("tapPolynomial is: " + tapPolynomial, NotificationLevel.Info);
    796764
    797765                        bool resultBool = true;
    798                         resultBool = EvaluateTree(resultBool, FillTree(tapPolynomial));
    799 
    800                         GuiLogMessage("resultBool is: " + resultBool, NotificationLevel.Info);
     766                        resultBool = EvaluateString(tapPolynomial);
     767
     768                        //GuiLogMessage("resultBool is: " + resultBool, NotificationLevel.Info);
    801769                        if (resultBool) newBit = '1'; else newBit = '0';
    802770
     
    815783                        if (!settings.NoQuickwatch)
    816784                        {
    817                             NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, outputBit, BuildPolynomialFromBinary(tapSequenceCharArray));
     785                            NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, outputBit, tapSequencebuffer);
    818786                        }
    819787
     
    845813                                if (!settings.NoQuickwatch)
    846814                                {
    847                                     NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, '2', BuildPolynomialFromBinary(tapSequenceCharArray));
     815                                    NLFSRPresentation.FillBoxes(seedCharArray, tapSequenceCharArray, '2', tapSequencebuffer);
    848816                                }
    849817                            }
     
    895863                }
    896864
    897                 controllerOutput = true;
    898                 OnPropertyChanged("ControllerOutput");
    899 
    900865                // stop counter
    901866                DateTime stopTime = DateTime.Now;
     
    905870                if (!stop)
    906871                {
    907                     // finally write output string if no bool-clock was used
    908                     if (!settings.UseBoolClock)
    909                     {
    910                         outputString = outputStringBuffer;
    911                         OnPropertyChanged("OutputString");
    912                     }
     872                    // finally write output string
     873                    outputString = outputStringBuffer;
     874                    OnPropertyChanged("OutputString");
    913875
    914876                    GuiLogMessage("Complete!", NotificationLevel.Debug);
     
    923885                {
    924886                    outputStream.Close();
     887                    outputStringBuffer = null;
    925888                    if (!settings.UseBoolClock) inputClock.Close();
    926889                    GuiLogMessage("Aborted!", NotificationLevel.Debug);
     
    1021984    #endregion
    1022985
    1023     public class ATreeNode
    1024     {
    1025         #region private variables
    1026 
    1027         private ATreeNode _leftChild;
    1028         private ATreeNode _rightChild;
    1029         private ATreeNode _unaryChild;
    1030         private string _nodeType;
    1031         private bool _constantData;
    1032 
    1033         /*private enum _nodeType
    1034         {
    1035             Add,Subtract,Multiply,Divide,Power,AbsValue,Log,Negation,Sine,Square,SquareRoot,XVariable,Constant
    1036         }*/
    1037 
    1038         #endregion
    1039 
    1040         #region public interfaces
    1041 
    1042         public ATreeNode LeftChild
    1043         {
    1044             get { return _leftChild; }
    1045             set { _leftChild = value; }
    1046         }
    1047 
    1048         public ATreeNode RightChild
    1049         {
    1050             get { return _rightChild; }
    1051             set { _rightChild = value; }
    1052         }
    1053 
    1054         public ATreeNode UnaryChild
    1055         {
    1056             get { return _unaryChild; }
    1057             set { _unaryChild = value; }
    1058         }
    1059 
    1060         public string NodeType
    1061         {
    1062             get { return _nodeType; }
    1063         }
    1064 
    1065         public bool ConstantData
    1066         {
    1067             get { return _constantData; }
    1068             set { _constantData = value; }
    1069         }
    1070 
    1071         public bool HasChildren
    1072         {
    1073             get { return (_leftChild != null || _rightChild != null); }
    1074         }
    1075 
    1076         #endregion
    1077 
    1078         // Constructor
    1079         public ATreeNode(string nodeType)
    1080         {
    1081             _nodeType = nodeType;
    1082             _leftChild = _rightChild = _unaryChild = null;
    1083         }
    1084     }
    1085986}
  • trunk/CrypPlugins/NLFSR/NLFSRPresentation.xaml

    r371 r490  
    44             Height="Auto" Width="Auto" Margin="0" Background="White" BorderBrush="Black" BorderThickness="1">
    55    <Grid>
    6         <Grid Height="50" Width="Auto" Margin="5,0,0,60" Name="polynomialGrid" HorizontalAlignment="Left" VerticalAlignment="Center">
    7             <Label Name="polynomialText"></Label>
    8         </Grid>
    9         <Grid Height="Auto" Width="Auto" Margin="0,40,0,0" Name="myGrid" HorizontalAlignment="Center" VerticalAlignment="Center" />
     6        <Grid Height="Auto" Width="Auto" Margin="0,5,0,0" Name="myGrid" HorizontalAlignment="Center" VerticalAlignment="Center" />
    107        <Label Content="No Quickwatch data right now." Name="infoText" HorizontalAlignment="Center" VerticalAlignment="Center" />
    118    </Grid>
  • trunk/CrypPlugins/NLFSR/NLFSRPresentation.xaml.cs

    r371 r490  
    4646                // hide initial textbox
    4747                infoText.Visibility = Visibility.Hidden;
    48                 polynomialText.Visibility = Visibility.Visible;
    4948
    5049                // add lines and triangles
     
    6059                Line HoriLine2 = new Line();
    6160                HoriLine2.X1 = 5;
    62                 HoriLine2.Y1 = 47;
     61                HoriLine2.Y1 = 57;
    6362                HoriLine2.X2 = 35 + (state.Length - 1) * 29;
    64                 HoriLine2.Y2 = 47;
     63                HoriLine2.Y2 = 57;
    6564                HoriLine2.Stroke = Brushes.Black;
    6665                HoriLine1.StrokeThickness = 1;
     
    7170                VertLine1.Y1 = 17.5;
    7271                VertLine1.X2 = 5;
    73                 VertLine1.Y2 = 47.5;
     72                VertLine1.Y2 = 57.5;
    7473                VertLine1.Stroke = Brushes.Black;
    7574                VertLine1.StrokeThickness = 1;
     
    219218                        myEllipses[i].Stroke = Brushes.DodgerBlue;
    220219                        myEllipses[i].Margin = new Thickness(9, 9, 9, 9);
    221 
     220                        */
    222221                        myLinesVert[i] = new Line();
    223222                        myLinesVert[i].Name = "VertLineXOR" + i;
     
    227226                        myLinesVert[i].Y1 = 0.5;
    228227                        myLinesVert[i].X2 = 15;
    229                         myLinesVert[i].Y2 = 9;
    230 
    231                         myLinesVertRed[i] = new Line();
     228                        myLinesVert[i].Y2 = 15;
     229
     230                        /*myLinesVertRed[i] = new Line();
    232231                        myLinesVertRed[i].Name = "VertLineXORRed" + i;
    233232                        myLinesVertRed[i].Stroke = Brushes.DodgerBlue;
     
    237236                        myLinesVertRed[i].X2 = 15;
    238237                        myLinesVertRed[i].Y2 = 20;
    239 
     238                       
    240239                        myLinesHori[i] = new Line();
    241240                        myLinesHori[i].Name = "HoriLineXOR" + i;
     
    246245                        myLinesHori[i].X2 = 20;
    247246                        myLinesHori[i].Y2 = 15;
    248 
    249                         myGrids[i].Children.Add(myEllipses[i]);
     247                        */
     248                        //myGrids[i].Children.Add(myEllipses[i]);
    250249                        myGrids[i].Children.Add(myLinesVert[i]);
    251                         myGrids[i].Children.Add(myLinesVertRed[i]);
    252                         myGrids[i].Children.Add(myLinesHori[i]);*/
     250                        //myGrids[i].Children.Add(myLinesVertRed[i]);
     251                        //myGrids[i].Children.Add(myLinesHori[i]);
    253252                    }
    254253                }
     
    269268                outPutLabel.Name = "outputLabel";
    270269                myGrid.Children.Add(outPutLabel);
     270
     271                // add function box underneath
     272                TextBox functionTextBox = new TextBox();
     273                functionTextBox.Margin = new Thickness(20, 43, 0, 0);
     274                functionTextBox.Width = 29 * i + 1;
     275                functionTextBox.Height = 30;
     276                functionTextBox.HorizontalAlignment = HorizontalAlignment.Left;
     277                functionTextBox.VerticalAlignment = VerticalAlignment.Top;
     278                functionTextBox.Name = "functionTextBox";
     279                functionTextBox.Visibility = Visibility.Visible;
     280                functionTextBox.BorderThickness = new Thickness(1);
     281                functionTextBox.IsReadOnly = true;
     282                functionTextBox.TextAlignment = TextAlignment.Center;
     283                functionTextBox.VerticalContentAlignment = VerticalAlignment.Center;
     284                functionTextBox.BorderBrush = Brushes.LightGray;
     285                functionTextBox.Foreground = Brushes.LightGray;
     286
     287                myGrid.Children.Add(functionTextBox);
    271288
    272289            }, null);
     
    302319
    303320                // update polynome
    304                 //childVisual = (Visual)VisualTreeHelper.GetChild(polynomialGrid, 0);
    305                 //childVisual.SetValue(Label.ContentProperty, polynomial);
     321                childVisual = (Visual)VisualTreeHelper.GetChild(myGrid, 9 + (i - 1) * 2);
     322                childVisual.SetValue(TextBox.TextProperty, polynomial);
    306323
    307324            }, null);
     
    314331                // remove all elements
    315332                myGrid.Children.RemoveRange(0, end);
    316                 polynomialText.Visibility = Visibility.Hidden;
    317333
    318334                // show initial infoText again
  • trunk/CrypPlugins/NLFSR/NLFSRSettings.cs

    r371 r490  
    1313using Cryptool.PluginBase.Miscellaneous;
    1414using System.Runtime.Remoting.Contexts;
     15// for Visibility
     16using System.Windows;
    1517
    1618namespace Cryptool.NLFSR
     
    5052        }
    5153
     54        private bool useClockingBit = false;
     55        [ContextMenu("Generate add. output bit", "With this checkbox enabled, the additional output bit will be generated.", 0, DisplayLevel.Experienced, ContextMenuControlType.CheckBox, null, new string[] { "Generate additional output bit?" })]
     56        [TaskPane("Generate add. output bit", "With this checkbox enabled, the additional output bit will be generated.", "Additional Output Bit", 0, false, DisplayLevel.Beginner, ControlType.CheckBox, "", null)]
     57        public bool UseClockingBit
     58        {
     59            get { return this.useClockingBit; }
     60            set
     61            {
     62                this.useClockingBit = (bool)value;
     63                OnPropertyChanged("UseClockingBit");
     64                HasChanges = true;
     65                if (this.useClockingBit)
     66                    SettingChanged("ClockingBit", Visibility.Visible);
     67                else
     68                    SettingChanged("ClockingBit", Visibility.Collapsed);
     69            }
     70        }
     71       
    5272        private int clockingBit = 0;
    53         [TaskPane("Clocking bit number", "Which bit shall be generated as an additional output? For example as an clocking bit.", "Additional Output Bit", 0, false, DisplayLevel.Beginner, ControlType.NumericUpDown, ValidationType.RangeInteger, 0, int.MaxValue)]
     73        [TaskPane("Additional output bit #", "Which bit shall be generated as an additional output? For example as an clocking bit.", "Additional Output Bit", 1, false, DisplayLevel.Beginner, ControlType.NumericUpDown, ValidationType.RangeInteger, 0, int.MaxValue)]
    5474        public int ClockingBit
    5575        {
     
    5979                this.clockingBit = value;
    6080                OnPropertyChanged("ClockingBit");
    61                 HasChanges = true;
    62             }
    63         }
    64 
    65         private bool useClockingBit = false;
    66         [ContextMenu("Use clocking bit", "With this checkbox enabled, the clocking bit will be generated.", 0, DisplayLevel.Experienced, ContextMenuControlType.CheckBox, null, new string[] { "Use clocking bit?" })]
    67         [TaskPane("Use clocking bit", "With this checkbox enabled, clocking bit will be generated.", "Additional Output Bit", 1, false, DisplayLevel.Beginner, ControlType.CheckBox, "", null)]
    68         public bool UseClockingBit
    69         {
    70             get { return this.useClockingBit; }
    71             set
    72             {
    73                 this.useClockingBit = (bool)value;
    74                 OnPropertyChanged("UseClockingBit");
    7581                HasChanges = true;
    7682            }
     
    8894                OnPropertyChanged("UseBoolClock");
    8995                HasChanges = true;
     96                if (this.useBoolClock)
     97                    SettingChanged("Rounds", Visibility.Collapsed);
     98                else
     99                    SettingChanged("Rounds", Visibility.Visible);
    90100            }
    91101        }
     
    131141        public event PropertyChangedEventHandler PropertyChanged;
    132142
     143        // this event is for disabling stuff in the settings pane
     144        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
     145
    133146        public void OnPropertyChanged(string name)
    134147        {
     
    139152        }
    140153
     154        // these 2 functions are for disabling stuff in the settings pane
     155        private void SettingChanged(string setting, Visibility vis)
     156        {
     157            if (TaskPaneAttributeChanged != null)
     158            {
     159                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer(setting, vis)));
     160            }
     161        }
     162
     163        private void SettingChanged(string setting, Visibility vis, TaskPaneAttribute tpa)
     164        {
     165            if (TaskPaneAttributeChanged != null)
     166            {
     167                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer(setting, vis, tpa)));
     168            }
     169        }
     170
    141171        #endregion
    142172    }
Note: See TracChangeset for help on using the changeset viewer.