Skip to content

Commit 0ae7d8a

Browse files
committed
1 parent 381322d commit 0ae7d8a

8 files changed

Lines changed: 182 additions & 6 deletions

File tree

Source/NETworkManager/Resources/Localization/de-DE.xaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,8 +423,9 @@
423423
<system:String x:Key="String_ShowOnlyMostCommonQueryTypes">Nur die häufigsten Abfragetypen anzeigen</system:String>
424424
<system:String x:Key="String_DisableTransparencyInTheSettingsToUseRemoteDesktop">Deaktivieren Sie die Transparenz in den Einstellungen (Allgemein/Aussehen) und starten Sie anschließend die Anwendung neu, um Remote Desktop zu verwenden</system:String>
425425
<system:String x:Key="String_DisableTransparencyInTheSettingsToUsePuTTY">Deaktivieren Sie die Transparenz in den Einstellungen (Allgemein/Aussehen) und starten Sie anschließend die Anwendung neu, um PuTTY zu verwenden</system:String>
426+
<system:String x:Key="String_Timestamp">Timestamp</system:String>
426427

427-
<!-- Documentation title -->
428+
<!-- Documentation title -->
428429
<system:String x:Key="String_DocumentationTitle_00001">Wie installiere ich RDP 8.1 unter Windows 7 / Server 2008 R2?</system:String>
429430
<system:String x:Key="String_DocumentationTitle_00002">Wie erstelle ich ein benutzerdefiniertes Thema und Akzent?</system:String>
430431

Source/NETworkManager/Resources/Localization/en-US.xaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,8 @@
423423
<system:String x:Key="String_ShowOnlyMostCommonQueryTypes">Show only most common query types</system:String>
424424
<system:String x:Key="String_DisableTransparencyInTheSettingsToUseRemoteDesktop">Disable the transparency in the settings (General/Appearance) and restart the application afterwards to use Remote Desktop</system:String>
425425
<system:String x:Key="String_DisableTransparencyInTheSettingsToUsePuTTY">Disable the transparency in the settings (General/Appearance) and restart the application afterwards to use PuTTY</system:String>
426-
426+
<system:String x:Key="String_Timestamp">Timestamp</system:String>
427+
427428
<!-- Documentation title -->
428429
<system:String x:Key="String_DocumentationTitle_00001">How to install RDP 8.1 on Windows 7/Server 2008 R2</system:String>
429430
<system:String x:Key="String_DocumentationTitle_00002">How to create a custom theme and accent?</system:String>

Source/NETworkManager/Resources/Localization/es-ES.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@
423423
<system:String x:Key="String_ShowOnlyMostCommonQueryTypes">Mostrar solo los tipos de consulta más comunes</system:String>
424424
<system:String x:Key="String_DisableTransparencyInTheSettingsToUseRemoteDesktop">Desactive la transparencia en la configuración (General/Apariencia) y reinicie la aplicación luego puede usar el Escritorio remoto</system:String>
425425
<system:String x:Key="String_DisableTransparencyInTheSettingsToUsePuTTY">Desactive la transparencia en la configuración (General/Apariencia) y reinicie la aplicación luego puede usar PuTTY</system:String>
426+
<system:String x:Key="String_Timestamp">Timestamp</system:String> <!-- new/updated, please remove comment if string is translated -->
426427

427428
<!-- Documentation title -->
428429
<system:String x:Key="String_DocumentationTitle_00001">Cómo instalar RDP 8.1 en Windows 7/Server 2008 R2</system:String>

Source/NETworkManager/Resources/Localization/ru-RU.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@
423423
<system:String x:Key="String_ShowOnlyMostCommonQueryTypes">Show only most common query types</system:String>
424424
<system:String x:Key="String_DisableTransparencyInTheSettingsToUseRemoteDesktop">Disable the transparency in the settings (General/Appearance) and restart the application afterwards to use Remote Desktop</system:String> <!-- new/updated, please remove comment if string is translated -->
425425
<system:String x:Key="String_DisableTransparencyInTheSettingsToUsePuTTY">Disable the transparency in the settings (General/Appearance) and restart the application afterwards to use PuTTY</system:String> <!-- new/updated, please remove comment if string is translated -->
426+
<system:String x:Key="String_Timestamp">Timestamp</system:String> <!-- new/updated, please remove comment if string is translated -->
426427

427428
<!-- Documentation title -->
428429
<system:String x:Key="String_DocumentationTitle_00001">Как установить RDP 8.1 на Windows 7 / Server 2008 R2</system:String>

Source/NETworkManager/ViewModels/IPScannerHostViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ public ItemActionCallback CloseItemCommand
368368
private void CloseItemAction(ItemActionCallbackArgs<TabablzControl> args)
369369
{
370370
((args.DragablzItem.Content as DragablzTabItem).View as IPScannerView).CloseTab();
371-
}
371+
}
372372
#endregion
373373

374374
#region Methods

