Skip to content

Commit c741662

Browse files
authored
Merge pull request #1 from zaum/fix/image-viewer-tooltips
Fix ImageViewer metadata tooltips
2 parents 477009d + 4192e3d commit c741662

3 files changed

Lines changed: 128 additions & 41 deletions

File tree

‎QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml‎

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
Margin="0,0,8,0"
103103
Content=""
104104
Style="{StaticResource CaptionButtonStyle}"
105+
ToolTip="{Binding CopyTooltip, ElementName=imagePanel}"
105106
Visibility="{Binding ElementName=imagePanel, Path=CopyIconVisibility}" />
106107
<Button x:Name="buttonSaveAs"
107108
Width="24"
@@ -127,41 +128,24 @@
127128
Margin="0,0,8,0"
128129
Content="&#xE946;"
129130
Style="{StaticResource CaptionButtonStyle}"
130-
Visibility="{Binding ElementName=imagePanel, Path=MetaIconVisibility}" />
131+
ToolTipService.InitialShowDelay="0"
132+
Visibility="{Binding ElementName=imagePanel, Path=MetaIconVisibility}">
133+
<Button.ToolTip>
134+
<ToolTip>
135+
<TextBlock x:Name="textMetaContent"
136+
FontSize="11"
137+
Foreground="{DynamicResource WindowTextForeground}" />
138+
</ToolTip>
139+
</Button.ToolTip>
140+
</Button>
131141
<Button x:Name="buttonBackgroundColour"
132142
Width="24"
133143
Height="24"
134144
Margin="0,0,8,0"
135145
Content="&#xEF1F;"
136146
Style="{StaticResource CaptionButtonStyle}"
147+
ToolTip="{Binding BackgroundTooltip, ElementName=imagePanel}"
137148
Visibility="{Binding ElementName=imagePanel, Path=BackgroundVisibility}" />
138149
</StackPanel>
139-
<TextBlock x:Name="textMeta"
140-
Margin="0,40,8,0"
141-
Padding="5,5,5,5"
142-
HorizontalAlignment="Right"
143-
VerticalAlignment="Top"
144-
Background="{DynamicResource CaptionBackground}"
145-
FontSize="11"
146-
Foreground="{DynamicResource WindowTextForeground}"
147-
IsHitTestVisible="False">
148-
<TextBlock.Inlines>
149-
<Run FontWeight="SemiBold">Camera maker</Run>
150-
<Run>:&#160;</Run>
151-
<Run>SONY</Run>
152-
</TextBlock.Inlines>
153-
<TextBlock.Style>
154-
<Style>
155-
<Style.Setters>
156-
<Setter Property="TextBlock.Visibility" Value="Collapsed" />
157-
</Style.Setters>
158-
<Style.Triggers>
159-
<DataTrigger Binding="{Binding ElementName=buttonMeta, Path=IsMouseOver}" Value="True">
160-
<Setter Property="TextBlock.Visibility" Value="Visible" />
161-
</DataTrigger>
162-
</Style.Triggers>
163-
</Style>
164-
</TextBlock.Style>
165-
</TextBlock>
166150
</Grid>
167151
</UserControl>

‎QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml.cs‎

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
using System.IO;
2929
using System.Linq;
3030
using System.Runtime.CompilerServices;
31+
using System.Reflection;
3132
using System.Threading;
3233
using System.Threading.Tasks;
3334
using System.Windows;
@@ -66,6 +67,9 @@ public partial class ImagePanel : UserControl, INotifyPropertyChanged, IDisposab
6667
private Visibility _reverseColorVisibility = Visibility.Collapsed;
6768
private Visibility _metaIconVisibility = Visibility.Visible;
6869

70+
public string CopyTooltip { get; } = GetTranslation("IV_Copy");
71+
public string BackgroundTooltip { get; } = GetTranslation("IV_Background");
72+
6973
public ImagePanel()
7074
{
7175
InitializeComponent();
@@ -78,11 +82,6 @@ public ImagePanel()
7882

7983
buttonReverseColor.Click += OnReverseColorOnClick;
8084

81-
buttonMeta.Click += (sender, e) =>
82-
textMeta.Visibility = textMeta.Visibility == Visibility.Collapsed
83-
? Visibility.Visible
84-
: Visibility.Collapsed;
85-
8685
buttonBackgroundColour.Click += OnBackgroundColourOnClick;
8786

8887
SizeChanged += ImagePanel_SizeChanged;
@@ -111,6 +110,15 @@ public ImagePanel()
111110
viewPanel.ManipulationDelta += ViewPanel_ManipulationDelta;
112111
}
113112

113+
private static string GetTranslation(string key)
114+
{
115+
var translationFile = Path.Combine(
116+
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
117+
"Translations.config");
118+
119+
return TranslationHelper.Get(key, translationFile);
120+
}
121+
114122
internal ImagePanel(ContextObject context, MetaProvider meta) : this()
115123
{
116124
ContextObject = context;
@@ -401,19 +409,27 @@ private void OnBackgroundColourOnClick(object sender, RoutedEventArgs e)
401409

402410
private void ShowMeta()
403411
{
404-
textMeta.Inlines.Clear();
405-
Meta.GetExif().Values.ForEach(m =>
412+
textMetaContent.Inlines.Clear();
413+
Meta.GetExif()
414+
.OrderBy(item => item.Key switch
415+
{
416+
"_.Size.Width" => 0,
417+
"_.Size.Height" => 1,
418+
_ => 2,
419+
})
420+
.Select(item => item.Value)
421+
.ForEach(m =>
406422
{
407423
if (string.IsNullOrWhiteSpace(m.Item1) || string.IsNullOrWhiteSpace(m.Item2))
408424
return;
409425

410-
textMeta.Inlines.Add(new Run(m.Item1) { FontWeight = FontWeights.SemiBold });
411-
textMeta.Inlines.Add(": ");
412-
textMeta.Inlines.Add(m.Item2);
413-
textMeta.Inlines.Add("\r\n");
426+
textMetaContent.Inlines.Add(new Run(m.Item1) { FontWeight = FontWeights.SemiBold });
427+
textMetaContent.Inlines.Add(": ");
428+
textMetaContent.Inlines.Add(m.Item2);
429+
textMetaContent.Inlines.Add("\r\n");
414430
});
415-
textMeta.Inlines.Remove(textMeta.Inlines.LastInline);
416-
if (!textMeta.Inlines.Any())
431+
textMetaContent.Inlines.Remove(textMetaContent.Inlines.LastInline);
432+
if (!textMetaContent.Inlines.Any())
417433
MetaIconVisibility = Visibility.Collapsed;
418434
}
419435

0 commit comments

Comments
 (0)