Changeset 1705


Ignore:
Timestamp:
Jun 26, 2010, 5:48:36 PM (11 years ago)
Author:
Paul Lelgemann
Message:

o KeySearcher: improved visualization of local and distributed components

Location:
trunk/CrypPlugins/KeySearcher
Files:
12 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/Converter/DateTimeConverter.cs

    r1704 r1705  
    44using System.Windows.Data;
    55
    6 namespace Cryptool.P2PEditor.Converters
     6namespace KeySearcherConverter
    77{
    88    public class DateTimeConverter : IValueConverter
     
    1010        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    1111        {
     12            if (value == null)
     13            {
     14                return "-";
     15            }
     16
    1217            return ((DateTime)value).ToString("g", Thread.CurrentThread.CurrentCulture);
    1318        }
  • trunk/CrypPlugins/KeySearcher/Converter/LongToSizeMetricString.cs

    r1704 r1705  
    99        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    1010        {
    11             var bytes = (long)value;
     11            var bytes = (long) value;
    1212            const long scale = 1024;
    1313            var orders = new[] { "EiB", "PiB", "TiB", "GiB", "MiB", "KiB", "Bytes" };
    14             var max = (long)Math.Pow(scale, (orders.Length - 1));
     14            var max = (long) Math.Pow(scale, (orders.Length - 1));
    1515
    1616            foreach (var order in orders)
  • trunk/CrypPlugins/KeySearcher/Converter/TimeSpanConverter.cs

    r1704 r1705  
    11using System;
    22using System.Globalization;
    3 using System.Threading;
    43using System.Windows.Data;
    54
    6 namespace Cryptool.P2PEditor.Converters
     5namespace KeySearcherConverter
    76{
    8     public class DateTimeConverter : IValueConverter
     7    public class TimeSpanConverter : IValueConverter
    98    {
    109        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    1110        {
    12             return ((DateTime)value).ToString("g", Thread.CurrentThread.CurrentCulture);
     11            if (value == null)
     12            {
     13                return "-";
     14            }
     15
     16            var timeSpan = (TimeSpan) value;
     17
     18            if (timeSpan == new TimeSpan(-1))
     19                return "~";
     20
     21            if (timeSpan.Days > 0)
     22                return string.Format("{0:D2} days, {1:D2}:{2:D2}:{3:D2}", timeSpan.Days, timeSpan.Hours,
     23                                     timeSpan.Minutes, timeSpan.Seconds);
     24
     25            return string.Format("{0:D2}:{1:D2}:{2:D2}", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
    1326        }
    1427
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r1698 r1705  
    11using System;
     2using System.Diagnostics;
    23using System.Linq;
    34using System.Text;
     
    4142        private readonly LocalQuickWatchPresentation localQuickWatchPresentation;
    4243
     44        private readonly Stopwatch localBruteForceStopwatch;
     45
    4346        private KeyPattern.KeyPattern pattern;
    4447        public KeyPattern.KeyPattern Pattern
     
    219222
    220223            settings.PropertyChanged += SettingsPropertyChanged;
     224
     225            localBruteForceStopwatch = new Stopwatch();
    221226        }
    222227
     
    679684        internal LinkedList<ValueKey> BruteForceWithLocalSystem(KeyPattern.KeyPattern pattern, bool redirectResultsToStatisticsGenerator = false)
    680685        {
     686            if (!redirectResultsToStatisticsGenerator)
     687            {
     688                localQuickWatchPresentation.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(SetStartDate));
     689                localBruteForceStopwatch.Start();
     690            }
     691
    681692            BigInteger size = pattern.size();
    682693            KeyPattern.KeyPattern[] patterns = splitPatternForThreads(pattern);
     
    786797        }
    787798
     799        private void SetStartDate()
     800        {
     801            localQuickWatchPresentation.startTime.Content = DateTime.Now.ToString("g", Thread.CurrentThread.CurrentCulture); ;
     802        }
     803
    788804        internal void showProgress(LinkedList<ValueKey> costList, BigInteger size, BigInteger keycounter, BigInteger doneKeys)
    789805        {
     
    820836                localQuickWatchPresentation.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    821837                {
    822                     localQuickWatchPresentation.keysPerSecond.Text = "" + doneKeys;
     838                    localQuickWatchPresentation.elapsedTime.Content = localBruteForceStopwatch.Elapsed;
     839
     840                    localQuickWatchPresentation.keysPerSecond.Content = "" + doneKeys;
    823841                    if (timeleft != new TimeSpan(-1))
    824842                    {
    825                         localQuickWatchPresentation.timeLeft.Text = "" + timeleft;
     843                        localQuickWatchPresentation.timeLeft.Content = "" + timeleft;
    826844                        try
    827845                        {
    828                             localQuickWatchPresentation.endTime.Text = "" + DateTime.Now.Add(timeleft);
     846                            localQuickWatchPresentation.endTime.Content = "" + DateTime.Now.Add(timeleft);
    829847                        }
    830848                        catch
    831849                        {
    832                             localQuickWatchPresentation.endTime.Text = "in a galaxy far, far away...";
     850                            localQuickWatchPresentation.endTime.Content = "in a galaxy far, far away...";
    833851                        }
    834852                    }
    835853                    else
    836854                    {
    837                         localQuickWatchPresentation.timeLeft.Text = "incalculable :-)";
    838                         localQuickWatchPresentation.endTime.Text = "in a galaxy far, far away...";
     855                        localQuickWatchPresentation.timeLeft.Content = "incalculable :-)";
     856                        localQuickWatchPresentation.endTime.Content = "in a galaxy far, far away...";
    839857                    }
    840858
  • trunk/CrypPlugins/KeySearcher/KeySearcher.csproj

    r1704 r1705  
    103103  </ItemGroup>
    104104  <ItemGroup>
     105    <Compile Include="Converter\TimeSpanConverter.cs" />
     106    <Compile Include="Converter\DateTimeConverter.cs" />
    105107    <Compile Include="Converter\LongToSizeMetricString.cs" />
    106108    <Compile Include="Converter\TimeSpanToRoundedStringConverter.cs" />
  • trunk/CrypPlugins/KeySearcher/P2P/DistributedBruteForceManager.cs

    r1703 r1705  
    22using System.Diagnostics;
    33using System.Numerics;
     4using System.Threading;
    45using System.Windows.Threading;
    56using Cryptool.PluginBase;
     
    4849            quickWatch.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(UpdateStatusContainerInQuickWatch));
    4950
     51            status.CurrentOperation = "Initializing distributed key pool tree";
    5052            keyPoolTree = new KeyPoolTree(patternPool, this.keySearcher, keyQualityHelper, keyGenerator, status, StatisticsGenerator);
    5153           
     
    5355                "Total amount of patterns: " + patternPool.Length + ", each containing " + patternPool.PartSize +
    5456                " keys.", NotificationLevel.Info);
     57            status.CurrentOperation = "Ready for calculation";
    5558        }
    5659
    5760        public void Execute()
    5861        {
     62            status.StartDate = keyPoolTree.StartDate();
     63
    5964            Leaf currentLeaf;
    6065            while (!keySearcher.stop)
     
    6469                try
    6570                {
     71                    status.CurrentOperation = "Finding next leaf to calculate";
    6672                    currentLeaf = keyPoolTree.FindNextLeaf();
    6773                    if (currentLeaf == null)
     
    7783                }
    7884
     85                status.CurrentOperation = "Calculating global statistics";
    7986                StatisticsGenerator.CalculateGlobalStatistics(currentLeaf.PatternId());
    8087                if (!currentLeaf.ReserveLeaf())
     
    9299                    NotificationLevel.Info);
    93100                status.CurrentChunk = currentLeaf.PatternId() + 1;
     101                status.CurrentOperation = "Calculating pattern " + status.CurrentChunk;
    94102
    95103                try
     
    103111                    if (!keySearcher.stop)
    104112                    {
     113                        status.CurrentOperation = "Processing results of calculation";
    105114                        KeyPoolTree.ProcessCurrentPatternCalculationResult(currentLeaf, result);
    106115                        StatisticsGenerator.ProcessPatternResults(result);
     
    110119                            string.Format("Best match: {0} with {1}", result.First.Value.key, result.First.Value.value),
    111120                            NotificationLevel.Info);
    112                         keySearcher.GuiLogMessage(
    113                             string.Format("Bytes send: {0}, bytes received {1}", status.StoredBytes, status.RetrievedBytes),
    114                             NotificationLevel.Debug);
    115121                    }
    116122                    else
     
    148154            status.IsSearchingForReservedNodes = false;
    149155            status.IsCurrentProgressIndeterminate = false;
     156            status.CurrentOperation = "Idle";
    150157        }
    151158
  • trunk/CrypPlugins/KeySearcher/P2P/Presentation/StatisticsGenerator.cs

    r1704 r1705  
    116116            try
    117117            {
    118                 status.EstimatedFinishDate = DateTime.Now.AddSeconds(secondsRemaining).ToString("dd.MM. HH:mm");
     118                var estimatedFinishDate = DateTime.Now.AddSeconds(secondsRemaining);
     119                status.EstimatedFinishDate = estimatedFinishDate.ToString("g", Thread.CurrentThread.CurrentCulture);
     120                status.RemainingTimeTotal = estimatedFinishDate.Subtract(DateTime.Now);
    119121            }
    120122            catch (ArgumentOutOfRangeException)
    121123            {
    122124                status.EstimatedFinishDate = "~";
    123             }
     125                status.RemainingTimeTotal = new TimeSpan(-1);
     126            }
     127
     128            status.ElapsedTime = DateTime.Now.Subtract(status.StartDate);
    124129
    125130            lastDateOfGlobalStatistics = DateTime.Now;
     
    163168            }
    164169
    165             if (timeleft != new TimeSpan(-1))
    166             {
    167                 status.RemainingTime = timeleft.ToString();
    168             }
    169             else
    170             {
    171                 status.RemainingTime = "~";
    172             }
     170            status.RemainingTime = timeleft;
    173171
    174172            ProcessResultList(bestResultList);
  • trunk/CrypPlugins/KeySearcher/P2P/Presentation/StatusContainer.cs

    r1704 r1705  
    88    public class StatusContainer : INotifyPropertyChanged
    99    {
     10        private string currentOperation;
     11        public string CurrentOperation
     12        {
     13            get { return currentOperation; }
     14            set
     15            {
     16                currentOperation = "> " + value + " <";
     17                OnPropertyChanged("CurrentOperation");
     18            }
     19        }
     20
    1021        private BigInteger localFinishedChunks;
    1122        public BigInteger LocalFinishedChunks
     
    6374        }
    6475
    65         private string remainingTime;
    66         public string RemainingTime
     76        private DateTime startDate;
     77        public DateTime StartDate
     78        {
     79            get { return startDate; }
     80            set
     81            {
     82                startDate = value;
     83                OnPropertyChanged("StartDate");
     84            }
     85        }
     86
     87        private TimeSpan elapsedTime;
     88        public TimeSpan ElapsedTime
     89        {
     90            get { return elapsedTime; }
     91            set
     92            {
     93                elapsedTime = value;
     94                OnPropertyChanged("ElapsedTime");
     95            }
     96        }
     97
     98        private TimeSpan remainingTime;
     99        public TimeSpan RemainingTime
    67100        {
    68101            get { return remainingTime; }
     
    74107        }
    75108
     109        private TimeSpan remainingTimeTotal;
     110        public TimeSpan RemainingTimeTotal
     111        {
     112            get { return remainingTimeTotal; }
     113            set
     114            {
     115                remainingTimeTotal = value;
     116                OnPropertyChanged("RemainingTimeTotal");
     117            }
     118        }
     119
    76120        private BigInteger totalAmountOfParticipants;
    77121        public BigInteger TotalAmountOfParticipants
     
    183227                isSearchingForReservedNodes = value;
    184228                OnPropertyChanged("IsSearchingForReservedNodes");
     229            }
     230        }
     231
     232        private long storedBytes;
     233        public long StoredBytes
     234        {
     235            get { return storedBytes; }
     236            set
     237            {
     238                storedBytes = value;
     239                OnPropertyChanged("StoredBytes");
     240            }
     241        }
     242
     243        private long retrievedBytes;
     244        public long RetrievedBytes
     245        {
     246            get { return retrievedBytes; }
     247            set
     248            {
     249                retrievedBytes = value;
     250                OnPropertyChanged("RetrievedBytes");
     251            }
     252        }
     253
     254        private long totalBytes;
     255        public long TotalBytes
     256        {
     257            get { return totalBytes; }
     258            set
     259            {
     260                totalBytes = value;
     261                OnPropertyChanged("TotalBytes");
     262            }
     263        }
     264
     265        private long sentBytesByLinkManager;
     266        public long SentBytesByLinkManager
     267        {
     268            get { return sentBytesByLinkManager; }
     269            set
     270            {
     271                sentBytesByLinkManager = value;
     272                OnPropertyChanged("SentBytesByLinkManager");
     273            }
     274        }
     275
     276        private long receivedBytesByLinkManager;
     277        public long ReceivedBytesByLinkManager
     278        {
     279            get { return receivedBytesByLinkManager; }
     280            set
     281            {
     282                receivedBytesByLinkManager = value;
     283                OnPropertyChanged("ReceivedBytesByLinkManager");
     284            }
     285        }
     286
     287        private long totalBytesByLinkManager;
     288        public long TotalBytesByLinkManager
     289        {
     290            get { return totalBytesByLinkManager; }
     291            set
     292            {
     293                totalBytesByLinkManager = value;
     294                OnPropertyChanged("TotalBytesByLinkManager");
    185295            }
    186296        }
     
    192302            TopList = new ObservableCollection<ResultEntry>();
    193303            TotalAmountOfParticipants = 1;
    194             IsSearchingForReservedNodes = false;
    195         }
    196 
    197         private long storedBytes;
    198         public long StoredBytes
    199         {
    200             get { return storedBytes; }
    201             set
    202             {
    203                 storedBytes = value;
    204                 OnPropertyChanged("StoredBytes");
    205             }
    206         }
    207 
    208         private long retrievedBytes;
    209         public long RetrievedBytes
    210         {
    211             get { return retrievedBytes; }
    212             set
    213             {
    214                 retrievedBytes = value;
    215                 OnPropertyChanged("RetrievedBytes");
    216             }
    217         }
    218 
    219         private long sentBytesByLinkManager;
    220         public long SentBytesByLinkManager
    221         {
    222             get { return sentBytesByLinkManager; }
    223             set
    224             {
    225                 sentBytesByLinkManager = value;
    226                 OnPropertyChanged("SentBytesByLinkManager");
    227             }
    228         }
    229 
    230         private long receivedBytesByLinkManager;
    231         public long ReceivedBytesByLinkManager
    232         {
    233             get { return receivedBytesByLinkManager; }
    234             set
    235             {
    236                 receivedBytesByLinkManager = value;
    237                 OnPropertyChanged("ReceivedBytesByLinkManager");
    238             }
     304            CurrentOperation = "Idle";
    239305        }
    240306
  • trunk/CrypPlugins/KeySearcher/P2P/Storage/StorageHelper.cs

    r1703 r1705  
    129129        }
    130130
     131        public DateTime StartDate(String ofJobIdentifier)
     132        {
     133            var key = ofJobIdentifier + "_startdate";
     134            var requestResult = RetrieveWithStatistic(key);
     135
     136            if (requestResult.IsSuccessful() && requestResult.Data != null)
     137            {
     138                var startTimeUtc = DateTime.SpecifyKind(
     139                    DateTime.FromBinary(BitConverter.ToInt64(requestResult.Data, 0)), DateTimeKind.Utc);
     140                return startTimeUtc.ToLocalTime();
     141            }
     142
     143            StoreWithStatistic(key, BitConverter.GetBytes((DateTime.UtcNow.ToBinary())));
     144            return DateTime.Now;
     145        }
     146
    131147        public RequestResult RetrieveWithStatistic(string key)
    132148        {
     
    138154            {
    139155                statusContainer.RetrievedBytes += requestResult.Data.Length;
     156                statusContainer.TotalBytes += requestResult.Data.Length;
    140157            }
    141158
     
    159176            {
    160177                statusContainer.StoredBytes += requestResult.Data.Length;
     178                statusContainer.TotalBytes += requestResult.Data.Length;
    161179            }
    162180
  • trunk/CrypPlugins/KeySearcher/P2P/Tree/KeyPoolTree.cs

    r1703 r1705  
    1 using System.Collections.Generic;
     1using System;
     2using System.Collections.Generic;
    23using Cryptool.PluginBase;
    34using KeySearcher.Helper;
     
    1617        private readonly NodeBase rootNode;
    1718        private readonly StorageHelper storageHelper;
     19        private readonly string identifier;
    1820
    1921        private NodeBase currentNode;
     
    2628            this.statusContainer = statusContainer;
    2729            this.statisticsGenerator = statisticsGenerator;
     30            identifier = identifierGenerator.Generate();
    2831
    2932            storageHelper = new StorageHelper(keySearcher, statisticsGenerator, statusContainer);
     
    3134
    3235            rootNode = NodeFactory.CreateNode(storageHelper, keyQualityHelper, null, 0, this.patternPool.Length - 1,
    33                                               identifierGenerator.Generate());
     36                                              identifier);
    3437            currentNode = rootNode;
     38        }
     39
     40        public DateTime StartDate()
     41        {
     42            return storageHelper.StartDate(identifier);
    3543        }
    3644
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/LocalQuickWatchPresentation.xaml

    r1682 r1705  
    11<UserControl x:Class="KeySearcherPresentation.Controls.LocalQuickWatchPresentation"
    22    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4     HorizontalAlignment="Stretch"
    5     VerticalAlignment="Stretch"
    6     Background="White">
    7     <Canvas>
    8     <Grid>
    9             <Grid.RowDefinitions>
    10                 <RowDefinition Height="80"/>
    11                 <RowDefinition Height="*"/>
    12             </Grid.RowDefinitions>
    13             <Grid.ColumnDefinitions>
    14                 <ColumnDefinition/>
    15             </Grid.ColumnDefinitions>
    16        
    17             <Canvas>
    18             <Grid Background="White" Width="300" Name="Grid" Grid.Row="0" Grid.Column="0">
    19                 <Grid.RowDefinitions>
    20                     <RowDefinition/>
    21                     <RowDefinition/>
    22                     <RowDefinition/>
    23                 </Grid.RowDefinitions>
    24                 <Grid.ColumnDefinitions>
    25                     <ColumnDefinition/>
    26                     <ColumnDefinition/>
    27                 </Grid.ColumnDefinitions>
    28 
    29                 <Label Grid.Row="0" Grid.Column="0" FontSize="12" Background="White" VerticalAlignment="Top" Height="28" Width="AUTO">Probable time left :</Label>
    30                 <Label Grid.Row="0" Grid.Column="1" FontSize="12" Background="White" VerticalAlignment="Top" Height="28" Width="AUTO">Estimated end time :</Label>
    31 
    32                 <TextBox Name="timeLeft" Grid.Row="1" Grid.Column="0"
    33                      TextAlignment="Center" IsReadOnly="True" TextWrapping="WrapWithOverflow" VerticalAlignment="Top" Height="28" FontSize="10" BorderThickness="1" />
    34                 <TextBox Name="endTime" Grid.Row="1" Grid.Column="1"
    35                      TextAlignment="Center" IsReadOnly="True" TextWrapping="WrapWithOverflow" VerticalAlignment="Top" Height="28" FontSize="10" BorderThickness="1" />
    36 
    37                 <Label Grid.Row="2" Grid.Column="0" FontSize="12" Grid.ColumnSpan="1" Background="White" Width="AUTO">Keys per second :</Label>
    38 
    39                 <TextBox x:Name="keysPerSecond" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2"
    40                      TextAlignment="Left"  IsReadOnly="True" TextWrapping="WrapWithOverflow" FontSize="10" BorderThickness="1" HorizontalContentAlignment="Center" />
    41             </Grid>
    42             </Canvas>
    43             <ListView Name="ListView" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" FontSize="10" Grid.Row="1" Grid.Column="0">
    44                 <ListView.View>
    45                     <GridView>
    46                         <GridViewColumn Header="Ranking" DisplayMemberBinding="{Binding Path=Ranking}">
    47                             <GridViewColumn.CellTemplate>
    48                                 <DataTemplate>
    49                                     <Label/>
    50                                 </DataTemplate>
    51                             </GridViewColumn.CellTemplate>
    52                         </GridViewColumn>
    53                         <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}">
    54                             <GridViewColumn.CellTemplate>
    55                                 <DataTemplate>
    56                                     <Label/>
    57                                 </DataTemplate>
    58                             </GridViewColumn.CellTemplate>
    59                         </GridViewColumn>
    60                         <GridViewColumn Header="Key" DisplayMemberBinding="{Binding Path=Key}">
    61                             <GridViewColumn.CellTemplate>
    62                                 <DataTemplate>
    63                                     <Label/>
    64                                 </DataTemplate>
    65                             </GridViewColumn.CellTemplate>
    66                         </GridViewColumn>
    67                         <GridViewColumn Header="Text" DisplayMemberBinding="{Binding Path=Text}">
    68                             <GridViewColumn.CellTemplate>
    69                                 <DataTemplate>
    70                                     <Label/>
    71                                 </DataTemplate>
    72                             </GridViewColumn.CellTemplate>
    73                         </GridViewColumn>
    74                     </GridView>
    75                 </ListView.View>
    76             </ListView>
    77         </Grid>
    78     </Canvas>
     3    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     4    <UserControl.Resources>
     5        <RotateTransform x:Key="HeaderRotate" Angle="270" />
     6        <Style x:Key="ValueRow1">
     7            <Setter Property="Label.Margin" Value="80,0,0,0" />
     8        </Style>
     9        <Style x:Key="ValueRow2">
     10            <Setter Property="Label.Margin" Value="80,0,0,0" />
     11        </Style>
     12    </UserControl.Resources>
     13    <Viewbox>
     14        <StackPanel Width="646">
     15            <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
     16                <Grid Height="78" Background="#AFFFD4C1">
     17                    <Grid.ColumnDefinitions>
     18                        <ColumnDefinition Width="26" />
     19                        <ColumnDefinition Width="200*" />
     20                        <ColumnDefinition Width="200*" />
     21                    </Grid.ColumnDefinitions>
     22                    <Grid.RowDefinitions>
     23                        <RowDefinition Height="26" />
     24                        <RowDefinition Height="26" />
     25                        <RowDefinition Height="26" />
     26                    </Grid.RowDefinitions>
     27                    <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FFE56B00" Grid.Column="0" Grid.RowSpan="3">
     28                        <Label Content="Local" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
     29                    </Border>
     30                    <Label Content="Start:" Grid.Column="1" />
     31                    <Label Name="startTime" Style="{StaticResource ValueRow1}" Grid.Column="1" />
     32                    <Label Content="End:" HorizontalAlignment="Left" Grid.Column="2" />
     33                    <Label Name="endTime" Style="{StaticResource ValueRow2}" Grid.Column="2" />
     34                    <Label Content="Elapsed:" Grid.Column="1" Grid.Row="1" />
     35                    <Label Name="elapsedTime" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="1" />
     36                    <Label Content="Remaining:" Grid.Column="2" Grid.Row="1" />
     37                    <Label Name="timeLeft" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="1" />
     38                    <Label Content="Keys / sec:" Grid.Column="2" Grid.Row="2" />
     39                    <Label Name="keysPerSecond" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="2" />
     40                </Grid>
     41            </Border>
     42            <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
     43                <Grid>
     44                    <Grid.ColumnDefinitions>
     45                        <ColumnDefinition Width="26" />
     46                        <ColumnDefinition Width="*" />
     47                    </Grid.ColumnDefinitions>
     48                    <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF479308" Grid.Column="0">
     49                        <Label Content="Top Ten" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="50" />
     50                    </Border>
     51                    <ListView Name="ListView" Background="#AFE2FFCE" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" FontSize="10" Grid.Column="1" Height="250">
     52                        <ListView.View>
     53                            <GridView>
     54                                <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
     55                                    <GridViewColumn.CellTemplate>
     56                                        <DataTemplate>
     57                                            <Label/>
     58                                        </DataTemplate>
     59                                    </GridViewColumn.CellTemplate>
     60                                </GridViewColumn>
     61                                <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}">
     62                                    <GridViewColumn.CellTemplate>
     63                                        <DataTemplate>
     64                                            <Label/>
     65                                        </DataTemplate>
     66                                    </GridViewColumn.CellTemplate>
     67                                </GridViewColumn>
     68                                <GridViewColumn Header="Text" DisplayMemberBinding="{Binding Path=Text}">
     69                                    <GridViewColumn.CellTemplate>
     70                                        <DataTemplate>
     71                                            <Label/>
     72                                        </DataTemplate>
     73                                    </GridViewColumn.CellTemplate>
     74                                </GridViewColumn>
     75                                <GridViewColumn Header="Key" DisplayMemberBinding="{Binding Path=Key}">
     76                                    <GridViewColumn.CellTemplate>
     77                                        <DataTemplate>
     78                                            <Label/>
     79                                        </DataTemplate>
     80                                    </GridViewColumn.CellTemplate>
     81                                </GridViewColumn>
     82                            </GridView>
     83                        </ListView.View>
     84                    </ListView>
     85                </Grid>
     86            </Border>
     87        </StackPanel>
     88    </Viewbox>
    7989</UserControl>
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/LocalQuickWatchPresentation.xaml.cs

    r1682 r1705  
    1313        {
    1414            InitializeComponent();
    15             SizeChanged += sizeChanged;
    1615            this.DataContext = entries;
    17         }
    18 
    19         public void sizeChanged(Object sender, EventArgs eventArgs)
    20         {
    21             double height = this.ActualHeight - this.Grid.ActualHeight;
    22             if(height<0){
    23                 height=0;
    24             }
    25             this.ListView.Height = height;
    26             this.ListView.Width = this.ActualWidth;
    27 
    28             double heightTransform = (this.ActualHeight - height) / this.Grid.ActualHeight;
    29             double widthTransform = this.ActualWidth / this.Grid.ActualWidth;
    30 
    31             if (widthTransform > heightTransform)
    32             {
    33                 widthTransform = heightTransform;
    34             }
    35                
    36 
    37             this.Grid.RenderTransform = new ScaleTransform(widthTransform, heightTransform);
    3816        }
    3917    }
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/P2PQuickWatchPresentation.xaml

    r1704 r1705  
    1 <UserControl x:Class="KeySearcherPresentation.Controls.P2PQuickWatchPresentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:Converter="clr-namespace:KeySearcherConverter" mc:Ignorable="d" x:Name="P2PQuickWatch" d:DesignHeight="472" d:DesignWidth="400">
     1<UserControl x:Class="KeySearcherPresentation.Controls.P2PQuickWatchPresentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:Converter="clr-namespace:KeySearcherConverter" mc:Ignorable="d" x:Name="P2PQuickWatch" d:DesignHeight="440" d:DesignWidth="600">
    22        <UserControl.Resources>
    33                <Converter:TrueToVisibleOrCollapsedConverter x:Key="TrueToVisibleOrCollapsedConverter" />
    44        <Converter:TimeSpanToRoundedStringConverter x:Key="TimeSpanToRoundedStringConverter" />
    55        <Converter:LongToSizeMetricString x:Key="LongToSizeMetricString" />
    6         </UserControl.Resources>
     6        <Converter:DateTimeConverter x:Key="DateTimeConverter" />
     7        <Converter:TimeSpanConverter x:Key="TimeSpanConverter" />
     8        <RotateTransform x:Key="HeaderRotate" Angle="270" />
     9        <Style x:Key="ValueRow1">
     10            <Setter Property="Label.Margin" Value="90,0,0,0" />
     11        </Style>
     12        <Style x:Key="ValueRow2">
     13            <Setter Property="Label.Margin" Value="110,0,0,0" />
     14        </Style>
     15        <Style x:Key="ValueRow3">
     16            <Setter Property="Label.Margin" Value="90,0,0,0" />
     17        </Style>
     18    </UserControl.Resources>
    719        <Viewbox>
    8                 <Grid Width="400" Background="#C8FFFFFF">
     20                <Grid Width="646" >
    921            <StackPanel>
    10                 <Border BorderBrush="Silver" BorderThickness="0,0,0,2" Visibility="{Binding IsSearchingForReservedNodes, FallbackValue=Collapsed, Converter={StaticResource TrueToVisibleOrCollapsedConverter}}">
     22                <Border BorderBrush="Silver" BorderThickness="2,2,2,0" Visibility="{Binding IsSearchingForReservedNodes, FallbackValue=Collapsed, Converter={StaticResource TrueToVisibleOrCollapsedConverter}}">
    1123                                        <Grid Height="36" Background="#C8D1E3FF">
    12                                                 <Label Content="Endgame mode: Using reserved nodes, calculation nearly finished..." Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" />
     24                                                <Label Content="Endgame mode" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" />
    1325                                        </Grid>
    1426                                </Border>
    15                                 <Border BorderBrush="Silver" BorderThickness="0,0,0,2">
    16                                         <Grid Height="36">
    17                                                 <Grid.ColumnDefinitions>
    18                                                         <ColumnDefinition Width="190" />
    19                                                         <ColumnDefinition Width="210" />
    20                                                 </Grid.ColumnDefinitions>
    21                                                 <Label Content="Total chunks:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" />
    22                                                 <Label Content="-" Name="TotalAmountOfChunks" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" />
    23                                                 <Label Content="Keys per chunk:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" />
    24                                                 <Label Content="-" Name="KeysPerChunk" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" />
     27                                <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
     28                                        <Grid Height="48" Background="#AFE2E2FF">
     29                        <Grid.RowDefinitions>
     30                            <RowDefinition Height="48" />
     31                        </Grid.RowDefinitions>
     32                                                <Grid.ColumnDefinitions>
     33                            <ColumnDefinition Width="26" />
     34                            <ColumnDefinition Width="180" />
     35                                                        <ColumnDefinition Width="*" />
     36                            <ColumnDefinition Width="*" />
     37                                                </Grid.ColumnDefinitions>
     38                        <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Grid.Column="0" Background="#FF5C5CFF">
     39                            <Label Content="Static" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
     40                        </Border>
     41                        <Label Content="Total chunks:" VerticalAlignment="Center" Grid.Column="1" />
     42                        <Label Content="-" Name="TotalAmountOfChunks" Style="{StaticResource ValueRow1}" VerticalAlignment="Center" Grid.Column="1" />
     43                        <Label Content="Keys per chunk:" VerticalAlignment="Center" Grid.Column="2" />
     44                        <Label Content="-" Name="KeysPerChunk" Style="{StaticResource ValueRow2}" VerticalAlignment="Center" Grid.Column="2" />
     45                        <Label Content="Tested bits:" VerticalAlignment="Center" Grid.Column="3" />
     46                        <Label Content="-" Name="TestedBits" Style="{StaticResource ValueRow3}" VerticalAlignment="Center" Grid.Column="3" />
    2547                                        </Grid>
    2648                                </Border>
    27                                 <Border BorderBrush="Silver" BorderThickness="0,0,0,2">
    28                                         <Grid Height="36">
    29                                                 <Grid.ColumnDefinitions>
    30                                                         <ColumnDefinition Width="190" />
    31                                                         <ColumnDefinition Width="210" />
    32                                                 </Grid.ColumnDefinitions>
    33                                                 <Label Content="Participants:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" />
    34                                                 <Label Content="{Binding TotalAmountOfParticipants, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" />
    35                                                 <Label Content="Estimated finish date:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" />
    36                                                 <Label Content="{Binding EstimatedFinishDate, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" />
    37                                         </Grid>
    38                                 </Border>
    39                                 <Border BorderBrush="Silver" BorderThickness="0,0,0,2">
    40                                         <Grid Height="102">
    41                                                 <Grid.ColumnDefinitions>
    42                                                         <ColumnDefinition Width="190" />
    43                                                         <ColumnDefinition Width="210" />
     49                                <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
     50                    <Grid Height="52" Background="#AFAAE1E8">
     51                                                <Grid.ColumnDefinitions>
     52                            <ColumnDefinition Width="26" />
     53                                                        <ColumnDefinition Width="180" />
     54                                                        <ColumnDefinition Width="*" />
     55                            <ColumnDefinition Width="*" />
     56                                                </Grid.ColumnDefinitions>
     57                        <Grid.RowDefinitions>
     58                            <RowDefinition Height="26" />
     59                            <RowDefinition Height="26" />
     60                        </Grid.RowDefinitions>
     61                        <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF099BA7" Grid.Column="0" Grid.RowSpan="2">
     62                            <Label Content="Global" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
     63                        </Border>
     64                                                <Label Content="Participants:" Grid.Column="1" />
     65                        <Label Content="{Binding TotalAmountOfParticipants, FallbackValue=-}" Style="{StaticResource ValueRow1}" Grid.Column="1" />
     66                        <Label Content="Start:" Grid.Column="2" />
     67                        <Label Content="{Binding StartDate, FallbackValue=-, Converter={StaticResource DateTimeConverter}}" Style="{StaticResource ValueRow2}" Grid.Column="2" />
     68                        <Label Content="End:" HorizontalAlignment="Left" Grid.Column="3" />
     69                        <Label Content="{Binding EstimatedFinishDate, FallbackValue=-}" Style="{StaticResource ValueRow3}" Grid.Column="3" />
     70                        <Label Content="Elapsed:" Grid.Column="2" Grid.Row="2" />
     71                        <Label Content="{Binding ElapsedTime, FallbackValue=-, Converter={StaticResource TimeSpanConverter}}" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="2" />
     72                        <Label Content="Remaining:" Grid.Column="3" Grid.Row="2" />
     73                        <Label Content="{Binding RemainingTimeTotal, FallbackValue=-, Converter={StaticResource TimeSpanConverter}}" Style="{StaticResource ValueRow3}" Grid.Column="3" Grid.Row="2" />
     74                    </Grid>
     75                                </Border>
     76                                <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
     77                    <Grid Height="78" Background="#AFFFD4C1">
     78                                                <Grid.ColumnDefinitions>
     79                            <ColumnDefinition Width="26" />
     80                            <ColumnDefinition Width="180" />
     81                            <ColumnDefinition Width="*" />
     82                            <ColumnDefinition Width="*" />
    4483                                                </Grid.ColumnDefinitions>
    4584                                                <Grid.RowDefinitions>
    46                                                         <RowDefinition Height="34" />
    47                                                         <RowDefinition Height="34" />
    48                                                         <RowDefinition Height="34" />
     85                                                        <RowDefinition Height="26" />
     86                                                        <RowDefinition Height="26" />
     87                            <RowDefinition Height="26" />
    4988                                                </Grid.RowDefinitions>
    50                                                 <Label Content="Local chunks:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0" />
    51                                                 <Label Content="{Binding LocalFinishedChunks, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0" />
    52                                                 <Label Content="Current chunk:" Height="28" HorizontalAlignment="Left" Margin="0,3,0,0" VerticalAlignment="Top" Grid.Column="1" />
    53                                                 <Label Content="{Binding CurrentChunk, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="0" />
    54                                                 <Label Content="Keys per second:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="1" />
    55                                                 <Label Content="{Binding KeysPerSecond, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="1" />
    56                                                 <Label Content="Remaining time:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="1" />
    57                                                 <Label Content="{Binding RemainingTime, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="1" />
    58                                                 <ProgressBar Value="{Binding ProgressOfCurrentChunk, FallbackValue=0}" IsIndeterminate="{Binding IsCurrentProgressIndeterminate, FallbackValue=false}" Grid.ColumnSpan="2" Grid.Row="2" Height="24" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Width="400" Maximum="1" />
    59                                         </Grid>
    60                                 </Border>
    61                                 <Border BorderBrush="Silver" BorderThickness="0,0,0,2" Visibility="{Binding IsVerboseEnabled, ElementName=P2PQuickWatch, Converter={StaticResource TrueToVisibleOrCollapsedConverter}}">
    62                                         <Grid Height="204">
    63                                                 <Grid.ColumnDefinitions>
    64                                                         <ColumnDefinition Width="190" />
    65                                                         <ColumnDefinition Width="210" />
     89                        <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FFE56B00" Grid.Column="0" Grid.RowSpan="3">
     90                            <Label Content="Local" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
     91                        </Border>
     92                                                <Label Content="Finished chunks:" Grid.Column="1" Grid.Row="0" />
     93                        <Label Content="{Binding LocalFinishedChunks, FallbackValue=-}" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="0" />
     94                        <Label Content="Keys / sec:" Grid.Column="2" Grid.Row="0" />
     95                        <Label Content="{Binding KeysPerSecond, FallbackValue=-}" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="0" />
     96                        <Label Content="Current chunk:" Grid.Column="3" />
     97                        <Label Content="{Binding CurrentChunk, FallbackValue=-}" Style="{StaticResource ValueRow3}" Grid.Column="3" Grid.Row="0" />
     98                        <Grid  Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="1">
     99                            <ProgressBar Value="{Binding ProgressOfCurrentChunk, FallbackValue=0}" IsIndeterminate="{Binding IsCurrentProgressIndeterminate, FallbackValue=false}" Maximum="1" />
     100                            <Viewbox>
     101                                <Label Content="{Binding RemainingTime, Converter={StaticResource TimeSpanConverter}}" HorizontalAlignment="Center" Grid.Column="2" Grid.Row="1" />
     102                            </Viewbox>
     103                        </Grid>
     104                        <Label Content="{Binding CurrentOperation}" HorizontalAlignment="Center" Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="3" FontWeight="Normal" />
     105                    </Grid>
     106                                </Border>
     107                <Border BorderBrush="Silver" BorderThickness="2,0,2,2" Visibility="{Binding IsVerboseEnabled, ElementName=P2PQuickWatch, Converter={StaticResource TrueToVisibleOrCollapsedConverter}}">
     108                    <Grid Height="78" Background="#AFF9C7FF">
     109                        <Grid.ColumnDefinitions>
     110                            <ColumnDefinition Width="26" />
     111                            <ColumnDefinition Width="180" />
     112                            <ColumnDefinition Width="*" />
     113                            <ColumnDefinition Width="*" />
     114                        </Grid.ColumnDefinitions>
     115                        <Grid.RowDefinitions>
     116                            <RowDefinition Height="26" />
     117                            <RowDefinition Height="26" />
     118                            <RowDefinition Height="26" />
     119                        </Grid.RowDefinitions>
     120                        <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF8309A7" Grid.Column="0" Grid.RowSpan="3">
     121                            <Label Content="Requests" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
     122                        </Border>
     123                        <Label Content="Store:" Grid.Column="1" Grid.Row="0" />
     124                        <Label Content="{Binding StoreRequests, FallbackValue=-}" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="0" />
     125                        <Label Content="Retrieve:" Grid.Column="2" Grid.Row="0" />
     126                        <Label Content="{Binding RetrieveRequests, FallbackValue=-}" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="0" />
     127                        <Label Content="Remove:" Grid.Column="3" Grid.Row="0" />
     128                        <Label Content="{Binding RemoveRequests, FallbackValue=-}" Style="{StaticResource ValueRow3}" Grid.Column="3" Grid.Row="0" />
     129                        <Label Content="Total:" Grid.Column="2" Grid.Row="1" />
     130                        <Label Content="{Binding TotalDhtRequests, FallbackValue=-}" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="1" />
     131                        <Label Content="Per chunk:" Grid.Column="3" Grid.Row="1" />
     132                        <Label Content="{Binding RequestsPerNode, FallbackValue=-}" Style="{StaticResource ValueRow3}" Grid.Column="3" Grid.Row="1" />
     133                        <Label Content="Overhead (abs):" Grid.Column="2" Grid.Row="2" />
     134                        <Label Content="{Binding DhtOverheadInReadableTime, FallbackValue=-, Converter={StaticResource TimeSpanToRoundedStringConverter}}" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="2" />
     135                        <Label Content="Overhead (%):" Grid.Column="3" Grid.Row="2" />
     136                        <Label Content="{Binding DhtOverheadInPercent, FallbackValue=-}" Style="{StaticResource ValueRow3}" Grid.Column="3" Grid.Row="2" />
     137                    </Grid>
     138                </Border>
     139                <Border BorderBrush="Silver" BorderThickness="2,0,2,2" Visibility="{Binding IsVerboseEnabled, ElementName=P2PQuickWatch, Converter={StaticResource TrueToVisibleOrCollapsedConverter}}">
     140                                        <Grid Height="52" Background="#AFE2E2E2">
     141                                                <Grid.ColumnDefinitions>
     142                            <ColumnDefinition Width="26" />
     143                            <ColumnDefinition Width="180" />
     144                            <ColumnDefinition Width="*" />
     145                            <ColumnDefinition Width="*" />
    66146                                                </Grid.ColumnDefinitions>
    67147                                                <Grid.RowDefinitions>
    68                                                         <RowDefinition Height="34" />
    69                                                         <RowDefinition Height="34" />
    70                                                         <RowDefinition Height="34" />
    71                                                         <RowDefinition Height="34" />
    72                             <RowDefinition Height="34" />
    73                             <RowDefinition Height="34" />
     148                                                        <RowDefinition Height="26" />
     149                            <RowDefinition Height="26" />
    74150                                                </Grid.RowDefinitions>
    75                                                 <Label Content="Total DHT requests:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0" />
    76                                                 <Label Content="{Binding TotalDhtRequests, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0" />
    77                                                 <Label Content="Requests per chunk:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="0" />
    78                                                 <Label Content="{Binding RequestsPerNode, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="0" />
    79                                                 <Label Content="Retrieve requests:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="1" />
    80                                                 <Label Content="{Binding RetrieveRequests, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="1" />
    81                                                 <Label Content="Remove requests:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="1" />
    82                                                 <Label Content="{Binding RemoveRequests, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="1" />
    83                                                 <Label Content="Store requests:" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Row="2" />
    84                                                 <Label Content="{Binding StoreRequests, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Row="2" />
    85                                                 <Label Content="Overhead (abs):" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="3" />
    86                         <Label Content="{Binding DhtOverheadInReadableTime, FallbackValue=-, Converter={StaticResource TimeSpanToRoundedStringConverter}}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="3" />
    87                                                 <Label Content="Overhead (%):" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="3" />
    88                                                 <Label Content="{Binding DhtOverheadInPercent, FallbackValue=-}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="3" />
    89                         <Label Content="Sent (payload):" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="4" />
    90                         <Label Content="{Binding StoredBytes, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="4" />
    91                         <Label Content="Received (payload):" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="4" />
    92                         <Label Content="{Binding RetrievedBytes, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="4" />
    93                         <Label Content="Sent (link):" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="5" />
    94                         <Label Content="{Binding SentBytesByLinkManager, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Height="28" HorizontalAlignment="Left" Margin="110,6,0,0" VerticalAlignment="Top" Grid.Column="0" Grid.Row="5" />
    95                         <Label Content="Received (link):" Height="28" HorizontalAlignment="Left" Margin="0,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="5" />
    96                         <Label Content="{Binding ReceivedBytesByLinkManager, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Height="28" HorizontalAlignment="Left" Margin="120,6,0,0" VerticalAlignment="Top" Grid.Column="1" Grid.Row="5" />
    97                     </Grid>
    98                                 </Border>
    99                 <ListView Name="ToplistView" Background="#C8FFFFFF" ItemsSource="{Binding TopList}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" Margin="0,6,0,0" Height="120">
    100                                         <ListView.View>
    101                                                 <GridView>
    102                                                         <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
    103                                                                 <GridViewColumn.CellTemplate>
    104                                                                         <DataTemplate>
    105                                                                                 <Label />
    106                                                                         </DataTemplate>
    107                                                                 </GridViewColumn.CellTemplate>
    108                                                         </GridViewColumn>
    109                                                         <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}">
    110                                                                 <GridViewColumn.CellTemplate>
    111                                                                         <DataTemplate>
    112                                                                                 <Label />
    113                                                                         </DataTemplate>
    114                                                                 </GridViewColumn.CellTemplate>
    115                                                         </GridViewColumn>
    116                                                         <GridViewColumn Header="Text" DisplayMemberBinding="{Binding Path=Text}">
    117                                                                 <GridViewColumn.CellTemplate>
    118                                                                         <DataTemplate>
    119                                                                                 <Label />
    120                                                                         </DataTemplate>
    121                                                                 </GridViewColumn.CellTemplate>
    122                                                         </GridViewColumn>
    123                                                         <GridViewColumn Header="Key" DisplayMemberBinding="{Binding Path=Key}">
    124                                                                 <GridViewColumn.CellTemplate>
    125                                                                         <DataTemplate>
    126                                                                                 <Label />
    127                                                                         </DataTemplate>
    128                                                                 </GridViewColumn.CellTemplate>
    129                                                         </GridViewColumn>
    130                                                 </GridView>
    131                                         </ListView.View>
    132                                 </ListView>
    133                         </StackPanel>
     151                        <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF525252" Grid.Column="0" Grid.RowSpan="3">
     152                            <Label Content="Traffic" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
     153                        </Border>
     154                        <Label Content="Sent (payload):" Grid.Column="1" Grid.Row="0" />
     155                        <Label Content="{Binding StoredBytes, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Style="{StaticResource ValueRow1}" Grid.Column="1" Grid.Row="0" />
     156                        <Label Content="Received (payload):" Grid.Column="2" Grid.Row="0" />
     157                        <Label Content="{Binding RetrievedBytes, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="0" />
     158                        <Label Content="Total (payload):" Grid.Column="3" Grid.Row="0" />
     159                        <Label Content="{Binding TotalBytes, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Style="{StaticResource ValueRow3}" Grid.Column="3" Grid.Row="0" />
     160                        <Label Content="Sent (link):" Grid.Column="1" Grid.Row="1" />
     161                        <Label Content="{Binding SentBytesByLinkManager, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Style="{StaticResource ValueRow1}"  Grid.Column="1" Grid.Row="1" />
     162                        <Label Content="Received (link):" Grid.Column="2" Grid.Row="2" />
     163                        <Label Content="{Binding ReceivedBytesByLinkManager, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Style="{StaticResource ValueRow2}" Grid.Column="2" Grid.Row="1" />
     164                        <Label Content="Total (link):" Grid.Column="3" Grid.Row="2" />
     165                        <Label Content="{Binding TotalBytesByLinkManager, FallbackValue=-, Converter={StaticResource LongToSizeMetricString}}" Style="{StaticResource ValueRow3}" Grid.Column="3" Grid.Row="1" />
     166                    </Grid>
     167                                </Border>
     168                <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
     169                    <Grid>
     170                        <Grid.ColumnDefinitions>
     171                            <ColumnDefinition Width="26" />
     172                            <ColumnDefinition Width="*" />
     173                        </Grid.ColumnDefinitions>
     174                        <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Background="#FF479308" Grid.Column="0">
     175                            <Label Content="Top Ten" FontSize="11" HorizontalAlignment="Center" Foreground="White" Width="50" />
     176                        </Border>
     177                        <ListView Name="ToplistView" Background="#AFE2FFCE" ItemsSource="{Binding TopList}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"  Height="120" Grid.Column="1">
     178                            <ListView.View>
     179                                <GridView>
     180                                    <GridViewColumn Header="#" DisplayMemberBinding="{Binding Path=Ranking}" Width="25">
     181                                        <GridViewColumn.CellTemplate>
     182                                            <DataTemplate>
     183                                                <Label />
     184                                            </DataTemplate>
     185                                        </GridViewColumn.CellTemplate>
     186                                    </GridViewColumn>
     187                                    <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}">
     188                                        <GridViewColumn.CellTemplate>
     189                                            <DataTemplate>
     190                                                <Label />
     191                                            </DataTemplate>
     192                                        </GridViewColumn.CellTemplate>
     193                                    </GridViewColumn>
     194                                    <GridViewColumn Header="Text" DisplayMemberBinding="{Binding Path=Text}">
     195                                        <GridViewColumn.CellTemplate>
     196                                            <DataTemplate>
     197                                                <Label />
     198                                            </DataTemplate>
     199                                        </GridViewColumn.CellTemplate>
     200                                    </GridViewColumn>
     201                                    <GridViewColumn Header="Key" DisplayMemberBinding="{Binding Path=Key}">
     202                                        <GridViewColumn.CellTemplate>
     203                                            <DataTemplate>
     204                                                <Label />
     205                                            </DataTemplate>
     206                                        </GridViewColumn.CellTemplate>
     207                                    </GridViewColumn>
     208                                </GridView>
     209                            </ListView.View>
     210                        </ListView>
     211                    </Grid>
     212                </Border>
     213            </StackPanel>
    134214                </Grid>
    135215        </Viewbox>
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/P2PQuickWatchPresentation.xaml.cs

    r1682 r1705  
    3535            var keysPerChunk = Math.Pow(2, keySearcherSettings.ChunkSize);
    3636            var keyPatternPool = new KeyPatternPool(keyPattern, new BigInteger(keysPerChunk));
    37            
    38             TotalAmountOfChunks.Content = keyPatternPool.Length;
     37
     38            if (keyPatternPool.Length > 9999999999)
     39            {
     40                TotalAmountOfChunks.Content = keyPatternPool.Length.ToString().Substring(0, 10) + "...";
     41            }
     42            else
     43            {
     44                TotalAmountOfChunks.Content = keyPatternPool.Length;
     45            }
     46
    3947            KeysPerChunk.Content = keysPerChunk;
     48            TestedBits.Content = Math.Ceiling(Math.Log((double) keyPatternPool.Length*keysPerChunk, 2));
    4049        }
    4150    }
Note: See TracChangeset for help on using the changeset viewer.