Changeset 8394


Ignore:
Timestamp:
Sep 28, 2019, 3:50:38 PM (2 years ago)
Author:
Sven Rech
Message:

Reintegrated new component CrypAnalysisViewControl into "AnalysisMonoalphabeticSubstitution", "VigenereAnalyzer", "KeySearcher" and "QuadraticSieve".

Location:
trunk
Files:
2 deleted
18 edited

Legend:

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

    r8372 r8394  
    2828using Cryptool.AnalysisMonoalphabeticSubstitution.Properties;
    2929using Cryptool.PluginBase.Utils;
    30 
     30using Cryptool.CrypAnalysisViewControl;
    3131
    3232namespace Cryptool.AnalysisMonoalphabeticSubstitution
     
    153153                try
    154154                {
    155                     ((AssignmentPresentation)Presentation).entries.Clear();
     155                    ((AssignmentPresentation)Presentation).Entries.Clear();
    156156                }
    157157                catch (Exception ex)
     
    450450                            try
    451451                            {
    452                                 ((AssignmentPresentation) Presentation).entries.Clear();
     452                                ((AssignmentPresentation) Presentation).Entries.Clear();
    453453
    454454                                for (int i = 0; i < this.keyCandidates.Count; i++)
     
    479479                                    double f = keyCandidate.Fitness;
    480480                                    entry.Value = string.Format("{0:0.00000} ", f);
    481                                     ((AssignmentPresentation) Presentation).entries.Add(entry);
     481                                    ((AssignmentPresentation) Presentation).Entries.Add(entry);
    482482                                }
    483483                            }
     
    501501                 {
    502502                     startTime = DateTime.Now;
    503                      ((AssignmentPresentation)Presentation).startTime.Content = "" + startTime;
    504                      ((AssignmentPresentation)Presentation).endTime.Content = "";
    505                      ((AssignmentPresentation)Presentation).elapsedTime.Content = "";
    506                      ((AssignmentPresentation)Presentation).totalKeys.Content = "";
    507                      ((AssignmentPresentation)Presentation).keysPerSecond.Content = "";
     503                     ((AssignmentPresentation)Presentation).StartTime.Value = "" + startTime;
     504                     ((AssignmentPresentation)Presentation).EndTime.Value = "";
     505                     ((AssignmentPresentation)Presentation).ElapsedTime.Value = "";
     506                     ((AssignmentPresentation)Presentation).TotalKeys.Value = "";
     507                     ((AssignmentPresentation)Presentation).KeysPerSecond.Value = "";
    508508                 }
    509509                 catch (Exception ex)
     
    530530                    keysPerSecond = totalKeys / totalSeconds;
    531531
    532                     ((AssignmentPresentation)Presentation).endTime.Content = "" + endTime;
    533                     ((AssignmentPresentation)Presentation).elapsedTime.Content = "" + elapsedspan;
    534                     ((AssignmentPresentation)Presentation).totalKeys.Content = String.Format(culture, "{0:##,#}", totalKeys);
    535                     ((AssignmentPresentation)Presentation).keysPerSecond.Content = String.Format(culture, "{0:##,#}", (ulong)keysPerSecond);
     532                    ((AssignmentPresentation)Presentation).EndTime.Value = "" + endTime;
     533                    ((AssignmentPresentation)Presentation).ElapsedTime.Value = "" + elapsedspan;
     534                    ((AssignmentPresentation)Presentation).TotalKeys.Value = String.Format(culture, "{0:##,#}", totalKeys);
     535                    ((AssignmentPresentation)Presentation).KeysPerSecond.Value = String.Format(culture, "{0:##,#}", (ulong)keysPerSecond);
    536536                }
    537537                catch (Exception ex)
     
    585585    }
    586586
    587     public class ResultEntry
     587    public class ResultEntry : ICrypAnalysisResultListEntry
    588588    {
    589589        public string Ranking { get; set; }
     
    592592        public string Text { get; set; }
    593593        public string Attack { get; set; }
     594
     595        public string ClipboardValue => Value;
     596        public string ClipboardKey => Key;
     597        public string ClipboardText => Text;
     598        public string ClipboardEntry =>
     599            "Rank: " + Ranking + Environment.NewLine +
     600            "Value: " + Value + Environment.NewLine +
     601            "Attack: " + Attack + Environment.NewLine +
     602            "Key: " + Key + Environment.NewLine +
     603            "Text: " + Text;
    594604    }
    595605
  • trunk/CrypPlugins/AnalysisMonoalphabeticSubstitution/AnalysisMonoalphabeticSubstitution.csproj

    r8372 r8394  
    146146      <Private>False</Private>
    147147    </ProjectReference>
     148    <ProjectReference Include="..\..\LibSource\CrypAnalysisViewControl\CrypAnalysisViewControl.csproj">
     149      <Project>{4ab9be96-3e34-40cb-9270-a64480c851ee}</Project>
     150      <Name>CrypAnalysisViewControl</Name>
     151      <Private>False</Private>
     152    </ProjectReference>
    148153  </ItemGroup>
    149154  <ItemGroup>
  • trunk/CrypPlugins/AnalysisMonoalphabeticSubstitution/AssignmentPresentation.xaml

    r8372 r8394  
    1 <UserControl x:Class="Cryptool.AnalysisMonoalphabeticSubstitution.AssignmentPresentation"
     1<UserControl
    22    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    33    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4     mc:Ignorable="d"
    54    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    65    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    76    xmlns:properties="clr-namespace:Cryptool.AnalysisMonoalphabeticSubstitution.Properties"
     7    xmlns:crypanalysisviewcontrol="clr-namespace:Cryptool.CrypAnalysisViewControl;assembly=CrypAnalysisViewControl"
     8    x:Class="Cryptool.AnalysisMonoalphabeticSubstitution.AssignmentPresentation"
     9    mc:Ignorable="d"
    810    d:DesignHeight="263">
    9    
    10     <UserControl.Resources>
    11         <RotateTransform x:Key="HeaderRotate" Angle="270" />
    12         <Style x:Key="ValueRow1">
    13             <Setter Property="Label.Margin" Value="80,0,0,0" />
    14         </Style>
    15         <Style x:Key="ValueRow2">
    16             <Setter Property="Label.Margin" Value="80,0,0,0" />
    17         </Style>
    18     </UserControl.Resources>
    19     <Viewbox>
    20         <StackPanel Width="646">
    21             <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
    22                 <Grid Height="78" Background="#AFFFD4C1">
    23                     <Grid.ColumnDefinitions>
    24                         <ColumnDefinition Width="26" />
    25                         <ColumnDefinition Width="200*" />
    26                         <ColumnDefinition Width="200*" />
    27                     </Grid.ColumnDefinitions>
    28                     <Grid.RowDefinitions>
    29                         <RowDefinition Height="26" />
    30                         <RowDefinition Height="26" />
    31                         <RowDefinition Height="26" />
    32                     </Grid.RowDefinitions>
    33                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FFE56B00" Grid.Column="0" Grid.RowSpan="3">
    34                         <Label Name="localLabel" Content="{x:Static properties:Resources.LocalLabel}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
    35                     </Border>
    36                     <Label Name="startLabel" Content="{x:Static properties:Resources.StartLabel}" Grid.Column="1" />
    37                     <Label Name="startTime" Style="{StaticResource ValueRow1}" Margin="120,0,0,0" Grid.Column="1" />
    38                     <Label Name="endLabel" Content="{x:Static properties:Resources.EndLabel}" HorizontalAlignment="Left" Grid.Column="2" />
    39                     <Label Name="endTime" Style="{StaticResource ValueRow2}" Margin="120,0,0,0" Grid.Column="2" />
    4011
    41                     <Label Name="elapsedLabel" Content="{x:Static properties:Resources.ElapsedLabel}" Grid.Column="1" Grid.Row="1" />
    42                     <Label Name="elapsedTime" Style="{StaticResource ValueRow1}" Margin="120,0,0,0" Grid.Column="1" Grid.Row="1" />
    43                     <!--<Label Content="{x:Static properties:Resources.RemainingLabel}" Grid.Column="2" Grid.Row="1" Visibility="Hidden" />-->
    44                     <Label Name="timeLeft" Style="{StaticResource ValueRow2}" Margin="120,0,0,0" Grid.Column="2" Grid.Row="1" />
     12    <crypanalysisviewcontrol:CrypAnalysisViewControl ResultHeaderCaption="{x:Static properties:Resources.LocalLabel}" ResultListCaption="{x:Static properties:Resources.TopTenLabel}">
     13        <crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
     14            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.StartLabel}" x:Name="StartTime" />
     15            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.EndLabel}" x:Name="EndTime" />
     16            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.ElapsedLabel}" x:Name="ElapsedTime" />
     17            <!--Empty for layouting purposes:-->
     18            <crypanalysisviewcontrol:ViewLabel />
     19            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.TotalKeysLabel}" x:Name="TotalKeys" />
     20            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.KeysPerSecLabel}" x:Name="KeysPerSecond" />
     21        </crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
    4522
    46                     <Label Content="{x:Static properties:Resources.TotalKeysLabel}" Grid.Column="1" Grid.Row="2" />
    47                     <Label Name="totalKeys" Style="{StaticResource ValueRow2}" Margin="120,0,0,0" Grid.Column="1" Grid.Row="2" />
    48                     <Label Content="{x:Static properties:Resources.KeysPerSecLabel}" Grid.Column="2" Grid.Row="2" />
    49                     <Label Name="keysPerSecond" Style="{StaticResource ValueRow2}" Margin="120,0,0,0" Grid.Column="2" Grid.Row="2" />
    50                 </Grid>
    51             </Border>
    52             <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
    53                 <Grid>
    54                     <Grid.ColumnDefinitions>
    55                         <ColumnDefinition Width="26" />
    56                         <ColumnDefinition Width="*" />
    57                     </Grid.ColumnDefinitions>
    58                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF479308" Grid.Column="0">
    59                         <Label Name="topTenLabel" Content="{x:Static properties:Resources.TopTenLabel}" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="50" />
    60                     </Border>
    61                     <ListView Name="ListView" Background="#AFE2FFCE" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" FontSize="10" Grid.Column="1" Height="250">
    62 
    63                         <ListView.Resources>
    64                             <ContextMenu x:Key="ItemContextMenu">
    65                                 <MenuItem Header="{x:Static properties:Resources.Copy_value}" Tag="copy_value" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    66                                 <MenuItem Header="{x:Static properties:Resources.Copy_key}" Tag="copy_key" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    67                                 <MenuItem Header="{x:Static properties:Resources.Copy_text}" Tag="copy_text" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    68                                 <MenuItem Header="{x:Static properties:Resources.Copy_line}" Tag="copy_line" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    69                                 <MenuItem Header="{x:Static properties:Resources.Copy_all}" Tag="copy_all" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    70                             </ContextMenu>
    71                         </ListView.Resources>
    72 
    73                         <ListView.ItemContainerStyle>
    74                             <Style TargetType="{x:Type ListViewItem}">
    75                                 <EventSetter Event= "MouseDoubleClick" Handler="HandleDoubleClick" />
    76                                 <Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}"/>
    77                             </Style>
    78                         </ListView.ItemContainerStyle>
    79 
    80                         <ListView.View>
    81                             <GridView>
    82                                 <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
    83                                     <GridViewColumn.CellTemplate>
    84                                         <DataTemplate>
    85                                             <Label/>
    86                                         </DataTemplate>
    87                                     </GridViewColumn.CellTemplate>
    88                                 </GridViewColumn>
    89                                 <GridViewColumn Header="{x:Static properties:Resources.ValueHeader}" DisplayMemberBinding="{Binding Path=Value}">
    90                                     <GridViewColumn.CellTemplate>
    91                                         <DataTemplate>
    92                                             <Label/>
    93                                         </DataTemplate>
    94                                     </GridViewColumn.CellTemplate>
    95                                 </GridViewColumn>
    96                                 <GridViewColumn Header="{x:Static properties:Resources.AttackHeader}" DisplayMemberBinding="{Binding Path=Attack}">
    97                                     <GridViewColumn.CellTemplate>
    98                                         <DataTemplate>
    99                                             <Label/>
    100                                         </DataTemplate>
    101                                     </GridViewColumn.CellTemplate>
    102                                 </GridViewColumn>
    103                                 <GridViewColumn Header="{x:Static properties:Resources.KeyHeader}" DisplayMemberBinding="{Binding Path=Key}">
    104                                     <GridViewColumn.CellTemplate>
    105                                         <DataTemplate>
    106                                             <Label/>
    107                                         </DataTemplate>
    108                                     </GridViewColumn.CellTemplate>
    109                                 </GridViewColumn>
    110                                 <GridViewColumn Header="{x:Static properties:Resources.TextHeader}" DisplayMemberBinding="{Binding Path=Text}">
    111                                     <GridViewColumn.CellTemplate>
    112                                         <DataTemplate>
    113                                             <Label/>
    114                                         </DataTemplate>
    115                                     </GridViewColumn.CellTemplate>
    116                                 </GridViewColumn>
    117                             </GridView>
    118                         </ListView.View>
    119                     </ListView>
    120                 </Grid>
    121             </Border>
    122         </StackPanel>
    123     </Viewbox>
     23        <crypanalysisviewcontrol:CrypAnalysisResultListView ItemsSource="{Binding}" ResultItemAction="HandleResultItemAction">
     24            <crypanalysisviewcontrol:CrypAnalysisResultListView.View>
     25                <GridView>
     26                    <GridViewColumn Header="#" DisplayMemberBinding="{Binding Ranking}" Width="25">
     27                        <GridViewColumn.CellTemplate>
     28                            <DataTemplate>
     29                                <Label/>
     30                            </DataTemplate>
     31                        </GridViewColumn.CellTemplate>
     32                    </GridViewColumn>
     33                    <GridViewColumn Header="{x:Static properties:Resources.ValueHeader}" DisplayMemberBinding="{Binding Value}">
     34                        <GridViewColumn.CellTemplate>
     35                            <DataTemplate>
     36                                <Label/>
     37                            </DataTemplate>
     38                        </GridViewColumn.CellTemplate>
     39                    </GridViewColumn>
     40                    <GridViewColumn Header="{x:Static properties:Resources.AttackHeader}" DisplayMemberBinding="{Binding Attack}">
     41                        <GridViewColumn.CellTemplate>
     42                            <DataTemplate>
     43                                <Label/>
     44                            </DataTemplate>
     45                        </GridViewColumn.CellTemplate>
     46                    </GridViewColumn>
     47                    <GridViewColumn Header="{x:Static properties:Resources.KeyHeader}" DisplayMemberBinding="{Binding Key}">
     48                        <GridViewColumn.CellTemplate>
     49                            <DataTemplate>
     50                                <Label/>
     51                            </DataTemplate>
     52                        </GridViewColumn.CellTemplate>
     53                    </GridViewColumn>
     54                    <GridViewColumn Header="{x:Static properties:Resources.TextHeader}" DisplayMemberBinding="{Binding Text}">
     55                        <GridViewColumn.CellTemplate>
     56                            <DataTemplate>
     57                                <Label/>
     58                            </DataTemplate>
     59                        </GridViewColumn.CellTemplate>
     60                    </GridViewColumn>
     61                </GridView>
     62            </crypanalysisviewcontrol:CrypAnalysisResultListView.View>
     63        </crypanalysisviewcontrol:CrypAnalysisResultListView>
     64    </crypanalysisviewcontrol:CrypAnalysisViewControl>
    12465</UserControl>
  • trunk/CrypPlugins/AnalysisMonoalphabeticSubstitution/AssignmentPresentation.xaml.cs

    r8372 r8394  
    66using System.Windows.Threading;
    77using System.Threading;
     8using Cryptool.CrypAnalysisViewControl;
    89
    910namespace Cryptool.AnalysisMonoalphabeticSubstitution
     
    1617    {
    1718
    18         public ObservableCollection<ResultEntry> entries = new ObservableCollection<ResultEntry>();
    19         //public event EventHandler doppelClick;
     19        public ObservableCollection<ResultEntry> Entries { get; } = new ObservableCollection<ResultEntry>();
    2020
    2121        #region Variables
     
    4040        {
    4141            InitializeComponent();
    42             this.DataContext = entries;
    43 
     42            DataContext = Entries;
    4443        }
    4544
     
    5251            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    5352            {
    54                 this.ListView.IsEnabled = false;
     53                IsEnabled = false;
    5554            }, null);
    5655        }
     
    6059            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    6160            {
    62                 this.ListView.IsEnabled = true;
     61                IsEnabled = true;
    6362            }, null);
    6463        }
     
    6867        #region Helper Methods
    6968
    70         public void HandleDoubleClick(Object sender, EventArgs eventArgs)
     69        private void HandleResultItemAction(ICrypAnalysisResultListEntry item)
    7170        {
    72             ListViewItem lvi = sender as ListViewItem;
    73             ResultEntry r = lvi.Content as ResultEntry;
    74 
    75             if (r != null)
     71            if (item is ResultEntry resultItem)
    7672            {
    77                 this.updateOutputFromUserChoice(r.Key, r.Text);
    78             }
    79         }
    80 
    81         // Strings with nul characters are not displayed correctly in the clipboard
    82         string removeNuls(string s)
    83         {
    84             return s.Replace(Convert.ToChar(0x0).ToString(), "");
    85         }
    86 
    87         string entryToText(ResultEntry entry)
    88         {
    89             return "Rank: " + entry.Ranking + "\n" +
    90                    "Value: " + entry.Value + "\n" +
    91                    "Attack: " + entry.Attack + "\n" +
    92                    "Key: " + entry.Key + "\n" +
    93                    "Text: " + removeNuls(entry.Text);
    94         }
    95 
    96         public void ContextMenuHandler(Object sender, EventArgs eventArgs)
    97         {
    98             try
    99             {
    100                 MenuItem menu = (MenuItem)((RoutedEventArgs)eventArgs).Source;
    101                 ResultEntry entry = (ResultEntry)menu.CommandParameter;
    102                 if (entry == null) return;
    103                 string tag = (string)menu.Tag;
    104 
    105                 if (tag == "copy_text")
    106                 {
    107                     Clipboard.SetText(removeNuls(entry.Text));
    108                 }
    109                 else if (tag == "copy_value")
    110                 {
    111                     Clipboard.SetText(entry.Value);
    112                 }
    113                 else if (tag == "copy_key")
    114                 {
    115                     Clipboard.SetText(entry.Key);
    116                 }
    117                 else if (tag == "copy_line")
    118                 {
    119                     Clipboard.SetText(entryToText(entry));
    120                 }
    121                 else if (tag == "copy_all")
    122                 {
    123                     List<string> lines = new List<string>();
    124                     foreach (var e in entries) lines.Add(entryToText(e));
    125                     Clipboard.SetText(String.Join("\n\n", lines));
    126                 }
    127             }
    128             catch (Exception ex)
    129             {
    130                 Clipboard.SetText("");
     73                updateOutputFromUserChoice(resultItem.Key, resultItem.Text);
    13174            }
    13275        }
    13376
    13477        #endregion
     78       
    13579    }
    13680}
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r8372 r8394  
    514514                {
    515515                    openClPresentationMutex.WaitOne();
    516                     ((QuickWatch)Presentation).OpenCLPresentation.AmountOfDevices++;
     516                    ((QuickWatch)Presentation).LocalQuickWatchPresentation.AmountOfDevices++;
    517517                    openClPresentationMutex.ReleaseMutex();
    518518                }, null);
     
    557557                                    UpdateQuickwatchSettings();
    558558                                    openClPresentationMutex.WaitOne();
    559                                     ((QuickWatch)Presentation).OpenCLPresentation.AmountOfDevices--;
     559                                    ((QuickWatch)Presentation).LocalQuickWatchPresentation.AmountOfDevices--;
    560560                                    openClPresentationMutex.ReleaseMutex();
    561561                                }, null);
     
    619619                ((QuickWatch) Presentation).Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback) delegate
    620620                                                                    {
    621                                                                         ((QuickWatch)Presentation).OpenCLPresentation.workItems.Content = subbatchSize;
     621                                                                        ((QuickWatch)Presentation).LocalQuickWatchPresentation.WorkItems.Value = subbatchSize.ToString();
    622622                                                                    }, null);
    623623                //GuiLogMessage(string.Format("Now using {0} subbatches", subbatches), NotificationLevel.Info);
     
    965965            {
    966966                openClPresentationMutex.WaitOne();
    967                 ((QuickWatch) Presentation).OpenCLPresentation.AmountOfDevices = 0;
     967                ((QuickWatch) Presentation).LocalQuickWatchPresentation.AmountOfDevices = 0;
    968968                openClPresentationMutex.ReleaseMutex();
    969969            }, null);
     
    10531053                    (SendOrPostCallback) delegate
    10541054                    {
    1055                         ((QuickWatch) Presentation).OpenCLPresentation.keysPerSecondOpenCL.Content =
     1055                        ((QuickWatch) Presentation).LocalQuickWatchPresentation.KeysPerSecondOpenCL.Value =
    10561056                            string.Format("{0:N}", openCLKeysPerSecond);
    1057                         ((QuickWatch) Presentation).OpenCLPresentation.keysPerSecondCPU.Content = string.Format(
     1057                        ((QuickWatch) Presentation).LocalQuickWatchPresentation.KeysPerSecondCPU.Value = string.Format(
    10581058                            "{0:N}", (keysPerSecond - openCLKeysPerSecond));
    1059                         ((QuickWatch) Presentation).OpenCLPresentation.ratio.Content = string.Format("{0:P}", ratio);
     1059                        ((QuickWatch) Presentation).LocalQuickWatchPresentation.Ratio.Value = string.Format("{0:P}", ratio);
    10601060                    }, null);
    10611061
     
    11231123        private void SetStartDate()
    11241124        {
    1125             localQuickWatchPresentation.startTime.Content = DateTime.Now.ToString("g", Thread.CurrentThread.CurrentCulture);
     1125            localQuickWatchPresentation.StartTime.Value = DateTime.Now.ToString("g", Thread.CurrentThread.CurrentCulture);
    11261126        }
    11271127
     
    11671167            localQuickWatchPresentation.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    11681168            {
    1169                 localQuickWatchPresentation.testedBits.Content = String.Format("{0}", testetBits);
    1170                 localQuickWatchPresentation.elapsedTime.Content = TimeSpanString(localBruteForceStopwatch.Elapsed);
    1171                 localQuickWatchPresentation.keysPerSecond.Content = String.Format("{0:0,0}", keysPerSecond);
     1169                localQuickWatchPresentation.TestedBits.Value = String.Format("{0}", testetBits);
     1170                localQuickWatchPresentation.ElapsedTime.Value = TimeSpanString(localBruteForceStopwatch.Elapsed);
     1171                localQuickWatchPresentation.KeysPerSecond.Value = String.Format("{0:0,0}", keysPerSecond);
    11721172
    11731173                if (timeleft != new TimeSpan(-1))
    11741174                {
    1175                     localQuickWatchPresentation.timeLeft.Content = TimeSpanString(timeleft);
     1175                    localQuickWatchPresentation.TimeLeft.Value = TimeSpanString(timeleft);
    11761176                    try
    11771177                    {
    1178                         localQuickWatchPresentation.endTime.Content = "" + DateTime.Now.Add(timeleft).ToString("g", Thread.CurrentThread.CurrentCulture);
     1178                        localQuickWatchPresentation.EndTime.Value = "" + DateTime.Now.Add(timeleft).ToString("g", Thread.CurrentThread.CurrentCulture);
    11791179                    }
    11801180                    catch
    11811181                    {
    1182                         localQuickWatchPresentation.endTime.Content = Resources.in_a_galaxy_far__far_away___;
     1182                        localQuickWatchPresentation.EndTime.Value = Resources.in_a_galaxy_far__far_away___;
    11831183                    }
    11841184                }
    11851185                else
    11861186                {
    1187                     localQuickWatchPresentation.timeLeft.Content = Resources.incalculable____;
    1188                     localQuickWatchPresentation.endTime.Content = Resources.in_a_galaxy_far__far_away___;
     1187                    localQuickWatchPresentation.TimeLeft.Value = Resources.incalculable____;
     1188                    localQuickWatchPresentation.EndTime.Value = Resources.in_a_galaxy_far__far_away___;
    11891189                }
    11901190
     
    11961196        private void printEntries(LinkedList<ValueKey> costList)
    11971197        {
    1198             localQuickWatchPresentation.entries.Clear();
     1198            localQuickWatchPresentation.Entries.Clear();
    11991199
    12001200            int i = 1;
     
    12091209                entry.Text = plaintext.Length > 32 ? plaintext.Substring(0,32) + "..." : plaintext;
    12101210                entry.FullText = plaintext;
    1211                 localQuickWatchPresentation.entries.Add(entry);
     1211                localQuickWatchPresentation.Entries.Add(entry);
    12121212            }
    12131213        }
  • trunk/CrypPlugins/KeySearcher/KeySearcher.csproj

    r8372 r8394  
    152152    <Compile Include="KeyTranslators\ByteArrayKeyTranslator.cs" />
    153153    <Compile Include="OpenCL\KeySearcherOpenCLCode.cs" />
    154     <Compile Include="Presentation\Controls\OpenCLPresentation.xaml.cs">
    155       <DependentUpon>OpenCLPresentation.xaml</DependentUpon>
    156     </Compile>
    157154    <Compile Include="Presentation\Controls\LocalQuickWatchPresentation.xaml.cs">
    158155      <DependentUpon>LocalQuickWatchPresentation.xaml</DependentUpon>
     
    195192      <Private>False</Private>
    196193    </ProjectReference>
     194    <ProjectReference Include="..\..\LibSource\CrypAnalysisViewControl\CrypAnalysisViewControl.csproj">
     195      <Project>{4ab9be96-3e34-40cb-9270-a64480c851ee}</Project>
     196      <Name>CrypAnalysisViewControl</Name>
     197      <Private>False</Private>
     198    </ProjectReference>
    197199    <ProjectReference Include="..\..\LibSource\KeyTextBox\KeyTextBox.csproj">
    198200      <Project>{FD4214D8-FFB9-406F-9202-BB5EC0645E8F}</Project>
     
    217219      <SubType>Designer</SubType>
    218220      <Generator>MSBuild:Compile</Generator>
    219     </Page>
    220     <Page Include="Presentation\Controls\OpenCLPresentation.xaml">
    221       <Generator>MSBuild:Compile</Generator>
    222       <SubType>Designer</SubType>
    223221    </Page>
    224222    <Page Include="Presentation\Controls\OrgChartTreeViewItemStyle.xaml">
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/LocalQuickWatchPresentation.xaml

    r8372 r8394  
    22    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    33    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4     xmlns:Controls="clr-namespace:KeySearcherPresentation.Controls"
    5     xmlns:Converter="clr-namespace:KeySearcherConverter"
    64    xmlns:properties="clr-namespace:KeySearcher.Properties"
     5    xmlns:crypanalysisviewcontrol="clr-namespace:Cryptool.CrypAnalysisViewControl;assembly=CrypAnalysisViewControl"
    76    x:Name="LocalQuickWatch">
    87   
    9     <UserControl.Resources>
    10         <Converter:TrueToVisibleOrCollapsedConverter x:Key="TrueToVisibleOrCollapsedConverter"/>
    11         <RotateTransform x:Key="HeaderRotate" Angle="270" />
    12         <Style x:Key="ValueRow">
    13             <Setter Property="Label.Padding" Value="5,5,20,5" />
    14             <Setter Property="Label.HorizontalContentAlignment" Value="Right" />
    15         </Style>
    16     </UserControl.Resources>
    17     <Viewbox>
    18         <Grid Width="646" >
    19             <StackPanel>
    20                 <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
    21                     <Grid Height="78" Background="#AFFFD4C1">
    22                         <Grid.ColumnDefinitions>
    23                             <ColumnDefinition Width="26" />
    24                             <ColumnDefinition Width="200*" />
    25                             <ColumnDefinition Width="200*" />
    26                         </Grid.ColumnDefinitions>
    27                         <Grid.RowDefinitions>
    28                             <RowDefinition Height="26" />
    29                             <RowDefinition Height="26" />
    30                             <RowDefinition Height="26" />
    31                         </Grid.RowDefinitions>
    32                         <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FFE56B00" Grid.Column="0" Grid.RowSpan="3">
    33                             <Label Content="{x:Static properties:Resources.Local_}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
    34                         </Border>
    35                         <Label Content="{x:Static properties:Resources.Start_}" Grid.Column="1" />
    36                         <Label Name="startTime" Style="{StaticResource ValueRow}" Grid.Column="1" />
    37                         <Label Content="{x:Static properties:Resources.End_}" HorizontalAlignment="Left" Grid.Column="2" />
    38                         <Label Name="endTime" Style="{StaticResource ValueRow}" Grid.Column="2" />
    39                         <Label Content="{x:Static properties:Resources.Elapsed_}" Grid.Column="1" Grid.Row="1" />
    40                         <Label Name="elapsedTime" Style="{StaticResource ValueRow}" Grid.Column="1" Grid.Row="1" />
    41                         <Label Content="{x:Static properties:Resources.Tested_Bits_}" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="2"/>
    42                         <Label Name="testedBits" Style="{StaticResource ValueRow}" Grid.Column="1" Grid.Row="2"/>
    43                         <Label Content="{x:Static properties:Resources.Remaining_}" Grid.Column="2" Grid.Row="1" />
    44                         <Label Name="timeLeft" Style="{StaticResource ValueRow}" Grid.Column="2" Grid.Row="1" />
    45                         <Label Content="{x:Static properties:Resources.Keys_Sec_}" Grid.Column="2" Grid.Row="2" />
    46                         <Label Name="keysPerSecond" Style="{StaticResource ValueRow}" Grid.Column="2" Grid.Row="2" />
    47                     </Grid>
    48                 </Border>
    49                 <Controls:OpenCLPresentation x:Name="OpenCLPresentation"
    50                                              Visibility="{Binding IsOpenCLEnabled, ElementName=LocalQuickWatch, Converter={StaticResource TrueToVisibleOrCollapsedConverter}}" Loaded="OpenCLPresentation_Loaded" />
    51                 <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
    52                     <Grid>
    53                         <Grid.ColumnDefinitions>
    54                             <ColumnDefinition Width="26" />
    55                             <ColumnDefinition Width="*" />
    56                         </Grid.ColumnDefinitions>
    57                         <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF479308" Grid.Column="0">
    58                             <Label Content="{x:Static properties:Resources.Top_Ten_}" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="50" />
    59                         </Border>
    60                         <ListView Name="ListView" Background="#AFE2FFCE" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" FontSize="10" Grid.Column="1" Height="250">
     8    <crypanalysisviewcontrol:CrypAnalysisViewControl ResultHeaderCaption="{x:Static properties:Resources.Local_}" ResultListCaption="{x:Static properties:Resources.Top_Ten_}">
     9        <crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
     10            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.Start_}" x:Name="StartTime" />
     11            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.End_}" x:Name="EndTime" />
     12            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.Elapsed_}" x:Name="ElapsedTime" />
     13            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.Remaining_}" x:Name="TimeLeft" />
     14            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.Tested_Bits_}" x:Name="TestedBits" />
     15            <crypanalysisviewcontrol:ViewLabel Caption="{x:Static properties:Resources.Keys_Sec_}" x:Name="KeysPerSecond" />
     16        </crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
    6117
    62                             <ListView.Resources>
    63                                 <ContextMenu x:Key="ItemContextMenu">
    64                                     <MenuItem Header="{x:Static properties:Resources.Copy_value}" Tag="copy_value" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    65                                     <MenuItem Header="{x:Static properties:Resources.Copy_key}" Tag="copy_key" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    66                                     <MenuItem Header="{x:Static properties:Resources.Copy_text}" Tag="copy_text" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    67                                     <MenuItem Header="{x:Static properties:Resources.Copy_line}" Tag="copy_line" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    68                                     <MenuItem Header="{x:Static properties:Resources.Copy_all}" Tag="copy_all" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    69                                 </ContextMenu>
    70                             </ListView.Resources>
     18        <crypanalysisviewcontrol:CrypAnalysisViewControl.AdditionalSections>
     19            <crypanalysisviewcontrol:SectionControl SectionHeaderCaption="OpenCL" IsSectionVisible="{Binding IsOpenCLEnabled}"
     20                                                    SectionHeaderBackground="#FF3B8EA4" SectionBackground="#AF73B7A6">
     21                <crypanalysisviewcontrol:SectionViewLabelsControl>
     22                    <crypanalysisviewcontrol:ViewLabel Caption="{Loc Keys_sec_OpenCL_}" x:Name="KeysPerSecondOpenCL" />
     23                    <crypanalysisviewcontrol:ViewLabel Caption="{Loc Keys_sec_CPU_}" x:Name="KeysPerSecondCPU" />
     24                    <crypanalysisviewcontrol:ViewLabel Caption="{Loc Devices_}" x:Name="Devices" />
     25                    <crypanalysisviewcontrol:ViewLabel Caption="{Loc Work_Items_}" x:Name="WorkItems" />
     26                    <crypanalysisviewcontrol:ViewLabel Caption="{Loc Ration_}" x:Name="Ratio" />
     27                </crypanalysisviewcontrol:SectionViewLabelsControl>
     28            </crypanalysisviewcontrol:SectionControl>
     29        </crypanalysisviewcontrol:CrypAnalysisViewControl.AdditionalSections>
    7130
    72                             <ListView.ItemContainerStyle>
    73                                 <Style TargetType="{x:Type ListViewItem}">
    74                                     <Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}"/>
    75                                     <EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick" />
    76                                 </Style>
    77                             </ListView.ItemContainerStyle>
    78                            
    79                             <ListView.View>
    80                                 <GridView>
    81                                     <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
    82                                         <GridViewColumn.CellTemplate>
    83                                             <DataTemplate>
    84                                                 <Label/>
    85                                             </DataTemplate>
    86                                         </GridViewColumn.CellTemplate>
    87                                     </GridViewColumn>
    88                                     <GridViewColumn Header="{x:Static properties:Resources.Value}" DisplayMemberBinding="{Binding Path=Value}">
    89                                         <GridViewColumn.CellTemplate>
    90                                             <DataTemplate>
    91                                                 <Label/>
    92                                             </DataTemplate>
    93                                         </GridViewColumn.CellTemplate>
    94                                     </GridViewColumn>
    95                                     <GridViewColumn Header="{x:Static properties:Resources.Key}" DisplayMemberBinding="{Binding Path=Key}">
    96                                         <GridViewColumn.CellTemplate>
    97                                             <DataTemplate>
    98                                                 <Label/>
    99                                             </DataTemplate>
    100                                         </GridViewColumn.CellTemplate>
    101                                     </GridViewColumn>
    102                                     <GridViewColumn Header="{x:Static properties:Resources.Text}" DisplayMemberBinding="{Binding Path=Text}">
    103                                         <GridViewColumn.CellTemplate>
    104                                             <DataTemplate>
    105                                                 <Label/>
    106                                             </DataTemplate>
    107                                         </GridViewColumn.CellTemplate>
    108                                     </GridViewColumn>
    109                                 </GridView>
    110                             </ListView.View>
    111                         </ListView>
    112                     </Grid>
    113                 </Border>           
    114             </StackPanel>
    115         </Grid>
    116     </Viewbox>
     31        <crypanalysisviewcontrol:CrypAnalysisResultListView ItemsSource="{Binding Entries}" ResultItemAction="HandleResultItemAction">
     32            <crypanalysisviewcontrol:CrypAnalysisResultListView.View>
     33                <GridView>
     34                    <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
     35                        <GridViewColumn.CellTemplate>
     36                            <DataTemplate>
     37                                <Label/>
     38                            </DataTemplate>
     39                        </GridViewColumn.CellTemplate>
     40                    </GridViewColumn>
     41                    <GridViewColumn Header="{x:Static properties:Resources.Value}" DisplayMemberBinding="{Binding Path=Value}">
     42                        <GridViewColumn.CellTemplate>
     43                            <DataTemplate>
     44                                <Label/>
     45                            </DataTemplate>
     46                        </GridViewColumn.CellTemplate>
     47                    </GridViewColumn>
     48                    <GridViewColumn Header="{x:Static properties:Resources.Key}" DisplayMemberBinding="{Binding Path=Key}">
     49                        <GridViewColumn.CellTemplate>
     50                            <DataTemplate>
     51                                <Label/>
     52                            </DataTemplate>
     53                        </GridViewColumn.CellTemplate>
     54                    </GridViewColumn>
     55                    <GridViewColumn Header="{x:Static properties:Resources.Text}" DisplayMemberBinding="{Binding Path=Text}">
     56                        <GridViewColumn.CellTemplate>
     57                            <DataTemplate>
     58                                <Label/>
     59                            </DataTemplate>
     60                        </GridViewColumn.CellTemplate>
     61                    </GridViewColumn>
     62                </GridView>
     63            </crypanalysisviewcontrol:CrypAnalysisResultListView.View>
     64        </crypanalysisviewcontrol:CrypAnalysisResultListView>
     65    </crypanalysisviewcontrol:CrypAnalysisViewControl>
    11766</UserControl>
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/LocalQuickWatchPresentation.xaml.cs

    r8372 r8394  
    55using System.Collections.Generic;
    66using KeySearcher;
     7using Cryptool.CrypAnalysisViewControl;
    78
    89namespace KeySearcherPresentation.Controls
     
    1920        }
    2021
    21         public ObservableCollection<ResultEntry> entries = new ObservableCollection<ResultEntry>();
     22        public ObservableCollection<ResultEntry> Entries { get; } = new ObservableCollection<ResultEntry>();
     23
     24        private int amountOfDevices;
     25        public int AmountOfDevices
     26        {
     27            get { return amountOfDevices; }
     28            set
     29            {
     30                amountOfDevices = value;
     31                Devices.Value = amountOfDevices.ToString();
     32            }
     33        }
    2234
    2335        public static readonly DependencyProperty IsOpenCLEnabledProperty =
     
    3547        {
    3648            InitializeComponent();
    37             this.DataContext = entries;
     49            this.DataContext = this;
    3850        }
    3951
    40         private void OpenCLPresentation_Loaded(object sender, RoutedEventArgs e)
     52        private void HandleResultItemAction(ICrypAnalysisResultListEntry item)
    4153        {
    42         }
    43        
    44         // Strings with nul characters are not displayed correctly in the clipboard
    45         string removeNuls(string s)
    46         {
    47             return s.Replace(Convert.ToChar(0x0).ToString(), "");
    48         }
    49 
    50         string entryToText(ResultEntry entry)
    51         {
    52             return "Rank: " + entry.Ranking + "\r\n" +
    53                    "Value: " + entry.Value + "\r\n" +
    54                    "Key: " + entry.Key + "\r\n" +
    55                    "Text: " + removeNuls(entry.FullText);
    56         }
    57 
    58         public void ContextMenuHandler(Object sender, EventArgs eventArgs)
    59         {
    60             try
     54            if (item is ResultEntry resultItem)
    6155            {
    62                 MenuItem menu = (MenuItem)((RoutedEventArgs)eventArgs).Source;
    63                 ResultEntry entry = (ResultEntry)menu.CommandParameter;
    64                 if (entry == null) return;
    65                 string tag = (string)menu.Tag;
    66 
    67                 if (tag == "copy_text")
    68                 {
    69                     Clipboard.SetText(removeNuls(entry.Text));
    70                 }
    71                 else if (tag == "copy_value")
    72                 {
    73                     Clipboard.SetText(entry.Value);
    74                 }
    75                 else if (tag == "copy_key")
    76                 {
    77                     Clipboard.SetText(entry.Key);
    78                 }
    79                 else if (tag == "copy_line")
    80                 {
    81                     Clipboard.SetText(entryToText(entry));
    82                 }
    83                 else if (tag == "copy_all")
    84                 {
    85                     List<string> lines = new List<string>();
    86                     foreach (var e in entries) lines.Add(entryToText(e));
    87                     Clipboard.SetText(String.Join("\r\n\r\n", lines));
    88                 }
    89             }
    90             catch(Exception ex)
    91             {
    92                 Clipboard.SetText("");
    93             }
    94         }
    95 
    96         public void HandleDoubleClick(Object sender, EventArgs eventArgs)
    97         {
    98             var lvi = sender as ListViewItem;
    99             var r = lvi.Content as ResultEntry;
    100 
    101             if (r != null)
    102             {
    103                 _updateOutputFromUserChoice(r.Key, r.FullText);
     56                _updateOutputFromUserChoice(resultItem.Key, resultItem.FullText);
    10457            }
    10558        }
  • trunk/CrypPlugins/KeySearcher/Presentation/QuickWatch.xaml.cs

    r8372 r8394  
    4545        }
    4646
    47         public OpenCLPresentation OpenCLPresentation
    48         {
    49             get
    50             {
    51                return LocalQuickWatchPresentation.OpenCLPresentation;
    52             }
    53         }
    54 
    5547        public Boolean ShowStatistics
    5648        {
  • trunk/CrypPlugins/KeySearcher/ResultEntry.cs

    r7769 r8394  
    1 using System;
     1using Cryptool.CrypAnalysisViewControl;
     2using System;
    23
    34namespace KeySearcher
     
    67    /// Represents one entry in our result list
    78    /// </summary>
    8     public class ResultEntry
     9    public class ResultEntry : ICrypAnalysisResultListEntry
    910    {
    1011        public string Ranking { get; set; }
     
    1314        public string Text { get; set; }
    1415        public string FullText { get; set; }
     16
     17        public string ClipboardValue => Value;
     18        public string ClipboardKey => Key;
     19        public string ClipboardText => Text;
     20        public string ClipboardEntry =>
     21            "Rank: " + Ranking + Environment.NewLine +
     22            "Value: " + Value + Environment.NewLine +
     23            "Key: " + Key + Environment.NewLine +
     24            "Text: " + FullText;
    1525
    1626        //-------
  • trunk/CrypPlugins/QuadraticSieve/QuadraticSieve.cs

    r8372 r8394  
    112112                quadraticSieveQuickWatchPresentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    113113                {
    114                     quadraticSieveQuickWatchPresentation.peer2peer.Visibility = settings.UsePeer2Peer ? Visibility.Visible : Visibility.Collapsed;
    115                     quadraticSieveQuickWatchPresentation.timeLeft.Content = "-";
    116                     quadraticSieveQuickWatchPresentation.endTime.Content = "-";
    117                     quadraticSieveQuickWatchPresentation.coresUsed.Content = "-";
     114                    quadraticSieveQuickWatchPresentation.Peer2PeerSection.Visibility = settings.UsePeer2Peer ? Visibility.Visible : Visibility.Collapsed;
     115                    quadraticSieveQuickWatchPresentation.TimeLeft.Value = "";
     116                    quadraticSieveQuickWatchPresentation.EndTime.Value = "";
     117                    quadraticSieveQuickWatchPresentation.CoresUsed.Value = "";
    118118                }
    119119                , null);
     
    150150                    quadraticSieveQuickWatchPresentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    151151                    {
    152                         quadraticSieveQuickWatchPresentation.peer2peer.Visibility = settings.UsePeer2Peer ? Visibility.Visible : Visibility.Collapsed;                       
     152                        quadraticSieveQuickWatchPresentation.Peer2PeerSection.Visibility = settings.UsePeer2Peer ? Visibility.Visible : Visibility.Collapsed;                       
    153153                    }, null);
    154154                }
     
    203203                {
    204204                    quadraticSieveQuickWatchPresentation.ProgressRelationPackages.Clear();
    205                     quadraticSieveQuickWatchPresentation.information.Content = info_message;
    206                     quadraticSieveQuickWatchPresentation.endTime.Content = "-";
    207                     quadraticSieveQuickWatchPresentation.timeLeft.Content = "-";
    208                     quadraticSieveQuickWatchPresentation.elapsedTime.Content = "-";
    209                     quadraticSieveQuickWatchPresentation.startTime.Content = "" + start_time;
     205                    quadraticSieveQuickWatchPresentation.Information.Value = info_message;
     206                    quadraticSieveQuickWatchPresentation.EndTime.Value = "";
     207                    quadraticSieveQuickWatchPresentation.TimeLeft.Value = "";
     208                    quadraticSieveQuickWatchPresentation.ElapsedTime.Value = "";
     209                    quadraticSieveQuickWatchPresentation.StartTime.Value = "" + start_time;
    210210                    quadraticSieveQuickWatchPresentation.factorList.Items.Clear();
    211211                    quadraticSieveQuickWatchPresentation.factorInfo.Content = typeof(QuadraticSieve).GetPluginStringResource("Searching_trivial_factors");
     
    248248                    quadraticSieveQuickWatchPresentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    249249                    {
    250                         quadraticSieveQuickWatchPresentation.information.Content = string.Format(typeof(QuadraticSieve).GetPluginStringResource("Sieving_finished"), OutputFactors.Count());
    251                         quadraticSieveQuickWatchPresentation.endTime.Content = endtime_message;
    252                         quadraticSieveQuickWatchPresentation.timeLeft.Content = timeLeft_message;
     250                        quadraticSieveQuickWatchPresentation.Information.Value = string.Format(typeof(QuadraticSieve).GetPluginStringResource("Sieving_finished"), OutputFactors.Count());
     251                        quadraticSieveQuickWatchPresentation.EndTime.Value = endtime_message;
     252                        quadraticSieveQuickWatchPresentation.TimeLeft.Value = timeLeft_message;
    253253                        quadraticSieveQuickWatchPresentation.factorInfo.Content = "";
    254254                    }
     
    264264                    quadraticSieveQuickWatchPresentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    265265                    {
    266                         quadraticSieveQuickWatchPresentation.information.Content = typeof(QuadraticSieve).GetPluginStringResource("Stopped_by_user");
    267                         quadraticSieveQuickWatchPresentation.endTime.Content = "-";
    268                         quadraticSieveQuickWatchPresentation.timeLeft.Content = "-";
    269                         quadraticSieveQuickWatchPresentation.startTime.Content = "-";
    270                         quadraticSieveQuickWatchPresentation.elapsedTime.Content = "-";
     266                        quadraticSieveQuickWatchPresentation.Information.Value = typeof(QuadraticSieve).GetPluginStringResource("Stopped_by_user");
     267                        quadraticSieveQuickWatchPresentation.EndTime.Value = "";
     268                        quadraticSieveQuickWatchPresentation.TimeLeft.Value = "";
     269                        quadraticSieveQuickWatchPresentation.StartTime.Value = "";
     270                        quadraticSieveQuickWatchPresentation.ElapsedTime.Value = "";
    271271                        quadraticSieveQuickWatchPresentation.factorInfo.Content = "";
    272272                    }
     
    460460                    String message = typeof(QuadraticSieve).GetPluginStringResource("Sieving_now");
    461461                    GuiLogMessage(message, NotificationLevel.Info);
    462                     quadraticSieveQuickWatchPresentation.coresUsed.Content = (threads+1);
    463                     quadraticSieveQuickWatchPresentation.information.Content = message;
     462                    quadraticSieveQuickWatchPresentation.CoresUsed.Value = (threads+1).ToString();
     463                    quadraticSieveQuickWatchPresentation.Information.Value = message;
    464464                    if (usePeer2Peer)
    465465                        quadraticSieveQuickWatchPresentation.localSieving.Visibility = Visibility.Hidden;
     
    491491                quadraticSieveQuickWatchPresentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    492492                {
    493                     quadraticSieveQuickWatchPresentation.timeLeft.Content = "-";
    494                     quadraticSieveQuickWatchPresentation.endTime.Content = "-";
     493                    quadraticSieveQuickWatchPresentation.TimeLeft.Value = "";
     494                    quadraticSieveQuickWatchPresentation.EndTime.Value = "";
    495495                    quadraticSieveQuickWatchPresentation.factorInfo.Content = typeof(QuadraticSieve).GetPluginStringResource("Found_enough_relations");
    496496                }, null);
     
    505505                quadraticSieveQuickWatchPresentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    506506                {
    507                     quadraticSieveQuickWatchPresentation.timeLeft.Content = "-";
    508                     quadraticSieveQuickWatchPresentation.endTime.Content = "-";
     507                    quadraticSieveQuickWatchPresentation.TimeLeft.Value = "";
     508                    quadraticSieveQuickWatchPresentation.EndTime.Value = "";
    509509                    quadraticSieveQuickWatchPresentation.factorInfo.Content = typeof(QuadraticSieve).GetPluginStringResource("Other_peer_finished_sieving");
    510510                }, null);
     
    595595            if (globalPerformance == 0 || double.IsInfinity(msleft))
    596596            {
    597                 timeLeft_message = "-";
    598                 endtime_message = "-";
     597                timeLeft_message = "";
     598                endtime_message = "";
    599599            }
    600600
    601601            quadraticSieveQuickWatchPresentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    602602            {
    603                 quadraticSieveQuickWatchPresentation.foundRelations.Content = num_relations;
    604                 quadraticSieveQuickWatchPresentation.maxRelations.Content = max_relations;
    605                 quadraticSieveQuickWatchPresentation.timeLeft.Content = timeLeft_message;
    606                 quadraticSieveQuickWatchPresentation.endTime.Content = endtime_message;
    607                 quadraticSieveQuickWatchPresentation.elapsedTime.Content = timeSpanString(now.Subtract(start_time));
     603                quadraticSieveQuickWatchPresentation.FoundRelations.Value = num_relations.ToString();
     604                quadraticSieveQuickWatchPresentation.MaxRelations.Value = max_relations.ToString();
     605                quadraticSieveQuickWatchPresentation.TimeLeft.Value = timeLeft_message;
     606                quadraticSieveQuickWatchPresentation.EndTime.Value = endtime_message;
     607                quadraticSieveQuickWatchPresentation.ElapsedTime.Value = timeSpanString(now.Subtract(start_time));
    608608            }, null);
    609609
  • trunk/CrypPlugins/QuadraticSieve/QuadraticSieve.csproj

    r8372 r8394  
    142142      <Private>False</Private>
    143143    </ProjectReference>
     144    <ProjectReference Include="..\..\LibSource\CrypAnalysisViewControl\CrypAnalysisViewControl.csproj">
     145      <Project>{4ab9be96-3e34-40cb-9270-a64480c851ee}</Project>
     146      <Name>CrypAnalysisViewControl</Name>
     147      <Private>False</Private>
     148    </ProjectReference>
    144149  </ItemGroup>
    145150  <ItemGroup>
  • trunk/CrypPlugins/QuadraticSieve/QuadraticSievePresentation.xaml

    r8372 r8394  
    33    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    44    Background="White"
     5    xmlns:crypanalysisviewcontrol="clr-namespace:Cryptool.CrypAnalysisViewControl;assembly=CrypAnalysisViewControl"
    56    Name="Presentation">
    6     <UserControl.Resources>
    7         <RotateTransform x:Key="HeaderRotate" Angle="270" />
    8         <Style x:Key="ValueRow1">
    9             <Setter Property="Label.Margin" Value="80,0,0,0" />
    10         </Style>
    11         <Style x:Key="ValueRow2">
    12             <Setter Property="Label.Margin" Value="80,0,0,0" />
    13         </Style>
    14     </UserControl.Resources>
    15     <Viewbox>
    16         <StackPanel Width="646">
    17            
    18             <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
    19                 <Grid Background="#AFFFD4C1">
    20                     <Grid.ColumnDefinitions>
    21                         <ColumnDefinition Width="26" />
    22                         <ColumnDefinition Width="300*" />
    23                         <ColumnDefinition Width="300*" />
    24                     </Grid.ColumnDefinitions>
    25                     <Grid.RowDefinitions>
    26                         <RowDefinition Height="26" />
    27                         <RowDefinition Height="26" />
    28                     </Grid.RowDefinitions>
    29                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FFE56B00" Grid.Column="0" Grid.RowSpan="2">
    30                         <Label Content="{Loc Time}" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="45" HorizontalContentAlignment="Center" />
    31                     </Border>
    32                     <Label Content="{Loc Start_}" Grid.Column="1" Grid.ColumnSpan="2" Margin="0,0,308,0" />
    33                     <Label Name="startTime" Style="{StaticResource ValueRow1}" Grid.Column="1" Content="-" Margin="100,0,0,0" />
    34                     <Label Content="{Loc End_}" HorizontalAlignment="Left" Grid.Column="2" Margin="1,-2,0,2" />
    35                     <Label Name="endTime" Style="{StaticResource ValueRow2}" Grid.Column="2" Content="-" Margin="100,0,0,0" />
    36                     <Label Content="{Loc Elapsed_}" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Margin="0,0,308,0" />
    37                     <Label Name="elapsedTime" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="1" Content="-" Margin="100,0,0,0" />
    38                     <Label Content="{Loc Remaining_}" Grid.Column="2" Margin="0,25,43,1" Grid.RowSpan="2" />
    39                     <Label Name="timeLeft" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="1" Content="-" Margin="100,0,0,0" />
    40                 </Grid>
    41             </Border>
    427
    43             <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
     8    <crypanalysisviewcontrol:CrypAnalysisViewControl ResultHeaderCaption="{Loc Time}" ResultListCaption="{Loc Factorlist}" ResultProgressCaption="{Loc Progress}">
     9        <crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
     10            <crypanalysisviewcontrol:ViewLabel Caption="{Loc Start_}" x:Name="StartTime" />
     11            <crypanalysisviewcontrol:ViewLabel Caption="{Loc End_}" x:Name="EndTime" />
     12            <crypanalysisviewcontrol:ViewLabel Caption="{Loc Elapsed_}" x:Name="ElapsedTime" />
     13            <crypanalysisviewcontrol:ViewLabel Caption="{Loc Remaining_}" x:Name="TimeLeft" />
     14        </crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
     15
     16        <crypanalysisviewcontrol:CrypAnalysisViewControl.ResultProgressLabels>
     17            <crypanalysisviewcontrol:ViewLabel Caption="{Loc Found_Relations_}" x:Name="FoundRelations" />
     18            <crypanalysisviewcontrol:ViewLabel Caption="{Loc Needed_Relations_}" x:Name="MaxRelations" />
     19            <crypanalysisviewcontrol:ViewLabel Caption="{Loc Cores_used_}" x:Name="CoresUsed" />
     20            <crypanalysisviewcontrol:ViewLabel Caption="{Loc State_}" x:Name="Information" />
     21        </crypanalysisviewcontrol:CrypAnalysisViewControl.ResultProgressLabels>
     22
     23        <crypanalysisviewcontrol:CrypAnalysisViewControl.AdditionalSections>
     24            <crypanalysisviewcontrol:SectionControl SectionHeaderCaption="{Loc Peer2Peer}" x:Name="Peer2PeerSection"
     25                                                    SectionHeaderBackground="#FF099BA7" SectionBackground="#AFAAE1E8">
    4426                <Grid>
    45                     <Grid.ColumnDefinitions>
    46                         <ColumnDefinition Width="26" />
    47                         <ColumnDefinition Width="*" />
    48                     </Grid.ColumnDefinitions>
    49                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF479308" Grid.Column="0">
    50                         <Label Content="{Loc Factorlist}" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="115" HorizontalContentAlignment="Center" />
    51                     </Border>
    52                     <Grid Grid.Column="1">
    53                         <Grid.RowDefinitions>
    54                             <RowDefinition />
    55                             <RowDefinition />
    56                         </Grid.RowDefinitions>
    57                         <Grid.ColumnDefinitions>
    58                             <ColumnDefinition />
    59                         </Grid.ColumnDefinitions>
    60                         <ListBox Grid.Row="0"  Background="#AFE2FFCE" Name="factorList" Height="150" HorizontalAlignment="Stretch"/>
    61                         <Label Grid.Row="1" Background="#AFE2FFCE" Content="" HorizontalAlignment="Stretch" Name="factorInfo" />
    62                     </Grid>                   
    63                 </Grid>
    64             </Border>
    65 
    66             <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
    67                 <Grid Background="#AFE2E2E2">
    68                     <Grid.ColumnDefinitions>
    69                         <ColumnDefinition Width="26" />
    70                         <ColumnDefinition Width="300*" />
    71                         <ColumnDefinition Width="300*" />
    72                     </Grid.ColumnDefinitions>
    73                     <Grid.RowDefinitions>
    74                         <RowDefinition Height="26" />
    75                         <RowDefinition Height="26" />
    76                     </Grid.RowDefinitions>
    77                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF525252" Grid.Column="0" Grid.RowSpan="2">
    78                         <Label Content="{Loc Progress}" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="65" HorizontalContentAlignment="Center" />
    79                     </Border>
    80 
    81                     <Label Content="{Loc Found_Relations_}" Grid.Column="1" Margin="0,-3,125,3" />
    82                     <Label Name="foundRelations" Grid.Column="1" Content="-" Margin="125,-3,4,3" HorizontalAlignment="Left"/>
    83                     <Label Content="{Loc Needed_Relations_}" HorizontalAlignment="Left" Grid.Column="2" Margin="0,-3,0,3" />
    84                     <Label Name="maxRelations" Grid.Column="2" Content="-" Margin="120,-3,0,3"  HorizontalAlignment="Left"/>
    85                     <Label Content="{Loc Cores_used_}" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="1" Margin="0,-3,0,3" />
    86                     <Label Name="coresUsed" Margin="125,-3,3,3" Grid.Column="1" Content="-" Grid.Row="1" HorizontalAlignment="Left" />
    87                     <Label Content="{Loc State_}" HorizontalAlignment="Left" Grid.Column="2" Grid.Row="1" Margin="0,-3,0,3" Grid.ColumnSpan="2" />
    88                     <Label Name="information" Grid.Column="2" Content="-" Margin="45,-3,0,3" Grid.Row="1" HorizontalAlignment="Left"/>
    89                 </Grid>
    90             </Border>
    91 
    92             <Border Name="peer2peer" BorderBrush="Silver" BorderThickness="2,2,2,2">
    93                 <Grid Background="#AFAAE1E8">
    94                     <Grid.ColumnDefinitions>
    95                         <ColumnDefinition Width="26" />
    96                         <ColumnDefinition Width="269*" />
    97                         <ColumnDefinition Width="347*" />
    98                     </Grid.ColumnDefinitions>
    9927                    <Grid.RowDefinitions>
    10028                        <RowDefinition Height="130" />
    101                         <RowDefinition Height="26" />
    102                         <RowDefinition Height="26" />
     29                        <RowDefinition Height="Auto" />
    10330                    </Grid.RowDefinitions>
    104                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF099BA7" Grid.Column="0" Grid.RowSpan="3">
    105                         <Label Content="{Loc Peer2Peer}" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="143" HorizontalContentAlignment="Center" />
    106                     </Border>
    107                    
    108                     <ScrollViewer Name="peer2peerScrollViewer" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" HorizontalScrollBarVisibility="Auto" CanContentScroll="True">
     31                    <ScrollViewer Name="peer2peerScrollViewer" HorizontalScrollBarVisibility="Auto" CanContentScroll="True">
    10932                    </ScrollViewer>
    110                     <Label Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Content="{Loc Local_Sieving_}" Name="localSieving" ClipToBounds="True" FontSize="40" FontStyle="Normal" FontWeight="Bold" FontFamily="Arial" Foreground="Red" VerticalContentAlignment="Center" HorizontalContentAlignment="Stretch" Visibility="Hidden" />
     33                    <Label Content="{Loc Local_Sieving_}" Name="localSieving" ClipToBounds="True" FontSize="40" FontStyle="Normal" FontWeight="Bold" FontFamily="Arial" Foreground="Red" VerticalContentAlignment="Center" HorizontalContentAlignment="Stretch" Visibility="Hidden" />
    11134
    112                     <Label Content="{Loc Downloaded_}" Grid.Column="1" Grid.Row="1" />
    113                     <Label Name="downloaded" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="1" Content="-" Margin="110,0,0,0" />
    114                     <Label Content="{Loc Uploaded_}" HorizontalAlignment="Left" Grid.Column="2" Grid.Row="1" />
    115                     <Label Name="uploaded" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="1" Content="-" Margin="132,0,0,0" />
    116                     <Label Content="{Loc Active_Peers_}" Grid.Column="1" Grid.Row="2" />
    117                     <Label Name="activePeers" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="2" Content="-" Margin="110,0,0,0" />
    118                     <Label Content="{Loc Queue_}" Grid.Column="2" Grid.Row="2" />
    119                     <Label Name="queueInformation" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="2" Content="-" Margin="132,0,0,0" />
     35                    <crypanalysisviewcontrol:SectionViewLabelsControl Grid.Row="1">
     36                        <crypanalysisviewcontrol:ViewLabel Caption="{Loc Downloaded_}" x:Name="Downloaded" />
     37                        <crypanalysisviewcontrol:ViewLabel Caption="{Loc Uploaded_}" x:Name="Uploaded" />
     38                        <crypanalysisviewcontrol:ViewLabel Caption="{Loc Active_Peers_}" x:Name="ActivePeers" />
     39                        <crypanalysisviewcontrol:ViewLabel Caption="{Loc Queue_}" x:Name="QueueInformation" />
     40                    </crypanalysisviewcontrol:SectionViewLabelsControl>
    12041                </Grid>
    121             </Border>
    122            
    123         </StackPanel>
    124     </Viewbox>
     42            </crypanalysisviewcontrol:SectionControl>
     43        </crypanalysisviewcontrol:CrypAnalysisViewControl.AdditionalSections>
     44
     45        <Grid>
     46            <Grid.RowDefinitions>
     47                <RowDefinition />
     48                <RowDefinition />
     49            </Grid.RowDefinitions>
     50            <ListBox Grid.Row="0"  Background="#AFE2FFCE" Name="factorList" Height="150" HorizontalAlignment="Stretch"/>
     51            <Label Grid.Row="1" Background="#AFE2FFCE" Content="" HorizontalAlignment="Stretch" Name="factorInfo" />
     52        </Grid>
     53    </crypanalysisviewcontrol:CrypAnalysisViewControl>
    12554</UserControl>
  • trunk/CrypPlugins/VigenereAnalyzer/AssignmentPresentation.xaml

    r8372 r8394  
    55    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    66    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    7     xmlns:properties="clr-namespace:Cryptool.VigenereAnalyzer.Properties"
     7    xmlns:crypanalysisviewcontrol="clr-namespace:Cryptool.CrypAnalysisViewControl;assembly=CrypAnalysisViewControl"
    88    d:DesignHeight="263">
    99
    10     <UserControl.Resources>
    11         <RotateTransform x:Key="HeaderRotate" Angle="270" />
    12         <Style x:Key="ValueRow1">
    13             <Setter Property="Label.Margin" Value="80,0,0,0" />
    14         </Style>
    15         <Style x:Key="ValueRow2">
    16             <Setter Property="Label.Margin" Value="80,0,0,0" />
    17         </Style>
    18     </UserControl.Resources>
    19     <Viewbox>
    20         <StackPanel Width="646">
    21             <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
    22                 <Grid Height="78" Background="#AFFFD4C1">
    23                     <Grid.ColumnDefinitions>
    24                         <ColumnDefinition Width="26" />
    25                         <ColumnDefinition Width="200*" />
    26                         <ColumnDefinition Width="200*" />
    27                     </Grid.ColumnDefinitions>
    28                     <Grid.RowDefinitions>
    29                         <RowDefinition Height="26" />
    30                         <RowDefinition Height="26" />
    31                         <RowDefinition Height="26" />
    32                     </Grid.RowDefinitions>
    33                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FFE56B00" Grid.Column="0" Grid.RowSpan="3">
    34                         <Label Name="localLabel" Content="{Loc LocalLabel}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
    35                     </Border>
    36                     <Label Name="startLabel" Content="{Loc StartLabel}" Grid.Column="1" />
    37                     <Label Name="startTime" Style="{StaticResource ValueRow1}" Grid.Column="1" Margin="120,0,0,0" />
    38                     <Label Name="endLabel" Content="{Loc EndLabel}" HorizontalAlignment="Left" Grid.Column="2" />
    39                     <Label Name="speedLabel" Content="{Loc SpeedLabel}" HorizontalAlignment="Left" Grid.Column="2" Grid.Row="1" />
    40                     <Label Name="endTime" Style="{StaticResource ValueRow2}" Grid.Column="2" Margin="120,0,0,0"/>
    41                     <Label Name="elapsedLabel" Content="{Loc ElapsedLabel}" Grid.Column="1" Grid.Row="1" />
    42                     <Label Name="elapsedTime" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="1" Margin="120,0,0,0" />
    43                     <Label Name="timeLeft" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="1" Margin="120,0,0,0" />
    44                     <Label Content="{Loc CurrentAnalysedKeylengthLabel}" Grid.Column="2" Grid.Row="2"/>
    45                     <Label Name="currentSpeed" Style="{StaticResource ValueRow2}" Margin="120,0,0,0" Grid.Column="2" Grid.Row="1" />
    46                     <Label Name="currentAnalysedKeylength" Style="{StaticResource ValueRow2}" Margin="230,0,0,0" Grid.Column="2" Grid.Row="2" />
    47                 </Grid>
    48             </Border>
    49             <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
    50                 <Grid>
    51                     <Grid.ColumnDefinitions>
    52                         <ColumnDefinition Width="26" />
    53                         <ColumnDefinition Width="*" />
    54                     </Grid.ColumnDefinitions>
    55                     <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF479308" Grid.Column="0">
    56                         <Label Name="topTenLabel" Content="{Loc TopTenLabel}" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="100" />
    57                     </Border>
    58                     <ListView Name="ListView" Background="#AFE2FFCE" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" FontSize="10" Grid.Column="1" Height="250">
     10    <crypanalysisviewcontrol:CrypAnalysisViewControl ResultHeaderCaption="{Loc LocalLabel}" ResultListCaption="{Loc TopTenLabel}">
     11        <crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
     12            <crypanalysisviewcontrol:ViewLabel Caption="{Loc StartLabel}" x:Name="StartTime" />
     13            <crypanalysisviewcontrol:ViewLabel Caption="{Loc EndLabel}" x:Name="EndTime" />
     14            <crypanalysisviewcontrol:ViewLabel Caption="{Loc ElapsedLabel}" x:Name="ElapsedTime" />
     15            <crypanalysisviewcontrol:ViewLabel Caption="{Loc SpeedLabel}" x:Name="CurrentSpeed" />
     16            <!--Empty for layouting purposes:-->
     17            <crypanalysisviewcontrol:ViewLabel />
     18            <crypanalysisviewcontrol:ViewLabel Caption="{Loc CurrentAnalysedKeylengthLabel}" x:Name="CurrentAnalysedKeylength" />
     19        </crypanalysisviewcontrol:CrypAnalysisViewControl.ResultHeaderLabels>
    5920
    60                         <ListView.Resources>
    61                             <ContextMenu x:Key="ItemContextMenu">
    62                                 <MenuItem Header="{x:Static properties:Resources.Copy_value}" Tag="copy_value" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    63                                 <MenuItem Header="{x:Static properties:Resources.Copy_key}" Tag="copy_key" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    64                                 <MenuItem Header="{x:Static properties:Resources.Copy_text}" Tag="copy_text" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    65                                 <MenuItem Header="{x:Static properties:Resources.Copy_line}" Tag="copy_line" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    66                                 <MenuItem Header="{x:Static properties:Resources.Copy_all}" Tag="copy_all" CommandParameter="{Binding}" Click="ContextMenuHandler" />
    67                             </ContextMenu>
    68                         </ListView.Resources>
    69 
    70                         <ListView.ItemContainerStyle>
    71                             <Style TargetType="{x:Type ListViewItem}">
    72                                 <EventSetter Event= "MouseDoubleClick" Handler="HandleDoubleClick" />
    73                                 <Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}"/>
    74                             </Style>
    75                         </ListView.ItemContainerStyle>
    76 
    77                         <ListView.View>
    78                             <GridView>
    79                                 <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
    80                                     <GridViewColumn.CellTemplate>
    81                                         <DataTemplate>
    82                                             <Label/>
    83                                         </DataTemplate>
    84                                     </GridViewColumn.CellTemplate>
    85                                 </GridViewColumn>
    86                                 <GridViewColumn Header="{Loc ValueHeader}" DisplayMemberBinding="{Binding Path=ExactValue}" Width="100">
    87                                     <GridViewColumn.CellTemplate>
    88                                         <DataTemplate>
    89                                             <Label/>
    90                                         </DataTemplate>
    91                                     </GridViewColumn.CellTemplate>
    92                                 </GridViewColumn>                               
    93                                 <GridViewColumn Header="{Loc KeyHeader}" DisplayMemberBinding="{Binding Path=Key}" Width="150">
    94                                     <GridViewColumn.CellTemplate>
    95                                         <DataTemplate>
    96                                             <Label/>
    97                                         </DataTemplate>
    98                                     </GridViewColumn.CellTemplate>
    99                                 </GridViewColumn>
    100                                 <GridViewColumn Header="{Loc KeyLengthHeader}" DisplayMemberBinding="{Binding Path=KeyLength}" Width="80">
    101                                     <GridViewColumn.CellTemplate>
    102                                         <DataTemplate>
    103                                             <Label/>
    104                                         </DataTemplate>
    105                                     </GridViewColumn.CellTemplate>
    106                                 </GridViewColumn>
    107                                 <GridViewColumn Header="{Loc TextHeader}" DisplayMemberBinding="{Binding Path=Text}" Width="300">
    108                                     <GridViewColumn.CellTemplate>
    109                                         <DataTemplate>
    110                                             <Label/>
    111                                         </DataTemplate>
    112                                     </GridViewColumn.CellTemplate>
    113                                 </GridViewColumn>
    114                             </GridView>
    115                         </ListView.View>
    116                     </ListView>
    117                 </Grid>
    118             </Border>
    119         </StackPanel>
    120     </Viewbox>
     21        <crypanalysisviewcontrol:CrypAnalysisResultListView ItemsSource="{Binding}" ResultItemAction="HandleResultItemAction">
     22            <crypanalysisviewcontrol:CrypAnalysisResultListView.View>
     23                <GridView>
     24                    <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
     25                        <GridViewColumn.CellTemplate>
     26                            <DataTemplate>
     27                                <Label/>
     28                            </DataTemplate>
     29                        </GridViewColumn.CellTemplate>
     30                    </GridViewColumn>
     31                    <GridViewColumn Header="{Loc ValueHeader}" DisplayMemberBinding="{Binding Path=ExactValue}" Width="100">
     32                        <GridViewColumn.CellTemplate>
     33                            <DataTemplate>
     34                                <Label/>
     35                            </DataTemplate>
     36                        </GridViewColumn.CellTemplate>
     37                    </GridViewColumn>
     38                    <GridViewColumn Header="{Loc KeyHeader}" DisplayMemberBinding="{Binding Path=Key}" Width="150">
     39                        <GridViewColumn.CellTemplate>
     40                            <DataTemplate>
     41                                <Label/>
     42                            </DataTemplate>
     43                        </GridViewColumn.CellTemplate>
     44                    </GridViewColumn>
     45                    <GridViewColumn Header="{Loc KeyLengthHeader}" DisplayMemberBinding="{Binding Path=KeyLength}" Width="80">
     46                        <GridViewColumn.CellTemplate>
     47                            <DataTemplate>
     48                                <Label/>
     49                            </DataTemplate>
     50                        </GridViewColumn.CellTemplate>
     51                    </GridViewColumn>
     52                    <GridViewColumn Header="{Loc TextHeader}" DisplayMemberBinding="{Binding Path=Text}" Width="300">
     53                        <GridViewColumn.CellTemplate>
     54                            <DataTemplate>
     55                                <Label/>
     56                            </DataTemplate>
     57                        </GridViewColumn.CellTemplate>
     58                    </GridViewColumn>
     59                </GridView>
     60            </crypanalysisviewcontrol:CrypAnalysisResultListView.View>
     61        </crypanalysisviewcontrol:CrypAnalysisResultListView>
     62    </crypanalysisviewcontrol:CrypAnalysisViewControl>
    12163</UserControl>
  • trunk/CrypPlugins/VigenereAnalyzer/AssignmentPresentation.xaml.cs

    r8372 r8394  
    2222using System.Windows.Threading;
    2323using System.Threading;
     24using Cryptool.CrypAnalysisViewControl;
    2425
    2526namespace Cryptool.VigenereAnalyzer
     
    3233    {
    3334
    34         public ObservableCollection<ResultEntry> BestList = new ObservableCollection<ResultEntry>();
     35        public ObservableCollection<ResultEntry> BestList { get; } = new ObservableCollection<ResultEntry>();
    3536        //public event EventHandler doppelClick;
    3637
     
    6768            Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    6869            {
    69                 ListView.IsEnabled = false;
     70                IsEnabled = false;
    7071            }, null);
    7172        }
     
    7576            Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    7677            {
    77                 ListView.IsEnabled = true;
     78                IsEnabled = true;
    7879            }, null);
    7980        }
     
    8384        #region Helper Methods
    8485
    85         public void HandleDoubleClick(Object sender, EventArgs eventArgs)
     86        private void HandleResultItemAction(ICrypAnalysisResultListEntry item)
    8687        {
    87             var lvi = sender as ListViewItem;
    88             var r = lvi.Content as ResultEntry;
    89 
    90             if (r != null)
     88            if (item is ResultEntry resultItem)
    9189            {
    92                 _updateOutputFromUserChoice(r.Key, r.Text);
     90                _updateOutputFromUserChoice(resultItem.Key, resultItem.Text);
    9391            }
    9492        }
     
    9997        }
    10098
    101         // Strings with nul characters are not displayed correctly in the clipboard
    102         string removeNuls(string s)
    103         {
    104             return s.Replace(Convert.ToChar(0x0).ToString(), "");
    105         }
    106 
    107         string entryToText(ResultEntry entry)
    108         {
    109             return "Rank: " + entry.Ranking + Environment.NewLine +
    110                    "Value: " + entry.ExactValue + Environment.NewLine +
    111                    "Key: " + entry.Key + Environment.NewLine +
    112                    "KeyLength: " + entry.KeyLength + Environment.NewLine +
    113                    "Text: " + removeNuls(entry.Text);
    114         }
    115 
    116         public void ContextMenuHandler(Object sender, EventArgs eventArgs)
    117         {
    118             try
    119             {
    120                 MenuItem menu = (MenuItem)((RoutedEventArgs)eventArgs).Source;
    121                 ResultEntry entry = (ResultEntry)menu.CommandParameter;
    122                 if (entry == null) return;
    123                 string tag = (string)menu.Tag;
    124 
    125                 if (tag == "copy_text")
    126                 {
    127                     Clipboard.SetText(removeNuls(entry.Text));
    128                 }
    129                 else if (tag == "copy_value")
    130                 {
    131                     Clipboard.SetText("" + entry.Value);
    132                 }
    133                 else if (tag == "copy_key")
    134                 {
    135                     Clipboard.SetText(entry.Key);
    136                 }
    137                 else if (tag == "copy_line")
    138                 {
    139                     Clipboard.SetText(entryToText(entry));
    140                 }
    141                 else if (tag == "copy_all")
    142                 {
    143                     List<string> lines = new List<string>();
    144                     foreach (var e in BestList) lines.Add(entryToText(e));
    145                     Clipboard.SetText(String.Join(Environment.NewLine, lines));
    146                 }
    147             }
    148             catch (Exception ex)
    149             {
    150                 Clipboard.SetText("");
    151             }
    152         }
    153 
    15499        #endregion
    155100    }
  • trunk/CrypPlugins/VigenereAnalyzer/VigenereAnalyzer.cs

    r8372 r8394  
    3030using Cryptool.PluginBase.Attributes;
    3131using Cryptool.PluginBase.Utils;
     32using Cryptool.CrypAnalysisViewControl;
    3233
    3334namespace Cryptool.VigenereAnalyzer
     
    338339            {
    339340                _startTime = DateTime.Now;
    340                 ((AssignmentPresentation)Presentation).startTime.Content = "" + _startTime;
    341                 ((AssignmentPresentation)Presentation).endTime.Content = "";
    342                 ((AssignmentPresentation)Presentation).elapsedTime.Content = "";
     341                ((AssignmentPresentation)Presentation).StartTime.Value = "" + _startTime;
     342                ((AssignmentPresentation)Presentation).EndTime.Value = "";
     343                ((AssignmentPresentation)Presentation).ElapsedTime.Value = "";
    343344            }, null);
    344345        }
     
    354355                var elapsedtime = _endTime.Subtract(_startTime);
    355356                var elapsedspan = new TimeSpan(elapsedtime.Days, elapsedtime.Hours, elapsedtime.Minutes, elapsedtime.Seconds, 0);
    356                 ((AssignmentPresentation)Presentation).endTime.Content = "" + _endTime;
    357                 ((AssignmentPresentation)Presentation).elapsedTime.Content = "" + elapsedspan;
    358                 ((AssignmentPresentation)Presentation).currentAnalysedKeylength.Content = "" + keylength;
     357                ((AssignmentPresentation)Presentation).EndTime.Value = "" + _endTime;
     358                ((AssignmentPresentation)Presentation).ElapsedTime.Value = "" + elapsedspan;
     359                ((AssignmentPresentation)Presentation).CurrentAnalysedKeylength.Value = "" + keylength;
    359360
    360361            }, null);
     
    510511                                    try
    511512                                    {
    512                                         _presentation.currentSpeed.Content = string.Format("{0:0,0}", keysDispatcher);
     513                                        _presentation.CurrentSpeed.Value = string.Format("{0:0,0}", keysDispatcher);
    513514                                    }
    514515                                    // ReSharper disable once EmptyGeneralCatchClause
     
    551552                try
    552553                {
    553                     _presentation.currentSpeed.Content = string.Format("{0:0,0}", Math.Round(keysDispatcher2 * 1000 / (DateTime.Now - lasttimeDispatcher2).TotalMilliseconds, 0));
     554                    _presentation.CurrentSpeed.Value = string.Format("{0:0,0}", Math.Round(keysDispatcher2 * 1000 / (DateTime.Now - lasttimeDispatcher2).TotalMilliseconds, 0));
    554555                }
    555556                // ReSharper disable once EmptyGeneralCatchClause
     
    600601                        return;
    601602                    }
    602                     _presentation.BestList.Add(entry);
    603                     _presentation.BestList = new ObservableCollection<ResultEntry>(_presentation.BestList.OrderByDescending(i => i.Value));
     603                    //Insert new entry at correct place to sustain order of list:
     604                    var insertIndex = _presentation.BestList.TakeWhile(e => e.Value > entry.Value).Count();
     605                    _presentation.BestList.Insert(insertIndex, entry);
     606
    604607                    if (_presentation.BestList.Count > MaxBestListEntries)
    605608                    {
     
    612615                        ranking++;
    613616                    }
    614                     _presentation.ListView.DataContext = _presentation.BestList;
    615617                }
    616618                // ReSharper disable once EmptyGeneralCatchClause
     
    804806    }
    805807
    806     public class ResultEntry
     808    public class ResultEntry : ICrypAnalysisResultListEntry
    807809    {
    808         public int Ranking { get; set; }       
     810        public int Ranking { get; set; }
    809811        public double Value { get; set; }
    810812        public string Key { get; set; }
    811813        public string Text { get; set; }
     814
     815        public string ClipboardValue => ExactValue.ToString();
     816        public string ClipboardKey => Key;
     817        public string ClipboardText => Text;
     818        public string ClipboardEntry =>
     819            "Rank: " + Ranking + Environment.NewLine +
     820            "Value: " + ExactValue + Environment.NewLine +
     821            "Key: " + Key + Environment.NewLine +
     822            "KeyLength: " + KeyLength + Environment.NewLine +
     823            "Text: " + Text;
    812824
    813825        public double ExactValue
  • trunk/CrypPlugins/VigenereAnalyzer/VigenereAnalyzer.csproj

    r8372 r8394  
    165165      <Private>False</Private>
    166166    </ProjectReference>
     167    <ProjectReference Include="..\..\LibSource\CrypAnalysisViewControl\CrypAnalysisViewControl.csproj">
     168      <Project>{4ab9be96-3e34-40cb-9270-a64480c851ee}</Project>
     169      <Name>CrypAnalysisViewControl</Name>
     170      <Private>False</Private>
     171    </ProjectReference>
    167172  </ItemGroup>
    168173  <ItemGroup>
  • trunk/CrypTool 2.sln

    r8384 r8394  
    506506EndProject
    507507Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlindSignatureGenerator", "CrypPlugins\BlindSignatureGenerator\BlindSignatureGenerator.csproj", "{A965E0DF-B2E6-4A79-8841-ACD415CA0D93}"
     508EndProject
     509Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrypAnalysisViewControl", "LibSource\CrypAnalysisViewControl\CrypAnalysisViewControl.csproj", "{4AB9BE96-3E34-40CB-9270-A64480C851EE}"
    508510EndProject
    509511Global
     
    34563458                {A965E0DF-B2E6-4A79-8841-ACD415CA0D93}.Test|x86.ActiveCfg = Debug|x86
    34573459                {A965E0DF-B2E6-4A79-8841-ACD415CA0D93}.Test|x86.Build.0 = Debug|x86
     3460                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Debug|x64.ActiveCfg = Debug|x64
     3461                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Debug|x64.Build.0 = Debug|x64
     3462                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Debug|x86.ActiveCfg = Debug|x86
     3463                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Debug|x86.Build.0 = Debug|x86
     3464                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Release|x64.ActiveCfg = Release|x64
     3465                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Release|x64.Build.0 = Release|x64
     3466                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Release|x86.ActiveCfg = Release|x86
     3467                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Release|x86.Build.0 = Release|x86
     3468                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Test|x64.ActiveCfg = Release|x64
     3469                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Test|x64.Build.0 = Release|x64
     3470                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Test|x86.ActiveCfg = Release|x86
     3471                {4AB9BE96-3E34-40CB-9270-A64480C851EE}.Test|x86.Build.0 = Release|x86
    34583472        EndGlobalSection
    34593473        GlobalSection(SolutionProperties) = preSolution
     
    36983712                {E86CE9A5-BBF2-48E3-80F1-80BD935670EF} = {88B851F6-9E3D-484F-A317-ECED5B98C618}
    36993713                {A965E0DF-B2E6-4A79-8841-ACD415CA0D93} = {88B851F6-9E3D-484F-A317-ECED5B98C618}
     3714                {4AB9BE96-3E34-40CB-9270-A64480C851EE} = {1E472920-3A9C-413A-98B2-8372F0E283C5}
    37003715        EndGlobalSection
    37013716        GlobalSection(ExtensibilityGlobals) = postSolution
Note: See TracChangeset for help on using the changeset viewer.