mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-04 18:26:39 +02:00
@@ -6,7 +6,6 @@
|
||||
#include "Generated Files/resource.h"
|
||||
#include <common/logger/logger.h>
|
||||
#include <common/SettingsAPI/settings_objects.h>
|
||||
#include <common/utils/os-detect.h>
|
||||
#include <common/utils/resources.h>
|
||||
|
||||
#include <colorPicker/ColorPicker/ColorPickerConstants.h>
|
||||
@@ -227,12 +226,8 @@ public:
|
||||
{
|
||||
ResetEvent(send_telemetry_event);
|
||||
ResetEvent(m_hInvokeEvent);
|
||||
// use only with new settings?
|
||||
if (UseNewSettings())
|
||||
{
|
||||
launch_process();
|
||||
m_enabled = true;
|
||||
}
|
||||
launch_process();
|
||||
m_enabled = true;
|
||||
};
|
||||
|
||||
virtual void disable()
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace ColorPicker.Helpers
|
||||
}
|
||||
}
|
||||
|
||||
public void EndUserSession()
|
||||
public bool EndUserSession()
|
||||
{
|
||||
lock (_colorPickerVisibilityLock)
|
||||
{
|
||||
@@ -70,7 +70,11 @@ namespace ColorPicker.Helpers
|
||||
}
|
||||
|
||||
SessionEventHelper.End();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ namespace ColorPicker.Keyboard
|
||||
// ESC pressed
|
||||
if (virtualCode == KeyInterop.VirtualKeyFromKey(Key.Escape))
|
||||
{
|
||||
_appStateHandler.EndUserSession();
|
||||
e.Handled = _appStateHandler.EndUserSession();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -65,13 +65,13 @@
|
||||
</AdditionalFiles>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="ModernWpfUI" Version="0.9.3" />
|
||||
<PackageReference Include="ModernWpfUI" Version="0.9.4" />
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.IO.Abstractions" Version="12.2.5" />
|
||||
<PackageReference Include="System.Text.Json" Version="5.0.1" />
|
||||
<PackageReference Include="System.Text.Json" Version="5.0.2" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="images\FancyZonesEditor.ico" />
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
x:Name="MainWindow1"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Fancy_Zones_Main_Editor}"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:ui="http://schemas.modernwpf.com/2019"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:FancyZonesEditor"
|
||||
xmlns:Converters="clr-namespace:FancyZonesEditor.Converters"
|
||||
xmlns:props="clr-namespace:FancyZonesEditor.Properties"
|
||||
xmlns:local1="clr-namespace:FancyZonesEditor.ViewModels"
|
||||
xmlns:ui="http://schemas.modernwpf.com/2019"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:controls="clr-namespace:ModernWpf.Controls;assembly=ModernWpf"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
mc:Ignorable="d"
|
||||
Title="FancyZones Editor"
|
||||
ui:WindowHelper.UseModernWindowStyle="True"
|
||||
@@ -84,18 +84,17 @@
|
||||
</StackPanel>
|
||||
</ToolTip>
|
||||
</Border.ToolTip>
|
||||
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
|
||||
|
||||
|
||||
<TextBlock Name="IndexText"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
Text="{Binding Index}"
|
||||
FontSize="26"
|
||||
Grid.Row="0"
|
||||
FontWeight="SemiBold"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource PrimaryForegroundBrush}" />
|
||||
<StackPanel Orientation="Vertical"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Name="IndexText"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
Text="{Binding Index}"
|
||||
FontSize="26"
|
||||
Grid.Row="0"
|
||||
FontWeight="SemiBold"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource PrimaryForegroundBrush}" />
|
||||
<TextBlock Name="ResolutionText"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
Text="{Binding Dimensions}"
|
||||
@@ -125,6 +124,9 @@
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
|
||||
|
||||
|
||||
|
||||
<DataTemplate x:Key="LayoutItemTemplate">
|
||||
<Grid Background="Transparent"
|
||||
Width="216"
|
||||
@@ -204,7 +206,7 @@
|
||||
<Setter TargetName="LayoutItem"
|
||||
Property="BorderBrush"
|
||||
Value="{DynamicResource LayoutItemBorderPointerOverBrush}" />
|
||||
|
||||
|
||||
<Setter TargetName="EditLayoutButton"
|
||||
Property="Foreground"
|
||||
Value="{DynamicResource SystemControlBackgroundAccentBrush}" />
|
||||
@@ -232,6 +234,7 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Text="{x:Static props:Resources.Templates}"
|
||||
x:Name="TemplatesHeaderBlock"
|
||||
FontWeight="SemiBold"
|
||||
@@ -302,7 +305,7 @@
|
||||
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
|
||||
|
||||
<Button x:Name="NewLayoutButton"
|
||||
Click="NewLayoutButton_Click"
|
||||
HorizontalAlignment="Right"
|
||||
@@ -376,7 +379,7 @@
|
||||
Opened="Dialog_Opened"
|
||||
Closed="Dialog_Closed">
|
||||
<Grid DataContext="{Binding SelectedModel}"
|
||||
MinWidth="320" Margin="0,0,0,32">
|
||||
MinWidth="320" Margin="4,4,4,32">
|
||||
|
||||
<StackPanel Margin="0,-37,0,0"
|
||||
HorizontalAlignment="Right"
|
||||
@@ -412,120 +415,192 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel>
|
||||
<local:LayoutPreview Width="216"
|
||||
Height="132"
|
||||
Margin="0,16,0,16" />
|
||||
<Button Click="EditZones_Click"
|
||||
x:Name="editZoneLayoutButton"
|
||||
HorizontalAlignment="Stretch"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Edit_zones}"
|
||||
HorizontalContentAlignment="Center"
|
||||
Foreground="{DynamicResource SystemControlBackgroundAccentBrush}"
|
||||
Style="{StaticResource IconOnlyButtonStyle}"
|
||||
Visibility="{Binding Path=Type, Converter={StaticResource LayoutTypeCustomToVisibilityConverter}}">
|
||||
<Button.Content>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text=""
|
||||
Margin="0,2,8,0"
|
||||
FontFamily="Segoe MDL2 Assets" />
|
||||
<TextBlock Text="{x:Static props:Resources.Edit_zones}" />
|
||||
</StackPanel>
|
||||
</Button.Content>
|
||||
</Button>
|
||||
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Margin="0,24,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
Visibility="{Binding IsCustom, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets"
|
||||
ToolTip="{x:Static props:Resources.Name}"
|
||||
FontSize="16"
|
||||
VerticalAlignment="Bottom" Margin="0,0,0,8"
|
||||
Text="" />
|
||||
<TextBox Text="{Binding Name}"
|
||||
ui:ControlHelper.PlaceholderText="{x:Static props:Resources.Name}"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Name}"
|
||||
Margin="12,0,0,0"
|
||||
ui:ControlHelper.Header="{x:Static props:Resources.Name}"
|
||||
MinWidth="286"
|
||||
HorizontalAlignment="Stretch" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Shortcut panel -->
|
||||
<StackPanel Orientation="Vertical"
|
||||
Visibility="{Binding IsCustom, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
Margin="0,12,0,36">
|
||||
|
||||
<StackPanel Margin="28,0,0,4"
|
||||
Orientation="Horizontal">
|
||||
<TextBlock x:Name="QuickKeyTitle"
|
||||
Text="{x:Static props:Resources.QuickKey_Title}" />
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets"
|
||||
Margin="8,4,0,0"
|
||||
Foreground="{DynamicResource SystemControlBackgroundAccentBrush}"
|
||||
Text=""
|
||||
ToolTip="{x:Static props:Resources.QuickKey_Description}" />
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<StackPanel Orientation="Horizontal">
|
||||
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="16"
|
||||
ToolTip="{x:Static props:Resources.QuickKey_Title}"
|
||||
Text="" />
|
||||
|
||||
<ComboBox x:Name="quickKeySelectionComboBox"
|
||||
Margin="12,0,0,0"
|
||||
Width="286"
|
||||
AutomationProperties.LabeledBy="{Binding ElementName=QuickKeyTitle}"
|
||||
AutomationProperties.HelpText="{x:Static props:Resources.QuickKey_Description}"
|
||||
AutomationProperties.Name="{x:Static props:Resources.QuickKey_Title}"
|
||||
ItemsSource="{Binding QuickKeysAvailable}"
|
||||
SelectedItem="{Binding QuickKey}" />
|
||||
</StackPanel>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<Grid Width="218"
|
||||
Height="124"
|
||||
HorizontalAlignment="Left"
|
||||
Margin="24,12,0,24">
|
||||
<local:LayoutPreview />
|
||||
|
||||
<Button Content=""
|
||||
x:Name="editZoneLayoutButton"
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
FontSize="14"
|
||||
HorizontalAlignment="Center"
|
||||
Visibility="{Binding Path=Type, Converter={StaticResource LayoutTypeTemplateToVisibilityConverter}}">
|
||||
|
||||
<Button x:Name="decrementZones"
|
||||
Width="40"
|
||||
Height="40"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Zone_Count_Decrement}"
|
||||
ToolTip="{x:Static props:Resources.Zone_Count_Decrement}"
|
||||
Foreground="{DynamicResource SystemControlBackgroundAccentBrush}"
|
||||
Style="{StaticResource IconOnlyButtonStyle}"
|
||||
Click="DecrementZones_Click">
|
||||
<Button.Content>
|
||||
<TextBlock Text=""
|
||||
FontFamily="Segoe MDL2 Assets" />
|
||||
</Button.Content>
|
||||
</Button>
|
||||
|
||||
<TextBlock x:Name="zoneCount"
|
||||
Text="{Binding TemplateZoneCount}"
|
||||
FontWeight="SemiBold"
|
||||
FontSize="18"
|
||||
Width="32"
|
||||
HorizontalAlignment="Center"
|
||||
TextAlignment="Center"
|
||||
Margin="0,-4,0,0"
|
||||
ToolTip="Number of zones"
|
||||
VerticalAlignment="Center" />
|
||||
|
||||
<Button x:Name="incrementZones"
|
||||
Width="40"
|
||||
Height="40"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Zone_Count_Increment}"
|
||||
ToolTip="{x:Static props:Resources.Zone_Count_Increment}"
|
||||
Foreground="{DynamicResource SystemControlBackgroundAccentBrush}"
|
||||
Style="{StaticResource IconOnlyButtonStyle}"
|
||||
Click="IncrementZones_Click">
|
||||
<Button.Content>
|
||||
<TextBlock Text=""
|
||||
FontFamily="Segoe MDL2 Assets" />
|
||||
</Button.Content>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding Name}"
|
||||
ui:ControlHelper.Header="{x:Static props:Resources.Name}"
|
||||
Margin="0,16,2,0"
|
||||
Visibility="{Binding IsCustom, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
HorizontalAlignment="Stretch" />
|
||||
|
||||
<CheckBox x:Name="spaceAroundSetting"
|
||||
Content="{x:Static props:Resources.Show_Space_Zones}"
|
||||
IsChecked="{Binding ShowSpacing}"
|
||||
Margin="0,16,12,0"
|
||||
Visibility="{Binding Converter={StaticResource LayoutModelTypeToVisibilityConverter}}" />
|
||||
VerticalAlignment="Center"
|
||||
Height="36"
|
||||
Width="36"
|
||||
Padding="0"
|
||||
BorderBrush="Transparent"
|
||||
Click="EditZones_Click"
|
||||
Visibility="{Binding Path=Type, Converter={StaticResource LayoutTypeCustomToVisibilityConverter}}"
|
||||
ToolTip="{x:Static props:Resources.Edit_zones}"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Edit_zones}"
|
||||
Style="{StaticResource AccentButtonStyle}"
|
||||
ui:ControlHelper.CornerRadius="36">
|
||||
</Button>
|
||||
|
||||
<ui:NumberBox Margin="0,6,0,0"
|
||||
IsEnabled="{Binding ShowSpacing}"
|
||||
Text="{Binding Spacing}"
|
||||
Width="106"
|
||||
Minimum="-20"
|
||||
Maximum="1000"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
HorizontalAlignment="Left"
|
||||
AutomationProperties.LabeledBy="{Binding ElementName=spaceAroundSetting}"
|
||||
Visibility="{Binding Converter={StaticResource LayoutModelTypeToVisibilityConverter}}" />
|
||||
</Grid>
|
||||
|
||||
<TextBlock Text="{x:Static props:Resources.Distance_adjacent_zones}"
|
||||
IsEnabled="{Binding ShowSpacing}"
|
||||
Margin="0,16,12,0"
|
||||
TextWrapping="Wrap"
|
||||
Foreground="{DynamicResource PrimaryForegroundBrush}"
|
||||
x:Name="sensitivityRadiusValue" />
|
||||
|
||||
<ui:NumberBox Margin="0,6,0,0"
|
||||
Text="{Binding SensitivityRadius}"
|
||||
Width="106"
|
||||
Minimum="0"
|
||||
Maximum="1000"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
HorizontalAlignment="Left"
|
||||
AutomationProperties.LabeledBy="{Binding ElementName=sensitivityRadiusValue}" />
|
||||
|
||||
<TextBlock Text="{x:Static props:Resources.QuickKey_Select}"
|
||||
Margin="0,16,12,0"
|
||||
Foreground="{DynamicResource PrimaryForegroundBrush}"
|
||||
TextWrapping="Wrap"
|
||||
Visibility="{Binding Path=Type, Converter={StaticResource LayoutTypeCustomToVisibilityConverter}}"/>
|
||||
<ComboBox x:Name="quickKeySelectionComboBox"
|
||||
Margin="0,6,0,0"
|
||||
ItemsSource="{Binding QuickKeysAvailable}"
|
||||
SelectedItem="{Binding QuickKey}"
|
||||
Width="106"
|
||||
Visibility="{Binding Path=Type, Converter={StaticResource LayoutTypeCustomToVisibilityConverter}}"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal"
|
||||
HorizontalAlignment="Left"
|
||||
Margin="0,16,0,0"
|
||||
Visibility="{Binding Path=Type, Converter={StaticResource LayoutTypeTemplateToVisibilityConverter}}">
|
||||
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="16"
|
||||
Margin="0,16,0,0"
|
||||
ToolTip="{x:Static props:Resources.Number_of_zones}"
|
||||
Text="" />
|
||||
|
||||
<ui:NumberBox Minimum="1"
|
||||
Maximum="40"
|
||||
Width="216"
|
||||
KeyDown="EditDialogNumberBox_KeyDown"
|
||||
Margin="12,0,0,0"
|
||||
Header="{x:Static props:Resources.Number_of_zones}"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
Text="{Binding TemplateZoneCount}" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Margin="0, 12, 0, 0"
|
||||
Visibility="{Binding Converter={StaticResource LayoutModelTypeToVisibilityConverter}}">
|
||||
<TextBlock Text="{x:Static props:Resources.Space_Around_Zones}"
|
||||
x:Name="spacingTitle"
|
||||
Margin="28,0,0,4"
|
||||
TextWrapping="Wrap" />
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="16"
|
||||
ToolTip="{x:Static props:Resources.Space_Around_Zones}"
|
||||
Text="" />
|
||||
|
||||
<ui:NumberBox Margin="12,0,0,0"
|
||||
IsEnabled="{Binding ShowSpacing}"
|
||||
Text="{Binding Spacing}"
|
||||
Width="216"
|
||||
Minimum="-20"
|
||||
Maximum="1000"
|
||||
KeyDown="EditDialogNumberBox_KeyDown"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Space_Around_Zones}"
|
||||
AutomationProperties.LabeledBy="{Binding ElementName=spacingTitle}" />
|
||||
<TextBlock Text="{x:Static props:Resources.Pixels}"
|
||||
Margin="6,-4,0,0"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource SecondaryForegroundBrush}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalAlignment="Center" />
|
||||
|
||||
<ui:ToggleSwitch x:Name="spaceAroundSetting"
|
||||
IsOn="{Binding ShowSpacing}"
|
||||
Margin="12,0,0,0"
|
||||
OffContent=""
|
||||
OnContent=""
|
||||
ui:FocusVisualHelper.FocusVisualMargin="-3,-3,8,-3"
|
||||
VerticalAlignment="Center"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Show_Space_Zones}">
|
||||
<ui:ToggleSwitch.Resources>
|
||||
<sys:Double x:Key="ToggleSwitchThemeMinWidth">0</sys:Double>
|
||||
</ui:ToggleSwitch.Resources>
|
||||
</ui:ToggleSwitch>
|
||||
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
|
||||
|
||||
<StackPanel Margin="0, 12, 0, 0">
|
||||
<TextBlock Text="{x:Static props:Resources.Distance_adjacent_zones}"
|
||||
x:Name="distanceTitle"
|
||||
Margin="28,0,0,4"
|
||||
TextWrapping="Wrap" />
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="16"
|
||||
ToolTip="{x:Static props:Resources.Distance_adjacent_zones}"
|
||||
Text="" />
|
||||
|
||||
<ui:NumberBox Text="{Binding SensitivityRadius}"
|
||||
Width="216"
|
||||
Minimum="0"
|
||||
Maximum="1000"
|
||||
KeyDown="EditDialogNumberBox_KeyDown"
|
||||
Margin="12,0,0,0"
|
||||
AutomationProperties.Name="{x:Static props:Resources.Distance_adjacent_zones}"
|
||||
AutomationProperties.LabeledBy="{Binding ElementName=distanceTitle}"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
HorizontalAlignment="Left" />
|
||||
<TextBlock Text="{x:Static props:Resources.Pixels}"
|
||||
Margin="6,-4,0,0"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource SecondaryForegroundBrush}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</ui:ContentDialog>
|
||||
|
||||
@@ -421,5 +421,14 @@ namespace FancyZonesEditor
|
||||
{
|
||||
_openedDialog = null;
|
||||
}
|
||||
|
||||
private void EditDialogNumberBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
// Making sure that pressing Enter when changing values in a NumberBox will not close the edit dialog.
|
||||
if (e.Key == Key.Enter)
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ namespace FancyZonesEditor.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Distance to highlight adjacent zones.
|
||||
/// Looks up a localized string similar to Highlight distance.
|
||||
/// </summary>
|
||||
public static string Distance_adjacent_zones {
|
||||
get {
|
||||
@@ -537,6 +537,15 @@ namespace FancyZonesEditor.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Number of zones.
|
||||
/// </summary>
|
||||
public static string Number_of_zones {
|
||||
get {
|
||||
return ResourceManager.GetString("Number_of_zones", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Number of zones.
|
||||
/// </summary>
|
||||
@@ -546,6 +555,15 @@ namespace FancyZonesEditor.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to px.
|
||||
/// </summary>
|
||||
public static string Pixels {
|
||||
get {
|
||||
return ResourceManager.GetString("Pixels", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to None.
|
||||
/// </summary>
|
||||
@@ -556,11 +574,20 @@ namespace FancyZonesEditor.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Select a key to quickly apply the layout (Win + Ctrl + Alt + key).
|
||||
/// Looks up a localized string similar to Press Win + Ctrl + Alt + selected key to apply this layout.
|
||||
/// </summary>
|
||||
public static string QuickKey_Select {
|
||||
public static string QuickKey_Description {
|
||||
get {
|
||||
return ResourceManager.GetString("QuickKey_Select", resourceCulture);
|
||||
return ResourceManager.GetString("QuickKey_Description", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Layout shortcut.
|
||||
/// </summary>
|
||||
public static string QuickKey_Title {
|
||||
get {
|
||||
return ResourceManager.GetString("QuickKey_Title", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -145,7 +145,8 @@
|
||||
<value>Custom layout creator</value>
|
||||
</data>
|
||||
<data name="Distance_adjacent_zones" xml:space="preserve">
|
||||
<value>Distance to highlight adjacent zones</value>
|
||||
<value>Highlight distance</value>
|
||||
<comment>Distance of when an adjacent zone should light up when the window is close to it</comment>
|
||||
</data>
|
||||
<data name="Edit_Layout" xml:space="preserve">
|
||||
<value>Edit layout</value>
|
||||
@@ -343,10 +344,20 @@
|
||||
<value>Splitter:</value>
|
||||
<comment>Title for concept: A segmenter visual for splitting one item into two. This would be the vertical line</comment>
|
||||
</data>
|
||||
<data name="QuickKey_Select" xml:space="preserve">
|
||||
<value>Select a key to quickly apply the layout (Win + Ctrl + Alt + key)</value>
|
||||
<data name="QuickKey_Description" xml:space="preserve">
|
||||
<value>Press Win + Ctrl + Alt + selected key to apply this layout</value>
|
||||
</data>
|
||||
<data name="Quick_Key_None" xml:space="preserve">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name="Number_of_zones" xml:space="preserve">
|
||||
<value>Number of zones</value>
|
||||
</data>
|
||||
<data name="Pixels" xml:space="preserve">
|
||||
<value>px</value>
|
||||
<comment>Abbreviation of pixels</comment>
|
||||
</data>
|
||||
<data name="QuickKey_Title" xml:space="preserve">
|
||||
<value>Layout shortcut</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -16,7 +16,7 @@
|
||||
<Setter Property="VerticalContentAlignment" Value="Top" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" />
|
||||
<Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
|
||||
<Setter Property="MinWidth" Value="120" />
|
||||
<Setter Property="MinWidth" Value="0" />
|
||||
<Setter Property="FocusVisualStyle" Value="{DynamicResource {x:Static SystemParameters.FocusVisualStyleKey}}" />
|
||||
<Setter Property="ui:FocusVisualHelper.UseSystemFocusVisuals" Value="{DynamicResource UseSystemFocusVisuals}" />
|
||||
<Setter Property="ui:FocusVisualHelper.FocusVisualMargin" Value="0" />
|
||||
|
||||
@@ -334,11 +334,11 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Malformed_Data" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA['zones-settings.json' contains malformed data.]]></Val>
|
||||
<Val><![CDATA[A layout that contained invalid data has been removed.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA["zones-settings.json" contiene datos con un formato incorrecto.]]></Val>
|
||||
<Val><![CDATA[Se quitó un diseño que contenía datos que no son válidos.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
@@ -352,15 +352,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_User_Choice" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Would you like to continue? Malformed data will be lost.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[¿Quiere continuar? Se perderán los datos con un formato incorrecto.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Persisting_Custom_Layout" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Error persisting custom layout]]></Val>
|
||||
|
||||
@@ -334,11 +334,11 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Malformed_Data" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA['zones-settings.json' contains malformed data.]]></Val>
|
||||
<Val><![CDATA[A layout that contained invalid data has been removed.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[« zones-settings.json » contient des données malformées.]]></Val>
|
||||
<Val><![CDATA[Une disposition qui contenait des données non valides a été supprimée.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
@@ -352,15 +352,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_User_Choice" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Would you like to continue? Malformed data will be lost.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Voulez-vous continuer ? Les données malformées seront perdues.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Persisting_Custom_Layout" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Error persisting custom layout]]></Val>
|
||||
|
||||
@@ -334,11 +334,11 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Malformed_Data" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA['zones-settings.json' contains malformed data.]]></Val>
|
||||
<Val><![CDATA[A layout that contained invalid data has been removed.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA['zones-settings.json' contém dados malformados.]]></Val>
|
||||
<Val><![CDATA[Um layout que continha dados inválidos foi removido.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
@@ -352,15 +352,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_User_Choice" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Would you like to continue? Malformed data will be lost.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Deseja continuar? Os dados malformados serão perdidos.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Persisting_Custom_Layout" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Error persisting custom layout]]></Val>
|
||||
|
||||
@@ -334,11 +334,11 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Malformed_Data" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA['zones-settings.json' contains malformed data.]]></Val>
|
||||
<Val><![CDATA[A layout that contained invalid data has been removed.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA["zones-settings.json" contém dados malformados.]]></Val>
|
||||
<Val><![CDATA[Foi removido um esquema que continha dados inválidos.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
@@ -352,15 +352,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_User_Choice" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Would you like to continue? Malformed data will be lost.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Pretende continuar? Os dados malformados serão perdidos.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Persisting_Custom_Layout" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Error persisting custom layout]]></Val>
|
||||
|
||||
@@ -334,11 +334,11 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Malformed_Data" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_Message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA['zones-settings.json' contains malformed data.]]></Val>
|
||||
<Val><![CDATA[A layout that contained invalid data has been removed.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA['zones-settings.json' hatalı biçimlendirilmiş veriler içeriyor.]]></Val>
|
||||
<Val><![CDATA[Geçersiz veri içeren düzen kaldırıldı.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
@@ -352,15 +352,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Parsing_Zones_Settings_User_Choice" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Would you like to continue? Malformed data will be lost.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Devam etmek istiyor musunuz? Hatalı biçimlendirilmiş veriler kaybolacak.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Error_Persisting_Custom_Layout" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Error persisting custom layout]]></Val>
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace ZonedWindowProperties
|
||||
const wchar_t MultiMonitorDeviceID[] = L"FancyZones#MultiMonitorDevice";
|
||||
}
|
||||
|
||||
// in reality, this file needs to be kept in sync currently with src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/FZConfigProperties.cs
|
||||
struct Settings
|
||||
{
|
||||
enum struct OverlappingZonesAlgorithm : int
|
||||
@@ -45,7 +46,7 @@ struct Settings
|
||||
std::wstring zoneHighlightColor = L"#008CFF";
|
||||
int zoneHighlightOpacity = 50;
|
||||
OverlappingZonesAlgorithm overlappingZonesAlgorithm = OverlappingZonesAlgorithm::Smallest;
|
||||
PowerToysSettings::HotkeyObject editorHotkey = PowerToysSettings::HotkeyObject::from_settings(true, false, false, false, VK_OEM_3);
|
||||
PowerToysSettings::HotkeyObject editorHotkey = PowerToysSettings::HotkeyObject::from_settings(true, false, false, true, VK_OEM_3);
|
||||
std::wstring excludedApps = L"";
|
||||
std::vector<std::wstring> excludedAppsArray;
|
||||
};
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
// This class sets the visibility property of Advanced settings based on the OS Version
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public static class AdvancedSettings
|
||||
{
|
||||
public static bool UseNewSettings()
|
||||
{
|
||||
return interop.CommonManaged.ShouldNewSettingsBeUsed();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -59,232 +59,7 @@ namespace ImageResizer.Properties {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About.
|
||||
/// </summary>
|
||||
public static string Advanced_About {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_About", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Create a new size.
|
||||
/// </summary>
|
||||
public static string Advanced_CreateSize {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_CreateSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Delete.
|
||||
/// </summary>
|
||||
public static string Advanced_DeleteSize {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_DeleteSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Encoding.
|
||||
/// </summary>
|
||||
public static string Advanced_Encoding {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_Encoding", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Fallback encoder:.
|
||||
/// </summary>
|
||||
public static string Advanced_FallbackEncoder {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FallbackEncoder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Fallback encoder.
|
||||
/// </summary>
|
||||
public static string Advanced_FallbackEncoder_Name {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FallbackEncoder_Name", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File.
|
||||
/// </summary>
|
||||
public static string Advanced_File {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_File", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Filename:.
|
||||
/// </summary>
|
||||
public static string Advanced_FileName {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Filename.
|
||||
/// </summary>
|
||||
public static string Advanced_FileName_Name {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileName_Name", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Original filename.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken1 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Size name.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken2 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Selected width.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken3 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Selected height.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken4 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Actual width (pixels).
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken5 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken5", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Actual height (pixels).
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken6 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken6", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The following parameters can be used..
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameTokens {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameTokens", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _JPEG quality level:.
|
||||
/// </summary>
|
||||
public static string Advanced_JpegQualityLevel {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_JpegQualityLevel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to JPEG quality level.
|
||||
/// </summary>
|
||||
public static string Advanced_JpegQualityLevel_Name {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_JpegQualityLevel_Name", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Use original date modified.
|
||||
/// </summary>
|
||||
public static string Advanced_KeepDateModified {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_KeepDateModified", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _PNG interlacing:.
|
||||
/// </summary>
|
||||
public static string Advanced_PngInterlaceOption {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_PngInterlaceOption", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to PNG interlacing.
|
||||
/// </summary>
|
||||
public static string Advanced_PngInterlaceOption_Name {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_PngInterlaceOption_Name", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Sizes.
|
||||
/// </summary>
|
||||
public static string Advanced_Sizes {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_Sizes", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _TIFF compression:.
|
||||
/// </summary>
|
||||
public static string Advanced_TiffCompressOption {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_TiffCompressOption", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to TIFF compression.
|
||||
/// </summary>
|
||||
public static string Advanced_TiffCompressOption_Name {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_TiffCompressOption_Name", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Settings.
|
||||
/// </summary>
|
||||
public static string Advanced_Title {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_Title", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to All Files.
|
||||
/// </summary>
|
||||
@@ -302,16 +77,7 @@ namespace ImageResizer.Properties {
|
||||
return ResourceManager.GetString("Cancel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to © 2020 Brice Lambson. All rights reserved..
|
||||
/// </summary>
|
||||
public static string Copyright {
|
||||
get {
|
||||
return ResourceManager.GetString("Copyright", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Height.
|
||||
/// </summary>
|
||||
@@ -384,15 +150,6 @@ namespace ImageResizer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Settings.
|
||||
/// </summary>
|
||||
public static string Input_ShowAdvanced {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_ShowAdvanced", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Make pictures smaller but not larger.
|
||||
/// </summary>
|
||||
@@ -726,69 +483,6 @@ namespace ImageResizer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to CCITT3.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Ccitt3 {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Ccitt3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to CCITT4.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Ccitt4 {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Ccitt4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to (Default).
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Default {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Default", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to LZW.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Lzw {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Lzw", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to None.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_None {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_None", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to RLE.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Rle {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Rle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to ZIP.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Zip {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Zip", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Times Symbol.
|
||||
/// </summary>
|
||||
|
||||
@@ -117,93 +117,12 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>About</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Create a new size</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
<comment>remove a file</comment>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Encoding</value>
|
||||
<comment>encoding a file to a different format</comment>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Fallback encoder:</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder_Name" xml:space="preserve">
|
||||
<value>Fallback encoder</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>File</value>
|
||||
<comment>as in file name</comment>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Filename:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Original filename</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Size name</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Selected width</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Selected height</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Actual width (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Actual height (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>The following parameters can be used.</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName_Name" xml:space="preserve">
|
||||
<value>Filename</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_JPEG quality level:</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel_Name" xml:space="preserve">
|
||||
<value>JPEG quality level</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Use original date modified</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_PNG interlacing:</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption_Name" xml:space="preserve">
|
||||
<value>PNG interlacing</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Sizes</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>_TIFF compression:</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption_Name" xml:space="preserve">
|
||||
<value>TIFF compression</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>All Files</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2020 Brice Lambson. All rights reserved.</value>
|
||||
</data>
|
||||
<data name="Height" xml:space="preserve">
|
||||
<value>Height</value>
|
||||
</data>
|
||||
@@ -229,9 +148,6 @@
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Resize</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>_Make pictures smaller but not larger</value>
|
||||
</data>
|
||||
@@ -343,32 +259,6 @@
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Small</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
<comment>Do not loc</comment>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
<comment>Do not loc</comment>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Default)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
<comment>Do not loc</comment>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
<comment>Do not loc</comment>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>ZIP</value>
|
||||
<comment>Do not loc</comment>
|
||||
</data>
|
||||
<data name="Times_Symbol" xml:space="preserve">
|
||||
<value>Times Symbol</value>
|
||||
</data>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
// ShowAdvancedCommand = new RelayCommand(ShowAdvanced);
|
||||
|
||||
using System.Windows.Input;
|
||||
using ImageResizer.Helpers;
|
||||
@@ -35,21 +34,14 @@ namespace ImageResizer.ViewModels
|
||||
|
||||
ResizeCommand = new RelayCommand(Resize);
|
||||
CancelCommand = new RelayCommand(Cancel);
|
||||
ShowAdvancedCommand = new RelayCommand(ShowAdvanced);
|
||||
|
||||
ShowAdvancedSettings = !AdvancedSettings.UseNewSettings();
|
||||
}
|
||||
|
||||
public bool ShowAdvancedSettings { get; }
|
||||
|
||||
public Settings Settings { get; }
|
||||
|
||||
public ICommand ResizeCommand { get; }
|
||||
|
||||
public ICommand CancelCommand { get; }
|
||||
|
||||
public ICommand ShowAdvancedCommand { get; }
|
||||
|
||||
public void Resize()
|
||||
{
|
||||
Settings.Save();
|
||||
@@ -58,8 +50,5 @@ namespace ImageResizer.ViewModels
|
||||
|
||||
public void Cancel()
|
||||
=> _mainView.Close();
|
||||
|
||||
public void ShowAdvanced()
|
||||
=> _mainView.ShowAdvanced(new AdvancedViewModel(Settings));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using System.Windows.Automation.Peers;
|
||||
using System.Windows.Documents;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
public class AccessibleHyperlink : Hyperlink
|
||||
{
|
||||
public AutomationControlType ControlType { get; set; }
|
||||
|
||||
protected override AutomationPeer OnCreateAutomationPeer()
|
||||
{
|
||||
var peer = new CustomizableHyperlinkAutomationPeer(this);
|
||||
|
||||
peer.ControlType = ControlType;
|
||||
return peer;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,312 +0,0 @@
|
||||
<Window x:Class="ImageResizer.Views.AdvancedWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:ImageResizer.Views"
|
||||
xmlns:m="clr-namespace:ImageResizer.Models"
|
||||
xmlns:p="clr-namespace:ImageResizer.Properties"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:ui="http://schemas.modernwpf.com/2019"
|
||||
ContentRendered="WindowContentRendered"
|
||||
MinWidth="560"
|
||||
MinHeight="340"
|
||||
ui:WindowHelper.UseModernWindowStyle="True"
|
||||
ui:TitleBar.IsIconVisible="True"
|
||||
Background="{DynamicResource PrimaryBackgroundBrush}"
|
||||
Name="_this"
|
||||
ResizeMode="NoResize"
|
||||
SizeToContent="WidthAndHeight"
|
||||
Title="{x:Static p:Resources.Advanced_Title}"
|
||||
WindowStyle="ToolWindow"
|
||||
WindowStartupLocation="CenterScreen">
|
||||
|
||||
<Window.Resources>
|
||||
<ObjectDataProvider x:Key="PngInterlaceOptionValues"
|
||||
MethodName="GetValues"
|
||||
ObjectType="{x:Type sys:Enum}">
|
||||
<ObjectDataProvider.MethodParameters>
|
||||
<x:Type TypeName="PngInterlaceOption"/>
|
||||
</ObjectDataProvider.MethodParameters>
|
||||
</ObjectDataProvider>
|
||||
<ObjectDataProvider x:Key="TiffCompressOptionValues"
|
||||
MethodName="GetValues"
|
||||
ObjectType="{x:Type sys:Enum}">
|
||||
<ObjectDataProvider.MethodParameters>
|
||||
<x:Type TypeName="TiffCompressOption"/>
|
||||
</ObjectDataProvider.MethodParameters>
|
||||
</ObjectDataProvider>
|
||||
<local:ContainerFormatConverter x:Key="ContainerFormatConverter"/>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid Margin="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TabControl Style="{StaticResource TabControlPivotStyle}">
|
||||
<TabItem Header="{x:Static p:Resources.Advanced_Sizes}">
|
||||
<StackPanel Margin="0,12,0,12">
|
||||
<!-- TODO: Allow these to be drag-and-drop reordered (issue #15) -->
|
||||
<ItemsControl Grid.IsSharedSizeScope="True" TabIndex="0" ItemsSource="{Binding Settings.Sizes}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="m:ResizeSize">
|
||||
<Grid Margin="0,0,0,8">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition SharedSizeGroup="0"/>
|
||||
<ColumnDefinition SharedSizeGroup="1"/>
|
||||
<ColumnDefinition SharedSizeGroup="2"/>
|
||||
<ColumnDefinition SharedSizeGroup="3"/>
|
||||
<ColumnDefinition SharedSizeGroup="4"/>
|
||||
<ColumnDefinition SharedSizeGroup="5"/>
|
||||
<ColumnDefinition SharedSizeGroup="6"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Width="96"
|
||||
MaxWidth="96"
|
||||
TextWrapping="Wrap"
|
||||
AutomationProperties.Name="{Binding Name}"
|
||||
Text="{Binding Name}"/>
|
||||
<ComboBox Grid.Column="1"
|
||||
Margin="8,0,0,0"
|
||||
Width="90"
|
||||
ItemsSource="{Binding Source={StaticResource ResizeFitValues}}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Resize_Type}"
|
||||
SelectedItem="{Binding Fit}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type m:ResizeFit}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<TextBox Grid.Column="2"
|
||||
Width="56"
|
||||
MaxWidth="56"
|
||||
TextWrapping="Wrap"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Width}"
|
||||
Margin="8,0,0,0">
|
||||
<TextBox.Text>
|
||||
<Binding Converter="{StaticResource AutoDoubleConverter}"
|
||||
Path="Width"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:AutoDoubleValidationRule/>
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
<TextBlock Grid.Column="3"
|
||||
Foreground="{DynamicResource PrimaryForegroundBrush}"
|
||||
Name="Times_Symbol"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Times_Symbol}"
|
||||
VerticalAlignment="Center"
|
||||
Text=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
Width="25"
|
||||
TextAlignment="Center"
|
||||
Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}"/>
|
||||
<TextBox Grid.Column="4"
|
||||
Width="56"
|
||||
MaxWidth="56"
|
||||
TextWrapping="Wrap"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Height}"
|
||||
Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}">
|
||||
<TextBox.Text>
|
||||
<Binding Converter="{StaticResource AutoDoubleConverter}"
|
||||
Path="Height"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:AutoDoubleValidationRule/>
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
<ComboBox Grid.Column="5"
|
||||
Margin="8,0,0,0"
|
||||
MinWidth="120"
|
||||
ItemsSource="{Binding Source={StaticResource ResizeUnitValues}}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Unit}"
|
||||
SelectedItem="{Binding Unit}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type m:ResizeUnit}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<Button Content=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
Background="Transparent"
|
||||
Grid.Column="6"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Advanced_DeleteSize}"
|
||||
ToolTip="{x:Static p:Resources.Advanced_DeleteSize}"
|
||||
Command="{Binding DataContext.RemoveSizeCommand,ElementName=_this}"
|
||||
CommandParameter="{Binding}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<Button Margin="0,12,0,0"
|
||||
Command="{Binding AddSizeCommand}"
|
||||
Content="{x:Static p:Resources.Advanced_CreateSize}"/>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.Advanced_Encoding}">
|
||||
<Grid Margin="0,12,0,12" VerticalAlignment="Top">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Label Content="{x:Static p:Resources.Advanced_FallbackEncoder}"
|
||||
Padding="0,8,8,0"
|
||||
Target="{Binding ElementName=_fallbackEncoderComboBox}"/>
|
||||
<ComboBox Grid.Column="1"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="148"
|
||||
ItemsSource="{Binding Encoders}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Advanced_FallbackEncoder_Name}"
|
||||
Name="_fallbackEncoderComboBox"
|
||||
SelectedItem="{Binding Settings.FallbackEncoder}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type sys:Guid}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource ContainerFormatConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<Label Grid.Row="1"
|
||||
Margin="0,8,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_JpegQualityLevel}"
|
||||
Padding="0,8,8,0"
|
||||
Target="{Binding ElementName=_jpegQualityLevelTextBox}"/>
|
||||
<TextBox Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="56"
|
||||
MinWidth="148"
|
||||
TextWrapping="Wrap"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Advanced_JpegQualityLevel_Name}"
|
||||
Margin="0,8,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Name="_jpegQualityLevelTextBox"
|
||||
Text="{Binding Settings.JpegQualityLevel,ValidatesOnExceptions=True,ValidatesOnDataErrors=True}"/>
|
||||
<Label Grid.Row="2"
|
||||
Margin="0,8,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_PngInterlaceOption}"
|
||||
Padding="0,8,8,0"
|
||||
Target="{Binding ElementName=_pngInterlaceComboBox}"/>
|
||||
<ComboBox Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Margin="0,8,0,0"
|
||||
MinWidth="148"
|
||||
HorizontalAlignment="Left"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Advanced_PngInterlaceOption_Name}"
|
||||
ItemsSource="{Binding Source={StaticResource PngInterlaceOptionValues}}"
|
||||
Name="_pngInterlaceComboBox"
|
||||
SelectedItem="{Binding Settings.PngInterlaceOption}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type PngInterlaceOption}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<Label Grid.Row="3"
|
||||
Margin="0,8,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_TiffCompressOption}"
|
||||
Padding="0,8,8,0"
|
||||
Target="{Binding ElementName=_tiffCompressComboBox}"/>
|
||||
<ComboBox Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
MinWidth="148"
|
||||
Margin="0,8,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Advanced_TiffCompressOption_Name}"
|
||||
ItemsSource="{Binding Source={StaticResource TiffCompressOptionValues}}"
|
||||
Name="_tiffCompressComboBox"
|
||||
SelectedItem="{Binding Settings.TiffCompressOption}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type TiffCompressOption}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.Advanced_File}">
|
||||
<StackPanel Margin="0,12,0,12">
|
||||
<TextBlock Text="{x:Static p:Resources.Advanced_FileNameTokens}"/>
|
||||
<TextBlock Margin="0,8,0,0">
|
||||
<Run Text="%1 -"/>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken1}"/>
|
||||
<LineBreak/>
|
||||
<Run>%2 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken2}"/>
|
||||
<LineBreak/>
|
||||
<Run>%3 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken3}"/>
|
||||
<LineBreak/>
|
||||
<Run>%4 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken4}"/>
|
||||
<LineBreak/>
|
||||
<Run>%5 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken5}"/>
|
||||
<LineBreak/>
|
||||
<Run>%6 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken6}"/>
|
||||
</TextBlock>
|
||||
<Grid Margin="0,8,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label HorizontalAlignment="Left"
|
||||
x:Name="fileNameTextBoxLabel"
|
||||
Content="{x:Static p:Resources.Advanced_FileName}"
|
||||
Padding="0,4,4,0"
|
||||
Target="{Binding ElementName=fileNameTextBox}"/>
|
||||
<TextBox Grid.Column="1"
|
||||
Height="23"
|
||||
MinWidth="240"
|
||||
TabIndex="0"
|
||||
HorizontalAlignment="Left"
|
||||
TextWrapping="Wrap"
|
||||
Name="fileNameTextBox"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Advanced_FileName_Name}"
|
||||
Text="{Binding Settings.FileName}"/>
|
||||
</Grid>
|
||||
<Separator Margin="0,12,0,0"/>
|
||||
<CheckBox Margin="0,12,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_KeepDateModified}"
|
||||
IsChecked="{Binding Settings.KeepDateModified}"/>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<Border Grid.Row="1"
|
||||
Margin="0,24,0,0"
|
||||
BorderBrush="{DynamicResource PrimaryBorderBrush}"
|
||||
BorderThickness="0,1,0,0"
|
||||
Background="{DynamicResource SecondaryBackgroundBrush}"
|
||||
Padding="12">
|
||||
|
||||
<StackPanel
|
||||
HorizontalAlignment="Right"
|
||||
Orientation="Horizontal">
|
||||
<Button MinWidth="76"
|
||||
TabIndex="100"
|
||||
Click="HandleAcceptClick"
|
||||
Style="{StaticResource AccentButtonStyle}"
|
||||
Content="{x:Static p:Resources.OK}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.OK_Tooltip}"
|
||||
IsDefault="True"/>
|
||||
|
||||
<Button MinWidth="76"
|
||||
Margin="8,0,0,0"
|
||||
TabIndex="101"
|
||||
Content="{x:Static p:Resources.Cancel}"
|
||||
IsCancel="True"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -1,35 +0,0 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
using System.Windows.Navigation;
|
||||
using ImageResizer.ViewModels;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
public partial class AdvancedWindow : Window
|
||||
{
|
||||
public AdvancedWindow(AdvancedViewModel viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void HandleAcceptClick(object sender, RoutedEventArgs e)
|
||||
=> DialogResult = true;
|
||||
|
||||
private void HandleRequestNavigate(object sender, RequestNavigateEventArgs e)
|
||||
{
|
||||
Process.Start(e.Uri.ToString());
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
// Fix for black outline WPF bug when a window uses custom chrome. More info here https://stackoverflow.com/questions/29207331/wpf-window-with-custom-chrome-has-unwanted-outline-on-right-and-bottom
|
||||
private void WindowContentRendered(object sender, System.EventArgs e)
|
||||
{
|
||||
InvalidateVisual();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Globalization;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
internal class AutoDoubleValidationRule : ValidationRule
|
||||
{
|
||||
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
|
||||
{
|
||||
var text = (string)value;
|
||||
|
||||
return new ValidationResult(
|
||||
string.IsNullOrEmpty(text)
|
||||
|| double.TryParse(text, NumberStyles.AllowThousands | NumberStyles.Float, cultureInfo, out var _),
|
||||
null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
using ImageResizer.ViewModels;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
[ValueConversion(typeof(Guid), typeof(string))]
|
||||
public class ContainerFormatConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
=> AdvancedViewModel.EncoderMap.TryGetValue((Guid)value, out var result)
|
||||
? result
|
||||
: value?.ToString();
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
=> throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System.Windows.Automation.Peers;
|
||||
using System.Windows.Documents;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
public class CustomizableHyperlinkAutomationPeer : HyperlinkAutomationPeer
|
||||
{
|
||||
public CustomizableHyperlinkAutomationPeer(Hyperlink owner)
|
||||
: base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
public AutomationControlType ControlType { get; set; }
|
||||
|
||||
protected override AutomationControlType GetAutomationControlTypeCore()
|
||||
{
|
||||
return ControlType;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
// void ShowAdvanced(AdvancedViewModel viewModel);
|
||||
|
||||
using System.Collections.Generic;
|
||||
using ImageResizer.ViewModels;
|
||||
@@ -12,8 +11,6 @@ namespace ImageResizer.Views
|
||||
{
|
||||
void Close();
|
||||
|
||||
void ShowAdvanced(AdvancedViewModel viewModel);
|
||||
|
||||
IEnumerable<string> OpenPictureFiles();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,9 @@
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<Style x:Key="DisabledWhenUnselectedTextBoxStyle" TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyle}">
|
||||
<Style x:Key="DisabledWhenUnselectedTextBoxStyle"
|
||||
TargetType="ui:NumberBox"
|
||||
>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True">
|
||||
<Setter Property="IsEnabled" Value="True"/>
|
||||
@@ -67,25 +69,49 @@
|
||||
|
||||
<ListBox.Resources>
|
||||
<DataTemplate DataType="{x:Type m:ResizeSize}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="{Binding Name}" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryForegroundBrush}"/>
|
||||
<TextBlock Text="(" Margin="4,0,0,0" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
<TextBlock Text="{Binding Fit,Converter={StaticResource EnumValueConverter},ConverterParameter=ThirdPersonSingular}" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
<Grid Margin="0,0,0,4">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="20" />
|
||||
<RowDefinition Height="24" />
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{Binding Name}"
|
||||
FontWeight="SemiBold"
|
||||
FontSize="16"
|
||||
Margin="0,-2,0,0"
|
||||
VerticalAlignment="Top"
|
||||
Foreground="{DynamicResource PrimaryForegroundBrush}" />
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Grid.Row="1"
|
||||
VerticalAlignment="Top">
|
||||
<TextBlock Text="{Binding Fit,Converter={StaticResource EnumValueConverter},ConverterParameter=ThirdPersonSingular}" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
<TextBlock Text="{Binding Width,Converter={StaticResource AutoDoubleConverter},ConverterParameter=Auto}" Margin="4,0,0,0" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
<TextBlock Text="" FontSize="11" FontFamily="Segoe MDL2 Assets" Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}" Margin="4,5,0,0" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
<TextBlock Text="{Binding Height,Converter={StaticResource AutoDoubleConverter},ConverterParameter=Auto}" Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}" Margin="4,0,0,0" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
<TextBlock Text="{Binding Unit,Converter={StaticResource EnumValueConverter},ConverterParameter=ToLower}" Margin="4,0,0,0" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
<TextBlock Text=")" Foreground="{DynamicResource SecondaryForegroundBrush}"/>
|
||||
</StackPanel>
|
||||
<TextBlock Text="{Binding Unit,Converter={StaticResource EnumValueConverter},ConverterParameter=ToLower}"
|
||||
Margin="4,0,0,0"
|
||||
Foreground="{DynamicResource SecondaryForegroundBrush}" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
|
||||
<DataTemplate DataType="{x:Type m:CustomSize}">
|
||||
<StackPanel Orientation="Horizontal" Margin="0,-8,0,0">
|
||||
<TextBlock VerticalAlignment="Center"
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="*" />
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock VerticalAlignment="Top"
|
||||
Text="{Binding Name}"
|
||||
FontSize="16"
|
||||
Margin="0,-2,0,0"
|
||||
Foreground="{DynamicResource PrimaryForegroundBrush}"
|
||||
FontWeight="SemiBold"/>
|
||||
<ComboBox Margin="8,0,0,0"
|
||||
FontWeight="SemiBold" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="1" Margin="0,-8,0,0">
|
||||
|
||||
<ComboBox Margin="0,0,0,0"
|
||||
ItemsSource="{Binding Source={StaticResource ResizeFitValues}}"
|
||||
Style="{StaticResource DisabledWhenUnselectedComboBoxStyle}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Resize_Type}"
|
||||
@@ -96,22 +122,19 @@
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<TextBox Width="56"
|
||||
TextWrapping="Wrap"
|
||||
Style="{StaticResource DisabledWhenUnselectedTextBoxStyle}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Width}"
|
||||
Margin="8,0,0,0">
|
||||
<TextBox.Text>
|
||||
<Binding Converter="{StaticResource AutoDoubleConverter}"
|
||||
Path="Width"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:AutoDoubleValidationRule/>
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
<TextBlock VerticalAlignment="Center"
|
||||
<ui:NumberBox SpinButtonPlacementMode="Compact"
|
||||
Minimum="1"
|
||||
Width="102"
|
||||
Style="{StaticResource DisabledWhenUnselectedTextBoxStyle}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Width}"
|
||||
Margin="8,0,0,0">
|
||||
<ui:NumberBox.Value>
|
||||
<Binding Path="Width"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
</Binding>
|
||||
</ui:NumberBox.Value>
|
||||
</ui:NumberBox>
|
||||
<TextBlock VerticalAlignment="Center"
|
||||
Text=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
Width="25"
|
||||
@@ -121,22 +144,19 @@
|
||||
TextAlignment="Center"
|
||||
Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}"/>
|
||||
|
||||
<TextBox Width="56"
|
||||
Style="{StaticResource DisabledWhenUnselectedTextBoxStyle}"
|
||||
TextWrapping="Wrap"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Height}"
|
||||
Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}">
|
||||
<TextBox.Text>
|
||||
<Binding Converter="{StaticResource AutoDoubleConverter}"
|
||||
Path="Height"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:AutoDoubleValidationRule/>
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
<ComboBox Margin="8,0,0,0"
|
||||
<ui:NumberBox Style="{StaticResource DisabledWhenUnselectedTextBoxStyle}"
|
||||
SpinButtonPlacementMode="Compact"
|
||||
Minimum="1"
|
||||
Width="102"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Height}"
|
||||
Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}">
|
||||
<ui:NumberBox.Value>
|
||||
<Binding Path="Height"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
</Binding>
|
||||
</ui:NumberBox.Value>
|
||||
</ui:NumberBox>
|
||||
<ComboBox Margin="8,0,0,0"
|
||||
ItemsSource="{Binding Source={StaticResource ResizeUnitValues}}"
|
||||
Style="{StaticResource DisabledWhenUnselectedComboBoxStyle}"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Unit}"
|
||||
@@ -148,6 +168,7 @@
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.Resources>
|
||||
</ListBox>
|
||||
@@ -177,17 +198,6 @@
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button Content=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
Style="{StaticResource DefaultButtonStyle}"
|
||||
FontSize="16"
|
||||
Margin="-6,0,0,0"
|
||||
AutomationProperties.Name="{x:Static p:Resources.Input_ShowAdvanced}"
|
||||
ToolTip="{x:Static p:Resources.Input_ShowAdvanced}"
|
||||
Background="Transparent"
|
||||
Command="{Binding ShowAdvancedCommand}"
|
||||
Visibility="{Binding ShowAdvancedSettings, Converter={StaticResource BoolValueConverter}}"/>
|
||||
|
||||
<Button Grid.Column="1"
|
||||
Style="{StaticResource AccentButtonStyle}"
|
||||
MinWidth="76"
|
||||
|
||||
@@ -39,8 +39,6 @@ namespace ImageResizer.Views
|
||||
return openFileDialog.FileNames;
|
||||
}
|
||||
|
||||
public void ShowAdvanced(AdvancedViewModel viewModel) => viewModel?.Close(new AdvancedWindow(viewModel).ShowDialog() == true);
|
||||
|
||||
void IMainView.Close()
|
||||
=> Dispatcher.Invoke((Action)Close);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <winrt/base.h>
|
||||
#include <common/utils/resources.h>
|
||||
#include "keyboardmanager/dll/Generated Files/resource.h"
|
||||
#include "common/interop/shared_constants.h"
|
||||
|
||||
namespace KeyboardManagerConstants
|
||||
{
|
||||
@@ -40,7 +41,7 @@ namespace KeyboardManagerConstants
|
||||
inline const std::wstring DefaultConfiguration = L"default";
|
||||
|
||||
// Name of the named mutex used for configuration file.
|
||||
inline const std::wstring ConfigFileMutexName = L"PowerToys.KeyboardManager.ConfigMutex";
|
||||
inline const std::wstring ConfigFileMutexName = CommonSharedConstants::KEYBOARD_MANAGER_CONFIG_FILE_MUTEX_NAME;
|
||||
|
||||
// Name of the dummy update file.
|
||||
inline const std::wstring DummyUpdateFileName = L"settings-updated.json";
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#include <common/utils/elevation.h>
|
||||
#include <common/utils/process_path.h>
|
||||
#include <common/utils/resources.h>
|
||||
#include <common/utils/os-detect.h>
|
||||
#include <common/utils/winapi_error.h>
|
||||
|
||||
#include <filesystem>
|
||||
@@ -185,89 +184,86 @@ public:
|
||||
Logger::info("Launcher is enabling");
|
||||
ResetEvent(m_hEvent);
|
||||
ResetEvent(send_telemetry_event);
|
||||
// Start PowerLauncher.exe only if the OS is 19H1 or higher
|
||||
if (UseNewSettings())
|
||||
|
||||
unsigned long powertoys_pid = GetCurrentProcessId();
|
||||
|
||||
if (!is_process_elevated(false))
|
||||
{
|
||||
unsigned long powertoys_pid = GetCurrentProcessId();
|
||||
Logger::trace("Starting PowerToys Run from not elevated process");
|
||||
std::wstring executable_args;
|
||||
executable_args += L" -powerToysPid ";
|
||||
executable_args += std::to_wstring(powertoys_pid);
|
||||
executable_args += L" --centralized-kb-hook";
|
||||
|
||||
if (!is_process_elevated(false))
|
||||
SHELLEXECUTEINFOW sei{ sizeof(sei) };
|
||||
sei.fMask = { SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI };
|
||||
sei.lpFile = L"modules\\launcher\\PowerLauncher.exe";
|
||||
sei.nShow = SW_SHOWNORMAL;
|
||||
sei.lpParameters = executable_args.data();
|
||||
|
||||
if (ShellExecuteExW(&sei))
|
||||
{
|
||||
Logger::trace("Starting PowerToys Run from not elevated process");
|
||||
std::wstring executable_args;
|
||||
executable_args += L" -powerToysPid ";
|
||||
executable_args += std::to_wstring(powertoys_pid);
|
||||
executable_args += L" --centralized-kb-hook";
|
||||
|
||||
SHELLEXECUTEINFOW sei{ sizeof(sei) };
|
||||
sei.fMask = { SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI };
|
||||
sei.lpFile = L"modules\\launcher\\PowerLauncher.exe";
|
||||
sei.nShow = SW_SHOWNORMAL;
|
||||
sei.lpParameters = executable_args.data();
|
||||
|
||||
if (ShellExecuteExW(&sei))
|
||||
{
|
||||
m_enabled = true;
|
||||
m_hProcess = sei.hProcess;
|
||||
Logger::trace("Started PowerToys Run. Handle {}", m_hProcess);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger::error("Launcher failed to start");
|
||||
}
|
||||
m_enabled = true;
|
||||
m_hProcess = sei.hProcess;
|
||||
Logger::trace("Started PowerToys Run. Handle {}", m_hProcess);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger::trace("Starting PowerToys Run from elevated process");
|
||||
std::wstring action_runner_path = get_module_folderpath();
|
||||
Logger::error("Launcher failed to start");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger::trace("Starting PowerToys Run from elevated process");
|
||||
std::wstring action_runner_path = get_module_folderpath();
|
||||
|
||||
std::wstring params;
|
||||
params += L"-run-non-elevated ";
|
||||
params += L"-target modules\\launcher\\PowerLauncher.exe ";
|
||||
params += L"-pidFile ";
|
||||
params += POWER_LAUNCHER_PID_SHARED_FILE;
|
||||
params += L" -powerToysPid " + std::to_wstring(powertoys_pid) + L" ";
|
||||
params += L"--centralized-kb-hook ";
|
||||
std::wstring params;
|
||||
params += L"-run-non-elevated ";
|
||||
params += L"-target modules\\launcher\\PowerLauncher.exe ";
|
||||
params += L"-pidFile ";
|
||||
params += POWER_LAUNCHER_PID_SHARED_FILE;
|
||||
params += L" -powerToysPid " + std::to_wstring(powertoys_pid) + L" ";
|
||||
params += L"--centralized-kb-hook ";
|
||||
|
||||
action_runner_path += L"\\action_runner.exe";
|
||||
// Set up the shared file from which to retrieve the PID of PowerLauncher
|
||||
HANDLE hMapFile = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(DWORD), POWER_LAUNCHER_PID_SHARED_FILE);
|
||||
if (!hMapFile)
|
||||
action_runner_path += L"\\action_runner.exe";
|
||||
// Set up the shared file from which to retrieve the PID of PowerLauncher
|
||||
HANDLE hMapFile = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(DWORD), POWER_LAUNCHER_PID_SHARED_FILE);
|
||||
if (!hMapFile)
|
||||
{
|
||||
auto err = get_last_error_message(GetLastError());
|
||||
Logger::error(L"Failed to create FileMapping {}. {}", POWER_LAUNCHER_PID_SHARED_FILE, err.has_value() ? err.value() : L"");
|
||||
return;
|
||||
}
|
||||
|
||||
PDWORD pidBuffer = reinterpret_cast<PDWORD>(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DWORD)));
|
||||
if (pidBuffer)
|
||||
{
|
||||
*pidBuffer = 0;
|
||||
m_hProcess = NULL;
|
||||
|
||||
if (run_non_elevated(action_runner_path, params, pidBuffer))
|
||||
{
|
||||
auto err = get_last_error_message(GetLastError());
|
||||
Logger::error(L"Failed to create FileMapping {}. {}", POWER_LAUNCHER_PID_SHARED_FILE, err.has_value() ? err.value() : L"");
|
||||
return;
|
||||
}
|
||||
|
||||
PDWORD pidBuffer = reinterpret_cast<PDWORD>(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DWORD)));
|
||||
if (pidBuffer)
|
||||
{
|
||||
*pidBuffer = 0;
|
||||
m_hProcess = NULL;
|
||||
|
||||
if (run_non_elevated(action_runner_path, params, pidBuffer))
|
||||
Logger::trace("Started PowerToys Run Process. PID {}", *pidBuffer);
|
||||
m_enabled = true;
|
||||
const int maxRetries = 80;
|
||||
for (int retry = 0; retry < maxRetries; ++retry)
|
||||
{
|
||||
Logger::trace("Started PowerToys Run Process. PID {}", *pidBuffer);
|
||||
m_enabled = true;
|
||||
const int maxRetries = 80;
|
||||
for (int retry = 0; retry < maxRetries; ++retry)
|
||||
Sleep(50);
|
||||
DWORD pid = *pidBuffer;
|
||||
if (pid)
|
||||
{
|
||||
Sleep(50);
|
||||
DWORD pid = *pidBuffer;
|
||||
if (pid)
|
||||
{
|
||||
m_hProcess = OpenProcess(PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, pid);
|
||||
Logger::trace("Opened PowerToys Run Process. Handle {}", m_hProcess);
|
||||
break;
|
||||
}
|
||||
m_hProcess = OpenProcess(PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, pid);
|
||||
Logger::trace("Opened PowerToys Run Process. Handle {}", m_hProcess);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger::error("Failed to start PowerToys Run");
|
||||
}
|
||||
}
|
||||
CloseHandle(hMapFile);
|
||||
else
|
||||
{
|
||||
Logger::error("Failed to start PowerToys Run");
|
||||
}
|
||||
}
|
||||
CloseHandle(hMapFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace PowerLauncher
|
||||
{
|
||||
public static PublicAPIInstance API { get; private set; }
|
||||
|
||||
private const string Unique = "PowerLauncher_Unique_Application_Mutex";
|
||||
private const string Unique = "PowerToys_PowerToysRun_InstanceMutex";
|
||||
private static bool _disposed;
|
||||
private PowerToysRunSettings _settings;
|
||||
private MainViewModel _mainVM;
|
||||
|
||||
@@ -44,6 +44,11 @@ namespace PowerLauncher.Helper
|
||||
/// </summary>
|
||||
private const string ChannelNameSuffix = "SingeInstanceIPCChannel";
|
||||
|
||||
/// <summary>
|
||||
/// Prefix to the names of mutexes which ensures they are unique in a Windows session.
|
||||
/// </summary>
|
||||
private const string LocalMutexPrefix = @"Local\";
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets application mutex.
|
||||
/// </summary>
|
||||
@@ -62,7 +67,8 @@ namespace PowerLauncher.Helper
|
||||
string channelName = string.Concat(applicationIdentifier, Delimiter, ChannelNameSuffix);
|
||||
|
||||
// Create mutex based on unique application Id to check if this is the first instance of the application.
|
||||
SingleInstanceMutex = new Mutex(true, applicationIdentifier, out bool firstInstance);
|
||||
string mutexName = string.Concat(LocalMutexPrefix, uniqueName);
|
||||
SingleInstanceMutex = new Mutex(true, mutexName, out bool firstInstance);
|
||||
if (firstInstance)
|
||||
{
|
||||
_ = CreateRemoteService(channelName);
|
||||
|
||||
@@ -128,9 +128,9 @@ namespace PowerLauncher.Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
pair.LoadPlugin(API);
|
||||
pair.InitializePlugin(API);
|
||||
|
||||
if (!pair.IsPluginLoaded)
|
||||
if (!pair.IsPluginInitialized)
|
||||
{
|
||||
failedPlugins.Enqueue(pair);
|
||||
}
|
||||
@@ -159,7 +159,7 @@ namespace PowerLauncher.Plugin
|
||||
throw new ArgumentNullException(nameof(pair));
|
||||
}
|
||||
|
||||
if (!pair.IsPluginLoaded)
|
||||
if (!pair.IsPluginInitialized)
|
||||
{
|
||||
return new List<Result>();
|
||||
}
|
||||
@@ -186,6 +186,11 @@ namespace PowerLauncher.Plugin
|
||||
}
|
||||
});
|
||||
|
||||
if (milliseconds > 50)
|
||||
{
|
||||
Log.Warn($"PluginManager.QueryForPlugin {metadata.Name}. Query cost - {milliseconds} milliseconds", typeof(PluginManager));
|
||||
}
|
||||
|
||||
metadata.QueryCount += 1;
|
||||
metadata.AvgQueryTime = metadata.QueryCount == 1 ? milliseconds : (metadata.AvgQueryTime + milliseconds) / 2;
|
||||
|
||||
|
||||
@@ -187,8 +187,8 @@ namespace PowerLauncher
|
||||
return PluginManager.AllPlugins.Select(x => new PowerLauncherPluginSettings()
|
||||
{
|
||||
Id = x.Metadata.ID,
|
||||
Name = x.Plugin.Name,
|
||||
Description = x.Plugin.Description,
|
||||
Name = x.Plugin == null ? x.Metadata.Name : x.Plugin.Name,
|
||||
Description = x.Plugin?.Description,
|
||||
Author = x.Metadata.Author,
|
||||
Disabled = x.Metadata.Disabled,
|
||||
IsGlobal = x.Metadata.IsGlobal,
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Moduly plug-in: {0} se nepovedlo načíst a zakáže se. Pokud potřebujete pomoc, obraťte se prosím na autora modulu plug-in.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nepovedlo se inicializovat moduly plug-in]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Plug-Ins: {0}. Die Plug-Ins konnten nicht geladen werden und werden deaktiviert. Wenden Sie sich an den Plug-In-Entwickler.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Fehler beim Initialisieren von Plug-Ins]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Complementos: no se pudo cargar {0} y se deshabilitará. Póngase en contacto con el creador de los complementos para obtener ayuda.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[No se pudieron inicializar los complementos]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Les plug-ins : {0} n'ont pas pu être chargés et ont été désactivés, contactez le créateur des plug-ins pour obtenir de l'aide]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[L'initialisation des plug-ins a échoué]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
@@ -100,15 +118,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";about_activate_times" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[You have activated Wox {0} times]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Vous avez activé Wox {0} fois]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";deseralization_error_message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Settings will be reset to default and program will continue to function.]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[A(z) {0} beépülő modulokat nem sikerült betölteni és le lesznek tiltva. Kérjen segítséget a beépülő modul készítőjétől]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nem sikerült inicializálni a beépülő modulokat]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Plug-in: {0}. Il caricamento non è riuscito e verrà disabilitato. Per richiedere assistenza, contattare l'autore del plug-in.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Non è stato possibile inizializzare i plug-in]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[プラグイン: {0} - 読み込みに失敗したため、無効になります。プラグインの作成者にお問い合わせください]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[プラグインの初期化失敗]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
@@ -100,15 +118,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";about_activate_times" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[You have activated Wox {0} times]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Wox を {0} 回アクティブ化しました]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";deseralization_error_message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Settings will be reset to default and program will continue to function.]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[플러그 인: {0} - 로드하지 못하여 사용할 수 없습니다. 도움말은 플러그 인 작성자에게 문의하세요.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[플러그 인을 초기화하지 못함]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
@@ -100,15 +118,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";about_activate_times" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[You have activated Wox {0} times]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Wox를 {0}번 활성화했습니다.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";deseralization_error_message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Settings will be reset to default and program will continue to function.]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Invoegtoepassingen: {0} - kunnen niet worden geladen en worden uitgeschakeld. Neem voor hulp contact op met de maker van de invoegtoepassingen]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Kan invoegtoepassingen niet initialiseren]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
@@ -100,15 +118,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";about_activate_times" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[You have activated Wox {0} times]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[U hebt Wox {0} keer geactiveerd]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";deseralization_error_message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Settings will be reset to default and program will continue to function.]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Wtyczki: {0} — nie można załadować i zostałyby wyłączone; skontaktuj się z twórcą wtyczek, aby uzyskać pomoc]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nie można zainicjować wtyczek]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Plug-ins: {0} – falha no carregamento e possibilidade de desabilitação. Entre em contato com o criador de plug-ins para obter ajuda]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Falha ao inicializar os plug-ins]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Plug-ins: {0} - falha ao carregar e seriam desativados. Contacte o criador dos plug-ins para obter ajuda]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Falha ao inicializar os plug-ins]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Не удалось загрузить подключаемые модули ({0}). Они будут отключены. Обратитесь за помощью к создателю подключаемых модулей.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Не удалось инициализировать подключаемые модули]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Plugin-program: {0} – kunde inte läsas in och har inaktiverats. Kontakta skaparen av plugin-program om du vill ha hjälp]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Det gick inte att initiera plugin-program]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[{0} eklentileri yüklenemediğinden devre dışı bırakılacak. Yardım için lütfen eklenti oluşturucuya başvurun]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Eklentiler başlatılamadı]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
@@ -100,15 +118,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";about_activate_times" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[You have activated Wox {0} times]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Wox'u {0} kez etkinleştirdiniz]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";deseralization_error_message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Settings will be reset to default and program will continue to function.]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[插件: {0} - 未能加载且将被禁用,请与插件创建者联系以获取帮助]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[未能初始化插件]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
@@ -100,15 +118,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";about_activate_times" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[You have activated Wox {0} times]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[你已激活 Wox {0} 次]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";deseralization_error_message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Settings will be reset to default and program will continue to function.]]></Val>
|
||||
|
||||
@@ -55,6 +55,24 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Plugins: {0} - fail to load and would be disabled, please contact plugins creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[外掛程式: {0} - 無法載入且即將停用,請連絡外掛程式建立者以取得協助]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";FailedToInitializePluginsTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Fail to initialize plugins]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[無法將外掛程式初始化]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Query" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Query]]></Val>
|
||||
@@ -100,15 +118,6 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";about_activate_times" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[You have activated Wox {0} times]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[您已啟用了 Wox {0} 次]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";deseralization_error_message" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Settings will be reset to default and program will continue to function.]]></Val>
|
||||
|
||||
@@ -23,40 +23,36 @@ namespace Wox.Plugin
|
||||
public PluginPair(PluginMetadata metadata)
|
||||
{
|
||||
this.Metadata = metadata;
|
||||
LoadPlugin();
|
||||
}
|
||||
|
||||
public bool IsPluginLoaded { get; set; }
|
||||
public bool IsPluginInitialized { get; set; }
|
||||
|
||||
public void LoadPlugin(IPublicAPI api)
|
||||
public void InitializePlugin(IPublicAPI api)
|
||||
{
|
||||
if (Metadata.Disabled)
|
||||
{
|
||||
Log.Info($"Do not load {Metadata.Name} as it is disabled.", GetType());
|
||||
Log.Info($"Do not initialize {Metadata.Name} as it is disabled.", GetType());
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsPluginLoaded)
|
||||
if (IsPluginInitialized)
|
||||
{
|
||||
Log.Info($"Plugin {Metadata.Name} is already loaded", GetType());
|
||||
Log.Info($"{Metadata.Name} plugin is already initialized", GetType());
|
||||
return;
|
||||
}
|
||||
|
||||
var stopWatch = new Stopwatch();
|
||||
stopWatch.Start();
|
||||
if (!CreatePluginInstance())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!InitPlugin(api))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
stopWatch.Stop();
|
||||
IsPluginLoaded = true;
|
||||
IsPluginInitialized = true;
|
||||
Metadata.InitTime += stopWatch.ElapsedMilliseconds;
|
||||
Log.Info($"Total load cost for <{Metadata.Name}> is <{Metadata.InitTime}ms>", GetType());
|
||||
Log.Info($"Total initialize cost for <{Metadata.Name}> is <{Metadata.InitTime}ms>", GetType());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -70,8 +66,8 @@ namespace Wox.Plugin
|
||||
if (Metadata.Disabled && !setting.Disabled)
|
||||
{
|
||||
Metadata.Disabled = false;
|
||||
LoadPlugin(api);
|
||||
if (!IsPluginLoaded)
|
||||
InitializePlugin(api);
|
||||
if (!IsPluginInitialized)
|
||||
{
|
||||
var title = string.Format(CultureInfo.CurrentCulture, Resources.FailedToLoadPluginTitle, Metadata.Name);
|
||||
api.ShowMsg(title, Resources.FailedToLoadPluginDescription, string.Empty, false);
|
||||
@@ -115,8 +111,23 @@ namespace Wox.Plugin
|
||||
return hashcode;
|
||||
}
|
||||
|
||||
private void LoadPlugin()
|
||||
{
|
||||
var stopWatch = new Stopwatch();
|
||||
CreatePluginInstance();
|
||||
stopWatch.Stop();
|
||||
Metadata.InitTime += stopWatch.ElapsedMilliseconds;
|
||||
Log.Info($"Load cost for <{Metadata.Name}> is <{Metadata.InitTime}ms>", GetType());
|
||||
}
|
||||
|
||||
private bool CreatePluginInstance()
|
||||
{
|
||||
if (Plugin != null)
|
||||
{
|
||||
Log.Warn($"{Metadata.Name} plugin was already loaded", GetType());
|
||||
return true;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
_assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(Metadata.ExecuteFilePath);
|
||||
@@ -158,6 +169,12 @@ namespace Wox.Plugin
|
||||
|
||||
private bool InitPlugin(IPublicAPI api)
|
||||
{
|
||||
if (Plugin == null)
|
||||
{
|
||||
Log.Warn($"Can not initialize {Metadata.Name} plugin as it was not loaded", GetType());
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Plugin.Init(new PluginInitContext
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nepovedlo se zkopírovat cestu {0}. Aby se zachovala konzistence, cesta se odstraní.]]></Val>
|
||||
<Val><![CDATA[Pokud potřebujete pomoc, obraťte se prosím na autora modulu plug-in.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nepovedlo se odstranit složku {0}. Přejděte prosím na příslušné umístění a odstraňte ji ručně.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nepovedlo se ověřit složky a soubory mezi {0} a {1}.]]></Val>
|
||||
<Val><![CDATA[Nepovedlo se načíst modul plug-in {0}]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Fehler beim Kopieren des Pfads "{0}". Er wird nun aus Konsistenzgründen gelöscht.]]></Val>
|
||||
<Val><![CDATA[Wenden Sie sich an den Plug-In-Entwickler.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Der Ordner "{0}" kann nicht gelöscht werden. Wechseln Sie zum Speicherort, und löschen Sie ihn manuell.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Die Ordner und Dateien zwischen "{0}" und "{1}" können nicht verifiziert werden.]]></Val>
|
||||
<Val><![CDATA[Fehler beim Laden des Plug-Ins "{0}"]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Error al copiar la ruta de acceso {0}. Ahora se eliminará por coherencia.]]></Val>
|
||||
<Val><![CDATA[Póngase en contacto con el creador del complemento para obtener ayuda.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[No se puede eliminar la carpeta {0}. Vaya a la ubicación y elimínela manualmente.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[No se pueden comprobar las carpetas y los archivos entre {0} y {1}.]]></Val>
|
||||
<Val><![CDATA[No se pudo cargar el complemento {0}]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[La copie du chemin {0} a échoué, il est maintenant supprimé pour assurer la cohérence]]></Val>
|
||||
<Val><![CDATA[Contactez le créateur du plug-in pour obtenir de l'aide]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Impossible de supprimer le dossier {0}, accédez à l'emplacement et supprimez-le manuellement]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Impossible de vérifier les dossiers et les fichiers entre {0} et {1}]]></Val>
|
||||
<Val><![CDATA[Le chargement du plug-in {0} a échoué]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[A(z) {0} elérési út másolása sikertelen volt, a konzisztencia érdekében törlődik]]></Val>
|
||||
<Val><![CDATA[Kérjen segítséget a beépülő modul készítőjétől]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nem sikerült törölni a(z) {0} mappát, lépjen a helyhez, és törölje manuálisan]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nem sikerült ellenőrizni a mappákat és a fájlokat a(z) {0} és {1} között]]></Val>
|
||||
<Val><![CDATA[Nem sikerült betölteni a(z) {0} beépülő modult]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[La copia del percorso {0} non è riuscita. Per coerenza, verrà eliminato]]></Val>
|
||||
<Val><![CDATA[Per richiedere assistenza, contattare l'autore del plug-in]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Non è possibile eliminare la cartella {0}. Passare al percorso ed eliminarla manualmente]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Non è possibile verificare i file e le cartelle tra {0} e {1}]]></Val>
|
||||
<Val><![CDATA[Non è stato possibile caricare il plug-in {0}]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[パス {0} をコピーできませんでした。これは、整合性のために削除されます]]></Val>
|
||||
<Val><![CDATA[プラグインの作成者にお問い合わせください]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[フォルダー {0} を削除できません。その場所に移動して、手動で削除してください]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[{0} と {1} の間のフォルダーとファイルを確認できません]]></Val>
|
||||
<Val><![CDATA[{0} プラグインの読み込み失敗]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[경로 {0}을(를) 복사하지 못했습니다. 지금 일관성을 위해 삭제됩니다.]]></Val>
|
||||
<Val><![CDATA[도움말은 플러그 인 작성자에게 문의하세요.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[폴더 {0}을(를) 삭제할 수 없습니다. 해당 위치로 이동하여 수동으로 삭제하세요.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[{0}~{1}의 폴더와 파일을 확인할 수 없음]]></Val>
|
||||
<Val><![CDATA[{0} 플러그 인을 로드하지 못함]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Kan het pad {0} niet kopiëren. Het pad wordt nu verwijderd voor consistentie]]></Val>
|
||||
<Val><![CDATA[Neem voor hulp contact op met de maker van de invoegtoepassingen]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Kan de map {0} niet verwijderen. Ga naar de locatie en om de map handmatig te verwijderen]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Kan geen mappen en bestanden controleren tussen {0} en {1}]]></Val>
|
||||
<Val><![CDATA[Kan invoegtoepassing {0} niet laden]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Kopiowanie ścieżki {0} nie powiodło się, zostanie ona teraz usunięta w celu zapewnienia spójności]]></Val>
|
||||
<Val><![CDATA[Skontaktuj się z autorem wtyczki, aby uzyskać pomoc]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nie można usunąć folderu {0}, przejdź do lokalizacji i usuń go ręcznie.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nie można zweryfikować folderów i plików między ścieżkami {0} i {1}]]></Val>
|
||||
<Val><![CDATA[Nie można załadować wtyczki {0}]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Falha ao copiar o caminho {0}, ele será excluído para consistência]]></Val>
|
||||
<Val><![CDATA[Entre em contato com o criador do plug-in para obter ajuda]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Não é possível excluir a pasta {0}, vá até o local e exclua-a manualmente]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Não é possível verificar pastas e arquivos entre {0} e {1}]]></Val>
|
||||
<Val><![CDATA[Falha ao Carregar o Plug-in {0}]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[O caminho de cópia {0} falhou. Agora será eliminado por motivos de consistência]]></Val>
|
||||
<Val><![CDATA[Contacte o criador do plug-in para obter ajuda]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Não é possível eliminar a pasta {0}. Aceda ao local e elimine-a manualmente]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Não é possível verificar pastas e ficheiros entre {0} e {1}]]></Val>
|
||||
<Val><![CDATA[Falha ao Carregar Plug-in {0}]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Не удалось скопировать путь {0}, он будет удален для обеспечения согласованности.]]></Val>
|
||||
<Val><![CDATA[Для получения помощи обратитесь к разработчику подключаемого модуля.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Не удается удалить папку {0}, перейдите в ее расположение и удалите ее вручную.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Не удается проверить папки и файлы между {0} и {1}.]]></Val>
|
||||
<Val><![CDATA[Не удалось загрузить подключаемый модуль {0}]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Det gick inte att kopiera sökvägen {0}. Den kommer nu att tas bort av konsekvensskäl]]></Val>
|
||||
<Val><![CDATA[Kontakta skaparen av plugin-program om du vill ha hjälp]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Det gick inte att ta bort mappen {0}. Gå till platsen och ta bort den manuellt]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Det gick inte att verifiera mappar och filer mellan {0} och {1}]]></Val>
|
||||
<Val><![CDATA[Det gick inte att läsa in {0} plugin-program]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[{0} yolu kopyalanamadığından şimdi tutarlılık için silinecek]]></Val>
|
||||
<Val><![CDATA[Yardım için lütfen eklenti oluşturucuya başvurun]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[{0} klasörü silinemiyor, lütfen konuma gidin ve kendiniz silin]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[{0} ile {1} arasındaki klasör ve dosyalar doğrulanamıyor]]></Val>
|
||||
<Val><![CDATA[{0} Eklentisi yüklenemedi]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[无法复制路径 {0}。为了保持一致性,现在它将被删除]]></Val>
|
||||
<Val><![CDATA[请与插件创建者联系以获取帮助]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[无法删除文件夹 {0}。请转到相应位置,然后手动删除它]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[无法验证 {0} 和 {1} 之间的文件夹和文件]]></Val>
|
||||
<Val><![CDATA[未能加载 {0} 插件]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -10,29 +10,20 @@
|
||||
<Disp Icon="Expand" Expand="true" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";Strings" ItemType="0" PsrId="211" Leaf="false">
|
||||
<Disp Icon="Str" Disp="true" LocTbl="false" />
|
||||
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginDescription" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
|
||||
<Val><![CDATA[Please contact plugin creator for help]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[複製路徑 {0} 已失敗。為保持一致性,將立即刪除]]></Val>
|
||||
<Val><![CDATA[請連絡外掛程式建立者以取得協助]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Item ItemId=";FailedToLoadPluginTitle" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
|
||||
<Val><![CDATA[Fail to Load {0} Plugin]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[無法刪除資料夾 {0},請前往該位置並手動將其刪除]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[無法在 {0} 與 {1} 之間驗證資料夾和檔案]]></Val>
|
||||
<Val><![CDATA[無法載入 {0} 外掛程式]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Wox.Test
|
||||
var pluginPair = new PluginPair(metadata)
|
||||
{
|
||||
Plugin = pluginMock.Object,
|
||||
IsPluginLoaded = true,
|
||||
IsPluginInitialized = true,
|
||||
};
|
||||
|
||||
// Act
|
||||
|
||||
@@ -159,6 +159,42 @@ HRESULT GetTransformedFileName(_Out_ PWSTR result, UINT cchMax, _In_ PCWSTR sour
|
||||
{
|
||||
hr = StringCchCopy(result, cchMax, source);
|
||||
}
|
||||
}
|
||||
else if (flags & Capitalized)
|
||||
{
|
||||
if (!(flags & ExtensionOnly))
|
||||
{
|
||||
std::wstring stem = fs::path(source).stem().wstring();
|
||||
std::wstring extension = fs::path(source).extension().wstring();
|
||||
|
||||
size_t stemLength = stem.length();
|
||||
|
||||
while (stemLength > 0 && (iswspace(stem[stemLength - 1]) || iswpunct(stem[stemLength - 1])))
|
||||
{
|
||||
stemLength--;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < stemLength; i++)
|
||||
{
|
||||
if (!i || iswspace(stem[i - 1]) || iswpunct(stem[i - 1]))
|
||||
{
|
||||
if (iswspace(stem[i]) || iswpunct(stem[i]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
stem[i] = towupper(stem[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
stem[i] = towlower(stem[i]);
|
||||
}
|
||||
}
|
||||
hr = StringCchPrintf(result, cchMax, L"%s%s", stem.c_str(), extension.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = StringCchCopy(result, cchMax, source);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -14,7 +14,8 @@ enum PowerRenameFlags
|
||||
ExtensionOnly = 0x100,
|
||||
Uppercase = 0x200,
|
||||
Lowercase = 0x400,
|
||||
Titlecase = 0x800
|
||||
Titlecase = 0x800,
|
||||
Capitalized = 0x1000
|
||||
};
|
||||
|
||||
enum PowerRenameFilters
|
||||
|
||||
@@ -945,7 +945,7 @@ DWORD WINAPI CPowerRenameManager::s_regexWorkerThread(_In_ void* pv)
|
||||
// as nullptr so we clear the renamed column
|
||||
// Except string transformation is selected.
|
||||
|
||||
if (newName == nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase))
|
||||
if (newName == nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase || flags & Capitalized))
|
||||
{
|
||||
SHStrDup(sourceName, &newName);
|
||||
}
|
||||
@@ -983,7 +983,7 @@ DWORD WINAPI CPowerRenameManager::s_regexWorkerThread(_In_ void* pv)
|
||||
}
|
||||
|
||||
wchar_t transformedName[MAX_PATH] = { 0 };
|
||||
if (newNameToUse != nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase))
|
||||
if (newNameToUse != nullptr && (flags & Uppercase || flags & Lowercase || flags & Titlecase || flags & Capitalized))
|
||||
{
|
||||
winrt::check_hresult(GetTransformedFileName(transformedName, ARRAYSIZE(transformedName), newNameToUse, flags));
|
||||
newNameToUse = transformedName;
|
||||
|
||||
Binary file not shown.
@@ -39,7 +39,8 @@ FlagCheckboxMap g_flagCheckboxMap[] = {
|
||||
{ ExtensionOnly, IDC_CHECK_EXTENSIONONLY },
|
||||
{ Uppercase, IDC_TRANSFORM_UPPERCASE },
|
||||
{ Lowercase, IDC_TRANSFORM_LOWERCASE },
|
||||
{ Titlecase, IDC_TRANSFORM_TITLECASE }
|
||||
{ Titlecase, IDC_TRANSFORM_TITLECASE },
|
||||
{ Capitalized, IDC_TRANSFORM_CAPITALIZED }
|
||||
};
|
||||
|
||||
struct RepositionMap
|
||||
@@ -708,6 +709,7 @@ void CPowerRenameUI::_InitDlgText()
|
||||
UpdateDlgControl(m_hwnd, IDC_CHECK_NAMEONLY, IDS_ITEM_NAME_ONLY);
|
||||
UpdateDlgControl(m_hwnd, IDC_CHECK_EXTENSIONONLY, IDS_ITEM_EXTENSION_ONLY);
|
||||
UpdateDlgControl(m_hwnd, IDC_TRANSFORM_TITLECASE, IDS_MAKE_TITLECASE);
|
||||
UpdateDlgControl(m_hwnd, IDC_TRANSFORM_CAPITALIZED, IDS_MAKE_CAPITALIZED);
|
||||
UpdateDlgControl(m_hwnd, ID_RENAME, IDS_RENAME_BUTTON);
|
||||
UpdateDlgControl(m_hwnd, ID_ABOUT, IDS_HELP_BUTTON);
|
||||
UpdateDlgControl(m_hwnd, IDCANCEL, IDS_CANCEL_BUTTON);
|
||||
@@ -756,6 +758,7 @@ void CPowerRenameUI::_OnCommand(_In_ WPARAM wParam, _In_ LPARAM lParam)
|
||||
case IDC_CHECK_NAMEONLY:
|
||||
case IDC_TRANSFORM_UPPERCASE:
|
||||
case IDC_TRANSFORM_LOWERCASE:
|
||||
case IDC_TRANSFORM_CAPITALIZED:
|
||||
case IDC_TRANSFORM_TITLECASE:
|
||||
if (BN_CLICKED == HIWORD(wParam))
|
||||
{
|
||||
@@ -981,6 +984,7 @@ void CPowerRenameUI::_ValidateFlagCheckbox(_In_ DWORD checkBoxId)
|
||||
{
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_LOWERCASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_TITLECASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_CAPITALIZED), FALSE);
|
||||
}
|
||||
}
|
||||
else if (checkBoxId == IDC_TRANSFORM_LOWERCASE)
|
||||
@@ -989,6 +993,7 @@ void CPowerRenameUI::_ValidateFlagCheckbox(_In_ DWORD checkBoxId)
|
||||
{
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_UPPERCASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_TITLECASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_CAPITALIZED), FALSE);
|
||||
}
|
||||
}
|
||||
else if (checkBoxId == IDC_TRANSFORM_TITLECASE)
|
||||
@@ -997,6 +1002,16 @@ void CPowerRenameUI::_ValidateFlagCheckbox(_In_ DWORD checkBoxId)
|
||||
{
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_UPPERCASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_LOWERCASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_CAPITALIZED), FALSE);
|
||||
}
|
||||
}
|
||||
else if (checkBoxId == IDC_TRANSFORM_CAPITALIZED)
|
||||
{
|
||||
if (Button_GetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_CAPITALIZED)) == BST_CHECKED)
|
||||
{
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_UPPERCASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_LOWERCASE), FALSE);
|
||||
Button_SetCheck(GetDlgItem(m_hwnd, IDC_TRANSFORM_TITLECASE), FALSE);
|
||||
}
|
||||
}
|
||||
else if (checkBoxId == IDC_CHECK_NAMEONLY)
|
||||
|
||||
@@ -175,6 +175,9 @@ Please select from the options above to show items.</value>
|
||||
<data name="Make_Titlecase" xml:space="preserve">
|
||||
<value>Make Titlecase</value>
|
||||
</data>
|
||||
<data name="Make_Capitalized" xml:space="preserve">
|
||||
<value>Make Capitalized</value>
|
||||
</data>
|
||||
<data name="Rename_Button" xml:space="preserve">
|
||||
<value>&Rename</value>
|
||||
</data>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Počkejte prosím, než se provede výčet vybraných položek.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Převést na velká písmena]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Warten Sie, während die ausgewählten Elemente aufgelistet werden.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Großbuchstaben verwenden]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Espere mientras se enumeran los elementos seleccionados.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Convertir en mayúsculas]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Veuillez patienter pendant l'énumération des éléments sélectionnés.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Mettre en majuscules]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Várjon, amíg a rendszer számba veszi a kijelölt elemeket.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Nagybetűssé tétel]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -175,6 +175,15 @@
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Converti in maiuscolo]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Lowercase" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Lowercase]]></Val>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[選択した項目を列挙しています。しばらくお待ちください。]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[大文字にする]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[선택한 항목을 열거하는 동안 잠시 기다려 주세요.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[대문자로 만들기]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[De geselecteerde items worden geïnventariseerd. Een ogenblik geduld...]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Met hoofdletters]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Zaczekaj, aż wybrane elementy zostaną wyliczone.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Zamień na wielkie litery]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Aguarde enquanto os itens selecionados são enumerados.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Colocar em Maiúsculas]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Aguarde enquanto os itens selecionados são enumerados.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Colocar em maiúsculas]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,9 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Подождите, пока выполняется перечисление выбранных элементов.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Vänta medan de valda objekten räknas upp.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Gör versal]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Seçilen öğeler listelenirken lütfen bekleyin.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Büyük Harfle Yaz]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,15 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[正在枚举选定项,请稍候。]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -169,6 +169,18 @@
|
||||
<Item ItemId=";Loading_Msg" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Please wait while the selected items are enumerated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[正在列舉選取的項目,請稍候。]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Make_Capitalized" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make Capitalized]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[設為大寫]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
||||
@@ -26,9 +26,10 @@
|
||||
#define IDC_TRANSFORM_UPPERCASE 3019
|
||||
#define IDC_TRANSFORM_LOWERCASE 3020
|
||||
#define IDC_TRANSFORM_TITLECASE 3021
|
||||
#define IDC_SEARCH_FOR 3022
|
||||
#define IDC_REPLACE_WITH 3023
|
||||
#define IDC_TRANSFORM_CAPITALIZED 3022
|
||||
#define IDC_SEARCH_FOR 3023
|
||||
#define IDC_REPLACE_WITH 3024
|
||||
#define IDC_STATIC -1
|
||||
#define IDR_MAINFRAME 3024
|
||||
#define IDD_MAIN 3025
|
||||
#define IDR_MAINFRAME 3025
|
||||
#define IDD_MAIN 3026
|
||||
#define IDI_RENAME 2001
|
||||
|
||||
@@ -270,6 +270,16 @@ namespace PowerRenameManagerTests
|
||||
RenameHelper(renamePairs, ARRAYSIZE(renamePairs), L"foo", L"bar", SYSTEMTIME{ 2020, 7, 3, 22, 15, 6, 42, 453 }, DEFAULT_FLAGS | Titlecase);
|
||||
}
|
||||
|
||||
TEST_METHOD (VerifyCapitalizedTransform)
|
||||
{
|
||||
rename_pairs renamePairs[] = {
|
||||
{ L"foo and the to", L"Bar And The To", false, true, 0 },
|
||||
{ L"Test", L"Test_norename", false, false, 0 }
|
||||
};
|
||||
|
||||
RenameHelper(renamePairs, ARRAYSIZE(renamePairs), L"foo", L"bar", SYSTEMTIME{ 2020, 7, 3, 22, 15, 6, 42, 453 }, DEFAULT_FLAGS | Capitalized);
|
||||
}
|
||||
|
||||
TEST_METHOD (VerifyNameOnlyTransform)
|
||||
{
|
||||
rename_pairs renamePairs[] = {
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Some of the File Explorer modules could not be turned off/on as per your settings. Please restart PowerToys as admin for the changes to take place.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Een aantal modules van Bestandenverkenner kunnen niet worden in-/uitgeschakeld vanwege uw instellingen. Start PowerToys opnieuw als beheerder om de wijzigingen door te voeren.]]></Val>
|
||||
<Val><![CDATA[Een aantal modules van de Verkenner kunnen niet worden in-/uitgeschakeld vanwege uw instellingen. Start PowerToys opnieuw als beheerder om de wijzigingen door te voeren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Some of the File Explorer modules could not be registered/unregistered as per your settings. Please restart PowerToys as admin for the changes to take place.]]></Val>
|
||||
@@ -71,7 +71,7 @@
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Couldn't modify File Explorer modules]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Kan de modules van Bestandenverkenner niet wijzigen]]></Val>
|
||||
<Val><![CDATA[Kan de modules van Verkenner niet wijzigen]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Failed to modify File Explorer modules]]></Val>
|
||||
@@ -101,7 +101,7 @@
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[File Explorer]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Bestandenverkenner]]></Val>
|
||||
<Val><![CDATA[Verkenner]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
|
||||
Reference in New Issue
Block a user