Changeset 8128


Ignore:
Timestamp:
May 28, 2019, 11:17:39 PM (3 years ago)
Author:
Christian Bender
Message:

ToyCiphers: UI modification + some logic implementation

Location:
trunk/CrypPluginsExperimental/ToyCiphers
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPluginsExperimental/ToyCiphers/Properties/Resources.Designer.cs

    r8126 r8128  
    280280       
    281281        /// <summary>
     282        ///   Sucht eine lokalisierte Zeichenfolge, die The permutation swaps the fixed position i of an input bit to a position j in the output. The following table describes the permutation, with the first line representing the decimal position of a bit in the input and the second line representing the position of the corresponding bit in the output. ähnelt.
     283        /// </summary>
     284        internal static string DescPermutation {
     285            get {
     286                return ResourceManager.GetString("DescPermutation", resourceCulture);
     287            }
     288        }
     289       
     290        /// <summary>
     291        ///   Sucht eine lokalisierte Zeichenfolge, die The SBox substitutes fixed input bits for other output bits. The following table describes the SBox, where the first line represents the decimal representation of the input bits and the second line represents the decimal representation of the output bits. ähnelt.
     292        /// </summary>
     293        internal static string DescSBox {
     294            get {
     295                return ResourceManager.GetString("DescSBox", resourceCulture);
     296            }
     297        }
     298       
     299        /// <summary>
     300        ///   Sucht eine lokalisierte Zeichenfolge, die Table of the Permutation: ähnelt.
     301        /// </summary>
     302        internal static string HeaderPermutation {
     303            get {
     304                return ResourceManager.GetString("HeaderPermutation", resourceCulture);
     305            }
     306        }
     307       
     308        /// <summary>
     309        ///   Sucht eine lokalisierte Zeichenfolge, die Table of the SBox: ähnelt.
     310        /// </summary>
     311        internal static string HeaderSBox {
     312            get {
     313                return ResourceManager.GetString("HeaderSBox", resourceCulture);
     314            }
     315        }
     316       
     317        /// <summary>
     318        ///   Sucht eine lokalisierte Zeichenfolge, die Input ähnelt.
     319        /// </summary>
     320        internal static string Input {
     321            get {
     322                return ResourceManager.GetString("Input", resourceCulture);
     323            }
     324        }
     325       
     326        /// <summary>
     327        ///   Sucht eine lokalisierte Zeichenfolge, die The specified key is not big enough. Please check the requirements of this cipher. ähnelt.
     328        /// </summary>
     329        internal static string KeyError {
     330            get {
     331                return ResourceManager.GetString("KeyError", resourceCulture);
     332            }
     333        }
     334       
     335        /// <summary>
    282336        ///   Sucht eine lokalisierte Zeichenfolge, die Input for the key ähnelt.
    283337        /// </summary>
     
    298352       
    299353        /// <summary>
     354        ///   Sucht eine lokalisierte Zeichenfolge, die Input for a messages to be encrypted ähnelt.
     355        /// </summary>
     356        internal static string MessageInput {
     357            get {
     358                return ResourceManager.GetString("MessageInput", resourceCulture);
     359            }
     360        }
     361       
     362        /// <summary>
     363        ///   Sucht eine lokalisierte Zeichenfolge, die The messages present at this input will be encrypted and will be outputted ähnelt.
     364        /// </summary>
     365        internal static string MessageInputTooltip {
     366            get {
     367                return ResourceManager.GetString("MessageInputTooltip", resourceCulture);
     368            }
     369        }
     370       
     371        /// <summary>
     372        ///   Sucht eine lokalisierte Zeichenfolge, die Output for encrypted messages ähnelt.
     373        /// </summary>
     374        internal static string MessageOutput {
     375            get {
     376                return ResourceManager.GetString("MessageOutput", resourceCulture);
     377            }
     378        }
     379       
     380        /// <summary>
     381        ///   Sucht eine lokalisierte Zeichenfolge, die The encrypted messages will be outputted  ähnelt.
     382        /// </summary>
     383        internal static string MessageOutputTooltip {
     384            get {
     385                return ResourceManager.GetString("MessageOutputTooltip", resourceCulture);
     386            }
     387        }
     388       
     389        /// <summary>
     390        ///   Sucht eine lokalisierte Zeichenfolge, die Output ähnelt.
     391        /// </summary>
     392        internal static string Output {
     393            get {
     394                return ResourceManager.GetString("Output", resourceCulture);
     395            }
     396        }
     397       
     398        /// <summary>
    300399        ///   Sucht eine lokalisierte Zeichenfolge, die DCA ToyCiphers ähnelt.
    301400        /// </summary>
     
    316415       
    317416        /// <summary>
    318         ///   Sucht eine lokalisierte Zeichenfolge, die Input for a message to be encrypted ähnelt.
    319         /// </summary>
    320         internal static string SingleMessageInput {
    321             get {
    322                 return ResourceManager.GetString("SingleMessageInput", resourceCulture);
    323             }
    324         }
    325        
    326         /// <summary>
    327         ///   Sucht eine lokalisierte Zeichenfolge, die The message present at this input will be encrypted and will be outputted ähnelt.
    328         /// </summary>
    329         internal static string SingleMessageInputTooltip {
    330             get {
    331                 return ResourceManager.GetString("SingleMessageInputTooltip", resourceCulture);
    332             }
    333         }
    334        
    335         /// <summary>
    336         ///   Sucht eine lokalisierte Zeichenfolge, die Output for a single encrypted message ähnelt.
    337         /// </summary>
    338         internal static string SingleMessageOutput {
    339             get {
    340                 return ResourceManager.GetString("SingleMessageOutput", resourceCulture);
    341             }
    342         }
    343        
    344         /// <summary>
    345         ///   Sucht eine lokalisierte Zeichenfolge, die An encrypted message is output at this output ähnelt.
    346         /// </summary>
    347         internal static string SingleMessageOutputTooltip {
    348             get {
    349                 return ResourceManager.GetString("SingleMessageOutputTooltip", resourceCulture);
     417        ///   Sucht eine lokalisierte Zeichenfolge, die Position of input ähnelt.
     418        /// </summary>
     419        internal static string TablePermutationInput {
     420            get {
     421                return ResourceManager.GetString("TablePermutationInput", resourceCulture);
     422            }
     423        }
     424       
     425        /// <summary>
     426        ///   Sucht eine lokalisierte Zeichenfolge, die Position of output ähnelt.
     427        /// </summary>
     428        internal static string TablePermutationOutput {
     429            get {
     430                return ResourceManager.GetString("TablePermutationOutput", resourceCulture);
    350431            }
    351432        }
  • trunk/CrypPluginsExperimental/ToyCiphers/Properties/Resources.de.resx

    r8126 r8128  
    190190    <value>Feal-4</value>
    191191  </data>
     192  <data name="DescPermutation" xml:space="preserve">
     193    <value>Die Permutation vertauscht die feste Position i eines Eingabebit auf eine Position j in der Ausgabe. Die folgende Tabelle beschreibt die Permutation, wobei die erste Zeile die dezimale Position eines Bits in der Eingabe darstellt und die zweite Zeile die Position des entsprechenden Bits in der Ausgabe.</value>
     194  </data>
     195  <data name="DescSBox" xml:space="preserve">
     196    <value>Die SBox substituiert feste Eingabebits auf andere Ausgabebits. Die folgende Tabelle beschreibt die SBox, wobei die erste Zeile die dezimale Repräsentation der Eingabebits darstellt und die zweite Zeile die dezimale Repräsentation der Ausgabebits. </value>
     197  </data>
     198  <data name="HeaderPermutation" xml:space="preserve">
     199    <value>Tabelle der Permutation:</value>
     200  </data>
     201  <data name="HeaderSBox" xml:space="preserve">
     202    <value>Tabelle der SBox:</value>
     203  </data>
     204  <data name="Input" xml:space="preserve">
     205    <value>Eingabe</value>
     206  </data>
     207  <data name="KeyError" xml:space="preserve">
     208    <value>Der angegebene Schlüssel ist nicht groß genug. Bitte überprüfen Sie die Anforderungen dieser Chiffre.</value>
     209  </data>
    192210  <data name="KeyInput" xml:space="preserve">
    193211    <value>Eingang für den Schlüssel</value>
     
    196214    <value>An diesem Eingang liegt der Schlüssel an, mit dem die Nachricht verschlüsselt wird</value>
    197215  </data>
     216  <data name="MessageInput" xml:space="preserve">
     217    <value>Eingang für zu verschlüsselnde Nachrichten</value>
     218  </data>
     219  <data name="MessageInputTooltip" xml:space="preserve">
     220    <value>Die an diesem Eingang anliegenden Nachrichten werden verschlüsselt und am Ausgang ausgegeben</value>
     221  </data>
     222  <data name="Output" xml:space="preserve">
     223    <value>Ausgabe</value>
     224  </data>
    198225  <data name="PluginCaption" xml:space="preserve">
    199226    <value>DCA ToyCiphers</value>
     
    202229    <value>Die ToyCiphers-Komponente enthält verschiedene Algorithmen zur Verschlüsselung von Informationen. Die Algorithmen sind sehr einfach und kurz, um an ihnen bestimmte Dinge demonstrieren zu können.</value>
    203230  </data>
    204   <data name="SingleMessageInput" xml:space="preserve">
    205     <value>Eingang für eine zu verschlüsselnde Nachricht</value>
    206   </data>
    207   <data name="SingleMessageInputTooltip" xml:space="preserve">
    208     <value>Die an diesem Eingang anliegende Nachricht wird verschlüsselt und am Ausgang ausgegeben</value>
    209   </data>
    210231  <data name="SingleMessageOutput" xml:space="preserve">
    211232    <value>Ausgang für eine verschlüsselte Nachricht</value>
     
    214235    <value>An diesem Ausgang wird eine verschlüsselte Nachricht ausgegeben</value>
    215236  </data>
     237  <data name="TablePermutationInput" xml:space="preserve">
     238    <value>Position in Eingabe</value>
     239  </data>
     240  <data name="TablePermutationOutput" xml:space="preserve">
     241    <value>Position in Ausgabe</value>
     242  </data>
    216243</root>
  • trunk/CrypPluginsExperimental/ToyCiphers/Properties/Resources.resx

    r8126 r8128  
    192192    <value>Feal-4</value>
    193193  </data>
     194  <data name="DescPermutation" xml:space="preserve">
     195    <value>The permutation swaps the fixed position i of an input bit to a position j in the output. The following table describes the permutation, with the first line representing the decimal position of a bit in the input and the second line representing the position of the corresponding bit in the output.</value>
     196  </data>
     197  <data name="DescSBox" xml:space="preserve">
     198    <value>The SBox substitutes fixed input bits for other output bits. The following table describes the SBox, where the first line represents the decimal representation of the input bits and the second line represents the decimal representation of the output bits.</value>
     199  </data>
     200  <data name="HeaderPermutation" xml:space="preserve">
     201    <value>Table of the Permutation:</value>
     202  </data>
     203  <data name="HeaderSBox" xml:space="preserve">
     204    <value>Table of the SBox:</value>
     205  </data>
     206  <data name="Input" xml:space="preserve">
     207    <value>Input</value>
     208  </data>
     209  <data name="KeyError" xml:space="preserve">
     210    <value>The specified key is not big enough. Please check the requirements of this cipher.</value>
     211  </data>
    194212  <data name="KeyInput" xml:space="preserve">
    195213    <value>Input for the key</value>
     
    198216    <value>This input contains the key with which the message is encrypted</value>
    199217  </data>
     218  <data name="MessageInput" xml:space="preserve">
     219    <value>Input for a messages to be encrypted</value>
     220  </data>
     221  <data name="MessageInputTooltip" xml:space="preserve">
     222    <value>The messages present at this input will be encrypted and will be outputted</value>
     223  </data>
     224  <data name="MessageOutput" xml:space="preserve">
     225    <value>Output for encrypted messages</value>
     226  </data>
     227  <data name="MessageOutputTooltip" xml:space="preserve">
     228    <value>The encrypted messages will be outputted </value>
     229  </data>
     230  <data name="Output" xml:space="preserve">
     231    <value>Output</value>
     232  </data>
    200233  <data name="PluginCaption" xml:space="preserve">
    201234    <value>DCA ToyCiphers</value>
     
    204237    <value>The ToyCiphers component contains various algorithms for encrypting information. The algorithms are very simple and short to demonstrate certain things.</value>
    205238  </data>
    206   <data name="SingleMessageInput" xml:space="preserve">
    207     <value>Input for a message to be encrypted</value>
    208   </data>
    209   <data name="SingleMessageInputTooltip" xml:space="preserve">
    210     <value>The message present at this input will be encrypted and will be outputted</value>
    211   </data>
    212   <data name="SingleMessageOutput" xml:space="preserve">
    213     <value>Output for a single encrypted message</value>
    214   </data>
    215   <data name="SingleMessageOutputTooltip" xml:space="preserve">
    216     <value>An encrypted message is output at this output</value>
     239  <data name="TablePermutationInput" xml:space="preserve">
     240    <value>Position of input</value>
     241  </data>
     242  <data name="TablePermutationOutput" xml:space="preserve">
     243    <value>Position of output</value>
    217244  </data>
    218245</root>
  • trunk/CrypPluginsExperimental/ToyCiphers/ToyCiphers.cs

    r8126 r8128  
    1616
    1717using System;
     18using System.Collections.Generic;
    1819using Cryptool.PluginBase;
    1920using Cryptool.PluginBase.Miscellaneous;
     
    2425using System.Windows.Documents;
    2526using System.Windows.Threading;
     27using Cryptool.PluginBase.IO;
     28using ToyCiphers.Ciphers;
     29using ToyCiphers.Ciphers.Cipher1;
     30using ToyCiphers.Ciphers.Cipher2;
     31using ToyCiphers.Ciphers.Cipher3;
     32using ToyCiphers.Ciphers.Cipher4;
     33using ToyCiphers.Properties;
    2634using ToyCiphers.UI;
    2735
     
    3745
    3846        private readonly ToyCiphersSettings settings = new ToyCiphersSettings();
    39         private byte[] _singleMessageInput;
    40         private byte _singleMessageOutput;
     47        private readonly ToyCiphersPres _activePresentation = new ToyCiphersPres();
     48        private ICryptoolStream _messageInput;
     49        private ICryptoolStream _messageOutput;
     50        private IEncryption _currentCipher = null;
    4151        private byte[] _key;
    42         private ToyCiphersPres _activePresentation = new ToyCiphersPres();
    43 
    44         #endregion
     52        private bool _stop = false;
     53        private bool _subkeysSatisfied = false;
     54
     55        #endregion
     56
     57        /// <summary>
     58        /// default constructor
     59        /// </summary>
     60        public ToyCiphers()
     61        {
     62            settings.PropertyChanged += new PropertyChangedEventHandler(SettingChangedListener);
     63        }
    4564
    4665        #region Data Properties
    4766
    4867        /// <summary>
    49         /// Input for a single message
    50         /// </summary>
    51         [PropertyInfo(Direction.InputData, "SingleMessageInput", "SingleMessageInputTooltip")]
    52         public byte[] SingleMessageInput
    53         {
    54             get { return _singleMessageInput; }
     68        /// Input for messages
     69        /// </summary>
     70        [PropertyInfo(Direction.InputData, "MessageInput", "MessageInputTooltip")]
     71        public ICryptoolStream MessageInput
     72        {
     73            get { return _messageInput; }
    5574            set
    5675            {
    57                 _singleMessageInput = value;
    58                 OnPropertyChanged("SingleMessageInput");
    59             }
    60         }
    61 
    62         /// <summary>
    63         /// Output for a single message
    64         /// </summary>
    65         [PropertyInfo(Direction.OutputData, "SingleMessageOutput", "SingleMessageOutputTooltip")]
    66         public byte SingleMessageOutput
    67         {
    68             get { return _singleMessageOutput; }
     76                _messageInput = value;
     77                OnPropertyChanged("MessageInput");
     78            }
     79        }
     80
     81        /// <summary>
     82        /// Output for encrypted messages
     83        /// </summary>
     84        [PropertyInfo(Direction.OutputData, "MessageOutput", "MessageOutputTooltip")]
     85        public ICryptoolStream MessageOutput
     86        {
     87            get { return _messageOutput; }
    6988            set
    7089            {
    71                 _singleMessageOutput = value;
    72                 OnPropertyChanged("SingleMessageOutput");
     90                _messageOutput = value;
     91                OnPropertyChanged("MessageOutput");
    7392            }
    7493        }
     
    113132        public void PreExecution()
    114133        {
     134           
    115135        }
    116136
     
    123143            ProgressChanged(0, 1);
    124144
     145            // Check specific algorithm and invoke the selection into the UI class
     146            if (settings.CurrentAlgorithm == Algorithms.Cipher1)
     147            {
     148                //create encryption object for the cipher
     149                _currentCipher = new Cipher1();
     150                _currentCipher.SetKeys(readSubkeys(Cipher1Configuration.KEYNUM));
     151            }
     152            else if (settings.CurrentAlgorithm == Algorithms.Cipher2)
     153            {
     154                //create encryption object for the cipher
     155                _currentCipher = new Cipher2();
     156                _currentCipher.SetKeys(readSubkeys(Cipher2Configuration.KEYNUM));
     157            }
     158            else if (settings.CurrentAlgorithm == Algorithms.Cipher3)
     159            {
     160                //create encryption object for the cipher
     161                _currentCipher = new Cipher3();
     162                _currentCipher.SetKeys(readSubkeys(Cipher3Configuration.KEYNUM));
     163            }
     164            else if (settings.CurrentAlgorithm == Algorithms.Cipher4)
     165            {
     166                //create encryption object for the cipher
     167                _currentCipher = new Cipher4();
     168                _currentCipher.SetKeys(readSubkeys(Cipher4Configuration.KEYNUM));
     169            }
     170
     171            if (!_subkeysSatisfied)
     172            {
     173                GuiLogMessage(Resources.KeyError, NotificationLevel.Error);
     174                ProgressChanged(1, 1);
     175                return;
     176            }
     177
     178            List<int> messages = new List<int>();
     179            var cryptedMessageList = new List<int>();
     180
     181            using (CStreamReader reader = _messageInput.CreateReader())
     182            {
     183                byte[] inputBlock = new byte[4];
     184                int message;
     185                int readcount = 0;
     186                while ((readcount += reader.Read(inputBlock, readcount, 4 - readcount)) < 4 &&
     187                       reader.Position < reader.Length && !_stop)
     188                {
     189
     190                }
     191                message = BitConverter.ToInt32(inputBlock, 0);
     192                messages.Add(message);
     193            }
     194
     195            foreach (var message in messages)
     196            {
     197                cryptedMessageList.Add(message);
     198            }
     199
     200
    125201
    126202           
     203
     204            using (CStreamWriter writer = new CStreamWriter())
     205            {
     206                foreach (var cryptedMessage in cryptedMessageList)
     207                {
     208                    byte[] outputblock = BitConverter.GetBytes(cryptedMessage);
     209                    writer.Write(outputblock, 0, outputblock.Length);
     210                }
     211
     212                writer.Flush();
     213                MessageOutput = writer;
     214            }
     215
    127216            // HOWTO: Make sure the progress bar is at maximum when your Execute() finished successfully.
    128217            ProgressChanged(1, 1);
     
    190279        #region methods
    191280
    192         public ToyCiphers()
    193         {
    194             settings.PropertyChanged += new PropertyChangedEventHandler(SettingChangedListener);
    195         }
     281        /// <summary>
     282        /// applies the keys specified by the user to the cipher
     283        /// </summary>
     284        /// <param name="keycount"></param>
     285        /// <returns></returns>
     286        private int[] readSubkeys(int keycount)
     287        {
     288            int[] keys = new int[keycount];
     289
     290            if (KeyInput.Length < (keycount * 2))
     291            {
     292                _subkeysSatisfied = false;
     293            }
     294
     295            for (int i = 0; i < (KeyInput.Length / 2); i++)
     296            {
     297                byte[] key = new byte[4];
     298                for (int j = 0; j < 2; j++)
     299                {
     300                    key[j] = KeyInput[(i * 2) + j];
     301                }
     302                keys[i] = BitConverter.ToInt32(key, 0);
     303            }
     304
     305            _subkeysSatisfied = true;
     306            return keys;
     307        }
     308
    196309
    197310        /// <summary>
     
    240353                }
    241354            }
    242 
    243355        }
    244356
  • trunk/CrypPluginsExperimental/ToyCiphers/ToyCiphers.csproj

    r8126 r8128  
    7979  </ItemGroup>
    8080  <ItemGroup>
     81    <Compile Include="Ciphers\Cipher1\Cipher1.cs" />
     82    <Compile Include="Ciphers\Cipher1\Cipher1Configuration.cs" />
     83    <Compile Include="Ciphers\Cipher2\Cipher2.cs" />
     84    <Compile Include="Ciphers\Cipher2\Cipher2Configuration.cs" />
     85    <Compile Include="Ciphers\Cipher3\Cipher3.cs" />
     86    <Compile Include="Ciphers\Cipher3\Cipher3Configuration.cs" />
     87    <Compile Include="Ciphers\Cipher4\Cipher4.cs" />
     88    <Compile Include="Ciphers\Cipher4\Cipher4Configuration.cs" />
     89    <Compile Include="Ciphers\IEncryption.cs" />
    8190    <Compile Include="Properties\Resources.Designer.cs">
    8291      <AutoGen>True</AutoGen>
     
    111120      <DependentUpon>4BitSBox.xaml</DependentUpon>
    112121    </Compile>
     122    <Compile Include="UI\TableMapping.cs" />
    113123    <Compile Include="UI\ToyCiphersPres.xaml.cs">
    114124      <DependentUpon>ToyCiphersPres.xaml</DependentUpon>
     
    189199    </Page>
    190200  </ItemGroup>
     201  <ItemGroup />
    191202  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    192203  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher1Pres.xaml

    r8126 r8128  
    88             mc:Ignorable="d"
    99             d:DesignHeight="415" d:DesignWidth="400">
    10     <Viewbox StretchDirection="Both" Stretch="Uniform">
    11         <Grid Name="OuterGrid" Height="415" Width="400" HorizontalAlignment="Center" VerticalAlignment="Center">
    12             <Grid.ColumnDefinitions>
    13                 <ColumnDefinition Width="*"></ColumnDefinition>
    14             </Grid.ColumnDefinitions>
    15             <Grid.RowDefinitions>
    16                 <RowDefinition Height="*"></RowDefinition>
    17             </Grid.RowDefinitions>
    18             <Grid Name="CipherGrid" Visibility="Visible">
     10    <Grid>
     11        <Grid.ColumnDefinitions>
     12            <ColumnDefinition Width="*"></ColumnDefinition>
     13        </Grid.ColumnDefinitions>
     14        <Grid.RowDefinitions>
     15            <RowDefinition Height="*"></RowDefinition>
     16            <RowDefinition Height="40"></RowDefinition>
     17        </Grid.RowDefinitions>
     18        <Viewbox Grid.Row="0" StretchDirection="Both" Stretch="Uniform" Name="CipherGrid" Visibility="Hidden">
     19            <Grid Height="390" Width="400">
    1920                <Label Name="InputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher1LblInputBlock}" HorizontalAlignment="Center"/>
    2021                <controls:_16BitKeyRound Grid.Row="0" Grid.Column="0" Margin="50,0,0,0"></controls:_16BitKeyRound>
     
    2627                <controls:_16BitKeyRound Grid.Row="0" Grid.Column="0" Margin="50,185,0,0"></controls:_16BitKeyRound>
    2728                <Label FontFamily="Courier New" FontSize="20" Content="K1" HorizontalAlignment="Right" Margin="0,270,10,0"></Label>
     29                <Label Name="OutputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Margin="0,350,0,0" Content="{Loc Cipher1LblOutputBlock}" HorizontalAlignment="Center"/>
    2830            </Grid>
    29             <Grid Name="LabelGrid" Visibility="Hidden">
    30                 <Label FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher1LblHeading}" HorizontalAlignment="Center"/>
    31                 <TextBlock FontFamily="Courier New" FontSize="15" Margin="0,60,0,0" Text="{Loc Cipher1LblText}" TextWrapping="Wrap"></TextBlock>
     31        </Viewbox>
     32        <ScrollViewer Name="LabelGrid" Grid.Row="0" VerticalScrollBarVisibility="Auto" Visibility="Visible">
     33            <Grid Visibility="Visible">
     34                <Grid.RowDefinitions>
     35                    <RowDefinition Height="Auto"></RowDefinition>
     36                    <RowDefinition Height="Auto"></RowDefinition>
     37                    <RowDefinition Height="Auto"></RowDefinition>
     38                </Grid.RowDefinitions>
     39
     40                <Label Grid.Row="0" FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher1LblHeading}" HorizontalAlignment="Center"/>
     41                <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" Margin="10,0,10,0" Text="{Loc Cipher1LblText}" TextWrapping="Wrap"></TextBlock>
     42
     43                <Grid Grid.Row="2">
     44                    <Grid.RowDefinitions>
     45                        <RowDefinition Height="Auto"></RowDefinition>
     46                        <RowDefinition Height="Auto"></RowDefinition>
     47                        <RowDefinition Height="Auto"></RowDefinition>
     48                    </Grid.RowDefinitions>
     49                    <TextBlock Grid.Row="0" FontFamily="Courier New" FontSize="15" Margin="10,10,10,0" Text="{Loc DescSBox}" TextWrapping="Wrap"></TextBlock>
     50                    <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" FontWeight="Bold" Margin="10,10,10,0" Text="{Loc HeaderSBox}" TextWrapping="Wrap"></TextBlock>
     51                    <DataGrid Grid.Row="2" HorizontalAlignment="Center" CanUserAddRows="false" AutoGenerateColumns="False" Margin="0,10,0,0" ItemsSource="{Binding SBoxData, Mode=OneWay}">
     52                        <DataGrid.Columns >
     53                            <DataGridTextColumn Binding="{Binding Path=Direction, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     54                            <DataGridTextColumn Binding="{Binding Path=ZeroOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     55                            <DataGridTextColumn Binding="{Binding Path=OneOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     56                            <DataGridTextColumn Binding="{Binding Path=TwoOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     57                            <DataGridTextColumn Binding="{Binding Path=ThreeOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     58                            <DataGridTextColumn Binding="{Binding Path=FourOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     59                            <DataGridTextColumn Binding="{Binding Path=FiveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     60                            <DataGridTextColumn Binding="{Binding Path=SixOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     61                            <DataGridTextColumn Binding="{Binding Path=SevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     62                            <DataGridTextColumn Binding="{Binding Path=EightOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     63                            <DataGridTextColumn Binding="{Binding Path=NineOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     64                            <DataGridTextColumn Binding="{Binding Path=TenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     65                            <DataGridTextColumn Binding="{Binding Path=ElevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     66                            <DataGridTextColumn Binding="{Binding Path=TwelveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     67                            <DataGridTextColumn Binding="{Binding Path=ThirteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     68                            <DataGridTextColumn Binding="{Binding Path=FourteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     69                            <DataGridTextColumn Binding="{Binding Path=FifteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     70                        </DataGrid.Columns>
     71                    </DataGrid>
     72                </Grid>
     73
    3274            </Grid>
    33             <StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,0" Orientation="Vertical">
    34                 <Label Name="OutputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher1LblOutputBlock}" HorizontalAlignment="Center"/>
    35                 <Button Content="{Loc BtnSwitchView}" HorizontalAlignment="Center" Height="30" Width="120" Click="ToggleViewClicked"></Button>
    36             </StackPanel>
    37         </Grid>
    38     </Viewbox>
     75        </ScrollViewer>
     76        <StackPanel Grid.Row="1" HorizontalAlignment="Center" Orientation="Vertical">
     77            <Button Content="{Loc BtnSwitchView}" HorizontalAlignment="Center" Height="30" Width="120" Click="ToggleViewClicked"></Button>
     78        </StackPanel>
     79    </Grid>
    3980</UserControl>
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher1Pres.xaml.cs

    r8126 r8128  
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5 using System.Threading.Tasks;
     1using System.Collections.ObjectModel;
     2using System.ComponentModel;
     3using System.Runtime.CompilerServices;
    64using System.Windows;
    75using System.Windows.Controls;
    8 using System.Windows.Data;
    9 using System.Windows.Documents;
    10 using System.Windows.Input;
    11 using System.Windows.Media;
    12 using System.Windows.Media.Imaging;
    13 using System.Windows.Navigation;
    14 using System.Windows.Shapes;
    156
    167namespace ToyCiphers.UI
     
    1910    /// Interaktionslogik für Cipher1Pres.xaml
    2011    /// </summary>
    21    [Cryptool.PluginBase.Attributes.Localization("ToyCiphers.Properties.Resources")]
    22     public partial class Cipher1Pres : UserControl
     12    [Cryptool.PluginBase.Attributes.Localization("ToyCiphers.Properties.Resources")]
     13    public partial class Cipher1Pres : UserControl, INotifyPropertyChanged
    2314    {
     15        private ObservableCollection<TableMapping> sboxData;
     16
     17        /// <summary>
     18        /// Constructor
     19        /// </summary>
    2420        public Cipher1Pres()
    2521        {
     22            sboxData = new ObservableCollection<TableMapping>();
     23            sboxData.Add(new TableMapping()
     24            {
     25                Direction = Properties.Resources.Input,
     26                ZeroOutput = 0,
     27                OneOutput = 1,
     28                TwoOutput = 2,
     29                ThreeOutput = 3,
     30                FourOutput = 4,
     31                FiveOutput = 5,
     32                SixOutput = 6,
     33                SevenOutput = 7,
     34                EightOutput = 8,
     35                NineOutput = 9,
     36                TenOutput = 10,
     37                ElevenOutput = 11,
     38                TwelveOutput = 12,
     39                ThirteenOutput = 13,
     40                FourteenOutput = 14,
     41                FifteenOutput = 15
     42            });
     43            sboxData.Add(new TableMapping()
     44            {
     45                Direction = Properties.Resources.Output,
     46                ZeroOutput = 6,
     47                OneOutput = 4,
     48                TwoOutput = 12,
     49                ThreeOutput = 5,
     50                FourOutput = 0,
     51                FiveOutput = 7,
     52                SixOutput = 2,
     53                SevenOutput = 14,
     54                EightOutput = 1,
     55                NineOutput = 15,
     56                TenOutput = 3,
     57                ElevenOutput = 13,
     58                TwelveOutput = 8,
     59                ThirteenOutput = 10,
     60                FourteenOutput = 9,
     61                FifteenOutput = 11
     62            });
     63
     64            DataContext = this;
    2665            InitializeComponent();
    27             DataContext = this;
     66        }
     67
     68        /// <summary>
     69        /// Property for binding the sboxData
     70        /// </summary>
     71        public ObservableCollection<TableMapping> SBoxData
     72        {
     73            get { return sboxData; }
     74            set
     75            {
     76                sboxData = value;
     77                OnPropertyChanged();
     78            }
    2879        }
    2980
     
    50101            }
    51102        }
     103
     104        /// <summary>
     105        /// Event
     106        /// </summary>
     107        public event PropertyChangedEventHandler PropertyChanged;
     108
     109        /// <summary>
     110        /// Method to call if data changes
     111        /// </summary>
     112        /// <param name="propertyName"></param>
     113        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
     114        {
     115            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
     116        }
    52117    }
    53118}
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher2Pres.xaml

    r8126 r8128  
    88             mc:Ignorable="d"
    99             d:DesignHeight="910" d:DesignWidth="400">
    10     <Viewbox StretchDirection="Both" Stretch="Uniform">
    11         <Grid Name="OuterGrid" Height="910" Width="400" HorizontalAlignment="Center" VerticalAlignment="Center">
    12             <Grid.ColumnDefinitions>
    13                 <ColumnDefinition Width="*"></ColumnDefinition>
    14             </Grid.ColumnDefinitions>
    15             <Grid.RowDefinitions>
    16                 <RowDefinition Height="*"></RowDefinition>
    17             </Grid.RowDefinitions>
    18             <Grid Name="CipherGrid" Visibility="Visible">
     10    <Grid>
     11        <Grid.ColumnDefinitions>
     12            <ColumnDefinition Width="*"></ColumnDefinition>
     13        </Grid.ColumnDefinitions>
     14        <Grid.RowDefinitions>
     15            <RowDefinition Height="*"></RowDefinition>
     16            <RowDefinition Height="40"></RowDefinition>
     17        </Grid.RowDefinitions>
     18        <Viewbox Grid.Row="0" StretchDirection="Both" Stretch="Uniform" Name="CipherGrid" Visibility="Hidden">
     19            <Grid Height="910" Width="400" HorizontalAlignment="Center">
    1920                <Label Name="InputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher2LblInputBlock}" HorizontalAlignment="Center"/>
    2021                <!-- Round 1 -->
     
    4647                <Label FontFamily="Courier New" FontSize="20" Content="K3" HorizontalAlignment="Right" Margin="0,760,10,0"></Label>
    4748                <!-- /Round 3 -->
     49                <Label Name="OutputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher2LblOutputBlock}" HorizontalAlignment="Center" Margin="0,840,0,0"/>
    4850            </Grid>
    49             <Grid Name="LabelGrid" Visibility="Hidden">
    50                 <Label FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher2LblHeading}" HorizontalAlignment="Center"/>
    51                 <TextBlock FontFamily="Courier New" FontSize="15" Margin="10,60,10,0" Text="{Loc Cipher2LblText}" TextWrapping="Wrap"></TextBlock>
     51        </Viewbox>
     52        <ScrollViewer Name="LabelGrid" Grid.Row="0" VerticalScrollBarVisibility="Auto" Visibility="Visible">
     53            <Grid Visibility="Visible">
     54                <Grid.RowDefinitions>
     55                    <RowDefinition Height="Auto"></RowDefinition>
     56                    <RowDefinition Height="Auto"></RowDefinition>
     57                    <RowDefinition Height="Auto"></RowDefinition>
     58                    <RowDefinition Height="Auto"></RowDefinition>
     59                </Grid.RowDefinitions>
     60                <Label Grid.Row="0" FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher2LblHeading}" HorizontalAlignment="Center"/>
     61                <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" Margin="10,0,10,0" Text="{Loc Cipher2LblText}" TextWrapping="Wrap"></TextBlock>
     62
     63                <Grid Grid.Row="2">
     64                    <Grid.RowDefinitions>
     65                        <RowDefinition Height="Auto"></RowDefinition>
     66                        <RowDefinition Height="Auto"></RowDefinition>
     67                        <RowDefinition Height="Auto"></RowDefinition>
     68                    </Grid.RowDefinitions>
     69                    <TextBlock Grid.Row="0" FontFamily="Courier New" FontSize="15" Margin="10,10,10,0" Text="{Loc DescSBox}" TextWrapping="Wrap"></TextBlock>
     70                    <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" FontWeight="Bold" Margin="10,10,10,0" Text="{Loc HeaderSBox}" TextWrapping="Wrap"></TextBlock>
     71                    <DataGrid Grid.Row="2" HorizontalAlignment="Center" CanUserAddRows="false" AutoGenerateColumns="False" Margin="0,10,0,0" ItemsSource="{Binding SBoxData, Mode=OneWay}">
     72                        <DataGrid.Columns >
     73                            <DataGridTextColumn Binding="{Binding Path=Direction, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     74                            <DataGridTextColumn Binding="{Binding Path=ZeroOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     75                            <DataGridTextColumn Binding="{Binding Path=OneOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     76                            <DataGridTextColumn Binding="{Binding Path=TwoOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     77                            <DataGridTextColumn Binding="{Binding Path=ThreeOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     78                            <DataGridTextColumn Binding="{Binding Path=FourOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     79                            <DataGridTextColumn Binding="{Binding Path=FiveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     80                            <DataGridTextColumn Binding="{Binding Path=SixOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     81                            <DataGridTextColumn Binding="{Binding Path=SevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     82                            <DataGridTextColumn Binding="{Binding Path=EightOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     83                            <DataGridTextColumn Binding="{Binding Path=NineOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     84                            <DataGridTextColumn Binding="{Binding Path=TenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     85                            <DataGridTextColumn Binding="{Binding Path=ElevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     86                            <DataGridTextColumn Binding="{Binding Path=TwelveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     87                            <DataGridTextColumn Binding="{Binding Path=ThirteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     88                            <DataGridTextColumn Binding="{Binding Path=FourteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     89                            <DataGridTextColumn Binding="{Binding Path=FifteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     90                        </DataGrid.Columns>
     91                    </DataGrid>
     92                </Grid>
     93
     94                <Grid Grid.Row="3">
     95                    <Grid.RowDefinitions>
     96                        <RowDefinition Height="Auto"></RowDefinition>
     97                        <RowDefinition Height="Auto"></RowDefinition>
     98                        <RowDefinition Height="Auto"></RowDefinition>
     99                    </Grid.RowDefinitions>
     100                    <TextBlock Grid.Row="0" FontFamily="Courier New" FontSize="15" Margin="10,10,10,0" Text="{Loc DescPermutation}" TextWrapping="Wrap"></TextBlock>
     101                    <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" FontWeight="Bold" Margin="10,10,10,0" Text="{Loc HeaderPermutation}" TextWrapping="Wrap"></TextBlock>
     102                    <DataGrid Grid.Row="2" HorizontalAlignment="Center" CanUserAddRows="false" AutoGenerateColumns="False" Margin="0,10,0,0" ItemsSource="{Binding PermutationData, Mode=OneWay}">
     103                        <DataGrid.Columns >
     104                            <DataGridTextColumn Binding="{Binding Path=Direction, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     105                            <DataGridTextColumn Binding="{Binding Path=ZeroOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     106                            <DataGridTextColumn Binding="{Binding Path=OneOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     107                            <DataGridTextColumn Binding="{Binding Path=TwoOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     108                            <DataGridTextColumn Binding="{Binding Path=ThreeOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     109                            <DataGridTextColumn Binding="{Binding Path=FourOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     110                            <DataGridTextColumn Binding="{Binding Path=FiveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     111                            <DataGridTextColumn Binding="{Binding Path=SixOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     112                            <DataGridTextColumn Binding="{Binding Path=SevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     113                            <DataGridTextColumn Binding="{Binding Path=EightOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     114                            <DataGridTextColumn Binding="{Binding Path=NineOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     115                            <DataGridTextColumn Binding="{Binding Path=TenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     116                            <DataGridTextColumn Binding="{Binding Path=ElevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     117                            <DataGridTextColumn Binding="{Binding Path=TwelveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     118                            <DataGridTextColumn Binding="{Binding Path=ThirteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     119                            <DataGridTextColumn Binding="{Binding Path=FourteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     120                            <DataGridTextColumn Binding="{Binding Path=FifteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     121                        </DataGrid.Columns>
     122                    </DataGrid>
     123                </Grid>
     124
    52125            </Grid>
    53             <StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,0" Orientation="Vertical">
    54                 <Label Name="OutputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher2LblOutputBlock}" HorizontalAlignment="Center"/>
    55                 <Button Content="{Loc BtnSwitchView}" HorizontalAlignment="Center" Height="30" Width="120" Click="ToggleViewClicked"></Button>
    56             </StackPanel>
    57         </Grid>
    58     </Viewbox>
     126        </ScrollViewer>
     127        <StackPanel Grid.Row="1" HorizontalAlignment="Center" Orientation="Vertical">
     128            <Button Content="{Loc BtnSwitchView}" Height="30" Width="120" Click="ToggleViewClicked"></Button>
     129        </StackPanel>
     130    </Grid>
    59131</UserControl>
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher2Pres.xaml.cs

    r8126 r8128  
    11using System;
    22using System.Collections.Generic;
     3using System.Collections.ObjectModel;
     4using System.ComponentModel;
    35using System.Linq;
     6using System.Runtime.CompilerServices;
    47using System.Text;
    58using System.Threading.Tasks;
     
    2023    /// </summary>
    2124    [Cryptool.PluginBase.Attributes.Localization("ToyCiphers.Properties.Resources")]
    22     public partial class Cipher2Pres : UserControl
     25    public partial class Cipher2Pres : UserControl, INotifyPropertyChanged
    2326    {
     27        private ObservableCollection<TableMapping> sboxData;
     28        private ObservableCollection<TableMapping> permutationData;
     29
    2430        /// <summary>
    2531        /// Constructor
     
    2733        public Cipher2Pres()
    2834        {
     35            sboxData = new ObservableCollection<TableMapping>();
     36            sboxData.Add(new TableMapping()
     37            {
     38                Direction = ToyCiphers.Properties.Resources.Input,
     39                ZeroOutput = 0,
     40                OneOutput = 1,
     41                TwoOutput = 2,
     42                ThreeOutput = 3,
     43                FourOutput = 4,
     44                FiveOutput = 5,
     45                SixOutput = 6,
     46                SevenOutput =7,
     47                EightOutput = 8,
     48                NineOutput = 9,
     49                TenOutput = 10,
     50                ElevenOutput = 11,
     51                TwelveOutput = 12,
     52                ThirteenOutput = 13,
     53                FourteenOutput = 14,
     54                FifteenOutput = 15
     55            });
     56            sboxData.Add(new TableMapping()
     57            {
     58                Direction = ToyCiphers.Properties.Resources.Output,
     59                ZeroOutput = 10,
     60                OneOutput = 0,
     61                TwoOutput = 9,
     62                ThreeOutput = 14,
     63                FourOutput = 6,
     64                FiveOutput = 3,
     65                SixOutput = 15,
     66                SevenOutput = 5,
     67                EightOutput = 1,
     68                NineOutput = 13,
     69                TenOutput = 12,
     70                ElevenOutput = 7,
     71                TwelveOutput = 11,
     72                ThirteenOutput = 4,
     73                FourteenOutput = 2,
     74                FifteenOutput = 8
     75            });
     76
     77            permutationData = new ObservableCollection<TableMapping>();
     78            permutationData.Add(new TableMapping()
     79            {
     80                Direction = ToyCiphers.Properties.Resources.TablePermutationInput,
     81                ZeroOutput = 0,
     82                OneOutput = 1,
     83                TwoOutput = 2,
     84                ThreeOutput = 3,
     85                FourOutput = 4,
     86                FiveOutput = 5,
     87                SixOutput = 6,
     88                SevenOutput = 7,
     89                EightOutput = 8,
     90                NineOutput = 9,
     91                TenOutput = 10,
     92                ElevenOutput = 11,
     93                TwelveOutput = 12,
     94                ThirteenOutput = 13,
     95                FourteenOutput = 14,
     96                FifteenOutput = 15
     97            });
     98            permutationData.Add(new TableMapping()
     99            {
     100                Direction = ToyCiphers.Properties.Resources.TablePermutationOutput,
     101                ZeroOutput = 12,
     102                OneOutput = 9,
     103                TwoOutput = 6,
     104                ThreeOutput = 3,
     105                FourOutput = 0,
     106                FiveOutput = 13,
     107                SixOutput = 10,
     108                SevenOutput = 7,
     109                EightOutput = 4,
     110                NineOutput = 1,
     111                TenOutput = 14,
     112                ElevenOutput = 11,
     113                TwelveOutput = 8,
     114                ThirteenOutput = 5,
     115                FourteenOutput = 2,
     116                FifteenOutput = 15
     117            });
     118
     119            DataContext = this;
    29120            InitializeComponent();
     121        }
     122
     123        /// <summary>
     124        /// Property for binding the sboxData
     125        /// </summary>
     126        public ObservableCollection<TableMapping> SBoxData
     127        {
     128            get { return sboxData; }
     129            set
     130            {
     131                sboxData = value;
     132                OnPropertyChanged("SBoxData");
     133            }
     134        }
     135
     136        /// <summary>
     137        /// Property for binding the permutationData
     138        /// </summary>
     139        public ObservableCollection<TableMapping> PermutationData
     140        {
     141            get { return permutationData; }
     142            set
     143            {
     144                permutationData = value;
     145                OnPropertyChanged("PermutationData");
     146            }
    30147        }
    31148
     
    42159                OutputBlock.Visibility = Visibility.Visible;
    43160                LabelGrid.Visibility = Visibility.Hidden;
    44                 OuterGrid.Width = 400;
    45                 OuterGrid.Height = 910;
    46161            }
    47162            else
     
    50165                OutputBlock.Visibility = Visibility.Hidden;
    51166                LabelGrid.Visibility = Visibility.Visible;
    52                 OuterGrid.Width = 390;
    53                 OuterGrid.Height = 350;
    54167            }
     168        }
     169
     170        /// <summary>
     171        /// Event
     172        /// </summary>
     173        public event PropertyChangedEventHandler PropertyChanged;
     174
     175        /// <summary>
     176        /// Method to call if data changes
     177        /// </summary>
     178        /// <param name="propertyName"></param>
     179        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
     180        {
     181            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    55182        }
    56183    }
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher3Pres.xaml

    r8126 r8128  
    88             mc:Ignorable="d"
    99             d:DesignHeight="1400" d:DesignWidth="400">
    10     <Viewbox StretchDirection="Both" Stretch="Uniform">
    11         <Grid Name="OuterGrid" Height="1400" Width="400" HorizontalAlignment="Center" VerticalAlignment="Center">
    12             <Grid.ColumnDefinitions>
    13                 <ColumnDefinition Width="*"></ColumnDefinition>
    14             </Grid.ColumnDefinitions>
    15             <Grid.RowDefinitions>
    16                 <RowDefinition Height="*"></RowDefinition>
    17             </Grid.RowDefinitions>
    18             <Grid Name="CipherGrid" Visibility="Visible">
     10    <Grid>
     11        <Grid.ColumnDefinitions>
     12            <ColumnDefinition Width="*"></ColumnDefinition>
     13        </Grid.ColumnDefinitions>
     14        <Grid.RowDefinitions>
     15            <RowDefinition Height="*"></RowDefinition>
     16            <RowDefinition Height="40"></RowDefinition>
     17        </Grid.RowDefinitions>
     18        <Viewbox Grid.Row="0" StretchDirection="Both" Stretch="Uniform" Name="CipherGrid" Visibility="Hidden">
     19            <Grid Height="1400" Width="400" HorizontalAlignment="Center">
    1920                <Label Name="InputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher3LblInputBlock}" HorizontalAlignment="Center"/>
    2021                <!-- Round 1 -->
     
    6364                <controls:_16BitKeyRound Grid.Row="0" Grid.Column="0" Margin="50,1175,0,0"></controls:_16BitKeyRound>
    6465                <Label FontFamily="Courier New" FontSize="20" Content="K5" HorizontalAlignment="Right" Margin="0,1260,10,0"></Label>
     66                <Label FontFamily="Courier New" FontSize="20" FontWeight="Bold" Margin="0,1340,0,0" Content="{Loc Cipher3LblOutputBlock}" HorizontalAlignment="Center"/>
    6567                <!-- /Round 5 -->
    6668            </Grid>
    67             <Grid Name="LabelGrid" Visibility="Hidden">
    68                 <Label FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher3LblHeading}" HorizontalAlignment="Center"/>
    69                 <TextBlock FontFamily="Courier New" FontSize="15" Margin="0,60,0,0" Text="{Loc Cipher3LblText}" TextWrapping="Wrap"></TextBlock>
     69        </Viewbox>
     70        <ScrollViewer Name="LabelGrid" Grid.Row="0" VerticalScrollBarVisibility="Auto" Visibility="Visible">
     71            <Grid Visibility="Visible">
     72                <Grid.RowDefinitions>
     73                    <RowDefinition Height="Auto"></RowDefinition>
     74                    <RowDefinition Height="Auto"></RowDefinition>
     75                    <RowDefinition Height="Auto"></RowDefinition>
     76                    <RowDefinition Height="Auto"></RowDefinition>
     77                </Grid.RowDefinitions>
     78
     79                <Label Grid.Row="0" FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher3LblHeading}" HorizontalAlignment="Center"/>
     80                <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" Margin="10,0,10,0" Text="{Loc Cipher3LblText}" TextWrapping="Wrap"></TextBlock>
     81
     82                <Grid Grid.Row="2">
     83                    <Grid.RowDefinitions>
     84                        <RowDefinition Height="Auto"></RowDefinition>
     85                        <RowDefinition Height="Auto"></RowDefinition>
     86                        <RowDefinition Height="Auto"></RowDefinition>
     87                    </Grid.RowDefinitions>
     88                    <TextBlock Grid.Row="0" FontFamily="Courier New" FontSize="15" Margin="10,10,10,0" Text="{Loc DescSBox}" TextWrapping="Wrap"></TextBlock>
     89                    <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" FontWeight="Bold" Margin="10,10,10,0" Text="{Loc HeaderSBox}" TextWrapping="Wrap"></TextBlock>
     90                    <DataGrid Grid.Row="2" HorizontalAlignment="Center" CanUserAddRows="false" AutoGenerateColumns="False" Margin="0,10,0,0" ItemsSource="{Binding SBoxData, Mode=OneWay}">
     91                        <DataGrid.Columns >
     92                            <DataGridTextColumn Binding="{Binding Path=Direction, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     93                            <DataGridTextColumn Binding="{Binding Path=ZeroOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     94                            <DataGridTextColumn Binding="{Binding Path=OneOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     95                            <DataGridTextColumn Binding="{Binding Path=TwoOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     96                            <DataGridTextColumn Binding="{Binding Path=ThreeOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     97                            <DataGridTextColumn Binding="{Binding Path=FourOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     98                            <DataGridTextColumn Binding="{Binding Path=FiveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     99                            <DataGridTextColumn Binding="{Binding Path=SixOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     100                            <DataGridTextColumn Binding="{Binding Path=SevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     101                            <DataGridTextColumn Binding="{Binding Path=EightOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     102                            <DataGridTextColumn Binding="{Binding Path=NineOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     103                            <DataGridTextColumn Binding="{Binding Path=TenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     104                            <DataGridTextColumn Binding="{Binding Path=ElevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     105                            <DataGridTextColumn Binding="{Binding Path=TwelveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     106                            <DataGridTextColumn Binding="{Binding Path=ThirteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     107                            <DataGridTextColumn Binding="{Binding Path=FourteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     108                            <DataGridTextColumn Binding="{Binding Path=FifteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     109                        </DataGrid.Columns>
     110                    </DataGrid>
     111                </Grid>
     112
     113                <Grid Grid.Row="3">
     114                    <Grid.RowDefinitions>
     115                        <RowDefinition Height="Auto"></RowDefinition>
     116                        <RowDefinition Height="Auto"></RowDefinition>
     117                        <RowDefinition Height="Auto"></RowDefinition>
     118                    </Grid.RowDefinitions>
     119                    <TextBlock Grid.Row="0" FontFamily="Courier New" FontSize="15" Margin="10,10,10,0" Text="{Loc DescPermutation}" TextWrapping="Wrap"></TextBlock>
     120                    <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" FontWeight="Bold" Margin="10,10,10,0" Text="{Loc HeaderPermutation}" TextWrapping="Wrap"></TextBlock>
     121                    <DataGrid Grid.Row="2" HorizontalAlignment="Center" CanUserAddRows="false" AutoGenerateColumns="False" Margin="0,10,0,0" ItemsSource="{Binding PermutationData, Mode=OneWay}">
     122                        <DataGrid.Columns >
     123                            <DataGridTextColumn Binding="{Binding Path=Direction, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     124                            <DataGridTextColumn Binding="{Binding Path=ZeroOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     125                            <DataGridTextColumn Binding="{Binding Path=OneOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     126                            <DataGridTextColumn Binding="{Binding Path=TwoOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     127                            <DataGridTextColumn Binding="{Binding Path=ThreeOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     128                            <DataGridTextColumn Binding="{Binding Path=FourOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     129                            <DataGridTextColumn Binding="{Binding Path=FiveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     130                            <DataGridTextColumn Binding="{Binding Path=SixOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     131                            <DataGridTextColumn Binding="{Binding Path=SevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     132                            <DataGridTextColumn Binding="{Binding Path=EightOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     133                            <DataGridTextColumn Binding="{Binding Path=NineOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     134                            <DataGridTextColumn Binding="{Binding Path=TenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     135                            <DataGridTextColumn Binding="{Binding Path=ElevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     136                            <DataGridTextColumn Binding="{Binding Path=TwelveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     137                            <DataGridTextColumn Binding="{Binding Path=ThirteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     138                            <DataGridTextColumn Binding="{Binding Path=FourteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     139                            <DataGridTextColumn Binding="{Binding Path=FifteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     140                        </DataGrid.Columns>
     141                    </DataGrid>
     142                </Grid>
     143
    70144            </Grid>
    71             <StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,0" Orientation="Vertical">
    72                 <Label Name="OutputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher3LblOutputBlock}" HorizontalAlignment="Center"/>
    73                 <Button Content="{Loc BtnSwitchView}" HorizontalAlignment="Center" Height="30" Width="120" Click="ToggleViewClicked"></Button>
    74             </StackPanel>
    75         </Grid>
    76     </Viewbox>
     145        </ScrollViewer>
     146        <StackPanel Grid.Row="1" HorizontalAlignment="Center" Orientation="Vertical">
     147            <Button Content="{Loc BtnSwitchView}" Height="30" Width="120" Click="ToggleViewClicked"></Button>
     148        </StackPanel>
     149    </Grid>
    77150</UserControl>
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher3Pres.xaml.cs

    r8126 r8128  
    11using System;
    22using System.Collections.Generic;
     3using System.Collections.ObjectModel;
     4using System.ComponentModel;
    35using System.Linq;
     6using System.Runtime.CompilerServices;
    47using System.Text;
    58using System.Threading.Tasks;
     
    2023    /// </summary>
    2124    [Cryptool.PluginBase.Attributes.Localization("ToyCiphers.Properties.Resources")]
    22     public partial class Cipher3Pres : UserControl
     25    public partial class Cipher3Pres : UserControl, INotifyPropertyChanged
    2326    {
     27        private ObservableCollection<TableMapping> sboxData;
     28        private ObservableCollection<TableMapping> permutationData;
     29
    2430        /// <summary>
    2531        /// Constructor
     
    2733        public Cipher3Pres()
    2834        {
     35            sboxData = new ObservableCollection<TableMapping>();
     36            sboxData.Add(new TableMapping()
     37            {
     38                Direction = ToyCiphers.Properties.Resources.Input,
     39                ZeroOutput = 0,
     40                OneOutput = 1,
     41                TwoOutput = 2,
     42                ThreeOutput = 3,
     43                FourOutput = 4,
     44                FiveOutput = 5,
     45                SixOutput = 6,
     46                SevenOutput = 7,
     47                EightOutput = 8,
     48                NineOutput = 9,
     49                TenOutput = 10,
     50                ElevenOutput = 11,
     51                TwelveOutput = 12,
     52                ThirteenOutput = 13,
     53                FourteenOutput = 14,
     54                FifteenOutput = 15
     55            });
     56            sboxData.Add(new TableMapping()
     57            {
     58                Direction = ToyCiphers.Properties.Resources.Output,
     59                ZeroOutput = 6,
     60                OneOutput = 4,
     61                TwoOutput = 12,
     62                ThreeOutput = 5,
     63                FourOutput = 0,
     64                FiveOutput = 7,
     65                SixOutput = 2,
     66                SevenOutput = 14,
     67                EightOutput = 1,
     68                NineOutput = 15,
     69                TenOutput = 3,
     70                ElevenOutput = 13,
     71                TwelveOutput = 8,
     72                ThirteenOutput = 10,
     73                FourteenOutput = 9,
     74                FifteenOutput = 11
     75            });
     76
     77            permutationData = new ObservableCollection<TableMapping>();
     78            permutationData.Add(new TableMapping()
     79            {
     80                Direction = ToyCiphers.Properties.Resources.TablePermutationInput,
     81                ZeroOutput = 0,
     82                OneOutput = 1,
     83                TwoOutput = 2,
     84                ThreeOutput = 3,
     85                FourOutput = 4,
     86                FiveOutput = 5,
     87                SixOutput = 6,
     88                SevenOutput = 7,
     89                EightOutput = 8,
     90                NineOutput = 9,
     91                TenOutput = 10,
     92                ElevenOutput = 11,
     93                TwelveOutput = 12,
     94                ThirteenOutput = 13,
     95                FourteenOutput = 14,
     96                FifteenOutput = 15
     97            });
     98            permutationData.Add(new TableMapping()
     99            {
     100                Direction = ToyCiphers.Properties.Resources.TablePermutationOutput,
     101                ZeroOutput = 0,
     102                OneOutput = 4,
     103                TwoOutput = 8,
     104                ThreeOutput = 12,
     105                FourOutput = 1,
     106                FiveOutput = 5,
     107                SixOutput = 9,
     108                SevenOutput = 13,
     109                EightOutput = 2,
     110                NineOutput = 6,
     111                TenOutput = 10,
     112                ElevenOutput = 14,
     113                TwelveOutput = 3,
     114                ThirteenOutput = 7,
     115                FourteenOutput = 11,
     116                FifteenOutput = 15
     117            });
     118
     119            DataContext = this;
    29120            InitializeComponent();
     121        }
     122
     123        /// <summary>
     124        /// Property for binding the sboxData
     125        /// </summary>
     126        public ObservableCollection<TableMapping> SBoxData
     127        {
     128            get { return sboxData; }
     129            set
     130            {
     131                sboxData = value;
     132                OnPropertyChanged("SBoxData");
     133            }
     134        }
     135
     136        /// <summary>
     137        /// Property for binding the permutationData
     138        /// </summary>
     139        public ObservableCollection<TableMapping> PermutationData
     140        {
     141            get { return permutationData; }
     142            set
     143            {
     144                permutationData = value;
     145                OnPropertyChanged("PermutationData");
     146            }
    30147        }
    31148
     
    40157            {
    41158                CipherGrid.Visibility = Visibility.Visible;
    42                 OutputBlock.Visibility = Visibility.Visible;
    43159                LabelGrid.Visibility = Visibility.Hidden;
    44                 OuterGrid.Width = 400;
    45                 OuterGrid.Height = 1400;
    46160            }
    47161            else
    48162            {
    49163                CipherGrid.Visibility = Visibility.Hidden;
    50                 OutputBlock.Visibility = Visibility.Hidden;
    51164                LabelGrid.Visibility = Visibility.Visible;
    52                 OuterGrid.Width = 390;
    53                 OuterGrid.Height = 350;
    54165            }
     166        }
     167
     168        /// <summary>
     169        /// Event
     170        /// </summary>
     171        public event PropertyChangedEventHandler PropertyChanged;
     172
     173        /// <summary>
     174        /// Method to call if data changes
     175        /// </summary>
     176        /// <param name="propertyName"></param>
     177        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
     178        {
     179            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    55180        }
    56181    }
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher4Pres.xaml

    r8126 r8128  
    88             mc:Ignorable="d"
    99             d:DesignHeight="790" d:DesignWidth="400">
    10     <Viewbox StretchDirection="Both" Stretch="Uniform">
    11         <Grid Name="OuterGrid" Height="790" Width="400" HorizontalAlignment="Center" VerticalAlignment="Center">
    12             <Grid.ColumnDefinitions>
    13                 <ColumnDefinition Width="*"></ColumnDefinition>
    14             </Grid.ColumnDefinitions>
    15             <Grid.RowDefinitions>
    16                 <RowDefinition Height="*"></RowDefinition>
    17             </Grid.RowDefinitions>
    18             <Grid Name="CipherGrid" Visibility="Visible">
     10    <Grid>
     11        <Grid.ColumnDefinitions>
     12            <ColumnDefinition Width="*"></ColumnDefinition>
     13        </Grid.ColumnDefinitions>
     14        <Grid.RowDefinitions>
     15            <RowDefinition Height="*"></RowDefinition>
     16            <RowDefinition Height="40"></RowDefinition>
     17        </Grid.RowDefinitions>
     18        <Viewbox Grid.Row="0" StretchDirection="Both" Stretch="Uniform" Name="CipherGrid" Visibility="Hidden">
     19            <Grid Height="790" Width="400" HorizontalAlignment="Center">
    1920                <Label Name="InputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher4LblInputBlock}" HorizontalAlignment="Center"/>
    2021                <!-- Round 1 -->
     
    3536                <Label FontFamily="Courier New" FontSize="20" Content="K3" Margin="240,640,10,0"></Label>
    3637                <!-- /Round 3 -->
     38                <Label Name="OutputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Margin="0,720,0,0" Content="{Loc Cipher4LblOutputBlock}" HorizontalAlignment="Center"/>
    3739            </Grid>
    38             <Grid Name="LabelGrid" Visibility="Hidden">
    39                 <Label FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher4LblHeading}" HorizontalAlignment="Center"/>
    40                 <TextBlock FontFamily="Courier New" FontSize="15" Margin="0,60,0,0" Text="{Loc Cipher4LblText}" TextWrapping="Wrap"></TextBlock>
     40        </Viewbox>
     41        <ScrollViewer Name="LabelGrid" Grid.Row="0" VerticalScrollBarVisibility="Auto" Visibility="Visible">
     42            <Grid Visibility="Visible">
     43                <Grid.RowDefinitions>
     44                    <RowDefinition Height="Auto"></RowDefinition>
     45                    <RowDefinition Height="Auto"></RowDefinition>
     46                    <RowDefinition Height="Auto"></RowDefinition>
     47                </Grid.RowDefinitions>
     48
     49                <Label Grid.Row="0" FontFamily="Courier New" FontSize="30" FontWeight="Bold" Content="{Loc Cipher4LblHeading}" HorizontalAlignment="Center"/>
     50                <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" Margin="10,0,10,0" Text="{Loc Cipher4LblText}" TextWrapping="Wrap"></TextBlock>
     51
     52                <Grid Grid.Row="2">
     53                    <Grid.RowDefinitions>
     54                        <RowDefinition Height="Auto"></RowDefinition>
     55                        <RowDefinition Height="Auto"></RowDefinition>
     56                        <RowDefinition Height="Auto"></RowDefinition>
     57                    </Grid.RowDefinitions>
     58                    <TextBlock Grid.Row="0" FontFamily="Courier New" FontSize="15" Margin="10,10,10,0" Text="{Loc DescSBox}" TextWrapping="Wrap"></TextBlock>
     59                    <TextBlock Grid.Row="1" FontFamily="Courier New" FontSize="15" FontWeight="Bold" Margin="10,10,10,0" Text="{Loc HeaderSBox}" TextWrapping="Wrap"></TextBlock>
     60                    <DataGrid Grid.Row="2" HorizontalAlignment="Center" CanUserAddRows="false" AutoGenerateColumns="False" Margin="0,10,0,0" ItemsSource="{Binding SBoxData, Mode=OneWay}">
     61                        <DataGrid.Columns >
     62                            <DataGridTextColumn Binding="{Binding Path=Direction, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     63                            <DataGridTextColumn Binding="{Binding Path=ZeroOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     64                            <DataGridTextColumn Binding="{Binding Path=OneOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     65                            <DataGridTextColumn Binding="{Binding Path=TwoOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     66                            <DataGridTextColumn Binding="{Binding Path=ThreeOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     67                            <DataGridTextColumn Binding="{Binding Path=FourOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     68                            <DataGridTextColumn Binding="{Binding Path=FiveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     69                            <DataGridTextColumn Binding="{Binding Path=SixOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     70                            <DataGridTextColumn Binding="{Binding Path=SevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     71                            <DataGridTextColumn Binding="{Binding Path=EightOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     72                            <DataGridTextColumn Binding="{Binding Path=NineOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     73                            <DataGridTextColumn Binding="{Binding Path=TenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     74                            <DataGridTextColumn Binding="{Binding Path=ElevenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     75                            <DataGridTextColumn Binding="{Binding Path=TwelveOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     76                            <DataGridTextColumn Binding="{Binding Path=ThirteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     77                            <DataGridTextColumn Binding="{Binding Path=FourteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     78                            <DataGridTextColumn Binding="{Binding Path=FifteenOutput, Mode=OneWay}" MinWidth="25" IsReadOnly="True"/>
     79                        </DataGrid.Columns>
     80                    </DataGrid>
     81                </Grid>
     82
    4183            </Grid>
    42             <StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,0" Orientation="Vertical">
    43                 <Label Name="OutputBlock" FontFamily="Courier New" FontSize="20" FontWeight="Bold" Content="{Loc Cipher4LblOutputBlock}" HorizontalAlignment="Center"/>
    44                 <Button Content="{Loc BtnSwitchView}" HorizontalAlignment="Center" Height="30" Width="120" Click="ToggleViewClicked"></Button>
    45             </StackPanel>
    46         </Grid>
    47     </Viewbox>
     84        </ScrollViewer>
     85        <StackPanel Grid.Row="1" HorizontalAlignment="Center" Orientation="Vertical">
     86            <Button Content="{Loc BtnSwitchView}" Height="30" Width="120" Click="ToggleViewClicked"></Button>
     87        </StackPanel>
     88    </Grid>   
    4889</UserControl>
  • trunk/CrypPluginsExperimental/ToyCiphers/UI/Cipher4Pres.xaml.cs

    r8126 r8128  
    11using System;
    22using System.Collections.Generic;
     3using System.Collections.ObjectModel;
     4using System.ComponentModel;
    35using System.Linq;
     6using System.Runtime.CompilerServices;
    47using System.Text;
    58using System.Threading.Tasks;
     
    2023    /// </summary>
    2124    [Cryptool.PluginBase.Attributes.Localization("ToyCiphers.Properties.Resources")]
    22     public partial class Cipher4Pres : UserControl
     25    public partial class Cipher4Pres : UserControl, INotifyPropertyChanged
    2326    {
     27        private ObservableCollection<TableMapping> sboxData;
     28
    2429        /// <summary>
    2530        /// Constructor
     
    2732        public Cipher4Pres()
    2833        {
     34            sboxData = new ObservableCollection<TableMapping>();
     35            sboxData.Add(new TableMapping()
     36            {
     37                Direction = ToyCiphers.Properties.Resources.Input,
     38                ZeroOutput = 0,
     39                OneOutput = 1,
     40                TwoOutput = 2,
     41                ThreeOutput = 3,
     42                FourOutput = 4,
     43                FiveOutput = 5,
     44                SixOutput = 6,
     45                SevenOutput = 7,
     46                EightOutput = 8,
     47                NineOutput = 9,
     48                TenOutput = 10,
     49                ElevenOutput = 11,
     50                TwelveOutput = 12,
     51                ThirteenOutput = 13,
     52                FourteenOutput = 14,
     53                FifteenOutput = 15
     54            });
     55            sboxData.Add(new TableMapping()
     56            {
     57                Direction = ToyCiphers.Properties.Resources.Output,
     58                ZeroOutput = 10,
     59                OneOutput = 0,
     60                TwoOutput = 9,
     61                ThreeOutput = 14,
     62                FourOutput = 6,
     63                FiveOutput = 3,
     64                SixOutput = 15,
     65                SevenOutput = 5,
     66                EightOutput = 1,
     67                NineOutput = 13,
     68                TenOutput = 12,
     69                ElevenOutput = 7,
     70                TwelveOutput = 11,
     71                ThirteenOutput = 4,
     72                FourteenOutput = 2,
     73                FifteenOutput = 8
     74            });
     75
     76            DataContext = this;
    2977            InitializeComponent();
     78        }
     79
     80        /// <summary>
     81        /// Property for binding the sboxData
     82        /// </summary>
     83        public ObservableCollection<TableMapping> SBoxData
     84        {
     85            get { return sboxData; }
     86            set
     87            {
     88                sboxData = value;
     89                OnPropertyChanged("SBoxData");
     90            }
    3091        }
    3192
     
    40101            {
    41102                CipherGrid.Visibility = Visibility.Visible;
    42                 OutputBlock.Visibility = Visibility.Visible;
    43103                LabelGrid.Visibility = Visibility.Hidden;
    44                 OuterGrid.Width = 400;
    45                 OuterGrid.Height = 790;
    46104            }
    47105            else
    48106            {
    49107                CipherGrid.Visibility = Visibility.Hidden;
    50                 OutputBlock.Visibility = Visibility.Hidden;
    51108                LabelGrid.Visibility = Visibility.Visible;
    52                 OuterGrid.Width = 390;
    53                 OuterGrid.Height = 350;
    54109            }
     110        }
     111
     112        /// <summary>
     113        /// Event
     114        /// </summary>
     115        public event PropertyChangedEventHandler PropertyChanged;
     116
     117        /// <summary>
     118        /// Method to call if data changes
     119        /// </summary>
     120        /// <param name="propertyName"></param>
     121        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
     122        {
     123            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    55124        }
    56125    }
Note: See TracChangeset for help on using the changeset viewer.