Source/NETworkManager/ViewModels/PingViewModel.cs

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public ICollectionView HostHistoryView
5151
{
5252
get { return _hostHistoryView; }
5353
}
54-
54+
5555
private bool _isPingRunning;
5656
public bool IsPingRunning
5757
{
@@ -99,6 +99,19 @@ public ICollectionView PingResultView
9999
get { return _pingResultView; }
100100
}
101101

102+
private PingInfo _selectedPingResult;
103+
public PingInfo SelectedPingResult
104+
{
105+
get { return _selectedPingResult; }
106+
set
107+
{
108+
if (value == _selectedPingResult)
109+
return;
110+
111+
_selectedPingResult = value;
112+
OnPropertyChanged();
113+
}
114+
}
102115

103116
private int _pingsTransmitted;
104117
public int PingsTransmitted
@@ -327,6 +340,76 @@ private void PingAction()
327340
else
328341
StartPing();
329342
}
343+
344+
public ICommand CopySelectedTimestampCommand
345+
{
346+
get { return new RelayCommand(p => CopySelectedTimestampAction()); }
347+
}
348+
349+
private void CopySelectedTimestampAction()
350+
{
351+
Clipboard.SetText(SelectedPingResult.Timestamp.ToString());
352+
}
353+
354+
public ICommand CopySelectedIPAddressCommand
355+
{
356+
get { return new RelayCommand(p => CopySelectedIPAddressAction()); }
357+
}
358+
359+
private void CopySelectedIPAddressAction()
360+
{
361+
Clipboard.SetText(SelectedPingResult.IPAddress.ToString());
362+
}
363+
364+
public ICommand CopySelectedHostnameCommand
365+
{
366+
get { return new RelayCommand(p => CopySelectedHostnameAction()); }
367+
}
368+
369+
private void CopySelectedHostnameAction()
370+
{
371+
Clipboard.SetText(SelectedPingResult.Hostname);
372+
}
373+
374+
public ICommand CopySelectedBytesCommand
375+
{
376+
get { return new RelayCommand(p => CopySelectedBytesAction()); }
377+
}
378+
379+
private void CopySelectedBytesAction()
380+
{
381+
Clipboard.SetText(SelectedPingResult.Bytes.ToString());
382+
}
383+
384+
public ICommand CopySelectedTimeCommand
385+
{
386+
get { return new RelayCommand(p => CopySelectedTimeAction()); }
387+
}
388+
389+
private void CopySelectedTimeAction()
390+
{
391+
Clipboard.SetText(SelectedPingResult.Time.ToString());
392+
}
393+
394+
public ICommand CopySelectedTTLCommand
395+
{
396+
get { return new RelayCommand(p => CopySelectedTTLAction()); }
397+
}
398+
399+
private void CopySelectedTTLAction()
400+
{
401+
Clipboard.SetText(SelectedPingResult.TTL.ToString());
402+
}
403+
404+
public ICommand CopySelectedStatusCommand
405+
{
406+
get { return new RelayCommand(p => CopySelectedStatusAction()); }
407+
}
408+
409+
private void CopySelectedStatusAction()
410+
{
411+
Clipboard.SetText(LocalizationManager.GetStringByKey("String_IPStatus_" + SelectedPingResult.Status.ToString()));
412+
}
330413
#endregion
331414

332415
#region Methods

Source/NETworkManager/Views/PingView.xaml

