mirror of
https://github.com/crskycode/GARbro.git
synced 2024-11-27 07:34:00 +08:00
(FileExistsDialog): new modal window.
added FileErrorDialog logic to GarConvert.
This commit is contained in:
parent
f8c63f134b
commit
661e986e85
@ -16,6 +16,16 @@ namespace GARbro.GUI
|
|||||||
this.DataContext = new ViewModel { Title = title, Text = error_text };
|
this.DataContext = new ViewModel { Title = title, Text = error_text };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
new public FileErrorDialogResult ShowDialog ()
|
||||||
|
{
|
||||||
|
bool dialog_result = base.ShowDialog() ?? false;
|
||||||
|
return new FileErrorDialogResult
|
||||||
|
{
|
||||||
|
Continue = dialog_result,
|
||||||
|
IgnoreErrors = IgnoreErrors.IsChecked ?? false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void ContinueButton_Click (object sender, RoutedEventArgs e)
|
private void ContinueButton_Click (object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
this.DialogResult = true;
|
this.DialogResult = true;
|
||||||
@ -73,4 +83,10 @@ namespace GARbro.GUI
|
|||||||
public event EventHandler CanExecuteChanged;
|
public event EventHandler CanExecuteChanged;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public struct FileErrorDialogResult
|
||||||
|
{
|
||||||
|
public bool Continue;
|
||||||
|
public bool IgnoreErrors;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
21
GUI/FileExistsDialog.xaml
Normal file
21
GUI/FileExistsDialog.xaml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<w:ModalWindow x:Class="GARbro.GUI.FileExistsDialog"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:w="clr-namespace:Rnd.Windows"
|
||||||
|
xmlns:s="clr-namespace:GARbro.GUI.Strings"
|
||||||
|
Title="File already exists" ShowInTaskbar="False" WindowStartupLocation="CenterOwner"
|
||||||
|
ResizeMode="NoResize" SizeToContent="WidthAndHeight" ShowActivated="True"
|
||||||
|
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock x:Name="Notice" Text="File named {0} already exists in destination folder." Margin="10"/>
|
||||||
|
<TextBlock Text="{x:Static s:guiStrings.LabelDuplicateFileQuestion}" Margin="10"/>
|
||||||
|
<Separator/>
|
||||||
|
<CheckBox x:Name="ApplyToAll" Content="{x:Static s:guiStrings.LabelApplyToAll}" Margin="10"/>
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
|
||||||
|
<Button Content="{x:Static s:guiStrings.ButtonSkip}" Margin="10" Width="75" Height="25" IsDefault="True" Click="SkipButton_Click"/>
|
||||||
|
<Button Content="{x:Static s:guiStrings.ButtonOverwrite}" Margin="10" Width="75" Height="25" Click="OverwriteButton_Click"/>
|
||||||
|
<Button Content="{x:Static s:guiStrings.ButtonRename}" Margin="10" Width="75" Height="25" Click="RenameButton_Click"/>
|
||||||
|
<Button Content="{x:Static s:guiStrings.ButtonAbort}" Margin="10" Width="75" Height="25" IsCancel="True" Click="AbortButton_Click"/>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</w:ModalWindow>
|
72
GUI/FileExistsDialog.xaml.cs
Normal file
72
GUI/FileExistsDialog.xaml.cs
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
|
namespace GARbro.GUI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for FileExistsDialog.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class FileExistsDialog : Rnd.Windows.ModalWindow
|
||||||
|
{
|
||||||
|
public FileExistsDialog (string title, string text)
|
||||||
|
{
|
||||||
|
InitializeComponent ();
|
||||||
|
this.Title = title;
|
||||||
|
this.Notice.Text = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
new public FileExistsDialogResult ShowDialog ()
|
||||||
|
{
|
||||||
|
bool dialog_result = base.ShowDialog() ?? false;
|
||||||
|
if (!dialog_result)
|
||||||
|
FileAction = ExistingFileAction.Abort;
|
||||||
|
return new FileExistsDialogResult
|
||||||
|
{
|
||||||
|
Action = FileAction,
|
||||||
|
ApplyToAll = ApplyToAll.IsChecked ?? false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExistingFileAction FileAction { get; set; }
|
||||||
|
|
||||||
|
private void SkipButton_Click (object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = true;
|
||||||
|
this.FileAction = ExistingFileAction.Skip;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OverwriteButton_Click (object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = true;
|
||||||
|
this.FileAction = ExistingFileAction.Overwrite;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RenameButton_Click (object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = true;
|
||||||
|
this.FileAction = ExistingFileAction.Rename;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AbortButton_Click (object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = false;
|
||||||
|
this.FileAction = ExistingFileAction.Abort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ExistingFileAction
|
||||||
|
{
|
||||||
|
Skip,
|
||||||
|
Overwrite,
|
||||||
|
Rename,
|
||||||
|
Abort
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct FileExistsDialogResult
|
||||||
|
{
|
||||||
|
public ExistingFileAction Action;
|
||||||
|
public bool ApplyToAll;
|
||||||
|
}
|
||||||
|
}
|
@ -147,6 +147,9 @@
|
|||||||
<Compile Include="FileErrorDialog.xaml.cs">
|
<Compile Include="FileErrorDialog.xaml.cs">
|
||||||
<DependentUpon>FileErrorDialog.xaml</DependentUpon>
|
<DependentUpon>FileErrorDialog.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="FileExistsDialog.xaml.cs">
|
||||||
|
<DependentUpon>FileExistsDialog.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="GarConvert.cs" />
|
<Compile Include="GarConvert.cs" />
|
||||||
<Compile Include="GarCreate.cs" />
|
<Compile Include="GarCreate.cs" />
|
||||||
<Compile Include="GarExtract.cs" />
|
<Compile Include="GarExtract.cs" />
|
||||||
@ -203,6 +206,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="FileExistsDialog.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="MainWindow.xaml">
|
<Page Include="MainWindow.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
@ -143,14 +143,15 @@ namespace GARbro.GUI
|
|||||||
void ConvertWorker (object sender, DoWorkEventArgs e)
|
void ConvertWorker (object sender, DoWorkEventArgs e)
|
||||||
{
|
{
|
||||||
m_pending_error = null;
|
m_pending_error = null;
|
||||||
try
|
|
||||||
{
|
|
||||||
int total = m_source.Count();
|
int total = m_source.Count();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (var entry in m_source)
|
foreach (var entry in m_source)
|
||||||
{
|
{
|
||||||
if (m_progress_dialog.CancellationPending)
|
if (m_progress_dialog.CancellationPending)
|
||||||
throw new OperationCanceledException();
|
{
|
||||||
|
m_pending_error = new OperationCanceledException();
|
||||||
|
break;
|
||||||
|
}
|
||||||
var filename = entry.Name;
|
var filename = entry.Name;
|
||||||
int progress = i++*100/total;
|
int progress = i++*100/total;
|
||||||
m_progress_dialog.ReportProgress (progress, string.Format (guiStrings.MsgConvertingFile,
|
m_progress_dialog.ReportProgress (progress, string.Format (guiStrings.MsgConvertingFile,
|
||||||
@ -162,25 +163,20 @@ namespace GARbro.GUI
|
|||||||
else if ("audio" == entry.Type)
|
else if ("audio" == entry.Type)
|
||||||
ConvertAudio (filename);
|
ConvertAudio (filename);
|
||||||
}
|
}
|
||||||
catch (NotImplementedException X)
|
|
||||||
{
|
|
||||||
// target format creation not implemented
|
|
||||||
m_pending_error = X;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
catch (Exception X)
|
catch (Exception X)
|
||||||
{
|
{
|
||||||
if (!IgnoreErrors)
|
if (!IgnoreErrors)
|
||||||
throw;
|
{
|
||||||
|
var error_text = string.Format (guiStrings.TextErrorConverting, entry.Name, X.Message);
|
||||||
|
var result = m_main.Dispatcher.Invoke (() => m_main.ShowErrorDialog (guiStrings.TextMediaConvertError, error_text, m_progress_dialog.GetWindowHandle()));
|
||||||
|
if (!result.Continue)
|
||||||
|
break;
|
||||||
|
IgnoreErrors = result.IgnoreErrors;
|
||||||
|
}
|
||||||
m_failed.Add (Tuple.Create (Path.GetFileName (filename), X.Message));
|
m_failed.Add (Tuple.Create (Path.GetFileName (filename), X.Message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception X)
|
|
||||||
{
|
|
||||||
m_pending_error = X;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static readonly HashSet<string> CommonAudioFormats = new HashSet<string> { "wav", "mp3", "ogg" };
|
public static readonly HashSet<string> CommonAudioFormats = new HashSet<string> { "wav", "mp3", "ogg" };
|
||||||
|
|
||||||
|
@ -304,8 +304,10 @@ namespace GARbro.GUI
|
|||||||
if (!m_ignore_errors)
|
if (!m_ignore_errors)
|
||||||
{
|
{
|
||||||
var error_text = string.Format (guiStrings.TextErrorExtracting, entry.Name, X.Message);
|
var error_text = string.Format (guiStrings.TextErrorExtracting, entry.Name, X.Message);
|
||||||
if (!m_main.Dispatcher.Invoke (() => ShowErrorDialog (error_text)))
|
var result = m_main.Dispatcher.Invoke (() => m_main.ShowErrorDialog (guiStrings.TextExtractionError, error_text, m_progress_dialog.GetWindowHandle()));
|
||||||
|
if (!result.Continue)
|
||||||
break;
|
break;
|
||||||
|
m_ignore_errors = result.IgnoreErrors;
|
||||||
}
|
}
|
||||||
++m_skip_count;
|
++m_skip_count;
|
||||||
}
|
}
|
||||||
@ -411,31 +413,6 @@ namespace GARbro.GUI
|
|||||||
throw new IOException ("File aready exists");
|
throw new IOException ("File aready exists");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShowErrorDialog (string error_text)
|
|
||||||
{
|
|
||||||
var dialog = new FileErrorDialog (guiStrings.TextExtractionError, error_text);
|
|
||||||
var progress_dialog_hwnd = m_progress_dialog.GetWindowHandle();
|
|
||||||
if (progress_dialog_hwnd != IntPtr.Zero)
|
|
||||||
{
|
|
||||||
var native_dialog = new WindowInteropHelper (dialog);
|
|
||||||
native_dialog.Owner = progress_dialog_hwnd;
|
|
||||||
NativeMethods.EnableWindow (progress_dialog_hwnd, false);
|
|
||||||
EventHandler on_closed = null;
|
|
||||||
on_closed = (s, e) => {
|
|
||||||
NativeMethods.EnableWindow (progress_dialog_hwnd, true);
|
|
||||||
dialog.Closed -= on_closed;
|
|
||||||
};
|
|
||||||
dialog.Closed += on_closed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dialog.Owner = m_main;
|
|
||||||
}
|
|
||||||
bool dialog_result = dialog.ShowDialog() ?? false;
|
|
||||||
m_ignore_errors = dialog.IgnoreErrors.IsChecked ?? false;
|
|
||||||
return dialog_result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnExtractComplete (object sender, RunWorkerCompletedEventArgs e)
|
void OnExtractComplete (object sender, RunWorkerCompletedEventArgs e)
|
||||||
{
|
{
|
||||||
m_extract_in_progress = false;
|
m_extract_in_progress = false;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Game Resource Browser
|
// Game Resource Browser
|
||||||
//
|
//
|
||||||
// Copyright (C) 2014-2015 by morkt
|
// Copyright (C) 2014-2017 by morkt
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to
|
// of this software and associated documentation files (the "Software"), to
|
||||||
@ -35,6 +35,7 @@ using System.Windows;
|
|||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Interop;
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
using Microsoft.VisualBasic.FileIO;
|
using Microsoft.VisualBasic.FileIO;
|
||||||
using GARbro.GUI.Properties;
|
using GARbro.GUI.Properties;
|
||||||
@ -195,6 +196,40 @@ namespace GARbro.GUI
|
|||||||
Dispatcher.Invoke (() => MessageBox.Show (this, message, title, MessageBoxButton.OK, MessageBoxImage.Error));
|
Dispatcher.Invoke (() => MessageBox.Show (this, message, title, MessageBoxButton.OK, MessageBoxImage.Error));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal FileErrorDialogResult ShowErrorDialog (string error_title, string error_text, IntPtr parent_hwnd)
|
||||||
|
{
|
||||||
|
var dialog = new FileErrorDialog (error_title, error_text);
|
||||||
|
SetModalWindowParent (dialog, parent_hwnd);
|
||||||
|
return dialog.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal FileExistsDialogResult ShowFileExistsDialog (string title, string text, IntPtr parent_hwnd)
|
||||||
|
{
|
||||||
|
var dialog = new FileExistsDialog (title, text);
|
||||||
|
SetModalWindowParent (dialog, parent_hwnd);
|
||||||
|
return dialog.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetModalWindowParent (Window dialog, IntPtr parent_hwnd)
|
||||||
|
{
|
||||||
|
if (parent_hwnd != IntPtr.Zero)
|
||||||
|
{
|
||||||
|
var native_dialog = new WindowInteropHelper (dialog);
|
||||||
|
native_dialog.Owner = parent_hwnd;
|
||||||
|
NativeMethods.EnableWindow (parent_hwnd, false);
|
||||||
|
EventHandler on_closed = null;
|
||||||
|
on_closed = (s, e) => {
|
||||||
|
NativeMethods.EnableWindow (parent_hwnd, true);
|
||||||
|
dialog.Closed -= on_closed;
|
||||||
|
};
|
||||||
|
dialog.Closed += on_closed;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dialog.Owner = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const int MaxRecentFiles = 9;
|
const int MaxRecentFiles = 9;
|
||||||
LinkedList<string> m_recent_files;
|
LinkedList<string> m_recent_files;
|
||||||
|
|
||||||
|
56
GUI/Strings/guiStrings.Designer.cs
generated
56
GUI/Strings/guiStrings.Designer.cs
generated
@ -114,6 +114,33 @@ namespace GARbro.GUI.Strings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to _Overwrite.
|
||||||
|
/// </summary>
|
||||||
|
public static string ButtonOverwrite {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ButtonOverwrite", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to _Rename.
|
||||||
|
/// </summary>
|
||||||
|
public static string ButtonRename {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ButtonRename", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to _Skip.
|
||||||
|
/// </summary>
|
||||||
|
public static string ButtonSkip {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ButtonSkip", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to _Close.
|
/// Looks up a localized string similar to _Close.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -312,6 +339,15 @@ namespace GARbro.GUI.Strings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to A_pply to all duplicate files.
|
||||||
|
/// </summary>
|
||||||
|
public static string LabelApplyToAll {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabelApplyToAll", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Archive format.
|
/// Looks up a localized string similar to Archive format.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -366,6 +402,15 @@ namespace GARbro.GUI.Strings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to What should be done?.
|
||||||
|
/// </summary>
|
||||||
|
public static string LabelDuplicateFileQuestion {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabelDuplicateFileQuestion", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Encoding.
|
/// Looks up a localized string similar to Encoding.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -963,6 +1008,17 @@ namespace GARbro.GUI.Strings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Error occured while converting file
|
||||||
|
///{0}
|
||||||
|
///{1}.
|
||||||
|
/// </summary>
|
||||||
|
public static string TextErrorConverting {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("TextErrorConverting", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Error occured while extracting file
|
/// Looks up a localized string similar to Error occured while extracting file
|
||||||
///{0}
|
///{0}
|
||||||
|
@ -474,4 +474,30 @@
|
|||||||
<value>File extraction error</value>
|
<value>File extraction error</value>
|
||||||
<comment>translation pending</comment>
|
<comment>translation pending</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ButtonOverwrite" xml:space="preserve">
|
||||||
|
<value>Overwrite</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonRename" xml:space="preserve">
|
||||||
|
<value>Rename</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonSkip" xml:space="preserve">
|
||||||
|
<value>Skip</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LabelApplyToAll" xml:space="preserve">
|
||||||
|
<value>Apply to all duplicate files</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LabelDuplicateFileQuestion" xml:space="preserve">
|
||||||
|
<value>What should be done?</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="TextErrorConverting" xml:space="preserve">
|
||||||
|
<value>Error occured while converting file
|
||||||
|
{0}
|
||||||
|
{1}</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@ -474,4 +474,24 @@ Overwrite?</value>
|
|||||||
<data name="TextExtractionError" xml:space="preserve">
|
<data name="TextExtractionError" xml:space="preserve">
|
||||||
<value>File extraction error</value>
|
<value>File extraction error</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ButtonOverwrite" xml:space="preserve">
|
||||||
|
<value>_Overwrite</value>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonRename" xml:space="preserve">
|
||||||
|
<value>_Rename</value>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonSkip" xml:space="preserve">
|
||||||
|
<value>_Skip</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabelApplyToAll" xml:space="preserve">
|
||||||
|
<value>A_pply to all duplicate files</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabelDuplicateFileQuestion" xml:space="preserve">
|
||||||
|
<value>What should be done?</value>
|
||||||
|
</data>
|
||||||
|
<data name="TextErrorConverting" xml:space="preserve">
|
||||||
|
<value>Error occured while converting file
|
||||||
|
{0}
|
||||||
|
{1}</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@ -495,4 +495,24 @@
|
|||||||
<data name="TextExtractionError" xml:space="preserve">
|
<data name="TextExtractionError" xml:space="preserve">
|
||||||
<value>Ошибка извлечения файла</value>
|
<value>Ошибка извлечения файла</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ButtonOverwrite" xml:space="preserve">
|
||||||
|
<value>Заменить</value>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonRename" xml:space="preserve">
|
||||||
|
<value>Переименовать</value>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonSkip" xml:space="preserve">
|
||||||
|
<value>Пропустить</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabelApplyToAll" xml:space="preserve">
|
||||||
|
<value>Применить ко всем совпадающим файлам</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabelDuplicateFileQuestion" xml:space="preserve">
|
||||||
|
<value>Что делать?</value>
|
||||||
|
</data>
|
||||||
|
<data name="TextErrorConverting" xml:space="preserve">
|
||||||
|
<value>Не удадось конвертировать файл
|
||||||
|
{0}
|
||||||
|
{1}</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@ -476,4 +476,30 @@
|
|||||||
<value>File extraction error</value>
|
<value>File extraction error</value>
|
||||||
<comment>translation pending</comment>
|
<comment>translation pending</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ButtonOverwrite" xml:space="preserve">
|
||||||
|
<value>Overwrite</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonRename" xml:space="preserve">
|
||||||
|
<value>Rename</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="ButtonSkip" xml:space="preserve">
|
||||||
|
<value>Skip</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LabelApplyToAll" xml:space="preserve">
|
||||||
|
<value>Apply to all duplicate files</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LabelDuplicateFileQuestion" xml:space="preserve">
|
||||||
|
<value>What should be done?</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
|
<data name="TextErrorConverting" xml:space="preserve">
|
||||||
|
<value>Error occured while converting file
|
||||||
|
{0}
|
||||||
|
{1}</value>
|
||||||
|
<comment>translation pending</comment>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
Loading…
Reference in New Issue
Block a user