diff --git a/Duplicati/Library/Backend/BackendInterface/CommandLineArgument.cs b/Duplicati/Library/Backend/BackendInterface/CommandLineArgument.cs
index a63fef3c2..fcacb2cd1 100644
--- a/Duplicati/Library/Backend/BackendInterface/CommandLineArgument.cs
+++ b/Duplicati/Library/Backend/BackendInterface/CommandLineArgument.cs
@@ -183,6 +183,22 @@ namespace Duplicati.Library.Backend
m_defaultValue = defaultValue;
}
+ ///
+ /// Creates a new CommandLineArgument instance
+ ///
+ /// The name of the argument
+ /// The argument type
+ /// The arguments short description
+ /// The arguments long description
+ /// The default value of the argumen
+ /// A list of aliases for the command
+ /// A list of valid values for the command
+ public CommandLineArgument(string name, ArgumentType type, string shortDescription, string longDescription, string defaultValue, string[] aliases)
+ : this(name, type, shortDescription, longDescription, defaultValue)
+ {
+ m_aliases = aliases;
+ }
+
///
/// Creates a new CommandLineArgument instance
///
diff --git a/Duplicati/Library/Main/Duplicati.Library.Main.csproj b/Duplicati/Library/Main/Duplicati.Library.Main.csproj
index b7f46d8db..6a82d72cc 100644
--- a/Duplicati/Library/Main/Duplicati.Library.Main.csproj
+++ b/Duplicati/Library/Main/Duplicati.Library.Main.csproj
@@ -60,6 +60,16 @@
True
Interface.resx
+
+ True
+ True
+ Options.resx
+
+
+ True
+ True
+ RSyncDir.resx
+
@@ -110,6 +120,16 @@
ResXFileCodeGenerator
Interface.Designer.cs
+
+ Designer
+ ResXFileCodeGenerator
+ Options.Designer.cs
+
+
+ Designer
+ ResXFileCodeGenerator
+ RSyncDir.Designer.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ By supplying this option, Duplicati will transmit files, while building volumes. This can shorten the time it takes to perform a backup, but requires more diskspace.
+
+
+ Transmit files on a seperate thread
+
+
+ If a backup is interrupted there will likely be partial files present on the backend. Using this flag, Duplicati will automatically remove such files when encountered.
+
+
+ A flag indiciating that Duplicati should remove unused files
+
+
+ Any string used to prefix the filenames generated by Duplicati.
+
+
+ Backup volume filename prefix
+
+
+ The operating system keeps track of the last time a file was written. Using this information, Duplicati can quickly determine if the file has been modified. If some application deliberately modifies this information, Duplicati won't work correctly unless this flag is set.
+
+
+ Disable checks based on file time
+
+
+ Exclude files that match this filter. The filter is a "file-globbing" filter, much like commandline options. You can use "*.txt" to exclude all text files.
+
+
+ Exclude files that match this filter. The filter is a regular expression filter. You can use "(.*)\.txt" to exclude all text files.
+
+
+ Exclude files regular expression
+
+
+ Exclude files
+
+
+ By default, duplicati will restore all files in the backup. Use this option to restore only a subset of the files
+
+
+ A list of files to restore
+
+
+ When deleting old files, Duplicati will only write out what files are supposed to be deleted. Specify the "force" option to actually remove them.
+
+
+ Force the removal of files
+
+
+ If the last full backup is older than the duration supplied here, Duplicati will make a full backup, otherwise an incremental
+
+
+ The max duration between full backups
+
+
+ When this flag is specified, Duplicati will make a full backup of all files, and ignore any incremental data.
+
+
+ A flag used to force full backups
+
+
+ By default, Duplicati will use the AES encryption algorithm to encrypt the backup volumes, setting this flag makes Duplicati use the GNU Privacy Guard instead. GnuPG must be installed on the machine for this to work.
+
+
+ Use GnuPG for encryption
+
+
+ The path to the GNU Privacy Guard program. If not supplied, Duplicati will assume that the program "gpg" is avalible in the system path.
+
+
+ The path to GnuPG
+
+
+ Include files that match this filter. The filter is a "file-globbing" filter, much like commandline options. You can use "*.txt" to include all text files.
+
+
+ Include files that match this filter. The filter is a regular expression filter. You can use "(.*)\.txt" to include all text files.
+
+
+ Include files regular expression
+
+
+ Include files
+
+
+ By setting this value you can limit how much bandwidth Duplicati consumes for downloads. Setting this limit can make the backups take longer, but will make Duplicati less intrusive.
+
+
+ Max number of bytes to download pr. second
+
+
+ By setting this value you can limit how much bandwidth Duplicati consumes for uploads. Setting this limit can make the backups take longer, but will make Duplicati less intrusive.
+
+
+ Max number of bytes to upload pr. second
+
+
+ If you store the backups on a local disk, and prefer that they are kept unencrypted, you can turn of encryption completely by using this switch.
+
+
+ Disable encryption
+
+
+ If an upload or download fails, Duplicati will retry a number of times before failing. Use this to handle unstable network connections better.
+
+
+ Number of times to retry a failed transmission
+
+
+ Supply a passphrase that Duplicati will use to encrypt the backup volumes, making the unreadable without the passphrase.
+
+
+ Passphrase used to encrypt backups
+
+
+ By default, Duplicati will restore files from the most recent backup, use this option to select another item. You may use relative times, like "-2M" for a backup from two months ago.
+
+
+ The time to restore files
+
+
+ After a failed transmission, Duplicati will wait a short period before attempting again. This is usefull if the network drops out occasionally during transmissions.
+
+
+ Time to wait between retries
+
+
+ If the filesystem does not support the long filenames that Duplicati uses, this switch will change the time to be a much more compact, but hard to read format. It will also make the default prefix "dpl".
+
+
+ Use short filenames
+
+
+ If this path is supplied, Duplicati will store all signature files here, so re-downloads can be avoided.
+
+
+ A path to temporary storage
+
+
+ Supply a list of files seperated with semicolons, that will be added to each backup. The Duplicati GUI program uses this to store the setup database with each backup.
+
+
+ A list of control files to embed in the backups
+
+
+ The GNU Privacy Guard can optionally sign volumes with a special key. This feature is not currently active in Duplicati.
+
+
+ Sign key for GnuPG
+
+
+ If the hash for the volume does not match, Duplicati will refuse to use the backup. Supply this flag to allow Duplicati to proceed anyway.
+
+
+ Set this flag to skip hash checks
+
+
+ This option allows you to exclude files that are larger than the given value. Use this to prevent backups becoming extremely large.
+
+
+ A size string that limits the size of files being backed up
+
+
+ Duplicati will use the system default temporary folder. This option can be used to supply an alternative folder for temporary storage.
+
+
+ Temporary storage folder
+
+
+ Selects another thread priority for the process. Use this to set Duplicati to be more or less CPU intensive.
+
+
+ Thread priority
+
+
+ Per default, Duplicati will use the colon ":" character to seperate the time fields in the filename. However, on some filesystem, notably windows, this character is not allowed. Use this option to use another character.
+
+
+ Backup volume filename timeseperator
+
+
+ This option can place an upper limit on the total size of each backup. Note that if this flag is specified the backup may not contain all files, even for a full backup.
+
+
+ The number of bytes generated by each backup run
+
+
+ This option can change the default volume size. Changing the size can be usefull if the backend has a limit on the size of each individual file
+
+
+ A size string that limits the size of the volumes
+
+
\ No newline at end of file
diff --git a/Duplicati/Library/Main/Strings/RSyncDir.Designer.cs b/Duplicati/Library/Main/Strings/RSyncDir.Designer.cs
new file mode 100644
index 000000000..b03a425d3
--- /dev/null
+++ b/Duplicati/Library/Main/Strings/RSyncDir.Designer.cs
@@ -0,0 +1,153 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.3082
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Duplicati.Library.Main.Strings {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class RSyncDir {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal RSyncDir() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Duplicati.Library.Main.Strings.RSyncDir", typeof(RSyncDir).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed to create folder: "{0}", Error message: {1}.
+ ///
+ internal static string CreateFolderError {
+ get {
+ return ResourceManager.GetString("CreateFolderError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed to delete file: "{0}", Error message: {1}.
+ ///
+ internal static string DeleteFileError {
+ get {
+ return ResourceManager.GetString("DeleteFileError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed to remove folder: "{0}", Error message: {1}.
+ ///
+ internal static string DeleteFolderError {
+ get {
+ return ResourceManager.GetString("DeleteFolderError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed to process file: {0}. Error message: {1}.
+ ///
+ internal static string FileProcessError {
+ get {
+ return ResourceManager.GetString("FileProcessError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Filed marked for deletion did not exist: {0}.
+ ///
+ internal static string FileToDeleteMissingError {
+ get {
+ return ResourceManager.GetString("FileToDeleteMissingError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Folder was marked for deletion, but did not exist: .
+ ///
+ internal static string FolderToDeleteMissingError {
+ get {
+ return ResourceManager.GetString("FolderToDeleteMissingError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Multi pass is not initialized.
+ ///
+ internal static string MultipassUsageError {
+ get {
+ return ResourceManager.GetString("MultipassUsageError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed to restore file: "{0}", Error message: {1}.
+ ///
+ internal static string RestoreFileError {
+ get {
+ return ResourceManager.GetString("RestoreFileError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Folder did not exist on restore by delta: {0}.
+ ///
+ internal static string RestoreFolderDeltaError {
+ get {
+ return ResourceManager.GetString("RestoreFolderDeltaError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Folder did not exist on restore: {0}.
+ ///
+ internal static string RestoreFolderMissingError {
+ get {
+ return ResourceManager.GetString("RestoreFolderMissingError", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Duplicati/Library/Main/Strings/RSyncDir.resx b/Duplicati/Library/Main/Strings/RSyncDir.resx
new file mode 100644
index 000000000..292d6b64c
--- /dev/null
+++ b/Duplicati/Library/Main/Strings/RSyncDir.resx
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Failed to create folder: "{0}", Error message: {1}
+
+
+ Failed to delete file: "{0}", Error message: {1}
+
+
+ Failed to remove folder: "{0}", Error message: {1}
+
+
+ Failed to process file: {0}. Error message: {1}
+
+
+ Filed marked for deletion did not exist: {0}
+
+
+ Folder was marked for deletion, but did not exist:
+
+
+ Multi pass is not initialized
+
+
+ Failed to restore file: "{0}", Error message: {1}
+
+
+ Folder did not exist on restore by delta: {0}
+
+
+ Folder did not exist on restore: {0}
+
+
\ No newline at end of file
diff --git a/Duplicati/Library/SharpRSync/ChecksumFile.cs b/Duplicati/Library/SharpRSync/ChecksumFile.cs
index 0a3c5c74e..04a78c07c 100644
--- a/Duplicati/Library/SharpRSync/ChecksumFile.cs
+++ b/Duplicati/Library/SharpRSync/ChecksumFile.cs
@@ -38,7 +38,7 @@ namespace Duplicati.Library.SharpRSync
private List> m_strongList;
private Adler32Checksum m_adler;
private System.Security.Cryptography.HashAlgorithm m_md4;
- private System.Security.Cryptography.HashAlgorithm m_sha;
+ //private System.Security.Cryptography.HashAlgorithm m_sha;
///
/// Reads a ChecksumFile from a stream
@@ -50,21 +50,21 @@ namespace Duplicati.Library.SharpRSync
m_strongList = new List>();
byte[] sig = new byte[4];
if (Utility.ForceStreamRead(input, sig, 4) != 4)
- throw new Exception("End of stream occured while reading initial 4 bytes of signature file");
+ throw new Exception(Strings.ChecksumFile.EndofstreamBeforeSignatureError);
for (int i = 0; i < sig.Length; i++)
if (RDiffBinary.SIGNATURE_MAGIC[i] != sig[i])
- throw new Exception("Signature stream did not have the correct start marker");
+ throw new Exception(Strings.ChecksumFile.InvalidSignatureHeaderError);
if (Utility.ForceStreamRead(input, sig, 4) != 4)
- throw new Exception("End of stream occured while reading blocksize in signature file");
+ throw new Exception(Strings.ChecksumFile.EndofstreamInBlocksizeError);
m_blocklen = BitConverter.ToInt32(RDiffBinary.FixEndian(sig), 0);
if (m_blocklen < 1 || m_blocklen > int.MaxValue / 2)
- throw new Exception("Blocklen in signature file was: " + m_blocklen + ", which does not seem correct");
+ throw new Exception(string.Format(Strings.ChecksumFile.InvalidBlocksizeError, m_blocklen));
if (Utility.ForceStreamRead(input, sig, 4) != 4)
- throw new Exception("End of stream occured while reading stronglen in signature file");
+ throw new Exception(Strings.ChecksumFile.EndofstreamInStronglenError);
m_stronglen = BitConverter.ToInt32(RDiffBinary.FixEndian(sig), 0);
if (m_stronglen < 1 || m_stronglen > MD4_LENGTH)
- throw new Exception("Stronglen in signature file was: " + m_stronglen + ", which does not seem correct");
+ throw new Exception(string.Format(Strings.ChecksumFile.InvalidStrongsizeError, m_stronglen));
while(true)
{
@@ -74,7 +74,7 @@ namespace Duplicati.Library.SharpRSync
byte[] strongbuf = new byte[m_stronglen];
if (Utility.ForceStreamRead(input, strongbuf, strongbuf.Length) != strongbuf.Length)
- throw new Exception("End of stream occured while reading strong signature from signature file");
+ throw new Exception(Strings.ChecksumFile.EndofstreamInStrongSignatureError);
if (!m_checksums.ContainsKey(weak))
m_checksums[weak] = new List();
@@ -105,8 +105,8 @@ namespace Duplicati.Library.SharpRSync
m_md4 = System.Security.Cryptography.MD4.Create("MD4");
m_md4.Initialize();
- m_sha = System.Security.Cryptography.HashAlgorithm.Create("SHA256");
- m_sha.Initialize();
+ //m_sha = System.Security.Cryptography.HashAlgorithm.Create("SHA256");
+ //m_sha.Initialize();
}
///
diff --git a/Duplicati/Library/SharpRSync/DeltaFile.cs b/Duplicati/Library/SharpRSync/DeltaFile.cs
index b9673693f..9ae577947 100644
--- a/Duplicati/Library/SharpRSync/DeltaFile.cs
+++ b/Duplicati/Library/SharpRSync/DeltaFile.cs
@@ -63,10 +63,10 @@ namespace Duplicati.Library.SharpRSync
{
byte[] sig = new byte[4];
if (Utility.ForceStreamRead(m_inputStream, sig, 4) != 4)
- throw new Exception("End of stream occured while reading initial 4 bytes of delta file");
+ throw new Exception(Strings.DeltaFile.EndofstreamBeforeSignatureError);
for (int i = 0; i < sig.Length; i++)
if (RDiffBinary.DELTA_MAGIC[i] != sig[i])
- throw new Exception("Delta stream did not have the correct start marker");
+ throw new Exception(Strings.DeltaFile.InvalidSignatureError);
//Keep reading until we hit the end command
while (true)
@@ -77,7 +77,7 @@ namespace Duplicati.Library.SharpRSync
//It is an error to omit the end command
if (command < 0)
- throw new Exception("Stream ended but had no end marker");
+ throw new Exception(Strings.DeltaFile.EndofstreamWithoutMarkerError);
if (Enum.IsDefined(typeof(RDiffBinary.LiteralDeltaCommand), (RDiffBinary.LiteralDeltaCommand)command))
{
@@ -85,10 +85,10 @@ namespace Duplicati.Library.SharpRSync
int len = RDiffBinary.GetLiteralLength((RDiffBinary.LiteralDeltaCommand)command);
byte[] tmp = new byte[len];
if (Utility.ForceStreamRead(m_inputStream, tmp, tmp.Length) != tmp.Length)
- throw new Exception("Unexpected end of stream detected");
+ throw new Exception(Strings.DeltaFile.UnexpectedEndofstreamError);
long size = RDiffBinary.DecodeLength(tmp);
if (size < 0)
- throw new Exception("Invalid size for literal data");
+ throw new Exception(Strings.DeltaFile.InvalidLitteralSizeError);
//Copy the literal data from the patch to the output
Utility.StreamCopy(m_inputStream, output, size);
@@ -99,19 +99,19 @@ namespace Duplicati.Library.SharpRSync
int len = RDiffBinary.GetCopyOffsetSize((RDiffBinary.CopyDeltaCommand)command);
byte[] tmp = new byte[len];
if (Utility.ForceStreamRead(m_inputStream, tmp, tmp.Length) != tmp.Length)
- throw new Exception("Unexpected end of stream detected");
+ throw new Exception(Strings.DeltaFile.UnexpectedEndofstreamError);
long offset = RDiffBinary.DecodeLength(tmp);
if (offset < 0)
- throw new Exception("Invalid offset for copy data");
+ throw new Exception(Strings.DeltaFile.InvalidCopyOffsetError);
//Find the length of the data to copy from the basefile
len = RDiffBinary.GetCopyLengthSize((RDiffBinary.CopyDeltaCommand)command);
tmp = new byte[len];
if (Utility.ForceStreamRead(m_inputStream, tmp, tmp.Length) != tmp.Length)
- throw new Exception("Unexpected end of stream detected");
+ throw new Exception(Strings.DeltaFile.UnexpectedEndofstreamError);
long length = RDiffBinary.DecodeLength(tmp);
if (length < 0)
- throw new Exception("Invalid length for copy data");
+ throw new Exception(Strings.DeltaFile.InvalidCopyLengthError);
//Seek to the begining, and copy
basefile.Position = offset;
@@ -123,7 +123,7 @@ namespace Duplicati.Library.SharpRSync
Utility.StreamCopy(m_inputStream, output, command);
}
else
- throw new Exception("Unknown command in delta file");
+ throw new Exception(Strings.DeltaFile.UnknownCommandError);
}
output.Flush();
@@ -250,7 +250,7 @@ namespace Duplicati.Library.SharpRSync
unmatched = buffer.Count;
if (matched > 0 && unmatched > 0)
- throw new Exception("Internal error, had buffered both matched and unmatched blocks!");
+ throw new Exception(Strings.DeltaFile.InternalBufferError);
if (matched > 0)
{
diff --git a/Duplicati/Library/SharpRSync/Duplicati.Library.SharpRSync.csproj b/Duplicati/Library/SharpRSync/Duplicati.Library.SharpRSync.csproj
index 009103027..5dd6037c8 100644
--- a/Duplicati/Library/SharpRSync/Duplicati.Library.SharpRSync.csproj
+++ b/Duplicati/Library/SharpRSync/Duplicati.Library.SharpRSync.csproj
@@ -48,11 +48,63 @@
+
+ True
+ True
+ ChecksumFile.resx
+
+
+ True
+ True
+ DeltaFile.resx
+
+
+ True
+ True
+ RDiffBinary.resx
+
+
+ True
+ True
+ RollingBuffer.resx
+
+
+ True
+ True
+ Utility.resx
+
+
+
+ Designer
+ ResXFileCodeGenerator
+ ChecksumFile.Designer.cs
+
+
+ Designer
+ ResXFileCodeGenerator
+ DeltaFile.Designer.cs
+
+
+ Designer
+ ResXFileCodeGenerator
+ RDiffBinary.Designer.cs
+
+
+ Designer
+ ResXFileCodeGenerator
+ RollingBuffer.Designer.cs
+
+
+ Designer
+ ResXFileCodeGenerator
+ Utility.Designer.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ End of stream occured while reading initial 4 bytes of signature file
+
+
+ End of stream occured while reading blocksize in signature file
+
+
+ End of stream occured while reading stronglen in signature file
+
+
+ End of stream occured while reading strong signature from signature file
+
+
+ Blocklen in signature file was: {0}, which does not seem correct
+
+
+ Signature stream did not have the correct start marker
+
+
+ Stronglen in signature file was: {0}, which does not seem correct
+
+
\ No newline at end of file
diff --git a/Duplicati/Library/SharpRSync/Strings/DeltaFile.Designer.cs b/Duplicati/Library/SharpRSync/Strings/DeltaFile.Designer.cs
new file mode 100644
index 000000000..0299e000c
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/DeltaFile.Designer.cs
@@ -0,0 +1,144 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.3082
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Duplicati.Library.SharpRSync.Strings {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class DeltaFile {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal DeltaFile() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Duplicati.Library.SharpRSync.Strings.DeltaFile", typeof(DeltaFile).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to End of stream occured while reading initial 4 bytes of delta file.
+ ///
+ internal static string EndofstreamBeforeSignatureError {
+ get {
+ return ResourceManager.GetString("EndofstreamBeforeSignatureError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Stream ended but had no end marker.
+ ///
+ internal static string EndofstreamWithoutMarkerError {
+ get {
+ return ResourceManager.GetString("EndofstreamWithoutMarkerError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal error, had buffered both matched and unmatched blocks!.
+ ///
+ internal static string InternalBufferError {
+ get {
+ return ResourceManager.GetString("InternalBufferError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid length for copy data.
+ ///
+ internal static string InvalidCopyLengthError {
+ get {
+ return ResourceManager.GetString("InvalidCopyLengthError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid offset for copy data.
+ ///
+ internal static string InvalidCopyOffsetError {
+ get {
+ return ResourceManager.GetString("InvalidCopyOffsetError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid size for literal data.
+ ///
+ internal static string InvalidLitteralSizeError {
+ get {
+ return ResourceManager.GetString("InvalidLitteralSizeError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delta stream did not have the correct start marker.
+ ///
+ internal static string InvalidSignatureError {
+ get {
+ return ResourceManager.GetString("InvalidSignatureError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unexpected end of stream detected.
+ ///
+ internal static string UnexpectedEndofstreamError {
+ get {
+ return ResourceManager.GetString("UnexpectedEndofstreamError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unknown command in delta file.
+ ///
+ internal static string UnknownCommandError {
+ get {
+ return ResourceManager.GetString("UnknownCommandError", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Duplicati/Library/SharpRSync/Strings/DeltaFile.resx b/Duplicati/Library/SharpRSync/Strings/DeltaFile.resx
new file mode 100644
index 000000000..6463ec4fb
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/DeltaFile.resx
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ End of stream occured while reading initial 4 bytes of delta file
+
+
+ Stream ended but had no end marker
+
+
+ Internal error, had buffered both matched and unmatched blocks!
+
+
+ Invalid length for copy data
+
+
+ Invalid offset for copy data
+
+
+ Invalid size for literal data
+
+
+ Delta stream did not have the correct start marker
+
+
+ Unexpected end of stream detected
+
+
+ Unknown command in delta file
+
+
\ No newline at end of file
diff --git a/Duplicati/Library/SharpRSync/Strings/RDiffBinary.Designer.cs b/Duplicati/Library/SharpRSync/Strings/RDiffBinary.Designer.cs
new file mode 100644
index 000000000..fc52ff87b
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/RDiffBinary.Designer.cs
@@ -0,0 +1,126 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.3082
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Duplicati.Library.SharpRSync.Strings {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class RDiffBinary {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal RDiffBinary() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Duplicati.Library.SharpRSync.Strings.RDiffBinary", typeof(RDiffBinary).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Encoded value had unexpected length.
+ ///
+ internal static string EncodedLengthError {
+ get {
+ return ResourceManager.GetString("EncodedLengthError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid data length.
+ ///
+ internal static string InvalidDataLengthError {
+ get {
+ return ResourceManager.GetString("InvalidDataLengthError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid delta copy command: {0}.
+ ///
+ internal static string InvalidDeltaCopyCommandError {
+ get {
+ return ResourceManager.GetString("InvalidDeltaCopyCommandError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid size for encoded value!.
+ ///
+ internal static string InvalidEncodedSizeError {
+ get {
+ return ResourceManager.GetString("InvalidEncodedSizeError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid literal delta command: {0}.
+ ///
+ internal static string InvalidLiteralCommand {
+ get {
+ return ResourceManager.GetString("InvalidLiteralCommand", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to size item, because it is larger than: {0}.
+ ///
+ internal static string SizeTooLargeError {
+ get {
+ return ResourceManager.GetString("SizeTooLargeError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Value must be less than: {0}.
+ ///
+ internal static string ValueTooLargeError {
+ get {
+ return ResourceManager.GetString("ValueTooLargeError", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Duplicati/Library/SharpRSync/Strings/RDiffBinary.resx b/Duplicati/Library/SharpRSync/Strings/RDiffBinary.resx
new file mode 100644
index 000000000..485c968b5
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/RDiffBinary.resx
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Encoded value had unexpected length
+
+
+ Invalid data length
+
+
+ Invalid delta copy command: {0}
+
+
+ Invalid size for encoded value!
+
+
+ Invalid literal delta command: {0}
+
+
+ Unable to size item, because it is larger than: {0}
+
+
+ Value must be less than: {0}
+
+
\ No newline at end of file
diff --git a/Duplicati/Library/SharpRSync/Strings/RollingBuffer.Designer.cs b/Duplicati/Library/SharpRSync/Strings/RollingBuffer.Designer.cs
new file mode 100644
index 000000000..9d568ae12
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/RollingBuffer.Designer.cs
@@ -0,0 +1,90 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.3082
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Duplicati.Library.SharpRSync.Strings {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class RollingBuffer {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal RollingBuffer() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Duplicati.Library.SharpRSync.Strings.RollingBuffer", typeof(RollingBuffer).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Buffer has too few bytes.
+ ///
+ internal static string BufferExhaustedError {
+ get {
+ return ResourceManager.GetString("BufferExhaustedError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to This is one sad rolling buffer :(.
+ ///
+ internal static string InternalError {
+ get {
+ return ResourceManager.GetString("InternalError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Index cannot be negative.
+ ///
+ internal static string NegativeIndexError {
+ get {
+ return ResourceManager.GetString("NegativeIndexError", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Duplicati/Library/SharpRSync/Strings/RollingBuffer.resx b/Duplicati/Library/SharpRSync/Strings/RollingBuffer.resx
new file mode 100644
index 000000000..dfb822f06
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/RollingBuffer.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Buffer has too few bytes
+
+
+ This is one sad rolling buffer :(
+
+
+ Index cannot be negative
+
+
\ No newline at end of file
diff --git a/Duplicati/Library/SharpRSync/Strings/Utility.Designer.cs b/Duplicati/Library/SharpRSync/Strings/Utility.Designer.cs
new file mode 100644
index 000000000..997b05a33
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/Utility.Designer.cs
@@ -0,0 +1,72 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.3082
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Duplicati.Library.SharpRSync.Strings {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Utility {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Utility() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Duplicati.Library.SharpRSync.Strings.Utility", typeof(Utility).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unexpected end of stream.
+ ///
+ internal static string UnexpectedEndOfStreamError {
+ get {
+ return ResourceManager.GetString("UnexpectedEndOfStreamError", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Duplicati/Library/SharpRSync/Strings/Utility.resx b/Duplicati/Library/SharpRSync/Strings/Utility.resx
new file mode 100644
index 000000000..b336240f7
--- /dev/null
+++ b/Duplicati/Library/SharpRSync/Strings/Utility.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Unexpected end of stream
+
+
\ No newline at end of file
diff --git a/Duplicati/Library/SharpRSync/Utility.cs b/Duplicati/Library/SharpRSync/Utility.cs
index e4d726b05..d4c41caa5 100644
--- a/Duplicati/Library/SharpRSync/Utility.cs
+++ b/Duplicati/Library/SharpRSync/Utility.cs
@@ -62,7 +62,7 @@ namespace Duplicati.Library.SharpRSync
{
int a = input.Read(buf, 0, (int)Math.Min(count, buf.Length));
if (a <= 0)
- throw new Exception("Unexpected end of stream");
+ throw new Exception(Strings.Utility.UnexpectedEndOfStreamError);
output.Write(buf, 0, a);
count -= a;
}
diff --git a/WizardForm/Dialog.Designer.cs b/WizardForm/Dialog.Designer.cs
index 98a43f4b7..c009e02fc 100644
--- a/WizardForm/Dialog.Designer.cs
+++ b/WizardForm/Dialog.Designer.cs
@@ -28,6 +28,7 @@ namespace System.Windows.Forms.Wizard
///
private void InitializeComponent()
{
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Dialog));
this._InfoPanel = new System.Windows.Forms.Panel();
this._InfoLabel = new System.Windows.Forms.Label();
this._TitleLabel = new System.Windows.Forms.Label();
@@ -48,36 +49,23 @@ namespace System.Windows.Forms.Wizard
this._InfoPanel.Controls.Add(this._InfoLabel);
this._InfoPanel.Controls.Add(this._TitleLabel);
this._InfoPanel.Controls.Add(this._PageIcon);
- this._InfoPanel.Dock = System.Windows.Forms.DockStyle.Top;
- this._InfoPanel.Location = new System.Drawing.Point(0, 0);
+ resources.ApplyResources(this._InfoPanel, "_InfoPanel");
this._InfoPanel.Name = "_InfoPanel";
- this._InfoPanel.Size = new System.Drawing.Size(506, 64);
- this._InfoPanel.TabIndex = 0;
//
// _InfoLabel
//
- this._InfoLabel.Location = new System.Drawing.Point(40, 24);
+ resources.ApplyResources(this._InfoLabel, "_InfoLabel");
this._InfoLabel.Name = "_InfoLabel";
- this._InfoLabel.Size = new System.Drawing.Size(400, 32);
- this._InfoLabel.TabIndex = 2;
- this._InfoLabel.Text = "Helptext";
//
// _TitleLabel
//
- this._TitleLabel.AutoSize = true;
- this._TitleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this._TitleLabel.Location = new System.Drawing.Point(16, 8);
+ resources.ApplyResources(this._TitleLabel, "_TitleLabel");
this._TitleLabel.Name = "_TitleLabel";
- this._TitleLabel.Size = new System.Drawing.Size(32, 13);
- this._TitleLabel.TabIndex = 1;
- this._TitleLabel.Text = "Title";
//
// _PageIcon
//
- this._PageIcon.Location = new System.Drawing.Point(448, 8);
+ resources.ApplyResources(this._PageIcon, "_PageIcon");
this._PageIcon.Name = "_PageIcon";
- this._PageIcon.Size = new System.Drawing.Size(48, 48);
- this._PageIcon.TabIndex = 0;
this._PageIcon.TabStop = false;
//
// _ButtonPanel
@@ -85,58 +73,43 @@ namespace System.Windows.Forms.Wizard
this._ButtonPanel.Controls.Add(this._BackButton);
this._ButtonPanel.Controls.Add(this._NextButton);
this._ButtonPanel.Controls.Add(this._CancelButton);
- this._ButtonPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
- this._ButtonPanel.Location = new System.Drawing.Point(0, 306);
+ resources.ApplyResources(this._ButtonPanel, "_ButtonPanel");
this._ButtonPanel.Name = "_ButtonPanel";
- this._ButtonPanel.Size = new System.Drawing.Size(506, 48);
- this._ButtonPanel.TabIndex = 1;
//
// _BackButton
//
- this._BackButton.Location = new System.Drawing.Point(248, 16);
+ resources.ApplyResources(this._BackButton, "_BackButton");
this._BackButton.Name = "_BackButton";
- this._BackButton.Size = new System.Drawing.Size(80, 24);
- this._BackButton.TabIndex = 2;
- this._BackButton.Text = "< Back";
this._BackButton.UseVisualStyleBackColor = true;
this._BackButton.Click += new System.EventHandler(this.BackBtn_Click);
//
// _NextButton
//
- this._NextButton.Location = new System.Drawing.Point(328, 16);
+ resources.ApplyResources(this._NextButton, "_NextButton");
this._NextButton.Name = "_NextButton";
- this._NextButton.Size = new System.Drawing.Size(80, 24);
- this._NextButton.TabIndex = 1;
- this._NextButton.Text = "Next >";
this._NextButton.UseVisualStyleBackColor = true;
this._NextButton.Click += new System.EventHandler(this.NextBtn_Click);
//
// _CancelButton
//
this._CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this._CancelButton.Location = new System.Drawing.Point(416, 16);
+ resources.ApplyResources(this._CancelButton, "_CancelButton");
this._CancelButton.Name = "_CancelButton";
- this._CancelButton.Size = new System.Drawing.Size(80, 24);
- this._CancelButton.TabIndex = 0;
- this._CancelButton.Text = "Cancel";
this._CancelButton.UseVisualStyleBackColor = true;
this._CancelButton.Click += new System.EventHandler(this.CancelBtn_Click);
//
// _ContentPanel
//
- this._ContentPanel.Location = new System.Drawing.Point(-1, 61);
+ resources.ApplyResources(this._ContentPanel, "_ContentPanel");
this._ContentPanel.Name = "_ContentPanel";
- this._ContentPanel.Size = new System.Drawing.Size(509, 244);
- this._ContentPanel.TabIndex = 2;
this._ContentPanel.TabStop = false;
//
// Dialog
//
this.AcceptButton = this._NextButton;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this._CancelButton;
- this.ClientSize = new System.Drawing.Size(506, 354);
this.Controls.Add(this._ButtonPanel);
this.Controls.Add(this._InfoPanel);
this.Controls.Add(this._ContentPanel);
@@ -144,8 +117,6 @@ namespace System.Windows.Forms.Wizard
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Dialog";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "Dialog";
this.Load += new System.EventHandler(this.Dialog_Load);
this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Dialog_KeyUp);
this._InfoPanel.ResumeLayout(false);
diff --git a/WizardForm/Dialog.cs b/WizardForm/Dialog.cs
index a59fb2790..89e9f6e3f 100644
--- a/WizardForm/Dialog.cs
+++ b/WizardForm/Dialog.cs
@@ -114,9 +114,9 @@ namespace System.Windows.Forms.Wizard
_BackButton.Enabled = m_visited.Count > 0;
if (m_isLastPage)
- _NextButton.Text = "Finish";
+ _NextButton.Text = Strings.Dialog.NextButtonText;
else
- _NextButton.Text = "Next >";
+ _NextButton.Text = Strings.Dialog.FinishButtonText;
}
public virtual void UpdateDisplay()
diff --git a/WizardForm/Dialog.resx b/WizardForm/Dialog.resx
index ff31a6db5..6cf05753f 100644
--- a/WizardForm/Dialog.resx
+++ b/WizardForm/Dialog.resx
@@ -117,4 +117,244 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 40, 24
+
+
+ 400, 32
+
+
+
+ 2
+
+
+ Helptext
+
+
+ _InfoLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ _InfoPanel
+
+
+ 0
+
+
+ True
+
+
+ Microsoft Sans Serif, 8.25pt, style=Bold
+
+
+ 16, 8
+
+
+ 32, 13
+
+
+ 1
+
+
+ Title
+
+
+ _TitleLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ _InfoPanel
+
+
+ 1
+
+
+ 448, 8
+
+
+ 48, 48
+
+
+ 0
+
+
+ _PageIcon
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ _InfoPanel
+
+
+ 2
+
+
+
+ Top
+
+
+ 0, 0
+
+
+ 506, 64
+
+
+ 0
+
+
+ _InfoPanel
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
+
+ 248, 16
+
+
+ 80, 24
+
+
+ 2
+
+
+ < Back
+
+
+ _BackButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ _ButtonPanel
+
+
+ 0
+
+
+ 328, 16
+
+
+ 80, 24
+
+
+ 1
+
+
+ Next >
+
+
+ _NextButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ _ButtonPanel
+
+
+ 1
+
+
+ 416, 16
+
+
+ 80, 24
+
+
+ 0
+
+
+ Cancel
+
+
+ _CancelButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ _ButtonPanel
+
+
+ 2
+
+
+ Bottom
+
+
+ 0, 306
+
+
+ 506, 48
+
+
+ 1
+
+
+ _ButtonPanel
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ -1, 61
+
+
+ 509, 244
+
+
+ 2
+
+
+ _ContentPanel
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 2
+
+
+ True
+
+
+ 6, 13
+
+
+ 506, 354
+
+
+ CenterScreen
+
+
+ Dialog
+
+
+ Dialog
+
+
+ System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/WizardForm/StartPage.Designer.cs b/WizardForm/StartPage.Designer.cs
index b2d8ef61b..a40930f73 100644
--- a/WizardForm/StartPage.Designer.cs
+++ b/WizardForm/StartPage.Designer.cs
@@ -28,22 +28,20 @@ namespace System.Windows.Forms.Wizard
///
private void InitializeComponent()
{
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(StartPage));
this.panel1 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
- this.WizardHelp = new System.Windows.Forms.Label();
- this.WizardTitle = new System.Windows.Forms.Label();
this.WizardIntroduction = new System.Windows.Forms.Label();
+ this.WizardTitle = new System.Windows.Forms.Label();
+ this.WizardHelp = new System.Windows.Forms.Label();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Navy;
- this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
- this.panel1.Location = new System.Drawing.Point(0, 0);
+ resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(152, 312);
- this.panel1.TabIndex = 0;
//
// panel2
//
@@ -51,46 +49,31 @@ namespace System.Windows.Forms.Wizard
this.panel2.Controls.Add(this.WizardIntroduction);
this.panel2.Controls.Add(this.WizardTitle);
this.panel2.Controls.Add(this.WizardHelp);
- this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel2.Location = new System.Drawing.Point(152, 0);
+ resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(354, 312);
- this.panel2.TabIndex = 1;
- //
- // WizardHelp
- //
- this.WizardHelp.AutoSize = true;
- this.WizardHelp.Location = new System.Drawing.Point(8, 280);
- this.WizardHelp.Name = "WizardHelp";
- this.WizardHelp.Size = new System.Drawing.Size(109, 13);
- this.WizardHelp.TabIndex = 0;
- this.WizardHelp.Text = "Click next to continue";
- //
- // WizardTitle
- //
- this.WizardTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.WizardTitle.Location = new System.Drawing.Point(16, 16);
- this.WizardTitle.Name = "WizardTitle";
- this.WizardTitle.Size = new System.Drawing.Size(320, 48);
- this.WizardTitle.TabIndex = 1;
- this.WizardTitle.Text = "Wizard title";
//
// WizardIntroduction
//
- this.WizardIntroduction.Location = new System.Drawing.Point(16, 64);
+ resources.ApplyResources(this.WizardIntroduction, "WizardIntroduction");
this.WizardIntroduction.Name = "WizardIntroduction";
- this.WizardIntroduction.Size = new System.Drawing.Size(320, 208);
- this.WizardIntroduction.TabIndex = 2;
- this.WizardIntroduction.Text = "Wizard introduction";
+ //
+ // WizardTitle
+ //
+ resources.ApplyResources(this.WizardTitle, "WizardTitle");
+ this.WizardTitle.Name = "WizardTitle";
+ //
+ // WizardHelp
+ //
+ resources.ApplyResources(this.WizardHelp, "WizardHelp");
+ this.WizardHelp.Name = "WizardHelp";
//
// StartPage
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.Name = "StartPage";
- this.Size = new System.Drawing.Size(506, 312);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.ResumeLayout(false);
diff --git a/WizardForm/StartPage.resx b/WizardForm/StartPage.resx
index ff31a6db5..90eb3330c 100644
--- a/WizardForm/StartPage.resx
+++ b/WizardForm/StartPage.resx
@@ -117,4 +117,148 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Left
+
+
+
+ 0, 0
+
+
+ 152, 312
+
+
+
+ 0
+
+
+ panel1
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
+
+ 16, 64
+
+
+ 320, 208
+
+
+ 2
+
+
+ Wizard introduction
+
+
+ WizardIntroduction
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 0
+
+
+ Microsoft Sans Serif, 12pt
+
+
+ 16, 16
+
+
+ 320, 48
+
+
+ 1
+
+
+ Wizard title
+
+
+ WizardTitle
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 1
+
+
+ True
+
+
+ 8, 280
+
+
+ 109, 13
+
+
+ 0
+
+
+ Click next to continue
+
+
+ WizardHelp
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 2
+
+
+ Fill
+
+
+ 152, 0
+
+
+ 354, 312
+
+
+ 1
+
+
+ panel2
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ True
+
+
+ 6, 13
+
+
+ 506, 312
+
+
+ StartPage
+
+
+ System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/WizardForm/Strings/Dialog.Designer.cs b/WizardForm/Strings/Dialog.Designer.cs
new file mode 100644
index 000000000..f873e9fdb
--- /dev/null
+++ b/WizardForm/Strings/Dialog.Designer.cs
@@ -0,0 +1,81 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.3082
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace System.Windows.Forms.Wizard.Strings {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Dialog {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Dialog() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Windows.Forms.Wizard.Strings.Dialog", typeof(Dialog).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Finish.
+ ///
+ internal static string FinishButtonText {
+ get {
+ return ResourceManager.GetString("FinishButtonText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Next >.
+ ///
+ internal static string NextButtonText {
+ get {
+ return ResourceManager.GetString("NextButtonText", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/WizardForm/Strings/Dialog.resx b/WizardForm/Strings/Dialog.resx
new file mode 100644
index 000000000..bf85d0f7b
--- /dev/null
+++ b/WizardForm/Strings/Dialog.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Finish
+
+
+ Next >
+
+
\ No newline at end of file
diff --git a/WizardForm/WizardForm.csproj b/WizardForm/WizardForm.csproj
index b0ab5fbb0..f27c88d92 100644
--- a/WizardForm/WizardForm.csproj
+++ b/WizardForm/WizardForm.csproj
@@ -55,6 +55,11 @@
StartPage.cs
+
+ True
+ True
+ Dialog.resx
+
UserControl
@@ -72,6 +77,11 @@
Designer
StartPage.cs
+
+ Designer
+ ResXFileCodeGenerator
+ Dialog.Designer.cs
+
Designer
WizardControl.cs
diff --git a/thirdparty/LightDataModel/LightDataModel.snk b/thirdparty/LightDataModel/LightDataModel.snk
new file mode 100644
index 000000000..e0c1e2dd8
Binary files /dev/null and b/thirdparty/LightDataModel/LightDataModel.snk differ
diff --git a/thirdparty/LightDataModel/System.Data.SQLite.DLL b/thirdparty/LightDataModel/System.Data.SQLite.DLL
new file mode 100644
index 000000000..6e1905726
Binary files /dev/null and b/thirdparty/LightDataModel/System.Data.SQLite.DLL differ
diff --git a/thirdparty/SQLite/Bin/libsqlite3.so.0 b/thirdparty/SQLite/Bin/libsqlite3.so.0
new file mode 100644
index 000000000..caaaa7537
Binary files /dev/null and b/thirdparty/SQLite/Bin/libsqlite3.so.0 differ