Lines changed: 85 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,86 @@
120120
<TextBlock Grid.Row="2" Foreground="{DynamicResource AccentColorBrush}" Text="{Binding StatusMessage}" Visibility="{Binding DisplayStatusMessage, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{DynamicResource DefaultTextBlock}" Margin="0,10,0,0" />
121121
</Grid>
122122
<TextBlock Grid.Row="2" Text="{DynamicResource String_Header_Status}" Style="{StaticResource HeaderTextBlock}" />
123-
<Control:ScrollingDataGrid Grid.Row="3" ItemsSource="{Binding PingResultView}">
123+
<Control:ScrollingDataGrid Grid.Row="3" ItemsSource="{Binding PingResultView}" SelectedItem="{Binding SelectedPingResult}">
124124
<Control:ScrollingDataGrid.Resources>
125125
<Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource ScrollingDataGridScrollBar}" />
126+
<ContextMenu x:Key="RowContextMenu" Opened="ContextMenu_Opened" MinWidth="150">
127+
<MenuItem Header="{DynamicResource String_CopyDots}">
128+
<MenuItem.Icon>
129+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
130+
<Rectangle.OpacityMask>
131+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
132+
</Rectangle.OpacityMask>
133+
</Rectangle>
134+
</MenuItem.Icon>
135+
<MenuItem Header="{DynamicResource String_Timestamp}" Command="{Binding CopySelectedTimestampCommand}">
136+
<MenuItem.Icon>
137+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
138+
<Rectangle.OpacityMask>
139+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
140+
</Rectangle.OpacityMask>
141+
</Rectangle>
142+
</MenuItem.Icon>
143+
</MenuItem>
144+
<MenuItem Header="{DynamicResource String_IPAddress}" Command="{Binding CopySelectedIPAddressCommand}">
145+
<MenuItem.Icon>
146+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
147+
<Rectangle.OpacityMask>
148+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
149+
</Rectangle.OpacityMask>
150+
</Rectangle>
151+
</MenuItem.Icon>
152+
</MenuItem>
153+
<MenuItem Header="{DynamicResource String_Hostname}" Command="{Binding CopySelectedHostnameCommand}">
154+
<MenuItem.Icon>
155+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
156+
<Rectangle.OpacityMask>
157+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
158+
</Rectangle.OpacityMask>
159+
</Rectangle>
160+
</MenuItem.Icon>
161+
</MenuItem>
162+
<MenuItem Header="{DynamicResource String_Bytes}" Command="{Binding CopySelectedBytesCommand}">
163+
<MenuItem.Icon>
164+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
165+
<Rectangle.OpacityMask>
166+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
167+
</Rectangle.OpacityMask>
168+
</Rectangle>
169+
</MenuItem.Icon>
170+
</MenuItem>
171+
<MenuItem Header="{DynamicResource String_Time}" Command="{Binding CopySelectedTimeCommand}">
172+
<MenuItem.Icon>
173+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
174+
<Rectangle.OpacityMask>
175+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
176+
</Rectangle.OpacityMask>
177+
</Rectangle>
178+
</MenuItem.Icon>
179+
</MenuItem>
180+
<MenuItem Header="{DynamicResource String_TTL}" Command="{Binding CopySelectedTTLCommand}">
181+
<MenuItem.Icon>
182+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
183+
<Rectangle.OpacityMask>
184+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
185+
</Rectangle.OpacityMask>
186+
</Rectangle>
187+
</MenuItem.Icon>
188+
</MenuItem>
189+
<MenuItem Header="{DynamicResource String_Status}" Command="{Binding CopySelectedStatusCommand}">
190+
<MenuItem.Icon>
191+
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
192+
<Rectangle.OpacityMask>
193+
<VisualBrush Stretch="Uniform" Visual="{IconPacks:Material Kind=ContentCopy}" />
194+
</Rectangle.OpacityMask>
195+
</Rectangle>
196+
</MenuItem.Icon>
197+
</MenuItem>
198+
</MenuItem>
199+
</ContextMenu>
126200
</Control:ScrollingDataGrid.Resources>
127201
<Control:ScrollingDataGrid.Columns>
128-
<DataGridTextColumn Header="Timestamp" Binding="{Binding Timestamp}" MinWidth="180" />
202+
<DataGridTextColumn Header="{DynamicResource String_Timestamp}" Binding="{Binding Timestamp}" MinWidth="180" />
129203
<DataGridTextColumn Header="{DynamicResource String_IPAddress}" Binding="{Binding IPAddress}" MinWidth="150" />
130204
<DataGridTextColumn Header="{DynamicResource String_Hostname}" Binding="{Binding Hostname}" MinWidth="150" />
131205
<DataGridTextColumn Header="{DynamicResource String_Bytes}" Binding="{Binding Bytes, Converter={StaticResource IntToStringConverter}}" MinWidth="80" />
@@ -140,6 +214,15 @@
140214
<DataGridTextColumn Header="{DynamicResource String_TTL}" Binding="{Binding TTL, Converter={StaticResource IntToStringConverter}}" MinWidth="80"/>
141215
<DataGridTextColumn Header="{DynamicResource String_Status}" Binding="{Binding Status, Converter={StaticResource IPStatusToStringConverter}}" MinWidth="150" Width="*" />
142216
</Control:ScrollingDataGrid.Columns>
217+
<Control:ScrollingDataGrid.RowStyle>
218+
<Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource MetroDataGridRow}">
219+
<Style.Triggers>
220+
<DataTrigger Binding="{Binding SelectedItems.Count, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type DataGrid}}}" Value="1" >
221+
<Setter Property="ContextMenu" Value="{StaticResource RowContextMenu}"/>
222+
</DataTrigger>
223+
</Style.Triggers>
224+
</Style>
225+
</Control:ScrollingDataGrid.RowStyle>
143226
</Control:ScrollingDataGrid>
144227
<Expander Grid.Row="4" IsExpanded="{Binding ExpandStatistics}" Visibility="{Binding ShowStatistics, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{StaticResource HeaderExpander}" Margin="0,20,0,0">
145228
<Expander.Header>

Source/NETworkManager/Views/PingView.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,11 @@ public void CloseTab()
3333
{
3434
viewModel.OnClose();
3535
}
36+
37+
private void ContextMenu_Opened(object sender, System.Windows.RoutedEventArgs e)
38+
{
39+
ContextMenu menu = sender as ContextMenu;
40+
menu.DataContext = viewModel;
41+
}
3642
}
3743
}

0 commit comments

Comments
 (0)