Removed all informs code (no more 1.3.x UI)
@@ -1,8 +1,6 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati", "Duplicati\GUI\Duplicati.csproj", "{1470F75F-D364-4010-91D0-FD4DDA1C5159}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Utility", "Duplicati\Library\Utility\Duplicati.Library.Utility.csproj", "{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Main", "Duplicati\Library\Main\Duplicati.Library.Main.csproj", "{10D2D1B7-C664-41D8-9B3A-00040C3D421B}"
|
||||
@@ -31,8 +29,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Backend.C
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Datamodel", "Duplicati\GUI\Datamodel\Datamodel.csproj", "{B60D0993-B0C5-457A-90D9-DB6EEB33CE47}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WizardForm", "WizardForm\WizardForm.csproj", "{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.CommandLine.BackendTester", "Duplicati\CommandLine\BackendTester\Duplicati.CommandLine.BackendTester.csproj", "{E7280DCA-7776-4A73-B9B5-41FD77FC8799}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Interface", "Duplicati\Library\Interface\Duplicati.Library.Interface.csproj", "{C5899F45-B0FF-483C-9D38-24A9FCAAB237}"
|
||||
@@ -43,8 +39,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Snapshots
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.License", "Duplicati\License\Duplicati.License.csproj", "{4D012CB1-4B92-47F4-89B7-BF80A73A2E99}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Winforms.Controls", "Duplicati\Winforms\Controls\Duplicati.Winforms.Controls.csproj", "{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Modules.Builtin", "Duplicati\Library\Modules\Builtin\Duplicati.Library.Modules.Builtin.csproj", "{52826615-7964-47FE-B4B3-1B2DBDF605B9}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Backend.TahoeLAFS", "Duplicati\Library\Backend\TahoeLAFS\Duplicati.Library.Backend.TahoeLAFS.csproj", "{C0270709-2A40-43B5-8CF1-69581B9FA2A1}"
|
||||
@@ -79,10 +73,6 @@ Global
|
||||
{10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{17566860-3D98-4604-AA5B-47661F75609F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{17566860-3D98-4604-AA5B-47661F75609F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{17566860-3D98-4604-AA5B-47661F75609F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
@@ -123,10 +113,6 @@ Global
|
||||
{52826615-7964-47FE-B4B3-1B2DBDF605B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{52826615-7964-47FE-B4B3-1B2DBDF605B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{52826615-7964-47FE-B4B3-1B2DBDF605B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{81765A64-3661-4E3E-B850-2F6F87A51F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{81765A64-3661-4E3E-B850-2F6F87A51F74}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{81765A64-3661-4E3E-B850-2F6F87A51F74}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
@@ -183,10 +169,6 @@ Global
|
||||
{E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
||||
@@ -146,9 +146,7 @@ namespace Duplicati.CommandLine.BackendTester
|
||||
{
|
||||
try
|
||||
{
|
||||
if (backend is IBackend_v2)
|
||||
((IBackend_v2)backend).CreateFolder();
|
||||
|
||||
backend.CreateFolder();
|
||||
curlist = backend.List();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -97,9 +97,7 @@ namespace Duplicati.CommandLine.BackendTool
|
||||
if (args.Count != 2)
|
||||
throw new Exception(string.Format("too many arguments: {0}", string.Join(",", args)));
|
||||
|
||||
if (!(backend is IBackend_v2))
|
||||
throw new Exception(string.Format("{0} backend does not support creating folders", backend.ProtocolKey));
|
||||
((IBackend_v2)backend).CreateFolder();
|
||||
backend.CreateFolder();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,503 +0,0 @@
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
partial class ApplicationSetup
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplicationSetup));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.BalloonNotificationLevel = new System.Windows.Forms.ComboBox();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.HideDonateButton = new System.Windows.Forms.CheckBox();
|
||||
this.StartupDelayDuration = new Duplicati.GUI.HelperControls.DurationEditor();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.LanguageSelection = new System.Windows.Forms.ComboBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.RecentDuration = new Duplicati.GUI.HelperControls.DurationEditor();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.CacheSizeLabel = new System.Windows.Forms.Label();
|
||||
this.ClearCacheButton = new System.Windows.Forms.Button();
|
||||
this.SignatureCacheEnabled = new System.Windows.Forms.CheckBox();
|
||||
this.SignatureCachePathBrowse = new System.Windows.Forms.Button();
|
||||
this.SignatureCachePath = new System.Windows.Forms.TextBox();
|
||||
this.TempPathBrowse = new System.Windows.Forms.Button();
|
||||
this.TempPath = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.OKBtn = new System.Windows.Forms.Button();
|
||||
this.CancelBtn = new System.Windows.Forms.Button();
|
||||
this.BrowseTempPath = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.PasswordDefaultsGroup = new System.Windows.Forms.GroupBox();
|
||||
this.PasswordPanel = new System.Windows.Forms.Panel();
|
||||
this.EncryptionModule = new System.Windows.Forms.ComboBox();
|
||||
this.EncryptionMethod = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.CommonPassword = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.UseCommonPassword = new System.Windows.Forms.CheckBox();
|
||||
this.BrowseSignatureCachePath = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.CacheSizeCalculator = new System.ComponentModel.BackgroundWorker();
|
||||
this.TabContainer = new System.Windows.Forms.TabControl();
|
||||
this.BasicTab = new System.Windows.Forms.TabPage();
|
||||
this.AdvancedTab = new System.Windows.Forms.TabPage();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this.Bandwidth = new Duplicati.GUI.HelperControls.BandwidthLimit();
|
||||
this.ThreadPriorityPicker = new Duplicati.GUI.HelperControls.ThreadPriorityPicker();
|
||||
this.LicenseTab = new System.Windows.Forms.TabPage();
|
||||
this.LicenseLink = new System.Windows.Forms.LinkLabel();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.LicenseText = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.LicenseSections = new System.Windows.Forms.ListBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.PasswordDefaultsGroup.SuspendLayout();
|
||||
this.PasswordPanel.SuspendLayout();
|
||||
this.TabContainer.SuspendLayout();
|
||||
this.BasicTab.SuspendLayout();
|
||||
this.AdvancedTab.SuspendLayout();
|
||||
this.groupBox4.SuspendLayout();
|
||||
this.LicenseTab.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
this.toolTip.SetToolTip(this.label1, resources.GetString("label1.ToolTip"));
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.BalloonNotificationLevel);
|
||||
this.groupBox1.Controls.Add(this.label8);
|
||||
this.groupBox1.Controls.Add(this.HideDonateButton);
|
||||
this.groupBox1.Controls.Add(this.StartupDelayDuration);
|
||||
this.groupBox1.Controls.Add(this.label7);
|
||||
this.groupBox1.Controls.Add(this.LanguageSelection);
|
||||
this.groupBox1.Controls.Add(this.label3);
|
||||
this.groupBox1.Controls.Add(this.RecentDuration);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// BalloonNotificationLevel
|
||||
//
|
||||
resources.ApplyResources(this.BalloonNotificationLevel, "BalloonNotificationLevel");
|
||||
this.BalloonNotificationLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.BalloonNotificationLevel.FormattingEnabled = true;
|
||||
this.BalloonNotificationLevel.Name = "BalloonNotificationLevel";
|
||||
this.toolTip.SetToolTip(this.BalloonNotificationLevel, resources.GetString("BalloonNotificationLevel.ToolTip"));
|
||||
this.BalloonNotificationLevel.SelectedIndexChanged += new System.EventHandler(this.BalloonNotificationLevel_SelectedIndexChanged);
|
||||
//
|
||||
// label8
|
||||
//
|
||||
resources.ApplyResources(this.label8, "label8");
|
||||
this.label8.Name = "label8";
|
||||
this.toolTip.SetToolTip(this.label8, resources.GetString("label8.ToolTip"));
|
||||
//
|
||||
// HideDonateButton
|
||||
//
|
||||
resources.ApplyResources(this.HideDonateButton, "HideDonateButton");
|
||||
this.HideDonateButton.Name = "HideDonateButton";
|
||||
this.toolTip.SetToolTip(this.HideDonateButton, resources.GetString("HideDonateButton.ToolTip"));
|
||||
this.HideDonateButton.UseVisualStyleBackColor = true;
|
||||
this.HideDonateButton.CheckedChanged += new System.EventHandler(this.HideDonateButton_CheckedChanged);
|
||||
//
|
||||
// StartupDelayDuration
|
||||
//
|
||||
resources.ApplyResources(this.StartupDelayDuration, "StartupDelayDuration");
|
||||
this.StartupDelayDuration.Name = "StartupDelayDuration";
|
||||
this.toolTip.SetToolTip(this.StartupDelayDuration, resources.GetString("StartupDelayDuration.ToolTip"));
|
||||
this.StartupDelayDuration.Value = "";
|
||||
this.StartupDelayDuration.ValueChanged += new System.EventHandler(this.StartupDelayDuration_ValueChanged);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
resources.ApplyResources(this.label7, "label7");
|
||||
this.label7.Name = "label7";
|
||||
this.toolTip.SetToolTip(this.label7, resources.GetString("label7.ToolTip"));
|
||||
//
|
||||
// LanguageSelection
|
||||
//
|
||||
resources.ApplyResources(this.LanguageSelection, "LanguageSelection");
|
||||
this.LanguageSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.LanguageSelection.FormattingEnabled = true;
|
||||
this.LanguageSelection.Name = "LanguageSelection";
|
||||
this.toolTip.SetToolTip(this.LanguageSelection, resources.GetString("LanguageSelection.ToolTip"));
|
||||
this.LanguageSelection.SelectedIndexChanged += new System.EventHandler(this.LanguageSelection_SelectedIndexChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
this.toolTip.SetToolTip(this.label3, resources.GetString("label3.ToolTip"));
|
||||
//
|
||||
// RecentDuration
|
||||
//
|
||||
resources.ApplyResources(this.RecentDuration, "RecentDuration");
|
||||
this.RecentDuration.Name = "RecentDuration";
|
||||
this.toolTip.SetToolTip(this.RecentDuration, resources.GetString("RecentDuration.ToolTip"));
|
||||
this.RecentDuration.Value = "";
|
||||
this.RecentDuration.ValueChanged += new System.EventHandler(this.RecentDuration_ValueChanged);
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.CacheSizeLabel);
|
||||
this.groupBox2.Controls.Add(this.ClearCacheButton);
|
||||
this.groupBox2.Controls.Add(this.SignatureCacheEnabled);
|
||||
this.groupBox2.Controls.Add(this.SignatureCachePathBrowse);
|
||||
this.groupBox2.Controls.Add(this.SignatureCachePath);
|
||||
this.groupBox2.Controls.Add(this.TempPathBrowse);
|
||||
this.groupBox2.Controls.Add(this.TempPath);
|
||||
this.groupBox2.Controls.Add(this.label4);
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
// CacheSizeLabel
|
||||
//
|
||||
resources.ApplyResources(this.CacheSizeLabel, "CacheSizeLabel");
|
||||
this.CacheSizeLabel.Name = "CacheSizeLabel";
|
||||
this.toolTip.SetToolTip(this.CacheSizeLabel, resources.GetString("CacheSizeLabel.ToolTip"));
|
||||
//
|
||||
// ClearCacheButton
|
||||
//
|
||||
resources.ApplyResources(this.ClearCacheButton, "ClearCacheButton");
|
||||
this.ClearCacheButton.Name = "ClearCacheButton";
|
||||
this.toolTip.SetToolTip(this.ClearCacheButton, resources.GetString("ClearCacheButton.ToolTip"));
|
||||
this.ClearCacheButton.UseVisualStyleBackColor = true;
|
||||
this.ClearCacheButton.Click += new System.EventHandler(this.ClearCacheButton_Click);
|
||||
//
|
||||
// SignatureCacheEnabled
|
||||
//
|
||||
resources.ApplyResources(this.SignatureCacheEnabled, "SignatureCacheEnabled");
|
||||
this.SignatureCacheEnabled.Name = "SignatureCacheEnabled";
|
||||
this.toolTip.SetToolTip(this.SignatureCacheEnabled, resources.GetString("SignatureCacheEnabled.ToolTip"));
|
||||
this.SignatureCacheEnabled.UseVisualStyleBackColor = true;
|
||||
this.SignatureCacheEnabled.CheckedChanged += new System.EventHandler(this.SignatureCacheEnabled_CheckedChanged);
|
||||
//
|
||||
// SignatureCachePathBrowse
|
||||
//
|
||||
resources.ApplyResources(this.SignatureCachePathBrowse, "SignatureCachePathBrowse");
|
||||
this.SignatureCachePathBrowse.Name = "SignatureCachePathBrowse";
|
||||
this.toolTip.SetToolTip(this.SignatureCachePathBrowse, resources.GetString("SignatureCachePathBrowse.ToolTip"));
|
||||
this.SignatureCachePathBrowse.UseVisualStyleBackColor = true;
|
||||
this.SignatureCachePathBrowse.Click += new System.EventHandler(this.SignatureCachePathBrowse_Click);
|
||||
//
|
||||
// SignatureCachePath
|
||||
//
|
||||
resources.ApplyResources(this.SignatureCachePath, "SignatureCachePath");
|
||||
this.SignatureCachePath.Name = "SignatureCachePath";
|
||||
this.SignatureCachePath.TextChanged += new System.EventHandler(this.SignatureCachePath_TextChanged);
|
||||
//
|
||||
// TempPathBrowse
|
||||
//
|
||||
resources.ApplyResources(this.TempPathBrowse, "TempPathBrowse");
|
||||
this.TempPathBrowse.Name = "TempPathBrowse";
|
||||
this.toolTip.SetToolTip(this.TempPathBrowse, resources.GetString("TempPathBrowse.ToolTip"));
|
||||
this.TempPathBrowse.UseVisualStyleBackColor = true;
|
||||
this.TempPathBrowse.Click += new System.EventHandler(this.TempPathBrowse_Click);
|
||||
//
|
||||
// TempPath
|
||||
//
|
||||
resources.ApplyResources(this.TempPath, "TempPath");
|
||||
this.TempPath.Name = "TempPath";
|
||||
this.toolTip.SetToolTip(this.TempPath, resources.GetString("TempPath.ToolTip"));
|
||||
this.TempPath.TextChanged += new System.EventHandler(this.TempPath_TextChanged);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
resources.ApplyResources(this.label4, "label4");
|
||||
this.label4.Name = "label4";
|
||||
this.toolTip.SetToolTip(this.label4, resources.GetString("label4.ToolTip"));
|
||||
//
|
||||
// OKBtn
|
||||
//
|
||||
resources.ApplyResources(this.OKBtn, "OKBtn");
|
||||
this.OKBtn.Name = "OKBtn";
|
||||
this.OKBtn.UseVisualStyleBackColor = true;
|
||||
this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
|
||||
//
|
||||
// CancelBtn
|
||||
//
|
||||
resources.ApplyResources(this.CancelBtn, "CancelBtn");
|
||||
this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.CancelBtn.Name = "CancelBtn";
|
||||
this.CancelBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// PasswordDefaultsGroup
|
||||
//
|
||||
this.PasswordDefaultsGroup.Controls.Add(this.PasswordPanel);
|
||||
this.PasswordDefaultsGroup.Controls.Add(this.UseCommonPassword);
|
||||
resources.ApplyResources(this.PasswordDefaultsGroup, "PasswordDefaultsGroup");
|
||||
this.PasswordDefaultsGroup.Name = "PasswordDefaultsGroup";
|
||||
this.PasswordDefaultsGroup.TabStop = false;
|
||||
//
|
||||
// PasswordPanel
|
||||
//
|
||||
this.PasswordPanel.Controls.Add(this.EncryptionModule);
|
||||
this.PasswordPanel.Controls.Add(this.EncryptionMethod);
|
||||
this.PasswordPanel.Controls.Add(this.label5);
|
||||
this.PasswordPanel.Controls.Add(this.CommonPassword);
|
||||
resources.ApplyResources(this.PasswordPanel, "PasswordPanel");
|
||||
this.PasswordPanel.Name = "PasswordPanel";
|
||||
//
|
||||
// EncryptionModule
|
||||
//
|
||||
this.EncryptionModule.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.EncryptionModule.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.EncryptionModule, "EncryptionModule");
|
||||
this.EncryptionModule.Name = "EncryptionModule";
|
||||
this.toolTip.SetToolTip(this.EncryptionModule, resources.GetString("EncryptionModule.ToolTip"));
|
||||
this.EncryptionModule.SelectedIndexChanged += new System.EventHandler(this.EncryptionModule_SelectedIndexChanged);
|
||||
this.EncryptionModule.TextChanged += new System.EventHandler(this.EncryptionModule_SelectedIndexChanged);
|
||||
//
|
||||
// EncryptionMethod
|
||||
//
|
||||
resources.ApplyResources(this.EncryptionMethod, "EncryptionMethod");
|
||||
this.EncryptionMethod.Name = "EncryptionMethod";
|
||||
this.toolTip.SetToolTip(this.EncryptionMethod, resources.GetString("EncryptionMethod.ToolTip"));
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
this.toolTip.SetToolTip(this.label5, resources.GetString("label5.ToolTip"));
|
||||
//
|
||||
// CommonPassword
|
||||
//
|
||||
this.CommonPassword.AskToEnterNewPassword = false;
|
||||
this.CommonPassword.InitialPassword = null;
|
||||
this.CommonPassword.IsPasswordVisible = false;
|
||||
resources.ApplyResources(this.CommonPassword, "CommonPassword");
|
||||
this.CommonPassword.MaximumSize = new System.Drawing.Size(5000, 20);
|
||||
this.CommonPassword.MinimumSize = new System.Drawing.Size(150, 20);
|
||||
this.CommonPassword.Name = "CommonPassword";
|
||||
this.toolTip.SetToolTip(this.CommonPassword, resources.GetString("CommonPassword.ToolTip"));
|
||||
this.CommonPassword.TextChanged += new System.EventHandler(this.CommonPassword_TextChanged);
|
||||
//
|
||||
// UseCommonPassword
|
||||
//
|
||||
resources.ApplyResources(this.UseCommonPassword, "UseCommonPassword");
|
||||
this.UseCommonPassword.Name = "UseCommonPassword";
|
||||
this.toolTip.SetToolTip(this.UseCommonPassword, resources.GetString("UseCommonPassword.ToolTip"));
|
||||
this.UseCommonPassword.UseVisualStyleBackColor = true;
|
||||
this.UseCommonPassword.CheckedChanged += new System.EventHandler(this.UseCommonPassword_CheckedChanged);
|
||||
//
|
||||
// CacheSizeCalculator
|
||||
//
|
||||
this.CacheSizeCalculator.WorkerSupportsCancellation = true;
|
||||
this.CacheSizeCalculator.DoWork += new System.ComponentModel.DoWorkEventHandler(this.CacheSizeCalculator_DoWork);
|
||||
this.CacheSizeCalculator.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.CacheSizeCalculator_RunWorkerCompleted);
|
||||
//
|
||||
// TabContainer
|
||||
//
|
||||
this.TabContainer.Controls.Add(this.BasicTab);
|
||||
this.TabContainer.Controls.Add(this.AdvancedTab);
|
||||
this.TabContainer.Controls.Add(this.LicenseTab);
|
||||
resources.ApplyResources(this.TabContainer, "TabContainer");
|
||||
this.TabContainer.Name = "TabContainer";
|
||||
this.TabContainer.SelectedIndex = 0;
|
||||
//
|
||||
// BasicTab
|
||||
//
|
||||
this.BasicTab.Controls.Add(this.PasswordDefaultsGroup);
|
||||
this.BasicTab.Controls.Add(this.groupBox1);
|
||||
resources.ApplyResources(this.BasicTab, "BasicTab");
|
||||
this.BasicTab.Name = "BasicTab";
|
||||
this.BasicTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// AdvancedTab
|
||||
//
|
||||
this.AdvancedTab.Controls.Add(this.groupBox2);
|
||||
this.AdvancedTab.Controls.Add(this.groupBox4);
|
||||
resources.ApplyResources(this.AdvancedTab, "AdvancedTab");
|
||||
this.AdvancedTab.Name = "AdvancedTab";
|
||||
this.AdvancedTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Controls.Add(this.Bandwidth);
|
||||
this.groupBox4.Controls.Add(this.ThreadPriorityPicker);
|
||||
resources.ApplyResources(this.groupBox4, "groupBox4");
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.TabStop = false;
|
||||
//
|
||||
// Bandwidth
|
||||
//
|
||||
this.Bandwidth.DownloadLimit = null;
|
||||
this.Bandwidth.DownloadLimitInBytes = ((long)(0));
|
||||
resources.ApplyResources(this.Bandwidth, "Bandwidth");
|
||||
this.Bandwidth.Name = "Bandwidth";
|
||||
this.toolTip.SetToolTip(this.Bandwidth, resources.GetString("Bandwidth.ToolTip"));
|
||||
this.Bandwidth.UploadLimit = null;
|
||||
this.Bandwidth.UploadLimitInBytes = ((long)(0));
|
||||
this.Bandwidth.DownloadLimitChanged += new System.EventHandler(this.Bandwidth_DownloadLimitChanged);
|
||||
this.Bandwidth.UploadLimitChanged += new System.EventHandler(this.Bandwidth_UploadLimitChanged);
|
||||
//
|
||||
// ThreadPriorityPicker
|
||||
//
|
||||
resources.ApplyResources(this.ThreadPriorityPicker, "ThreadPriorityPicker");
|
||||
this.ThreadPriorityPicker.Name = "ThreadPriorityPicker";
|
||||
this.toolTip.SetToolTip(this.ThreadPriorityPicker, resources.GetString("ThreadPriorityPicker.ToolTip"));
|
||||
this.ThreadPriorityPicker.SelectedPriorityChanged += new System.EventHandler(this.ThreadPriorityPicker_SelectedPriorityChanged);
|
||||
//
|
||||
// LicenseTab
|
||||
//
|
||||
this.LicenseTab.Controls.Add(this.LicenseLink);
|
||||
this.LicenseTab.Controls.Add(this.label6);
|
||||
this.LicenseTab.Controls.Add(this.LicenseText);
|
||||
this.LicenseTab.Controls.Add(this.label2);
|
||||
this.LicenseTab.Controls.Add(this.LicenseSections);
|
||||
resources.ApplyResources(this.LicenseTab, "LicenseTab");
|
||||
this.LicenseTab.Name = "LicenseTab";
|
||||
this.LicenseTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// LicenseLink
|
||||
//
|
||||
resources.ApplyResources(this.LicenseLink, "LicenseLink");
|
||||
this.LicenseLink.Name = "LicenseLink";
|
||||
this.LicenseLink.TabStop = true;
|
||||
this.toolTip.SetToolTip(this.LicenseLink, resources.GetString("LicenseLink.ToolTip"));
|
||||
this.LicenseLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LicenseLink_LinkClicked);
|
||||
//
|
||||
// label6
|
||||
//
|
||||
resources.ApplyResources(this.label6, "label6");
|
||||
this.label6.Name = "label6";
|
||||
//
|
||||
// LicenseText
|
||||
//
|
||||
resources.ApplyResources(this.LicenseText, "LicenseText");
|
||||
this.LicenseText.Name = "LicenseText";
|
||||
this.LicenseText.ReadOnly = true;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// LicenseSections
|
||||
//
|
||||
this.LicenseSections.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.LicenseSections, "LicenseSections");
|
||||
this.LicenseSections.Name = "LicenseSections";
|
||||
this.toolTip.SetToolTip(this.LicenseSections, resources.GetString("LicenseSections.ToolTip"));
|
||||
this.LicenseSections.SelectedIndexChanged += new System.EventHandler(this.LicenseSections_SelectedIndexChanged);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.OKBtn);
|
||||
this.panel1.Controls.Add(this.CancelBtn);
|
||||
resources.ApplyResources(this.panel1, "panel1");
|
||||
this.panel1.Name = "panel1";
|
||||
//
|
||||
// ApplicationSetup
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.CancelBtn;
|
||||
this.Controls.Add(this.TabContainer);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ApplicationSetup";
|
||||
this.Load += new System.EventHandler(this.ApplicationSetup_Load);
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ApplicationSetup_FormClosing);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.PasswordDefaultsGroup.ResumeLayout(false);
|
||||
this.PasswordDefaultsGroup.PerformLayout();
|
||||
this.PasswordPanel.ResumeLayout(false);
|
||||
this.PasswordPanel.PerformLayout();
|
||||
this.TabContainer.ResumeLayout(false);
|
||||
this.BasicTab.ResumeLayout(false);
|
||||
this.AdvancedTab.ResumeLayout(false);
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.LicenseTab.ResumeLayout(false);
|
||||
this.LicenseTab.PerformLayout();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.Button OKBtn;
|
||||
private System.Windows.Forms.Button CancelBtn;
|
||||
private Duplicati.GUI.HelperControls.DurationEditor RecentDuration;
|
||||
private System.Windows.Forms.Button TempPathBrowse;
|
||||
private System.Windows.Forms.TextBox TempPath;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.FolderBrowserDialog BrowseTempPath;
|
||||
private System.Windows.Forms.GroupBox PasswordDefaultsGroup;
|
||||
private Duplicati.Winforms.Controls.PasswordControl CommonPassword;
|
||||
private System.Windows.Forms.CheckBox UseCommonPassword;
|
||||
private System.Windows.Forms.Panel PasswordPanel;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.CheckBox SignatureCacheEnabled;
|
||||
private System.Windows.Forms.Button SignatureCachePathBrowse;
|
||||
private System.Windows.Forms.TextBox SignatureCachePath;
|
||||
private System.Windows.Forms.FolderBrowserDialog BrowseSignatureCachePath;
|
||||
private System.Windows.Forms.Label CacheSizeLabel;
|
||||
private System.Windows.Forms.Button ClearCacheButton;
|
||||
private System.ComponentModel.BackgroundWorker CacheSizeCalculator;
|
||||
private System.Windows.Forms.ComboBox LanguageSelection;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private Duplicati.GUI.HelperControls.DurationEditor StartupDelayDuration;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.TabControl TabContainer;
|
||||
private System.Windows.Forms.TabPage BasicTab;
|
||||
private System.Windows.Forms.TabPage AdvancedTab;
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private Duplicati.GUI.HelperControls.BandwidthLimit Bandwidth;
|
||||
private Duplicati.GUI.HelperControls.ThreadPriorityPicker ThreadPriorityPicker;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Label EncryptionMethod;
|
||||
private System.Windows.Forms.ComboBox EncryptionModule;
|
||||
private System.Windows.Forms.CheckBox HideDonateButton;
|
||||
private System.Windows.Forms.TabPage LicenseTab;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ListBox LicenseSections;
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
private System.Windows.Forms.LinkLabel LicenseLink;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox LicenseText;
|
||||
private System.Windows.Forms.ComboBox BalloonNotificationLevel;
|
||||
private System.Windows.Forms.Label label8;
|
||||
}
|
||||
}
|
||||
@@ -1,572 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Data.LightDatamodel;
|
||||
using Duplicati.Datamodel;
|
||||
using System.Globalization;
|
||||
using Duplicati.Library.Utility;
|
||||
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
public partial class ApplicationSetup : Form
|
||||
{
|
||||
private IDataFetcherWithRelations m_connection;
|
||||
private ApplicationSettings m_settings;
|
||||
private bool m_isUpdating = false;
|
||||
|
||||
//These variables handle the worker thread size calculation
|
||||
private object m_lock = new object();
|
||||
private System.Threading.Thread m_thread = null;
|
||||
private bool m_restartCalculator = false;
|
||||
|
||||
public ApplicationSetup()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
RecentDuration.SetIntervals(new List<KeyValuePair<string, string>>(
|
||||
new KeyValuePair<string, string>[]
|
||||
{
|
||||
new KeyValuePair<string, string>(Strings.Common.OneWeek, "1W"),
|
||||
new KeyValuePair<string, string>(Strings.Common.TwoWeeks, "2W"),
|
||||
new KeyValuePair<string, string>(Strings.Common.OneMonth, "1M"),
|
||||
new KeyValuePair<string, string>(Strings.Common.ThreeMonths, "3M"),
|
||||
}));
|
||||
|
||||
StartupDelayDuration.SetIntervals(new List<KeyValuePair<string, string>>(
|
||||
new KeyValuePair<string, string>[]
|
||||
{
|
||||
new KeyValuePair<string, string>(Strings.Common.NoMinutes, "0"),
|
||||
new KeyValuePair<string, string>(Strings.Common.OneMinute, "1m"),
|
||||
new KeyValuePair<string, string>(Strings.Common.FiveMinutes, "5m"),
|
||||
new KeyValuePair<string, string>(Strings.Common.FifteenMinutes, "15m"),
|
||||
new KeyValuePair<string, string>(Strings.Common.ThirtyMinutes, "30m"),
|
||||
}));
|
||||
|
||||
BalloonNotificationLevel.Items.AddRange(new object[] {
|
||||
new ComboBoxItemPair<ApplicationSettings.NotificationLevel>(Strings.ApplicationSetup.BalloonNotification_Off, ApplicationSettings.NotificationLevel.Off),
|
||||
new ComboBoxItemPair<ApplicationSettings.NotificationLevel>(Strings.ApplicationSetup.BalloonNotification_Errors, ApplicationSettings.NotificationLevel.Errors),
|
||||
new ComboBoxItemPair<ApplicationSettings.NotificationLevel>(Strings.ApplicationSetup.BalloonNotification_Warnings, ApplicationSettings.NotificationLevel.Warnings),
|
||||
new ComboBoxItemPair<ApplicationSettings.NotificationLevel>(Strings.ApplicationSetup.BalloonNotification_Start, ApplicationSettings.NotificationLevel.Start),
|
||||
new ComboBoxItemPair<ApplicationSettings.NotificationLevel>(Strings.ApplicationSetup.BalloonNotification_StartAndStop, ApplicationSettings.NotificationLevel.StartAndStop),
|
||||
new ComboBoxItemPair<ApplicationSettings.NotificationLevel>(Strings.ApplicationSetup.BalloonNotification_Continous, ApplicationSettings.NotificationLevel.Continous),
|
||||
});
|
||||
|
||||
if (Program.TraylessMode)
|
||||
BalloonNotificationLevel.Enabled = label8.Enabled = false;
|
||||
|
||||
LanguageSelection.Items.Clear();
|
||||
LanguageSelection.Items.Add(new ComboBoxItemPair<CultureInfo>(string.Format(Strings.ApplicationSetup.DefaultLanguage, Library.Utility.Utility.DefaultCulture.DisplayName), Library.Utility.Utility.DefaultCulture));
|
||||
|
||||
System.Text.RegularExpressions.Regex cix = new System.Text.RegularExpressions.Regex("[A-z][A-z](\\-[A-z][A-z])?");
|
||||
|
||||
foreach (string f in System.IO.Directory.GetDirectories(Application.StartupPath))
|
||||
if (cix.Match(System.IO.Path.GetFileName(f)).Length == System.IO.Path.GetFileName(f).Length)
|
||||
try
|
||||
{
|
||||
CultureInfo ci = CultureInfo.GetCultureInfo(System.IO.Path.GetFileName(f));
|
||||
LanguageSelection.Items.Add(new ComboBoxItemPair<CultureInfo>(ci.DisplayName, ci));
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
bool hasEnglish = false;
|
||||
foreach (ComboBoxItemPair<CultureInfo> c in LanguageSelection.Items)
|
||||
if (c.Value.Name.Equals("en-US", StringComparison.InvariantCultureIgnoreCase))
|
||||
hasEnglish = true;
|
||||
|
||||
if (!hasEnglish)
|
||||
{
|
||||
CultureInfo ci = CultureInfo.GetCultureInfo("en-US");
|
||||
LanguageSelection.Items.Add(new ComboBoxItemPair<CultureInfo>(ci.DisplayName, ci));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
EncryptionModule.Items.Clear();
|
||||
|
||||
foreach (Library.Interface.IEncryption e in Library.DynamicLoader.EncryptionLoader.Modules)
|
||||
EncryptionModule.Items.Add(new ComboBoxItemPair<Library.Interface.IEncryption>(e.DisplayName, e));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, string.Format(Strings.ApplicationSetup.EncryptionModuleLoadError, ex.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
this.Icon = Properties.Resources.TrayNormal;
|
||||
|
||||
#if DEBUG
|
||||
this.Text += " (DEBUG)";
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
private void RecentDuration_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating || m_settings == null)
|
||||
return;
|
||||
|
||||
try { Library.Utility.Timeparser.ParseTimeSpan(RecentDuration.Value); }
|
||||
catch { return; }
|
||||
|
||||
m_settings.RecentBackupDuration = RecentDuration.Value;
|
||||
}
|
||||
|
||||
private void OKBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (UseCommonPassword.Checked && !CommonPassword.VerifyPasswordIfChanged())
|
||||
return;
|
||||
|
||||
foreach (TabPage tab in TabContainer.TabPages)
|
||||
if (tab.Tag as Library.Interface.ISettingsControl != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!(tab.Tag as Library.Interface.ISettingsControl).Validate(tab.Controls[0]))
|
||||
return;
|
||||
|
||||
(tab.Tag as Library.Interface.ISettingsControl).Leave(tab.Controls[0]);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, string.Format(Strings.ApplicationSetup.SaveExtensionError, ex), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Commit all changes made to the context
|
||||
m_connection.CommitAllRecursive();
|
||||
|
||||
System.Globalization.CultureInfo newCI = System.Threading.Thread.CurrentThread.CurrentUICulture;
|
||||
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(m_settings.DisplayLanguage))
|
||||
newCI = Library.Utility.Utility.DefaultCulture;
|
||||
else
|
||||
newCI = System.Globalization.CultureInfo.GetCultureInfo(m_settings.DisplayLanguage);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
if (newCI != System.Threading.Thread.CurrentThread.CurrentUICulture)
|
||||
{
|
||||
MessageBox.Show(this, Strings.ApplicationSetup.LanguageChangedWarning, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
|
||||
//We don't change here, because the application has loaded some
|
||||
// resources already, so the switch would be partial
|
||||
}
|
||||
|
||||
|
||||
this.DialogResult = DialogResult.OK;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void RecentDuration_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
RecentDuration_TextChanged(sender, e);
|
||||
}
|
||||
|
||||
private void TempPathBrowse_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (BrowseTempPath.ShowDialog(this) == DialogResult.OK)
|
||||
TempPath.Text = BrowseTempPath.SelectedPath;
|
||||
}
|
||||
|
||||
private void TempPath_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
m_settings.TempPath = TempPath.Text;
|
||||
}
|
||||
|
||||
private void ApplicationSetup_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.Text = string.Format(Strings.ApplicationSetup.DialogTitle, License.VersionNumbers.Version);
|
||||
|
||||
m_isUpdating = true;
|
||||
|
||||
m_connection = new DataFetcherNested(Program.DataConnection);
|
||||
m_settings = new ApplicationSettings(m_connection);
|
||||
|
||||
RecentDuration.Value = m_settings.RecentBackupDuration;
|
||||
TempPath.Text = m_settings.TempPath;
|
||||
|
||||
UseCommonPassword.Checked = m_settings.UseCommonPassword;
|
||||
CommonPassword.Text = CommonPassword.InitialPassword = m_settings.CommonPassword;
|
||||
CommonPassword.AskToEnterNewPassword = !string.IsNullOrEmpty(CommonPassword.Text);
|
||||
|
||||
if (EncryptionModule.Items.Count > 0)
|
||||
{
|
||||
bool foundEncryption = false;
|
||||
int defaultIndex = 0;
|
||||
for (int i = 0; i < EncryptionModule.Items.Count; i++)
|
||||
if (((ComboBoxItemPair<Library.Interface.IEncryption>)EncryptionModule.Items[i]).Value.FilenameExtension == m_settings.CommonPasswordEncryptionModule)
|
||||
{
|
||||
foundEncryption = true;
|
||||
EncryptionModule.SelectedIndex = i;
|
||||
break;
|
||||
}
|
||||
else if (((ComboBoxItemPair<Library.Interface.IEncryption>)EncryptionModule.Items[i]).Value.FilenameExtension == "aes")
|
||||
defaultIndex = i;
|
||||
|
||||
if (!foundEncryption)
|
||||
EncryptionModule.SelectedIndex = defaultIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
PasswordDefaultsGroup.Enabled = false;
|
||||
}
|
||||
|
||||
|
||||
SignatureCacheEnabled.Checked = m_settings.SignatureCacheEnabled;
|
||||
SignatureCachePath.Text = m_settings.SignatureCachePath;
|
||||
CalculateSignatureCacheSize();
|
||||
|
||||
StartupDelayDuration.Value = m_settings.StartupDelayDuration;
|
||||
ThreadPriorityPicker.SelectedPriority = m_settings.ThreadPriorityOverride;
|
||||
Bandwidth.UploadLimit = m_settings.UploadSpeedLimit;
|
||||
Bandwidth.DownloadLimit = m_settings.DownloadSpeedLimit;
|
||||
|
||||
HideDonateButton.Checked = m_settings.HideDonateButton;
|
||||
|
||||
BalloonNotificationLevel.SelectedItem = null;
|
||||
foreach(ComboBoxItemPair<ApplicationSettings.NotificationLevel> p in BalloonNotificationLevel.Items)
|
||||
if (p.Value == m_settings.BallonNotificationLevel)
|
||||
{
|
||||
BalloonNotificationLevel.SelectedItem = p;
|
||||
break;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(m_settings.DisplayLanguage))
|
||||
LanguageSelection.SelectedIndex = 0;
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
LanguageSelection.SelectedIndex = -1;
|
||||
System.Globalization.CultureInfo cci = System.Globalization.CultureInfo.GetCultureInfo(m_settings.DisplayLanguage);
|
||||
for(int i = 0; i < LanguageSelection.Items.Count; i++)
|
||||
if (((ComboBoxItemPair<CultureInfo>)LanguageSelection.Items[i]).Value == cci)
|
||||
{
|
||||
LanguageSelection.SelectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
LanguageSelection.SelectedIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
foreach (Library.Interface.ISettingsControl ic in Library.DynamicLoader.SettingsControlLoader.Modules)
|
||||
{
|
||||
Control c = ic.GetControl(m_settings.CreateDetachedCopy(), Datamodel.SettingExtension.GetExtensions(m_connection, ic.Key));
|
||||
c.Dock = DockStyle.Fill;
|
||||
TabPage tab = new TabPage();
|
||||
tab.Text = ic.PageTitle;
|
||||
tab.ToolTipText = ic.PageDescription;
|
||||
tab.Controls.Add(c);
|
||||
tab.Tag = ic;
|
||||
TabContainer.TabPages.Add(tab);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, string.Format(Strings.ApplicationSetup.SettingControlsLoadError, ex.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
//Place the license page last
|
||||
TabContainer.TabPages.Remove(LicenseTab);
|
||||
TabContainer.TabPages.Insert(TabContainer.TabPages.Count, LicenseTab);
|
||||
|
||||
string licensePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "licenses");
|
||||
List<Duplicati.License.LicenseEntry> licenses = Duplicati.License.LicenseReader.ReadLicenses(licensePath);
|
||||
licenses.Insert(0, new Duplicati.License.LicenseEntry("Duplicati", System.IO.Path.Combine(licensePath, "duplicati-url.txt"), System.IO.Path.Combine(licensePath, "license.txt")));
|
||||
licenses.Insert(0, new Duplicati.License.LicenseEntry("Acknowledgements", System.IO.Path.Combine(licensePath, "duplicati-url.txt"), System.IO.Path.Combine(licensePath, "acknowledgements.txt")));
|
||||
|
||||
LicenseSections.Items.Clear();
|
||||
LicenseSections.Items.AddRange(licenses.ToArray());
|
||||
LicenseSections.SelectedIndex = -1;
|
||||
LicenseSections.SelectedIndex = 0;
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_isUpdating = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void UseCommonPassword_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
PasswordPanel.Enabled = UseCommonPassword.Checked;
|
||||
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.UseCommonPassword = UseCommonPassword.Checked;
|
||||
|
||||
if (m_settings.UseCommonPassword)
|
||||
m_settings.CommonPassword = CommonPassword.Text;
|
||||
else
|
||||
m_settings.CommonPassword = ""; //Clear it from DB
|
||||
}
|
||||
|
||||
private void CommonPassword_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.CommonPassword = CommonPassword.Text;
|
||||
}
|
||||
|
||||
private void SignatureCachePathBrowse_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (BrowseSignatureCachePath.ShowDialog(this) == DialogResult.OK)
|
||||
SignatureCachePath.Text = BrowseSignatureCachePath.SelectedPath;
|
||||
|
||||
}
|
||||
|
||||
private void SignatureCachePath_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.SignatureCachePath = SignatureCachePath.Text;
|
||||
CalculateSignatureCacheSize();
|
||||
}
|
||||
|
||||
private void SignatureCacheEnabled_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
SignatureCachePath.Enabled = SignatureCachePathBrowse.Enabled = SignatureCacheEnabled.Checked;
|
||||
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.SignatureCacheEnabled = SignatureCacheEnabled.Checked;
|
||||
CalculateSignatureCacheSize();
|
||||
}
|
||||
|
||||
private void CacheSizeCalculator_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
lock (m_lock)
|
||||
m_thread = System.Threading.Thread.CurrentThread;
|
||||
|
||||
try
|
||||
{
|
||||
e.Result = string.Format(Strings.ApplicationSetup.CacheSize, Library.Utility.Utility.FormatSizeString(Library.Utility.Utility.GetDirectorySize(System.Environment.ExpandEnvironmentVariables((string)e.Argument), null)));
|
||||
}
|
||||
catch (System.Threading.ThreadAbortException)
|
||||
{
|
||||
System.Threading.Thread.ResetAbort();
|
||||
e.Cancel = true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
lock (m_lock)
|
||||
m_thread = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void CacheSizeCalculator_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
if (e.Cancelled)
|
||||
CacheSizeLabel.Text = Strings.ApplicationSetup.OperationCancelled;
|
||||
else if (e.Error != null)
|
||||
CacheSizeLabel.Text = e.Error.Message;
|
||||
else
|
||||
CacheSizeLabel.Text = (string)e.Result;
|
||||
|
||||
if (m_restartCalculator)
|
||||
CalculateSignatureCacheSize();
|
||||
}
|
||||
|
||||
private void CalculateSignatureCacheSize()
|
||||
{
|
||||
CacheSizeLabel.Text = Strings.ApplicationSetup.CalculatingCacheSize;
|
||||
|
||||
lock (m_lock)
|
||||
if (CacheSizeCalculator.IsBusy)
|
||||
{
|
||||
m_restartCalculator = true;
|
||||
m_thread.Abort();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_restartCalculator = false;
|
||||
if (SignatureCacheEnabled.Checked)
|
||||
CacheSizeCalculator.RunWorkerAsync(SignatureCachePath.Text);
|
||||
else
|
||||
CacheSizeLabel.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
private void ClearCacheButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string path = System.Environment.ExpandEnvironmentVariables(SignatureCachePath.Text);
|
||||
if (MessageBox.Show(this, string.Format(Strings.ApplicationSetup.ConfirmCacheDelete, path), Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) != DialogResult.Yes)
|
||||
return;
|
||||
|
||||
Library.Main.Interface.RemoveSignatureFiles(path);
|
||||
CalculateSignatureCacheSize();
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, string.Format(Strings.Common.GenericError, ex.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplicationSetup_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
lock(m_lock)
|
||||
if (m_thread != null)
|
||||
{
|
||||
m_restartCalculator = false;
|
||||
m_thread.Abort();
|
||||
}
|
||||
}
|
||||
|
||||
private void LanguageSelection_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
if (LanguageSelection.SelectedIndex == 0)
|
||||
m_settings.DisplayLanguage = "";
|
||||
else if (LanguageSelection.SelectedIndex > 0)
|
||||
m_settings.DisplayLanguage = ((ComboBoxItemPair<CultureInfo>)LanguageSelection.SelectedItem).Value.Name;
|
||||
}
|
||||
|
||||
private void StartupDelayDuration_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating || m_settings == null)
|
||||
return;
|
||||
|
||||
try { Library.Utility.Timeparser.ParseTimeSpan(StartupDelayDuration.Value); }
|
||||
catch { }
|
||||
|
||||
m_settings.StartupDelayDuration = StartupDelayDuration.Value;
|
||||
}
|
||||
|
||||
private void ThreadPriorityPicker_SelectedPriorityChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.ThreadPriorityOverride = ThreadPriorityPicker.SelectedPriority;
|
||||
}
|
||||
|
||||
private void Bandwidth_UploadLimitChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.UploadSpeedLimit = Bandwidth.UploadLimit;
|
||||
}
|
||||
|
||||
private void Bandwidth_DownloadLimitChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.DownloadSpeedLimit = Bandwidth.DownloadLimit;
|
||||
}
|
||||
|
||||
private void EncryptionModule_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
if (EncryptionModule.SelectedItem as ComboBoxItemPair<Library.Interface.IEncryption> != null)
|
||||
m_settings.CommonPasswordEncryptionModule = ((ComboBoxItemPair<Library.Interface.IEncryption>)EncryptionModule.SelectedItem).Value.FilenameExtension;
|
||||
|
||||
}
|
||||
|
||||
public static Dictionary<string, string> GetApplicationSettings(IDataFetcher connection)
|
||||
{
|
||||
Dictionary<string, string> env = new ApplicationSettings(connection).CreateDetachedCopy();
|
||||
|
||||
//If there are any control extensions, let them modify the environement
|
||||
foreach (Library.Interface.ISettingsControl ic in Library.DynamicLoader.SettingsControlLoader.Modules)
|
||||
ic.BeginEdit(env, SettingExtension.GetExtensions(connection, ic.Key));
|
||||
|
||||
return env;
|
||||
}
|
||||
|
||||
public static void SaveExtensionSettings(IDataFetcher connection, IDictionary<string, string> env)
|
||||
{
|
||||
//If there are any control extensions, let them modify the environement
|
||||
foreach (Library.Interface.ISettingsControl ic in Library.DynamicLoader.SettingsControlLoader.Modules)
|
||||
ic.EndEdit(env, SettingExtension.GetExtensions(connection, ic.Key));
|
||||
}
|
||||
|
||||
private void HideDonateButton_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
m_settings.HideDonateButton = HideDonateButton.Checked;
|
||||
}
|
||||
|
||||
private void LicenseSections_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (LicenseSections.SelectedItem as Duplicati.License.LicenseEntry != null)
|
||||
{
|
||||
Duplicati.License.LicenseEntry l = LicenseSections.SelectedItem as Duplicati.License.LicenseEntry;
|
||||
LicenseText.Text = l.License;
|
||||
LicenseLink.Visible = !string.IsNullOrEmpty(l.Url);
|
||||
}
|
||||
}
|
||||
|
||||
private void LicenseLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
if (LicenseSections.SelectedItem as Duplicati.License.LicenseEntry != null)
|
||||
{
|
||||
Duplicati.License.LicenseEntry l = LicenseSections.SelectedItem as Duplicati.License.LicenseEntry;
|
||||
if (!string.IsNullOrEmpty(l.Url))
|
||||
Duplicati.Library.Utility.UrlUtillity.OpenUrl(l.Url);
|
||||
}
|
||||
}
|
||||
|
||||
private void BalloonNotificationLevel_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
|
||||
if (BalloonNotificationLevel.SelectedItem as ComboBoxItemPair<ApplicationSettings.NotificationLevel> != null)
|
||||
m_settings.BallonNotificationLevel = (BalloonNotificationLevel.SelectedItem as ComboBoxItemPair<ApplicationSettings.NotificationLevel>).Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<settings>
|
||||
<FullBackupInterval>1M</FullBackupInterval>
|
||||
<MaxFullBackups>4</MaxFullBackups>
|
||||
<BackupExpireInterval></BackupExpireInterval>
|
||||
<RepeatInterval>1D</RepeatInterval>
|
||||
<VolumeSize>10mb</VolumeSize>
|
||||
<BackupTimeOffset>13h</BackupTimeOffset>
|
||||
<EncodedFilters>e:.*\\Thumbs.db</EncodedFilters>
|
||||
<IncludeSetup>true</IncludeSetup>
|
||||
<AsyncTransfer>true</AsyncTransfer>
|
||||
<DisableAESFallbackEncryption>true</DisableAESFallbackEncryption>
|
||||
</settings>
|
||||
|
Before Width: | Height: | Size: 29 KiB |
@@ -1,151 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Text;
|
||||
using Duplicati.Datamodel;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
/// <summary>
|
||||
/// This class encapsulates all communication with Duplicity
|
||||
/// </summary>
|
||||
public class DuplicityRunner
|
||||
{
|
||||
private StringDictionary m_environment;
|
||||
|
||||
|
||||
public DuplicityRunner(string apppath, StringDictionary environment)
|
||||
{
|
||||
if (!apppath.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()))
|
||||
apppath += System.IO.Path.DirectorySeparatorChar;
|
||||
System.Environment.SetEnvironmentVariable(ApplicationSettings.APP_PATH_ENV.Substring(1, ApplicationSettings.APP_PATH_ENV.Length - 2) , apppath);
|
||||
m_environment = new StringDictionary();
|
||||
if (environment != null)
|
||||
foreach (string k in environment.Keys)
|
||||
m_environment[k] = environment[k];
|
||||
}
|
||||
|
||||
private System.Diagnostics.ProcessStartInfo SetupEnv(IDuplicityTask task)
|
||||
{
|
||||
task.BeginTime = DateTime.Now;
|
||||
List<string> args = new List<string>();
|
||||
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
|
||||
|
||||
StringDictionary env = psi.EnvironmentVariables;
|
||||
|
||||
foreach (string key in m_environment.Keys)
|
||||
env[key] = m_environment[key];
|
||||
|
||||
env["PATH"] = System.Environment.ExpandEnvironmentVariables(Program.ApplicationSettings.NcFTPPath) + System.IO.Path.PathSeparator + env["PATH"];
|
||||
env["PATH"] = System.Environment.ExpandEnvironmentVariables(Program.ApplicationSettings.PuttyPath) + System.IO.Path.PathSeparator + env["PATH"];
|
||||
env["PATH"] = System.Environment.ExpandEnvironmentVariables(Program.ApplicationSettings.PGPPath) + System.IO.Path.PathSeparator + env["PATH"];
|
||||
|
||||
args.Add("\"" + System.Environment.ExpandEnvironmentVariables(Program.ApplicationSettings.DuplicityPath) + "\"");
|
||||
|
||||
task.GetArguments(args);
|
||||
|
||||
if (string.IsNullOrEmpty(task.Task.Encryptionkey))
|
||||
args.Add("--no-encryption");
|
||||
else
|
||||
env["PASSPHRASE"] = task.Task.Encryptionkey;
|
||||
|
||||
|
||||
task.Task.GetExtraSettings(args, env);
|
||||
|
||||
psi.CreateNoWindow = true;
|
||||
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
|
||||
psi.FileName = System.Environment.ExpandEnvironmentVariables(Program.ApplicationSettings.PythonPath);
|
||||
psi.RedirectStandardError = true;
|
||||
psi.RedirectStandardOutput = true;
|
||||
psi.RedirectStandardInput = false;
|
||||
psi.UseShellExecute = false;
|
||||
psi.WorkingDirectory = System.IO.Path.GetDirectoryName(psi.FileName);
|
||||
|
||||
|
||||
psi.Arguments = string.Join(" ", args.ToArray());
|
||||
return psi;
|
||||
}
|
||||
|
||||
public void ExecuteTask(IDuplicityTask task)
|
||||
{
|
||||
System.Diagnostics.Process p = new System.Diagnostics.Process();
|
||||
p.StartInfo = SetupEnv(task);
|
||||
p.Start();
|
||||
p.WaitForExit();
|
||||
|
||||
string errorstream = p.StandardError.ReadToEnd();
|
||||
string outstream = p.StandardOutput.ReadToEnd();
|
||||
|
||||
string logentry = "";
|
||||
if (!string.IsNullOrEmpty(errorstream))
|
||||
{
|
||||
string tmp = errorstream.Replace("gpg: CAST5 encrypted data", "").Replace("gpg: encrypted with 1 passphrase", "").Trim();
|
||||
|
||||
if (tmp.Length > 0)
|
||||
logentry += "** Error stream: \r\n" + errorstream + "\r\n**\r\n";
|
||||
}
|
||||
logentry += outstream;
|
||||
|
||||
task.RaiseTaskCompleted(logentry);
|
||||
|
||||
if (task.TaskType == DuplicityTaskType.FullBackup || task.TaskType == DuplicityTaskType.IncrementalBackup)
|
||||
{
|
||||
if (task.Schedule.KeepFull > 0)
|
||||
ExecuteTask(new RemoveAllButNFullTask(task.Schedule, (int)task.Schedule.KeepFull));
|
||||
if (!string.IsNullOrEmpty(task.Schedule.KeepTime))
|
||||
ExecuteTask(new RemoveOlderThanTask(task.Schedule, task.Schedule.KeepTime));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void PerformBackup(Schedule schedule, bool forceFull, string fullAfter)
|
||||
{
|
||||
if (forceFull)
|
||||
ExecuteTask(new FullBackupTask(schedule));
|
||||
else
|
||||
ExecuteTask(new IncrementalBackupTask(schedule, fullAfter));
|
||||
}
|
||||
|
||||
public void Restore(Schedule schedule, DateTime when, string where)
|
||||
{
|
||||
ExecuteTask(new RestoreTask(schedule, where, when));
|
||||
}
|
||||
|
||||
public string[] ListBackups(Schedule schedule)
|
||||
{
|
||||
ListBackupsTask task = new ListBackupsTask(schedule);
|
||||
ExecuteTask(task);
|
||||
return task.Backups;
|
||||
}
|
||||
|
||||
public void IncrementalBackup(Schedule schedule)
|
||||
{
|
||||
PerformBackup(schedule, false, null);
|
||||
}
|
||||
|
||||
public void FullBackup(Schedule schedule)
|
||||
{
|
||||
PerformBackup(schedule, true, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,119 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class BackupFileList
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BackupFileList));
|
||||
this.treeView = new System.Windows.Forms.TreeView();
|
||||
this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.changeDestinationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.LoadingIndicator = new System.Windows.Forms.GroupBox();
|
||||
this.progressBar = new System.Windows.Forms.ProgressBar();
|
||||
this.backgroundWorker = new System.ComponentModel.BackgroundWorker();
|
||||
this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.contextMenuStrip.SuspendLayout();
|
||||
this.LoadingIndicator.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// treeView
|
||||
//
|
||||
this.treeView.CheckBoxes = true;
|
||||
this.treeView.ContextMenuStrip = this.contextMenuStrip;
|
||||
resources.ApplyResources(this.treeView, "treeView");
|
||||
this.treeView.LabelEdit = true;
|
||||
this.treeView.Name = "treeView";
|
||||
this.treeView.ShowNodeToolTips = true;
|
||||
this.treeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterCheck);
|
||||
this.treeView.AfterCollapse += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterCollapse);
|
||||
this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick);
|
||||
this.treeView.KeyUp += new System.Windows.Forms.KeyEventHandler(this.treeView_KeyUp);
|
||||
this.treeView.BeforeLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.treeView_BeforeLabelEdit);
|
||||
this.treeView.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterExpand);
|
||||
//
|
||||
// contextMenuStrip
|
||||
//
|
||||
this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.changeDestinationToolStripMenuItem});
|
||||
this.contextMenuStrip.Name = "contextMenuStrip";
|
||||
resources.ApplyResources(this.contextMenuStrip, "contextMenuStrip");
|
||||
this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
|
||||
//
|
||||
// changeDestinationToolStripMenuItem
|
||||
//
|
||||
this.changeDestinationToolStripMenuItem.Name = "changeDestinationToolStripMenuItem";
|
||||
resources.ApplyResources(this.changeDestinationToolStripMenuItem, "changeDestinationToolStripMenuItem");
|
||||
this.changeDestinationToolStripMenuItem.Click += new System.EventHandler(this.changeDestinationToolStripMenuItem_Click);
|
||||
//
|
||||
// LoadingIndicator
|
||||
//
|
||||
resources.ApplyResources(this.LoadingIndicator, "LoadingIndicator");
|
||||
this.LoadingIndicator.Controls.Add(this.progressBar);
|
||||
this.LoadingIndicator.Name = "LoadingIndicator";
|
||||
this.LoadingIndicator.TabStop = false;
|
||||
//
|
||||
// progressBar
|
||||
//
|
||||
resources.ApplyResources(this.progressBar, "progressBar");
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||
//
|
||||
// backgroundWorker
|
||||
//
|
||||
this.backgroundWorker.WorkerSupportsCancellation = true;
|
||||
this.backgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker_DoWork);
|
||||
this.backgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker_RunWorkerCompleted);
|
||||
//
|
||||
// folderBrowserDialog
|
||||
//
|
||||
resources.ApplyResources(this.folderBrowserDialog, "folderBrowserDialog");
|
||||
//
|
||||
// BackupFileList
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.LoadingIndicator);
|
||||
this.Controls.Add(this.treeView);
|
||||
this.Name = "BackupFileList";
|
||||
this.contextMenuStrip.ResumeLayout(false);
|
||||
this.LoadingIndicator.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TreeView treeView;
|
||||
private System.Windows.Forms.GroupBox LoadingIndicator;
|
||||
private System.Windows.Forms.ProgressBar progressBar;
|
||||
private System.ComponentModel.BackgroundWorker backgroundWorker;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
|
||||
private System.Windows.Forms.ToolStripMenuItem changeDestinationToolStripMenuItem;
|
||||
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;
|
||||
}
|
||||
}
|
||||
@@ -1,557 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Duplicati.Datamodel;
|
||||
using System.Collections;
|
||||
using Duplicati.Server;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class BackupFileList : UserControl
|
||||
{
|
||||
private DateTime m_when;
|
||||
private List<string> m_files;
|
||||
private List<string> m_sourcefolders;
|
||||
private List<string> m_targetfolders;
|
||||
private string m_defaultTarget;
|
||||
private TreeNode[] m_rootnodes;
|
||||
|
||||
private Schedule m_schedule;
|
||||
private bool m_isInCheck = false;
|
||||
|
||||
private string m_localizedLoadingText;
|
||||
|
||||
private object m_lock = new object();
|
||||
private System.Threading.Thread m_workerThread = null;
|
||||
|
||||
public event EventHandler FileListLoaded;
|
||||
|
||||
public BackupFileList()
|
||||
{
|
||||
InitializeComponent();
|
||||
m_localizedLoadingText = LoadingIndicator.Text;
|
||||
}
|
||||
|
||||
public void LoadFileList(Schedule schedule, DateTime when, List<string> filelist, List<string> targetFolders, string defaultTarget)
|
||||
{
|
||||
//backgroundWorker.CancelAsync();
|
||||
LoadingIndicator.Visible = true;
|
||||
progressBar.Visible = true;
|
||||
treeView.Visible = false;
|
||||
treeView.TreeViewNodeSorter = new NodeSorter();
|
||||
LoadingIndicator.Text = m_localizedLoadingText;
|
||||
|
||||
m_files = filelist;
|
||||
m_when = when;
|
||||
m_schedule = schedule;
|
||||
m_defaultTarget = defaultTarget;
|
||||
m_targetfolders = targetFolders;
|
||||
m_rootnodes = null;
|
||||
|
||||
if (!backgroundWorker.IsBusy)
|
||||
backgroundWorker.RunWorkerAsync();
|
||||
}
|
||||
|
||||
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
lock (m_lock)
|
||||
m_workerThread = System.Threading.Thread.CurrentThread;
|
||||
|
||||
DuplicatiRunner r = new DuplicatiRunner();
|
||||
//TODO: Speed up by returning the source folders from ListFiles somehow?
|
||||
IList<string> sourcefolders = r.ListSourceFolders(m_schedule, m_when);
|
||||
if (r.IsAborted || backgroundWorker.CancellationPending)
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_files == null || m_files.Count == 0)
|
||||
{
|
||||
IList<string> files = r.ListFiles(m_schedule, m_when);
|
||||
if (backgroundWorker.CancellationPending || r.IsAborted)
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_files != null)
|
||||
{
|
||||
m_files.Clear();
|
||||
m_files.AddRange(files);
|
||||
}
|
||||
else
|
||||
m_files = new List<string>(files);
|
||||
}
|
||||
|
||||
if (m_sourcefolders != null)
|
||||
{
|
||||
m_sourcefolders.Clear();
|
||||
m_sourcefolders.AddRange(sourcefolders);
|
||||
}
|
||||
else
|
||||
m_sourcefolders = new List<string>(sourcefolders);
|
||||
|
||||
if (m_targetfolders == null)
|
||||
m_targetfolders = new List<string>();
|
||||
|
||||
if (m_targetfolders.Count != m_sourcefolders.Count)
|
||||
{
|
||||
m_targetfolders.Clear();
|
||||
for (int i = 0; i < m_sourcefolders.Count; i++)
|
||||
m_targetfolders.Add(null);
|
||||
}
|
||||
}
|
||||
catch (System.Threading.ThreadAbortException)
|
||||
{
|
||||
System.Threading.Thread.ResetAbort();
|
||||
e.Cancel = true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
lock (m_lock)
|
||||
m_workerThread = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
treeView.Nodes.Clear();
|
||||
if (e != null && e.Error != null)
|
||||
{
|
||||
LoadingIndicator.Visible = true;
|
||||
treeView.Visible = false;
|
||||
progressBar.Visible = false;
|
||||
LoadingIndicator.Text = e.Error.Message;
|
||||
return;
|
||||
}
|
||||
|
||||
if (e != null && e.Cancelled)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
treeView.BeginUpdate();
|
||||
|
||||
bool supported = OSGeo.MapGuide.Maestro.ResourceEditors.ShellIcons.Supported;
|
||||
if (supported)
|
||||
treeView.ImageList = OSGeo.MapGuide.Maestro.ResourceEditors.ShellIcons.ImageList;
|
||||
|
||||
foreach (string s in m_files)
|
||||
{
|
||||
TreeNodeCollection c = treeView.Nodes;
|
||||
string[] parts = s.Split(System.IO.Path.DirectorySeparatorChar);
|
||||
for(int i = 0; i < parts.Length; i++)
|
||||
{
|
||||
if (parts[i] != "")
|
||||
{
|
||||
TreeNode t = FindNode(parts[i], c);
|
||||
if (t == null)
|
||||
{
|
||||
t = new TreeNode(parts[i]);
|
||||
if (supported)
|
||||
{
|
||||
if (i == parts.Length - 1)
|
||||
t.ImageIndex = t.SelectedImageIndex = OSGeo.MapGuide.Maestro.ResourceEditors.ShellIcons.GetShellIcon(s);
|
||||
|
||||
else
|
||||
t.ImageIndex = t.SelectedImageIndex = OSGeo.MapGuide.Maestro.ResourceEditors.ShellIcons.GetFolderIcon(false);
|
||||
}
|
||||
|
||||
//tag = IsFolder
|
||||
t.Tag = !(i == parts.Length - 1);
|
||||
c.Add(t);
|
||||
}
|
||||
c = t.Nodes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//At this point the folders are named 0..n if there are multiple
|
||||
if (m_sourcefolders.Count > 1)
|
||||
{
|
||||
m_rootnodes = new TreeNode[m_sourcefolders.Count];
|
||||
foreach (TreeNode tn in treeView.Nodes)
|
||||
{
|
||||
int ix;
|
||||
if (!int.TryParse(tn.Text, out ix))
|
||||
ix = -1;
|
||||
|
||||
if (ix < 0 || ix >= m_rootnodes.Length)
|
||||
{
|
||||
//TODO: Translate
|
||||
MessageBox.Show(this, string.Format("A source folder with index {0} ({1}) was found, but the list of source folders have the following {2} entries: {3}{4}", ix, tn.Text, m_sourcefolders.Count, Environment.NewLine, string.Join(Environment.NewLine, m_sourcefolders.ToArray())), "Internal Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
else
|
||||
m_rootnodes[ix] = tn;
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_rootnodes.Length; i++)
|
||||
if (m_rootnodes[i] == null)
|
||||
{
|
||||
TreeNode tn = new TreeNode(i.ToString());
|
||||
treeView.Nodes.Add(tn);
|
||||
m_rootnodes[i] = tn;
|
||||
}
|
||||
}
|
||||
|
||||
//This call updates the names of the nodes to fit their source/target
|
||||
RefreshRootDisplay(true);
|
||||
|
||||
//TODO: Apparently it is much faster to sort nodes when the tree is detached
|
||||
treeView.Sort();
|
||||
}
|
||||
finally
|
||||
{
|
||||
treeView.EndUpdate();
|
||||
}
|
||||
|
||||
if (FileListLoaded != null)
|
||||
FileListLoaded(this, null);
|
||||
|
||||
LoadingIndicator.Visible = false;
|
||||
treeView.Visible = true;
|
||||
}
|
||||
|
||||
private TreeNode FindNode(string name, TreeNodeCollection items)
|
||||
{
|
||||
foreach(TreeNode t in items)
|
||||
if (t.Text == name)
|
||||
return t;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private class NodeSorter : IComparer
|
||||
{
|
||||
#region IComparer Members
|
||||
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
if (!(x is TreeNode) || !(y is TreeNode))
|
||||
return 0;
|
||||
|
||||
if ((bool)((TreeNode)x).Tag == (bool)((TreeNode)y).Tag)
|
||||
return string.Compare(((TreeNode)x).Text, ((TreeNode)y).Text);
|
||||
else
|
||||
return (bool)((TreeNode)x).Tag ? -1 : 1;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
private void treeView_AfterCheck(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (!m_isInCheck)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_isInCheck = true;
|
||||
Queue<TreeNode> nodes = new Queue<TreeNode>();
|
||||
nodes.Enqueue(e.Node);
|
||||
while (nodes.Count > 0)
|
||||
{
|
||||
TreeNode n = nodes.Dequeue();
|
||||
foreach (TreeNode nx in n.Nodes)
|
||||
nodes.Enqueue(nx);
|
||||
|
||||
n.Checked = e.Node.Checked;
|
||||
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_isInCheck = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void treeView_AfterCollapse(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (e.Node != null && e.Node.Tag != null && e.Node.Tag is bool)
|
||||
e.Node.ImageIndex = e.Node.SelectedImageIndex = OSGeo.MapGuide.Maestro.ResourceEditors.ShellIcons.GetFolderIcon(false);
|
||||
}
|
||||
|
||||
private void treeView_AfterExpand(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (e.Node != null && e.Node.Tag != null && e.Node.Tag is bool)
|
||||
e.Node.ImageIndex = e.Node.SelectedImageIndex = OSGeo.MapGuide.Maestro.ResourceEditors.ShellIcons.GetFolderIcon(true);
|
||||
}
|
||||
|
||||
public List<string> TargetFolders { get { return m_targetfolders; } }
|
||||
public string DefaultTarget
|
||||
{
|
||||
get { return m_defaultTarget; }
|
||||
set
|
||||
{
|
||||
m_defaultTarget = value;
|
||||
try
|
||||
{
|
||||
treeView.BeginUpdate();
|
||||
RefreshRootDisplay(false);
|
||||
}
|
||||
finally
|
||||
{
|
||||
treeView.EndUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> LoadedFileList { get { return m_files; } }
|
||||
|
||||
public List<string> CheckedFiles
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
treeView.BeginUpdate();
|
||||
|
||||
//HACK: Re-name the root nodes to match their real path
|
||||
if (m_sourcefolders != null && m_sourcefolders.Count > 1)
|
||||
for (int i = 0; i < m_rootnodes.Length; i++)
|
||||
m_rootnodes[i].Text = i.ToString();
|
||||
|
||||
List<string> files = new List<string>();
|
||||
Queue<TreeNode> items = new Queue<TreeNode>();
|
||||
foreach (TreeNode t in treeView.Nodes)
|
||||
items.Enqueue(t);
|
||||
|
||||
treeView.PathSeparator = System.IO.Path.DirectorySeparatorChar.ToString();
|
||||
|
||||
while (items.Count > 0)
|
||||
{
|
||||
TreeNode t = items.Dequeue();
|
||||
|
||||
foreach (TreeNode tn in t.Nodes)
|
||||
items.Enqueue(tn);
|
||||
|
||||
if (t.Checked)
|
||||
{
|
||||
if (t.Tag != null && (bool)t.Tag == true)
|
||||
files.Add(Library.Utility.Utility.AppendDirSeparator(t.FullPath));
|
||||
else
|
||||
files.Add(t.FullPath);
|
||||
}
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
finally
|
||||
{
|
||||
//HACK: Rename them back
|
||||
RefreshRootDisplay(false);
|
||||
treeView.EndUpdate();
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
try
|
||||
{
|
||||
treeView.BeginUpdate();
|
||||
|
||||
//HACK: Re-name the root nodes to match their real path
|
||||
if (m_sourcefolders != null && m_sourcefolders.Count > 1)
|
||||
for (int i = 0; i < m_rootnodes.Length; i++)
|
||||
m_rootnodes[i].Text = i.ToString();
|
||||
|
||||
if (value != null)
|
||||
foreach (string s in value)
|
||||
{
|
||||
TreeNodeCollection col = treeView.Nodes;
|
||||
TreeNode p = null;
|
||||
foreach (string e in s.Split(System.IO.Path.DirectorySeparatorChar))
|
||||
{
|
||||
foreach (TreeNode n in col)
|
||||
if (n.Text.Equals(e, Library.Utility.Utility.ClientFilenameStringComparision))
|
||||
{
|
||||
p = n;
|
||||
col = n.Nodes;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (p != null)
|
||||
{
|
||||
p.Checked = true;
|
||||
while (p.Parent != null)
|
||||
{
|
||||
p.Parent.Expand();
|
||||
p = p.Parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
//HACK: Rename them back
|
||||
RefreshRootDisplay(false);
|
||||
treeView.EndUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public string CheckedAsFilter
|
||||
{
|
||||
get
|
||||
{
|
||||
List<KeyValuePair<bool, string>> filter = new List<KeyValuePair<bool, string>>();
|
||||
|
||||
treeView.PathSeparator = System.IO.Path.DirectorySeparatorChar.ToString();
|
||||
|
||||
foreach(string path in this.CheckedFiles)
|
||||
filter.Add(new KeyValuePair<bool, string>(true, Library.Utility.FilenameFilter.ConvertGlobbingToRegExp(treeView.PathSeparator + path)));
|
||||
|
||||
//Exclude everything else
|
||||
filter.Add(new KeyValuePair<bool, string>(false, ".*"));
|
||||
|
||||
return Library.Utility.FilenameFilter.EncodeAsFilter(filter);
|
||||
}
|
||||
}
|
||||
|
||||
public int CheckedCount { get { return this.CheckedFiles.Count; } }
|
||||
|
||||
private void RefreshRootDisplay(bool sort)
|
||||
{
|
||||
if (m_sourcefolders == null || m_sourcefolders.Count <= 1 || m_rootnodes == null)
|
||||
return;
|
||||
|
||||
string[] targets = this.TargetSuggestions;
|
||||
for (int index = 0; index < m_rootnodes.Length; index++)
|
||||
{
|
||||
m_rootnodes[index].Text = m_sourcefolders[index] + " => " + (!string.IsNullOrEmpty(m_targetfolders[index]) ? m_targetfolders[index] : targets[index]);
|
||||
m_rootnodes[index].ToolTipText = string.Format(Strings.BackupFileList.RootNodeTooltip, m_sourcefolders[index], string.IsNullOrEmpty(m_targetfolders[index]) ? targets[index] : m_targetfolders[index]);
|
||||
}
|
||||
|
||||
if (sort)
|
||||
treeView.Sort();
|
||||
}
|
||||
|
||||
public string[] TargetSuggestions
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_sourcefolders == null || m_sourcefolders.Count <= 1)
|
||||
return null;
|
||||
|
||||
List<string> suggestions = new List<string>();
|
||||
for (int i = 0; i < m_sourcefolders.Count; i++)
|
||||
{
|
||||
string s = m_sourcefolders[i];
|
||||
//HACK: We use a leading / in the path name to detect source OS
|
||||
// all paths are absolute, so this detects all unix like systems
|
||||
string dirSepChar = m_sourcefolders[i].StartsWith("/") ? "/" : "\\";
|
||||
|
||||
if (s.EndsWith(dirSepChar))
|
||||
s = s.Substring(0, s.Length - 1);
|
||||
|
||||
int lix = s.LastIndexOf(dirSepChar);
|
||||
if (lix < 0 || lix + 1 >= s.Length)
|
||||
s = i.ToString();
|
||||
else
|
||||
s = s.Substring(lix + 1);
|
||||
|
||||
foreach (char c in System.IO.Path.GetInvalidFileNameChars())
|
||||
s = s.Replace(c, '_');
|
||||
|
||||
suggestions.Add(s);
|
||||
}
|
||||
|
||||
Dictionary<string, int> duplicates = new Dictionary<string, int>(Library.Utility.Utility.ClientFilenameStringComparer);
|
||||
for (int i = 0; i < suggestions.Count; i++)
|
||||
if (duplicates.ContainsKey(suggestions[i]))
|
||||
duplicates[suggestions[i]]++;
|
||||
else
|
||||
duplicates[suggestions[i]] = 1;
|
||||
|
||||
string[] targets = new string[m_rootnodes.Length];
|
||||
|
||||
for (int index = 0; index < m_rootnodes.Length; index++)
|
||||
{
|
||||
string suffix = duplicates[suggestions[index]] > 1 ? index.ToString() : suggestions[index];
|
||||
targets[index] = string.IsNullOrEmpty(m_defaultTarget) ? "" : Library.Utility.Utility.AppendDirSeparator(m_defaultTarget) + suffix;
|
||||
}
|
||||
|
||||
return targets;
|
||||
}
|
||||
}
|
||||
|
||||
private void treeView_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
if (m_sourcefolders != null && m_sourcefolders.Count > 1 && Array.IndexOf<TreeNode>(m_rootnodes, e.Node) >= 0)
|
||||
browseForTargetFolder(e.Node);
|
||||
}
|
||||
|
||||
private void changeDestinationToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
browseForTargetFolder(changeDestinationToolStripMenuItem.Tag as TreeNode);
|
||||
}
|
||||
|
||||
private void browseForTargetFolder(TreeNode node)
|
||||
{
|
||||
if (folderBrowserDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
m_targetfolders[Array.IndexOf<TreeNode>(m_rootnodes, node)] = folderBrowserDialog.SelectedPath;
|
||||
try
|
||||
{
|
||||
treeView.BeginUpdate();
|
||||
RefreshRootDisplay(false);
|
||||
}
|
||||
finally
|
||||
{
|
||||
treeView.EndUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
|
||||
{
|
||||
TreeNode node = treeView.GetNodeAt(this.PointToClient(Cursor.Position));
|
||||
if (node == null || m_sourcefolders == null || m_sourcefolders.Count <= 1 || Array.IndexOf<TreeNode>(m_rootnodes, node) < 0)
|
||||
e.Cancel = true;
|
||||
else
|
||||
changeDestinationToolStripMenuItem.Tag = node;
|
||||
|
||||
}
|
||||
|
||||
private void treeView_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.F2)
|
||||
treeView_BeforeLabelEdit(treeView, new NodeLabelEditEventArgs(treeView.SelectedNode));
|
||||
}
|
||||
|
||||
private void treeView_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
TreeNode node = treeView.GetNodeAt(this.PointToClient(Cursor.Position));
|
||||
if (node != null)
|
||||
treeView_BeforeLabelEdit(treeView, new NodeLabelEditEventArgs(treeView.SelectedNode));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,264 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>174, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="changeDestinationToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>186, 22</value>
|
||||
</data>
|
||||
<data name="changeDestinationToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Change destination...</value>
|
||||
</data>
|
||||
<data name="contextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>187, 26</value>
|
||||
</data>
|
||||
<data name=">>contextMenuStrip.Name" xml:space="preserve">
|
||||
<value>contextMenuStrip</value>
|
||||
</data>
|
||||
<data name=">>contextMenuStrip.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="treeView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="treeView.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="treeView.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>449, 214</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="treeView.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="treeView.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>treeView.Name" xml:space="preserve">
|
||||
<value>treeView</value>
|
||||
</data>
|
||||
<data name=">>treeView.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>treeView.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>treeView.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="LoadingIndicator.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left, Right</value>
|
||||
</data>
|
||||
<data name="progressBar.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left, Right</value>
|
||||
</data>
|
||||
<data name="progressBar.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 24</value>
|
||||
</data>
|
||||
<data name="progressBar.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>400, 23</value>
|
||||
</data>
|
||||
<data name="progressBar.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>progressBar.Name" xml:space="preserve">
|
||||
<value>progressBar</value>
|
||||
</data>
|
||||
<data name=">>progressBar.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>progressBar.Parent" xml:space="preserve">
|
||||
<value>LoadingIndicator</value>
|
||||
</data>
|
||||
<data name=">>progressBar.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="LoadingIndicator.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 72</value>
|
||||
</data>
|
||||
<data name="LoadingIndicator.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>416, 64</value>
|
||||
</data>
|
||||
<data name="LoadingIndicator.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="LoadingIndicator.Text" xml:space="preserve">
|
||||
<value>Reading filelist, please wait ...</value>
|
||||
</data>
|
||||
<data name="LoadingIndicator.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>LoadingIndicator.Name" xml:space="preserve">
|
||||
<value>LoadingIndicator</value>
|
||||
</data>
|
||||
<data name=">>LoadingIndicator.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LoadingIndicator.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LoadingIndicator.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="backgroundWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>323, 17</value>
|
||||
</metadata>
|
||||
<data name="folderBrowserDialog.Description" xml:space="preserve">
|
||||
<value>Select the folder to restore to</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>449, 214</value>
|
||||
</data>
|
||||
<data name=">>changeDestinationToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>changeDestinationToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>changeDestinationToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker.Name" xml:space="preserve">
|
||||
<value>backgroundWorker</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker.Type" xml:space="preserve">
|
||||
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog.Name" xml:space="preserve">
|
||||
<value>folderBrowserDialog</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>BackupFileList</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,126 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class BackupItems
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BackupItems));
|
||||
this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.viewFilesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.statusLabel = new System.Windows.Forms.Label();
|
||||
this.progressBar = new System.Windows.Forms.ProgressBar();
|
||||
this.WaitPanel = new System.Windows.Forms.Panel();
|
||||
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.backgroundWorker = new System.ComponentModel.BackgroundWorker();
|
||||
this.listView = new System.Windows.Forms.ListView();
|
||||
this.contextMenuStrip.SuspendLayout();
|
||||
this.WaitPanel.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// contextMenuStrip
|
||||
//
|
||||
this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.viewFilesToolStripMenuItem});
|
||||
this.contextMenuStrip.Name = "contextMenuStrip";
|
||||
resources.ApplyResources(this.contextMenuStrip, "contextMenuStrip");
|
||||
//
|
||||
// viewFilesToolStripMenuItem
|
||||
//
|
||||
this.viewFilesToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.ExamineMenuIcon;
|
||||
this.viewFilesToolStripMenuItem.Name = "viewFilesToolStripMenuItem";
|
||||
resources.ApplyResources(this.viewFilesToolStripMenuItem, "viewFilesToolStripMenuItem");
|
||||
this.viewFilesToolStripMenuItem.Click += new System.EventHandler(this.viewFilesToolStripMenuItem_Click);
|
||||
//
|
||||
// statusLabel
|
||||
//
|
||||
resources.ApplyResources(this.statusLabel, "statusLabel");
|
||||
this.statusLabel.Name = "statusLabel";
|
||||
//
|
||||
// progressBar
|
||||
//
|
||||
resources.ApplyResources(this.progressBar, "progressBar");
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||
//
|
||||
// WaitPanel
|
||||
//
|
||||
resources.ApplyResources(this.WaitPanel, "WaitPanel");
|
||||
this.WaitPanel.Controls.Add(this.statusLabel);
|
||||
this.WaitPanel.Controls.Add(this.progressBar);
|
||||
this.WaitPanel.Name = "WaitPanel";
|
||||
//
|
||||
// imageList
|
||||
//
|
||||
this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
|
||||
resources.ApplyResources(this.imageList, "imageList");
|
||||
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
//
|
||||
// backgroundWorker
|
||||
//
|
||||
this.backgroundWorker.WorkerSupportsCancellation = true;
|
||||
this.backgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker_DoWork);
|
||||
this.backgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker_RunWorkerCompleted);
|
||||
//
|
||||
// listView
|
||||
//
|
||||
this.listView.ContextMenuStrip = this.contextMenuStrip;
|
||||
resources.ApplyResources(this.listView, "listView");
|
||||
this.listView.FullRowSelect = true;
|
||||
this.listView.MultiSelect = false;
|
||||
this.listView.Name = "listView";
|
||||
this.listView.ShowItemToolTips = true;
|
||||
this.listView.SmallImageList = this.imageList;
|
||||
this.listView.UseCompatibleStateImageBehavior = false;
|
||||
this.listView.View = System.Windows.Forms.View.List;
|
||||
this.listView.DoubleClick += new System.EventHandler(this.listView_DoubleClick);
|
||||
//
|
||||
// BackupItems
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.WaitPanel);
|
||||
this.Controls.Add(this.listView);
|
||||
this.Name = "BackupItems";
|
||||
this.contextMenuStrip.ResumeLayout(false);
|
||||
this.WaitPanel.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label statusLabel;
|
||||
private System.Windows.Forms.ProgressBar progressBar;
|
||||
private System.Windows.Forms.Panel WaitPanel;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
|
||||
private System.Windows.Forms.ToolStripMenuItem viewFilesToolStripMenuItem;
|
||||
private System.Windows.Forms.ImageList imageList;
|
||||
private System.ComponentModel.BackgroundWorker backgroundWorker;
|
||||
public System.Windows.Forms.ListView listView;
|
||||
}
|
||||
}
|
||||
@@ -1,192 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Threading;
|
||||
using Duplicati.Datamodel;
|
||||
using Duplicati.Server;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class BackupItems : UserControl
|
||||
{
|
||||
public event EventHandler ListLoaded;
|
||||
public event EventHandler LoadError;
|
||||
public event EventHandler ItemDoubleClicked;
|
||||
private Datamodel.Schedule m_schedule;
|
||||
private object m_lock = new object();
|
||||
private DuplicatiRunner m_runner = null;
|
||||
|
||||
public BackupItems()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
imageList.Images.Add("full", Properties.Resources.FullBackup);
|
||||
imageList.Images.Add("partial", Properties.Resources.PartialBackup);
|
||||
}
|
||||
|
||||
public void Setup(Schedule schedule)
|
||||
{
|
||||
m_schedule = schedule;
|
||||
WaitPanel.Visible = true;
|
||||
WaitPanel.Dock = DockStyle.None;
|
||||
statusLabel.TextAlign = ContentAlignment.MiddleCenter;
|
||||
progressBar.Visible = true;
|
||||
listView.Visible = false;
|
||||
|
||||
backgroundWorker.RunWorkerAsync(schedule);
|
||||
}
|
||||
|
||||
public DateTime SelectedItem
|
||||
{
|
||||
get
|
||||
{
|
||||
return listView.SelectedItems.Count != 1 ? new DateTime() : ((Library.Main.ManifestEntry)listView.SelectedItems[0].Tag).Time;
|
||||
}
|
||||
}
|
||||
|
||||
private void viewFilesToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ListBackupFiles dlg = new ListBackupFiles();
|
||||
dlg.ShowList(this, m_schedule, this.SelectedItem);
|
||||
}
|
||||
|
||||
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
lock (m_lock)
|
||||
m_runner = new DuplicatiRunner();
|
||||
e.Result = m_runner.ListBackupEntries(m_schedule);
|
||||
if (m_runner.IsAborted)
|
||||
e.Cancel = true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
lock (m_lock)
|
||||
m_runner = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void Abort()
|
||||
{
|
||||
try
|
||||
{
|
||||
lock (m_lock)
|
||||
if (m_runner != null)
|
||||
m_runner.Terminate();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
WaitPanel.Visible = false;
|
||||
|
||||
if (e.Error != null || e.Cancelled || e.Result == null)
|
||||
{
|
||||
Exception ex = e.Error;
|
||||
if (ex == null && e.Cancelled)
|
||||
ex = new Exception(Strings.BackupItems.OperationCancelled);
|
||||
else if (ex == null && e.Result == null)
|
||||
ex = new Exception(Strings.BackupItems.NoDataReceived);
|
||||
|
||||
progressBar.Visible = false;
|
||||
WaitPanel.Visible = true;
|
||||
WaitPanel.Dock = DockStyle.Fill;
|
||||
statusLabel.Text = string.Format(Strings.BackupItems.ErrorStatusDisplay, ex.Message);
|
||||
statusLabel.Visible = true;
|
||||
statusLabel.TextAlign = ContentAlignment.TopLeft;
|
||||
WaitPanel.Visible = true;
|
||||
|
||||
if (LoadError != null)
|
||||
LoadError(this, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
listView.Visible = true;
|
||||
listView.BeginUpdate();
|
||||
listView.Items.Clear();
|
||||
|
||||
foreach (Library.Main.ManifestEntry ef in (List<Library.Main.ManifestEntry>)e.Result)
|
||||
{
|
||||
long fullSize = Math.Max(ef.Fileentry.Size, 0);
|
||||
foreach (KeyValuePair<Library.Main.SignatureEntry, Library.Main.ContentEntry> v in ef.Volumes)
|
||||
fullSize += Math.Max(v.Key.Fileentry.Size, 0) + Math.Max(v.Value.Fileentry.Size, 0);
|
||||
|
||||
ListViewItem n = new ListViewItem(ef.Time.ToLongDateString() + " " + ef.Time.ToLongTimeString(), 0);
|
||||
n.Tag = ef;
|
||||
|
||||
if (fullSize <= 0)
|
||||
n.ToolTipText = Strings.BackupItems.TooltipFullBackup;
|
||||
else
|
||||
n.ToolTipText = string.Format(Strings.BackupItems.TooltipFullBackupWithSize, Library.Utility.Utility.FormatSizeString(fullSize));
|
||||
|
||||
listView.Items.Add(n);
|
||||
|
||||
foreach (Library.Main.ManifestEntry i in ef.Incrementals)
|
||||
{
|
||||
long incSize = Math.Max(i.Fileentry.Size, 0);
|
||||
foreach (KeyValuePair<Library.Main.SignatureEntry, Library.Main.ContentEntry> v in i.Volumes)
|
||||
incSize += Math.Max(v.Key.Fileentry.Size, 0) + Math.Max(v.Value.Fileentry.Size, 0);
|
||||
|
||||
ListViewItem nn = new ListViewItem(i.Time.ToLongDateString() + " " + i.Time.ToLongTimeString(), 1);
|
||||
nn.Tag = i;
|
||||
|
||||
fullSize += incSize;
|
||||
|
||||
if (fullSize <= 0)
|
||||
nn.ToolTipText = Strings.BackupItems.TooltipIncrementalBackup;
|
||||
else
|
||||
nn.ToolTipText = string.Format(Strings.BackupItems.TooltipIncrementalBackupWithSize, Library.Utility.Utility.FormatSizeString(incSize), Library.Utility.Utility.FormatSizeString(fullSize));
|
||||
listView.Items.Add(nn);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
listView.EndUpdate();
|
||||
}
|
||||
|
||||
if (ListLoaded != null)
|
||||
ListLoaded(this, null);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void listView_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (listView.SelectedItems.Count == 1 && ItemDoubleClicked != null)
|
||||
ItemDoubleClicked(sender, e);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,285 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="viewFilesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>160, 22</value>
|
||||
</data>
|
||||
<data name="viewFilesToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>View contents ...</value>
|
||||
</data>
|
||||
<data name="contextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>161, 26</value>
|
||||
</data>
|
||||
<data name=">>contextMenuStrip.Name" xml:space="preserve">
|
||||
<value>contextMenuStrip</value>
|
||||
</data>
|
||||
<data name=">>contextMenuStrip.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="statusLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="statusLabel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="statusLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>184, 56</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="statusLabel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="statusLabel.Text" xml:space="preserve">
|
||||
<value>Loading list of backups</value>
|
||||
</data>
|
||||
<data name="statusLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleCenter</value>
|
||||
</data>
|
||||
<data name=">>statusLabel.Name" xml:space="preserve">
|
||||
<value>statusLabel</value>
|
||||
</data>
|
||||
<data name=">>statusLabel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>statusLabel.Parent" xml:space="preserve">
|
||||
<value>WaitPanel</value>
|
||||
</data>
|
||||
<data name=">>statusLabel.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="progressBar.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="progressBar.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 56</value>
|
||||
</data>
|
||||
<data name="progressBar.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>184, 16</value>
|
||||
</data>
|
||||
<data name="progressBar.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>progressBar.Name" xml:space="preserve">
|
||||
<value>progressBar</value>
|
||||
</data>
|
||||
<data name=">>progressBar.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>progressBar.Parent" xml:space="preserve">
|
||||
<value>WaitPanel</value>
|
||||
</data>
|
||||
<data name=">>progressBar.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="WaitPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="WaitPanel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 16</value>
|
||||
</data>
|
||||
<data name="WaitPanel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>184, 72</value>
|
||||
</data>
|
||||
<data name="WaitPanel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>WaitPanel.Name" xml:space="preserve">
|
||||
<value>WaitPanel</value>
|
||||
</data>
|
||||
<data name=">>WaitPanel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>WaitPanel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>WaitPanel.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>155, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList.ImageSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
</data>
|
||||
<metadata name="backgroundWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>254, 17</value>
|
||||
</metadata>
|
||||
<data name="listView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="listView.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="listView.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 139</value>
|
||||
</data>
|
||||
<data name="listView.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>listView.Name" xml:space="preserve">
|
||||
<value>listView</value>
|
||||
</data>
|
||||
<data name=">>listView.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>listView.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>listView.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 139</value>
|
||||
</data>
|
||||
<data name=">>viewFilesToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>viewFilesToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>viewFilesToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>imageList.Name" xml:space="preserve">
|
||||
<value>imageList</value>
|
||||
</data>
|
||||
<data name=">>imageList.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker.Name" xml:space="preserve">
|
||||
<value>backgroundWorker</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker.Type" xml:space="preserve">
|
||||
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>BackupItems</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,73 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class BackupTreeView
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BackupTreeView));
|
||||
this.treeView = new System.Windows.Forms.TreeView();
|
||||
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// treeView
|
||||
//
|
||||
this.treeView.AllowDrop = true;
|
||||
resources.ApplyResources(this.treeView, "treeView");
|
||||
this.treeView.ImageList = this.imageList;
|
||||
this.treeView.LabelEdit = true;
|
||||
this.treeView.Name = "treeView";
|
||||
this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick);
|
||||
this.treeView.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);
|
||||
this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect);
|
||||
this.treeView.KeyUp += new System.Windows.Forms.KeyEventHandler(this.treeView_KeyUp);
|
||||
this.treeView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);
|
||||
this.treeView.DragOver += new System.Windows.Forms.DragEventHandler(this.treeView_DragOver);
|
||||
//
|
||||
// imageList
|
||||
//
|
||||
this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
|
||||
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imageList.Images.SetKeyName(0, "Folder");
|
||||
this.imageList.Images.SetKeyName(1, "Backup");
|
||||
//
|
||||
// BackupTreeView
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.treeView);
|
||||
this.Name = "BackupTreeView";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ImageList imageList;
|
||||
public System.Windows.Forms.TreeView treeView;
|
||||
}
|
||||
}
|
||||
@@ -1,384 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Duplicati.Datamodel;
|
||||
using System.Data.LightDatamodel;
|
||||
using Duplicati.Server;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class BackupTreeView : UserControl
|
||||
{
|
||||
private IDataFetcher m_connection;
|
||||
private bool m_allowEdit;
|
||||
public event EventHandler TreeDoubleClicked;
|
||||
public event EventHandler SelectedBackupChanged;
|
||||
|
||||
public BackupTreeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public string SelectedFolder
|
||||
{
|
||||
get
|
||||
{
|
||||
if (treeView.SelectedNode == null)
|
||||
return "";
|
||||
else if (treeView.SelectedNode.Tag == null)
|
||||
return treeView.SelectedNode.FullPath;
|
||||
else
|
||||
{
|
||||
string s = treeView.SelectedNode.FullPath;
|
||||
if (s == treeView.SelectedNode.Text)
|
||||
return "";
|
||||
else
|
||||
return s.Substring(0, s.Length - treeView.SelectedNode.Text.Length - treeView.PathSeparator.Length);
|
||||
}
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
TreeNode match;
|
||||
FindNode(value, false, out match);
|
||||
if (match != null)
|
||||
match.TreeView.SelectedNode = match;
|
||||
else
|
||||
treeView.SelectedNode = null;
|
||||
}
|
||||
}
|
||||
|
||||
public Schedule SelectedBackup
|
||||
{
|
||||
get
|
||||
{
|
||||
if (treeView.SelectedNode == null)
|
||||
return null;
|
||||
else
|
||||
return treeView.SelectedNode.Tag as Schedule;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
treeView.SelectedNode = null;
|
||||
else
|
||||
{
|
||||
TreeNode t;
|
||||
FindNode((string.IsNullOrEmpty(value.Path) ? "" : value.Path + treeView.PathSeparator) + value.Name, false, out t);
|
||||
treeView.SelectedNode = t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Setup(IDataFetcher connection, bool allowEdit, bool onlyFolders)
|
||||
{
|
||||
m_connection = connection;
|
||||
m_allowEdit = allowEdit;
|
||||
List<Schedule> lst;
|
||||
lock (Program.DataConnection)
|
||||
lst = new List<Schedule>(m_connection.GetObjects<Schedule>());
|
||||
|
||||
treeView.Nodes.Clear();
|
||||
foreach (Schedule s in lst)
|
||||
{
|
||||
TreeNode t = new TreeNode(s.Name);
|
||||
t.ImageIndex = t.SelectedImageIndex = imageList.Images.IndexOfKey("Backup");
|
||||
t.Tag = s;
|
||||
|
||||
TreeNodeCollection col;
|
||||
|
||||
if (string.IsNullOrEmpty(s.Path))
|
||||
col = treeView.Nodes;
|
||||
else
|
||||
col = FindNode(s.Path, true);
|
||||
|
||||
if (!onlyFolders)
|
||||
col.Add(t);
|
||||
}
|
||||
|
||||
treeView.LabelEdit = m_allowEdit;
|
||||
}
|
||||
|
||||
private TreeNodeCollection FindNode(string path, bool allowCreate)
|
||||
{
|
||||
TreeNode dummy;
|
||||
return FindNode(path, allowCreate, out dummy);
|
||||
}
|
||||
|
||||
private TreeNodeCollection FindNode(string path, bool allowCreate, out TreeNode match)
|
||||
{
|
||||
TreeNodeCollection col = treeView.Nodes;
|
||||
match = null;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
return col;
|
||||
|
||||
foreach (string p in path.Split(treeView.PathSeparator[0]))
|
||||
{
|
||||
match = null;
|
||||
|
||||
foreach (TreeNode n in col)
|
||||
if (n.Text == p)
|
||||
{
|
||||
match = n;
|
||||
col = n.Nodes;
|
||||
break;
|
||||
}
|
||||
|
||||
if (match == null)
|
||||
if (allowCreate)
|
||||
{
|
||||
match = new TreeNode(p);
|
||||
match.ImageIndex = match.SelectedImageIndex = imageList.Images.IndexOfKey("Folder");
|
||||
col.Add(match);
|
||||
col = match.Nodes;
|
||||
match.Expand();
|
||||
}
|
||||
else
|
||||
return treeView.Nodes;
|
||||
}
|
||||
|
||||
return col;
|
||||
}
|
||||
|
||||
private TreeNodeCollection GetParentFolder(TreeNode n)
|
||||
{
|
||||
if (n == null)
|
||||
return treeView.Nodes;
|
||||
else if (n.Tag as Schedule == null)
|
||||
return n.Nodes;
|
||||
else
|
||||
if (n.Parent == null)
|
||||
return treeView.Nodes;
|
||||
else
|
||||
return n.Parent.Nodes;
|
||||
}
|
||||
|
||||
public TreeNode AddFolder(string foldername)
|
||||
{
|
||||
TreeNode t = new TreeNode(string.IsNullOrEmpty(foldername) ? Strings.BackupTreeView.NewFolder : foldername);
|
||||
t.ImageIndex = t.SelectedImageIndex = imageList.Images.IndexOfKey("Folder");
|
||||
|
||||
GetParentFolder(treeView.SelectedNode).Add(t);
|
||||
return t;
|
||||
}
|
||||
|
||||
public void AddBackup(string name)
|
||||
{
|
||||
Schedule s;
|
||||
lock(Program.MainLock)
|
||||
s = m_connection.Add<Schedule>();
|
||||
s.Task.FullAfter = "6M";
|
||||
s.Task.KeepFull = 4;
|
||||
s.Path = string.IsNullOrEmpty(name) ? Strings.BackupTreeView.NewBackup : name;
|
||||
s.Repeat = "1W";
|
||||
s.Weekdays = "sun,mon,tue,wed,thu,fri,sat";
|
||||
s.When = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour + 1, 0, 0);
|
||||
|
||||
TreeNode t = new TreeNode(s.Path);
|
||||
t.Tag = s;
|
||||
t.ImageIndex = t.SelectedImageIndex = imageList.Images.IndexOfKey("Backup");
|
||||
|
||||
GetParentFolder(treeView.SelectedNode).Add(t);
|
||||
UpdatePathAndName(t);
|
||||
|
||||
treeView.SelectedNode = t;
|
||||
t.BeginEdit();
|
||||
}
|
||||
|
||||
private void UpdatePathAndName(TreeNode n)
|
||||
{
|
||||
if (n == null || n.Tag as Schedule == null)
|
||||
return;
|
||||
|
||||
(n.Tag as Schedule).Name = n.Text;
|
||||
if (n.FullPath != n.Text)
|
||||
(n.Tag as Schedule).Path = n.FullPath.Substring(0, n.FullPath.Length - n.Text.Length - treeView.PathSeparator.Length);
|
||||
}
|
||||
|
||||
public void RestoreNode(TreeNode n)
|
||||
{
|
||||
if (n == null || n.Tag as Schedule == null)
|
||||
return;
|
||||
|
||||
Schedule s = n.Tag as Schedule;
|
||||
|
||||
RestoreBackup dlg = new RestoreBackup();
|
||||
dlg.Setup(s);
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void BackupNode(TreeNode n)
|
||||
{
|
||||
if (n == null)
|
||||
return;
|
||||
|
||||
if (n.Tag as Schedule == null)
|
||||
{
|
||||
foreach(TreeNode nx in FlattenTree(n.Nodes, false))
|
||||
Program.WorkThread.AddTask(new IncrementalBackupTask(nx.Tag as Schedule));
|
||||
}
|
||||
else
|
||||
Program.WorkThread.AddTask(new IncrementalBackupTask(n.Tag as Schedule));
|
||||
}
|
||||
|
||||
public void RemoveNode(TreeNode n)
|
||||
{
|
||||
if (n == null)
|
||||
return;
|
||||
|
||||
if (n.Tag as Schedule != null)
|
||||
{
|
||||
if (MessageBox.Show(this, string.Format(Strings.BackupTreeView.ConfirmRemoveBackup, (n.Tag as Schedule).Name), Application.ProductName, MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
|
||||
{
|
||||
lock(Program.MainLock)
|
||||
m_connection.DeleteObject(n.Tag);
|
||||
n.Remove();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (MessageBox.Show(this, string.Format(Strings.BackupTreeView.ConfirmDeleteFolder, n.Text), Application.ProductName, MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
|
||||
{
|
||||
foreach(TreeNode nx in FlattenTree(n.Nodes, false))
|
||||
lock (Program.MainLock)
|
||||
m_connection.DeleteObject(nx.Tag);
|
||||
|
||||
n.Remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void treeView_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (m_allowEdit && e.KeyCode == Keys.Delete)
|
||||
{
|
||||
RemoveNode(treeView.SelectedNode);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void treeView_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
TreeNode source;
|
||||
TreeNode target;
|
||||
|
||||
if (GetDragDropItems(e, out source, out target) == DragDropEffects.Move)
|
||||
{
|
||||
source.Remove();
|
||||
if (target == null)
|
||||
treeView.Nodes.Add(source);
|
||||
else
|
||||
target.Nodes.Add(source);
|
||||
|
||||
foreach(TreeNode n in FlattenTree(source.Nodes, false))
|
||||
UpdatePathAndName(n);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private List<TreeNode> FlattenTree(TreeNodeCollection entry, bool includeFolders)
|
||||
{
|
||||
List<TreeNode> res = new List<TreeNode>();
|
||||
Queue<TreeNodeCollection> nodelist = new Queue<TreeNodeCollection>();
|
||||
nodelist.Enqueue(entry);
|
||||
while (nodelist.Count > 0)
|
||||
{
|
||||
TreeNodeCollection col = nodelist.Dequeue();
|
||||
foreach (TreeNode nx in col)
|
||||
{
|
||||
if (nx.Nodes.Count > 0)
|
||||
nodelist.Enqueue(nx.Nodes);
|
||||
if (nx.Tag as Schedule != null || includeFolders)
|
||||
res.Add(nx);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
private DragDropEffects GetDragDropItems(DragEventArgs e, out TreeNode source, out TreeNode target)
|
||||
{
|
||||
source = e.Data.GetData(typeof(TreeNode)) as TreeNode;
|
||||
target = null;
|
||||
|
||||
if (source == null)
|
||||
return DragDropEffects.None;
|
||||
|
||||
Point pt = treeView.PointToClient(Cursor.Position);
|
||||
target = treeView.GetNodeAt(pt.X, pt.Y);
|
||||
if (target != null && target.Tag as Schedule != null)
|
||||
return DragDropEffects.None;
|
||||
|
||||
//Drag to the root
|
||||
if (target == null)
|
||||
return DragDropEffects.Move;
|
||||
|
||||
//We now have a valid source and target, make sure the target is not a subnode of the source
|
||||
if (source == target)
|
||||
return DragDropEffects.None;
|
||||
|
||||
foreach(TreeNode nx in FlattenTree(source.Nodes, true))
|
||||
if (nx == target)
|
||||
return DragDropEffects.None;
|
||||
|
||||
return DragDropEffects.Move;
|
||||
}
|
||||
|
||||
private void treeView_DragOver(object sender, DragEventArgs e)
|
||||
{
|
||||
TreeNode source;
|
||||
TreeNode target;
|
||||
e.Effect = GetDragDropItems(e, out source, out target);
|
||||
treeView.SelectedNode = target;
|
||||
}
|
||||
|
||||
private void treeView_ItemDrag(object sender, ItemDragEventArgs e)
|
||||
{
|
||||
if (!m_allowEdit)
|
||||
return;
|
||||
|
||||
if (e.Item as TreeNode != null && (e.Item as TreeNode).TreeView == sender)
|
||||
treeView.DoDragDrop(e.Item, DragDropEffects.Move);
|
||||
}
|
||||
|
||||
private void treeView_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (this.SelectedBackup != null || this.SelectedFolder != null)
|
||||
if (TreeDoubleClicked != null)
|
||||
TreeDoubleClicked(this, e);
|
||||
|
||||
}
|
||||
|
||||
private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (SelectedBackupChanged != null)
|
||||
SelectedBackupChanged(this, null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,222 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="treeView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="treeView.ImageIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACU
|
||||
CQAAAk1TRnQBSQFMAgEBAgEAAQwBAAEMAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABEAMAAQEBAAEgBgABEH4AAVACMwGaAUgCNQGDkAABRQI0AX0BRgI0AX8BRgI0AX8BRgI0AX8BRgI0
|
||||
AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8DAgEDDAABRQI0AX0BRgI0
|
||||
AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BRgI0AX8BXAIjAcwBVwGw
|
||||
AXAB/gFTAi8BqIgAASoCJwE/AYwBxQH5Af8BOAHQAv8BNgHPAv8BNQHOAv8BMgHNAv8BMAHMAv8BLQHK
|
||||
Av8BLAHJAv8BKQHIAv8BJwHHAv8BJQHGAv8BIwHFAv8BXAEZARwB3wgAASoCJwE/AYwBxQH5Af8BOAHQ
|
||||
Av8BNgHPAv8BNQHOAv8BMgHNAv8BMAHMAv8BUgHKAW4B/wFzAekBlQH/AXEB6QGTAf8BawHlAYwB/wFj
|
||||
Ad4BgwH/AVABzgFhAf8BUgHTAXMB/wFbAiUByIQAASoCJwE/AWoBrgH3Af8BVwHdAv8BTQHaAv8BSwHZ
|
||||
Av8BSQHZAv8BSAHYAv8BRgHXAv8BRAHWAv8BQQHUAv8BQAHTAv8BPgHSAv8BOwHRAv8BXQIeAdcIAAEq
|
||||
AicBPwFqAa4B9wH/AVcB3QL/AU0B2gL/AUsB2QL/AUkB2QL/AUgB2AL/AVUBzgF1Af8BegHmAYEB/wGB
|
||||
Ae4BiAH/AYAB8AGHAf8BdAHpAYEB/wFkAd0BdwH/AVQB0QFlAf8BUQGrAVwB/gFgAhoB3oAAASoCJwE/
|
||||
AYEB1AH+Af8BxgH2Af4B/wFhAeQC/wFgAeMC/wFeAeIC/wFcAeIC/wFaAeEC/wFZAeAC/wFWAd8C/wFV
|
||||
Ad4C/wFTAd0C/wFRAdwC/wFZAigBvwElAiMBNwQAASoCJwE/AYEB1AH+Af8BxgH2Af4B/wFhAeQC/wFg
|
||||
AeMC/wFeAeIC/wFvAdsB8AH/AVMBzAFyAf8BbQHWAYAB/wF4AeMBgQH/AYEB7AGHAf8BgQHwAYkB/wF4
|
||||
AesBgQH/AWgB4AF8Af8BXAGxAWsB/gFeAh0B2IAAASoCJwE/AX0B2AL/AYcBwwH5Af8BcQHsAv8BbwHr
|
||||
Av8BbgHrAv8BbQHqAv8BbAHqAv8BagHpAv8BaQHoAv8BaAHoAv8BZgHnAv8BZQHmAv8BWwIoAb8BXAEZ
|
||||
ARwB3wQAASoCJwE/AX0B2AL/AYcBwwH5Af8BcQHsAv8BbwHrAv8BkwHlAecB/wGfAfgB9QH/AU0BxwFm
|
||||
Af8BYQHWAYEB/wFmAdwBhQH/AWwB4QGLAf8BbwHmAZAB/wGBAfABiQH/AXoB8AGTAf8BVAFDASwB94QA
|
||||
ASoCJwE/AYEB3QL/AS8BoAH3Af8BhwHxAv8BgQHwAv8BgQHwAv8BgQHwAv8BgQHwAv8BfQHwAv8BewHw
|
||||
Av8BeQHvAv8BeAHvAv8BdgHvAv8BWwIoAb8BXgIeAdcEAAEqAicBPwGBAd0C/wEvAaAB9wH/AZEB7gH3
|
||||
Af8BtgH4AfUB/wG0Af0B+AH/Aa8B8wHxAf8BrgH9AfcB/wGoAfQB8QH/AacB9wHzAf8BpgH7AfUB/wFq
|
||||
Ac4BgQH/AXoB7gGaAf8BZQEdARsB5QFeAh4B14QAASoCJwE/AYoB5gL/AT0BzgH+Af8B6QH4Af4B/wHg
|
||||
AfsC/wHfAfsC/wHeAfsC/wHXAfoC/wGYAfQC/wGVAfQC/wGSAfQC/wGPAfQC/wGMAfQC/wFbAigBvwFb
|
||||
AigBvwEoAiUBPAEqAicBPwGKAeYC/wE9Ac4B/gH/Ae8B+AH8Af8B8QH/Af0B/wHvAvwB/wHvAf4B/QH/
|
||||
AesB/gH8Af8ByQHyAfEB/wHIAf0B+AH/AcMB9gHzAf8BdgHQAYEB/wGBAdoBmwH/AWMCHwHVAVsCKAG/
|
||||
ASgCJQE8gAABKgInAT8BnAHvAv8BXgHkAv8BXgHkAv8BXgHkAv8BXgHkAv8BXgHkAv8BUgHKAfsB/wHy
|
||||
Af0B/gH/AegB/AL/AecB/AL/AeYB/AL/AeYB/AL/AXICIwHrAXICIwHrAWEBGwEdAeQBKgInAT8BnAHv
|
||||
Av8BXgHkAv8BXgHkAv8B8AHLAcQD/wH2Af8B/gH2Ae4B/wG4AdAB6gH/AfkC/QH/AfYB/gH9Af8B9AL6
|
||||
Af8B9QH+Af0B/wH0Af4B/QH/AfMC+gH/AXICIwHrAWEBGwEdAeSAAAEqAicBPwGvAfkC/wGBAfQC/wGB
|
||||
AfQC/wGBAfQC/wGBAfQC/wGBAfQC/wGBAfQC/wGBAfQC/wGBAfQC/wGBAfQC/wGBAfQC/wGBAfQC/wwA
|
||||
ASoCJwE/Aa8B+QL/AYEB9AL/AYEB9AL/AYEB9AH+Av8C8wP/AfwB/wH7AtsB/wH8AfEB7wH/AfsB8gHt
|
||||
Af8B8QHTAdEB/wL+AfYB/wHyAd4B2QH/Af4B5wHeAf8BZAEaARgB4oQAASoCJwE/AcYD/wGaA/8BmgP/
|
||||
AZoD/wHQA/8B4wP/AeMD/wHjA/8B4wP/AeMD/wHjA/8B3gH8Af4B/wwAASoCJwE/AcYD/wGaA/8BmgP/
|
||||
AZoD/wHfAd4B0gX/Af0B7wHwAf8D/gH/AfgB2QHbAf8B+gHsAe0B/wH7AvQB/wL+AfwB/wH0AcoBhQH/
|
||||
AU0CNAGPhAABKgInAT8B6QP/AdkD/wHZA/8B2QP/AVwCIwHMKAABKgInAT8B6QP/AdkD/wHZA/8B2QP/
|
||||
AVwCIwHMAXMBIAEfAesE/wH+AvwB/wH5AdMB1QH/Af4C/AH/AfUB3gHfBf8B9QHjAdcB/wEiAiABMYgA
|
||||
AUYCNAF/AUYCNAF/AUYCNAF/AUYCNAF/Aw0BEiwAAUYCNAF/AUYCNAF/AUYCNAF/AUYCNAF/Aw0BEgQA
|
||||
Af4B6gHpAf8D/gH/AfwB4QHiAf8B/gL9Bv8C8wH/AUkCNAGI5AABJwIlATsB/wL9Cf8BxAGUAYkB/AMN
|
||||
ARHsAAFdAiQBygH/AvwB/wFZAisBuPgAASACHwEumAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
|
||||
AQEFAAGAFwAD/wEAA/8B5wQAAYABAwGAAQMFAAEDAQABAQUAAQMHAAEBBwABAQEAAQEFAAEBAQABARUA
|
||||
AQcBAAEBBQABBwEAAQEEAAEDAf8BAAEBBAABgwH/AYIBAwQAAv8B/gEHBAAD/wEfBAAD/wG/BAAL
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="treeView.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="treeView.SelectedImageIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="treeView.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 150</value>
|
||||
</data>
|
||||
<data name="treeView.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>treeView.Name" xml:space="preserve">
|
||||
<value>treeView</value>
|
||||
</data>
|
||||
<data name=">>treeView.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>treeView.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>treeView.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name=">>imageList.Name" xml:space="preserve">
|
||||
<value>imageList</value>
|
||||
</data>
|
||||
<data name=">>imageList.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>BackupTreeView</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,91 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class BandwidthLimit
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BandwidthLimit));
|
||||
this.DownloadLimitCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.UploadLimitCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.UploadLimitPicker = new Duplicati.GUI.HelperControls.SizeSelector();
|
||||
this.DownloadLimitPicker = new Duplicati.GUI.HelperControls.SizeSelector();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// DownloadLimitCheckbox
|
||||
//
|
||||
resources.ApplyResources(this.DownloadLimitCheckbox, "DownloadLimitCheckbox");
|
||||
this.DownloadLimitCheckbox.Name = "DownloadLimitCheckbox";
|
||||
this.DownloadLimitCheckbox.UseVisualStyleBackColor = true;
|
||||
this.DownloadLimitCheckbox.CheckedChanged += new System.EventHandler(this.DownloadLimitCheckbox_CheckedChanged);
|
||||
//
|
||||
// UploadLimitCheckbox
|
||||
//
|
||||
resources.ApplyResources(this.UploadLimitCheckbox, "UploadLimitCheckbox");
|
||||
this.UploadLimitCheckbox.Name = "UploadLimitCheckbox";
|
||||
this.UploadLimitCheckbox.UseVisualStyleBackColor = true;
|
||||
this.UploadLimitCheckbox.CheckedChanged += new System.EventHandler(this.UploadLimitCheckbox_CheckedChanged);
|
||||
//
|
||||
// UploadLimitPicker
|
||||
//
|
||||
resources.ApplyResources(this.UploadLimitPicker, "UploadLimitPicker");
|
||||
this.UploadLimitPicker.CurrentSize = "0b";
|
||||
this.UploadLimitPicker.CurrentSizeInBytes = ((long)(0));
|
||||
this.UploadLimitPicker.Name = "UploadLimitPicker";
|
||||
this.UploadLimitPicker.UseSpeedNotation = true;
|
||||
this.UploadLimitPicker.CurrentSizeChanged += new System.EventHandler(this.UploadLimitPicker_CurrentSizeChanged);
|
||||
//
|
||||
// DownloadLimitPicker
|
||||
//
|
||||
resources.ApplyResources(this.DownloadLimitPicker, "DownloadLimitPicker");
|
||||
this.DownloadLimitPicker.CurrentSize = "0b";
|
||||
this.DownloadLimitPicker.CurrentSizeInBytes = ((long)(0));
|
||||
this.DownloadLimitPicker.Name = "DownloadLimitPicker";
|
||||
this.DownloadLimitPicker.UseSpeedNotation = true;
|
||||
this.DownloadLimitPicker.CurrentSizeChanged += new System.EventHandler(this.DownloadLimitPicker_CurrentSizeChanged);
|
||||
//
|
||||
// BandwidthLimit
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.UploadLimitPicker);
|
||||
this.Controls.Add(this.DownloadLimitPicker);
|
||||
this.Controls.Add(this.DownloadLimitCheckbox);
|
||||
this.Controls.Add(this.UploadLimitCheckbox);
|
||||
this.Name = "BandwidthLimit";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private SizeSelector UploadLimitPicker;
|
||||
private SizeSelector DownloadLimitPicker;
|
||||
private System.Windows.Forms.CheckBox DownloadLimitCheckbox;
|
||||
private System.Windows.Forms.CheckBox UploadLimitCheckbox;
|
||||
}
|
||||
}
|
||||
@@ -1,207 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class BandwidthLimit : UserControl
|
||||
{
|
||||
public BandwidthLimit()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public event EventHandler DownloadLimitChanged;
|
||||
public event EventHandler DownloadLimitInBytesChanged;
|
||||
public event EventHandler UploadLimitChanged;
|
||||
public event EventHandler UploadLimitInBytesChanged;
|
||||
|
||||
[DefaultValue("")]
|
||||
public string DownloadLimit
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!DownloadLimitEnabled)
|
||||
return null;
|
||||
else
|
||||
return DownloadLimitPicker.CurrentSize;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (string.IsNullOrEmpty(value) || Library.Utility.Sizeparser.ParseSize(value) == 0)
|
||||
{
|
||||
DownloadLimitEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
DownloadLimitPicker.CurrentSize = value;
|
||||
DownloadLimitEnabled = true;
|
||||
}
|
||||
|
||||
if (DownloadLimitChanged != null)
|
||||
DownloadLimitChanged(this, null);
|
||||
if (DownloadLimitInBytesChanged != null)
|
||||
DownloadLimitInBytesChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(0)]
|
||||
public long DownloadLimitInBytes
|
||||
{
|
||||
get
|
||||
{
|
||||
if (DownloadLimitEnabled)
|
||||
return DownloadLimitPicker.CurrentSizeInBytes;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value <= 0)
|
||||
{
|
||||
DownloadLimitEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
DownloadLimitPicker.CurrentSizeInBytes = value;
|
||||
DownloadLimitEnabled = true;
|
||||
}
|
||||
|
||||
if (DownloadLimitChanged != null)
|
||||
DownloadLimitChanged(this, null);
|
||||
if (DownloadLimitInBytesChanged != null)
|
||||
DownloadLimitInBytesChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(false)]
|
||||
public bool DownloadLimitEnabled
|
||||
{
|
||||
get { return DownloadLimitCheckbox.Checked; }
|
||||
set { DownloadLimitCheckbox.Checked = value; }
|
||||
}
|
||||
|
||||
[DefaultValue("")]
|
||||
public string UploadLimit
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!UploadLimitEnabled)
|
||||
return null;
|
||||
else
|
||||
return UploadLimitPicker.CurrentSize;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (string.IsNullOrEmpty(value) || Library.Utility.Sizeparser.ParseSize(value) == 0)
|
||||
{
|
||||
UploadLimitEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
UploadLimitPicker.CurrentSize = value;
|
||||
UploadLimitEnabled = true;
|
||||
}
|
||||
if (UploadLimitChanged != null)
|
||||
UploadLimitChanged(this, null);
|
||||
if (UploadLimitInBytesChanged != null)
|
||||
UploadLimitInBytesChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(0)]
|
||||
public long UploadLimitInBytes
|
||||
{
|
||||
get
|
||||
{
|
||||
if (UploadLimitEnabled)
|
||||
return UploadLimitPicker.CurrentSizeInBytes;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value <= 0)
|
||||
{
|
||||
UploadLimitEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
UploadLimitPicker.CurrentSizeInBytes = value;
|
||||
UploadLimitEnabled = true;
|
||||
}
|
||||
|
||||
if (UploadLimitChanged != null)
|
||||
UploadLimitChanged(this, null);
|
||||
if (UploadLimitInBytesChanged != null)
|
||||
UploadLimitInBytesChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(false)]
|
||||
public bool UploadLimitEnabled
|
||||
{
|
||||
get { return UploadLimitCheckbox.Checked; }
|
||||
set { UploadLimitCheckbox.Checked = value; }
|
||||
}
|
||||
|
||||
private void UploadLimitCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
UploadLimitPicker.Enabled = UploadLimitEnabled;
|
||||
|
||||
if (UploadLimitChanged != null)
|
||||
UploadLimitChanged(this, null);
|
||||
if (UploadLimitInBytesChanged != null)
|
||||
UploadLimitInBytesChanged(this, null);
|
||||
}
|
||||
|
||||
private void DownloadLimitCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
DownloadLimitPicker.Enabled = DownloadLimitEnabled;
|
||||
|
||||
if (DownloadLimitChanged != null)
|
||||
DownloadLimitChanged(this, null);
|
||||
if (DownloadLimitInBytesChanged != null)
|
||||
DownloadLimitInBytesChanged(this, null);
|
||||
}
|
||||
|
||||
private void UploadLimitPicker_CurrentSizeChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (UploadLimitChanged != null)
|
||||
UploadLimitChanged(this, null);
|
||||
if (UploadLimitInBytesChanged != null)
|
||||
UploadLimitInBytesChanged(this, null);
|
||||
}
|
||||
|
||||
private void DownloadLimitPicker_CurrentSizeChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (DownloadLimitChanged != null)
|
||||
DownloadLimitChanged(this, null);
|
||||
if (DownloadLimitInBytesChanged != null)
|
||||
DownloadLimitInBytesChanged(this, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,252 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="DownloadLimitCheckbox.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="DownloadLimitCheckbox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="DownloadLimitCheckbox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 32</value>
|
||||
</data>
|
||||
<data name="DownloadLimitCheckbox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>135, 17</value>
|
||||
</data>
|
||||
<data name="DownloadLimitCheckbox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="DownloadLimitCheckbox.Text" xml:space="preserve">
|
||||
<value>Download limit (restore)</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitCheckbox.Name" xml:space="preserve">
|
||||
<value>DownloadLimitCheckbox</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitCheckbox.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitCheckbox.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitCheckbox.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 17</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.Text" xml:space="preserve">
|
||||
<value>Upload limit (backup)</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitCheckbox.Name" xml:space="preserve">
|
||||
<value>UploadLimitCheckbox</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitCheckbox.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitCheckbox.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitCheckbox.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="UploadLimitPicker.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="UploadLimitPicker.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="UploadLimitPicker.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>152, 0</value>
|
||||
</data>
|
||||
<data name="UploadLimitPicker.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>170, 21</value>
|
||||
</data>
|
||||
<data name="UploadLimitPicker.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitPicker.Name" xml:space="preserve">
|
||||
<value>UploadLimitPicker</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitPicker.Type" xml:space="preserve">
|
||||
<value>Duplicati.GUI.HelperControls.SizeSelector, Duplicati, Version=1.0.1.276, Culture=neutral, PublicKeyToken=8bfe994a39631a7b</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitPicker.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>UploadLimitPicker.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="DownloadLimitPicker.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="DownloadLimitPicker.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="DownloadLimitPicker.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>152, 32</value>
|
||||
</data>
|
||||
<data name="DownloadLimitPicker.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>170, 21</value>
|
||||
</data>
|
||||
<data name="DownloadLimitPicker.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitPicker.Name" xml:space="preserve">
|
||||
<value>DownloadLimitPicker</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitPicker.Type" xml:space="preserve">
|
||||
<value>Duplicati.GUI.HelperControls.SizeSelector, Duplicati, Version=1.0.1.276, Culture=neutral, PublicKeyToken=8bfe994a39631a7b</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitPicker.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>DownloadLimitPicker.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>321, 54</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>BandwidthLimit</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,189 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class CommandLineOptionGrid
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CommandLineOptionGrid));
|
||||
this.BaseDataSet = new System.Data.DataSet();
|
||||
this.OverrideTable = new System.Data.DataTable();
|
||||
this.EnabledDataColumn = new System.Data.DataColumn();
|
||||
this.NameDataColumn = new System.Data.DataColumn();
|
||||
this.ValueDataColumn = new System.Data.DataColumn();
|
||||
this.argumentDataColumn = new System.Data.DataColumn();
|
||||
this.validatedDataColumn = new System.Data.DataColumn();
|
||||
this.OptionsGrid = new System.Windows.Forms.DataGridView();
|
||||
this.enabledDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.valueDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.argumentDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.InfoLabel = new System.Windows.Forms.TextBox();
|
||||
this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.BaseDataSet)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.OverrideTable)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.OptionsGrid)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// BaseDataSet
|
||||
//
|
||||
this.BaseDataSet.DataSetName = "BaseDataSet";
|
||||
this.BaseDataSet.Tables.AddRange(new System.Data.DataTable[] {
|
||||
this.OverrideTable});
|
||||
//
|
||||
// OverrideTable
|
||||
//
|
||||
this.OverrideTable.Columns.AddRange(new System.Data.DataColumn[] {
|
||||
this.EnabledDataColumn,
|
||||
this.NameDataColumn,
|
||||
this.ValueDataColumn,
|
||||
this.argumentDataColumn,
|
||||
this.validatedDataColumn});
|
||||
this.OverrideTable.TableName = "OverrideTable";
|
||||
//
|
||||
// EnabledDataColumn
|
||||
//
|
||||
this.EnabledDataColumn.Caption = "Enabled";
|
||||
this.EnabledDataColumn.ColumnName = "Enabled";
|
||||
this.EnabledDataColumn.DataType = typeof(bool);
|
||||
//
|
||||
// NameDataColumn
|
||||
//
|
||||
this.NameDataColumn.Caption = "Name";
|
||||
this.NameDataColumn.ColumnName = "Name";
|
||||
//
|
||||
// ValueDataColumn
|
||||
//
|
||||
this.ValueDataColumn.Caption = "Value";
|
||||
this.ValueDataColumn.ColumnName = "Value";
|
||||
//
|
||||
// argumentDataColumn
|
||||
//
|
||||
this.argumentDataColumn.Caption = "argument";
|
||||
this.argumentDataColumn.ColumnName = "argument";
|
||||
this.argumentDataColumn.DataType = typeof(object);
|
||||
//
|
||||
// validatedDataColumn
|
||||
//
|
||||
this.validatedDataColumn.AllowDBNull = false;
|
||||
this.validatedDataColumn.ColumnName = "validated";
|
||||
this.validatedDataColumn.DataType = typeof(bool);
|
||||
this.validatedDataColumn.DefaultValue = false;
|
||||
//
|
||||
// OptionsGrid
|
||||
//
|
||||
this.OptionsGrid.AllowUserToAddRows = false;
|
||||
this.OptionsGrid.AllowUserToDeleteRows = false;
|
||||
this.OptionsGrid.AutoGenerateColumns = false;
|
||||
this.OptionsGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.OptionsGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.enabledDataGridViewCheckBoxColumn,
|
||||
this.nameDataGridViewTextBoxColumn,
|
||||
this.valueDataGridViewTextBoxColumn,
|
||||
this.argumentDataGridViewTextBoxColumn});
|
||||
this.OptionsGrid.DataMember = "OverrideTable";
|
||||
this.OptionsGrid.DataSource = this.BaseDataSet;
|
||||
resources.ApplyResources(this.OptionsGrid, "OptionsGrid");
|
||||
this.OptionsGrid.MultiSelect = false;
|
||||
this.OptionsGrid.Name = "OptionsGrid";
|
||||
this.OptionsGrid.RowHeadersVisible = false;
|
||||
this.OptionsGrid.RowEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.OptionsGrid_RowEnter);
|
||||
this.OptionsGrid.RowValidating += new System.Windows.Forms.DataGridViewCellCancelEventHandler(this.OptionsGrid_RowValidating);
|
||||
this.OptionsGrid.CellValidating += new System.Windows.Forms.DataGridViewCellValidatingEventHandler(this.OptionsGrid_CellValidating);
|
||||
this.OptionsGrid.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.OptionsGrid_CellContentClick);
|
||||
//
|
||||
// enabledDataGridViewCheckBoxColumn
|
||||
//
|
||||
this.enabledDataGridViewCheckBoxColumn.DataPropertyName = "Enabled";
|
||||
resources.ApplyResources(this.enabledDataGridViewCheckBoxColumn, "enabledDataGridViewCheckBoxColumn");
|
||||
this.enabledDataGridViewCheckBoxColumn.Name = "enabledDataGridViewCheckBoxColumn";
|
||||
this.enabledDataGridViewCheckBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
//
|
||||
// nameDataGridViewTextBoxColumn
|
||||
//
|
||||
this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name";
|
||||
resources.ApplyResources(this.nameDataGridViewTextBoxColumn, "nameDataGridViewTextBoxColumn");
|
||||
this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn";
|
||||
this.nameDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
//
|
||||
// valueDataGridViewTextBoxColumn
|
||||
//
|
||||
this.valueDataGridViewTextBoxColumn.DataPropertyName = "Value";
|
||||
resources.ApplyResources(this.valueDataGridViewTextBoxColumn, "valueDataGridViewTextBoxColumn");
|
||||
this.valueDataGridViewTextBoxColumn.Name = "valueDataGridViewTextBoxColumn";
|
||||
//
|
||||
// argumentDataGridViewTextBoxColumn
|
||||
//
|
||||
this.argumentDataGridViewTextBoxColumn.DataPropertyName = "argument";
|
||||
resources.ApplyResources(this.argumentDataGridViewTextBoxColumn, "argumentDataGridViewTextBoxColumn");
|
||||
this.argumentDataGridViewTextBoxColumn.Name = "argumentDataGridViewTextBoxColumn";
|
||||
//
|
||||
// InfoLabel
|
||||
//
|
||||
this.InfoLabel.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
resources.ApplyResources(this.InfoLabel, "InfoLabel");
|
||||
this.InfoLabel.Name = "InfoLabel";
|
||||
this.InfoLabel.ReadOnly = true;
|
||||
//
|
||||
// dataGridViewTextBoxColumn1
|
||||
//
|
||||
this.dataGridViewTextBoxColumn1.DataPropertyName = "argument";
|
||||
resources.ApplyResources(this.dataGridViewTextBoxColumn1, "dataGridViewTextBoxColumn1");
|
||||
this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
|
||||
//
|
||||
// CommandLineOptionGrid
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.OptionsGrid);
|
||||
this.Controls.Add(this.InfoLabel);
|
||||
this.Name = "CommandLineOptionGrid";
|
||||
((System.ComponentModel.ISupportInitialize)(this.BaseDataSet)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.OverrideTable)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.OptionsGrid)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Data.DataSet BaseDataSet;
|
||||
private System.Data.DataTable OverrideTable;
|
||||
private System.Data.DataColumn EnabledDataColumn;
|
||||
private System.Data.DataColumn NameDataColumn;
|
||||
private System.Data.DataColumn ValueDataColumn;
|
||||
private System.Data.DataColumn argumentDataColumn;
|
||||
private System.Windows.Forms.DataGridView OptionsGrid;
|
||||
private System.Data.DataColumn validatedDataColumn;
|
||||
private System.Windows.Forms.TextBox InfoLabel;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn enabledDataGridViewCheckBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn valueDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn argumentDataGridViewTextBoxColumn;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
|
||||
}
|
||||
}
|
||||
@@ -1,264 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class CommandLineOptionGrid : UserControl
|
||||
{
|
||||
private bool m_unsupported = false;
|
||||
private bool m_enabledClicked = false;
|
||||
|
||||
private Dictionary<string, Library.Interface.ICommandLineArgument> m_optionCache = new Dictionary<string,Library.Interface.ICommandLineArgument>();
|
||||
|
||||
public CommandLineOptionGrid()
|
||||
{
|
||||
try
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
catch (NotImplementedException)
|
||||
{
|
||||
OptionsGrid.Enabled = false;
|
||||
MessageBox.Show(this, Strings.CommandLineOptionsGrid.PageNotSupportedWarning, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
m_unsupported = true;
|
||||
}
|
||||
|
||||
MonoSupport.FixTextBoxes(this);
|
||||
}
|
||||
|
||||
public bool Unsupported { get { return m_unsupported; } }
|
||||
|
||||
public void Setup(IList<Library.Interface.ICommandLineArgument> switches, IList<Library.Interface.ICommandLineArgument> extras, IDictionary<string, string> options)
|
||||
{
|
||||
if (!m_unsupported)
|
||||
{
|
||||
OverrideTable.Rows.Clear();
|
||||
m_optionCache.Clear();
|
||||
|
||||
foreach (IList<Library.Interface.ICommandLineArgument> sw in new IList<Library.Interface.ICommandLineArgument>[] { switches, extras })
|
||||
if (sw != null)
|
||||
foreach (Library.Interface.ICommandLineArgument arg in sw)
|
||||
{
|
||||
DataRow dr = OverrideTable.NewRow();
|
||||
dr["Enabled"] = options.ContainsKey(arg.Name);
|
||||
dr["argument"] = arg;
|
||||
dr["validated"] = false;
|
||||
dr["Name"] = arg.Name;
|
||||
if (options.ContainsKey(arg.Name))
|
||||
dr["Value"] = options[arg.Name];
|
||||
OverrideTable.Rows.Add(dr);
|
||||
|
||||
//We use this as a lookup table due to a Mono bug
|
||||
m_optionCache[arg.Name] = arg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<string, string> GetConfiguration()
|
||||
{
|
||||
Dictionary<string, string> opts = new Dictionary<string, string>();
|
||||
if (!m_unsupported)
|
||||
foreach (DataRow dr in OverrideTable.Rows)
|
||||
if ((bool)dr["Enabled"])
|
||||
opts.Add((string)dr["Name"], (string)(dr["Value"] == DBNull.Value ? "" : dr["Value"] ?? ""));
|
||||
|
||||
return opts;
|
||||
}
|
||||
|
||||
public DataSet DataSet
|
||||
{
|
||||
get { return BaseDataSet; }
|
||||
set
|
||||
{
|
||||
if (!m_unsupported)
|
||||
{
|
||||
BaseDataSet = value;
|
||||
OptionsGrid.DataSource = BaseDataSet;
|
||||
OverrideTable = BaseDataSet.Tables["OverrideTable"];
|
||||
OptionsGrid.DataMember = "OverrideTable";
|
||||
|
||||
OptionsGrid.Sort(nameDataGridViewTextBoxColumn, ListSortDirection.Ascending);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<string, Library.Interface.ICommandLineArgument> DataElementCache
|
||||
{
|
||||
get { return m_optionCache; }
|
||||
set
|
||||
{
|
||||
if (!m_unsupported)
|
||||
m_optionCache = value;
|
||||
}
|
||||
}
|
||||
|
||||
private Duplicati.Library.Interface.ICommandLineArgument GetArgument(DataRow r)
|
||||
{
|
||||
Duplicati.Library.Interface.ICommandLineArgument arg;
|
||||
object v = r["argument"];
|
||||
if (v is string)
|
||||
{
|
||||
//For some reason, the newer Mono versions store the object as a string instance instead of the object
|
||||
//To counter this, there is now a seperate argument cache
|
||||
if (r["Name"] == null || r["Name"] == DBNull.Value)
|
||||
return null;
|
||||
m_optionCache.TryGetValue((string)r["Name"], out arg);
|
||||
return arg;
|
||||
}
|
||||
else if (v is Duplicati.Library.Interface.ICommandLineArgument)
|
||||
return (Duplicati.Library.Interface.ICommandLineArgument)v;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
private DataRow FindRow(int rowIndex)
|
||||
{
|
||||
int argIndex = -1;
|
||||
foreach (DataGridViewColumn c in OptionsGrid.Columns)
|
||||
if (c.DataPropertyName == "argument")
|
||||
{
|
||||
argIndex = c.Index;
|
||||
break;
|
||||
}
|
||||
|
||||
int nameIndex = -1;
|
||||
foreach (DataGridViewColumn c in OptionsGrid.Columns)
|
||||
if (c.DataPropertyName == "Name")
|
||||
{
|
||||
nameIndex = c.Index;
|
||||
break;
|
||||
}
|
||||
|
||||
if (argIndex == -1)
|
||||
return null;
|
||||
|
||||
object _arg = OptionsGrid.Rows[rowIndex].Cells[argIndex].Value;
|
||||
if (_arg == null)
|
||||
return null;
|
||||
|
||||
Library.Interface.ICommandLineArgument arg;
|
||||
|
||||
//For some reason, the newer Mono versions store the object as a string instance instead of the object
|
||||
//To counter this, there is now a seperate argument cache
|
||||
if (_arg is string)
|
||||
{
|
||||
if (nameIndex == -1)
|
||||
return null;
|
||||
|
||||
string name = OptionsGrid.Rows[rowIndex].Cells[nameIndex].Value as string;
|
||||
if (name == null)
|
||||
return null;
|
||||
m_optionCache.TryGetValue(name, out arg);
|
||||
}
|
||||
else if (_arg is Library.Interface.ICommandLineArgument)
|
||||
{
|
||||
arg = (Library.Interface.ICommandLineArgument)OptionsGrid.Rows[rowIndex].Cells[argIndex].Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach (DataRow r in OverrideTable.Rows)
|
||||
if (GetArgument(r) == arg)
|
||||
return r;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void OptionsGrid_RowEnter(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
DataRow r = FindRow(e.RowIndex);
|
||||
if (r == null)
|
||||
return;
|
||||
Library.Interface.ICommandLineArgument arg = GetArgument(r);
|
||||
|
||||
string typename = arg.Typename;
|
||||
if (arg.ValidValues != null && arg.ValidValues.Length > 0)
|
||||
typename += ": " + string.Join(", ", arg.ValidValues);
|
||||
|
||||
InfoLabel.Text = string.Format(Strings.CommandLineOptionsGrid.InfoLabelFormat, typename, arg.ShortDescription, arg.LongDescription);
|
||||
}
|
||||
|
||||
private void OptionsGrid_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
|
||||
{
|
||||
DataRow r = FindRow(e.RowIndex);
|
||||
if (r == null)
|
||||
return;
|
||||
|
||||
if (e.ColumnIndex != 0)
|
||||
r["Enabled"] = r["Value"] != DBNull.Value;
|
||||
|
||||
r["validated"] = false;
|
||||
|
||||
if ((bool)r["Enabled"])
|
||||
{
|
||||
Library.Interface.ICommandLineArgument arg = GetArgument(r);
|
||||
string optionvalue = (string)(r["Value"] == DBNull.Value ? "" : r["Value"] ?? "");
|
||||
|
||||
string validationMessage = Duplicati.Library.Main.Interface.ValidateOptionValue(arg, arg.Name, optionvalue);
|
||||
if (validationMessage != null)
|
||||
if (MessageBox.Show(this, validationMessage, Application.ProductName, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
|
||||
e.Cancel = true;
|
||||
|
||||
if (!e.Cancel)
|
||||
r["validated"] = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void OptionsGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex == 0)
|
||||
m_enabledClicked = true;
|
||||
}
|
||||
|
||||
private void OptionsGrid_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
|
||||
{
|
||||
if (e == null || e.FormattedValue == null)
|
||||
return;
|
||||
|
||||
if (m_enabledClicked && e.ColumnIndex == 0 && e.FormattedValue.ToString() == true.ToString())
|
||||
{
|
||||
DataRow r = FindRow(e.RowIndex);
|
||||
if (r == null)
|
||||
return;
|
||||
|
||||
Library.Interface.ICommandLineArgument arg = GetArgument(r);
|
||||
if (arg.Type == Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Boolean)
|
||||
{
|
||||
if (r["Value"] == DBNull.Value)
|
||||
{
|
||||
r["Value"] = "true";
|
||||
r["Enabled"] = true; //Required or display is weird
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_enabledClicked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,303 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="BaseDataSet.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="enabledDataGridViewCheckBoxColumn.HeaderText" xml:space="preserve">
|
||||
<value>Enabled</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="enabledDataGridViewCheckBoxColumn.Width" type="System.Int32, mscorlib">
|
||||
<value>50</value>
|
||||
</data>
|
||||
<data name="nameDataGridViewTextBoxColumn.HeaderText" xml:space="preserve">
|
||||
<value>Name</value>
|
||||
</data>
|
||||
<data name="nameDataGridViewTextBoxColumn.Width" type="System.Int32, mscorlib">
|
||||
<value>150</value>
|
||||
</data>
|
||||
<data name="valueDataGridViewTextBoxColumn.HeaderText" xml:space="preserve">
|
||||
<value>Value</value>
|
||||
</data>
|
||||
<data name="valueDataGridViewTextBoxColumn.Width" type="System.Int32, mscorlib">
|
||||
<value>240</value>
|
||||
</data>
|
||||
<data name="argumentDataGridViewTextBoxColumn.HeaderText" xml:space="preserve">
|
||||
<value>argument</value>
|
||||
</data>
|
||||
<data name="argumentDataGridViewTextBoxColumn.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="argumentDataGridViewTextBoxColumn.Width" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="OptionsGrid.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="OptionsGrid.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="OptionsGrid.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>471, 152</value>
|
||||
</data>
|
||||
<data name="OptionsGrid.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>OptionsGrid.Name" xml:space="preserve">
|
||||
<value>OptionsGrid</value>
|
||||
</data>
|
||||
<data name=">>OptionsGrid.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>OptionsGrid.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>OptionsGrid.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="InfoLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="InfoLabel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 152</value>
|
||||
</data>
|
||||
<data name="InfoLabel.Multiline" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="InfoLabel.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
||||
<value>Vertical</value>
|
||||
</data>
|
||||
<data name="InfoLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>471, 63</value>
|
||||
</data>
|
||||
<data name="InfoLabel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>InfoLabel.Name" xml:space="preserve">
|
||||
<value>InfoLabel</value>
|
||||
</data>
|
||||
<data name=">>InfoLabel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>InfoLabel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>InfoLabel.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="dataGridViewTextBoxColumn1.HeaderText" xml:space="preserve">
|
||||
<value>argument</value>
|
||||
</data>
|
||||
<data name="dataGridViewTextBoxColumn1.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="dataGridViewTextBoxColumn1.Width" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>471, 215</value>
|
||||
</data>
|
||||
<data name=">>BaseDataSet.Name" xml:space="preserve">
|
||||
<value>BaseDataSet</value>
|
||||
</data>
|
||||
<data name=">>BaseDataSet.Type" xml:space="preserve">
|
||||
<value>System.Data.DataSet, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>OverrideTable.Name" xml:space="preserve">
|
||||
<value>OverrideTable</value>
|
||||
</data>
|
||||
<data name=">>OverrideTable.Type" xml:space="preserve">
|
||||
<value>System.Data.DataTable, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>EnabledDataColumn.Name" xml:space="preserve">
|
||||
<value>EnabledDataColumn</value>
|
||||
</data>
|
||||
<data name=">>EnabledDataColumn.Type" xml:space="preserve">
|
||||
<value>System.Data.DataColumn, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>NameDataColumn.Name" xml:space="preserve">
|
||||
<value>NameDataColumn</value>
|
||||
</data>
|
||||
<data name=">>NameDataColumn.Type" xml:space="preserve">
|
||||
<value>System.Data.DataColumn, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ValueDataColumn.Name" xml:space="preserve">
|
||||
<value>ValueDataColumn</value>
|
||||
</data>
|
||||
<data name=">>ValueDataColumn.Type" xml:space="preserve">
|
||||
<value>System.Data.DataColumn, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>argumentDataColumn.Name" xml:space="preserve">
|
||||
<value>argumentDataColumn</value>
|
||||
</data>
|
||||
<data name=">>argumentDataColumn.Type" xml:space="preserve">
|
||||
<value>System.Data.DataColumn, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>validatedDataColumn.Name" xml:space="preserve">
|
||||
<value>validatedDataColumn</value>
|
||||
</data>
|
||||
<data name=">>validatedDataColumn.Type" xml:space="preserve">
|
||||
<value>System.Data.DataColumn, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>enabledDataGridViewCheckBoxColumn.Name" xml:space="preserve">
|
||||
<value>enabledDataGridViewCheckBoxColumn</value>
|
||||
</data>
|
||||
<data name=">>enabledDataGridViewCheckBoxColumn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>nameDataGridViewTextBoxColumn.Name" xml:space="preserve">
|
||||
<value>nameDataGridViewTextBoxColumn</value>
|
||||
</data>
|
||||
<data name=">>nameDataGridViewTextBoxColumn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>valueDataGridViewTextBoxColumn.Name" xml:space="preserve">
|
||||
<value>valueDataGridViewTextBoxColumn</value>
|
||||
</data>
|
||||
<data name=">>valueDataGridViewTextBoxColumn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>argumentDataGridViewTextBoxColumn.Name" xml:space="preserve">
|
||||
<value>argumentDataGridViewTextBoxColumn</value>
|
||||
</data>
|
||||
<data name=">>argumentDataGridViewTextBoxColumn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>dataGridViewTextBoxColumn1.Name" xml:space="preserve">
|
||||
<value>dataGridViewTextBoxColumn1</value>
|
||||
</data>
|
||||
<data name=">>dataGridViewTextBoxColumn1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>CommandLineOptionGrid</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,83 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class DurationEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DurationEditor));
|
||||
this.EasyDuration = new System.Windows.Forms.ComboBox();
|
||||
this.CustomDuration = new System.Windows.Forms.TextBox();
|
||||
this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// EasyDuration
|
||||
//
|
||||
this.EasyDuration.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.EasyDuration.FormattingEnabled = true;
|
||||
this.EasyDuration.Items.AddRange(new object[] {
|
||||
resources.GetString("EasyDuration.Items"),
|
||||
resources.GetString("EasyDuration.Items1"),
|
||||
resources.GetString("EasyDuration.Items2"),
|
||||
resources.GetString("EasyDuration.Items3"),
|
||||
resources.GetString("EasyDuration.Items4")});
|
||||
resources.ApplyResources(this.EasyDuration, "EasyDuration");
|
||||
this.EasyDuration.Name = "EasyDuration";
|
||||
this.EasyDuration.SelectedIndexChanged += new System.EventHandler(this.EasyDuration_SelectedIndexChanged);
|
||||
//
|
||||
// CustomDuration
|
||||
//
|
||||
this.errorProvider.SetError(this.CustomDuration, resources.GetString("CustomDuration.Error"));
|
||||
resources.ApplyResources(this.CustomDuration, "CustomDuration");
|
||||
this.CustomDuration.Name = "CustomDuration";
|
||||
this.CustomDuration.TextChanged += new System.EventHandler(this.CustomDuration_TextChanged);
|
||||
//
|
||||
// errorProvider
|
||||
//
|
||||
this.errorProvider.ContainerControl = this;
|
||||
//
|
||||
// DurationEditor
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.CustomDuration);
|
||||
this.Controls.Add(this.EasyDuration);
|
||||
this.Name = "DurationEditor";
|
||||
((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox EasyDuration;
|
||||
private System.Windows.Forms.TextBox CustomDuration;
|
||||
private System.Windows.Forms.ErrorProvider errorProvider;
|
||||
}
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class DurationEditor : UserControl
|
||||
{
|
||||
private string[] m_values = { "1D", "1W", "2W", "1M", "" };
|
||||
|
||||
public DurationEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.HandleCreated += new EventHandler(EasyDuration_SelectedIndexChanged);
|
||||
}
|
||||
|
||||
public event EventHandler ValueChanged;
|
||||
|
||||
/// <summary>
|
||||
/// Sets the available intervals
|
||||
/// </summary>
|
||||
/// <param name="values">A dictionary where the key is the string to display and the value is the duplicity time string</param>
|
||||
public void SetIntervals(List<KeyValuePair<string, string>> values)
|
||||
{
|
||||
EasyDuration.Items.Clear();
|
||||
|
||||
if (values[values.Count - 1].Value != "")
|
||||
values.Add(new KeyValuePair<string, string>(Strings.DurationEditor.CustomDuration, ""));
|
||||
|
||||
m_values = new string[values.Count];
|
||||
for (int i = 0; i < values.Count; i++)
|
||||
{
|
||||
m_values[i] = values[i].Value;
|
||||
EasyDuration.Items.Add(values[i].Key);
|
||||
}
|
||||
}
|
||||
|
||||
private void EasyDuration_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
//To prevent some flickering when creating the control, we must wait until the handle is created
|
||||
if (this.IsHandleCreated)
|
||||
{
|
||||
CustomDuration.Visible = (EasyDuration.SelectedIndex == EasyDuration.Items.Count - 1);
|
||||
|
||||
if (EasyDuration.SelectedIndex == EasyDuration.Items.Count - 1)
|
||||
CustomDuration.Text = m_values[EasyDuration.Items.Count - 1];
|
||||
|
||||
if (ValueChanged != null)
|
||||
ValueChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
private void CustomDuration_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Duplicati.Library.Utility.Timeparser.ParseTimeSpan(CustomDuration.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
errorProvider.SetError(CustomDuration, ex.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
errorProvider.SetError(CustomDuration, "");
|
||||
m_values[EasyDuration.Items.Count - 1] = CustomDuration.Text;
|
||||
|
||||
if (ValueChanged != null)
|
||||
ValueChanged(sender, e);
|
||||
}
|
||||
|
||||
public string Value
|
||||
{
|
||||
get
|
||||
{
|
||||
if (EasyDuration.SelectedIndex < 0)
|
||||
return "";
|
||||
else
|
||||
return m_values[EasyDuration.SelectedIndex];
|
||||
}
|
||||
set
|
||||
{
|
||||
for (int i = 0; i < m_values.Length - 1; i++)
|
||||
if (m_values[i] == value)
|
||||
{
|
||||
EasyDuration.SelectedIndex = i;
|
||||
return;
|
||||
}
|
||||
|
||||
m_values[EasyDuration.Items.Count - 1] = value;
|
||||
EasyDuration.SelectedIndex = EasyDuration.Items.Count - 1;
|
||||
CustomDuration.Text = m_values[EasyDuration.Items.Count - 1];
|
||||
|
||||
if (ValueChanged != null)
|
||||
ValueChanged(this, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="EasyDuration.Items" xml:space="preserve">
|
||||
<value>Each day</value>
|
||||
</data>
|
||||
<data name="EasyDuration.Items1" xml:space="preserve">
|
||||
<value>Each week</value>
|
||||
</data>
|
||||
<data name="EasyDuration.Items2" xml:space="preserve">
|
||||
<value>Each second week</value>
|
||||
</data>
|
||||
<data name="EasyDuration.Items3" xml:space="preserve">
|
||||
<value>Each month</value>
|
||||
</data>
|
||||
<data name="EasyDuration.Items4" xml:space="preserve">
|
||||
<value>Custom ...</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="EasyDuration.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="EasyDuration.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>112, 21</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="EasyDuration.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>EasyDuration.Name" xml:space="preserve">
|
||||
<value>EasyDuration</value>
|
||||
</data>
|
||||
<data name=">>EasyDuration.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>EasyDuration.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>EasyDuration.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>221, 21</value>
|
||||
</data>
|
||||
<data name=">>errorProvider.Name" xml:space="preserve">
|
||||
<value>errorProvider</value>
|
||||
</data>
|
||||
<data name=">>errorProvider.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ErrorProvider, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>DurationEditor</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="CustomDuration.Error" xml:space="preserve">
|
||||
<value>s</value>
|
||||
</data>
|
||||
<data name="CustomDuration.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>136, 0</value>
|
||||
</data>
|
||||
<data name="CustomDuration.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>84, 20</value>
|
||||
</data>
|
||||
<data name="CustomDuration.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="CustomDuration.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>CustomDuration.Name" xml:space="preserve">
|
||||
<value>CustomDuration</value>
|
||||
</data>
|
||||
<data name=">>CustomDuration.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CustomDuration.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>CustomDuration.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,184 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class FilterDialog
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FilterDialog));
|
||||
this.Inclusive = new System.Windows.Forms.RadioButton();
|
||||
this.Exclusive = new System.Windows.Forms.RadioButton();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.FilterText = new System.Windows.Forms.TextBox();
|
||||
this.OKBtn = new System.Windows.Forms.Button();
|
||||
this.CancelBtn = new System.Windows.Forms.Button();
|
||||
this.IsRegExp = new System.Windows.Forms.CheckBox();
|
||||
this.BrowseFolderButton = new System.Windows.Forms.Button();
|
||||
this.BrowseFileButton = new System.Windows.Forms.Button();
|
||||
this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
this.HelpLink = new System.Windows.Forms.LinkLabel();
|
||||
this.HelpImage = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.HelpImage)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// Inclusive
|
||||
//
|
||||
resources.ApplyResources(this.Inclusive, "Inclusive");
|
||||
this.Inclusive.Checked = true;
|
||||
this.Inclusive.Name = "Inclusive";
|
||||
this.Inclusive.TabStop = true;
|
||||
this.Inclusive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// Exclusive
|
||||
//
|
||||
resources.ApplyResources(this.Exclusive, "Exclusive");
|
||||
this.Exclusive.Name = "Exclusive";
|
||||
this.Exclusive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// FilterText
|
||||
//
|
||||
resources.ApplyResources(this.FilterText, "FilterText");
|
||||
this.FilterText.Name = "FilterText";
|
||||
this.FilterText.TextChanged += new System.EventHandler(this.FilterText_TextChanged);
|
||||
//
|
||||
// OKBtn
|
||||
//
|
||||
resources.ApplyResources(this.OKBtn, "OKBtn");
|
||||
this.OKBtn.Name = "OKBtn";
|
||||
this.OKBtn.UseVisualStyleBackColor = true;
|
||||
this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
|
||||
//
|
||||
// CancelBtn
|
||||
//
|
||||
this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
resources.ApplyResources(this.CancelBtn, "CancelBtn");
|
||||
this.CancelBtn.Name = "CancelBtn";
|
||||
this.CancelBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// IsRegExp
|
||||
//
|
||||
resources.ApplyResources(this.IsRegExp, "IsRegExp");
|
||||
this.IsRegExp.Checked = true;
|
||||
this.IsRegExp.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.IsRegExp.Name = "IsRegExp";
|
||||
this.IsRegExp.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// BrowseFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.BrowseFolderButton, "BrowseFolderButton");
|
||||
this.BrowseFolderButton.Image = global::Duplicati.GUI.Properties.Resources.FolderOpen;
|
||||
this.BrowseFolderButton.Name = "BrowseFolderButton";
|
||||
this.BrowseFolderButton.UseVisualStyleBackColor = true;
|
||||
this.BrowseFolderButton.Click += new System.EventHandler(this.BrowseFolderButton_Click);
|
||||
//
|
||||
// BrowseFileButton
|
||||
//
|
||||
resources.ApplyResources(this.BrowseFileButton, "BrowseFileButton");
|
||||
this.BrowseFileButton.Name = "BrowseFileButton";
|
||||
this.BrowseFileButton.UseVisualStyleBackColor = true;
|
||||
this.BrowseFileButton.Click += new System.EventHandler(this.BrowseFileButton_Click);
|
||||
//
|
||||
// folderBrowserDialog
|
||||
//
|
||||
resources.ApplyResources(this.folderBrowserDialog, "folderBrowserDialog");
|
||||
this.folderBrowserDialog.ShowNewFolderButton = false;
|
||||
//
|
||||
// openFileDialog
|
||||
//
|
||||
this.openFileDialog.AddExtension = false;
|
||||
this.openFileDialog.CheckFileExists = false;
|
||||
this.openFileDialog.CheckPathExists = false;
|
||||
this.openFileDialog.DereferenceLinks = false;
|
||||
resources.ApplyResources(this.openFileDialog, "openFileDialog");
|
||||
this.openFileDialog.SupportMultiDottedExtensions = true;
|
||||
this.openFileDialog.ValidateNames = false;
|
||||
//
|
||||
// HelpLink
|
||||
//
|
||||
resources.ApplyResources(this.HelpLink, "HelpLink");
|
||||
this.HelpLink.Name = "HelpLink";
|
||||
this.HelpLink.TabStop = true;
|
||||
this.HelpLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.HelpLink_LinkClicked);
|
||||
//
|
||||
// HelpImage
|
||||
//
|
||||
this.HelpImage.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.HelpImage.Image = global::Duplicati.GUI.Properties.Resources.help;
|
||||
resources.ApplyResources(this.HelpImage, "HelpImage");
|
||||
this.HelpImage.Name = "HelpImage";
|
||||
this.HelpImage.TabStop = false;
|
||||
this.HelpImage.Click += new System.EventHandler(this.HelpImage_Click);
|
||||
//
|
||||
// FilterDialog
|
||||
//
|
||||
this.AcceptButton = this.OKBtn;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.CancelBtn;
|
||||
this.Controls.Add(this.HelpImage);
|
||||
this.Controls.Add(this.HelpLink);
|
||||
this.Controls.Add(this.BrowseFileButton);
|
||||
this.Controls.Add(this.BrowseFolderButton);
|
||||
this.Controls.Add(this.FilterText);
|
||||
this.Controls.Add(this.IsRegExp);
|
||||
this.Controls.Add(this.CancelBtn);
|
||||
this.Controls.Add(this.OKBtn);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.Exclusive);
|
||||
this.Controls.Add(this.Inclusive);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Name = "FilterDialog";
|
||||
this.Activated += new System.EventHandler(this.FilterDialog_Activated);
|
||||
this.Load += new System.EventHandler(this.FilterDialog_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.HelpImage)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RadioButton Inclusive;
|
||||
private System.Windows.Forms.RadioButton Exclusive;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox FilterText;
|
||||
private System.Windows.Forms.Button OKBtn;
|
||||
private System.Windows.Forms.Button CancelBtn;
|
||||
private System.Windows.Forms.CheckBox IsRegExp;
|
||||
private System.Windows.Forms.Button BrowseFolderButton;
|
||||
private System.Windows.Forms.Button BrowseFileButton;
|
||||
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;
|
||||
private System.Windows.Forms.OpenFileDialog openFileDialog;
|
||||
private System.Windows.Forms.LinkLabel HelpLink;
|
||||
private System.Windows.Forms.PictureBox HelpImage;
|
||||
}
|
||||
}
|
||||
@@ -1,186 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Duplicati.Datamodel;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class FilterDialog : Form
|
||||
{
|
||||
public class FilterEntry
|
||||
{
|
||||
public FilterEntry(bool include, string filter, string globbing)
|
||||
{
|
||||
this.Include = include;
|
||||
this.Filter = filter;
|
||||
this.Globbing = globbing;
|
||||
}
|
||||
|
||||
public string Filter;
|
||||
public bool Include;
|
||||
public string Globbing;
|
||||
|
||||
public string DisplayValue { get { return string.IsNullOrEmpty(this.Globbing) ? this.Filter : this.Globbing; } }
|
||||
public string ImageKey
|
||||
{
|
||||
get
|
||||
{
|
||||
return
|
||||
(string.IsNullOrEmpty(this.Globbing) ? "regexp" : "globbing")
|
||||
+ "-" +
|
||||
(this.Include ? "include" : "exclude");
|
||||
}
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return this.DisplayValue;
|
||||
}
|
||||
|
||||
public ListViewItem CreateListViewItem()
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem(this.DisplayValue, this.ImageKey);
|
||||
lvi.Tag = this;
|
||||
return lvi;
|
||||
}
|
||||
}
|
||||
|
||||
FilterEntry m_filter;
|
||||
|
||||
public FilterDialog(FilterEntry filter)
|
||||
: this()
|
||||
{
|
||||
m_filter = filter;
|
||||
}
|
||||
|
||||
public FilterEntry Filter
|
||||
{
|
||||
get { return m_filter; }
|
||||
}
|
||||
|
||||
private FilterDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void OKBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filter;
|
||||
string globbing;
|
||||
if (IsRegExp.Checked)
|
||||
{
|
||||
try
|
||||
{
|
||||
new System.Text.RegularExpressions.Regex(FilterText.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, string.Format(Strings.FilterDialog.InvalidRegExpMessage, ex.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
filter = FilterText.Text;
|
||||
globbing = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
filter = Library.Utility.FilenameFilter.ConvertGlobbingToRegExp(FilterText.Text);
|
||||
globbing = FilterText.Text;
|
||||
}
|
||||
|
||||
m_filter = new FilterEntry(Inclusive.Checked, filter, globbing);
|
||||
this.DialogResult = DialogResult.OK;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void FilterDialog_Load(object sender, EventArgs e)
|
||||
{
|
||||
Inclusive.Checked = m_filter.Include;
|
||||
Exclusive.Checked = !m_filter.Include;
|
||||
FilterText.Text = m_filter.Filter;
|
||||
if (string.IsNullOrEmpty(m_filter.Globbing))
|
||||
{
|
||||
if (string.IsNullOrEmpty(m_filter.Filter))
|
||||
{
|
||||
//New filter is default globbing
|
||||
IsRegExp.Checked = false;
|
||||
FilterText.Text = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
IsRegExp.Checked = true;
|
||||
FilterText.Text = m_filter.Filter;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IsRegExp.Checked = false;
|
||||
FilterText.Text = m_filter.Globbing;
|
||||
}
|
||||
|
||||
try { FilterText.Focus(); }
|
||||
catch { }
|
||||
|
||||
}
|
||||
|
||||
private void BrowseFolderButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (folderBrowserDialog.ShowDialog(this) == DialogResult.OK)
|
||||
if (IsRegExp.Checked)
|
||||
FilterText.Text = Duplicati.Library.Utility.FilenameFilter.ConvertGlobbingToRegExp(Duplicati.Library.Utility.Utility.AppendDirSeparator(folderBrowserDialog.SelectedPath));
|
||||
else
|
||||
FilterText.Text = Duplicati.Library.Utility.Utility.AppendDirSeparator(folderBrowserDialog.SelectedPath);
|
||||
}
|
||||
|
||||
private void BrowseFileButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
|
||||
if (IsRegExp.Checked)
|
||||
FilterText.Text = Duplicati.Library.Utility.FilenameFilter.ConvertGlobbingToRegExp(openFileDialog.FileName);
|
||||
else
|
||||
FilterText.Text = openFileDialog.FileName;
|
||||
}
|
||||
|
||||
private void HelpImage_Click(object sender, EventArgs e)
|
||||
{
|
||||
Duplicati.Library.Utility.UrlUtillity.OpenUrl("http://code.google.com/p/duplicati/wiki/FilterUsage");
|
||||
}
|
||||
|
||||
private void HelpLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
HelpImage_Click(sender, e);
|
||||
}
|
||||
|
||||
private void FilterText_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
OKBtn.Enabled = FilterText.Text!= null && FilterText.Text.Trim().Length > 0;
|
||||
}
|
||||
|
||||
private void FilterDialog_Activated(object sender, EventArgs e)
|
||||
{
|
||||
try { FilterText.Focus(); }
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,453 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Inclusive.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="Inclusive.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 8</value>
|
||||
</data>
|
||||
<data name="Inclusive.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>167, 17</value>
|
||||
</data>
|
||||
<data name="Inclusive.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="Inclusive.Text" xml:space="preserve">
|
||||
<value>Include files matching the filter</value>
|
||||
</data>
|
||||
<data name=">>Inclusive.Name" xml:space="preserve">
|
||||
<value>Inclusive</value>
|
||||
</data>
|
||||
<data name=">>Inclusive.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Inclusive.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Inclusive.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="Exclusive.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="Exclusive.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 32</value>
|
||||
</data>
|
||||
<data name="Exclusive.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>170, 17</value>
|
||||
</data>
|
||||
<data name="Exclusive.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="Exclusive.Text" xml:space="preserve">
|
||||
<value>Exclude files matching the filter</value>
|
||||
</data>
|
||||
<data name=">>Exclusive.Name" xml:space="preserve">
|
||||
<value>Exclusive</value>
|
||||
</data>
|
||||
<data name=">>Exclusive.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Exclusive.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Exclusive.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 64</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>29, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Filter</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name=">>label1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="FilterText.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>56, 64</value>
|
||||
</data>
|
||||
<data name="FilterText.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>272, 20</value>
|
||||
</data>
|
||||
<data name="FilterText.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>FilterText.Name" xml:space="preserve">
|
||||
<value>FilterText</value>
|
||||
</data>
|
||||
<data name=">>FilterText.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>FilterText.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>FilterText.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="OKBtn.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="OKBtn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>112, 96</value>
|
||||
</data>
|
||||
<data name="OKBtn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="OKBtn.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="OKBtn.Text" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name=">>OKBtn.Name" xml:space="preserve">
|
||||
<value>OKBtn</value>
|
||||
</data>
|
||||
<data name=">>OKBtn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>OKBtn.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>OKBtn.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="CancelBtn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>200, 96</value>
|
||||
</data>
|
||||
<data name="CancelBtn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="CancelBtn.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="CancelBtn.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.Name" xml:space="preserve">
|
||||
<value>CancelBtn</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="IsRegExp.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="IsRegExp.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>224, 48</value>
|
||||
</data>
|
||||
<data name="IsRegExp.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>146, 17</value>
|
||||
</data>
|
||||
<data name="IsRegExp.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="IsRegExp.Text" xml:space="preserve">
|
||||
<value>Filter is regular expression</value>
|
||||
</data>
|
||||
<data name=">>IsRegExp.Name" xml:space="preserve">
|
||||
<value>IsRegExp</value>
|
||||
</data>
|
||||
<data name=">>IsRegExp.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>IsRegExp.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>IsRegExp.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BrowseFolderButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BrowseFolderButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>328, 64</value>
|
||||
</data>
|
||||
<data name="BrowseFolderButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>24, 24</value>
|
||||
</data>
|
||||
<data name="BrowseFolderButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.Name" xml:space="preserve">
|
||||
<value>BrowseFolderButton</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="BrowseFileButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BrowseFileButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BrowseFileButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>352, 64</value>
|
||||
</data>
|
||||
<data name="BrowseFileButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>24, 24</value>
|
||||
</data>
|
||||
<data name="BrowseFileButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="BrowseFileButton.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
</data>
|
||||
<data name=">>BrowseFileButton.Name" xml:space="preserve">
|
||||
<value>BrowseFileButton</value>
|
||||
</data>
|
||||
<data name=">>BrowseFileButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BrowseFileButton.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BrowseFileButton.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="folderBrowserDialog.Description" xml:space="preserve">
|
||||
<value>Select the folder path to use for the filter</value>
|
||||
</data>
|
||||
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>186, 17</value>
|
||||
</metadata>
|
||||
<data name="openFileDialog.Filter" xml:space="preserve">
|
||||
<value>All files (*.*)|*.*</value>
|
||||
</data>
|
||||
<data name="openFileDialog.Title" xml:space="preserve">
|
||||
<value>Select the file to use for the filter</value>
|
||||
</data>
|
||||
<data name="HelpLink.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="HelpLink.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>304, 8</value>
|
||||
</data>
|
||||
<data name="HelpLink.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>52, 13</value>
|
||||
</data>
|
||||
<data name="HelpLink.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="HelpLink.Text" xml:space="preserve">
|
||||
<value>Filter help</value>
|
||||
</data>
|
||||
<data name=">>HelpLink.Name" xml:space="preserve">
|
||||
<value>HelpLink</value>
|
||||
</data>
|
||||
<data name=">>HelpLink.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>HelpLink.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>HelpLink.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="HelpImage.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>360, 8</value>
|
||||
</data>
|
||||
<data name="HelpImage.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
</data>
|
||||
<data name="HelpImage.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name=">>HelpImage.Name" xml:space="preserve">
|
||||
<value>HelpImage</value>
|
||||
</data>
|
||||
<data name=">>HelpImage.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>HelpImage.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>HelpImage.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>389, 126</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>FilterDialog</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog.Name" xml:space="preserve">
|
||||
<value>folderBrowserDialog</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>openFileDialog.Name" xml:space="preserve">
|
||||
<value>openFileDialog</value>
|
||||
</data>
|
||||
<data name=">>openFileDialog.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>FilterDialog</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,282 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class FilterEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FilterEditor));
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.listView = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.AddFilterButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.RemoveFilterButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.EditFilterButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.IncludeFolderButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.ExcludeFolderButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.MoveFilterUpButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.MoveFilterDownButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.MoveFilterTopButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.MoveFilterBottomButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.HelpButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.btnTestSearch = new System.Windows.Forms.Button();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.FilenameTester = new System.Windows.Forms.TextBox();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.TestResults = new System.Windows.Forms.PictureBox();
|
||||
this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.TestResults)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.listView);
|
||||
this.groupBox1.Controls.Add(this.toolStrip1);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// listView
|
||||
//
|
||||
this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1});
|
||||
resources.ApplyResources(this.listView, "listView");
|
||||
this.listView.FullRowSelect = true;
|
||||
this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
|
||||
this.listView.Name = "listView";
|
||||
this.listView.SmallImageList = this.imageList;
|
||||
this.listView.UseCompatibleStateImageBehavior = false;
|
||||
this.listView.View = System.Windows.Forms.View.Details;
|
||||
this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged);
|
||||
this.listView.DoubleClick += new System.EventHandler(this.listView_DoubleClick);
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
resources.ApplyResources(this.columnHeader1, "columnHeader1");
|
||||
//
|
||||
// imageList
|
||||
//
|
||||
this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
|
||||
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imageList.Images.SetKeyName(0, "globbing-include");
|
||||
this.imageList.Images.SetKeyName(1, "globbing-exclude");
|
||||
this.imageList.Images.SetKeyName(2, "regexp-include");
|
||||
this.imageList.Images.SetKeyName(3, "regexp-exclude");
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.AddFilterButton,
|
||||
this.RemoveFilterButton,
|
||||
this.EditFilterButton,
|
||||
this.toolStripSeparator3,
|
||||
this.IncludeFolderButton,
|
||||
this.ExcludeFolderButton,
|
||||
this.toolStripSeparator1,
|
||||
this.MoveFilterUpButton,
|
||||
this.MoveFilterDownButton,
|
||||
this.toolStripSeparator2,
|
||||
this.MoveFilterTopButton,
|
||||
this.MoveFilterBottomButton,
|
||||
this.HelpButton});
|
||||
resources.ApplyResources(this.toolStrip1, "toolStrip1");
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||
//
|
||||
// AddFilterButton
|
||||
//
|
||||
this.AddFilterButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
resources.ApplyResources(this.AddFilterButton, "AddFilterButton");
|
||||
this.AddFilterButton.Name = "AddFilterButton";
|
||||
this.AddFilterButton.Click += new System.EventHandler(this.AddFilterButton_Click);
|
||||
//
|
||||
// RemoveFilterButton
|
||||
//
|
||||
this.RemoveFilterButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
resources.ApplyResources(this.RemoveFilterButton, "RemoveFilterButton");
|
||||
this.RemoveFilterButton.Name = "RemoveFilterButton";
|
||||
this.RemoveFilterButton.Click += new System.EventHandler(this.RemoveFilterButton_Click);
|
||||
//
|
||||
// EditFilterButton
|
||||
//
|
||||
this.EditFilterButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
resources.ApplyResources(this.EditFilterButton, "EditFilterButton");
|
||||
this.EditFilterButton.Name = "EditFilterButton";
|
||||
this.EditFilterButton.Click += new System.EventHandler(this.EditFilterButton_Click);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
||||
//
|
||||
// IncludeFolderButton
|
||||
//
|
||||
this.IncludeFolderButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.IncludeFolderButton.Image = global::Duplicati.GUI.Properties.Resources.AddedFolder;
|
||||
resources.ApplyResources(this.IncludeFolderButton, "IncludeFolderButton");
|
||||
this.IncludeFolderButton.Name = "IncludeFolderButton";
|
||||
this.IncludeFolderButton.Click += new System.EventHandler(this.IncludeFolderButton_Click);
|
||||
//
|
||||
// ExcludeFolderButton
|
||||
//
|
||||
this.ExcludeFolderButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.ExcludeFolderButton.Image = global::Duplicati.GUI.Properties.Resources.DeletedFolder;
|
||||
resources.ApplyResources(this.ExcludeFolderButton, "ExcludeFolderButton");
|
||||
this.ExcludeFolderButton.Name = "ExcludeFolderButton";
|
||||
this.ExcludeFolderButton.Click += new System.EventHandler(this.ExcludeFolderButton_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||
//
|
||||
// MoveFilterUpButton
|
||||
//
|
||||
this.MoveFilterUpButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
resources.ApplyResources(this.MoveFilterUpButton, "MoveFilterUpButton");
|
||||
this.MoveFilterUpButton.Name = "MoveFilterUpButton";
|
||||
this.MoveFilterUpButton.Click += new System.EventHandler(this.MoveFilterUpButton_Click);
|
||||
//
|
||||
// MoveFilterDownButton
|
||||
//
|
||||
this.MoveFilterDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
resources.ApplyResources(this.MoveFilterDownButton, "MoveFilterDownButton");
|
||||
this.MoveFilterDownButton.Name = "MoveFilterDownButton";
|
||||
this.MoveFilterDownButton.Click += new System.EventHandler(this.MoveFilterDownButton_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
|
||||
//
|
||||
// MoveFilterTopButton
|
||||
//
|
||||
this.MoveFilterTopButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
resources.ApplyResources(this.MoveFilterTopButton, "MoveFilterTopButton");
|
||||
this.MoveFilterTopButton.Name = "MoveFilterTopButton";
|
||||
this.MoveFilterTopButton.Click += new System.EventHandler(this.MoveFilterTopButton_Click);
|
||||
//
|
||||
// MoveFilterBottomButton
|
||||
//
|
||||
this.MoveFilterBottomButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
resources.ApplyResources(this.MoveFilterBottomButton, "MoveFilterBottomButton");
|
||||
this.MoveFilterBottomButton.Name = "MoveFilterBottomButton";
|
||||
this.MoveFilterBottomButton.Click += new System.EventHandler(this.MoveFilterBottomButton_Click);
|
||||
//
|
||||
// HelpButton
|
||||
//
|
||||
this.HelpButton.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
|
||||
this.HelpButton.Image = global::Duplicati.GUI.Properties.Resources.help;
|
||||
resources.ApplyResources(this.HelpButton, "HelpButton");
|
||||
this.HelpButton.Name = "HelpButton";
|
||||
this.HelpButton.Click += new System.EventHandler(this.HelpButton_Click);
|
||||
//
|
||||
// btnTestSearch
|
||||
//
|
||||
resources.ApplyResources(this.btnTestSearch, "btnTestSearch");
|
||||
this.btnTestSearch.Name = "btnTestSearch";
|
||||
this.btnTestSearch.UseVisualStyleBackColor = true;
|
||||
this.btnTestSearch.Click += new System.EventHandler(this.btnTestSearch_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// FilenameTester
|
||||
//
|
||||
resources.ApplyResources(this.FilenameTester, "FilenameTester");
|
||||
this.FilenameTester.Name = "FilenameTester";
|
||||
this.FilenameTester.TextChanged += new System.EventHandler(this.FilenameTester_TextChanged);
|
||||
//
|
||||
// TestResults
|
||||
//
|
||||
resources.ApplyResources(this.TestResults, "TestResults");
|
||||
this.TestResults.Name = "TestResults";
|
||||
this.TestResults.TabStop = false;
|
||||
//
|
||||
// folderBrowserDialog
|
||||
//
|
||||
this.folderBrowserDialog.ShowNewFolderButton = false;
|
||||
//
|
||||
// FilterEditor
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.btnTestSearch);
|
||||
this.Controls.Add(this.TestResults);
|
||||
this.Controls.Add(this.FilenameTester);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Name = "FilterEditor";
|
||||
this.Load += new System.EventHandler(this.FilterEditor_Load);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.TestResults)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.ListView listView;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ImageList imageList;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton AddFilterButton;
|
||||
private System.Windows.Forms.ToolStripButton RemoveFilterButton;
|
||||
private System.Windows.Forms.ToolStripButton EditFilterButton;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton MoveFilterUpButton;
|
||||
private System.Windows.Forms.ToolStripButton MoveFilterDownButton;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripButton MoveFilterTopButton;
|
||||
private System.Windows.Forms.ToolStripButton MoveFilterBottomButton;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox FilenameTester;
|
||||
private System.Windows.Forms.PictureBox TestResults;
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
private System.Windows.Forms.ToolStripButton HelpButton;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripButton IncludeFolderButton;
|
||||
private System.Windows.Forms.ToolStripButton ExcludeFolderButton;
|
||||
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;
|
||||
private System.Windows.Forms.Button btnTestSearch;
|
||||
}
|
||||
}
|
||||
@@ -1,509 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
/// <summary>
|
||||
/// The filter editor is used to graphically edit a set of rules for including or excluding files and folders
|
||||
/// </summary>
|
||||
public partial class FilterEditor : UserControl
|
||||
{
|
||||
private string[] m_basepath;
|
||||
private string m_filter = "";
|
||||
private string m_dynamicFilter;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="FilterEditor"/> class.
|
||||
/// </summary>
|
||||
public FilterEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current filter list.
|
||||
/// </summary>
|
||||
/// <param name="includeDynamicFilters">if set to <c>true</c> include dynamic filters.</param>
|
||||
/// <returns>A list of filters</returns>
|
||||
private List<FilterDialog.FilterEntry> GetFilterList(bool includeDynamicFilters)
|
||||
{
|
||||
List<FilterDialog.FilterEntry> filters = new List<FilterDialog.FilterEntry>();
|
||||
foreach (ListViewItem lvi in listView.Items)
|
||||
filters.Add(lvi.Tag as FilterDialog.FilterEntry);
|
||||
|
||||
if (includeDynamicFilters && !string.IsNullOrEmpty(m_dynamicFilter))
|
||||
{
|
||||
List<KeyValuePair<bool, string>> tmp1 = Library.Utility.FilenameFilter.DecodeFilter(m_dynamicFilter);
|
||||
List<FilterDialog.FilterEntry> tmp2 = new List<FilterDialog.FilterEntry>();
|
||||
foreach (KeyValuePair<bool, string> k in tmp1)
|
||||
tmp2.Add(new FilterDialog.FilterEntry(k.Key, k.Value, null));
|
||||
tmp2.AddRange(filters);
|
||||
filters = tmp2;
|
||||
}
|
||||
|
||||
return filters;
|
||||
}
|
||||
|
||||
private string EncodeAsFilter(List<FilterDialog.FilterEntry> items)
|
||||
{
|
||||
List<KeyValuePair<bool, string>> r = new List<KeyValuePair<bool, string>>();
|
||||
foreach (FilterDialog.FilterEntry f in items)
|
||||
r.Add(new KeyValuePair<bool, string>(f.Include, f.Filter));
|
||||
|
||||
return Duplicati.Library.Utility.FilenameFilter.EncodeAsFilter(r);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the filter string as displayed in the UI
|
||||
/// </summary>
|
||||
[DefaultValue("")]
|
||||
public string FilterXml
|
||||
{
|
||||
get { return EncodeFilterAsXml(GetFilterList(false)); }
|
||||
set { m_filter = value; RefreshList(); FilenameTester_TextChanged(null, null); }
|
||||
}
|
||||
|
||||
|
||||
private string EncodeFilterAsXml(List<FilterDialog.FilterEntry> list)
|
||||
{
|
||||
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
|
||||
System.Xml.XmlNode root = doc.AppendChild(doc.CreateElement("root"));
|
||||
|
||||
foreach (FilterDialog.FilterEntry f in list)
|
||||
{
|
||||
System.Xml.XmlNode filter = root.AppendChild(doc.CreateElement("filter"));
|
||||
filter.Attributes.Append(doc.CreateAttribute("include")).Value = f.Include.ToString();
|
||||
filter.Attributes.Append(doc.CreateAttribute("filter")).Value = f.Filter;
|
||||
filter.Attributes.Append(doc.CreateAttribute("globbing")).Value = f.Globbing;
|
||||
}
|
||||
|
||||
return doc.OuterXml;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the dynamic filter, which is applied to the test area, but not visible in the list
|
||||
/// </summary>
|
||||
[DefaultValue("")]
|
||||
public string DynamicFilter
|
||||
{
|
||||
get { return m_dynamicFilter; }
|
||||
set { m_dynamicFilter = value; FilenameTester_TextChanged(null, null); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the list of source folders
|
||||
/// </summary>
|
||||
[DefaultValue(null)]
|
||||
public string[] BasePath
|
||||
{
|
||||
get { return m_basepath; }
|
||||
set { m_basepath = value; FilenameTester_TextChanged(null, null); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Refreshes the UI with the values found in the filter variable
|
||||
/// </summary>
|
||||
private void RefreshList()
|
||||
{
|
||||
listView.Items.Clear();
|
||||
foreach (FilterDialog.FilterEntry f in DecodeFilter(m_filter))
|
||||
listView.Items.Add(f.CreateListViewItem());
|
||||
|
||||
if (listView.Items.Count > 0)
|
||||
listView.Items[0].Selected = true;
|
||||
}
|
||||
|
||||
private List<FilterDialog.FilterEntry> DecodeFilter(string filter)
|
||||
{
|
||||
List<FilterDialog.FilterEntry> res = new List<FilterDialog.FilterEntry>();
|
||||
if (string.IsNullOrEmpty(filter))
|
||||
return res;
|
||||
|
||||
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
|
||||
doc.LoadXml(filter);
|
||||
foreach (System.Xml.XmlNode n in doc.SelectNodes("root/filter"))
|
||||
{
|
||||
res.Add(new FilterDialog.FilterEntry(
|
||||
bool.Parse(n.Attributes["include"].Value),
|
||||
n.Attributes["filter"].Value,
|
||||
n.Attributes["globbing"].Value
|
||||
));
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the TextChanged event of the FilenameTester control.
|
||||
/// Used to update the status and tooltip to show if the current path is included or excluded
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void FilenameTester_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
//Basic sanity check
|
||||
if (FilenameTester.Text.Trim().Length == 0 || m_basepath == null || m_basepath.Length == 0 || (m_basepath.Length == 1 && string.IsNullOrEmpty(m_basepath[0])))
|
||||
{
|
||||
SetTooltipMessage("");
|
||||
TestResults.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
string filename = FilenameTester.Text;
|
||||
|
||||
//Prevent exceptions based on invalid input
|
||||
if (filename.IndexOfAny(System.IO.Path.GetInvalidPathChars()) >= 0)
|
||||
{
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.InvalidCharsInFilenameError, filename));
|
||||
TestResults.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//Certain paths cause exceptions anyway
|
||||
System.IO.Path.GetFullPath(filename);
|
||||
}
|
||||
catch
|
||||
{
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.InvalidCharsInFilenameError, filename));
|
||||
TestResults.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
//System.IO.Path.IsPathRooted returns true for filenames starting with a backslash on windows
|
||||
if (System.IO.Path.GetFullPath(filename) != filename)
|
||||
{
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.FilepathIsNotAbsoluteError, filename));
|
||||
TestResults.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
//Find the source folder that matches the path entered
|
||||
string basepath = null;
|
||||
foreach (string s in m_basepath)
|
||||
if (filename.StartsWith(Library.Utility.Utility.AppendDirSeparator(s), Library.Utility.Utility.ClientFilenameStringComparision))
|
||||
{
|
||||
basepath = s;
|
||||
break;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(basepath))
|
||||
{
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.FilenameIsNotInAnyRootFolder, filename, m_basepath));
|
||||
TestResults.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (basepath.Equals(filename, Library.Utility.Utility.ClientFilenameStringComparision))
|
||||
{
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.FolderIsRootFolder, filename));
|
||||
TestResults.Image = imageList.Images[0];
|
||||
TestResults.Visible = true;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//Build a list of parent folders to check
|
||||
List<string> parentFolders = new List<string>();
|
||||
string folder = filename;
|
||||
while (folder.Length > basepath.Length)
|
||||
{
|
||||
folder = System.IO.Path.GetDirectoryName(folder);
|
||||
parentFolders.Add(Duplicati.Library.Utility.Utility.AppendDirSeparator(folder));
|
||||
}
|
||||
|
||||
//Work from the source towards the path
|
||||
parentFolders.Reverse();
|
||||
|
||||
//Test if any of the parent folders are excluded
|
||||
string compact = EncodeAsFilter(GetFilterList(true));
|
||||
Library.Utility.FilenameFilter fn = new Duplicati.Library.Utility.FilenameFilter(Duplicati.Library.Utility.FilenameFilter.DecodeFilter(compact));
|
||||
Library.Utility.IFilenameFilter match;
|
||||
foreach (string s in parentFolders)
|
||||
{
|
||||
//Skip rootpath
|
||||
if (basepath.Equals(s, Library.Utility.Utility.ClientFilenameStringComparision))
|
||||
continue;
|
||||
|
||||
if (!fn.ShouldInclude(basepath, s, out match))
|
||||
{
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.FolderIsExcluded, s, ((Library.Utility.RegularExpressionFilter)match).Expression.ToString()));
|
||||
TestResults.Image = imageList.Images[1];
|
||||
TestResults.Visible = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//Update image based on the inclusion status
|
||||
TestResults.Image = imageList.Images[fn.ShouldInclude(basepath, filename, out match) ? 0 : 1];
|
||||
|
||||
//Set the tooltip to inform the user of the result
|
||||
if (match == null)
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.FileIsIncludedDefault, filename));
|
||||
else if (match.Include)
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.FileIsIncluded, filename, ((Library.Utility.RegularExpressionFilter)match).Expression.ToString()));
|
||||
else
|
||||
SetTooltipMessage(string.Format(Strings.FilterEditor.FileIsExcluded, filename, ((Library.Utility.RegularExpressionFilter)match).Expression.ToString()));
|
||||
|
||||
TestResults.Visible = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the tooltip message.
|
||||
/// </summary>
|
||||
/// <param name="message">The message to show as the tooltip.</param>
|
||||
private void SetTooltipMessage(string message)
|
||||
{
|
||||
toolTip.SetToolTip(FilenameTester, message);
|
||||
toolTip.SetToolTip(label1, message);
|
||||
toolTip.SetToolTip(TestResults, message);
|
||||
if (TestResults != null && this.Visible)
|
||||
toolTip.Show(message, TestResults, 5000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the SelectedIndexChanged event of the listView control.
|
||||
/// Used to update the enabled state of the buttons.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void listView_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
RemoveFilterButton.Enabled =
|
||||
EditFilterButton.Enabled = listView.SelectedItems.Count == 1;
|
||||
|
||||
MoveFilterUpButton.Enabled =
|
||||
MoveFilterTopButton.Enabled = listView.SelectedItems.Count == 1 && listView.SelectedItems[0].Index != 0;
|
||||
|
||||
MoveFilterDownButton.Enabled =
|
||||
MoveFilterBottomButton.Enabled = listView.SelectedItems.Count == 1 && listView.SelectedItems[0].Index != listView.Items.Count - 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the RemoveFilterButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void RemoveFilterButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
while (listView.SelectedItems.Count > 0)
|
||||
listView.Items.Remove(listView.SelectedItems[0]);
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the EditFilterButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void EditFilterButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listView.SelectedItems.Count == 1 && listView.SelectedItems[0].Tag is FilterDialog.FilterEntry)
|
||||
{
|
||||
FilterDialog dlg = new FilterDialog((FilterDialog.FilterEntry)listView.SelectedItems[0].Tag);
|
||||
if (dlg.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
listView.SelectedItems[0].Tag = dlg.Filter;
|
||||
listView.SelectedItems[0].Text = dlg.Filter.DisplayValue;
|
||||
listView.SelectedItems[0].ImageKey = dlg.Filter.ImageKey;
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the MoveFilterUpButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void MoveFilterUpButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listView.SelectedItems.Count == 1)
|
||||
{
|
||||
ListViewItem lvi = listView.SelectedItems[0];
|
||||
int index = listView.SelectedItems[0].Index;
|
||||
listView.Items.RemoveAt(index);
|
||||
listView.Items.Insert(index - 1, lvi);
|
||||
lvi.Selected = true;
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the MoveFilterDownButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void MoveFilterDownButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listView.SelectedItems.Count == 1)
|
||||
{
|
||||
ListViewItem lvi = listView.SelectedItems[0];
|
||||
int index = listView.SelectedItems[0].Index;
|
||||
listView.Items.RemoveAt(index);
|
||||
listView.Items.Insert(index + 1, lvi);
|
||||
lvi.Selected = true;
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the MoveFilterTopButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void MoveFilterTopButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listView.SelectedItems.Count == 1)
|
||||
{
|
||||
ListViewItem lvi = listView.SelectedItems[0];
|
||||
int index = listView.SelectedItems[0].Index;
|
||||
listView.Items.RemoveAt(index);
|
||||
listView.Items.Insert(0, lvi);
|
||||
lvi.Selected = true;
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the MoveFilterBottomButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void MoveFilterBottomButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listView.SelectedItems.Count == 1)
|
||||
{
|
||||
ListViewItem lvi = listView.SelectedItems[0];
|
||||
int index = listView.SelectedItems[0].Index;
|
||||
listView.Items.RemoveAt(index);
|
||||
listView.Items.Insert(listView.Items.Count, lvi);
|
||||
lvi.Selected = true;
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the AddFilterButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void AddFilterButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
FilterDialog dlg = new FilterDialog(new FilterDialog.FilterEntry(false, null, null));
|
||||
if (dlg.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
listView.Items.Add(dlg.Filter.CreateListViewItem());
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Load event of the FilterEditor control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void FilterEditor_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (listView.Items.Count != 0)
|
||||
listView.Items[0].Selected = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the DoubleClick event of the listView control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void listView_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (EditFilterButton.Enabled)
|
||||
EditFilterButton.PerformClick();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the help button
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void HelpButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Duplicati.Library.Utility.UrlUtillity.OpenUrl("http://code.google.com/p/duplicati/wiki/FilterUsage");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the IncludeFolderButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void IncludeFolderButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
folderBrowserDialog.Description = Strings.FilterEditor.IncludeFolderBrowseTitle;
|
||||
if (folderBrowserDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
string path = Duplicati.Library.Utility.Utility.AppendDirSeparator(folderBrowserDialog.SelectedPath);
|
||||
FilterDialog.FilterEntry fe = new FilterDialog.FilterEntry(true, Duplicati.Library.Utility.FilenameFilter.ConvertGlobbingToRegExp(path), path);
|
||||
listView.Items.Add(fe.CreateListViewItem());
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Click event of the ExcludeFolderButton control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void ExcludeFolderButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
folderBrowserDialog.Description = Strings.FilterEditor.ExcludeFolderBrowseTitle;
|
||||
if (folderBrowserDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
string path = Duplicati.Library.Utility.Utility.AppendDirSeparator(folderBrowserDialog.SelectedPath);
|
||||
FilterDialog.FilterEntry fe = new FilterDialog.FilterEntry(false, Duplicati.Library.Utility.FilenameFilter.ConvertGlobbingToRegExp(path), path);
|
||||
listView.Items.Add(fe.CreateListViewItem());
|
||||
FilenameTester_TextChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnTestSearch_Click(object sender, EventArgs e) {
|
||||
TestSearchSelection dlg = new TestSearchSelection();
|
||||
dlg.Paths = BasePath;
|
||||
dlg.Filters = GetFilterList(false);
|
||||
dlg.DynamicFilters = m_dynamicFilter;
|
||||
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
listView.Items.Clear();
|
||||
foreach (var filter in dlg.Filters)
|
||||
listView.Items.Add(filter.CreateListViewItem());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,742 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="columnHeader1.Width" type="System.Int32, mscorlib">
|
||||
<value>420</value>
|
||||
</data>
|
||||
<data name="listView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="listView.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 41</value>
|
||||
</data>
|
||||
<data name="listView.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>498, 164</value>
|
||||
</data>
|
||||
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>20, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACg
|
||||
CwAAAk1TRnQBSQFMAgEBBAEAAUQBAAFEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wA7AAMTARoBLAIr
|
||||
AUMBLAIrAUMBLAIrAUPwAANVAbIBUQHiAYwB/wFQAeEBiQH/AUIByAFqAf/wAANVAbIBRQHUAWUB/wE8
|
||||
AcsBTAH/AUIByQFqAf9cAAEoAaQBKAH/ASgBpAEoAf8MAAEtAZoBLgH2ASgBpAEoAf8BKgGiASsB/QEo
|
||||
AaQBKAH/ASIBJgEiATEIAAMIAQsBKAGkASgB/wEoAaQBKAH/BAACKAGkAf8CKAGkAf8MAAItAZ0B9gIo
|
||||
AaQB/wIqAaMB/QIoAaQB/wIiASYBMQgAAggBCQELAigBpAH/AigBpAH/GAADVQGyAU0B2gFvAf8BPQHM
|
||||
AU4B/wFCAcoBagH/XAABQgHIAWUB/wFNAdgBfgH/CAABJgErASYBOAFGAdEBaQH/AT4BxQFXAf8BLwGW
|
||||
ATMB7gFNAdwBeAH/ASoBpwEtAf8IAAEqAaIBKwH9AVsB6wGfAf8BKAGkASgB/wQAAkoByAH/AlsB2gH/
|
||||
CAACJgErATgCUAHTAf8CRQHGAf8BLwExAZgB7gJZAd0B/wIrAacB/wgAAioBowH9Am0B7AH/AikBogH+
|
||||
GAADVQGyAVkB4wGBAf8BSQHUAVsB/wFDAcsBawH/XAABQQHHAWIB/wFMAdYBeQH/CAABKAGkASgB/wFK
|
||||
AdkBcQH/ATABmAEzAfEEAAEtAawBNAH/AUsB2gFzAf8BOgGHAT0BzgFAAWEBRAGMAVIB4AGIAf8BPAHA
|
||||
AVYB/wEMAQ0BDAEQBAACSgHIAf8CWgHYAf8IAAIoAaQB/wFVAVQB2gH/ATABMQGaAfEEAAIvAa0B/wJX
|
||||
AdwB/wE6AT0BiAHOAUABQgFhAYwCYgHjAf8CRAHCAf8CDAENARAIAAE+AZgBPAH+AUwB0wFxAf8BTAHU
|
||||
AXMB/wFNAdQBcwH/AUwB0wFyAf8BZQHqAYQB/wFYAd8BawH/AVYB4wGQAf8BQwHKAWkB/wFBAcgBaAH/
|
||||
AUABxgFmAf8BQAHFAWYB/wMwAUwMAANIAYQCSAHTAf8CSgHUAf8CTAHUAf8CTQHTAf8CTAHQAf8CSQHM
|
||||
Af8CRQHHAf8CQQHDAf8CPwHCAf8CPwHCAf8CLgGoAf8MAAFBAcYBYQH/AUsB1QF3Af8BKQExASkCPwF0
|
||||
AUUBrwFGAdIBaAH/AToBwAFNAf8BDgEPAQ4BEwQAATUBQgE3AVoBQQHMAV4B/wE9AcUBVgH/ATUBtwFF
|
||||
Af8BUgHgAYcB/wFBAW0BRQGhCAACSgHIAf8CWAHXAf8CKQExAj8BQgF2Aa8CTwHUAf8CPwHCAf8CDgEP
|
||||
ARMEAAE1ATYBQwFaAkoBzgH/AkUBxwH/AjoBuAH/AmIB4wH/AUEBRAFvAaEMAAFBAZ0BQQH+AWEB2gF0
|
||||
Af8BagHkAYEB/wFwAewBhgH/AXMB8AGKAf8BcAHvAYcB/wFnAeoBgQH/AVoB4QFuAf8BTQHXAV8B/wFB
|
||||
Ac4BUgH/ATwBywFMAf8BTwHgAYcB/wMwAUwMAANIAYQCWgHXAf8CYQHWAf8CbQHkAf8CdQHuAf8CdQHw
|
||||
Af8CaQHpAf8CVgHcAf8CRgHQAf8CQQHMAf8CQQHMAf8COAG3Af8MAAFAAcYBYAH/AVUB5QGPAf8BUQHg
|
||||
AYQB/wFNAdwBeAH/AUMBzgFgAf8BNAGTATcB5gwAATIBlgE1AesBSwHZAXIB/wFPAd4BfQH/ASgBpAEo
|
||||
Af8MAAJKAccB/wJnAecB/wJgAeIB/wJZAd4B/wFMAUsB0AH/ATQBNgGUAeYMAAEyATUBlwHrAlcB2wH/
|
||||
Al0B4AH/AigBpAH/EAABQQGeAUEB/gFaAdYBgQH/AWIB3wGFAf8BaQHnAY0B/wFuAe4BkwH/AXMB7wGK
|
||||
Af8BcQHwAYgB/wFpAewBhgH/AV4B5wGCAf8BUwHeAXUB/wFJAdcBagH/AVAB4QGKAf8DMAFMDAADSAGE
|
||||
AlsB2gH/AmIB3QH/AmwB6AH/AnIB8AH/AnIB8gH/AmkB7AH/AloB4gH/AkwB2AH/AkcB1AH/AkcB1AH/
|
||||
AjgBtwH/DAABQAHGAWAB/wFKAdUBdQH/ASgBpAEoAf8BKAGlASkB/wFHAdUBaQH/ATgBvwFKAf8DCQEM
|
||||
CAABPwFcAUQBhQFHAdQBagH/AU8B3gF8Af8BLQGeAS8B9wwAAkoBxwH/AlcB1gH/AigBpAH/AikBpQH/
|
||||
AVIBUQHXAf8CPgHBAf8DCQEMCAABPwFBAV4BhQJSAdYB/wJdAeAB/wEtAS4BnwH3EAABVgJVAbEDVQG1
|
||||
A1UBtQNVAbUBVwFVAU0B6AFuAe0BkwH/AXMB7wGJAf8BTwHWAYEB/wNVAbUDVQG1A1UBtQNVAbUDGAEh
|
||||
DAADLQFGA1UBtQNVAbUDVQG1A1UBtQNVAbUDVQG1A1UBtQNVAbUDVQG1A1UBtQFWAlUBtAwAAUEBxgFg
|
||||
Af8BSgHVAXYB/wgAATEBswE8Af8BRgHVAWYB/wE2AUYBOAFfBAADBAEGATEBswE8Af8BSgHYAXAB/wE7
|
||||
AcEBUwH/AU4B2wF9Af8BPQFWAUEBeQgAAkoByAH/AlgB1wH/CAACNQG0Af8CUAHXAf8BNgE3AUcBXwQA
|
||||
AwQBBgI1AbQB/wJXAdsB/wJDAcMB/wJdAd4B/wE9AUABVwF5HAADVQGyAWcB5QGLAf8BbgHoAYMB/wFP
|
||||
AdYBgQH/XAABQQHHAWIB/wFLAdYBeAH/AUEBcQFBAZ8BOgGGAUAB0AFDAc4BYwH/AUYB0wFnAf8BJgEr
|
||||
ASYBOAQAASkBnQErAfsBSgHZAXEB/wEoAaQBKAH/AT8BeAFEAbQBVAHjAYwB/wE1AbYBRQH/AwMBBAQA
|
||||
AkoByAH/AloB2AH/AkEBcQGfAToBPgGJAdACTgHQAf8CUQHVAf8CJgErATgEAAEpASoBngH7AlcB3AH/
|
||||
AigBpAH/AT8BQgF6AbQCZgHmAf8COgG3Af8DAwEEGAADVQGyAV4B2wGBAf8BZQHeAYAB/wFOAdUBdwH/
|
||||
XAABQgHIAWQB/wFZAekBmQH/AVUB5QGPAf8BUgHhAYYB/wFOAdwBewH/ASkBoAEqAf4EAAE/AV0BQwGE
|
||||
AUgB1gFuAf8BOAG8AUsB/wEOAQ8BDgETBAABKAGlASkB/wFbAeoBnQH/ASoBnQErAfkEAAJKAcgB/wJs
|
||||
AesB/wJoAegB/wJjAeQB/wJdAeAB/wIpAaIB/gQAAT8BQQFeAYQCVQHZAf8CPwG+Af8CDgEPARMEAAIp
|
||||
AaUB/wJtAewB/wEqASsBngH5GAADVQGyAVUB0gF2Af8BWgHTAW0B/wFNAdQBdQH/XAABPgGBAT4BuwE+
|
||||
AYQBPgG/AT4BhAE+Ab8BPgF8AUMBuwE4AUoBOgFlCAABMQE9ATMBUQE+AYIBPgG/AT0BVgFAAXgIAAER
|
||||
ARIBEQEXAT4BggE+Ab8BQQF2AUIBrAQAAj4BgQG7Aj4BhAG/Aj4BhAG/AT4BQAF/AbsBOAE5AUoBZQgA
|
||||
ATEBMgE9AVECPgGCAb8BPQE/AVcBeAgAAhEBEgEXAj4BggG/AkEBeAGsGAADVAGrATABuQE1Af8BMAG4
|
||||
ATUB/wEuAbUBMQH//wD/ANoAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYAA/+BAAj/
|
||||
AfwBPwb/AfwBPwb/AfwBPwL/AZwBGAGcARgB/AE/Av8BmAEYAZgBGAH8AT8C/wGYAYABmAGAAcABAQHA
|
||||
AQMBgAGBAYABgQHAAQEBwAEDAYEBwwGBAcMBwAEBAcABAwGAAcMBgAHDAcABAQHAAQMBmAGBAZgBgQH8
|
||||
AT8C/wSAAfwBPwL/AYEBCAGBAQgB/AE/Av8BgwEYAYMBGAH8AT8W/ws=
|
||||
</value>
|
||||
</data>
|
||||
<data name="listView.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>listView.Name" xml:space="preserve">
|
||||
<value>listView</value>
|
||||
</data>
|
||||
<data name=">>listView.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>listView.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>listView.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>3, 16</value>
|
||||
</metadata>
|
||||
<data name="AddFilterButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIMSURBVDhPjZPvS1NhFMf9S5bOeb0rJ5orKElRQ4JehGQx
|
||||
bBSTWQvsml4ql4itDcVYLVySkowKDKEyfFHRjCCWu4lztzbpB4HsdeDf8K3vgd0aa9UDB84995zPc349
|
||||
VVUVjjfuQUekVYR6Jb8y+55gLY7c64CevIDJdEiE+uH5Q9h91VEZpD+8iIYpB4aSAcTMG5jdimHu8wzu
|
||||
mjOIb91ENDuJwAuf+NC37Ob6sA2+532Y2BjFVP4aprNhvC+kRQiJ5MZxfUND38pxKBFbKYBpH3zQjMHU
|
||||
AEazw5jIBREyxlA8idw8xj9ehr45iPNv+rE/4QJjrCyc0Rp0PTkA/5oXWuasQIIp3QLMmXGx8Z8v5UHr
|
||||
cjMYIwB2uHGhDm3P3Diz2ouhtwFcWfspr4YtwB3jtth5O30IYIxMh2Pih/upE/dzC1ZQJYU9aXmsSgxj
|
||||
LQCNbNa/jlF4VwoolkBA72o3gukAwhkN08aIxVrMz8oEWBpLKGZgLRgbsm9JQedrFT3rLpw2m+A33BYg
|
||||
9qUfpzabcMxwoT3pRMsj5VcT2UiOZG/Cge5kHTymgnNfVWgfXCUA/ycVJzL16HqpSP0lYySEi9S+ZId3
|
||||
3Q5t2w59uxqFnbzIrW89Yjtp1IoPfcs2keup/ga5VNiF0HebCGEEty3WiM8fV7lIZGqNUZs4H12pFqFO
|
||||
W1naf3ui//ucfwCJ3vHLSjlN7AAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="AddFilterButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="AddFilterButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="AddFilterButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton1</value>
|
||||
</data>
|
||||
<data name="AddFilterButton.ToolTipText" xml:space="preserve">
|
||||
<value>Add a new filter</value>
|
||||
</data>
|
||||
<data name="RemoveFilterButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="RemoveFilterButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHfSURBVDhPjVPfS1NhGPZvCbpYY1ITm5rMHxETlFYiwkCE
|
||||
SIc1XYtaY00cBssNwekIm4MKCYIu8yaoq67EC0EQbHVRi5hehGebLfzROk/neccmx+PUDx54z/M+33Pe
|
||||
9/ver66uxnrnHsTbnk4B41o6A/+mqR7L/T3IhB9hazYm+D7+QLjXNkttow8hPz5eMYk4v5DAn1dJ7C6m
|
||||
BMUX81DmZ5Dxe/C+2QJqDX9eumzCz3vD+D39BEhE8S81p8PB3BR2ohP4cWcQ1OoMWPaXbjsKIR9KkcdQ
|
||||
45GqCZJxicmpk37kA6NIO1r07XzSytrsc2D/4YiIEAtXTSqbhdNyRe8tZG9eBfdIFTzh9TYrtjWSSUWr
|
||||
Qnk6bsRkAErQi1/3h0TLPXI7vCZ+7Dlt2H75HKctZXUFiqMJ6Q6rXLEYfOu6KCRP+rRlMGAZG5obDQq3
|
||||
e5GLBpGbnSjjmR5sjS1QW22B58ADyV5rxP4NG9SBVsDdBozZD3FXi93tkmOr1FYPkQa8RraRczagNHAJ
|
||||
qtsKeBp0IMccNdQappLDwcSOy4LSsAl/veeg+s4LGJNjjhrDILEKjicTX69fgOIyY3ekvJFgTO5zl0U0
|
||||
x45yZTRZGt/EmsMsZgRjcic+pqOP46zP+T9spgnV3QfwFQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="RemoveFilterButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="RemoveFilterButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="RemoveFilterButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton2</value>
|
||||
</data>
|
||||
<data name="RemoveFilterButton.ToolTipText" xml:space="preserve">
|
||||
<value>Remove the selected filter</value>
|
||||
</data>
|
||||
<data name="EditFilterButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="EditFilterButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG1SURBVDhPlVPBSgJRFPU3WrTpA1q4jtZSq4igaNXCpbYN
|
||||
WtaqFkJWhJFUC22GqCEqysrMSMU0MhXDpNJMrdFUpFJcnLyvnpWOQQOHO2/m3XPPue8+lerr8fnC8Hp9
|
||||
8F9cssjX9E6QpC3wvYqxXKmiWKq0xLHDDbv9pDUJEeQKZQYikvOfkX9zudxIPiRbk3ACnvQzmUgCwSg2
|
||||
NncgzptgGxxqVsItUGVelcfn3CsIsdsUTnt6EdVo4Oju/k3CFaQyBbbxOpqog6/DoSCcCyZIajU2tNpm
|
||||
ApIdf3ypE/DEqM+GuxM9qA+iuA5h2qBsgSQ3KoiHnCgeq5GW2hCxDLMmKp4Gt8AVUHWqnDvoZMlPpnbI
|
||||
4gBTSEqaZoETpOU3ZuFnZUpOrPSy4YrFs38TPKYLoGbld78rZ6z9cLkD2D86x6knpDyVpICOkCRGrgTI
|
||||
/n68rHYgbOyCxbKGmbllGIxmCJt21sgmC+/lKpj8mkTvoQ5hxwiEqT7odaMYG59gBJR8HrhXbmKdoOZ/
|
||||
1jCJ+YUlLJqt2N47Y0mhmywitwXcJUvKPeC3jkePx4tGUPcJZOnPm/mfnx/Qo1STSDASFQAAAABJRU5E
|
||||
rkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="EditFilterButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="EditFilterButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="EditFilterButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton1</value>
|
||||
</data>
|
||||
<data name="EditFilterButton.ToolTipText" xml:space="preserve">
|
||||
<value>Edit the selected filter</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>6, 25</value>
|
||||
</data>
|
||||
<data name="IncludeFolderButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="IncludeFolderButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="IncludeFolderButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton1</value>
|
||||
</data>
|
||||
<data name="IncludeFolderButton.ToolTipText" xml:space="preserve">
|
||||
<value>Adds an included folder to the list</value>
|
||||
</data>
|
||||
<data name="ExcludeFolderButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="ExcludeFolderButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="ExcludeFolderButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton2</value>
|
||||
</data>
|
||||
<data name="ExcludeFolderButton.ToolTipText" xml:space="preserve">
|
||||
<value>Adds an excluded folder to the list</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>6, 25</value>
|
||||
</data>
|
||||
<data name="MoveFilterUpButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="MoveFilterUpButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFZSURBVDhPY2AgAKbenPqfkBqc8klnXP9nnPP433e1j3RD
|
||||
QJo7HiSDcd5Fn/9dF7uINwSmufpB+v+Gpzn/p7zL/59zzf1/12kiDEHX3ALU3Pm+5P/Mz4UQl+AzBKa5
|
||||
9mEG2GaY5o4PRWB237vM/yA1WA1B1wyyFYRhmmteZfwvf5b8v+5RxP+UE06ohjjuNftfcz3wf8394P9t
|
||||
96PAfgZpBOGmt7n/QZpBGkHyBRc8/xeed//vuMEIu0u897iA/QvTXPUi7X/egyiwAe5bbAnHRNiBALAB
|
||||
IJsrnqeANSffDPhfdifgv+8WJ+IMmPYhC+zfnPuR/xNv+P8Pu+D6P/+GF3EGBO/0/d/3Ovl/1r3w/wnX
|
||||
/cCafU/bgtMBUS4AGdDyNPp/3DUfuGaSDQCFdsh5Z7DNMAxygc9GR8JhAHbBg0Cwk5Fx7V1f4gxI3psE
|
||||
9is6BtkevikMwwUAbadPHR9BO40AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="MoveFilterUpButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="MoveFilterUpButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="MoveFilterUpButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton3</value>
|
||||
</data>
|
||||
<data name="MoveFilterUpButton.ToolTipText" xml:space="preserve">
|
||||
<value>Move the selected filter up</value>
|
||||
</data>
|
||||
<data name="MoveFilterDownButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="MoveFilterDownButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF9SURBVDhPlZPbSgJhFIV7pm66soMZosQ0CCp2onHCmLTS
|
||||
yEPdGFFmBToGBfUS3XUReJF0pCSzRIXSiA4iItYLrNoTM4kmTgMbZuBf31p77/k7Ohoeb8oLW8KslDVh
|
||||
Ut7tJxwazzd9207N2MpZEMiyWM2PYrPIQXx1YL86AzauUwH4dl95tGIqaYE7M47FggPBFyd2SoJ6QPhh
|
||||
TBGvld2g2vvwqAdEnnnJmYTLFSdCFc//ABSXxCTcqC1Itfs5B+ZIq24GNDASy4D12jyiVUEdgIkbpbiy
|
||||
M7WwVHIgVOJgONQ0J4jltqGNd0lr82dN0gYoLgFk8ezTMHwFE3x3RvAXOgiX/eg96ETwLPgDjGQicN0O
|
||||
NjkH3idBYj7PwpbWg73ugT2tg+O871cs/0nRe1GCkDs5+994uIo2cLkhWFIDYK66W4tliJgWISQNCJd5
|
||||
TBesmMgy6sX1EOqTelbt3HghKMnIsQZCRt8+dqvbJd7EJMifA2t7JesOKKtqIfoCZo5mLImpLeYAAAAA
|
||||
SUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="MoveFilterDownButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="MoveFilterDownButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="MoveFilterDownButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton4</value>
|
||||
</data>
|
||||
<data name="MoveFilterDownButton.ToolTipText" xml:space="preserve">
|
||||
<value>Move the selected filter down</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>6, 25</value>
|
||||
</data>
|
||||
<data name="MoveFilterTopButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="MoveFilterTopButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGSSURBVDhPlZPNSwJhEMb9r7xE1kHqYh8gRBmakZJYm5VJ
|
||||
mBhEB7PMj0ADKSz0kHSKukRJQZ40ychDRnSoFssEqz9gcmZ5daVdthaGPez7/J5n5p1VqRSeaPIelM7I
|
||||
fu9150C3UoTgTun/EBRP7lWAi9UIsr59+3cIE88F3sCxVQNn6kuARG+UIT2eAjmj2OR5ALP3EVzROswe
|
||||
ChB/+Foegs5c5AO4tRcwLZWh05aFLnuWQJhkJvkJeEYSwpwdfl4QT1yAbb8GU8kqQQzuMsEtu+8ECQRz
|
||||
rSRqYwb0kTLVoK8E3ZZMsw1sZT79TRDdchH6/XdU6oGjdgjepcuXB435DMYOeMAkKMb+2QwQPL1wKT8D
|
||||
dLHHhQFiOUPVJgAhXLpO6SQXB8VSziwBDpFmkKpSyjYIDgzF1gRPg8PDTIhvEjcWCsXGxCtVh/64BXFv
|
||||
FICVZvSU7lzsjAAEo2jRe9WsUDj/u50+63kbAGPbNit0fdrhE+VNFAPIuSEex8WK86AdEsWW+wUZQCw2
|
||||
rD7BSOxZEvADn5ifu693HIQAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="MoveFilterTopButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="MoveFilterTopButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="MoveFilterTopButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton5</value>
|
||||
</data>
|
||||
<data name="MoveFilterTopButton.ToolTipText" xml:space="preserve">
|
||||
<value>Move the selected filter to the top</value>
|
||||
</data>
|
||||
<data name="MoveFilterBottomButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="MoveFilterBottomButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGUSURBVDhPlZPLSwJhFMX7q2oRtehBUeEiUnNhY1RSLXyQ
|
||||
CVGGFiVlJFkpBS5qMRC0aBcYteiFIVJI0QvFonSR2esPOHm/+tSZpsyByzDDPb9z7v1mKipkl9p6iMH1
|
||||
Z1g9adi8T7AvZmH3v8Ky+Y4Gww7k/T+eO0z7MItZJrYufYmphsWP/wPIjTtzAL2r04eUE7j9MfCiJgb4
|
||||
dqY7JaGxqrXbmJ49YTUxeVyA1QghCOIjjGKGlT34lgeYfBlQ9S2kIaykoF6OQx1MMJhk/vqB3OwbLxJn
|
||||
cidxz8wDuqbuoHHeQhtIggwVl0mQ4vhcbHDflxYT0eGJMjpBSGycS6FYXGsIwTy0J3X3rV2hSr8LzXwC
|
||||
7Z5LtLnOQI20C503CZ0rzmYncKPlCC3OKKtK1VZhkd7gBRPSWdPc3aM3DEJCLm7tDTMYGTWPReAYP5Al
|
||||
WY1JIMLINds0gUqK+UZ9OQjRKQntoNN2DlV/5G9n+XFwCH04dHwUm3ahGPu3H4MgTbYwm79scX6cwCnb
|
||||
elnOSokk37xCwycvE6v477beNgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="MoveFilterBottomButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="MoveFilterBottomButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 22</value>
|
||||
</data>
|
||||
<data name="MoveFilterBottomButton.Text" xml:space="preserve">
|
||||
<value>toolStripButton6</value>
|
||||
</data>
|
||||
<data name="MoveFilterBottomButton.ToolTipText" xml:space="preserve">
|
||||
<value>Move the selected filter to the bottom</value>
|
||||
</data>
|
||||
<data name="HelpButton.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="HelpButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>79, 22</value>
|
||||
</data>
|
||||
<data name="HelpButton.Text" xml:space="preserve">
|
||||
<value>Filter help</value>
|
||||
</data>
|
||||
<data name="HelpButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
|
||||
<value>TextBeforeImage</value>
|
||||
</data>
|
||||
<data name="HelpButton.ToolTipText" xml:space="preserve">
|
||||
<value>Opens the Duplicati Filter usage Wiki page</value>
|
||||
</data>
|
||||
<data name="toolStrip1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 16</value>
|
||||
</data>
|
||||
<data name="toolStrip1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>498, 25</value>
|
||||
</data>
|
||||
<data name="toolStrip1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="toolStrip1.Text" xml:space="preserve">
|
||||
<value>toolStrip1</value>
|
||||
</data>
|
||||
<data name=">>toolStrip1.Name" xml:space="preserve">
|
||||
<value>toolStrip1</value>
|
||||
</data>
|
||||
<data name=">>toolStrip1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolStrip1.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>toolStrip1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>504, 208</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>Filters</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="btnTestSearch.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnTestSearch.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>369, 213</value>
|
||||
</data>
|
||||
<data name="btnTestSearch.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>132, 23</value>
|
||||
</data>
|
||||
<data name="btnTestSearch.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="btnTestSearch.Text" xml:space="preserve">
|
||||
<value>Test Search Selection...</value>
|
||||
</data>
|
||||
<data name=">>btnTestSearch.Name" xml:space="preserve">
|
||||
<value>btnTestSearch</value>
|
||||
</data>
|
||||
<data name=">>btnTestSearch.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnTestSearch.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnTestSearch.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 216</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>82, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Test a filename:</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name=">>label1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="FilenameTester.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="FilenameTester.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>85, 214</value>
|
||||
</data>
|
||||
<data name="FilenameTester.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>256, 20</value>
|
||||
</data>
|
||||
<data name="FilenameTester.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>FilenameTester.Name" xml:space="preserve">
|
||||
<value>FilenameTester</value>
|
||||
</data>
|
||||
<data name=">>FilenameTester.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>FilenameTester.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>FilenameTester.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>130, 17</value>
|
||||
</metadata>
|
||||
<data name="TestResults.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="TestResults.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="TestResults.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>345, 216</value>
|
||||
</data>
|
||||
<data name="TestResults.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
</data>
|
||||
<data name="TestResults.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>TestResults.Name" xml:space="preserve">
|
||||
<value>TestResults</value>
|
||||
</data>
|
||||
<data name=">>TestResults.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>TestResults.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TestResults.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>227, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>506, 242</value>
|
||||
</data>
|
||||
<data name=">>columnHeader1.Name" xml:space="preserve">
|
||||
<value>columnHeader1</value>
|
||||
</data>
|
||||
<data name=">>columnHeader1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>imageList.Name" xml:space="preserve">
|
||||
<value>imageList</value>
|
||||
</data>
|
||||
<data name=">>imageList.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>AddFilterButton.Name" xml:space="preserve">
|
||||
<value>AddFilterButton</value>
|
||||
</data>
|
||||
<data name=">>AddFilterButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>RemoveFilterButton.Name" xml:space="preserve">
|
||||
<value>RemoveFilterButton</value>
|
||||
</data>
|
||||
<data name=">>RemoveFilterButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>EditFilterButton.Name" xml:space="preserve">
|
||||
<value>EditFilterButton</value>
|
||||
</data>
|
||||
<data name=">>EditFilterButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator3.Name" xml:space="preserve">
|
||||
<value>toolStripSeparator3</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator3.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>IncludeFolderButton.Name" xml:space="preserve">
|
||||
<value>IncludeFolderButton</value>
|
||||
</data>
|
||||
<data name=">>IncludeFolderButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ExcludeFolderButton.Name" xml:space="preserve">
|
||||
<value>ExcludeFolderButton</value>
|
||||
</data>
|
||||
<data name=">>ExcludeFolderButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator1.Name" xml:space="preserve">
|
||||
<value>toolStripSeparator1</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterUpButton.Name" xml:space="preserve">
|
||||
<value>MoveFilterUpButton</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterUpButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterDownButton.Name" xml:space="preserve">
|
||||
<value>MoveFilterDownButton</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterDownButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator2.Name" xml:space="preserve">
|
||||
<value>toolStripSeparator2</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterTopButton.Name" xml:space="preserve">
|
||||
<value>MoveFilterTopButton</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterTopButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterBottomButton.Name" xml:space="preserve">
|
||||
<value>MoveFilterBottomButton</value>
|
||||
</data>
|
||||
<data name=">>MoveFilterBottomButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>HelpButton.Name" xml:space="preserve">
|
||||
<value>HelpButton</value>
|
||||
</data>
|
||||
<data name=">>HelpButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolTip.Name" xml:space="preserve">
|
||||
<value>toolTip</value>
|
||||
</data>
|
||||
<data name=">>toolTip.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog.Name" xml:space="preserve">
|
||||
<value>folderBrowserDialog</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>FilterEditor</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,107 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class FolderPathEntry
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FolderPathEntry));
|
||||
this.BrowseFolderButton = new System.Windows.Forms.Button();
|
||||
this.FolderPath = new System.Windows.Forms.TextBox();
|
||||
this.SizeLabel = new System.Windows.Forms.Label();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.DeleteButton = new System.Windows.Forms.Button();
|
||||
this.FolderStateImage = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.FolderStateImage)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// BrowseFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.BrowseFolderButton, "BrowseFolderButton");
|
||||
this.BrowseFolderButton.Name = "BrowseFolderButton";
|
||||
this.toolTip.SetToolTip(this.BrowseFolderButton, resources.GetString("BrowseFolderButton.ToolTip"));
|
||||
this.BrowseFolderButton.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// FolderPath
|
||||
//
|
||||
resources.ApplyResources(this.FolderPath, "FolderPath");
|
||||
this.FolderPath.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
|
||||
this.FolderPath.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.FileSystemDirectories;
|
||||
this.FolderPath.Name = "FolderPath";
|
||||
this.toolTip.SetToolTip(this.FolderPath, resources.GetString("FolderPath.ToolTip"));
|
||||
this.FolderPath.TextChanged += new System.EventHandler(this.FolderPath_TextChanged);
|
||||
this.FolderPath.Leave += new System.EventHandler(this.FolderPath_Leave);
|
||||
this.FolderPath.KeyUp += new System.Windows.Forms.KeyEventHandler(this.FolderPath_KeyUp);
|
||||
//
|
||||
// SizeLabel
|
||||
//
|
||||
resources.ApplyResources(this.SizeLabel, "SizeLabel");
|
||||
this.SizeLabel.Name = "SizeLabel";
|
||||
this.toolTip.SetToolTip(this.SizeLabel, resources.GetString("SizeLabel.ToolTip"));
|
||||
//
|
||||
// DeleteButton
|
||||
//
|
||||
resources.ApplyResources(this.DeleteButton, "DeleteButton");
|
||||
this.DeleteButton.Image = global::Duplicati.GUI.Properties.Resources.Trash;
|
||||
this.DeleteButton.Name = "DeleteButton";
|
||||
this.toolTip.SetToolTip(this.DeleteButton, resources.GetString("DeleteButton.ToolTip"));
|
||||
this.DeleteButton.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// FolderStateImage
|
||||
//
|
||||
this.FolderStateImage.Image = global::Duplicati.GUI.Properties.Resources.AddedFolder;
|
||||
resources.ApplyResources(this.FolderStateImage, "FolderStateImage");
|
||||
this.FolderStateImage.Name = "FolderStateImage";
|
||||
this.FolderStateImage.TabStop = false;
|
||||
//
|
||||
// FolderPathEntry
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.FolderStateImage);
|
||||
this.Controls.Add(this.FolderPath);
|
||||
this.Controls.Add(this.SizeLabel);
|
||||
this.Controls.Add(this.DeleteButton);
|
||||
this.Controls.Add(this.BrowseFolderButton);
|
||||
this.MinimumSize = new System.Drawing.Size(178, 20);
|
||||
this.Name = "FolderPathEntry";
|
||||
((System.ComponentModel.ISupportInitialize)(this.FolderStateImage)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button BrowseFolderButton;
|
||||
private System.Windows.Forms.TextBox FolderPath;
|
||||
private System.Windows.Forms.Label SizeLabel;
|
||||
private System.Windows.Forms.Button DeleteButton;
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
private System.Windows.Forms.PictureBox FolderStateImage;
|
||||
}
|
||||
}
|
||||
@@ -1,168 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
/// <summary>
|
||||
/// A helper class to encapsulate a single folder entry UI
|
||||
/// </summary>
|
||||
public partial class FolderPathEntry : UserControl
|
||||
{
|
||||
/// <summary>
|
||||
/// An internal reference to the folder browser
|
||||
/// </summary>
|
||||
private FolderBrowserDialog m_browseDialog = null;
|
||||
|
||||
/// <summary>
|
||||
/// Constructs a new FolderPathEntry
|
||||
/// </summary>
|
||||
public FolderPathEntry()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
FolderPath.TextChanged += new EventHandler(FolderPath_TextChanged);
|
||||
DeleteButton.Click += new EventHandler(DeleteButton_Click);
|
||||
BrowseFolderButton.Click += new EventHandler(BrowseFolderButton_Click);
|
||||
base.GotFocus += new EventHandler(FolderPathEntry_GotFocus);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An event that handles the control getting focus
|
||||
/// </summary>
|
||||
/// <param name="sender">The event sender</param>
|
||||
/// <param name="e">An unused event argument</param>
|
||||
void FolderPathEntry_GotFocus(object sender, EventArgs e)
|
||||
{
|
||||
try { FolderPath.Focus(); }
|
||||
catch { }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// An event handler for the click of the BrowseFolderButton
|
||||
/// </summary>
|
||||
/// <param name="sender">The event sender</param>
|
||||
/// <param name="e">An unused event argument</param>
|
||||
private void BrowseFolderButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (m_browseDialog != null)
|
||||
if (m_browseDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
FolderPath.Text = m_browseDialog.SelectedPath;
|
||||
FolderPath_Leave(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An event hander for the click of the DeleteButton
|
||||
/// </summary>
|
||||
/// <param name="sender">The event sender</param>
|
||||
/// <param name="e">An unused event argument</param>
|
||||
private void DeleteButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (DeleteButton_Clicked != null)
|
||||
DeleteButton_Clicked(this, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An event handler for changed text in the FolderPath textbox
|
||||
/// </summary>
|
||||
/// <param name="sender">The event sender</param>
|
||||
/// <param name="e">An unused event argument</param>
|
||||
private void FolderPath_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
FolderStateImage.Image = FolderPath.Text.Trim().Length == 0 ? Properties.Resources.AddedFolder : Properties.Resources.FolderOpen;
|
||||
if (SelectedPathChanged != null)
|
||||
SelectedPathChanged(this, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An event that is raised when the current folder changes
|
||||
/// </summary>
|
||||
public event EventHandler SelectedPathChanged;
|
||||
/// <summary>
|
||||
/// An event that is raised when the delete button is clicked
|
||||
/// </summary>
|
||||
public event EventHandler DeleteButton_Clicked;
|
||||
/// <summary>
|
||||
/// An event that is raised when the current folder looses focus
|
||||
/// </summary>
|
||||
public event EventHandler SelectedPathLeave;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current path
|
||||
/// </summary>
|
||||
public string SelectedPath
|
||||
{
|
||||
get { return FolderPath.Text; }
|
||||
set { FolderPath.Text = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the dialog used for folder browsing
|
||||
/// </summary>
|
||||
public FolderBrowserDialog FolderBrowserDialog
|
||||
{
|
||||
get { return m_browseDialog; }
|
||||
set { m_browseDialog = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the size of the folder
|
||||
/// </summary>
|
||||
public string FolderSize
|
||||
{
|
||||
get { return SizeLabel.Text; }
|
||||
set { SizeLabel.Text = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An event handler for leaving the FolderPath textbox
|
||||
/// </summary>
|
||||
/// <param name="sender">The event sender</param>
|
||||
/// <param name="e">An unused event argument</param>
|
||||
private void FolderPath_Leave(object sender, EventArgs e)
|
||||
{
|
||||
if (SelectedPathLeave != null)
|
||||
SelectedPathLeave(this, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An event handler for turning the Enter keypress into a Tab keypress
|
||||
/// </summary>
|
||||
/// <param name="sender">The event sender</param>
|
||||
/// <param name="e">The keypress information argument</param>
|
||||
private void FolderPath_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
this.Parent.SelectNextControl(this, true, false, true, false);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,288 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BrowseFolderButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BrowseFolderButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>48, 0</value>
|
||||
</data>
|
||||
<data name="BrowseFolderButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>20, 3, 3, 3</value>
|
||||
</data>
|
||||
<data name="BrowseFolderButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>27, 20</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BrowseFolderButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="BrowseFolderButton.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
</data>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="BrowseFolderButton.ToolTip" xml:space="preserve">
|
||||
<value>Click to browse for a folder</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.Name" xml:space="preserve">
|
||||
<value>BrowseFolderButton</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BrowseFolderButton.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="FolderPath.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="FolderPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>24, 0</value>
|
||||
</data>
|
||||
<data name="FolderPath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>24, 20</value>
|
||||
</data>
|
||||
<data name="FolderPath.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="FolderPath.ToolTip" xml:space="preserve">
|
||||
<value>Enter the path to the folder here</value>
|
||||
</data>
|
||||
<data name=">>FolderPath.Name" xml:space="preserve">
|
||||
<value>FolderPath</value>
|
||||
</data>
|
||||
<data name=">>FolderPath.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>FolderPath.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>FolderPath.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="SizeLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="SizeLabel.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="SizeLabel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>80, 4</value>
|
||||
</data>
|
||||
<data name="SizeLabel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>22, 13</value>
|
||||
</data>
|
||||
<data name="SizeLabel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="SizeLabel.Text" xml:space="preserve">
|
||||
<value>(...)</value>
|
||||
</data>
|
||||
<data name="SizeLabel.ToolTip" xml:space="preserve">
|
||||
<value>The size of the selected folder</value>
|
||||
</data>
|
||||
<data name=">>SizeLabel.Name" xml:space="preserve">
|
||||
<value>SizeLabel</value>
|
||||
</data>
|
||||
<data name=">>SizeLabel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>SizeLabel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SizeLabel.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="DeleteButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="DeleteButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>152, 0</value>
|
||||
</data>
|
||||
<data name="DeleteButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>24, 20</value>
|
||||
</data>
|
||||
<data name="DeleteButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="DeleteButton.ToolTip" xml:space="preserve">
|
||||
<value>Click to remove the entry</value>
|
||||
</data>
|
||||
<data name=">>DeleteButton.Name" xml:space="preserve">
|
||||
<value>DeleteButton</value>
|
||||
</data>
|
||||
<data name=">>DeleteButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>DeleteButton.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>DeleteButton.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="FolderStateImage.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="FolderStateImage.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>20, 20</value>
|
||||
</data>
|
||||
<data name="FolderStateImage.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>FolderStateImage.Name" xml:space="preserve">
|
||||
<value>FolderStateImage</value>
|
||||
</data>
|
||||
<data name=">>FolderStateImage.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>FolderStateImage.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>FolderStateImage.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>178, 20</value>
|
||||
</data>
|
||||
<data name=">>toolTip.Name" xml:space="preserve">
|
||||
<value>toolTip</value>
|
||||
</data>
|
||||
<data name=">>toolTip.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>FolderPathEntry</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,73 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class SizeSelector
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SizeSelector));
|
||||
this.Suffix = new System.Windows.Forms.ComboBox();
|
||||
this.Number = new System.Windows.Forms.NumericUpDown();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Number)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// Suffix
|
||||
//
|
||||
this.Suffix.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.Suffix.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.Suffix, "Suffix");
|
||||
this.Suffix.Name = "Suffix";
|
||||
this.Suffix.SelectedIndexChanged += new System.EventHandler(this.Suffix_SelectedIndexChanged);
|
||||
//
|
||||
// Number
|
||||
//
|
||||
resources.ApplyResources(this.Number, "Number");
|
||||
this.Number.Maximum = new decimal(new int[] {
|
||||
10000,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Number.Name = "Number";
|
||||
this.Number.ValueChanged += new System.EventHandler(this.Number_ValueChanged);
|
||||
//
|
||||
// SizeSelector
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.Suffix);
|
||||
this.Controls.Add(this.Number);
|
||||
this.Name = "SizeSelector";
|
||||
((System.ComponentModel.ISupportInitialize)(this.Number)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox Suffix;
|
||||
private System.Windows.Forms.NumericUpDown Number;
|
||||
}
|
||||
}
|
||||
@@ -1,147 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class SizeSelector : UserControl
|
||||
{
|
||||
private bool m_useSpeedNotation = false;
|
||||
public SizeSelector()
|
||||
{
|
||||
InitializeComponent();
|
||||
ResetSuffixCombo();
|
||||
Suffix.SelectedIndex = 1;
|
||||
}
|
||||
|
||||
public event EventHandler CurrentSizeInBytesChanged;
|
||||
public event EventHandler CurrentSizeChanged;
|
||||
|
||||
[DefaultValue(false)]
|
||||
public bool UseSpeedNotation
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_useSpeedNotation;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (m_useSpeedNotation != value)
|
||||
{
|
||||
m_useSpeedNotation = value;
|
||||
ResetSuffixCombo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetSuffixCombo()
|
||||
{
|
||||
int ix = Suffix.SelectedIndex;
|
||||
Suffix.Items.Clear();
|
||||
if (m_useSpeedNotation)
|
||||
Suffix.Items.AddRange(new string[] {
|
||||
Strings.SizeSelector.BytesPerSecond,
|
||||
Strings.SizeSelector.KBPerSecond,
|
||||
Strings.SizeSelector.MBPerSecond,
|
||||
Strings.SizeSelector.GBPerSecond
|
||||
});
|
||||
else
|
||||
Suffix.Items.AddRange(new string[] {
|
||||
Strings.SizeSelector.BytesName,
|
||||
Strings.SizeSelector.KBName,
|
||||
Strings.SizeSelector.MBName,
|
||||
Strings.SizeSelector.GBName
|
||||
});
|
||||
|
||||
Suffix.SelectedIndex = ix;
|
||||
}
|
||||
|
||||
public long CurrentSizeInBytes
|
||||
{
|
||||
get
|
||||
{
|
||||
return (long)((double)Number.Value * Math.Pow(2, 10 * Suffix.SelectedIndex));
|
||||
}
|
||||
set
|
||||
{
|
||||
Suffix.SelectedIndex = -1;
|
||||
for (int i = 0; i < Suffix.Items.Count; i++)
|
||||
if (value < Math.Pow(2, 10 * (i + 1)))
|
||||
{
|
||||
Suffix.SelectedIndex = i;
|
||||
Number.Value = (int)(value / (long)Math.Pow(2, 10 * i));
|
||||
break;
|
||||
}
|
||||
|
||||
if (Suffix.SelectedIndex == -1)
|
||||
{
|
||||
Suffix.SelectedIndex = 0;
|
||||
Number.Value = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string CurrentSize
|
||||
{
|
||||
get
|
||||
{
|
||||
string[] suffixes = new string[] { "b", "kb", "mb", "gb" };
|
||||
long value = CurrentSizeInBytes;
|
||||
|
||||
for (int i = 0; i < suffixes.Length; i++)
|
||||
if (value < Math.Pow(2, 10 * (i + 1)))
|
||||
return (value / (long)Math.Pow(2, 10 * i)) + suffixes[i];
|
||||
|
||||
return value.ToString() + "b";
|
||||
}
|
||||
set
|
||||
{
|
||||
CurrentSizeInBytes = Duplicati.Library.Utility.Sizeparser.ParseSize(value);
|
||||
|
||||
if (CurrentSizeChanged != null)
|
||||
CurrentSizeChanged(this, null);
|
||||
if (CurrentSizeInBytesChanged != null)
|
||||
CurrentSizeInBytesChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
private void Suffix_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (CurrentSizeChanged != null)
|
||||
CurrentSizeChanged(this, null);
|
||||
if (CurrentSizeInBytesChanged != null)
|
||||
CurrentSizeInBytesChanged(this, null);
|
||||
}
|
||||
|
||||
private void Number_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (CurrentSizeChanged != null)
|
||||
CurrentSizeChanged(this, null);
|
||||
if (CurrentSizeInBytesChanged != null)
|
||||
CurrentSizeInBytesChanged(this, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,186 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="Suffix.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>96, 0</value>
|
||||
</data>
|
||||
<data name="Suffix.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>72, 21</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Suffix.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>Suffix.Name" xml:space="preserve">
|
||||
<value>Suffix</value>
|
||||
</data>
|
||||
<data name=">>Suffix.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Suffix.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Suffix.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Number.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="Number.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="Number.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>88, 20</value>
|
||||
</data>
|
||||
<data name="Number.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="Number.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Right</value>
|
||||
</data>
|
||||
<data name=">>Number.Name" xml:space="preserve">
|
||||
<value>Number</value>
|
||||
</data>
|
||||
<data name=">>Number.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Number.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Number.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>170, 21</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>SizeSelector</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,74 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class BackupFileList {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal BackupFileList() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.BackupFileList", typeof(BackupFileList).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Source folder {0}
|
||||
///Target folder: {1}
|
||||
///Right click to change target folder.
|
||||
/// </summary>
|
||||
internal static string RootNodeTooltip {
|
||||
get {
|
||||
return ResourceManager.GetString("RootNodeTooltip", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="RootNodeTooltip" xml:space="preserve">
|
||||
<value>Source folder {0}
|
||||
Target folder: {1}
|
||||
Right click to change target folder</value>
|
||||
<comment>A tooltip that is displayed to assist the user in selecting target folders</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,126 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class BackupItems {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal BackupItems() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.BackupItems", typeof(BackupItems).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Error: {0}.
|
||||
/// </summary>
|
||||
internal static string ErrorStatusDisplay {
|
||||
get {
|
||||
return ResourceManager.GetString("ErrorStatusDisplay", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No data received.
|
||||
/// </summary>
|
||||
internal static string NoDataReceived {
|
||||
get {
|
||||
return ResourceManager.GetString("NoDataReceived", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Cancelled.
|
||||
/// </summary>
|
||||
internal static string OperationCancelled {
|
||||
get {
|
||||
return ResourceManager.GetString("OperationCancelled", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Full backup.
|
||||
/// </summary>
|
||||
internal static string TooltipFullBackup {
|
||||
get {
|
||||
return ResourceManager.GetString("TooltipFullBackup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Full backup - {0}.
|
||||
/// </summary>
|
||||
internal static string TooltipFullBackupWithSize {
|
||||
get {
|
||||
return ResourceManager.GetString("TooltipFullBackupWithSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Incremental backup.
|
||||
/// </summary>
|
||||
internal static string TooltipIncrementalBackup {
|
||||
get {
|
||||
return ResourceManager.GetString("TooltipIncrementalBackup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Incremental backup - {0}, chain: {1}.
|
||||
/// </summary>
|
||||
internal static string TooltipIncrementalBackupWithSize {
|
||||
get {
|
||||
return ResourceManager.GetString("TooltipIncrementalBackupWithSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ErrorStatusDisplay" xml:space="preserve">
|
||||
<value>Error: {0}</value>
|
||||
</data>
|
||||
<data name="NoDataReceived" xml:space="preserve">
|
||||
<value>No data received</value>
|
||||
</data>
|
||||
<data name="OperationCancelled" xml:space="preserve">
|
||||
<value>Cancelled</value>
|
||||
</data>
|
||||
<data name="TooltipFullBackup" xml:space="preserve">
|
||||
<value>Full backup</value>
|
||||
</data>
|
||||
<data name="TooltipFullBackupWithSize" xml:space="preserve">
|
||||
<value>Full backup - {0}</value>
|
||||
</data>
|
||||
<data name="TooltipIncrementalBackup" xml:space="preserve">
|
||||
<value>Incremental backup</value>
|
||||
</data>
|
||||
<data name="TooltipIncrementalBackupWithSize" xml:space="preserve">
|
||||
<value>Incremental backup - {0}, chain: {1}</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,99 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class BackupTreeView {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal BackupTreeView() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.BackupTreeView", typeof(BackupTreeView).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Do you want to delete the folder {0} and all the backups contained in it?.
|
||||
/// </summary>
|
||||
internal static string ConfirmDeleteFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("ConfirmDeleteFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Remove the backup '{0}' ?.
|
||||
/// </summary>
|
||||
internal static string ConfirmRemoveBackup {
|
||||
get {
|
||||
return ResourceManager.GetString("ConfirmRemoveBackup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to New Backup.
|
||||
/// </summary>
|
||||
internal static string NewBackup {
|
||||
get {
|
||||
return ResourceManager.GetString("NewBackup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to New Folder.
|
||||
/// </summary>
|
||||
internal static string NewFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("NewFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ConfirmDeleteFolder" xml:space="preserve">
|
||||
<value>Do you want to delete the folder {0} and all the backups contained in it?</value>
|
||||
</data>
|
||||
<data name="ConfirmRemoveBackup" xml:space="preserve">
|
||||
<value>Remove the backup '{0}' ?</value>
|
||||
</data>
|
||||
<data name="NewBackup" xml:space="preserve">
|
||||
<value>New Backup</value>
|
||||
</data>
|
||||
<data name="NewFolder" xml:space="preserve">
|
||||
<value>New Folder</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,84 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class CommandLineOptionsGrid {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal CommandLineOptionsGrid() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.CommandLineOptionsGrid", typeof(CommandLineOptionsGrid).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Value type: {0}.
|
||||
///{1}.
|
||||
///{2}.
|
||||
/// </summary>
|
||||
internal static string InfoLabelFormat {
|
||||
get {
|
||||
return ResourceManager.GetString("InfoLabelFormat", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This page is not supported on the current platform, this is a known issue.
|
||||
///A newer version of Mono will enable this page..
|
||||
/// </summary>
|
||||
internal static string PageNotSupportedWarning {
|
||||
get {
|
||||
return ResourceManager.GetString("PageNotSupportedWarning", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="InfoLabelFormat" xml:space="preserve">
|
||||
<value>Value type: {0}.
|
||||
{1}.
|
||||
{2}</value>
|
||||
</data>
|
||||
<data name="PageNotSupportedWarning" xml:space="preserve">
|
||||
<value>This page is not supported on the current platform, this is a known issue.
|
||||
A newer version of Mono will enable this page.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,72 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class DurationEditor {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal DurationEditor() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.DurationEditor", typeof(DurationEditor).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Custom ....
|
||||
/// </summary>
|
||||
internal static string CustomDuration {
|
||||
get {
|
||||
return ResourceManager.GetString("CustomDuration", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,124 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="CustomDuration" xml:space="preserve">
|
||||
<value>Custom ...</value>
|
||||
<comment>A value displayed when the user enters a non-standard duration</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,72 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class FilterDialog {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal FilterDialog() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.FilterDialog", typeof(FilterDialog).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The expression is not a valid regular expression: {0}.
|
||||
/// </summary>
|
||||
internal static string InvalidRegExpMessage {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidRegExpMessage", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,124 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="InvalidRegExpMessage" xml:space="preserve">
|
||||
<value>The expression is not a valid regular expression: {0}</value>
|
||||
<comment>A message displayed to the user if the regular expression is not valid</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,153 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class FilterEditor {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal FilterEditor() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.FilterEditor", typeof(FilterEditor).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Choose the folder to add for exclusion.
|
||||
/// </summary>
|
||||
internal static string ExcludeFolderBrowseTitle {
|
||||
get {
|
||||
return ResourceManager.GetString("ExcludeFolderBrowseTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The file {0} is excluded due to rule {1}.
|
||||
/// </summary>
|
||||
internal static string FileIsExcluded {
|
||||
get {
|
||||
return ResourceManager.GetString("FileIsExcluded", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The file {0} is included due to rule {1}.
|
||||
/// </summary>
|
||||
internal static string FileIsIncluded {
|
||||
get {
|
||||
return ResourceManager.GetString("FileIsIncluded", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The file {0} is included because no rule matched.
|
||||
/// </summary>
|
||||
internal static string FileIsIncludedDefault {
|
||||
get {
|
||||
return ResourceManager.GetString("FileIsIncludedDefault", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The filename {0} is not located in any of the source folders.
|
||||
/// </summary>
|
||||
internal static string FilenameIsNotInAnyRootFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("FilenameIsNotInAnyRootFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The filename {0} is not an absolute path.
|
||||
/// </summary>
|
||||
internal static string FilepathIsNotAbsoluteError {
|
||||
get {
|
||||
return ResourceManager.GetString("FilepathIsNotAbsoluteError", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The folder {0} is excluded due to rule {1}.
|
||||
/// </summary>
|
||||
internal static string FolderIsExcluded {
|
||||
get {
|
||||
return ResourceManager.GetString("FolderIsExcluded", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The folder {0} is included because it is a source folder.
|
||||
/// </summary>
|
||||
internal static string FolderIsRootFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("FolderIsRootFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Choose the folder to add for inclusion.
|
||||
/// </summary>
|
||||
internal static string IncludeFolderBrowseTitle {
|
||||
get {
|
||||
return ResourceManager.GetString("IncludeFolderBrowseTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The filename {0} has invalid characters.
|
||||
/// </summary>
|
||||
internal static string InvalidCharsInFilenameError {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidCharsInFilenameError", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,150 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ExcludeFolderBrowseTitle" xml:space="preserve">
|
||||
<value>Choose the folder to add for exclusion</value>
|
||||
</data>
|
||||
<data name="FileIsExcluded" xml:space="preserve">
|
||||
<value>The file {0} is excluded due to rule {1}</value>
|
||||
</data>
|
||||
<data name="FileIsIncluded" xml:space="preserve">
|
||||
<value>The file {0} is included due to rule {1}</value>
|
||||
</data>
|
||||
<data name="FileIsIncludedDefault" xml:space="preserve">
|
||||
<value>The file {0} is included because no rule matched</value>
|
||||
</data>
|
||||
<data name="FilenameIsNotInAnyRootFolder" xml:space="preserve">
|
||||
<value>The filename {0} is not located in any of the source folders</value>
|
||||
</data>
|
||||
<data name="FilepathIsNotAbsoluteError" xml:space="preserve">
|
||||
<value>The filename {0} is not an absolute path</value>
|
||||
</data>
|
||||
<data name="FolderIsExcluded" xml:space="preserve">
|
||||
<value>The folder {0} is excluded due to rule {1}</value>
|
||||
</data>
|
||||
<data name="FolderIsRootFolder" xml:space="preserve">
|
||||
<value>The folder {0} is included because it is a source folder</value>
|
||||
</data>
|
||||
<data name="IncludeFolderBrowseTitle" xml:space="preserve">
|
||||
<value>Choose the folder to add for inclusion</value>
|
||||
</data>
|
||||
<data name="InvalidCharsInFilenameError" xml:space="preserve">
|
||||
<value>The filename {0} has invalid characters</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,135 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class SizeSelector {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal SizeSelector() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.SizeSelector", typeof(SizeSelector).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to bytes.
|
||||
/// </summary>
|
||||
internal static string BytesName {
|
||||
get {
|
||||
return ResourceManager.GetString("BytesName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to bytes/s.
|
||||
/// </summary>
|
||||
internal static string BytesPerSecond {
|
||||
get {
|
||||
return ResourceManager.GetString("BytesPerSecond", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to gb.
|
||||
/// </summary>
|
||||
internal static string GBName {
|
||||
get {
|
||||
return ResourceManager.GetString("GBName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to gb/s.
|
||||
/// </summary>
|
||||
internal static string GBPerSecond {
|
||||
get {
|
||||
return ResourceManager.GetString("GBPerSecond", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to kb.
|
||||
/// </summary>
|
||||
internal static string KBName {
|
||||
get {
|
||||
return ResourceManager.GetString("KBName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to kb/s.
|
||||
/// </summary>
|
||||
internal static string KBPerSecond {
|
||||
get {
|
||||
return ResourceManager.GetString("KBPerSecond", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to mb.
|
||||
/// </summary>
|
||||
internal static string MBName {
|
||||
get {
|
||||
return ResourceManager.GetString("MBName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to mb/s.
|
||||
/// </summary>
|
||||
internal static string MBPerSecond {
|
||||
get {
|
||||
return ResourceManager.GetString("MBPerSecond", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,144 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="BytesName" xml:space="preserve">
|
||||
<value>bytes</value>
|
||||
</data>
|
||||
<data name="BytesPerSecond" xml:space="preserve">
|
||||
<value>bytes/s</value>
|
||||
</data>
|
||||
<data name="GBName" xml:space="preserve">
|
||||
<value>gb</value>
|
||||
</data>
|
||||
<data name="GBPerSecond" xml:space="preserve">
|
||||
<value>gb/s</value>
|
||||
</data>
|
||||
<data name="KBName" xml:space="preserve">
|
||||
<value>kb</value>
|
||||
</data>
|
||||
<data name="KBPerSecond" xml:space="preserve">
|
||||
<value>kb/s</value>
|
||||
</data>
|
||||
<data name="MBName" xml:space="preserve">
|
||||
<value>mb</value>
|
||||
</data>
|
||||
<data name="MBPerSecond" xml:space="preserve">
|
||||
<value>mb/s</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,90 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class TestSearchSelection {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal TestSearchSelection() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.TestSearchSelection", typeof(TestSearchSelection).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File Name '{0}'.
|
||||
/// </summary>
|
||||
internal static string FileName {
|
||||
get {
|
||||
return ResourceManager.GetString("FileName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File Type '{0}'.
|
||||
/// </summary>
|
||||
internal static string FileType {
|
||||
get {
|
||||
return ResourceManager.GetString("FileType", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Total {0} files at {1}.
|
||||
/// </summary>
|
||||
internal static string TotalSizeLabel {
|
||||
get {
|
||||
return ResourceManager.GetString("TotalSizeLabel", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FileName" xml:space="preserve">
|
||||
<value>File Name '{0}'</value>
|
||||
</data>
|
||||
<data name="FileType" xml:space="preserve">
|
||||
<value>File Type '{0}'</value>
|
||||
</data>
|
||||
<data name="TotalSizeLabel" xml:space="preserve">
|
||||
<value>Total {0} files at {1}</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,81 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.HelperControls.Strings {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class WaitForOperation {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal WaitForOperation() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.HelperControls.Strings.WaitForOperation", typeof(WaitForOperation).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Are you sure you want to abort the operation?.
|
||||
/// </summary>
|
||||
internal static string ReallyAbortQuestion {
|
||||
get {
|
||||
return ResourceManager.GetString("ReallyAbortQuestion", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The user cancelled the operation.
|
||||
/// </summary>
|
||||
internal static string UserCancelled {
|
||||
get {
|
||||
return ResourceManager.GetString("UserCancelled", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ReallyAbortQuestion" xml:space="preserve">
|
||||
<value>Are you sure you want to abort the operation?</value>
|
||||
</data>
|
||||
<data name="UserCancelled" xml:space="preserve">
|
||||
<value>The user cancelled the operation</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,334 +0,0 @@
|
||||
|
||||
|
||||
namespace Duplicati.GUI.HelperControls {
|
||||
|
||||
partial class TestSearchSelection {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if( disposing && ( components != null ) ) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TestSearchSelection));
|
||||
this.ctxSelection = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.miInclude = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miIncludeFileName = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miIncludeFileExt = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miIncludeFilePath = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExclude = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExcludeFileName = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExcludeFileExt = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExcludeFilePath = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnCancel = new System.Windows.Forms.Button();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.lvFilters = new System.Windows.Forms.ListView();
|
||||
this.ctxFilters = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.removeFilterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scanWorker = new System.ComponentModel.BackgroundWorker();
|
||||
this.lbTotalSize = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.tbSearch = new System.Windows.Forms.TextBox();
|
||||
this.btnSearch = new System.Windows.Forms.PictureBox();
|
||||
this.btnClearSearch = new System.Windows.Forms.PictureBox();
|
||||
this.lvFiles = new System.Windows.Forms.ListView();
|
||||
this.chFile = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chFileExt = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chSize = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chPath = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.lbLoading = new System.Windows.Forms.Label();
|
||||
this.btnOK = new System.Windows.Forms.Button();
|
||||
this.ctxSelection.SuspendLayout();
|
||||
this.ctxFilters.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnSearch)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnClearSearch)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ctxSelection
|
||||
//
|
||||
this.ctxSelection.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miInclude,
|
||||
this.miExclude});
|
||||
this.ctxSelection.Name = "ctxSelection";
|
||||
resources.ApplyResources(this.ctxSelection, "ctxSelection");
|
||||
this.ctxSelection.Opened += new System.EventHandler(this.ctxSelection_Opened);
|
||||
//
|
||||
// miInclude
|
||||
//
|
||||
this.miInclude.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miIncludeFileName,
|
||||
this.miIncludeFileExt,
|
||||
this.miIncludeFilePath});
|
||||
this.miInclude.Name = "miInclude";
|
||||
resources.ApplyResources(this.miInclude, "miInclude");
|
||||
//
|
||||
// miIncludeFileName
|
||||
//
|
||||
this.miIncludeFileName.Name = "miIncludeFileName";
|
||||
resources.ApplyResources(this.miIncludeFileName, "miIncludeFileName");
|
||||
this.miIncludeFileName.Tag = "1";
|
||||
this.miIncludeFileName.Click += new System.EventHandler(this.miIncludeFileName_Click);
|
||||
//
|
||||
// miIncludeFileExt
|
||||
//
|
||||
this.miIncludeFileExt.Name = "miIncludeFileExt";
|
||||
resources.ApplyResources(this.miIncludeFileExt, "miIncludeFileExt");
|
||||
this.miIncludeFileExt.Click += new System.EventHandler(this.miIncludeFileExt_Click);
|
||||
//
|
||||
// miIncludeFilePath
|
||||
//
|
||||
this.miIncludeFilePath.Name = "miIncludeFilePath";
|
||||
resources.ApplyResources(this.miIncludeFilePath, "miIncludeFilePath");
|
||||
//
|
||||
// miExclude
|
||||
//
|
||||
this.miExclude.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miExcludeFileName,
|
||||
this.miExcludeFileExt,
|
||||
this.miExcludeFilePath});
|
||||
this.miExclude.Name = "miExclude";
|
||||
resources.ApplyResources(this.miExclude, "miExclude");
|
||||
//
|
||||
// miExcludeFileName
|
||||
//
|
||||
this.miExcludeFileName.Name = "miExcludeFileName";
|
||||
resources.ApplyResources(this.miExcludeFileName, "miExcludeFileName");
|
||||
this.miExcludeFileName.Click += new System.EventHandler(this.addFilenameFilterToolStripMenuItem_Click);
|
||||
//
|
||||
// miExcludeFileExt
|
||||
//
|
||||
this.miExcludeFileExt.Name = "miExcludeFileExt";
|
||||
resources.ApplyResources(this.miExcludeFileExt, "miExcludeFileExt");
|
||||
this.miExcludeFileExt.Click += new System.EventHandler(this.addFileExtensionFilterToolStripMenuItem1_Click);
|
||||
//
|
||||
// miExcludeFilePath
|
||||
//
|
||||
this.miExcludeFilePath.Name = "miExcludeFilePath";
|
||||
resources.ApplyResources(this.miExcludeFilePath, "miExcludeFilePath");
|
||||
this.miExcludeFilePath.Click += new System.EventHandler(this.addFilePathFilerToolStripMenuItem_Click);
|
||||
//
|
||||
// imageList
|
||||
//
|
||||
this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
|
||||
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imageList.Images.SetKeyName(0, "globbing-include");
|
||||
this.imageList.Images.SetKeyName(1, "globbing-exclude");
|
||||
this.imageList.Images.SetKeyName(2, "icon_up_sort_arrow[1].png");
|
||||
this.imageList.Images.SetKeyName(3, "icon_down_sort_arrow[1].png");
|
||||
this.imageList.Images.SetKeyName(4, "sort_ascending[1].png");
|
||||
this.imageList.Images.SetKeyName(5, "sort_descending[1].png");
|
||||
this.imageList.Images.SetKeyName(6, "sort_up[1].png");
|
||||
this.imageList.Images.SetKeyName(7, "sort_down[1].png");
|
||||
this.imageList.Images.SetKeyName(8, "regexp-include");
|
||||
this.imageList.Images.SetKeyName(9, "regexp-exclude");
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
resources.ApplyResources(this.btnCancel, "btnCancel");
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.UseVisualStyleBackColor = true;
|
||||
this.btnCancel.Click += new System.EventHandler(this.btnClose_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// lvFilters
|
||||
//
|
||||
resources.ApplyResources(this.lvFilters, "lvFilters");
|
||||
this.lvFilters.ContextMenuStrip = this.ctxFilters;
|
||||
this.lvFilters.FullRowSelect = true;
|
||||
this.lvFilters.Name = "lvFilters";
|
||||
this.lvFilters.SmallImageList = this.imageList;
|
||||
this.lvFilters.UseCompatibleStateImageBehavior = false;
|
||||
this.lvFilters.View = System.Windows.Forms.View.List;
|
||||
//
|
||||
// ctxFilters
|
||||
//
|
||||
this.ctxFilters.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.removeFilterToolStripMenuItem});
|
||||
this.ctxFilters.Name = "ctxFilters";
|
||||
resources.ApplyResources(this.ctxFilters, "ctxFilters");
|
||||
//
|
||||
// removeFilterToolStripMenuItem
|
||||
//
|
||||
this.removeFilterToolStripMenuItem.Name = "removeFilterToolStripMenuItem";
|
||||
resources.ApplyResources(this.removeFilterToolStripMenuItem, "removeFilterToolStripMenuItem");
|
||||
this.removeFilterToolStripMenuItem.Click += new System.EventHandler(this.removeFilterToolStripMenuItem_Click);
|
||||
//
|
||||
// scanWorker
|
||||
//
|
||||
this.scanWorker.WorkerSupportsCancellation = true;
|
||||
this.scanWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.scanWorker_DoWork);
|
||||
this.scanWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.scanWorker_RunWorkerCompleted);
|
||||
//
|
||||
// lbTotalSize
|
||||
//
|
||||
resources.ApplyResources(this.lbTotalSize, "lbTotalSize");
|
||||
this.lbTotalSize.Name = "lbTotalSize";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// tbSearch
|
||||
//
|
||||
resources.ApplyResources(this.tbSearch, "tbSearch");
|
||||
this.tbSearch.Name = "tbSearch";
|
||||
this.tbSearch.TextChanged += new System.EventHandler(this.tbSearch_TextChanged);
|
||||
//
|
||||
// btnSearch
|
||||
//
|
||||
resources.ApplyResources(this.btnSearch, "btnSearch");
|
||||
this.btnSearch.Name = "btnSearch";
|
||||
this.btnSearch.TabStop = false;
|
||||
//
|
||||
// btnClearSearch
|
||||
//
|
||||
resources.ApplyResources(this.btnClearSearch, "btnClearSearch");
|
||||
this.btnClearSearch.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.btnClearSearch.Name = "btnClearSearch";
|
||||
this.btnClearSearch.TabStop = false;
|
||||
this.btnClearSearch.Click += new System.EventHandler(this.btnClearSearch_Click);
|
||||
//
|
||||
// lvFiles
|
||||
//
|
||||
resources.ApplyResources(this.lvFiles, "lvFiles");
|
||||
this.lvFiles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chFile,
|
||||
this.chFileExt,
|
||||
this.chSize,
|
||||
this.chPath});
|
||||
this.lvFiles.ContextMenuStrip = this.ctxSelection;
|
||||
this.lvFiles.FullRowSelect = true;
|
||||
this.lvFiles.Name = "lvFiles";
|
||||
this.lvFiles.SmallImageList = this.imageList;
|
||||
this.lvFiles.UseCompatibleStateImageBehavior = false;
|
||||
this.lvFiles.View = System.Windows.Forms.View.Details;
|
||||
this.lvFiles.VirtualMode = true;
|
||||
this.lvFiles.CacheVirtualItems += new System.Windows.Forms.CacheVirtualItemsEventHandler(this.lvFiles_CacheVirtualItems);
|
||||
this.lvFiles.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvFiles_ColumnClick);
|
||||
this.lvFiles.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.lvFiles_RetrieveVirtualItem);
|
||||
//
|
||||
// chFile
|
||||
//
|
||||
resources.ApplyResources(this.chFile, "chFile");
|
||||
//
|
||||
// chFileExt
|
||||
//
|
||||
resources.ApplyResources(this.chFileExt, "chFileExt");
|
||||
//
|
||||
// chSize
|
||||
//
|
||||
resources.ApplyResources(this.chSize, "chSize");
|
||||
//
|
||||
// chPath
|
||||
//
|
||||
resources.ApplyResources(this.chPath, "chPath");
|
||||
//
|
||||
// lbLoading
|
||||
//
|
||||
resources.ApplyResources(this.lbLoading, "lbLoading");
|
||||
this.lbLoading.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.lbLoading.Name = "lbLoading";
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
resources.ApplyResources(this.btnOK, "btnOK");
|
||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnOK.Name = "btnOK";
|
||||
this.btnOK.UseVisualStyleBackColor = true;
|
||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||
//
|
||||
// TestSearchSelection
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.btnCancel;
|
||||
this.Controls.Add(this.btnOK);
|
||||
this.Controls.Add(this.lbLoading);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.btnClearSearch);
|
||||
this.Controls.Add(this.lvFiles);
|
||||
this.Controls.Add(this.lvFilters);
|
||||
this.Controls.Add(this.btnSearch);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.tbSearch);
|
||||
this.Controls.Add(this.lbTotalSize);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "TestSearchSelection";
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||
this.Load += new System.EventHandler(this.dlgTestSearchSelection_Load);
|
||||
this.ctxSelection.ResumeLayout(false);
|
||||
this.ctxFilters.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnSearch)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btnClearSearch)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ContextMenuStrip ctxSelection;
|
||||
private System.Windows.Forms.ToolStripMenuItem miInclude;
|
||||
private System.Windows.Forms.ToolStripMenuItem miIncludeFileName;
|
||||
private System.Windows.Forms.ToolStripMenuItem miIncludeFileExt;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExclude;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExcludeFileName;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExcludeFileExt;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ImageList imageList;
|
||||
private System.Windows.Forms.ListView lvFilters;
|
||||
private System.ComponentModel.BackgroundWorker scanWorker;
|
||||
private System.Windows.Forms.ContextMenuStrip ctxFilters;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeFilterToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExcludeFilePath;
|
||||
private System.Windows.Forms.Label lbTotalSize;
|
||||
private System.Windows.Forms.ToolStripMenuItem miIncludeFilePath;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox tbSearch;
|
||||
private System.Windows.Forms.PictureBox btnSearch;
|
||||
private System.Windows.Forms.PictureBox btnClearSearch;
|
||||
private System.Windows.Forms.ListView lvFiles;
|
||||
private System.Windows.Forms.ColumnHeader chFile;
|
||||
private System.Windows.Forms.ColumnHeader chFileExt;
|
||||
private System.Windows.Forms.ColumnHeader chSize;
|
||||
private System.Windows.Forms.ColumnHeader chPath;
|
||||
private System.Windows.Forms.Label lbLoading;
|
||||
private System.Windows.Forms.Button btnOK;
|
||||
}
|
||||
}
|
||||
@@ -1,537 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using Duplicati.Library.Utility;
|
||||
using System.Collections;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls {
|
||||
public partial class TestSearchSelection : Form {
|
||||
|
||||
private class AbortException : Exception { }
|
||||
|
||||
private class ResultItem {
|
||||
public string FileName;
|
||||
public string Ext;
|
||||
public string Path;
|
||||
public long Size;
|
||||
|
||||
public ResultItem(string path)
|
||||
{
|
||||
this.FileName = System.IO.Path.GetFileNameWithoutExtension(path);
|
||||
this.Path = System.IO.Path.GetDirectoryName(path);
|
||||
this.Size = new FileInfo(path).Length;
|
||||
this.Ext = System.IO.Path.GetExtension(path);
|
||||
if (!string.IsNullOrEmpty(this.Ext) && this.Ext.StartsWith("."))
|
||||
this.Ext = this.Ext.Substring(1);
|
||||
}
|
||||
|
||||
public override int GetHashCode() {
|
||||
return FileName.GetHashCode() + Ext.GetHashCode() + Path.GetHashCode() + (int)Size;
|
||||
}
|
||||
}
|
||||
|
||||
enum ResultItemSortBy { FileName=0, Ext=1, Size=2, Path=3 }
|
||||
|
||||
class ResultItemComparer : IComparer<ResultItem> {
|
||||
private ResultItemSortBy _sortBy;
|
||||
private bool _ascending = false;
|
||||
|
||||
public ResultItemComparer() {
|
||||
_sortBy = ResultItemSortBy.Size;
|
||||
}
|
||||
public ResultItemComparer(ResultItemSortBy sortBy, bool ascending) {
|
||||
_sortBy = sortBy;
|
||||
//_col = column;
|
||||
_ascending = ascending;
|
||||
}
|
||||
|
||||
#region IComparer<ListViewItem> Members
|
||||
|
||||
private string GetAttrib(ResultItem itm, ResultItemSortBy prm) {
|
||||
if( prm == ResultItemSortBy.FileName )
|
||||
return itm.FileName;
|
||||
else if( prm == ResultItemSortBy.Ext )
|
||||
return itm.Ext;
|
||||
else if( prm == ResultItemSortBy.Path )
|
||||
return itm.Path;
|
||||
|
||||
else return string.Empty;
|
||||
}
|
||||
|
||||
public int Compare(ResultItem a, ResultItem b) {
|
||||
|
||||
switch( _sortBy ) {
|
||||
case ResultItemSortBy.FileName:
|
||||
case ResultItemSortBy.Ext:
|
||||
case ResultItemSortBy.Path:
|
||||
string strA = GetAttrib(_ascending ? a : b, _sortBy);
|
||||
string strB = GetAttrib(_ascending ? b : a, _sortBy);
|
||||
|
||||
return String.Compare(strA, strB);
|
||||
|
||||
case ResultItemSortBy.Size:
|
||||
long iA = (_ascending ? a : b).Size;
|
||||
long iB = (_ascending ? b : a).Size;
|
||||
|
||||
return Math.Sign(iA - iB);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
const int PAGE_SIZE = 800;
|
||||
const int SORT_ASC_IMAGEINDEX = 2;
|
||||
|
||||
int currentSortingColumn = 0;
|
||||
bool sortingOrderAsc = true;
|
||||
|
||||
private string[] m_paths;
|
||||
private string m_dynamicFilters;
|
||||
|
||||
public string[] Paths { get { return m_paths; } set { m_paths = value; } }
|
||||
public List<FilterDialog.FilterEntry> Filters
|
||||
{
|
||||
get
|
||||
{
|
||||
List<FilterDialog.FilterEntry> filters = new List<FilterDialog.FilterEntry>();
|
||||
foreach (ListViewItem lvi in lvFilters.Items)
|
||||
filters.Add((FilterDialog.FilterEntry)lvi.Tag);
|
||||
|
||||
return filters;
|
||||
}
|
||||
set
|
||||
{
|
||||
lvFilters.Items.Clear();
|
||||
foreach (FilterDialog.FilterEntry fe in value)
|
||||
lvFilters.Items.Add(fe.CreateListViewItem());
|
||||
}
|
||||
}
|
||||
public string DynamicFilters { get { return m_dynamicFilters; } set { m_dynamicFilters = value; } }
|
||||
|
||||
List<ResultItem> _results = new List<ResultItem>();
|
||||
List<ResultItem> _subResults = null;
|
||||
bool _updating = false;
|
||||
|
||||
private ListViewItem[] _cache;
|
||||
|
||||
public TestSearchSelection() {
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void dlgTestSearchSelection_Load(object sender, EventArgs e) {
|
||||
|
||||
currentSortingColumn = 2;
|
||||
lvFiles.Columns[currentSortingColumn].ImageIndex = SORT_ASC_IMAGEINDEX + ( sortingOrderAsc ? 0 : 1 );
|
||||
|
||||
StartScanThread();
|
||||
}
|
||||
|
||||
ListViewItem _CreateListViewItem(ResultItem ri) {
|
||||
var lvi = new ListViewItem(ri.FileName);
|
||||
lvi.SubItems.Add(ri.Ext);
|
||||
lvi.SubItems.Add(Utility.FormatSizeString(ri.Size)).Tag = ri.Size;
|
||||
lvi.SubItems.Add(ri.Path);
|
||||
lvi.Tag = ri.GetHashCode();
|
||||
|
||||
return lvi;
|
||||
}
|
||||
|
||||
|
||||
void UpdateTotalStat(List<ResultItem> items) {
|
||||
long sum = 0;
|
||||
|
||||
foreach (ResultItem r in items)
|
||||
sum += r.Size;
|
||||
|
||||
lbTotalSize.Text = string.Format(Strings.TestSearchSelection.TotalSizeLabel, items.Count, Utility.FormatSizeString(sum));
|
||||
}
|
||||
|
||||
void LoadFileView() {
|
||||
lvFiles.VirtualListSize = _results.Count;
|
||||
_cache = new ListViewItem[_results.Count];
|
||||
|
||||
UpdateTotalStat(_results);
|
||||
|
||||
ResizeColumns();
|
||||
}
|
||||
|
||||
private void UpdateFileView() {
|
||||
if( _updating )
|
||||
return;
|
||||
|
||||
_updating = true;
|
||||
try {
|
||||
string str = tbSearch.Text;
|
||||
|
||||
lvFiles.BeginUpdate();
|
||||
try {
|
||||
ClearFileCache();
|
||||
|
||||
if( !string.IsNullOrEmpty(str) ) {
|
||||
_subResults = new List<ResultItem>();
|
||||
foreach (ResultItem r in _results)
|
||||
if (r.FileName.Contains(str) || r.Ext.Contains(str) || r.Path.Contains(str))
|
||||
_subResults.Add(r);
|
||||
|
||||
_cache = new ListViewItem[_subResults.Count];
|
||||
lvFiles.VirtualListSize = _subResults.Count;
|
||||
|
||||
UpdateTotalStat(_subResults);
|
||||
|
||||
if( !btnClearSearch.Visible )
|
||||
btnClearSearch.Visible = true;
|
||||
|
||||
} else {
|
||||
_subResults = null;
|
||||
lvFiles.VirtualListSize = _results.Count;
|
||||
|
||||
btnClearSearch.Visible = false;
|
||||
|
||||
UpdateTotalStat(_results);
|
||||
}
|
||||
} finally {
|
||||
lvFiles.EndUpdate();
|
||||
}
|
||||
|
||||
} finally {
|
||||
_updating = false;
|
||||
}
|
||||
}
|
||||
|
||||
private List<ResultItem> DoTestSearchSelection(List<FilterDialog.FilterEntry> filters) {
|
||||
|
||||
List<KeyValuePair<bool, string>> dyn_filters = new List<KeyValuePair<bool, string>>();
|
||||
foreach (FilterDialog.FilterEntry fe in filters)
|
||||
dyn_filters.Add(new KeyValuePair<bool, string>(fe.Include, fe.Filter));
|
||||
|
||||
if (!string.IsNullOrEmpty(DynamicFilters))
|
||||
dyn_filters.AddRange(Library.Utility.FilenameFilter.DecodeFilter(DynamicFilters));
|
||||
|
||||
FilenameFilter fn = new FilenameFilter(dyn_filters);
|
||||
|
||||
try
|
||||
{
|
||||
CallbackHandler handler = new CallbackHandler(scanWorker, fn);
|
||||
foreach (string scanDir in Paths)
|
||||
{
|
||||
if (!scanWorker.CancellationPending)
|
||||
Library.Utility.Utility.EnumerateFileSystemEntries(scanDir, handler.AddFileToList_Callback);
|
||||
}
|
||||
|
||||
return handler.Results;
|
||||
}
|
||||
catch (AbortException)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class CallbackHandler
|
||||
{
|
||||
public List<ResultItem> Results = new List<ResultItem>();
|
||||
private BackgroundWorker Worker;
|
||||
private FilenameFilter Filter;
|
||||
|
||||
public CallbackHandler(BackgroundWorker worker, FilenameFilter filter)
|
||||
{
|
||||
Worker = worker;
|
||||
Filter = filter;
|
||||
}
|
||||
|
||||
public bool AddFileToList_Callback(string rootpath, string path, FileAttributes attributes)
|
||||
{
|
||||
|
||||
if (Worker.CancellationPending)
|
||||
throw new AbortException();
|
||||
|
||||
if (!Filter.ShouldInclude(rootpath, path))
|
||||
return false;
|
||||
|
||||
if ((attributes & FileAttributes.Directory) == 0 && (attributes & Utility.ATTRIBUTE_ERROR) == 0)
|
||||
{
|
||||
Results.Add(new ResultItem(path));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Update Search Selection upon changed Filter
|
||||
|
||||
//TODO: Does not work, because the folder that contains a file could be excluded,
|
||||
// causing files to be excluded even though they match no filter...
|
||||
//
|
||||
//This should probably not be used, because it can accidentially show wrong
|
||||
// results if some subtle aspect of the filter process is not done 100% correct
|
||||
//
|
||||
|
||||
/*private void UpdateSearchSelection()
|
||||
{
|
||||
FilenameFilter fn = new FilenameFilter(Filters);
|
||||
|
||||
List<ResultItem> bin = new List<ResultItem>();
|
||||
|
||||
foreach( ResultItem ri in _results ) {
|
||||
string fileName = string.Format("{0}.{1}", ri.FileName, ri.Ext);
|
||||
|
||||
if( !fn.ShouldInclude(ri.Path, Path.Combine(ri.Path, fileName) ) )
|
||||
bin.Add(ri);
|
||||
}
|
||||
|
||||
foreach( ResultItem ri in bin )
|
||||
_results.Remove(ri);
|
||||
}*/
|
||||
|
||||
private void ResizeColumns() {
|
||||
//lvFiles.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
//lvFiles.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
lvFiles.AutoResizeColumn(3, ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
}
|
||||
|
||||
private ResultItem GetResultItem(int index) {
|
||||
if( _subResults == null ) {
|
||||
if( index < _results.Count )
|
||||
return _results[index];
|
||||
|
||||
} else if( index < _subResults.Count )
|
||||
return _subResults[index];
|
||||
|
||||
return null;
|
||||
}
|
||||
private List<ResultItem> GetResultList() {
|
||||
if( _subResults == null )
|
||||
return _results;
|
||||
else return _subResults;
|
||||
}
|
||||
private void ClearFileCache() {
|
||||
for( int i = 0;i < _cache.Length;i++ )
|
||||
_cache[i] = null;
|
||||
}
|
||||
private void SortView(ResultItemSortBy sortBy, bool sortDirectionAsc) {
|
||||
ClearFileCache();
|
||||
|
||||
GetResultList().Sort(new ResultItemComparer(sortBy, sortDirectionAsc));
|
||||
|
||||
lvFiles.Invalidate();
|
||||
}
|
||||
|
||||
void AddFilter(bool include, string filter) {
|
||||
FilterDialog.FilterEntry fe = new FilterDialog.FilterEntry(include, FilenameFilter.ConvertGlobbingToRegExp(filter), filter);
|
||||
lvFilters.Items.Add(fe.CreateListViewItem());
|
||||
}
|
||||
|
||||
string GetFileFilterStr(string filename, string ext) {
|
||||
if (filename == "*")
|
||||
return string.Format("*.{0}", ext);
|
||||
else
|
||||
return string.Format("*\\{0}.{1}", filename, ext);
|
||||
}
|
||||
|
||||
void _AddSelectedFilter(bool include, bool anyFileName) {
|
||||
if( lvFiles.SelectedIndices.Count > 0 ) {
|
||||
foreach( int index in lvFiles.SelectedIndices ) {
|
||||
ResultItem itm = GetResultItem(index);
|
||||
string filter = GetFileFilterStr(!anyFileName ? itm.FileName : "*", itm.Ext);
|
||||
|
||||
AddFilter(include, filter);
|
||||
}
|
||||
|
||||
StartScanThread();
|
||||
}
|
||||
}
|
||||
|
||||
// Exclude FileName
|
||||
private void addFilenameFilterToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||
_AddSelectedFilter(false, false);
|
||||
|
||||
}
|
||||
|
||||
// Exclude File Ext
|
||||
private void addFileExtensionFilterToolStripMenuItem1_Click(object sender, EventArgs e) {
|
||||
_AddSelectedFilter(false, true);
|
||||
}
|
||||
|
||||
// Exclude File Path
|
||||
private void ctxSelection_Opened(object sender, EventArgs e) {
|
||||
if( lvFiles.SelectedIndices.Count > 0 ) {
|
||||
ResultItem itm = GetResultItem(lvFiles.SelectedIndices[0]);
|
||||
// Set Include names
|
||||
string fileName = string.Format(Strings.TestSearchSelection.FileName, GetFileFilterStr(itm.FileName, itm.Ext));
|
||||
string fileExt = string.Format(Strings.TestSearchSelection.FileType, GetFileFilterStr("*", itm.Ext));
|
||||
miIncludeFileName.Text = fileName;
|
||||
miIncludeFileExt.Text = fileExt;
|
||||
miExcludeFileName.Text = fileName;
|
||||
miExcludeFileExt.Text = fileExt;
|
||||
|
||||
// Add Path items
|
||||
miExcludeFilePath.DropDownItems.Clear();
|
||||
miIncludeFilePath.DropDownItems.Clear();
|
||||
|
||||
string fullpath = Utility.AppendDirSeparator(itm.Path);
|
||||
string root = System.IO.Path.GetPathRoot(fullpath);
|
||||
string curpath = System.IO.Path.GetDirectoryName(fullpath);
|
||||
List<string> folderlist = new List<string>();
|
||||
|
||||
do
|
||||
{
|
||||
if (curpath != System.IO.Path.GetDirectoryName(curpath))
|
||||
folderlist.Add(Utility.AppendDirSeparator(curpath));
|
||||
curpath = System.IO.Path.GetDirectoryName(curpath);
|
||||
} while (root != curpath);
|
||||
|
||||
folderlist.Add(root);
|
||||
|
||||
foreach (string s in folderlist)
|
||||
{
|
||||
if (s.Length >= fullpath.Length)
|
||||
continue;
|
||||
|
||||
string filter = string.Format(@"*\{0}", fullpath.Substring(s.Length));
|
||||
miIncludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = true;
|
||||
miExcludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = false;
|
||||
}
|
||||
|
||||
foreach (string s in folderlist)
|
||||
{
|
||||
string filter = string.Format(@"{0}", s);
|
||||
miIncludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = true;
|
||||
miExcludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Include fileName
|
||||
private void miIncludeFileName_Click(object sender, EventArgs e) {
|
||||
_AddSelectedFilter(true, false);
|
||||
}
|
||||
|
||||
// Include File Ext
|
||||
private void miIncludeFileExt_Click(object sender, EventArgs e) {
|
||||
_AddSelectedFilter(true, true);
|
||||
}
|
||||
|
||||
|
||||
void StartScanThread() {
|
||||
lbLoading.Visible = true;
|
||||
tbSearch.Enabled = false;
|
||||
lvFiles.Enabled = false;
|
||||
lvFilters.Enabled = false;
|
||||
scanWorker.RunWorkerAsync(this.Filters);
|
||||
}
|
||||
private void scanWorker_DoWork(object sender, DoWorkEventArgs e) {
|
||||
//if( _results.Count == 0 )
|
||||
e.Result = DoTestSearchSelection((List<FilterDialog.FilterEntry>)e.Argument);
|
||||
//else UpdateSearchSelection();
|
||||
|
||||
if (scanWorker.CancellationPending)
|
||||
e.Cancel = true;
|
||||
}
|
||||
private void scanWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
|
||||
if (e.Error == null && !e.Cancelled && e.Result as List<ResultItem> != null)
|
||||
{
|
||||
lbLoading.Visible = false;
|
||||
tbSearch.Enabled = true;
|
||||
lvFiles.Enabled = true;
|
||||
lvFilters.Enabled = true;
|
||||
|
||||
_results = (List<ResultItem>)e.Result;
|
||||
|
||||
LoadFileView();
|
||||
SortView((ResultItemSortBy)currentSortingColumn, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Should report the error to the user somehow
|
||||
}
|
||||
}
|
||||
|
||||
private void FilterFilePath_Click(object sender, EventArgs e) {
|
||||
ToolStripItem itm = sender as ToolStripItem;
|
||||
AddFilter((bool)itm.Tag, itm.Text);
|
||||
|
||||
StartScanThread();
|
||||
}
|
||||
private void lvFiles_ColumnClick(object sender, ColumnClickEventArgs e) {
|
||||
if( currentSortingColumn != e.Column )
|
||||
sortingOrderAsc = true;
|
||||
else sortingOrderAsc = !sortingOrderAsc;
|
||||
|
||||
if( currentSortingColumn != -1 ) {
|
||||
lvFiles.Columns[currentSortingColumn].ImageIndex = -1;
|
||||
lvFiles.Columns[currentSortingColumn].TextAlign = HorizontalAlignment.Left;
|
||||
}
|
||||
|
||||
lvFiles.Columns[e.Column].ImageIndex = SORT_ASC_IMAGEINDEX + ( sortingOrderAsc ? 0 : 1 );
|
||||
|
||||
SortView((ResultItemSortBy)e.Column, sortingOrderAsc);
|
||||
|
||||
currentSortingColumn = e.Column;
|
||||
}
|
||||
|
||||
private void removeFilterToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||
if( lvFilters.SelectedItems.Count > 0 ) {
|
||||
|
||||
for(int i = lvFilters.SelectedItems.Count-1; i > -1; i--) {
|
||||
lvFilters.Items.RemoveAt(lvFilters.SelectedItems[i].Index);
|
||||
}
|
||||
|
||||
StartScanThread();
|
||||
}
|
||||
}
|
||||
private void addFilePathFilerToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||
|
||||
}
|
||||
private void btnClose_Click(object sender, EventArgs e) {
|
||||
scanWorker.CancelAsync();
|
||||
Close();
|
||||
}
|
||||
|
||||
private void lvFiles_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) {
|
||||
|
||||
ListViewItem itm = e.ItemIndex < _cache.Length ? _cache[e.ItemIndex] : null;
|
||||
if( itm == null ) {
|
||||
ResultItem ri = GetResultItem(e.ItemIndex);
|
||||
if( ri != null )
|
||||
itm = _CreateListViewItem(ri);
|
||||
}
|
||||
e.Item = itm;
|
||||
}
|
||||
private void lvFiles_CacheVirtualItems(object sender, CacheVirtualItemsEventArgs e) {
|
||||
|
||||
if( _cache.Length > 0 ) {
|
||||
|
||||
int length = e.EndIndex - e.StartIndex + 1;
|
||||
|
||||
for( int i = e.StartIndex;i < length;i++ ) {
|
||||
if( _cache[i] == null )
|
||||
_cache[i] = _CreateListViewItem(GetResultItem(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
private void tbSearch_TextChanged(object sender, EventArgs e) {
|
||||
UpdateFileView();
|
||||
}
|
||||
private void btnClearSearch_Click(object sender, EventArgs e) {
|
||||
tbSearch.Text = string.Empty;
|
||||
_subResults = null;
|
||||
LoadFileView();
|
||||
btnClearSearch.Visible = false;
|
||||
}
|
||||
|
||||
private void btnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.DialogResult = DialogResult.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class ThreadPriorityPicker
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ThreadPriorityPicker));
|
||||
this.ThreadPriority = new System.Windows.Forms.ComboBox();
|
||||
this.ThreadPriorityEnabled = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ThreadPriority
|
||||
//
|
||||
resources.ApplyResources(this.ThreadPriority, "ThreadPriority");
|
||||
this.ThreadPriority.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.ThreadPriority.FormattingEnabled = true;
|
||||
this.ThreadPriority.Items.AddRange(new object[] {
|
||||
resources.GetString("ThreadPriority.Items"),
|
||||
resources.GetString("ThreadPriority.Items1"),
|
||||
resources.GetString("ThreadPriority.Items2"),
|
||||
resources.GetString("ThreadPriority.Items3"),
|
||||
resources.GetString("ThreadPriority.Items4")});
|
||||
this.ThreadPriority.Name = "ThreadPriority";
|
||||
this.ThreadPriority.SelectedIndexChanged += new System.EventHandler(this.ThreadPriority_SelectedIndexChanged);
|
||||
//
|
||||
// ThreadPriorityEnabled
|
||||
//
|
||||
resources.ApplyResources(this.ThreadPriorityEnabled, "ThreadPriorityEnabled");
|
||||
this.ThreadPriorityEnabled.Name = "ThreadPriorityEnabled";
|
||||
this.ThreadPriorityEnabled.UseVisualStyleBackColor = true;
|
||||
this.ThreadPriorityEnabled.CheckedChanged += new System.EventHandler(this.ThreadPriorityEnabled_CheckedChanged);
|
||||
//
|
||||
// ThreadPriorityPicker
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.ThreadPriority);
|
||||
this.Controls.Add(this.ThreadPriorityEnabled);
|
||||
this.Name = "ThreadPriorityPicker";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox ThreadPriority;
|
||||
private System.Windows.Forms.CheckBox ThreadPriorityEnabled;
|
||||
}
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class ThreadPriorityPicker : UserControl
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Textual representation of priorities
|
||||
/// </summary>
|
||||
private static readonly string[] THREAD_PRIORITIES = new string[] {
|
||||
GUI.Strings.Common.ThreadPriorityHighest,
|
||||
GUI.Strings.Common.ThreadPriorityAboveNormal,
|
||||
GUI.Strings.Common.ThreadPriorityNormal,
|
||||
GUI.Strings.Common.ThreadPriorityBelowNormal,
|
||||
GUI.Strings.Common.ThreadPriortyLowest
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Mapping the priority to the string index
|
||||
/// </summary>
|
||||
private static readonly System.Threading.ThreadPriority[] PRIORITY_LOOKUP = new System.Threading.ThreadPriority[] {
|
||||
System.Threading.ThreadPriority.Highest,
|
||||
System.Threading.ThreadPriority.AboveNormal,
|
||||
System.Threading.ThreadPriority.Normal,
|
||||
System.Threading.ThreadPriority.BelowNormal,
|
||||
System.Threading.ThreadPriority.Lowest,
|
||||
};
|
||||
|
||||
public event EventHandler SelectedPriorityChanged;
|
||||
|
||||
public ThreadPriorityPicker()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
ThreadPriority.Items.Clear();
|
||||
ThreadPriority.Items.AddRange(THREAD_PRIORITIES);
|
||||
ThreadPriority.SelectedIndex = 2;
|
||||
}
|
||||
|
||||
[DefaultValue(null)]
|
||||
public System.Threading.ThreadPriority? SelectedPriority
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ThreadPriorityEnabled.Checked)
|
||||
return PRIORITY_LOOKUP[ThreadPriority.SelectedIndex];
|
||||
else
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
ThreadPriorityEnabled.Checked = false;
|
||||
else
|
||||
{
|
||||
ThreadPriorityEnabled.Checked = true;
|
||||
ThreadPriority.SelectedIndex = Array.IndexOf<System.Threading.ThreadPriority>(PRIORITY_LOOKUP, value.Value);
|
||||
}
|
||||
|
||||
if (SelectedPriorityChanged != null)
|
||||
SelectedPriorityChanged(this, null);
|
||||
}
|
||||
}
|
||||
|
||||
private void ThreadPriorityEnabled_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ThreadPriority.Enabled = ThreadPriorityEnabled.Checked;
|
||||
|
||||
if (SelectedPriorityChanged != null)
|
||||
SelectedPriorityChanged(this, null);
|
||||
}
|
||||
|
||||
private void ThreadPriority_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (SelectedPriorityChanged != null)
|
||||
SelectedPriorityChanged(this, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,210 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="ThreadPriority.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="ThreadPriority.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="ThreadPriority.Items" xml:space="preserve">
|
||||
<value>High (Not recommended)</value>
|
||||
</data>
|
||||
<data name="ThreadPriority.Items1" xml:space="preserve">
|
||||
<value>Above normal</value>
|
||||
</data>
|
||||
<data name="ThreadPriority.Items2" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="ThreadPriority.Items3" xml:space="preserve">
|
||||
<value>Below normal</value>
|
||||
</data>
|
||||
<data name="ThreadPriority.Items4" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="ThreadPriority.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>152, 0</value>
|
||||
</data>
|
||||
<data name="ThreadPriority.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 21</value>
|
||||
</data>
|
||||
<data name="ThreadPriority.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>20</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriority.Name" xml:space="preserve">
|
||||
<value>ThreadPriority</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriority.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriority.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriority.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>108, 17</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>19</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.Text" xml:space="preserve">
|
||||
<value>Set thread priority</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriorityEnabled.Name" xml:space="preserve">
|
||||
<value>ThreadPriorityEnabled</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriorityEnabled.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriorityEnabled.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>ThreadPriorityEnabled.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>322, 23</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>ThreadPriorityPicker</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,70 +0,0 @@
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
partial class WaitForOperation
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WaitForOperation));
|
||||
this.progressBar1 = new System.Windows.Forms.ProgressBar();
|
||||
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// progressBar1
|
||||
//
|
||||
resources.ApplyResources(this.progressBar1, "progressBar1");
|
||||
this.progressBar1.Name = "progressBar1";
|
||||
this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||
//
|
||||
// backgroundWorker1
|
||||
//
|
||||
this.backgroundWorker1.WorkerReportsProgress = true;
|
||||
this.backgroundWorker1.WorkerSupportsCancellation = true;
|
||||
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
|
||||
this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
|
||||
//
|
||||
// WaitForOperation
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.progressBar1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "WaitForOperation";
|
||||
this.ShowInTaskbar = false;
|
||||
this.Load += new System.EventHandler(this.WaitForOperation_Load);
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.WaitForOperation_FormClosing);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ProgressBar progressBar1;
|
||||
private System.ComponentModel.BackgroundWorker backgroundWorker1;
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI.HelperControls
|
||||
{
|
||||
public partial class WaitForOperation : Form
|
||||
{
|
||||
private Exception m_exception;
|
||||
private DoWorkEventHandler m_handler;
|
||||
private bool m_useAbortCancel;
|
||||
private object m_lock = new object();
|
||||
private System.Threading.Thread m_workerThread = null;
|
||||
|
||||
public WaitForOperation()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void Setup(DoWorkEventHandler callback, string title, bool useAbortCancel)
|
||||
{
|
||||
m_handler = callback;
|
||||
this.Text = title;
|
||||
m_useAbortCancel = useAbortCancel;
|
||||
}
|
||||
|
||||
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
m_exception = e.Error;
|
||||
if (e.Cancelled || e.Error != null)
|
||||
this.DialogResult = DialogResult.Cancel;
|
||||
else
|
||||
this.DialogResult = DialogResult.OK;
|
||||
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void WaitForOperation_Load(object sender, EventArgs e)
|
||||
{
|
||||
backgroundWorker1.RunWorkerAsync();
|
||||
}
|
||||
|
||||
public Exception Error { get { return m_exception; } }
|
||||
|
||||
private delegate void SetTitleDelegate(string title);
|
||||
private delegate void SetProgressDelegate(int progress);
|
||||
|
||||
public void SetTitle(string title)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
this.Invoke(new SetTitleDelegate(SetTitle), title);
|
||||
else
|
||||
{
|
||||
this.Text = title;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetProgress(int progress)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
this.Invoke(new SetProgressDelegate(SetProgress), progress);
|
||||
else
|
||||
{
|
||||
if (progress < 0)
|
||||
{
|
||||
progressBar1.Style = ProgressBarStyle.Marquee;
|
||||
}
|
||||
else
|
||||
{
|
||||
progressBar1.Style = ProgressBarStyle.Continuous;
|
||||
progressBar1.Value = Math.Max(0, Math.Min(progress, 100));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void WaitForOperation_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (e.CloseReason == CloseReason.UserClosing && backgroundWorker1.IsBusy)
|
||||
{
|
||||
if (!backgroundWorker1.CancellationPending)
|
||||
{
|
||||
if (MessageBox.Show(this, Strings.WaitForOperation.ReallyAbortQuestion, Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3) == DialogResult.Yes)
|
||||
{
|
||||
backgroundWorker1.CancelAsync();
|
||||
if (m_useAbortCancel)
|
||||
{
|
||||
lock (m_lock)
|
||||
if (m_workerThread != null)
|
||||
m_workerThread.Abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
lock (m_lock)
|
||||
m_workerThread = System.Threading.Thread.CurrentThread;
|
||||
|
||||
m_handler.Invoke(sender, e);
|
||||
}
|
||||
catch(System.Threading.ThreadAbortException)
|
||||
{
|
||||
System.Threading.Thread.ResetAbort();
|
||||
e.Cancel = true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
lock (m_lock)
|
||||
m_workerThread = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,680 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="progressBar1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="progressBar1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 8</value>
|
||||
</data>
|
||||
<data name="progressBar1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>274, 23</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="progressBar1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.Name" xml:space="preserve">
|
||||
<value>progressBar1</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>307, 41</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAwAMDAQAAEABABoBgAAxgAAACAgEAABAAQA6AIAAC4HAAAYGBAAAQAEAOgBAAAWCgAAEBAQAAEA
|
||||
BAAoAQAA/gsAADAwAAABAAgAqA4AACYNAAAgIAAAAQAIAKgIAADOGwAAGBgAAAEACADIBgAAdiQAABAQ
|
||||
AAABAAgAaAUAAD4rAAAwMAAAAQAgAKglAACmMAAAICAAAAEAIACoEAAATlYAABgYAAABACAAiAkAAPZm
|
||||
AAAQEAAAAQAgAGgEAAB+cAAAKAAAADAAAABgAAAAAQAEAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP//
|
||||
/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh3
|
||||
d3d3d4eAAAAAAAAAAAAAAAAAAAAAB3d3iIiIiHd4cAAAAAAAAAAAAAAAAAAHd4j4eHd3eIiHeHAAAAAA
|
||||
AAAAAAAAAAh3iIdnZmZuZmd4iHhwAAAAAAAAAAAAAHd/d2Z2Z2hnZ2ZnaIeHAAAAAAAAAAAAB3iHZnZn
|
||||
52ZnZ+dudniHgAAAAAAAAAAAd4hnZ+dmdududmdnZ2eIeAAAAAAAAAAHeIZ25nbnZ2Z2Z252bnZoh4AA
|
||||
AAAAAACHiGZnZ2Z25n52fnZnZ2Z2iHgAAAAAAAh4dnfnZoZnZ2dudmdudufmaIeAAAAAAAd4duZ2525+
|
||||
duZ2Z3Z2Z2Z2dohwAAAAAIeHZ2dmdmdmZ2fnb/hobnZ+Z3h4AAAAAHiG5+Z+Z+Z+dnZmiP9md25nbmiI
|
||||
AAAACHh2dn5n52fnZ/+Gj492j4dn52eHgAAAB3hm52dnZudmaPj4+P///4hmdn54cAAAh4fnZufm52aG
|
||||
eP////j4/4hufmd4iAAAh4dn52Z2dobm5o+PiIj//4ZnZn5oeAAAd4bnZ+fn5udnZ4/4dmaI+IZ+fmdo
|
||||
eAAAh4Z+bnZmdn5oiI+IZoZo/4iGZ+fneAAAeH52dufn5+doj/+Gfm54j/+IZnZ4eAAAeHbn52dmdnZo
|
||||
/4/252do/4+Ibn5neAAAd4Z+ZufohohnePj3Z+Zo/4h+dufneAAAeH5n52d4j4h+Zo//hnaP+HbmfnZo
|
||||
dwAAeHbnbn5/iPj4do+PiI/4/4Z+Z+fneAAAh45+doj4dnj4eI//////j4fn5n5oeAAAd4Zn5niIbmiH
|
||||
aI+I+Pj4/4dufmfneAAAh45+fmb4dniPhoiGf/hniI5n5+doeAAAh4fm52j4iIiIbmbmePhuZm5+Z+aH
|
||||
iAAAiHfnbniIiPiGfn5+aPhn6Ghufn53iAAACHhufm5m+H9+bnbn52bn5ubn5seHgAAACIh+fnaGhudu
|
||||
fn5+fn5+fn5+fo54gAAAAIeG5+fm525+fmhufm5+aOfn5mh4AAAAAHiHfm5+fn5ufn5n5+fn5m5+fneI
|
||||
AAAAAAh4aOfn5+fn5ufm5+fmjn7H54eAAAAAAAiHhufOfm5+fn5+fs5+bn5+aFiAAAAAAACIeG6Obn5+
|
||||
fn5+fn5+fn5od4gAAAAAAAAIh4bn5+fm5+zn5ufn5+fneIAAAAAAAAAAiHh+fn5+fn5+fn5+bnaHiAAA
|
||||
AAAAAAAACId35ufn5ufm5+fmjId4gAAAAAAAAAAAAIiHh+fs5+fn5+bn53eIAAAAAAAAAAAAAAiId3d+
|
||||
fn5+fnd4d4iAAAAAAAAAAAAAAAAIiHh4d3aGd4d3iIAAAAAAAAAAAAAAAAAACIiHd3d3d3iIgAAAAAAA
|
||||
AAAAAAAAAAAAAAiIj4j4iIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA//+AAf//AAD//gAAf/8AAP/4AAAf/wAA/+AAAAf/
|
||||
AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAA
|
||||
AAAADwAA8AAAAAAPAADgAAAAAAcAAOAAAAAABwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
|
||||
AAAAAwAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPAAAAAADwAA+AAAAAAf
|
||||
AAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/4
|
||||
AAAf/wAA//4AAH//AAD//4AB//8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAQAAAAAAAAC
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/
|
||||
AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHd3eIAAAAAAAAAAAAAAh3
|
||||
iIiIh3eAAAAAAAAAAAB3iHZnZneIhwAAAAAAAACHiGZnZnZmZ3h4AAAAAAAIeHZ2dn5naGZniIAAAAAA
|
||||
h4ZmfmdnZ+Z+dmh4AAAAAHhnaGZ+ZudmZ252iAAAAAeHZ+ZnZ2dmiGZ2dnhwAACHhuZ2huZ+d/hn5+Z4
|
||||
iAAAiGdn5mdniIf/iIdn5ocAAHhudnbn5o//+P/4bnaIAAh3Z+bnZ2fo+HiPhnZnaIAIhoZ2fn5oj4bm
|
||||
f/h+fneAB4bm5+ZnePiHbm//hnbngAeGd+Z4eGiP9nd/iIbnaHAHhuZ2iPiGb/jnj4bn5oeACHhueIho
|
||||
iIj4///3bnbngAh+fmiG5/aPiPiI9+fnd4AIh2hoiIiIZ+b4bnbnbniAAHjm5+iPbm52iGfn5ud4AACH
|
||||
fn54aH5+fm5+bn5+eAAAiIbn5ubn5+fn5+fn54gAAAh4bn5+fm5+fm5+fneAAAAAh+fn5+fn5ufn5+d4
|
||||
AAAAAIh35ufn5+fn5+Z3iAAAAAAIh45+zn7Ofn5+eIAAAAAAAIh3fn5+fn5nd4gAAAAAAAAAiHeG5+fn
|
||||
h4gAAAAAAAAAAAiIh3d3d4iAAAAAAAAAAAAAAIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////w
|
||||
D///gAH//wAA//wAAD/4AAAf8AAAD/AAAA/gAAAHwAAAA8AAAAPAAAADgAAAAYAAAAGAAAABgAAAAYAA
|
||||
AAGAAAABgAAAAYAAAAHAAAADwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/8AAP//gAH///AP////
|
||||
//8oAAAAGAAAADAAAAABAAQAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
|
||||
AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAA
|
||||
AACHeId4AAAAAAAAAHh4dneHhwAAAAAAB4dmZ2ZmeIAAAAAAeGZ2fmfnZocAAAAHhnbnZnZmdmiAAACI
|
||||
Zudm52iG52aIAAB3Z2fnaGj3hoZ4AAiG5+Z2j//4+G5ogAd2dnbnaPd/9nZ3gAh+bn52/4bn/45ucAd+
|
||||
doaHj4Zn+HZ3gAhn54iIaPiI9ufncAeOaIaIb/j/+G5+cAh254joh2iGhudogAiGfniH5ueObn5ogACO
|
||||
fmjm5+5ufn54AACH5+aG52jn5+d4AAAIfn5ufuZ+bneAAAAAh+fn537n53gAAAAACHfn7mhud4AAAAAA
|
||||
AIh3d+eHiAAAAAAAAACIiIeIAAAAAAAAAAAAAAAAAAAAAP///wD/AP8A/AA/APgAHwDwAA8A4AAHAMAA
|
||||
AwDAAAMAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A+AAfAPwA
|
||||
PwD/AP8A////ACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA
|
||||
AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAA
|
||||
AAAAAId3eHgAAAAHdn5maHAAAIdudnZ2eAAIdnZnb25ogAdufn+PiGaACGdmaI6IfnAH5+iPdo92gAfn
|
||||
iHj4+OZwB2iGjn9+fnAI5ojn5+dngAh+bn5ufueAAIfn5+fnaAAACH5ufmiAAAAAiHd4eAAAAAAAAAAA
|
||||
AAD//wAA8A8AAOAHAADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAADAAwAA4AcAAPAP
|
||||
AAD//wAAKAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAB7dyQAeXcuAH57
|
||||
KgBycnMAdHR0AHl5eQB9fX0Agn4mAIV/KACLhSYAhoMpAImFKQCIhSwAjIYsAI2JKQCPjCsAjYksAI+O
|
||||
LwCQiikAkYwqAJSPKwCRjiwAl5EqAJKQLgCVki4Al5QvAJmRKQCdlisAmJMsAJmWLgCcli0Am5gvAJyZ
|
||||
LgCHgzIAiYUyAI2KMQCOjTAAj400AIqGPgCLiDoAiog9AI2IPQCRjzAAkIo4AJCOOACQizwAkow9AJKQ
|
||||
MACUkjAAl5UwAJKQNgCZljAAmJM0AJqWNACdmTAAnpk0AJOROQCYkz4An5k6AKKbLQCgmzAAoZwwAKSe
|
||||
MACjnjUAoZo7AKegLwCroy0AsKcuALKpLgC4ri8ApqEwAKukMACvqDEAs6sxALiuMAC8sjEAvbI6AMG2
|
||||
MQDEuDIAyb0yAM3AMgCGhUIAjotCAIuJRACIhkoAi4hKAI2LSQCOjEkAkIxFAJKQRQCZk0EAn5lDAJSQ
|
||||
TACYlEsAnppLAIaFUgCMi10AkY1TAJCOXgCUklMAlZNXAJqVUQCfmlcAlZJfAJWUXwCYllsAmJZcAJ2Z
|
||||
XACinEIAo51WAKOdWwCnoEMAradMALKpRQCyqkgAqKFWAKahWACqpFsAiophAI+OZQCLi2gAjItoAJWT
|
||||
ZwCZlmAAmJZlAJ6bZwCVlGgAnplsAJaWdwCfnXQAmZd/AKOdYwChnGgAoJ1yAKGfeACmomUAp6RqAKik
|
||||
agClonEAqaZzAKyodwCkonsAqKV+AKupfgB/f4AAgH+AAIGBgQCEhYUAiYmJAIuLjACNjY0AnJqEAJeW
|
||||
jwCYl4wAm5qKAJyciwCZmIwAnZ2NAJGRkQCVlZIAk5OUAJWVlQCbmpQAl5eYAJmYmQCbm5wAnJucAJ2d
|
||||
nQCgnokAp6WDAKmngwCrqYQApKOPAKqoigCtq4sArqyMALOwjQCioZUApKOXAKWklACop5AAraySAKOj
|
||||
mQCkpJkAoqKcAKamnQCop54Aq6qfALCukwC0spIAsrGVALWzlQC2tJ0AuLefAKGhoQCkpKEApKSkAKur
|
||||
pQCurqcAqampAK6uqgCtra0AubejALq5owCwsKwAvLupAL6+rgCxsbEAtbW1AL+/sQC6urcAt7e4ALm5
|
||||
uQC9vb0AwL6tAMLAqgDEw7YAwcG4AMXEuQDAwL8Ax8a/AMnJvgC/v8AAwcHBAMXFxQDIx8AAx8jHAMnJ
|
||||
wgDNzMIAz87FAMnJyQDPz8sAzc3NANDPxgDQz8oA0dHNAM/P0ADR0dEA1tXRANXV1QDZ2dYA2dnZANzb
|
||||
2ADc3NsA3d3dAOHh3gDh4eEA5uXjAOXl5QDo6OcA6unpAO3t7QDw8PAA9fX1AP///wAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTDn5+WlJSUlJ+fpMPUAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDlpQElsPU5+fn49TIlpKWw8MAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAw5QEn+fv07SBeGFheIG00+/nwwbDwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AMOWBMjv0HpSJCQrEhIkKxIrJFJ6yPHIBsPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAn5Sf8rpgJCsrKysr
|
||||
KysrKysrKysrJGC78sOWwwAAAAAAAAAAAAAAAAAAAAAAAACfBNTheCQrKysrKysrKysrKysrKysrKysr
|
||||
eNTclMMAAAAAAAAAAAAAAAAAAAAAAJ8E78gpKysrKysrKysrKysrKysrKysrKysrK1S755bDAAAAAAAA
|
||||
AAAAAAAAAAAAnwbvmyQrKx4rNCs0KzQrNCs0KzQrNCs0KzQrKzQtm++VwwAAAAAAAAAAAAAAAADDBOeb
|
||||
OSsgHis0Hh4rICs0Hh4rICs0Hh4rICsgHiseK5vnn8MAAAAAAAAAAAAAAMgG4bs5KzQ0NDQ0KzQ0NDQ0
|
||||
KzQ0NB4rKyseNDQrNDQrNDm61MPIAAAAAAAAAAAAAJ/D01o0NDQeHh40IB40Hh40IB40HhJUaykSHjQg
|
||||
HjQ0NDRa0cPIAAAAAAAAAAAAwwbnfzQ0NDQgHh40Hh40Hh4eHiseK1ny++MKHh4rHh4gIDQ0f+GlyAAA
|
||||
AAAAAAAAn9G6NDQ+ND4gID00PSA0PSASKWYOEn37/fYDEiNlDisgIDQ9NLrQyAAAAAAAAADIBuFrND4+
|
||||
PjQ+PjQ+Pj4+NB5Z7/m/Aq77/fpjVer5zyMgPj40PmvUw8gAAAAAAADDw8g0Pj4+Pj4+Pj4+Pj4+PhLT
|
||||
+/399vr7+/v5+/39+a4rPT4+PjS6w8gAAAAAAOGU0YJHPj4+Pj4+Pj4+Pj4+PRLM+/39+/39//37/f39
|
||||
+a4ePT4+Pj6CyMPnAAAAAMiU1F9HR0dHR0dHPkc+Rz5HPhwq8v39/frj2fH7/f395Q4gPkc+R0df0J/R
|
||||
AAAAAMOWyEdHR0dHR0dHR0dHR0c+PRIB2/388WgKEiK9+f39qggePT1HR0c+w5/RAAAAAMOftkdHR0dH
|
||||
R0dHR0dHR0cebMzq+vz5hxI9Qj0O2/v9+duuXj1HR0dHtpbIAAAAAJbDj0dHR0dHR0dHR0dHPkcS3vr7
|
||||
+/z5WT1EREcerv39+/v5vxxHSUdHqp/IAAAAAJbDi0dKR0pHSkc+NBwebzoS2fr+/vz6WUJER0cervz9
|
||||
/v3yrz1ER0pHjJbDAAAAAJbDikpHSkpJSUdn2oBV770TXarM+vz7kCtERD0S5f399s+MNEdHSkdKipbD
|
||||
AAAAAJbDiUlKSUdKRz2A8vLs8sFifhIKqvz89o8OEivM+v37ZRM9R0pKSkpJipTDAAAAAJ/DiUpKSkpK
|
||||
Pm+H9/fx+fL28V4k5fv7+/rv4/b6+/z7wR5FSkpKSkpKjJTIAAAAAMOfrkVKSkpHiu/38msOWez32yqw
|
||||
+fv9/fv8/Pz8/fz78mdHSkpKSkpKj5TRAAAAAMOftkpKSktKOq7y3hJFHq/2hwm9+f39+fv9/P36+v39
|
||||
8mdKS0pKSkpKtgbRAAAAAMOf0EpNS0tKRCrx7CQcE8738r0r2u+MDov5+/ZZLdrxrz1GS01GTUZKw5bI
|
||||
AAAAANGk0HFNRk1FPdn3996PzPLqwYhCHEFCRFvy++wbRRxtQkVNRU1GRk1xn8PUAAAAAOHIw4xGTUZN
|
||||
RJDBzPb29/eqG0VLRktNRj3b8sBCS0tLRkZGRkZORkaNldTnAAAAAADIw8hNRk5GRkU9XvLYsPK+RUtO
|
||||
TkZORkVtdj9LTk5NTk5OTk5NTk20ldQAAAAAAADIyMh2Tk5OTkZOcMxtHHY/S05OTk5OTk5NRk1OTU5O
|
||||
Rk5NTk5ORnaf0MgAAAAAAAAA0aS8TU5OTk5ORkVLTkxOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTreR4AAA
|
||||
AAAAAAAAyNG6iU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OiZXRyAAAAAAAAAAAANHDu3NO
|
||||
TlBOUE5QTlBOUE5QTk5QTk5QTk5QTk5QTk5QTk5zpJfcAAAAAAAAAAAAAMjjn7pNTlBOUFBOUFBQTlBQ
|
||||
UFBOUFBOUFBOUFBOUFBOUE2yBufQAAAAAAAAAAAAAADD4Z+tTVBQUFBQUFBQUFBPUFBQUFBQUFBQUFBQ
|
||||
UFBQTakG3LsAAAAAAAAAAAAAAAAAyNGfrU1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNmAbRyAAAAAAA
|
||||
AAAAAAAAAAAAANHUn7RzUFBQUFBQUFBQUFBQUFBQUFBQUFBQUHObBtHRAAAAAAAAAAAAAAAAAAAAAADQ
|
||||
4ZXDiU1RUVBRUVBRUVBRUVBRUVBRUVBQfqQG4dAAAAAAAAAAAAAAAAAAAAAAAAAAw++fn7R2UFFRUVFR
|
||||
UVFRUVFRUVFRUHaklJTxwwAAAAAAAAAAAAAAAAAAAAAAAAAAAMjn3JSlw4ByUFFRUVFRUVFRUHOApJYG
|
||||
3OPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw+/UlJXDpIOAfnZ2foCDpJ8HB9TxwwAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAADD5+/Qn5IHkpSSBwYGltDx58QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAANTQ1PHy8u7u8vbx1NDcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA//+AAf//AAD//gAAf/8AAP/4AAAf/wAA/+AAAAf/
|
||||
AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAA
|
||||
AAAADwAA8AAAAAAPAADgAAAAAAcAAOAAAAAABwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
|
||||
AAAAAwAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPAAAAAADwAA+AAAAAAf
|
||||
AAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/4
|
||||
AAAf/wAA//4AAH//AAD//4AB//8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
|
||||
AAAAAAAAAAAAAAABAAAAAQAAAAAAAH9/fwCGgyoAjYcqAI+MLwCRjSwAlZEuAJeULwCaky4AmZUuAJyW
|
||||
LQCdmC4Ai4YzAI6MMACKiTQAkY8wAJKNNQCRjT8Ak5EwAJWSMACXlDAAmZYwAJ2ZMACalTsAoJouAKOd
|
||||
LgCgmDAAoZ0xAKSeMACmoC4AqqIuAKykLgCwpy4AsqkvALWsLwC4ri8Ap6EwAKqjMACqpDAAraYwAK+o
|
||||
MQCmoTgArqc5ALGpMQC1rTEAubAxALyyMQC+tDEAwbYyAMS3NwDFuTMAyb0zAM2/MwDNwDMAiIdAAIuK
|
||||
QACPjEUAkI9AAJORQQCTkEQAnZdBAJuYRQCemEcAk5FPAJmUSgCPjlMAkI5UAJaSVgCWlFUAnJhQAJ6a
|
||||
VQCZll4AnppZAKSeQQCjn0kAoZ1ZAKylQgCuqEoAt61DALSsRwC5r0MAua9EALqwQwC6sEQAqqRQAK6n
|
||||
XwCxqVUAsapYAJOSYQCdmmMAnptmAJ6cZwCYlnwAnZp4AKKfZQChnmsAo6FnAKShZgCsp2QAo6BqAKai
|
||||
aQCloWwAr6tpAK2pbwCxrWsAoaBwAKekcgCqpnEAral1AKKgfgClon8ApaR+AKinfQCBgYEAhYWFAI6N
|
||||
gwCKioUAh4eIAImJiQCLi4wAjo6OAJCPjwCenIIAn52EAJGRkQCTk5QAlZWVAJmYkwCdnJIAmZmZAJ6e
|
||||
mQCbnJwAnZ2dAKyqhgCtrIcApKOJAKamjgCop40Arq2LAK6sjQCxrogAtLGMALe0jQCmpZAArKuSAK2s
|
||||
lwCzsZIAs7KVALWzlAC2tZgAsbGfALi3mgC4t5wAn5+gAKCgoQCjo6QApaWmAKqqqgCsra0AsbGgALy7
|
||||
owC+vKQAv76qAL69rACxsbEAt7ewALW1tQC5uLEAubm2ALm5uQC8vLkAvb29AMHAqQDIxq0Ax8a0AMjH
|
||||
tQDHxrkAyMe5AM7NuwDNzL0AwcHBAMXFxQDNzMIAz87FAMnJyQDMzMwA1NPJANbVygDU080A1dXQANfX
|
||||
1ADZ2NIA3NvXANra2ADd3dsA3d3cAOLi3gDh4eEA5eXjAOXl5QDq6uoA7e3tAPDw8AAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAqZl1AXF1m6kAAAAAAAAAAAAAAAAAAAAAAAAAAACpdXWbpKioqKaom3x8tAAAAAAAAAAAAAAA
|
||||
AAAAAAAAdZmon1g2Dg4NDjZYlqmZfAAAAAAAAAAAAAAAAAAAqHGohzcPDw8PDw8OEg8PN4epfKkAAAAA
|
||||
AAAAAAAAAJ11qUISEhISEhISEhISEhISEkKpmZ0AAAAAAAAAAACodac6EhISEhISEhISEhISEhISFDmk
|
||||
gqkAAAAAAAAAAHWnOhIUFBQUFBQUFBQJEgkJFBQUFDqnmQAAAAAAAAB8qEQUFhQUFBQUFBQJCQ9waQ8J
|
||||
CRQUFkSomwAAAAAAuHyJFhYWFhYaFhoYDzsPP8jFAg06EhgWFIebuAAAAAB8pj0WGhYaGhYaFgmGyJeL
|
||||
yMhvs8VeFBoaPZ6dAAAAAHyRGhsbGxsbGxsbErfKysjKysjKyqMJGhsbiJsAAAC0mWAbGxsbGxsbGyQY
|
||||
R8jKwI2XxcrIOhobGxtgmbgAAJ2ZSiYmJiYmJycbFmqgyMM5GBhayMqSXhgmJkqBqAAAmZsbJiYmJhsb
|
||||
JBhGxcjKrwkmJg/FysjDFyYmKYGbAAB5myYnJiYmS2BblBKXv8rAEh8fQMjKu4wYJycnfJsAAHyaKysr
|
||||
KxqMw8W2i0AOxcivSF67yr8DHycrKyd8mwAAm5kqKysmo76gSLDFX5TIysjIyMjIx2snKyssKnydAACo
|
||||
mU0tLCZIw0UfYL5Elsi7ssjIrcXIZystLCxNfKkAALSZZy0tLWzDo16xto0YVRpJxcMJSWIfLS0tLWd8
|
||||
uAAAAJmJLS0tVGy7w8VkIS0tLR+sjiEtLS0tLS0we5wAAAAAnZtTMS0tIJc7aE0uMS4wLSEhMS4xLjAw
|
||||
ME98pgAAAAC4nYsxMDAtLjEtMS4wMDAwMDAwMDAwMDAwb5q4AAAAAAComVYwMDMwMDAwMzAwMDMwMDAw
|
||||
MDMwMFd1qQAAAAAAAAComVIzMDMzMzMzMzMzMzMzMzMzMzNSc6kAAAAAAAAAAKmkgFIzMzMzMzMzMzMz
|
||||
MzMzMzMzUnOdtAAAAAAAAAAAAKeofFczMzMzMzMzMzMzMzMzM1d0nqkAAAAAAAAAAAAAAKmwfHBSNTU1
|
||||
NTU1NTU1NVJddKm0AAAAAAAAAAAAAAAAAACpnXx7VVAwNTUzUFVcdJ2pAAAAAAAAAAAAAAAAAAAAAAC4
|
||||
qaibeXFxcXF1mqSpuAAAAAAAAAAAAAAAAAAAAAAAAAAAALi0tKmpqbS4AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////AP//+AAf//AAD//AAAP/gAAB/wAAAP8AAAD+AA
|
||||
AAfAAAADwAAAA8AAAAOAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAPAAAADwAAAA+AA
|
||||
AAfwAAAP8AAAD/gAAB/8AAA//wAA//+AAf//8A///////ygAAAAYAAAAMAAAAAEACAAAAAAAQAIAAAAA
|
||||
AAAAAAAAAAEAAAABAAAAAAAAjYgvAJGPLgCUki8Al5QvAJmVLwCdmC8AiYc/AJGPMACRizUAlJIwAJKQ
|
||||
NQCVkTQAmpcwAJqTNwCYlTUAnZkwAJqUOACinS4ApJ4uAKCcMACknzAAopw7AKOcPwCooi8ApqAwAKii
|
||||
MACqpDAArKUwALCpMQC1rDEAtq01ALivMQCwqDoAu7ExALyyMQC+tDEAv7U4AMC1MQDDuDIAx7syAMS4
|
||||
NQDKvTIAzb8yAMS4OACOjUgAkY9HAJeTRACZl08Ak5JVAJ2ZUwCdmlUAnpxXAJaVWwCjnlcAq6REAKql
|
||||
TwCtp08AsKlCALmvRwCnolQApqJaAKWhXgCppFsAqKVdAK+qXQCxqlEAtKxSALCqVgCyrFcAta1UALSu
|
||||
WQCxrF4AnJhgAJ+cZgCNjH0Am5dxAJuYcwChn2YApqJmAKiiZwCmpGsApqNuAKmlaQCsqG8ApaJ0AKqn
|
||||
cQCkoXoApqJ9AKqoeQCsqXkAsKx3ALKvfwC1sXoAtrN+AIyMjACRkIEAlJOEAJeWiACbmosAkZGRAJOT
|
||||
lACWlpYAmZmZAJ2dnQCoqIAArqyAAKeniwCop4sAqKeMAKmojAC0sYIAsrCEALSyjAC1tI0ApKOVAKSk
|
||||
mACnp50AqKidALSzkQC2tZEAt7WUALi2lAC5t5sAvbuZAL+8nQCgoKAApaWlAK2sogCurqQAqampAKus
|
||||
qwCtra0Avr2gAL69qACxsbEAtra2ALq6ugC8vLwAw8GmAMbFsQDIx7cAysq+AMPDwwDGxsYAz8/HANDP
|
||||
wADT0scA1NPKANXVzwDX1tEA19fUANjY1QDc3NUA2trYAN7e2ADg39oA4ODbAODg3QDp6ekA7OvqAO3s
|
||||
6wDt7e0A8PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCX2h/f39fggAA
|
||||
AAAAAAAAAAAAAAAAaGh1aTUtLTVpgH9/AAAAAAAAAAAAAABkgDEICAgIAggICDGAaAAAAAAAAAAAAGRt
|
||||
CAgICAgIBAgECAgIbn8AAAAAAAAAZG4IDQ0FBQ0FBQQEBA0NCGt/AAAAAAB/gA0QDQ0FEAUFBU53BAQF
|
||||
EAiAggAAAABoNBAQEBAQEAh6LoyfB3IwEBA0ggAAAId2FBQUFBQUFFGfn5+jn6ONBRQUdYoAAGRqFBkU
|
||||
GRQZFAien3hqmaNKBhQaVX8AAGg9GhoaGhoaPZafhQYYT5+eegYaP2gAAGQ5HR0aPy9pNJKjixgYUaOe
|
||||
bxgdOGQAAGY5HR0WhpmVewiUn3xvnKMyGB0dOWgAAGhBHR1clhFWjUqfn6Ofn6N8HSAdQWcAAGhbIiI8
|
||||
mk96lDRdFn2eDV43IiIiUn8AAIpzIiI6VJaVPyAiIkReICAiIiIiYo8AAACCQScmHUQhHiYmJiYiJiYm
|
||||
JyZEfwAAAACHdCYnJycmJycnJycnJycnJyVhigAAAAAAh1gnKioqKioqKioqKicqJ02CAAAAAAAAAIJY
|
||||
LCoqKioqKioqKionTX8AAAAAAAAAAACHY0QqKioqKioqKkRhggAAAAAAAAAAAAAAioJhUUY7O0ZQS3+K
|
||||
AAAAAAAAAAAAAAAAAACQhISEgoKCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP8A
|
||||
/wD8AD8A+AAfAPAADwDgAAcAwAADAMAAAwCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAMAA
|
||||
AwDAAAMA4AAHAPAADwD4AB8A/AA/AP8A/wD///8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAA
|
||||
AAAAAQAAAAEAAAAAAACQjS4AlZIvAJuXLwCdmS8AkI80AJKQMACWkzAAk5A3AJaTNACblzAAn5s2AKCc
|
||||
MAChnD0ApqAwAKqjMACrpDAAraYwALGqMQC2rjEAuK8wALivOQC6sDEAvLMxAL+1MQC6sTcAwbYyAMK4
|
||||
MgDHuzcAyLwzAMy/MwCcm1gAoZxBAKWeWwCmn1wApKBJAKulSwCsp04AsKlDALKqTwCloVYAtq5TAJ+c
|
||||
YwCfnGUAn59yAJ6deQCbm30AnZ1/AKGfcgCgnnYAqKJiAKmlYACoo2UArqhnAKekawCmo2wArqpuALCr
|
||||
bQC4smUAo6FxAKSicgChoXQApqJ1AKekfQCyr3QAtbJ5ALq2egC5tX4AnZ2aAJ6enQCyr4cAs7CCALq2
|
||||
gQC7uIYAoaCbAKKinQCmpp8AvryRAL67lAC8up8Ap6agAKampQCpqagAr6+uALGxsQC3t7cAubi5AMPA
|
||||
nADEwqUAxsSlAMbFqwDFw60AxsSuAMfGtwDMy7YAzcy3AMzLuQDCwsIAxMTEANDQwQDU1MYA1tXIAOTj
|
||||
3wDm5uQA6OjlAO7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAFRELj09LktUAAAAAAAAAEQsBQYGBgYGPVIA
|
||||
AAAAAEQfBgcGBwcGBgcfUgAAAFY9BAQEBAYIXAUHBz1hAABLCwsMCwNlY2ljYwwLTAAALg4ODg4gXl8z
|
||||
ZVkNDi4AADYRESMoR2hBEU1oQBErAAA2EiVdW0ZYZlhoTRESKgAAPxIlWzhPSUNnSEMSFjEAAFIWGUhX
|
||||
JhYWOhYWGhZLAABhORsWGxsbGxsbGxszYQAAAFIpHh0dHR0dHR0nUgAAAAAAVDUbHh0eHR0zUgAAAAAA
|
||||
AABhUD4iIj1LYQAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAPAPAADgBwAAwAMAAIABAACAAQAAgAEAAIAB
|
||||
AACAAQAAgAEAAIABAACAAQAAwAMAAOAHAADwDwAA//8AACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenp6EXd3dzh2dnZaenp6cH5+
|
||||
fn1/f399e3t7cHd3d1t4eHg4fHx8EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXV1Nnl5eYeHh4fKkJCQ95GR
|
||||
kf6Li4v/hISE/oGBgf6CgoL/h4eH/o+Pj/6VlZX/k5OT94iIiMt7e3uHeXl5NgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe3t7CHV1dWSEhITTkZGR/4CA
|
||||
gP90dHT/iYmJ/6Ojo/+7u7v/yMjI/8rKyv/Kysr/x8jH/7u7u/+lpaX/jo6O/39/f/+MjIz/mpqa/4mJ
|
||||
idN7e3tkg4ODCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt7ewF1dXVWiYmJ3IuL
|
||||
i/51dXX/mJiY/svLy/7U1NT/urq3/qWklP6Wlnf/j45l/oyLXf6Mi13/j45l/paWd/6lpJT/urq3/tTU
|
||||
1P7Ly8v/nZ2d/oCAgP+ZmZn+kZGR3Ht7e1aDg4MBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeXl5F35+
|
||||
frGPj4/+dHR0/qurq/7W1tb/r6+q/oyLaP6GhUL/jYsy/o+OMP6PjjD/j44v/o+OL/6PjjD/j44v/o+O
|
||||
L/6PjjD/jYsy/oaFQv6Li2j/r66q/tbW1v+urq7+f39//p6env6Dg4OxgICAGAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAB4eHg7ioqK5X19ff+UlJT/19fX/6amnf+GhVL/jowy/5GPMP+RjzD/kY8w/5GPMP+RjzD/kY8w/5GP
|
||||
MP+RjzD/kY8w/5GPMP+RjzD/kY8w/5GPMP+RjzD/jowy/4aFUv+mpZ3/1tbW/5qamv+QkJD/kpKS5X9/
|
||||
fzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHZ2dk2QkJD0dHR0/r29vf/AwL/+ioph/o+NNP6SkDD/kpAv/pKQL/6SkDD/kpAv/pKQ
|
||||
L/6SkDD/kpAv/pKQL/6SkDD/kpAv/pKQL/6SkDD/kpAv/pKQL/6SkDD/kpAv/pKQMP+PjTT+ioph/r+/
|
||||
vv++vr7+iIiI/pycnPR7e3tNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAeHh4UpGRkfhzc3P/zs7O/qennv+LiUT+k5Ew/pORL/6TkTD/k5Ev/pOR
|
||||
L/6TkTD/k5Ev/pORL/6TkTD/k5Ev/pORL/6TkTD/k5Ev/pORL/6TkTD/k5Ev/pORL/6TkTD/k5Ev/pOR
|
||||
MP+TkS/+k5Ew/ouJRP+mpp7+zc3N/omJif+dnZ34fn5+UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9fX08kpKS9XJyc//R0dH/m5uL/5COOP+UkjD/lJIw/5SS
|
||||
MP+UkjD/lJIw/5SSMP+UkjD/lJIw/5SSMP+UkjD/lJIw/5SSMP+UkjD/lJIw/5SSMP+UkjD/lJIw/5SS
|
||||
MP+UkjD/lJIw/5SSMP+UkjD/lJIw/5SSMP+Qjjj/m5qK/8/P0P+Kior/nZ2d9oSEhDwAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKCgheTk5PldHR1/s3Nzf6dnY3/kpA2/paT
|
||||
MP+Wky/+lpMv/paTL/6WkzD/lpMv/paTL/6WkzD/lpMv/paTL/6WkzD/lpMv/paTL/6WkzD/lpMv/paT
|
||||
L/6WkzD/lpMv/paTL/6WkzD/lpMv/paTMP+Wky/+lpMv/paTMP+Wky/+kpA2/pyci//Ly8v+kJCQ/peX
|
||||
l+WJiYkXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh4eIAYuLi7F9fX3/vb29/6en
|
||||
nv+TkTn/l5Uw/5eVMP+XlTD/l5Uw/5eVMP+XlTD/l5Uw/5eVMP+XlTD/l5Uw/5eVMP+XlTD/l5Uw/5eV
|
||||
MP+XlTD/l5Uw/5aTL/+TkS7/ko8u/5SRLv+XlC//l5Uw/5eVMP+XlTD/l5Uw/5eVMP+XlTD/l5Uw/5OR
|
||||
Of+kpJv/vr6+/5ybnP+NjY2xj4+PAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhISEV5OT
|
||||
k/6bm5z/u7u5/pKQRf6ZljD/mZYv/pmWMP+Zli/+mZYv/pmWL/6ZljD/mZYv/pmWL/6ZljD/mZYv/pmW
|
||||
L/6ZljD/mZYv/pmWL/6ZljD/mJUv/o2KLP6Ni0n/lZRf/oqIPf6Sjy3/mZYv/pmWMP+Zli/+mZYv/pmW
|
||||
MP+Zli/+mZYv/pmWMP+SkEX+tbW0/qWlpf+pqKn+ioqKVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACMjIwImJiY3Hp6ev7Ly8v/lZRo/puXMP6blzD/m5cv/puXMP+bly/+m5cv/puXL/6blzD/m5cv/puX
|
||||
L/6blzD/m5cv/puXL/6ali//mJQv/peTLv6Zli//lpMu/o6MSf7c3Nv/6Ojo/snJwv6Ggyn/mZUv/piV
|
||||
L/+Wky7+mJUv/pqXL/+bly/+m5cv/puXMP+blzD+lZNn/sTExP+Wlpb+np6e3JSUlAgAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACKiopkj4+P/q6urv6op57/mpY0/pyZL/6cmTD/nJkv/pyZMP+cmS/+nJkv/pyZ
|
||||
L/6cmTD/nJkv/pyZL/6cmTD/nJkv/puYL/6Sjyz/i4g6/pSSU/6Khir/j4wr/piWZf7q6ur/8PDw/t/f
|
||||
3/5+eyr/kI0s/omFMv+Vk1f+iIUt/paTLv+cmC/+nJkv/pyZMP+cmS/+mpY0/qOjmf+vr6/+qamp/o+P
|
||||
j2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJjUf3+A/8TExf+Yllz/npow/56aMP+emjD/npow/56a
|
||||
MP+emjD/npow/56aMP+emjD/npow/56aMP+emjD/npow/5eTLv+Oi0n/1dTQ/+bm5v+zspf/eXcu/6mo
|
||||
iv/s7Oz/7+/v/+jo6P+Qjl7/iIZK/9DPxv/m5ub/vr6u/4mGM/+ali//npow/56aMP+emjD/npow/5iW
|
||||
W/+6urv/mJiZ/56entQAAAAAAAAAAAAAAAAAAAAAAAAAAIuLizaamZr/n5+f/qurpf6emjT/oJsw/qCb
|
||||
MP6gnDH/oJsw/qCcMf+gmzD+oJsw/qCbMP6gnDH/oJsw/qCbMP6gnDH/n5sw/o6KK/6/v7H/6+vr/vLy
|
||||
8v7v7+//39/c/ubm5v7r6+v/6+vr/uvr6/7l5eT/6eno/vLy8v/w8PD+5eXl/qmnh/+UkC3+oJsw/qCc
|
||||
Mf+gmzD+oJsw/p6aNP+lpZ/+oqKi/q6urv+RkZI2AAAAAAAAAAAAAAAAAAAAAJSUlImGh4f/t7e4/qCe
|
||||
df6inTH/op0w/qKdMP6inTH/op0w/qKdMf+inTD+op0w/qKdMP6inTH/op0w/qKdMP6inTH/oZww/pGN
|
||||
K/66uaX/6+vr/vDw8P7w8PD/7e3t/u7u7v719fX/9/f3/vHx8f7t7e3/7+/v/vLy8v/x8fH+5ubm/qup
|
||||
iv+Wki3+op0w/qKdMf+inTD+op0w/qKdMf+fnXT+rKys/qKiov+ZmZmJAAAAAAAAAAAAAAAAAAAAAJ6e
|
||||
ntF/f4D/urq6/56aS/+knzH/pJ8x/6SfMf+knzH/pJ8x/6SfMf+knzH/pJ8x/6SfMf+knzH/pJ8x/6Sf
|
||||
Mf+knzH/o54w/5yYLv+Khj7/3NvY/+/v7//w8PD/8fHx/+bm5v/MzMP/w8K0/9nZ1v/t7e3/8fHx//Dw
|
||||
8P/w8PD/ycm+/4mFMf+fmi//pJ4x/6SfMf+knzH/pJ8x/6SfMf+emkv/ra2t/5SUlP+kpKTRAAAAAAAA
|
||||
AAAAAAAAkpKSEp6enviMjI3/rq6q/qOeNf6moDH/pqAw/qagMP6moDH/pqAw/qagMf+moDD+pqAw/qag
|
||||
MP6moDH/pqAw/qagMP6knjD/nZcu/pKNK/57dyT/x8a3/u7u7v7t7e3/1tbU/pWSX/6IhCn/jIgp/oeD
|
||||
Mv6urJL/5eXl/vDw8P/w8PD+p6WD/oJ+Jv+WkSz+n5ov/qWfMP+moDD+pqAw/qagMf+jnjX+paWh/pGR
|
||||
kv+tra34m5ubEgAAAAAAAAAAkpKSOZiYmP6Wlpb/qaiT/qeiMf6nojH/p6Iw/qeiMP6nojH/p6Iw/qei
|
||||
Mf+nojD+p6Iw/qeiMP6nojH/p6Iw/qehMP6cly3/nJle/rq5pP7Qz8f/6Ojn/u3t7f7l5eX/oqB4/pSP
|
||||
K/6knzD/pqAw/qGcL/6JhSz/xsW6/uzs7P/x8fH+5eXk/sXFuP+urY3+mJRL/qGbL/+nojD+p6Iw/qei
|
||||
Mf+nojH+pKOP/o2Njv+urq7+mZmZOQAAAAAAAAAAlJSUW5GRkf+enp7/qKZ//6qjMf+qozH/qqMx/6qj
|
||||
Mf+qozH/qqMx/6qjMf+pozD/qaIw/6mjMP+noTD/pZ8v/6WfL/+Tjiz/yMfA/+bm5v/q6ur/7Ozs/+3t
|
||||
7f/i4uL/jotC/6OdL/+qozH/qqMx/6mjMP+ZlCz/qqiE/+3t7f/w8PD/7e3t/+np6f/j4+P/srCU/5yW
|
||||
Lf+pozH/qqMx/6qjMf+qozH/pqR+/46Pj/+oqan/mpqaWwAAAAAAAAAAmJiYcYyMjP6hoaL/pqNw/qul
|
||||
MP6spTH/q6Uw/qulMP6spTH/q6Uw/qqkMP+hmy7+mJMu/pyWLP6Ykyz/n5tc/piTPv6Qiyr/wsK3/ubm
|
||||
5v719fX/9PT0/vDw8P7m5ub/kY1F/qWeL/6rpTH/q6Uw/qukMP6alSz/rauH/u7u7v/y8vL+9fX1/vDw
|
||||
8P/e3t7+rKmE/p+ZLf+rpTD+q6Uw/qylMf+rpTD+pqNw/o6Oj/+io6P+nZ2dcQAAAAAAAAAAnJycfYmJ
|
||||
if6fn5//qKRq/q2nMP6tpzH/racw/q2nMP6tpzH/racw/qegL/+bl1H+wcC4/p2abf6LiEr/0tLS/q+u
|
||||
k/6Piij/lJBM/qqohf66uaH/5eTj/vDw8P7r6+v/qqeA/peRKv6poi//q6Qw/qafLv6NiC3/zs3D/u/v
|
||||
7//y8vL+4ODe/rq5pv+mpHn+mJM0/qmiL/+tpzD+racw/q2nMf+tpzD+p6Rq/omJif+goKD+oaGhfAAA
|
||||
AAAAAAAAnZ2dfYuLjP+cnJ3/qaVr/7CoMf+wqDH/sKgx/7CoMf+vqDH/raUw/6CZLP+gnXD/2tra/9fX
|
||||
1//R0c3/3t7e/7a0nv+QjFD/nptn/5CKKf+LhSb/q6mH/+vr6//u7u7/4eHg/6imff+PiTD/kYsp/5CL
|
||||
PP+7uqP/6enp/+/v7//q6ur/ko9X/5KMKP+jnC3/q6Qw/6+oMf+wqDH/sKgx/7CoMf+wqDH/qKVr/4SF
|
||||
hf+kpKT/oqKifQAAAAAAAAAAmZmZcZWVlf6cnJ3/qaZx/rGqMf6xqjL/saox/rGqMf6upzH/n5k0/pyY
|
||||
W/+hn3j+39/f/uHh4f7X1tD/4uLh/t7e3v7e3t7/1tbW/pqWUv6OiTL/ysq//urq6v7r6+v/6+vr/ubm
|
||||
5v7W1tH/z87F/t7e3f7o6Oj/6+vr/uzs7P/q6ur+uLef/pmTLP+vqDH+saox/rGqMv+xqjH+saox/rGq
|
||||
Mv+xqjH+qaZx/oSEhP+rq6v+n5+fcQAAAAAAAAAAlpaWWpycnP6Wl5f/rKmA/rOrMf6zqzL/s6sx/rOr
|
||||
Mf6tpTD/pqJn/tbW1v/e3t7+2dnZ/pmWYP6OiCr/kIxF/tDPyv7i4uL/xcS7/o2JPP6urIz/4+Pj/unp
|
||||
6f7w8PD/8fHx/u3t7f7s7Oz/7e3t/uzs7P7v7+//8fHx/u3t7f/o6Oj+29vb/p+aV/+tpjD+s6sx/rOr
|
||||
Mv+zqzH+s6sx/rOrMv+zqzH+qqh//oCAgf+wsLD+m5ubWwAAAAAAAAAAlJSUOaSkpP+QkJH/rq2W/7Wt
|
||||
Mv+1rTL/ta0y/7WtMv+yqTH/n5k6/6uphv/e3t3/x8a7/5KLKP+vpzD/nZYr/62ri//e3t7/paJ9/4V/
|
||||
KP+vrZD/5OTk//X19f/u7u7/4+Pe/+vq6f/v7+//7e3t//Dw8P/n5+P/5+bj//Pz8//v7+//2dnZ/6Gc
|
||||
V/+vpzD/ta0y/7WtMv+1rTL/ta0y/7WtMv+1rTL/qKeQ/4CAgf+zs7P/m5ubOQAAAAAAAAAAlZWVEqKi
|
||||
oviSkpP/sLCs/rSsNv63rzL/t68x/revMf62rjH/qKAt/o2IPv/W1tP+0dHN/pCKOP6hmiz/kYsq/ry7
|
||||
qf7h4eH/2tra/rCuk/6Qizj/wL6t/tPT0f6opXf/jIYs/qShdf7j4+P/6urq/t3d3f6Qi0f/kow9/sC/
|
||||
rv/X19f+rqyF/qKbLf+1rTH+t68x/revMv+3rzH+t68x/revMv+0rDb+oaGd/ouLjP+tra34nZ2dEgAA
|
||||
AAAAAAAAAAAAAJ6entCZmZn/rq6u/q2nTP65sDL/ubAx/rmwMf64rzH/pZ0u/sLCuP/h4eH+4ODg/sXE
|
||||
uf6opX7/ubej/tra2v7NzML/t7We/qaiZP6nnyz/opou/qGaO/6ooC3/rqYv/pmTQf7a2tr/6+vr/s/P
|
||||
y/6YkSr/rqUu/qGaL/+hm0T+pZ4t/rWsMP+5sDH+ubAx/rmwMv+5sDH+ubAx/rmwMv+tp0z+l5eX/qGh
|
||||
of+ioqLQAAAAAAAAAAAAAAAAAAAAAJeXl4msrKz/nZ2d/6yod/+7sjL/u7Iy/7uyMv+7sTH/rKMt/62q
|
||||
ff+3tZ3/vbyk/97e3v/f39//4+Pj/+Li4v+qp4P/mpIp/7CnLv+5sDH/ubAx/7mwMf+6sTH/ubAx/6CY
|
||||
LP/Hxr//3Nzc/7Wzlf+poS3/urEx/7mwMf+4rzH/urEx/7uyMv+7sjL/u7Iy/7uyMv+7sjL/u7Iy/7uy
|
||||
Mv+rp3b/hISE/7m5uv+bm5uJAAAAAAAAAAAAAAAAAAAAAJCQkDatra3/mZmZ/q6up/65sDX/vbMx/r2z
|
||||
Mf69szL/ubAx/q+mLv+jmyv+mZRQ/tzc3P7CwKr/s7CN/tfX1/60spL/rqUt/ryzMf69szL/vbMx/r2z
|
||||
Mf69szL/vLMx/rOqL/6knUD/pqFY/qaeMv64rjD/vbMx/r2zMv+9szH+vbMx/r2zMv+9szH+vbMx/r2z
|
||||
Mv+9szH+vbMx/rmwNf+jo5z+ioqK/re3t/+WlpY2AAAAAAAAAAAAAAAAAAAAAAAAAACYmJjTqqur/6mp
|
||||
qf+rpV3/v7Uy/7+1Mv+/tTL/v7Uy/761Mf+6sDD/p6BD/7u5o/+fmUP/oZks/6mjWf+nnzL/ua8w/7+1
|
||||
Mv+/tTL/v7Uy/7+1Mv+/tTL/v7Uy/760Mf+7sTD/ua8w/7yyMf++tTH/v7Uy/7+1Mv+/tTL/v7Uy/7+1
|
||||
Mv+/tTL/v7Uy/7+1Mv+/tTL/v7Uy/6umXf+Pj4//sbCw/5ycnNMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACSkpJjt7e3/peXmP6rqp//vLI2/sG2Mf7BtjL/wbYx/sG2Mv+/tTH+uK4v/rGoLv64ri//vbMx/ruy
|
||||
MP6+szH/wLYx/sG2Mf7BtjL/wbYx/sG2Mf7BtjL/wbYx/sG2Mf7BtjL/wbYx/sG2Mf7BtjL/wbYx/sG2
|
||||
Mv/BtjH+wbYx/sG2Mv/BtjH+wbYx/sG2Mv/BtjH+vLI2/qSjl/+AgYH+wMHB/peXl2MAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACVlZUImZmZ3LW1tf6jo6P/qKNr/sK4Mv7CuDL/wrgy/sK4Mv/CuDL+wrgy/sK3
|
||||
Mv7CuDL/wrgy/sK4Mv7CuDL/wrgy/sK4Mv7CuDL/wrgy/sK4Mv7CuDL/wrgy/sK4Mv7CuDL/wrgy/sK4
|
||||
Mv7CuDL/wrgy/sK4Mv/CuDL+wrgy/sK4Mv/CuDL+wrgy/sK4Mv/CuDL+qKRr/oWFhf+3t7f+np6e3J2d
|
||||
nQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo6OVra2tv6cnJz/qqqo/7KqSP/EuTP/xLkz/8S5
|
||||
M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5
|
||||
M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M/+yqkj/mZmX/4yM
|
||||
jP++vr7+kZGRVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5OTAY6OjrHFxcX/k5OU/qWk
|
||||
mP68sTv/xroy/sa6M//GujL+xroy/sa6Mv7GujP/xroy/sa6Mv7GujP/xroy/sa6Mv7GujP/xroy/sa6
|
||||
Mv7GujP/xroy/sa6Mv7GujP/xroy/sa6Mv7GujP/xroy/sa6M//GujL+xroy/sa6M//GujL+xroy/rux
|
||||
O/+dnJH+eHh5/svLy/+QkJCxmpqaAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKS
|
||||
kheamprlv7+//pWVlf6hn4n/v7Q5/si8M//IvDL+yLwy/si8Mv7IvDP/yLwy/si8Mv7IvDP/yLwy/si8
|
||||
Mv7IvDP/yLwy/si8Mv7IvDP/yLwy/si8Mv7IvDP/yLwy/si8Mv7IvDP/yLwy/si8M//IvDL+yLwy/si8
|
||||
M//IvDL+v7Q5/p2bhf95eXn+v7/A/p2dneWWlpYXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACNjY07qKio9bS0tP+VlJT/oJ6J/76zO//JvTP/yb0z/8m9M//JvTP/yb0z/8m9
|
||||
M//JvTP/yb0z/8m9M//JvTP/yb0z/8m9M//JvTP/yb0z/8m9M//JvTP/yb0z/8m9M//JvTP/yb0z/8m9
|
||||
M//JvTP/yb0z/8m9M/++szv/m5mD/3p7e/+ysrL/rKys9Y+PjzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhoaGUbKysvi2trb/kJCR/qKhlv+zqkf+y74z/su+
|
||||
Mv7LvjP/y74y/su+Mv7LvjP/y74y/su+Mv7LvjP/y74y/su+Mv7LvjP/y74y/su+Mv7LvjP/y74y/su+
|
||||
Mv7LvjP/y74y/su+M//LvjL+y74z/rOpRv+Yl4z+enp6/rOzs/+0tLT4h4eHUQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIWFhVGtra31w8PD/oiI
|
||||
iP+kpKL+pJ9l/sS4Nv7MvzP/zL8y/sy/Mv7MvzP/zL8y/sy/Mv7MvzP/zL8y/sy/Mv7MvzP/zL8y/sy/
|
||||
Mv7MvzP/zL8y/sy/Mv7MvzP/zL8y/sy/M//EuDb+opxi/pWVk/94eHj+w8PD/q6urvWGhoZRAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACLi4s7mZmZ5dXV1f+Pj4//lZWV/6KhlP+ooVb/x7o1/83AM//NwDP/zcAz/83AM//NwDP/zcAz/83A
|
||||
M//NwDP/zcAz/83AM//NwDP/zcAz/83AM//NwDP/x7o1/6afVf+ZmIz/hoaG/4iIiP/W1tb/mpqa5YyM
|
||||
jDsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAkJCQF4WFhbHIyMj+vb29/oODg/6ZmZn/nZ2W/qKdaf6yqUX/xro2/s7B
|
||||
M/7OwTP/zsEy/s7BMv7OwTP/zsEy/s7BMv7OwTP/xro2/rKoRf6gm2j/l5aP/oyMjP97e3v+vb29/snJ
|
||||
yf6FhYWxkpKSFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGRkQGGhoZWl5eX29LS0v66urr/iIiI/omJ
|
||||
if6ZmZn/mZiU/pqXf/6emWz/opxe/qWeWP6ln1n/opxe/p+abf6Zl3//lpWR/pCQkP59fX3/gYGB/rm5
|
||||
uf/S0tL+l5eX24eHh1aVlZUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlZWVCImJ
|
||||
iWORkZHTyMjI/9TU1P+0tLT/k5OT/4B/gP9+fn7/gYGB/4SEhP+Dg4P/fn5+/3d3d/95eXn/jIyM/7Ky
|
||||
sv/U1NT/yMjI/5GRkdOKiopjmJiYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAjIyMNoeHh4eXl5fKt7e399XV1f7c3Nz/2NjY/tHR0f7R0dH/2NjY/tzc
|
||||
3P7V1dX/t7e395iYmMqIiIiHjo6ONgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJiYEZOTkziPj49al5eXcJ6e
|
||||
nnyenp58l5eXcJCQkFqUlJQ4m5ubEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP//
|
||||
4Af//wAA//8AAP//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/
|
||||
AAD8AAAAAD8AAPgAAAAAHwAA8AAAAAAPAADwAAAAAA8AAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAMAA
|
||||
AAAAAwAAwAAAAAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
|
||||
AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAMAA
|
||||
AAAAAwAA4AAAAAAHAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA/AAAAAA/
|
||||
AAD+AAAAAH8AAP8AAAAA/wAA/4AAAAH/AAD/wAAAA/8AAP/gAAAH/wAA//gAAB//AAD//wAA//8AAP//
|
||||
4Af//wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR0B3l5eU2Hh4eShYWFyH5+
|
||||
fup9fX37fn5++4GBgeqJiYnIiIiIknt7e014eHgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3d3EICAgIOBgYHriYmJ/6Gh
|
||||
of+wsLD/t7e3/7W1tf+1tbX/t7e3/7Kysv+np6f/kZGR/4qKiuuHh4eDfn5+EAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt7e1mDg4Pqk5OT/7a2
|
||||
tv+xsaD/k5Jh/4iHQP+KiTT/jo0w/46NMP+KiTT/iIdA/5OSYf+xsZ//t7e3/5ubm/+Pj4/qgoKCWgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh4eAOBgYGXhISE/7W1
|
||||
tf+npo7/i4pA/5GPMP+RjzD/kY8w/5GPMP+RjzD/kY8w/5GPMP+RjzD/kY8w/5GPMP+LikD/pqaO/7e3
|
||||
t/+Tk5P/iIiIl39/fwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7e3sEg4ODrYmJ
|
||||
if+9vbn/kI5U/5ORMP+TkTD/k5Ew/5ORMP+TkTD/k5Ew/5ORMP+TkTD/k5Ew/5ORMP+TkTD/k5Ew/5OR
|
||||
MP+TkTD/j45T/7y8uf+ZmZn/i4uLrYKCggQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeG
|
||||
h5iJiYn/ubix/5CPQP+VkjD/lZIw/5WSMP+VkjD/lZIw/5WSMP+VkjD/lZIw/5WSMP+VkjD/lZIw/5WS
|
||||
MP+VkjD/lZIw/5WSMP+VkjD/kI9A/7e3sP+bnJz/jY2NmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACHh4dah4eI/7u7t/+TkUH/l5Qw/5eUMP+XlDD/l5Qw/5eUMP+XlDD/l5Qw/5eUMP+XlDD/l5Qw/5eU
|
||||
L/+UkS//lJIv/5eUL/+XlDD/l5Qw/5eUMP+XlDD/k5FB/7i4tf+dnZ3/jIyMWgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAh4eHEIuLi+q0tLT/l5VW/5mWMP+ZljD/mZYw/5mWMP+ZljD/mZYw/5mWMP+ZljD/mZYw/5mW
|
||||
L/+Zli//j4ww/6inff+hoHD/ko8t/5mWMP+Zli//mZYw/5mWMP+ZljD/lpRV/7W1tf+dnZ3qj4+PEAAA
|
||||
AAAAAAAAAAAAAAAAAACSkpKDlZWW/6injf+cmDD/nJgw/5yYMP+cmDD/nJgw/5yYMP+cmDD/nJgw/5yY
|
||||
L/+Sji3/k5BE/5GNLP+TkU//6+vr/+Pj4v+Ggyr/j4wv/5KPQf+VkS3/nJgv/5yYMP+cmDD/pKOJ/6am
|
||||
p/+ZmZmDAAAAAAAAAAAAAAAAioqKB46OjuuysrL/m5hF/5+bMP+fmzD/n5sw/5+bMP+fmzD/n5sw/5+b
|
||||
MP+fmzD/l5Mu/62sh//p6en/uLeb/66sjf/t7e3/6+vr/6Wkfv/NzL3/5eXk/56cZ/+ali//n5sw/5+b
|
||||
MP+bmEX/ra2t/6CgoOuTk5MHAAAAAAAAAACSkpJOkpKT/62sl/+hnTH/oZ0x/6GdMf+hnTH/oZ0x/6Gd
|
||||
Mf+hnTH/oZ0x/6GdMf+VkS3/zc3D//Dw8P/v7+//7Ozs//Ly8v/w8PD/7e3t//Ly8v/v7+//v76r/5mV
|
||||
Lv+hnTH/oZ0x/6GdMf+mpZD/o6Ok/5iYmE4AAAAAAAAAAJqampWWl5f/paJo/6SfMf+knzH/pJ8x/6Sf
|
||||
Mf+knzH/pJ8x/6SfMf+knzH/pJ8w/56ZL/+Zll7/7e3t/+/v7//Z2NP/r66L/7e2mf/l5eP/8PDw/+rq
|
||||
6f+PjEX/oJsv/6SfMP+knzH/pJ8x/6OhZ/+ampv/o6OjlQAAAAAAAAAAlZWVyKCgoP+jn0n/p6Ex/6eh
|
||||
Mf+noTH/p6Ex/6ehMf+noTH/p6Ex/6ehMP+bljL/p6Ry/7y7o//s7Oz/3d3b/5GNP/+gmi7/nJct/52a
|
||||
Y//p6en/7e3s/7Oxkv+hn2X/npgu/6ehMf+noTH/o59J/5iZmf+kpKTJAAAAAAAAAACQkJDqpKWl/6ah
|
||||
OP+qpDH/qqQx/6qkMf+qpDD/p6Ew/6agL/+jnS7/n5ot/56aVf/i4uL/7e3t/+7u7v/Ix7X/nJYt/6qk
|
||||
Mf+qpDD/kYwt/+Xl5f/w8PD/7Ozs/9zc3P+alTv/qqQx/6qkMf+moTj/mZmZ/6CgoOoAAAAAAAAAAJGR
|
||||
kfuhoaH/rKYx/62mMf+tpjH/raYx/6qjMP+inlr/o6Bq/56bZv+zspX/ko01/7i3nP/W1sv/8PDw/9ra
|
||||
0/+VkC//qqQw/6miL/+ZlEn/6urq//Hx8f/U08r/sa6I/6GbLv+tpjH/raYx/6ymMf+Tk5P/n5+g+wAA
|
||||
AAAAAAAAk5OU+5+foP+vqDL/sKkx/7CpMf+upzH/npgs/66si//d3d3/39/d/83Mwv+tq4b/mZVL/4uG
|
||||
M//l5eX/7Ozs/8fGtP+gnFn/pKFm/9TTyf/u7u7/2djR/42HKv+poi//r6gx/7CpMf+wqTH/r6gy/4+P
|
||||
j/+jo6T7AAAAAAAAAACXl5fqoKCh/66nOf+zqzL/s6sy/6egLv++vaz/1dXQ/768pP+fm1r/yMe5/+Dg
|
||||
4P+hnmv/tbOU/+jo6P/u7u7/7e3t/+rq6v/r6+v/7u7u/+3t7f/m5ub/q6dx/7CoMf+zqzL/s6sy/7Or
|
||||
Mv+upzn/kJCQ/6WlpeoAAAAAAAAAAJycnMigoKD/rqhL/7auMv+2rjL/r6cw/52ZWP/b29n/nJhQ/6uj
|
||||
Lv+loWz/19fU/5aSVv+2tJj/6+vr/9bVyv/Ozbv/7Ozs/+vr6//Ixq3/4uLe/+bm5v+sqG//s6ox/7au
|
||||
Mv+2rjL/tq4y/66oSv+RkZH/qKioyQAAAAAAAAAAnJyclZycnf+xrWv/ubAy/7mwMv+1rDD/ral1/+Dg
|
||||
4P+/vqr/o59l/8fGuf/PzsX/tLGM/6CYMP+sp2T/pJwx/52XQf/i4uL/2dnY/5qTLv+knkH/rKdl/6yk
|
||||
Lv+4sDH/ubAy/7mwMv+5sDL/r6tp/5OTlP+jo6OVAAAAAAAAAACVlZVOoaGh/6yrkv+8sjL/vLIy/7mw
|
||||
Mf+qpFD/qaVx/9TTzf/c29f/4uLi/6eja/+wpy7/urEx/7qxMf+7sjH/q6Mu/8HAqf+3tI3/sagv/7ux
|
||||
Mf+6sDH/u7Ix/7yyMv+8sjL/vLIy/7yyMv+fnYT/pqWm/5ubm04AAAAAAAAAAI+Pjwenp6froqKi/7Ss
|
||||
R/++tTL/vrQy/7yzMf+wpy7/ubeZ/56YR/+vq2//rKVC/72zMf++tTL/vrUy/761Mv+9szH/s6ov/7Ws
|
||||
L/++tDH/vrUy/761Mv++tTL/vrUy/761Mv++tTL/tKxH/5CQkP+vr6/rl5eXBwAAAAAAAAAAAAAAAJeX
|
||||
l4OoqKj/rKmH/8G2Mv/BtzL/wbcy/7+1Mf+4ri//vLIx/760Mf+/tTH/wbcy/8G3Mv/BtzL/wbcy/8G3
|
||||
Mv/BtzL/wbcy/8G3Mv/BtzL/wbcy/8G3Mv/BtzL/wbcy/8G2Mv+ioH7/oaKi/52dnYMAAAAAAAAAAAAA
|
||||
AAAAAAAAj4+PEKurq+qhoaH/sapZ/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5
|
||||
M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/xLkz/8S5M//EuTP/sapY/4uLjP+xsbHqlpaWEAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAkJCQWbW1tf+enpn/ua9E/8e7M//HuzP/x7sz/8e7M//HuzP/x7sz/8e7
|
||||
M//HuzP/x7sz/8e7M//HuzP/x7sz/8e7M//HuzP/x7sz/8e7M//HuzP/x7sz/7mvRP+Li4b/tbW1/5SU
|
||||
lFkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJSUmLGxsf+dnJL/urBE/8m9M//JvTP/yb0z/8m9
|
||||
M//JvTP/yb0z/8m9M//JvTP/yb0z/8m9M//JvTP/yb0z/8m9M//JvTP/yb0z/8m9M/+6sEP/jo2D/6ur
|
||||
q/+WlpaYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgEmJiYrrOzs/+ZmJP/sqpW/8u+
|
||||
M//LvjP/y74z/8u+M//LvjP/y74z/8u+M//LvjP/y74z/8u+M//LvjP/y74z/8u+M//LvjP/sKhU/4mJ
|
||||
hP+trq7/mZmZro2NjQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgEk5OTmLy8
|
||||
vP+VlZX/paJ//7qwRP/NwDP/zcAz/83AM//NwDP/zcAz/83AM//NwDP/zcAz/83AM//NwDP/ua9D/52a
|
||||
eP+JiYn/urq6/5SUlJmNjY0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAi4uLWbOzs+qrq6v/kJCQ/56cgv+up1//t61D/8S3N//NvzP/zb8z/8S3N/+3rUP/rqdf/5iW
|
||||
fP+Hh4f/p6en/7S0tOqMjIxZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAioqKEJSUlIOzs7Prs7Oz/6SkpP+Qj4//hISE/4KCgv+BgYH/gYGB/4qK
|
||||
iv+dnZ3/sLCw/7S0tOuVlZWDjo6OEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImJiQeLi4tNoaGhkbW1tci3t7fqt7e3+7e3
|
||||
t/u3t7fqtbW1yKKiopGNjY1NjIyMBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAP//////wAP//wAA//4AAH/4AAAf8AAAD/AAAA/gAAAHwAAAA8AAAAOAAAABgAAAAYAA
|
||||
AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAHAAAADwAAAA+AAAAfwAAAP8AAAD/gA
|
||||
AB/+AAB//wAA///AA///////KAAAABgAAAAwAAAAAQAgAAAAAABgCQAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFdXVwRjY2Mka2trO2traztkZGQkWlpaBAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF1d
|
||||
XQJ6enpOgICAroWFhfCenp7/pqam/6enp/6hoaH/ioqK8IaHhq9/f39OZmZmAgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4MoCAgMygoKD+p6ed/qiogP6Wllv+jo1I/o6N
|
||||
SP6WlVv+qKiA/qmon/6np6f+ioqKzICAgDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAB+fn5fjo6O+K2to/+TklX/kY8w/pGPMP+RjzD/kY8w/5GPL/6RjzD/kY8v/pGPMP+TklX/rq6k/pqa
|
||||
mviGhoZfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKCgmGSkpL9qKeM/pKQNf+UkjD/lJIv/pSS
|
||||
MP+UkjD/lJIw/5SSL/6UkjD/lJIv/pSSMP+UkjD/kpA1/qeni/+goKD9iYmJYQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAhISEMpCQkfipqIz+lpMx/peUL/6XlC/+l5Qv/peUL/6XlC/+l5Qv/peUL/6Vky/+lJIv/peU
|
||||
L/6XlC/+l5Qv/paTMf6op4v+oKCg+IqKijIAAAAAAAAAAAAAAABubm4CioqKzK6tov+YlTX/mpcv/pqX
|
||||
MP+alzD/mpcv/pqXMP+ali//mJUv/5iVL/6hn2b/tLOR/pKPLf+YlS//mZYv/pqXMP+YlTX/rayh/pqa
|
||||
msx7e3sCAAAAAAAAAACPj49OoKCg/p6cV/+dmTD/nZkw/p2ZMP+dmTD/nZkw/p2ZMP+VkTT/trWR/5GP
|
||||
R/7GxbH/6urq/omHP/+1tI3/mZdP/pyYL/+dmTD/nZpW/qurq/+WlpZOAAAAAAAAAACQkJCvqKic/qCc
|
||||
Mf6hnDD+oZww/qGcMP6hnDD+oZww/qGcMP6mpGv+7u7u/uvr6v7t7e3+8PDw/urq6v7x8fH+yMe3/puW
|
||||
L/6hnDD+oJwx/qSkmP6enp6vAAAAAG5ubgSSkpLxqqh5/qWfMf+lnzH/pZ8w/qWfMf+lnzH/pZ8w/qKd
|
||||
MP+NiC//4ODb/+np6P60soz/rKl5/tzc1f/w8PD/n5xm/p6ZL/+knzD/pZ8w/qWidP+enp7xgYGBBIGB
|
||||
gSWXl5f/qKVd/qmjMf+pozH/qKMw/qiiMP+oojD/pqAw/qWhXv/W1s//7Ozs/769oP6hnC7/pqEw/qWh
|
||||
Zf/u7u7/4ODc/re1lP+jni//qKMw/qejW/+dnZ3/k5OTJYmJiTuVlZb/qqVP/qymMf+spjH/qqQw/qWh
|
||||
Wf+Xk0T/rqyA/p6aVf/Qz8D/7u7u/8PBpv6kni7/qqMw/qmlaf/w8PD/4N/a/rKwhP+ooi//rKYw/qql
|
||||
T/+Wlpf/nJycO4qKijuWlpf+radP/rCpMf6wqDH+opw7/r69qP7Y2NX+1dXP/rm3m/6RizX+09LH/unp
|
||||
6f69u5n+tLGC/t7e2P7s7Oz+nZlT/qylMP6wqTH+sKkx/q2nT/6Wlpb+nZ2dO4KCgiWampr/saxe/rSs
|
||||
Mv+yqjH/sq9//tfX1P+alDj/qqdx/srKvv+cmGD/6urq/+3s6/7t7ez/7e3t/uzr6v/u7u7/vbuZ/rGp
|
||||
Mf+0rDL/tKwx/q+qXf+ZmZn/lZWVJXJycgSbm5vxsKx3/rivMf64rzH+p6JU/tra2P6no2f+uLaU/s/P
|
||||
x/6jnlf+tbF6/qOcP/6/vJ3+4ODf/pqTN/62s37+q6RE/rivMf64rzH+uK8x/qajbv6fn5/xhISEBAAA
|
||||
AACgoKCvpKOV/ruyMv+8sjH/sKlC/qyob//X1tH/1NPK/qmkW/+5rzH/u7Ix/7uyMf6wqlb/t7N//rat
|
||||
MP+7sTH/vLIx/ryzMv+8szL/u7Iy/peWiP+oqKivAAAAAAAAAACTk5NOqKio/rSuWf/AtjL/wLUx/rat
|
||||
Nf+xqlH/sKg6/reuMf/AtjL/wLYy/8C2Mf6+tDH/vrMx/sC1Mf/AtjL/wLYx/sC2Mv/AtjL/sqxX/qCg
|
||||
oP+ZmZlOAAAAAAAAAAB1dXUCpKSkzKSjlf6/tTj+w7gy/sO4Mv7DuDL+w7gy/sO4Mv7DuDL+w7gy/sO4
|
||||
Mv7DuDL+w7gy/sO4Mv7DuDL+w7gy/sO4Mv6/tTj+lJOF/qmpqcyDg4MCAAAAAAAAAAAAAAAAjY2NMqys
|
||||
rPimon3/xbk0/se7M//HuzP/x7sy/se7M//HuzP/x7sz/8e7Mv7HuzP/x7sy/se7M//HuzP/x7sy/sW5
|
||||
NP+bmHP/qKio+JKSkjIAAAAAAAAAAAAAAAAAAAAAAAAAAJKSkmCsrKz9pKF6/sS4OP/KvTP/yr0y/sq9
|
||||
M//KvTP/yr0z/8q9Mv7KvTP/yr0y/sq9M//KvTP/xLg3/puXcf+lpaX9lZWVYAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACSkpJgrq6u+Juai/63rlX+y74z/s2/Mv7NvzL+zb8y/s2/Mv7NvzL+zb8y/su+
|
||||
M/60rFL+kZCB/qurq/iVlZVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIMqmp
|
||||
qcuqqqr/lJOE/qqlav+1rVT/ua9H/7mvR/61rVT/qKJn/o2Mff+kpKT/qampy4uLizIAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9vbwKMjIxOrKysrqWlpfCrq6v/rKys/6ur
|
||||
q/6oqKj/o6Oj8KysrK6Ojo5OdXV1AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFxcQSAgIAkj4+PO4+PjzuBgYEkdHR0BAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+B/wD8AD8A+AAfAPAADwDgAAcAwAADAIAAAQCAAAEAgAABAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAQCAAAEAgAABAMAAAwDgAAcA8AAPAPgAHwD8AD8A/4H/ACgA
|
||||
AAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpK
|
||||
ShVsbGxWcnJyeXR0dHlubm5WTk5OFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV1dXFoOD
|
||||
g5+cnJj6m5t9/6GhdP+hoXT/nZ1//6GhnPqMjIyfX19fFgAAAAAAAAAAAAAAAAAAAAAAAAAAbGxsLZOT
|
||||
kuWfn3L/kI80/5KQMP+SkDD/kpAw/5KQMP+QjzT/oJ9y/5ycm+V0dHQtAAAAAAAAAAAAAAAAYGBgFpSU
|
||||
lOWdm1n/lpMw/5aTMP+WkzD/lpMw/5aTL/+Uki//lpMv/5aTMP+cm1j/n5+f5WpqahYAAAAAAAAAAI+O
|
||||
j5+konL/m5cw/5uXMP+blzD/m5cv/5aTNP+TkDf/xsWv/5CNLv+WkzP/m5cv/6Ohcf+bm5ufAAAAAF1d
|
||||
XRWgn5r6n5s2/6CcMP+gnDD/oJww/5uXL//V1Mn/0NDB/+7u7v/U1Mb/zMu5/52ZL/+fmzb/pqWg+mlp
|
||||
aRWBgYFXn556/6agMf+moDH/pqAx/6agMP+hnEH/zMu2/83Mt/+ppWD/19bI/8bFq/+hnD3/pqAx/56d
|
||||
ef+SkpJXiYmJeaajbP+spTH/q6Qw/6SgSf+loVb/s7CC/+jo5f+1snn/qqMw/768kf/o6Ob/sq90/6ul
|
||||
Mf+fnGX/nZ2deYyMjHmnpGv/saox/6ynTv/Hxrf/xcOt/7Kvh//EwqX/5OPf/8bEpf/n5+T/vruU/6+n
|
||||
MP+xqjH/n5xj/6CgoHmFhYVXp6R9/7evMv+rpUv/xsSt/66qbv+8up//u7iG/7m1fv/l5eT/urZ//7q2
|
||||
ev+2rjH/t68y/6Cedv+VlZVXYWFhFaaln/q6sTf/uK85/7q2gf/DwJz/sKlD/7yzMf+4rzD/uLJl/7qw
|
||||
Mf+8szH/vbMy/7qxN/+hoJr6bW1tFQAAAACen5+fsKtt/8K4Mv+/tTH/wLYy/8K3Mv/CuDL/wrgy/8K4
|
||||
Mv/CuDL/wrgy/8K4Mv+oo2X/oaGhnwAAAAAAAAAAaWlpFqampeW2rlP/yLwz/8i8M//IvDP/yLwz/8i8
|
||||
M//IvDP/yLwz/8i8M/+yqk//oKCf5XNzcxYAAAAAAAAAAAAAAAB7e3stpqal5a6oZ//Huzf/zL8z/8y/
|
||||
M//MvzP/zL8z/8e7N/+oomL/oaGg5YGBgS0AAAAAAAAAAAAAAAAAAAAAAAAAAGVlZRafn5+fpaWe+qai
|
||||
df+mn1z/pZ5b/6Ofcv+hoJr6oKCgn2traxYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtb
|
||||
WxWLi4tWpKSkeaWlpXmNjY1WXl5eFQAAAAAAAAAAAAAAAAAAAAAAAAAA+B8AAOAHAADAAwAAgAEAAIAB
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAgAEAAMADAADgBwAA+B8AAA==
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>WaitForOperation</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker1.Name" xml:space="preserve">
|
||||
<value>backgroundWorker1</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker1.Type" xml:space="preserve">
|
||||
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>WaitForOperation</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,118 +0,0 @@
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
partial class ListBackupFiles
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ListBackupFiles));
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.progressBar1 = new System.Windows.Forms.ProgressBar();
|
||||
this.ContentPanel = new System.Windows.Forms.Panel();
|
||||
this.ContentTree = new System.Windows.Forms.TreeView();
|
||||
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.CancelBtn = new System.Windows.Forms.Button();
|
||||
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.ContentPanel.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.progressBar1);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// progressBar1
|
||||
//
|
||||
resources.ApplyResources(this.progressBar1, "progressBar1");
|
||||
this.progressBar1.Name = "progressBar1";
|
||||
this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||
//
|
||||
// ContentPanel
|
||||
//
|
||||
resources.ApplyResources(this.ContentPanel, "ContentPanel");
|
||||
this.ContentPanel.Controls.Add(this.ContentTree);
|
||||
this.ContentPanel.Name = "ContentPanel";
|
||||
//
|
||||
// ContentTree
|
||||
//
|
||||
resources.ApplyResources(this.ContentTree, "ContentTree");
|
||||
this.ContentTree.ImageList = this.imageList;
|
||||
this.ContentTree.Name = "ContentTree";
|
||||
this.ContentTree.ShowNodeToolTips = true;
|
||||
//
|
||||
// imageList
|
||||
//
|
||||
this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
|
||||
resources.ApplyResources(this.imageList, "imageList");
|
||||
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
//
|
||||
// CancelBtn
|
||||
//
|
||||
resources.ApplyResources(this.CancelBtn, "CancelBtn");
|
||||
this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.CancelBtn.Name = "CancelBtn";
|
||||
this.CancelBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// backgroundWorker1
|
||||
//
|
||||
this.backgroundWorker1.WorkerSupportsCancellation = true;
|
||||
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
|
||||
this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
|
||||
//
|
||||
// ListBackupFiles
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.CancelBtn;
|
||||
this.Controls.Add(this.CancelBtn);
|
||||
this.Controls.Add(this.ContentPanel);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
|
||||
this.Name = "ListBackupFiles";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ListBackupFiles_FormClosing);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.ContentPanel.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.ProgressBar progressBar1;
|
||||
private System.Windows.Forms.Panel ContentPanel;
|
||||
private System.Windows.Forms.Button CancelBtn;
|
||||
private System.ComponentModel.BackgroundWorker backgroundWorker1;
|
||||
private System.Windows.Forms.ImageList imageList;
|
||||
private System.Windows.Forms.TreeView ContentTree;
|
||||
}
|
||||
}
|
||||
@@ -1,294 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Duplicati.Server;
|
||||
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
public partial class ListBackupFiles : Form
|
||||
{
|
||||
|
||||
private object m_lock = new object();
|
||||
private System.Threading.Thread m_thread = null;
|
||||
|
||||
private const string FOLDER_IMAGE_KEY = "folder";
|
||||
private const string NEW_FOLDER_IMAGE_KEY = "new folder";
|
||||
private const string REMOVED_FOLDER_IMAGE_KEY = "removed folder";
|
||||
private const string ADDED_OR_MODIFIED_FILE_IMAGE_KEY = "added or modified file";
|
||||
private const string CONTROL_FILE_IMAGE_KEY = "control file";
|
||||
private const string DELETED_FILE_IMAGE_KEY = "deleted file";
|
||||
private const string ADDED_FILE_IMAGE_KEY = "added file";
|
||||
private const string MODIFIED_FILE_IMAGE_KEY = "modified file";
|
||||
private const string INCOMPLETE_FILE_IMAGE_KEY = "incomplete file";
|
||||
|
||||
public ListBackupFiles()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
imageList.Images.Add(FOLDER_IMAGE_KEY, Properties.Resources.FolderOpen);
|
||||
imageList.Images.Add(NEW_FOLDER_IMAGE_KEY, Properties.Resources.AddedFolder);
|
||||
imageList.Images.Add(REMOVED_FOLDER_IMAGE_KEY, Properties.Resources.DeletedFolder);
|
||||
imageList.Images.Add(ADDED_OR_MODIFIED_FILE_IMAGE_KEY, Properties.Resources.AddedOrModifiedFile);
|
||||
imageList.Images.Add(CONTROL_FILE_IMAGE_KEY, Properties.Resources.ControlFile);
|
||||
imageList.Images.Add(DELETED_FILE_IMAGE_KEY, Properties.Resources.DeletedFile);
|
||||
imageList.Images.Add(ADDED_FILE_IMAGE_KEY, Properties.Resources.AddedFile);
|
||||
imageList.Images.Add(MODIFIED_FILE_IMAGE_KEY, Properties.Resources.ModifiedFile);
|
||||
imageList.Images.Add(INCOMPLETE_FILE_IMAGE_KEY, Properties.Resources.IncompleteFile);
|
||||
this.Icon = Properties.Resources.TrayNormal;
|
||||
|
||||
#if DEBUG
|
||||
this.Text += " (DEBUG)";
|
||||
#endif
|
||||
}
|
||||
|
||||
public void ShowList(Control owner, Datamodel.Schedule schedule, DateTime when)
|
||||
{
|
||||
backgroundWorker1.RunWorkerAsync(new object[] { schedule, when });
|
||||
this.ShowDialog(owner);
|
||||
}
|
||||
|
||||
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
lock (m_lock)
|
||||
m_thread = System.Threading.Thread.CurrentThread;
|
||||
|
||||
try
|
||||
{
|
||||
object[] args = (object[])e.Argument;
|
||||
DuplicatiRunner r = new DuplicatiRunner();
|
||||
IList<string> sourceFolders = r.ListSourceFolders((Datamodel.Schedule)args[0], (DateTime)args[1]);
|
||||
if (r.IsAborted)
|
||||
e.Cancel = true;
|
||||
else
|
||||
{
|
||||
r = new DuplicatiRunner();
|
||||
List<KeyValuePair<Library.Main.RSync.RSyncDir.PatchFileType, string>> files = r.ListActualFiles((Datamodel.Schedule)args[0], (DateTime)args[1]);
|
||||
|
||||
e.Result = new KeyValuePair<IList<string>, List<KeyValuePair<Library.Main.RSync.RSyncDir.PatchFileType, string>>>(sourceFolders, files);
|
||||
|
||||
if (r.IsAborted)
|
||||
e.Cancel = true;
|
||||
}
|
||||
}
|
||||
catch (System.Threading.ThreadAbortException)
|
||||
{
|
||||
System.Threading.Thread.ResetAbort();
|
||||
e.Cancel = true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
lock (m_lock)
|
||||
m_thread = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
//If the user has closed, ignore any results
|
||||
if (!this.Visible)
|
||||
return;
|
||||
|
||||
if (e.Cancelled)
|
||||
this.Close();
|
||||
else if (e.Error != null || e.Result == null)
|
||||
{
|
||||
Exception ex = e.Error;
|
||||
if (ex == null)
|
||||
ex = new Exception(Strings.ListBackupFiles.NoDataError);
|
||||
|
||||
MessageBox.Show(this, string.Format(Strings.Common.GenericError, ex.ToString()), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
this.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
ContentTree.BeginUpdate();
|
||||
KeyValuePair<IList<string>, List<KeyValuePair<Library.Main.RSync.RSyncDir.PatchFileType, string>>> res = (KeyValuePair<IList<string>, List<KeyValuePair<Library.Main.RSync.RSyncDir.PatchFileType, string>>>)e.Result;
|
||||
|
||||
IList<string> sourcefolders = res.Key;
|
||||
List<KeyValuePair<Library.Main.RSync.RSyncDir.PatchFileType, string>> entries = res.Value;
|
||||
|
||||
List<string> addedfolders = new List<string>();
|
||||
List<string> removedfolders = new List<string>();
|
||||
List<string> addedOrUpdatedfiles = new List<string>();
|
||||
List<string> updatedfiles = new List<string>();
|
||||
List<string> addedfiles = new List<string>();
|
||||
List<string> incompletefiles = new List<string>();
|
||||
List<string> deletedfiles = new List<string>();
|
||||
List<string> controlfiles = new List<string>();
|
||||
|
||||
foreach (KeyValuePair<Library.Main.RSync.RSyncDir.PatchFileType, string> x in entries)
|
||||
switch (x.Key)
|
||||
{
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.AddedFolder:
|
||||
addedfolders.Add(x.Value);
|
||||
break;
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.DeletedFolder:
|
||||
removedfolders.Add(x.Value);
|
||||
break;
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.AddedOrUpdatedFile:
|
||||
addedOrUpdatedfiles.Add(x.Value);
|
||||
break;
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.AddedFile:
|
||||
addedfiles.Add(x.Value);
|
||||
break;
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.UpdatedFile:
|
||||
updatedfiles.Add(x.Value);
|
||||
break;
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.IncompleteFile:
|
||||
incompletefiles.Add(x.Value);
|
||||
break;
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.ControlFile:
|
||||
controlfiles.Add(x.Value);
|
||||
break;
|
||||
case Duplicati.Library.Main.RSync.RSyncDir.PatchFileType.DeletedFile:
|
||||
deletedfiles.Add(x.Value);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
addedfolders.Sort();
|
||||
removedfolders.Sort();
|
||||
deletedfiles.Sort();
|
||||
addedOrUpdatedfiles.Sort();
|
||||
addedfiles.Sort();
|
||||
updatedfiles.Sort();
|
||||
incompletefiles.Sort();
|
||||
controlfiles.Sort();
|
||||
|
||||
foreach (string s in addedfolders)
|
||||
AddTreeItem(s, NEW_FOLDER_IMAGE_KEY);
|
||||
foreach (string s in removedfolders)
|
||||
AddTreeItem(s, REMOVED_FOLDER_IMAGE_KEY);
|
||||
foreach (string s in addedOrUpdatedfiles)
|
||||
AddTreeItem(s, ADDED_OR_MODIFIED_FILE_IMAGE_KEY);
|
||||
foreach (string s in addedfiles)
|
||||
AddTreeItem(s, ADDED_FILE_IMAGE_KEY);
|
||||
foreach (string s in updatedfiles)
|
||||
AddTreeItem(s, MODIFIED_FILE_IMAGE_KEY);
|
||||
foreach (string s in incompletefiles)
|
||||
AddTreeItem(s, INCOMPLETE_FILE_IMAGE_KEY);
|
||||
foreach (string s in controlfiles)
|
||||
AddTreeItem(s, CONTROL_FILE_IMAGE_KEY);
|
||||
foreach (string s in deletedfiles)
|
||||
AddTreeItem(s, DELETED_FILE_IMAGE_KEY);
|
||||
|
||||
//Patch display to show actual source folder rather than the internal enumeration system
|
||||
if (sourcefolders != null && sourcefolders.Count > 1)
|
||||
{
|
||||
foreach (TreeNode t in ContentTree.Nodes)
|
||||
{
|
||||
int ix;
|
||||
if (int.TryParse(t.Text, out ix))
|
||||
{
|
||||
if (ix >= 0 && ix < sourcefolders.Count)
|
||||
t.Text = sourcefolders[ix];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
ContentTree.EndUpdate();
|
||||
ContentPanel.Visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void AddTreeItem(string value, string imagekey)
|
||||
{
|
||||
if (value.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()))
|
||||
value = value.Substring(0, value.Length - 1);
|
||||
|
||||
string[] items = value.Split(System.IO.Path.DirectorySeparatorChar);
|
||||
TreeNodeCollection parent = ContentTree.Nodes;
|
||||
|
||||
for (int i = 0; i < items.Length; i++)
|
||||
{
|
||||
TreeNode match = null;
|
||||
foreach (TreeNode n in parent)
|
||||
if (n.Text == items[i])
|
||||
{
|
||||
match = n;
|
||||
break;
|
||||
}
|
||||
|
||||
if (match == null)
|
||||
{
|
||||
match = new TreeNode(items[i]);
|
||||
match.ImageKey = match.SelectedImageKey =
|
||||
i == items.Length - 1 ? imagekey : FOLDER_IMAGE_KEY;
|
||||
|
||||
switch (match.ImageKey)
|
||||
{
|
||||
case FOLDER_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipExistingFolder;
|
||||
break;
|
||||
case NEW_FOLDER_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipAddedFolder;
|
||||
break;
|
||||
case REMOVED_FOLDER_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipDeletedFolder;
|
||||
break;
|
||||
case ADDED_OR_MODIFIED_FILE_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipAddedOrModifiedFile;
|
||||
break;
|
||||
case ADDED_FILE_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipAddedFile;
|
||||
break;
|
||||
case MODIFIED_FILE_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipModifiedFile;
|
||||
break;
|
||||
case INCOMPLETE_FILE_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipIncompleteFile;
|
||||
break;
|
||||
case CONTROL_FILE_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipControlFile;
|
||||
break;
|
||||
case DELETED_FILE_IMAGE_KEY:
|
||||
match.ToolTipText = Strings.ListBackupFiles.TooltipDeletedFile;
|
||||
break;
|
||||
}
|
||||
parent.Add(match);
|
||||
}
|
||||
|
||||
parent = match.Nodes;
|
||||
}
|
||||
}
|
||||
|
||||
private void ListBackupFiles_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
lock (m_lock)
|
||||
if (m_thread != null)
|
||||
m_thread.Abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,303 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left, Right</value>
|
||||
</data>
|
||||
<data name="progressBar1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="progressBar1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 24</value>
|
||||
</data>
|
||||
<data name="progressBar1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>249, 23</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="progressBar1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.Name" xml:space="preserve">
|
||||
<value>progressBar1</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>progressBar1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 153</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>265, 56</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>Loading file list, please wait ...</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="ContentPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="ContentTree.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="ContentTree.ImageIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>169, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList.ImageSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
</data>
|
||||
<data name="ContentTree.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="ContentTree.SelectedImageIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="ContentTree.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>265, 339</value>
|
||||
</data>
|
||||
<data name="ContentTree.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>ContentTree.Name" xml:space="preserve">
|
||||
<value>ContentTree</value>
|
||||
</data>
|
||||
<data name=">>ContentTree.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ContentTree.Parent" xml:space="preserve">
|
||||
<value>ContentPanel</value>
|
||||
</data>
|
||||
<data name=">>ContentTree.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="ContentPanel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
</data>
|
||||
<data name="ContentPanel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>265, 339</value>
|
||||
</data>
|
||||
<data name="ContentPanel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="ContentPanel.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>ContentPanel.Name" xml:space="preserve">
|
||||
<value>ContentPanel</value>
|
||||
</data>
|
||||
<data name=">>ContentPanel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>ContentPanel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>ContentPanel.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="CancelBtn.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="CancelBtn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>116, 371</value>
|
||||
</data>
|
||||
<data name="CancelBtn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="CancelBtn.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="CancelBtn.Text" xml:space="preserve">
|
||||
<value>Close</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.Name" xml:space="preserve">
|
||||
<value>CancelBtn</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>CancelBtn.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>301, 407</value>
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>188, 233</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Files in selected backup</value>
|
||||
</data>
|
||||
<data name=">>imageList.Name" xml:space="preserve">
|
||||
<value>imageList</value>
|
||||
</data>
|
||||
<data name=">>imageList.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker1.Name" xml:space="preserve">
|
||||
<value>backgroundWorker1</value>
|
||||
</data>
|
||||
<data name=">>backgroundWorker1.Type" xml:space="preserve">
|
||||
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>ListBackupFiles</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,77 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2008, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
partial class LogViewer
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LogViewer));
|
||||
this.LogText = new System.Windows.Forms.TextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// LogText
|
||||
//
|
||||
resources.ApplyResources(this.LogText, "LogText");
|
||||
this.LogText.Name = "LogText";
|
||||
this.LogText.ReadOnly = true;
|
||||
//
|
||||
// LogViewer
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.LogText);
|
||||
this.Name = "LogViewer";
|
||||
this.ShowInTaskbar = false;
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public System.Windows.Forms.TextBox LogText;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
public partial class LogViewer : Form
|
||||
{
|
||||
public LogViewer()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Icon = Properties.Resources.LogViewer;
|
||||
|
||||
#if DEBUG
|
||||
this.Text += " (DEBUG)";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="LogText.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="LogText.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 8</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="LogText.Multiline" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LogText.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
||||
<value>Both</value>
|
||||
</data>
|
||||
<data name="LogText.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>388, 335</value>
|
||||
</data>
|
||||
<data name="LogText.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>LogText.Name" xml:space="preserve">
|
||||
<value>LogText</value>
|
||||
</data>
|
||||
<data name=">>LogText.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LogText.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LogText.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>405, 352</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Log data</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>LogViewer</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,235 +0,0 @@
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
this.TrayIcon = new System.Windows.Forms.NotifyIcon(this.components);
|
||||
this.TrayMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.statusToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.wizardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.controlToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pauseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pausePeriodToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.DelayDuration05Menu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.DelayDuration15Menu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.DelayDuration30Menu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.DelayDuration60Menu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.stopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.throttleOptionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.TrayMenu.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// TrayIcon
|
||||
//
|
||||
this.TrayIcon.ContextMenuStrip = this.TrayMenu;
|
||||
resources.ApplyResources(this.TrayIcon, "TrayIcon");
|
||||
this.TrayIcon.BalloonTipClicked += new System.EventHandler(this.TrayIcon_BalloonTipClicked);
|
||||
this.TrayIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TrayIcon_MouseClick);
|
||||
this.TrayIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.TrayIcon_MouseDoubleClick);
|
||||
//
|
||||
// TrayMenu
|
||||
//
|
||||
this.TrayMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.statusToolStripMenuItem,
|
||||
this.wizardToolStripMenuItem,
|
||||
this.toolStripSeparator1,
|
||||
this.optionsToolStripMenuItem,
|
||||
this.toolStripSeparator2,
|
||||
this.controlToolStripMenuItem,
|
||||
this.toolStripSeparator3,
|
||||
this.quitToolStripMenuItem});
|
||||
this.TrayMenu.Name = "TrayMenu";
|
||||
resources.ApplyResources(this.TrayMenu, "TrayMenu");
|
||||
this.TrayMenu.LocationChanged += new System.EventHandler(this.TrayMenu_LocationChanged);
|
||||
//
|
||||
// statusToolStripMenuItem
|
||||
//
|
||||
resources.ApplyResources(this.statusToolStripMenuItem, "statusToolStripMenuItem");
|
||||
this.statusToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.StatusMenuIcon;
|
||||
this.statusToolStripMenuItem.Name = "statusToolStripMenuItem";
|
||||
this.statusToolStripMenuItem.Click += new System.EventHandler(this.statusToolStripMenuItem_Click);
|
||||
//
|
||||
// wizardToolStripMenuItem
|
||||
//
|
||||
this.wizardToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.WizardMenuIcon;
|
||||
this.wizardToolStripMenuItem.Name = "wizardToolStripMenuItem";
|
||||
resources.ApplyResources(this.wizardToolStripMenuItem, "wizardToolStripMenuItem");
|
||||
this.wizardToolStripMenuItem.Click += new System.EventHandler(this.wizardToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||
//
|
||||
// optionsToolStripMenuItem
|
||||
//
|
||||
this.optionsToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.SettingsMenuIcon;
|
||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||
resources.ApplyResources(this.optionsToolStripMenuItem, "optionsToolStripMenuItem");
|
||||
this.optionsToolStripMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
|
||||
//
|
||||
// controlToolStripMenuItem
|
||||
//
|
||||
this.controlToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.pauseToolStripMenuItem,
|
||||
this.pausePeriodToolStripMenuItem,
|
||||
this.stopToolStripMenuItem,
|
||||
this.throttleOptionsToolStripMenuItem});
|
||||
this.controlToolStripMenuItem.Name = "controlToolStripMenuItem";
|
||||
resources.ApplyResources(this.controlToolStripMenuItem, "controlToolStripMenuItem");
|
||||
//
|
||||
// pauseToolStripMenuItem
|
||||
//
|
||||
this.pauseToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.Pause;
|
||||
this.pauseToolStripMenuItem.Name = "pauseToolStripMenuItem";
|
||||
resources.ApplyResources(this.pauseToolStripMenuItem, "pauseToolStripMenuItem");
|
||||
this.pauseToolStripMenuItem.Click += new System.EventHandler(this.pauseToolStripMenuItem_Click);
|
||||
//
|
||||
// pausePeriodToolStripMenuItem
|
||||
//
|
||||
this.pausePeriodToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.DelayDuration05Menu,
|
||||
this.DelayDuration15Menu,
|
||||
this.DelayDuration30Menu,
|
||||
this.DelayDuration60Menu});
|
||||
this.pausePeriodToolStripMenuItem.Name = "pausePeriodToolStripMenuItem";
|
||||
resources.ApplyResources(this.pausePeriodToolStripMenuItem, "pausePeriodToolStripMenuItem");
|
||||
//
|
||||
// DelayDuration05Menu
|
||||
//
|
||||
this.DelayDuration05Menu.Image = global::Duplicati.GUI.Properties.Resources.Clock05;
|
||||
this.DelayDuration05Menu.Name = "DelayDuration05Menu";
|
||||
resources.ApplyResources(this.DelayDuration05Menu, "DelayDuration05Menu");
|
||||
this.DelayDuration05Menu.Tag = "5m";
|
||||
//
|
||||
// DelayDuration15Menu
|
||||
//
|
||||
this.DelayDuration15Menu.Image = global::Duplicati.GUI.Properties.Resources.Clock15;
|
||||
this.DelayDuration15Menu.Name = "DelayDuration15Menu";
|
||||
resources.ApplyResources(this.DelayDuration15Menu, "DelayDuration15Menu");
|
||||
this.DelayDuration15Menu.Tag = "15m";
|
||||
//
|
||||
// DelayDuration30Menu
|
||||
//
|
||||
this.DelayDuration30Menu.Image = global::Duplicati.GUI.Properties.Resources.Clock30;
|
||||
this.DelayDuration30Menu.Name = "DelayDuration30Menu";
|
||||
resources.ApplyResources(this.DelayDuration30Menu, "DelayDuration30Menu");
|
||||
this.DelayDuration30Menu.Tag = "30m";
|
||||
//
|
||||
// DelayDuration60Menu
|
||||
//
|
||||
this.DelayDuration60Menu.Image = global::Duplicati.GUI.Properties.Resources.Clock60;
|
||||
this.DelayDuration60Menu.Name = "DelayDuration60Menu";
|
||||
resources.ApplyResources(this.DelayDuration60Menu, "DelayDuration60Menu");
|
||||
this.DelayDuration60Menu.Tag = "1h";
|
||||
this.DelayDuration60Menu.Click += new System.EventHandler(this.DelayDurationMenu_Click);
|
||||
//
|
||||
// stopToolStripMenuItem
|
||||
//
|
||||
resources.ApplyResources(this.stopToolStripMenuItem, "stopToolStripMenuItem");
|
||||
this.stopToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.Stop;
|
||||
this.stopToolStripMenuItem.Name = "stopToolStripMenuItem";
|
||||
this.stopToolStripMenuItem.Click += new System.EventHandler(this.stopToolStripMenuItem_Click);
|
||||
//
|
||||
// throttleOptionsToolStripMenuItem
|
||||
//
|
||||
this.throttleOptionsToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.Throttle;
|
||||
this.throttleOptionsToolStripMenuItem.Name = "throttleOptionsToolStripMenuItem";
|
||||
resources.ApplyResources(this.throttleOptionsToolStripMenuItem, "throttleOptionsToolStripMenuItem");
|
||||
this.throttleOptionsToolStripMenuItem.Click += new System.EventHandler(this.throttleOptionsToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
||||
//
|
||||
// quitToolStripMenuItem
|
||||
//
|
||||
this.quitToolStripMenuItem.Image = global::Duplicati.GUI.Properties.Resources.CloseMenuIcon;
|
||||
this.quitToolStripMenuItem.Name = "quitToolStripMenuItem";
|
||||
resources.ApplyResources(this.quitToolStripMenuItem, "quitToolStripMenuItem");
|
||||
this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "MainForm";
|
||||
this.ShowInTaskbar = false;
|
||||
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
|
||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
|
||||
this.TrayMenu.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.NotifyIcon TrayIcon;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ContextMenuStrip TrayMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem statusToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem wizardToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripMenuItem controlToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripMenuItem quitToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem pauseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem pausePeriodToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem DelayDuration05Menu;
|
||||
private System.Windows.Forms.ToolStripMenuItem DelayDuration15Menu;
|
||||
private System.Windows.Forms.ToolStripMenuItem DelayDuration30Menu;
|
||||
private System.Windows.Forms.ToolStripMenuItem DelayDuration60Menu;
|
||||
private System.Windows.Forms.ToolStripMenuItem stopToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem throttleOptionsToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
@@ -1,827 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Duplicati.Server;
|
||||
using Duplicati.Server.Serialization;
|
||||
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
/// <summary>
|
||||
/// This class handles the Duplicati TrayIcon
|
||||
/// </summary>
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
private static readonly int BALLOON_SHOW_TIME = (int)TimeSpan.FromSeconds(60).TotalMilliseconds;
|
||||
private ServiceStatus StatusDialog;
|
||||
private WizardHandler WizardDialog;
|
||||
private Datamodel.ApplicationSettings m_settings;
|
||||
|
||||
private delegate void EmptyDelegate();
|
||||
|
||||
private string[] m_initialArguments;
|
||||
|
||||
private bool m_hasAttemptedBackupTermination = false;
|
||||
|
||||
private RunnerResult m_currentIconState;
|
||||
private Icon m_currentIcon;
|
||||
private string m_currentTooltip;
|
||||
private TrayIconProxy m_trayIcon;
|
||||
|
||||
public string[] InitialArguments
|
||||
{
|
||||
get { return m_initialArguments; }
|
||||
set { m_initialArguments = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// A recursion protection helper flag
|
||||
/// </summary>
|
||||
private bool m_inQuit = false;
|
||||
|
||||
/// <summary>
|
||||
/// Internal helper class that can filter all access to the trayicon if the program runs without a trayicon
|
||||
/// </summary>
|
||||
private class TrayIconProxy
|
||||
{
|
||||
private readonly NotifyIcon m_owner = null;
|
||||
|
||||
private Icon m_icon;
|
||||
private bool m_visible;
|
||||
private string m_text;
|
||||
|
||||
public TrayIconProxy(NotifyIcon owner)
|
||||
{
|
||||
if (!Program.TraylessMode)
|
||||
m_owner = owner;
|
||||
}
|
||||
|
||||
public Icon Icon
|
||||
{
|
||||
get { return m_icon; }
|
||||
set
|
||||
{
|
||||
m_icon = value;
|
||||
if (m_owner != null)
|
||||
m_owner.Icon = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Visible
|
||||
{
|
||||
get { return m_visible; }
|
||||
set
|
||||
{
|
||||
m_visible = value;
|
||||
if (m_owner != null)
|
||||
m_owner.Visible = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Text
|
||||
{
|
||||
get { return m_text; }
|
||||
set
|
||||
{
|
||||
m_text = value;
|
||||
if (m_owner != null)
|
||||
m_owner.Text = value;
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowBalloonTip(int timeout, string tipTitle, string tipText, ToolTipIcon tipIcon)
|
||||
{
|
||||
if (m_owner != null)
|
||||
m_owner.ShowBalloonTip(timeout, tipTitle, tipText, tipIcon);
|
||||
}
|
||||
}
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
m_trayIcon = new TrayIconProxy(TrayIcon);
|
||||
m_currentIcon = Properties.Resources.TrayNormal;
|
||||
m_currentTooltip = Strings.MainForm.TrayStatusReady;
|
||||
|
||||
Program.LiveControl.StateChanged += new EventHandler(LiveControl_StateChanged);
|
||||
Program.WorkThread.StartingWork += new EventHandler(WorkThread_StartingWork);
|
||||
Program.WorkThread.CompletedWork += new EventHandler(WorkThread_CompletedWork);
|
||||
Program.SingleInstance.SecondInstanceDetected += new SingleInstance.SecondInstanceDelegate(SingleInstance_SecondInstanceDetected);
|
||||
|
||||
m_settings = new Duplicati.Datamodel.ApplicationSettings(Program.DataConnection);
|
||||
Program.DataConnection.AfterDataChange += new System.Data.LightDatamodel.DataChangeEventHandler(DataConnection_AfterDataChange);
|
||||
|
||||
Program.Runner.ProgressEvent += new DuplicatiRunner.ProgressEventDelegate(Runner_DuplicatiProgress);
|
||||
Program.Runner.ResultEvent += new DuplicatiRunner.ResultEventDelegate(Runner_ResultEvent);
|
||||
#if DEBUG
|
||||
this.Text += " (DEBUG)";
|
||||
#endif
|
||||
}
|
||||
|
||||
public void SetCurrentIcon(RunnerResult icon, string message)
|
||||
{
|
||||
if (icon == RunnerResult.Error)
|
||||
{
|
||||
m_currentIcon = Properties.Resources.TrayNormalError;
|
||||
m_currentIconState = icon;
|
||||
m_currentTooltip = message;
|
||||
|
||||
}
|
||||
else if ((icon == RunnerResult.Warning || icon == RunnerResult.Partial) && m_currentIconState != RunnerResult.Error)
|
||||
{
|
||||
m_currentIcon = Properties.Resources.TrayNormalWarning;
|
||||
m_currentIconState = icon;
|
||||
m_currentTooltip = message;
|
||||
}
|
||||
|
||||
UpdateTrayIcon();
|
||||
}
|
||||
|
||||
public void ResetCurrentIcon()
|
||||
{
|
||||
m_currentIcon = Properties.Resources.TrayNormal;
|
||||
m_currentTooltip = Strings.MainForm.TrayStatusReady;
|
||||
m_currentIconState = RunnerResult.OK;
|
||||
UpdateTrayIcon();
|
||||
}
|
||||
|
||||
private void UpdateTrayIcon()
|
||||
{
|
||||
//TODO: Hard to maintain consistent state because the number of cases here can change
|
||||
if (Program.LiveControl.State == LiveControls.LiveControlState.Running && !Program.WorkThread.Active)
|
||||
{
|
||||
m_trayIcon.Icon = m_currentIcon;
|
||||
SetTrayIconText(m_currentTooltip);
|
||||
}
|
||||
}
|
||||
|
||||
void Runner_ResultEvent(RunnerResult result, string parsedMessage, string message)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.BeginInvoke(new DuplicatiRunner.ResultEventDelegate(Runner_ResultEvent), result, parsedMessage, message);
|
||||
return;
|
||||
}
|
||||
|
||||
string name = "";
|
||||
|
||||
//Dirty read of the instance variable
|
||||
try { name = Program.WorkThread.CurrentTask.Schedule.Name; }
|
||||
catch { }
|
||||
|
||||
if (result == RunnerResult.Error)
|
||||
SetCurrentIcon(result, String.Format(Strings.MainForm.BalloonTip_Error, name, parsedMessage));
|
||||
else if (result == RunnerResult.Partial || result == RunnerResult.Warning)
|
||||
SetCurrentIcon(result, String.Format(Strings.MainForm.BalloonTip_Warning, name));
|
||||
|
||||
|
||||
if (result == RunnerResult.OK || m_settings.BallonNotificationLevel == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Off)
|
||||
return;
|
||||
|
||||
if (result == RunnerResult.Error)
|
||||
m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Error, name, parsedMessage), ToolTipIcon.Error);
|
||||
|
||||
else if (result == RunnerResult.Warning || result == RunnerResult.Partial)
|
||||
m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Warning, name), ToolTipIcon.Warning);
|
||||
}
|
||||
|
||||
void DataConnection_AfterDataChange(object sender, string propertyname, object oldvalue, object newvalue)
|
||||
{
|
||||
if (sender as Datamodel.ApplicationSetting == null)
|
||||
return;
|
||||
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.BeginInvoke(new System.Data.LightDatamodel.DataChangeEventHandler(DataConnection_AfterDataChange), sender, propertyname, oldvalue, newvalue);
|
||||
return;
|
||||
}
|
||||
|
||||
m_settings = new Duplicati.Datamodel.ApplicationSettings(Program.DataConnection);
|
||||
}
|
||||
|
||||
void Runner_DuplicatiProgress(DuplicatiOperation operation, RunnerState state, string message, string submessage, int progress, int subprogress)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.BeginInvoke(new DuplicatiRunner.ProgressEventDelegate(Runner_DuplicatiProgress), operation, state, message, submessage, progress, subprogress);
|
||||
return;
|
||||
}
|
||||
|
||||
string name = "";
|
||||
|
||||
//Dirty read of the instance variable
|
||||
try { name = Program.WorkThread.CurrentTask.Schedule.Name; }
|
||||
catch {}
|
||||
|
||||
|
||||
Datamodel.ApplicationSettings.NotificationLevel level;
|
||||
try { level = m_settings.BallonNotificationLevel; }
|
||||
catch
|
||||
{
|
||||
m_settings = new Datamodel.ApplicationSettings(Program.DataConnection);
|
||||
try { level = m_settings.BallonNotificationLevel; }
|
||||
catch
|
||||
{
|
||||
//TODO: Should find the cause for this, but at least we do not crash the process
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (state == RunnerState.Started && (level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.StartAndStop || level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Start || level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Continous))
|
||||
{
|
||||
//Show start balloon
|
||||
m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Started, name), ToolTipIcon.Info);
|
||||
}
|
||||
else if (state == RunnerState.Stopped && (level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.StartAndStop || level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Continous))
|
||||
{
|
||||
//Show stop balloon
|
||||
m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Stopped, name), ToolTipIcon.Info);
|
||||
}
|
||||
else if (state == RunnerState.Running && level == Duplicati.Datamodel.ApplicationSettings.NotificationLevel.Continous)
|
||||
{
|
||||
//Show update balloon
|
||||
m_trayIcon.ShowBalloonTip(BALLOON_SHOW_TIME, Application.ProductName, String.Format(Strings.MainForm.BalloonTip_Running, message), ToolTipIcon.Info);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void LiveControl_StateChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EventHandler(LiveControl_StateChanged), sender, e);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Program.LiveControl.State)
|
||||
{
|
||||
case LiveControls.LiveControlState.Paused:
|
||||
pauseToolStripMenuItem.Text = Strings.Common.MenuResume;
|
||||
pauseToolStripMenuItem.Checked = true;
|
||||
|
||||
m_trayIcon.Icon = Program.WorkThread.Active ? Properties.Resources.TrayWorkingPause : Properties.Resources.TrayNormalPause;
|
||||
SetTrayIconText(Strings.MainForm.TrayStatusPause);
|
||||
break;
|
||||
case LiveControls.LiveControlState.Running:
|
||||
//Restore the icon and tooltip
|
||||
if (Program.WorkThread.Active)
|
||||
WorkThread_StartingWork(Program.WorkThread, null);
|
||||
else
|
||||
WorkThread_CompletedWork(Program.WorkThread, null);
|
||||
|
||||
pauseToolStripMenuItem.Checked = false;
|
||||
pauseToolStripMenuItem.Text = Strings.Common.MenuPause;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void MainForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
m_trayIcon.Icon = m_currentIcon;
|
||||
SetTrayIconText(m_currentTooltip);
|
||||
|
||||
LiveControl_StateChanged(Program.LiveControl, null);
|
||||
m_trayIcon.Visible = true;
|
||||
|
||||
long count = 0;
|
||||
lock (Program.MainLock)
|
||||
count = Program.DataConnection.GetObjects<Datamodel.Schedule>().Length;
|
||||
|
||||
if (count == 0)
|
||||
ShowWizard();
|
||||
else if (InitialArguments != null)
|
||||
HandleCommandlineArguments(InitialArguments);
|
||||
|
||||
if (Library.Utility.Utility.IsMono)
|
||||
MonoSupport.BeginInvoke (this, new EmptyDelegate(HideWindow));
|
||||
else
|
||||
BeginInvoke(new EmptyDelegate(HideWindow));
|
||||
if (Program.TraylessMode)
|
||||
ShowStatus();
|
||||
}
|
||||
|
||||
private void HideWindow()
|
||||
{
|
||||
this.Visible = false;
|
||||
}
|
||||
|
||||
private void TrayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
TrayIcon_MouseClick(sender, e);
|
||||
}
|
||||
|
||||
private static void AbortOwnThread(object thread)
|
||||
{
|
||||
System.Threading.Thread.Sleep(5000);
|
||||
if (Program.IsRunningMainLoop)
|
||||
{
|
||||
Program.IsRunningMainLoop = false;
|
||||
((System.Threading.Thread)thread).Abort();
|
||||
}
|
||||
}
|
||||
|
||||
private void TrayIcon_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
if (Program.DataConnection.GetObjects<Datamodel.Schedule>().Length == 0)
|
||||
ShowWizard();
|
||||
else
|
||||
ToggleStatus();
|
||||
}
|
||||
}
|
||||
|
||||
private void DelayDurationMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
Program.LiveControl.Pause((string)((ToolStripItem)sender).Tag);
|
||||
}
|
||||
|
||||
private void pauseToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LiveControl.State == LiveControls.LiveControlState.Running)
|
||||
Program.LiveControl.Pause();
|
||||
else
|
||||
Program.LiveControl.Resume();
|
||||
}
|
||||
|
||||
private void stopToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Program.Runner.Stop(Duplicati.Server.Serialization.CloseReason.UserClosing);
|
||||
}
|
||||
|
||||
private void SetTrayIconText(string text)
|
||||
{
|
||||
//Strange 64 character limit on linux: http://code.google.com/p/duplicati/issues/detail?id=298
|
||||
try { m_trayIcon.Text = text; }
|
||||
catch
|
||||
{
|
||||
if (text.Length >= 64)
|
||||
m_trayIcon.Text = text.Substring(0, 60) + "...";
|
||||
}
|
||||
}
|
||||
|
||||
private void WorkThread_StartingWork(object sender, EventArgs e)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EventHandler(WorkThread_StartingWork), sender, e);
|
||||
return;
|
||||
}
|
||||
|
||||
m_trayIcon.Icon = Properties.Resources.TrayWorking;
|
||||
string tmp = string.Format(Strings.MainForm.TrayStatusRunning, Program.WorkThread.CurrentTask == null ? "" : Program.WorkThread.CurrentTask.Schedule.Name);
|
||||
SetTrayIconText(tmp);
|
||||
stopToolStripMenuItem.Enabled = true;
|
||||
}
|
||||
|
||||
private void WorkThread_CompletedWork(object sender, EventArgs e)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EventHandler(WorkThread_CompletedWork), sender, e);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Program.LiveControl.State != LiveControls.LiveControlState.Paused)
|
||||
{
|
||||
m_trayIcon.Icon = m_currentIcon;
|
||||
SetTrayIconText(m_currentTooltip);
|
||||
}
|
||||
|
||||
stopToolStripMenuItem.Enabled = false;
|
||||
}
|
||||
|
||||
private void quitToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Quit();
|
||||
}
|
||||
|
||||
public bool IsInQuit
|
||||
{
|
||||
get { return m_inQuit; }
|
||||
}
|
||||
|
||||
public bool Quit()
|
||||
{
|
||||
//Under Mono we somehow keep invoking this function recursively, eventually causing a stack-overflow exception
|
||||
if (m_inQuit)
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
m_inQuit = true;
|
||||
if (Program.WorkThread.Active && MessageBox.Show(Strings.MainForm.ExitWhileBackupIsRunningQuestion, Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) != DialogResult.Yes)
|
||||
return false;
|
||||
|
||||
Program.LiveControl.Pause();
|
||||
Program.Runner.Stop(Duplicati.Server.Serialization.CloseReason.ApplicationExitCall);
|
||||
|
||||
m_trayIcon.Visible = false;
|
||||
if (StatusDialog != null && StatusDialog.Visible)
|
||||
StatusDialog.Close();
|
||||
if (WizardDialog != null && WizardDialog.Visible)
|
||||
WizardDialog.Close();
|
||||
|
||||
EnsureBackupIsTerminated(Duplicati.Server.Serialization.CloseReason.ApplicationExitCall);
|
||||
|
||||
Application.Exit();
|
||||
|
||||
return true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_inQuit = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShowSettings();
|
||||
}
|
||||
|
||||
private void statusToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShowStatus();
|
||||
}
|
||||
|
||||
private void wizardToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShowWizard();
|
||||
}
|
||||
|
||||
private void throttleOptionsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
new ThrottleControl().ShowDialog(this);
|
||||
}
|
||||
|
||||
|
||||
private void ChangeStatusVisibility(bool toggle)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EmptyDelegate(ShowStatus));
|
||||
return;
|
||||
}
|
||||
|
||||
if (StatusDialog == null || !StatusDialog.Visible)
|
||||
StatusDialog = new ServiceStatus();
|
||||
|
||||
if (toggle && StatusDialog.Visible)
|
||||
StatusDialog.Close();
|
||||
else
|
||||
{
|
||||
StatusDialog.Show();
|
||||
StatusDialog.Activate();
|
||||
}
|
||||
}
|
||||
public void ToggleStatus()
|
||||
{
|
||||
ChangeStatusVisibility(true);
|
||||
}
|
||||
public void ShowStatus()
|
||||
{
|
||||
ChangeStatusVisibility(false);
|
||||
}
|
||||
|
||||
public void ShowWizard()
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EmptyDelegate(ShowWizard));
|
||||
return;
|
||||
}
|
||||
|
||||
if (WizardDialog == null || !WizardDialog.Visible)
|
||||
WizardDialog = new WizardHandler();
|
||||
|
||||
WizardDialog.Show();
|
||||
}
|
||||
|
||||
public void ShowSettings()
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EmptyDelegate(ShowSettings));
|
||||
return;
|
||||
}
|
||||
|
||||
lock (Program.MainLock)
|
||||
{
|
||||
ApplicationSetup dlg = new ApplicationSetup();
|
||||
dlg.ShowDialog(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
m_trayIcon.Visible = false;
|
||||
Program.LiveControl.StateChanged -= new EventHandler(LiveControl_StateChanged);
|
||||
Program.WorkThread.StartingWork -= new EventHandler(WorkThread_StartingWork);
|
||||
Program.WorkThread.CompletedWork -= new EventHandler(WorkThread_CompletedWork);
|
||||
Program.SingleInstance.SecondInstanceDetected -= new SingleInstance.SecondInstanceDelegate(SingleInstance_SecondInstanceDetected);
|
||||
|
||||
Duplicati.Server.Serialization.CloseReason cr = Server.Serialization.CloseReason.None;
|
||||
switch (e.CloseReason)
|
||||
{
|
||||
case System.Windows.Forms.CloseReason.UserClosing:
|
||||
case System.Windows.Forms.CloseReason.ApplicationExitCall:
|
||||
case System.Windows.Forms.CloseReason.FormOwnerClosing:
|
||||
case System.Windows.Forms.CloseReason.MdiFormClosing:
|
||||
cr = Duplicati.Server.Serialization.CloseReason.ApplicationExitCall;
|
||||
break;
|
||||
case System.Windows.Forms.CloseReason.None:
|
||||
cr = Server.Serialization.CloseReason.None;
|
||||
break;
|
||||
case System.Windows.Forms.CloseReason.TaskManagerClosing:
|
||||
cr = Server.Serialization.CloseReason.TaskManagerClosing;
|
||||
break;
|
||||
case System.Windows.Forms.CloseReason.WindowsShutDown:
|
||||
cr = Server.Serialization.CloseReason.WindowsShutDown;
|
||||
break;
|
||||
}
|
||||
|
||||
EnsureBackupIsTerminated(cr);
|
||||
|
||||
//The form occasionally hangs on Mono, so we force kill it after 5 secs if it did not quit itself
|
||||
if (Library.Utility.Utility.IsMono)
|
||||
new System.Threading.Thread(AbortOwnThread).Start (System.Threading.Thread.CurrentThread);
|
||||
}
|
||||
|
||||
private void SingleInstance_SecondInstanceDetected(string[] commandlineargs)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.Invoke(new SingleInstance.SecondInstanceDelegate(SingleInstance_SecondInstanceDetected), new object[] { commandlineargs });
|
||||
return;
|
||||
}
|
||||
|
||||
if (HandleCommandlineArguments(commandlineargs))
|
||||
return;
|
||||
|
||||
//TODO: This actually blocks the app thread, and thus may pile up remote invocations
|
||||
if (Program.TraylessMode)
|
||||
try { StatusDialog.Focus(); }
|
||||
catch { }
|
||||
else
|
||||
ShowWizard();
|
||||
}
|
||||
|
||||
private bool HandleCommandlineArguments(string[] _args)
|
||||
{
|
||||
bool anyUiShown = false;
|
||||
|
||||
List<string> args = new List<string>(_args);
|
||||
Dictionary<string, string> options = Library.Utility.CommandLineParser.ExtractOptions(args);
|
||||
|
||||
//Backwards compatible options
|
||||
if (args.Count == 2 && args[0].ToLower().Trim() == "run-backup")
|
||||
options["run-backup"] = args[1].Trim();
|
||||
|
||||
//Backwards compatible options
|
||||
if (args.Count == 1 && args[0] == "show-status")
|
||||
options["show-status"] = "";
|
||||
|
||||
//Backwards compatible options
|
||||
if (args.Count == 2 && args[0].ToLower().Trim() == "run-backup-group")
|
||||
options["run-backup-group"] = args[1].Trim();
|
||||
|
||||
//If pause is requested, pause before parsing --run-backup
|
||||
if (options.ContainsKey("pause"))
|
||||
{
|
||||
string period = options["pause"];
|
||||
if (string.IsNullOrEmpty(period))
|
||||
Program.LiveControl.Pause();
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
Program.LiveControl.Pause(period);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Program.LiveControl.Pause();
|
||||
MessageBox.Show(this, string.Format(Strings.MainForm.PauseOperationFailed, ex), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
anyUiShown = true;
|
||||
}
|
||||
|
||||
if (options.ContainsKey("run-backup"))
|
||||
{
|
||||
string backupname = options["run-backup"];
|
||||
if (string.IsNullOrEmpty(backupname))
|
||||
{
|
||||
if (WizardDialog == null || !WizardDialog.Visible)
|
||||
{
|
||||
WizardDialog = new WizardHandler(new System.Windows.Forms.Wizard.IWizardControl[] { new Wizard_pages.SelectBackup(Duplicati.GUI.Wizard_pages.WizardSettingsWrapper.MainAction.RunNow) });
|
||||
WizardDialog.Show();
|
||||
anyUiShown = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
anyUiShown = true;
|
||||
|
||||
Datamodel.Schedule[] schedules = Program.DataConnection.GetObjects<Datamodel.Schedule>("Name LIKE ?", backupname.Trim());
|
||||
if (schedules == null || schedules.Length == 0)
|
||||
{
|
||||
MessageBox.Show(string.Format(Strings.MainForm.NamedBackupNotFound, backupname), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
else if (schedules.Length > 1)
|
||||
{
|
||||
MessageBox.Show(string.Format(Strings.MainForm.MultipleNamedBackupsFound, backupname, schedules.Length), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Library.Utility.Utility.ParseBoolOption(options, "full"))
|
||||
Program.WorkThread.AddTask(new FullBackupTask(schedules[0]));
|
||||
else
|
||||
Program.WorkThread.AddTask(new IncrementalBackupTask(schedules[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (options.ContainsKey("run-backup-group"))
|
||||
{
|
||||
string groupname = options["run-backup-group"];
|
||||
if (string.IsNullOrEmpty(groupname))
|
||||
{
|
||||
if (WizardDialog == null || !WizardDialog.Visible)
|
||||
{
|
||||
WizardDialog = new WizardHandler(new System.Windows.Forms.Wizard.IWizardControl[] { new Wizard_pages.SelectBackup(Duplicati.GUI.Wizard_pages.WizardSettingsWrapper.MainAction.RunNow) });
|
||||
WizardDialog.Show();
|
||||
anyUiShown = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Datamodel.Schedule[] schedules = Program.DataConnection.GetObjects<Datamodel.Schedule>("Path LIKE ?", groupname.Trim());
|
||||
if (schedules == null || schedules.Length == 0)
|
||||
{
|
||||
MessageBox.Show(string.Format(Strings.MainForm.NamedBackupGroupNotFound, groupname), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
bool full = Library.Utility.Utility.ParseBoolOption(options, "full");
|
||||
|
||||
foreach(Datamodel.Schedule s in schedules)
|
||||
if (full)
|
||||
Program.WorkThread.AddTask(new FullBackupTask(s));
|
||||
else
|
||||
Program.WorkThread.AddTask(new IncrementalBackupTask(s));
|
||||
}
|
||||
|
||||
anyUiShown = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (Library.Utility.Utility.ParseBoolOption(options, "show-status"))
|
||||
{
|
||||
ShowStatus();
|
||||
anyUiShown = true;
|
||||
}
|
||||
|
||||
if (Library.Utility.Utility.ParseBoolOption(options, "show-wizard"))
|
||||
{
|
||||
ShowWizard();
|
||||
anyUiShown = true;
|
||||
}
|
||||
|
||||
//Resume if requested
|
||||
if (Library.Utility.Utility.ParseBoolOption(options, "resume"))
|
||||
{
|
||||
Program.LiveControl.Resume();
|
||||
anyUiShown = true;
|
||||
}
|
||||
|
||||
return anyUiShown;
|
||||
}
|
||||
|
||||
private void EnsureBackupIsTerminated(Duplicati.Server.Serialization.CloseReason reason)
|
||||
{
|
||||
//Ensure that this function can only be called once,
|
||||
// as this prevents multiple termination questions presented to the user
|
||||
if (m_hasAttemptedBackupTermination)
|
||||
return;
|
||||
m_hasAttemptedBackupTermination = true;
|
||||
|
||||
if (Program.Runner != null && Program.WorkThread != null && Program.WorkThread.Active)
|
||||
{
|
||||
//Make sure no new items can enter the queue
|
||||
if (Program.Scheduler != null)
|
||||
Program.Scheduler.Terminate(true);
|
||||
|
||||
//We want no new items to enter the queue
|
||||
Program.WorkThread.Terminate(false);
|
||||
|
||||
Program.Runner.Pause();
|
||||
if (!Program.Runner.IsStopRequested)
|
||||
Program.Runner.Stop(reason);
|
||||
|
||||
//Wait 15 seconds to see if the stop works
|
||||
for (int i = 0; i < 15; i++)
|
||||
{
|
||||
Program.WorkThread.Join(1000);
|
||||
Application.DoEvents();
|
||||
if (!Program.WorkThread.Active)
|
||||
break;
|
||||
}
|
||||
|
||||
while (Program.WorkThread.Active)
|
||||
{
|
||||
//Ask the user if we should abort
|
||||
if (MessageBox.Show(Strings.MainForm.TerminateForExitQuestion, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||
{
|
||||
//Abort the thread
|
||||
Program.Runner.Terminate(reason);
|
||||
|
||||
//Give last 5 second chance to write the remaining data
|
||||
int i = 5;
|
||||
while (i > 0 && !Program.WorkThread.Join(1000))
|
||||
{
|
||||
//The Join call blocks the main thread, so let pending events through
|
||||
Application.DoEvents();
|
||||
i--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//Wait 18 * 10 seconds = 3 minutes before asking again
|
||||
for (int i = 0; i < 18; i++)
|
||||
{
|
||||
Program.WorkThread.Join(1000 * 10);
|
||||
Application.DoEvents();
|
||||
|
||||
if (!Program.WorkThread.Active)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TrayIcon_BalloonTipClicked(object sender, EventArgs e)
|
||||
{
|
||||
ShowStatus();
|
||||
}
|
||||
|
||||
private void TrayMenu_LocationChanged(object sender, EventArgs e)
|
||||
{
|
||||
// This is a workaround by Jenlehma for not displaying the context menu on the right screen:
|
||||
// http://code.google.com/p/duplicati/issues/detail?id=600
|
||||
|
||||
// We assume that only Windows is broken here
|
||||
if (!Duplicati.Library.Utility.Utility.IsClientLinux)
|
||||
{
|
||||
// First we get the top/left position of the TrayMenu and the current mouse position
|
||||
Point TrayMenuTopLeft = new Point(TrayMenu.Left, TrayMenu.Top);
|
||||
Point mousePos = Cursor.Position;
|
||||
|
||||
// Now get the screen objects of both coordinates (mouse / traymenu)
|
||||
Screen ScrContextMenu = Screen.FromPoint(TrayMenuTopLeft);
|
||||
Screen ScrCursor = Screen.FromPoint(mousePos);
|
||||
|
||||
// if the mouse and the tray menu is on different screens ...
|
||||
if (ScrContextMenu.DeviceName != ScrCursor.DeviceName)
|
||||
{
|
||||
// if the mouse sits exactly on the top or the bottom of the menu, the menu might have an offset on the x-axis
|
||||
if (TrayMenuTopLeft.Y + TrayMenu.Height == mousePos.Y || TrayMenuTopLeft.Y == mousePos.Y)
|
||||
{
|
||||
if (TrayMenuTopLeft.X < mousePos.X)
|
||||
TrayMenu.Left = mousePos.X;
|
||||
else if (TrayMenuTopLeft.X > mousePos.X)
|
||||
TrayMenu.Left = mousePos.X - TrayMenu.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
// if the y-axis is off .. just move that.
|
||||
TrayMenu.Top = mousePos.Y;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,880 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="TrayIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="TrayMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>115, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="statusToolStripMenuItem.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Segoe UI, 9pt, style=Bold</value>
|
||||
</data>
|
||||
<data name="statusToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 22</value>
|
||||
</data>
|
||||
<data name="statusToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Status</value>
|
||||
</data>
|
||||
<data name="wizardToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 22</value>
|
||||
</data>
|
||||
<data name="wizardToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Wizard...</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>122, 6</value>
|
||||
</data>
|
||||
<data name="optionsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 22</value>
|
||||
</data>
|
||||
<data name="optionsToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Options...</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>122, 6</value>
|
||||
</data>
|
||||
<data name="pauseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="pauseToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Pause</value>
|
||||
</data>
|
||||
<data name="DelayDuration05Menu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>132, 22</value>
|
||||
</data>
|
||||
<data name="DelayDuration05Menu.Text" xml:space="preserve">
|
||||
<value>5 minutes</value>
|
||||
</data>
|
||||
<data name="DelayDuration15Menu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>132, 22</value>
|
||||
</data>
|
||||
<data name="DelayDuration15Menu.Text" xml:space="preserve">
|
||||
<value>15 minutes</value>
|
||||
</data>
|
||||
<data name="DelayDuration30Menu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>132, 22</value>
|
||||
</data>
|
||||
<data name="DelayDuration30Menu.Text" xml:space="preserve">
|
||||
<value>30 minutes</value>
|
||||
</data>
|
||||
<data name="DelayDuration60Menu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>132, 22</value>
|
||||
</data>
|
||||
<data name="DelayDuration60Menu.Text" xml:space="preserve">
|
||||
<value>1 hour</value>
|
||||
</data>
|
||||
<data name="pausePeriodToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="pausePeriodToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Pause period</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="stopToolStripMenuItem.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="stopToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="stopToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Stop</value>
|
||||
</data>
|
||||
<data name="throttleOptionsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="throttleOptionsToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Throttle options...</value>
|
||||
</data>
|
||||
<data name="controlToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 22</value>
|
||||
</data>
|
||||
<data name="controlToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Control</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>122, 6</value>
|
||||
</data>
|
||||
<data name="quitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 22</value>
|
||||
</data>
|
||||
<data name="quitToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Quit</value>
|
||||
</data>
|
||||
<data name="TrayMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>126, 132</value>
|
||||
</data>
|
||||
<data name=">>TrayMenu.Name" xml:space="preserve">
|
||||
<value>TrayMenu</value>
|
||||
</data>
|
||||
<data name=">>TrayMenu.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="TrayIcon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAwAMDAQAAEABABoBgAAxgAAACAgEAABAAQA6AIAAC4HAAAYGBAAAQAEAOgBAAAWCgAAEBAQAAEA
|
||||
BAAoAQAA/gsAADAwAAABAAgAqA4AACYNAAAgIAAAAQAIAKgIAADOGwAAGBgAAAEACADIBgAAdiQAABAQ
|
||||
AAABAAgAaAUAAD4rAAAwMAAAAQAgAKglAACmMAAAICAAAAEAIACoEAAATlYAABgYAAABACAAiAkAAPZm
|
||||
AAAQEAAAAQAgAGgEAAB+cAAAKAAAADAAAABgAAAAAQAEAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP//
|
||||
/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4d3d3d3d3
|
||||
d3d3d3d3d3d3d3cAAAAAAIeIiPj4+Pj4+Pj4+Pj4+Pj4+Ph4AAAACHh3JyNiNiNiNiNiNiNiNiNiNniH
|
||||
cAAACIcnInI2I2I2I2I2I2I2I2I2MiN/cAAAh4JyemJjanJ6cnpyenJ6cnpyY2poiAAAiHIqNjOmMjYj
|
||||
ajY2JycjajYnpycnhwAAiCcnImJyemOoeHh4eHh4eHh4dyMniAAAh3KnJ6cqNjY4////////////h6an
|
||||
hwAAiCciejJyY6Jn/4+PiPiI+I+P9ycj9wAAiCJ6JyajYnJ4+P+P+Pj4j4iPh6cmiAAAiHo2NqNjp6Ko
|
||||
/4+Pj4+PiPiP9yJ69wAAiCYno2NiYnJ3//j4iIiIiIj492OniAAAiCOmJjpjo2p4+PiIiIiIiIiPh6Yy
|
||||
9wAAiHJzeHd4d3d3//j/j/j4+Ij49yemiAAAiCpqiP/4///4//+P+Pj4j4+Ph6Yz+AAAiHI3j4j4+IiI
|
||||
+PiIiPiIiIiP9yNqiAAA96emf/j4+Pj3//j4+Ij4+IiPh6aniAAAiHI6j4+PiPiI+P+P/4//j/iP92On
|
||||
iAAA9yp2iPj4j4iI/4iIj4j4+Pj496cm+AAAiHp6j4+IiIiI//j4j4j//4iPh6ajiAAA+CcjiPiIiIiI
|
||||
+P//+Pj4+Pj/9yen+AAAiCp6j////4+I/4iIj4j4+PiPh6ei9wAAiHpjiIiIiIiI//iIj4iIiIj/96Y2
|
||||
+AAA+Cenj/+IiPiIj4//////+Pj492p6iAAAiKeniPj/j4iI//+Pj4+Pj4+Ph6en+AAAiHp6j/+IiPj4
|
||||
+P///////4iIiHp6iAAA+Cd3j4+I+PiI/4+Pj4+Pj4iIhqh3+AAAiKeoj/j/j4+I////////+I+Id3p6
|
||||
iAAAiHeniP+I+PiI/4+Pj4+Pj4iIp6in9wAAiKeKj/j4iPj4////////+IiGiod6+AAAiDqHj/+P+P+I
|
||||
+Pj4+Pj4/4eoqKiniAAAiGioj4/4/4/4iIiIiIiIeH53d3qK9wAAiKeKj/j/j/j///iPiH6neoqKioh6
|
||||
9wAAiHqIj/+P+P+Pj4iIiIeKiKiHeKin9wAAh6h3j4/4/4//+Pj4iKiod4qKioiKiAAA93d3j///j/j4
|
||||
/4j4joeHd4eHiKin9wAAiKh4j4+P////j/iId3eoeoqKh4eKiAAAiDioj///j4+P+PiOuKiIeIiIqKh6
|
||||
9wAA92eIiIiIiIiIiIh4qIiod6ioiId3iAAAiHqKh4eHiHiHjod4iKiIeIiHd3eohwAAD3eoioeKh4qH
|
||||
h3h3eIioioeHh6eHgAAACIh3p6p6emp6qqqqqqenp6qqp3h4cAAAAIiHh4eHh4h4eIiIh4eHeHh4h4eI
|
||||
AAAAAACIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA/AAAAAA/AADwAAAAAA8AAOAAAAAABwAA4AAAAAAH
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
|
||||
AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
|
||||
AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAA
|
||||
AAAABwAA8AAAAAAPAAD8AAAAAD8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAQAAAAAAAAC
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/
|
||||
AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAId3d3d3d3d3d3d3eAAAAAeIiHiI
|
||||
eIh4iHiIeIhwAACHciJyInIiciJyInInhwAIgicnononpypypyejYniACHcqcnI2d3d3d3d3d3oocAhy
|
||||
ciKnInj///////hyeHAIenJ6cnp4+Pj4iIj/aihwCHJ6cmOmP/+Pj/j4j3NogAh6NiOmMn+IiIiIiI9q
|
||||
OHAIgmeIiIh///+PiI+PcmiACHOn+PiPiPiI+IiIj2OocAiCd/j4+I//j4j/+P96eIAIemf4+IiPj4j4
|
||||
+PiPY6hwCIKo+IiIiPj4+P+I/2pogAh3p//4+I/4+PiP+PhzqHAIinf4iIiPj4j4iIj/aniACHp3/4/4
|
||||
j//////4+HeocAiHqPiIj4j4+Pj4+Ih6eIAIenj//4+P/////4j3eniACIeo+Ij4j4+Pj4+IioeocAh6
|
||||
iI/4/4//////iH6oqIAIh6j/j4+IiIiHeOeod4hwCHqI//////iIjqioiop4cAh4ePj4+Pj4+HiKh3h4
|
||||
qIAIeoj/////+Ih6iHioqIhwCHio+I+I+IiOiKh4h4eocAiKiIiIiOiId3iHeoeHqIAAh3qKinqKioqK
|
||||
ioiop4gAAAiHd3eHd3d3d3d3d4hwAAAAiIiIiIiIiIiIiIiIAAAAAAAAAAAAAAAAAAAAAAAA//////AA
|
||||
AA/gAAAHwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
|
||||
AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAPgAAAH8AAAD///
|
||||
//8oAAAAGAAAADAAAAABAAQAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
|
||||
AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAACI
|
||||
iIiIiIiIiIh4AAh3IiIiIiIiIid4gAhycnNnNnNnNjIngAgiNiY2iIiIiPgigAh6Y6On////j4hjgAgj
|
||||
anYn/4iI+IimgAhqdzd3+Pj4iPgjgAg2j4+I/4+IiIhqgAgjj4+I+Pj/+PgngAh6j4iI+I+I+PimgAin
|
||||
j4+I//j/iPgjgAh6j4iI+I+I+Pim8Ainj4+I////+Ih6gAh3j4+I/4+PiIengAinj4j4////+IqK8Ah3
|
||||
j//4iIiIiGh3gAioj4+P+PiKioqKgAh4j///+IjoeHiogAioj/j4+IioqKiKgAh4iIiIiHiIiIeHgAiK
|
||||
enp6eoqnp6iogACIiIiIiIiIiIiIAAAAAAAAAAAAAAAAAP///wDAAAMAgAABAIAAAQCAAAEAgAABAIAA
|
||||
AQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAA
|
||||
AQDAAAMA////ACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA
|
||||
AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAA
|
||||
AAAId3d3d3d3gAcioqenp6JwB6cnj4+P93AHInKI+IiGcAd4iI+Pj/KACn+Pj4+I9jAHeIiPj/j3oAev
|
||||
+P+Pj4eAB4j4j//4ioAHf4+P+PiGgAeI//iId6igCo/4+Iioh4AIiIiIh4d4oAh6h3qKioeAAAAAAAAA
|
||||
AAD//wAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
|
||||
AAD//wAAKAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAvkS8AL5YvAC+a
|
||||
LwAvnS8ANYk1ADWMNQA/hj8AN484ADiPOAAwkTAAMJUwADaRNgA2lTYAMJgwADCeMAA3kzgAOJQ4ADiZ
|
||||
OAA5nTkAMKMwADigNwAwqzAAOqE6ADumOwA8ojwAPaY8ADyrPAAxsDEAPbQ9AECLQABdi10AQK9BAEK0
|
||||
QgBDu0QATb5NAFukXABZvlkAYY1hAGGQYgBrkGkAdJJyAHWUcwB2lnQAd5h0AHicdgB8n3oAYaphAH6i
|
||||
fAB7sXkARMREAEjASABUwlQAW8ZbAF/KXwBjxWMAY8xjAGrMagBr0WsAbNpsAHPUcwB22HYAe9V7AHzZ
|
||||
fACAk30AgaJ/AIDXfwCLi4sAi4uMAI2NjgCFkYEAg5eDAIaShQCIlIQAiZWIAI+PkACRkZIAlJaQAJSU
|
||||
lQCWmZMAl5qUAJiblQCZnJYAl5eYAJiYmQCbnpgAnJ6YAJqanACdnZ0AhKSFAI+jjwCGsIQAi7OJAJC1
|
||||
jwCYoZkAnaCaAJq6mACjp58An5+gAKGhogCjpKAApaaiAKOjpACkpKYAqqamAKOooAClqaEApqikAKio
|
||||
pACnp6gAp66oAKioqQCrrKgAqqqsAKysrgCyrq0AqrSoALOwrwCurrAAsLCyALWxsQC2tbIAs7O0ALa2
|
||||
tgC8tbIAtby1ALq5tQC5uLkAvbq6AL2+ugC+vLwAwreyAMK4swDBubYAxbq2AMG8uQDGvbkAwb+/AMW/
|
||||
vADIv7wAgt2CAIrdigCSwpEAmcSXAJ7AnQCF4IUAi+KLAJPkkwClwaIAqcOnAK/HrQCzzrEAvsy8AMPA
|
||||
vgDIwb4AwM2+AMHBwADFwsEAxcXCAMPDxADGxcYAy8PAAMrEwQDMxcIAyMbFAM3HxADCzcAAzcjGAMnJ
|
||||
yADNysgAy8zJAM3OywDNzc4A2s3HAN3MxgDSzcoA2M7JAN7OyADP0M0A1dDOAN7QygDa0s0A3tHNAM/P
|
||||
0ADR0dEA1tLQANPT1ADV1dUA29XSAN7Y1QDX19gA2dnZANvb3ADc3N0A4dHKAODTzQDk08wA4tTPAOXV
|
||||
zgDr1s4A7NfOAOzYzwDh1tIA5tfQAOjX0ADm2NIA4drWAOXa1QDo2dMA7drSAO3c0wDp2tQA7tvUAOnc
|
||||
1gDu3dUA4tzZAOXd2gDh390A5d/cAOne2QDt39gA8N/XAOXg3QDr4d0A8OHaAPDi3ADx5N4A4+LhAOrk
|
||||
4ADs5eEA6ubkAOzn5ADu6OUA6urpAOvs6wDv7+0A8ubgAPLo4gDx6eYA9OrmAPTs5wDw6+gA8u3qAPXu
|
||||
6gDz7uwA9O/tAPbw7QD48u8A8vLxAPn08QD5+PcA+fn4AAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUU1NERERERERERERERERERERERERERERERERE
|
||||
RERERERERFMAAAAAAAAAAAAAZ2dUiauruLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjAuHJEVAAA
|
||||
AAAAAAByZ2duHwcFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUHJ324S1QAAAAAAACeZ0cFCgoK
|
||||
AQoBAQEKAQEKAQEKAQEKAQEKAQEKAQoBAQoBAQoKCgVauFMAAAAAAH9tVAUKCgoKCgoKCgoKCgoKCgoK
|
||||
CgoKCgoKCgoKCgoKCgoKCgoKCgoJfXpTAAAAALhnHwELAQEKAQoBAQEKAQEKCgkSCQkJEgkJCRIJCQkS
|
||||
CQkJEgkKCgoBJ8BTAAAAALhUHgEKAQEKAQoBAQEKAQESSmFfX19fX19fVVVVVVVVUVVRUVEoAQoBHsBV
|
||||
AAAAAKtUCRICAhIBAhIBAhIBAhISYfv7+/v7+/v7+/v7+/r6+vr7++kpChICCr5TAAAAALdUEQECAgIC
|
||||
AgICAgICAgESYfvw8Ozs7Ozd3d3d3cnd3cnd3ekpAgICCbhUAAAAALhUCQ8PAQICAgICAgICAgIVavvw
|
||||
7Ozs3d3d3d3HycnHx8fH7OkpAgICCcBUAAAAALhnEQIPAgIPAgIPAgIPAg8Vavvw8PDs7Ozs3d3d3cfJ
|
||||
x8fH3ekpAhUCEr5nAAAAALhnChICDwIUAhQCDw8PAg8Vavvw8N3OzsXFtraxsbGurq7H7OksAg8CEr5n
|
||||
AAAAALhnEg8PDxQUFQ8PDw8PDw8Xavv38KShoaGIiIiGhoaGg4PH7OkpDw8PEr9nAAAAALhnEg8PFUBH
|
||||
R0dHR0dGRkZHaPv28PDn593n3dvb3c7dxczd7OksDw8PE79nAAAAALhyEhQUF2fp6enp6enp6enncvv2
|
||||
9vDw6e3w8N3n293O3d3M7OksFBQPE8BuAAAAALhyEhQVF2Hw59vb293O3c7Fc/v28KSkpaHavaSkiIiI
|
||||
hobd8OksFBQUE8ByAAAAAMByFw8WF2rp3dvdxc7HxcWxc/v29trazs7wvbbn3efd2ojb8OksFBUPF8By
|
||||
AAAAALhyFxYWGmr43d7a293FzsfFc/v29vD38/P3vbbw8PDw7Yjd8OksFhYWF8ByAAAAAMByFxYVGmrr
|
||||
593Oxb22xa6uc/v28LOvr6fnvb329vDw8Ijp8OktFBQWF8B2AAAAAL92FxYWGmrr6dqIf4Z8fHx8c/v2
|
||||
9raztq/tvb3w9vfw8KHt8OktFhYWF8B6AAAAAL92GhwWHXDr593Avb22tranc/v39vb28Pbwvb3w9vf3
|
||||
8J7w9+ktFhYWGsF2AAAAAMB2GhwWHWfr5+fd593j3d7devv38L29vb3pva/n3ePn3Z7w9ukuHBYcGsF6
|
||||
AAAAAMB2GhwcHXDp6d2eiYl/3q+Ic/v28K+ppKTd2qukqaSkpKTw+ekuHBwcGsF6AAAAAMB2HSIdIXL2
|
||||
596vr6+n3amkevv29vDw8/D28PDw8PDw8PDw8OkuIiIiHcB6AAAAAL92HSMjJXr26fDn6fDp6a+zfvv3
|
||||
9vf39/P58Pn58/fw59ra4+MuIyMjIMB2AAAAAL9yITQ0NXz48Oe2s7Oz3bi9ifv59/f39/n5+ff5+fnw
|
||||
r56IqKtBNDQ0IcB2AAAAAL5yHTQlN3746eevr6+p6ba4ofv59/f39/f39/f38/nnc6ief2gxNDQ0IcB2
|
||||
AAAAALh2ITU1OH/48Onw6fDp8L29nvv59/f59/f59/f5+fPngOnZiVs1NTU1IcByAAAAAMByHTg1OYH4
|
||||
8Ona2trO6b24qfv5+fn5+fn5+fn3+fnnf9mJXDg2NTg1IsByAAAAALhyHTg4OZ748Omvr6un3cCvnvv7
|
||||
+fv5+/n7+fn5+fnwiaBdOTg4ODg4IsBuAAAAALhnIjk6PIn48PDp6fDp6fDnpPj4+Pj4+Pj4+Pj4+Pjp
|
||||
e2A5OTo6Ojo6IsBnAAAAALhnIjo6PKT49unw8PDw8Onwr6urpKSknqSedpSUlJSUjzw6Ojo6Ojo6IsBn
|
||||
AAAAALhnIjw8PqT66fbw8Pjw+PD48PDw6b2vqbezXTw8PD08PDw8PDw8PDw8M71jAAAAALhhIj09Qqv4
|
||||
9vD48Pjw8Pjw+PD424CeiYl6jj09PT09PT09PT09PT09M75jAAAAALdUIj1CQqv49vbw+PD4+PD48Pjw
|
||||
457p2aiQPUI9jD2MPYw9jD2MPYw9I7hjAAAAALdUM4yMkqv4+Pjw+Pj48Pjw+PD446jZt5RCjIyMQoxC
|
||||
QoyMjEKMjIyMI75UAAAAALhUMoyMkrP4+Pj4+Pj3+Pj4+Pj456i3lY2MkYySjJKMkpKMkoySjIyMMrhU
|
||||
AAAAAMBUIZKSk7L4+Pn4+Pj4+Pj3+Pn46YmWjZKSkpKSkpKSkpKSkpKSkpKRI7hjAAAAAMBULzuSk5um
|
||||
pqampqSmpJukm6Sbm5eTjZKSk5KSkpKSkpKSkpKSkpI7L6RUAAAAAH9/SjKSk5OTk5OTk5OTk5OTkpOS
|
||||
k5OTk5OTk5OTk5OTkpOSk5KTk5IylGNjAAAAAADjUykyPJOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OT
|
||||
k5OTk5OTOzJZbW0AAAAAAAB6uFNKJCIyMzMzMzIyMzIyMzI0MjIjMjMzMjMyMzIzMjMyNDIzL15fbm0A
|
||||
AAAAAAAAesB6U0tMTExNTFFMTUxRTExMTExMTExMTExMTExMTUxNSkxTU2OfcgAAAAAAAAAAAAB6uMCr
|
||||
pKCgpJ+goKCkn6CboKCfoKCgoKCgoKCgoKCgoKC3t30AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA/AAAAAA/AADwAAAAAA8AAOAAAAAABwAA4AAAAAAH
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
|
||||
AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
|
||||
AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
|
||||
AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAA
|
||||
AAAABwAA8AAAAAAPAAD8AAAAAD8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
|
||||
AAAAAAAAAAAAAAABAAAAAQAAAAAAADCPMAAwkTAAMJYwADCaMAAwnTAAMaIxADGlMQAxqjEAMa0xADKw
|
||||
MgA1sjUARItEAEWMRQBGlkUATJJLAFWaVABWnlUAXZNcAF6VXABemF0AYJteAGCeXgBGu0YAS79LAEy9
|
||||
TABVu1YAYaJfAHmXdwBzm3EAc5p0AHSadAB9kH4Ae5R8AH2XfgB6mHgAfJp6AH6cewB+nXwAYqVgAG+q
|
||||
bQB0r3IAfaJ+AFHCUQBVx1UAVshWAFrHWgBfw18AWstaAFzMXABnx2YAYcthAGHPYQBoz2gAb8tuAGXS
|
||||
ZQBo02gAa9ZrAG/TbwBu124AbNpsAHbXdgBy2nIAeNJ4AH3bfQB94H0AhoaGAI2NjQCBlIIAhJKEAIeU
|
||||
hwCAmoEAgp2DAISYhQCQkJEAk5OUAJWVlgCXl5gAmZmaAJubnACenp8AgaWCAIWghgCDp4QAhqaEAIao
|
||||
hQCIqoYAiayHAIejiACJpooAiamJAIuqjACMq40Ai6yMAIysjQCZopoAmqiaAJe3lQCetp4AnrybAKOn
|
||||
nwCgsp4An7egAKGhogClpaYApa2iAKavpACmpqgAqamqAKqqrACtra4AprKmAKiwpQCjvKQApL6kAKm4
|
||||
pwCsuakAqr6rALixrgCvr7AAr7uwALGxsQC1t7MAs7O0ALW1tQC7trQAsr+yALy4twC5ubkAvrq5ALu7
|
||||
vAC+vb0Awru3AMa6tQDDvLkAxL+9AMi9uQCOzo0AhN6EAJPDkgCSx5EAlMiSAJXRlACd1J0Ant6eAKDf
|
||||
nwCK4YoAkeSRAJrgmgCiwKAApsKlAKPIowCmyqYAp8OoAKnGqQCpyqoArsqtALLNsQC6w7oAt9G1ALrU
|
||||
uQDGwL4AysG9AM3BvAC/v8AAwcHBAMXCwgDDw8QAxcXGAMjCwADNxMEAz8fEAMjIxgDHx8gAycnJAM3K
|
||||
yQDNzMsAzMzMANDFwQDRyMUA1MvHANHNywDUzcoA0s7NANXPzADW0M4A2NHOANXU1ADY09AA2tTRANzW
|
||||
0wDa1dQA3djVANrZ2QDf29gA3d3dAODSzQDl1M0A7NfOAOzYzwDi1tEA5tfQAOfZ0wDg2dYA5NrVAOrZ
|
||||
0gDs2dEA6dvVAO7b1ADu3dYA4drYAOLd2gDl3tsA6t7YAO/f2ADl4N0A6uDbAO7h2wDp4t0A7uPdAO/k
|
||||
3wDw4doA8ePcAPHk3gDj4uEA5OPiAOTk4wDl5eQA6OLgAOrk4ADt5eEA6OfmAOzn5ADu6OQA6urpAO3q
|
||||
6QDt7OoA7u7sAPDm4QDx6eUA9OnkAPXs5wDw6+gA8u3qAPXu6QDy7uwA8vDuAPbw7QD48u8A8/HwAPXz
|
||||
8QD09PIA+PPwAPj08gAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHlK
|
||||
QkJCQkJCQkJCQkJCQkJCQkJCQkJDbQAAAAAAAABQbW9iYmJiYmJiYmJiYmJiYmJiYmJiZnilSgAAAAAA
|
||||
bWANAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ2eUAAAAK5tDQECAgICAgICAgICAgICAgICAgICAgICAg2l
|
||||
eQAApEYBAQICAgICAgIOJSUlJSUlJSUlJRwlHA8CAn5NAACkHAIEAgQCBAIEAhDg/f39+Pj29vb29vbs
|
||||
EgIEcUoAAKQcAgQEBAQCBAQEEODw7u7W1tbGxsbGxvYSBAKWUAAApEcEBAQEBAQEBAQQ4Pju7u7W1tbO
|
||||
xsbG6RIEBHFQAAClRwQEBAQEBgQEBhHg+MSysrKIiIiIiMbsFAQGllAAAKVYBgYdb29qb2pqZOD48PDm
|
||||
3Nzczs7OzuwUBgSZZwAArVgGBlTs5tzc1Nyr4PjCvLjmuLS0qqrW7BUGBplnAAClWwYGVezWzMzJybLg
|
||||
+Obm1Pa08ObctNzsFQYGm2sAAK5bCAZV7NzMyMm6iOD31MK+6br29PC07vYWCAiZbQAArlsICFfs1KmH
|
||||
hIR24P3cwszpxPb097rw7BsICJttAACuWwgIV+zm5tzc1rTg9+bUwva45vDmuPD2GwgIm20AAK5bCwtV
|
||||
7NyppKm6fef4wsLE5r6+usS6+OwnCwubbQAArlsXGGHs6dTm5r6l5vj49vb3+Pb29tTm4CgYGJttAACu
|
||||
WxgrY/jmvK68wq7s+Pf39/f39/fCh32eKSsYm20AAK1bKy6W7Ozg5uDCuOz99/399/39977CwmYvLiub
|
||||
bQAApVssM5b46cLCwsK47P399/399/33wrxzMjMzLJtnAAClVy43mf3swtTg8Lzg/f39/f39/f3CczY1
|
||||
NTUum2cAAKVVNDqb/fb29vb25sK8vK6upYuNjYs/Ojo6OjeYZwAApVE3PZ347Pbw9vb29vaqpap5PT09
|
||||
PT0/PT0/N5hQAACkKjlAn/329vbw9vbw9q7srYlAQEBAQEBAQEA7mEoAAKQqO4qg/fb2+Pj29vj2uK6O
|
||||
ioqKioqKioqKij2YTQAApUY5kqDg4Obg4ODg4OCuj5KSkpKSkpKSkpKSPJZQAACuahqSlJGRkZGRkZGR
|
||||
kZSTk5OTk5OTk5OTk5IreXkAAACtRho9QUFBQUFBQUFBQUFBQUFBQUFBQUE7K2BnAAAAAAClZxwdHh4e
|
||||
HR4dHh0eHR0dHR0dHR0dHUZndwAAAAAAAACupYB5gHmAeYB5gHmAeYB5gHmAeYB7gK0AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////8AAAD+AAAAfAAAADgAAAAYAAAAGAAAABgAAAAYAA
|
||||
AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
|
||||
AAGAAAABgAAAAYAAAAGAAAABwAAAA+AAAAfwAAAP/////ygAAAAYAAAAMAAAAAEACAAAAAAAQAIAAAAA
|
||||
AAAAAAAAAAEAAAABAAAAAAAAL5EvAC+WLwAvmi8AMowyADWLNQAwkTAAMZQxADSSNAAwmjAAMZ4xADSZ
|
||||
NAA1nzUAMKEwADClMAA1ojUANqY2ADCpMAAwrTAANqk2ADetNgA7rzsAObM5ADyxPABWklYAW5ZaAFuY
|
||||
WQBcmFoAX5pfAEi4SABNvE0AZ5tlAG6ibABmtmcAabppAG2/bQBRwFEAVsBWAFbFVgBYxlgAXsZeAF3J
|
||||
XQBizGIAZcxlAGvRawBs0WwAbdVtAHDRbwB11nUAedZ5AH/bfwB+3H4AhKGBAIK0gACRvY8Al6iVAJuh
|
||||
nACcpJ0AoaGiAKenqACpqaoArq6uAKu7qQCvvq4AsL+uAK+vsACwsLAAsbaxALW1tgC+t7QAvrm3ALe3
|
||||
uAC4uLkAvLy9AIPJggCC24IAid+JAJfBlQCH4IcAjeONAJDjkACjyaIArM6rALDArgCl2KQAqdmoALHC
|
||||
sACyxLEAysC7AM3DvwC/v8AAwcHCAMPDxADFxMUAycLAAMrFwgDPx8MAycbGAM3HxQDIycYAx8fIAMnJ
|
||||
yADOy8oAy8zIAM3MygDPz88A1cfBANHKxgDVycQA18zHANjLxgDVzswA2c7JAMnXxwDN1ssAy9rKANrQ
|
||||
ywDa0c0Az8/QANbS0ADV1NIA1tbVANrV0QDc1dEA2tbUANnZ1wDe2NUA3NrZANvc2gDe3NsA3t7dAOXS
|
||||
ygDl08wA5dXOAOfY0gDi2tYA6NnTAO3Z0QDp3NYA7t3WAOHb2ADi3NoA5N3ZAOXf3ADq39oA4OHfAOfg
|
||||
3QDr4NsA6OHeAPDg2QDw4twA4uLhAOnj4ADq5OEA7OXiAO/p5QDv6ugA8ebhAPHq5gDy7eoA9u7qAPPv
|
||||
7AD17+wA9vHuAPjy7gD08vEA+PTyAPn29AD6+PYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJOkE9PT09PT09PT09PT09
|
||||
PUI7QgAAAGQ4GQUFBQUFBQUFBQUFBQUFBQUcREkAAEIZAQEBAQEBAQcHBwcHBwcHBwcBHD0AAEcFBwcB
|
||||
AQEBH2dnZ2dnYWddYTcBB0kAAEILCQEDAwMDIKSdlpWLi4mJiz8LB0kAAEkHCwMDCwMDIKadk4uGhYWF
|
||||
iz8DB0kAAEkLDRwaHBoZNKaTenVwbmpqi1MNC1oAAEkND2eYmJiYYaaZfo6GdXBullMNDV0AAF0PEGeT
|
||||
hoaFWKaemZ56np11nVYND10AAF0NFWeTZm5YRaaOb4Z6pKB6nlYSDWcAAF0VEmeZmH6GXaaemZt6np56
|
||||
oFYSFWQAAF0VF2eZYWF1RaaZjpiOjn5+pFYXF10AAF0dJXmejo6OZ6ampKCmoKB6eT4kHV0AAF0eKHmb
|
||||
jn+OZ6ampKampqBdYTUnHl0AAEkkK36cenqOZ6impqampqBkNisrJF0AAEkkL3+cnJygf5F/f39yc3JN
|
||||
LCwsJF0AAEkpMZGkoJymoKB6ZWFKLzAvMS8wKkkAAEIrS5GcppygnKR5f1FLMzMzMzMzK0gAAEkrTJil
|
||||
pqWmpaV5UkxOTk5OTk5OK0gAAEghTFVVVVVVVVVUUFBQUFBQUFBMIzwAAHY4IiwuLi4uLiwsLC4sLi4u
|
||||
LiwiOFsAAAByR0E9PDw8PDxBPTw9PTw9PT1DZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AMAA
|
||||
AwCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAA
|
||||
AQCAAAEAgAABAIAAAQCAAAEAgAABAMAAAwD///8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAA
|
||||
AAAAAQAAAAEAAAAAAAAwkjAAMJYwADeSNgAwmzAAR5VGAEeZRgBInUcASZVIAFWUUwBWllUAWJtZAEii
|
||||
RwBJp0gAVqBVAFSvUwBcp1sAW6FcAF2mXQBcq1sAXqtfAGiWaQBynnIAZ6NnAGmqagBqrmsAZLFlAGe0
|
||||
ZgBgv2AAbLJsAGy2bABuuW4AeaZ6AHupewByu3MAdb11AHqzegB5tHoAeL14AGTNZAB0wXUAe8F6AHnG
|
||||
eQB8xnwActVyAH7RfQCcvpsAp6moAKusqwCrr6wAt7q3AIbBhwCByoEAhsmFAIXOhgCF0IQAgN2AAIXZ
|
||||
hACK0IoAncGcAJHQkQCS35IAnNecAJvemwChw58AjeKNAL3AuwC52rkAx8e/AMnGxgDIycIAyszFAM7O
|
||||
ygDZycMA28zGANbOygDE08MA1NHPAN3QygDY0s8A39TPANbS0ADZ09AA2tTRANrW1QDe2NYA3dvaAN/d
|
||||
2wDj1c4A4NbRAOPZ1QDl2dQA4NvYAOLc2QDk3dkA4d7cAOjf2wDC4sEA5eDeAOjh3gDt4dwA8ePdAPHk
|
||||
3wDt5eEA6+bkAO3o5QDy5+IA8ermAPTq5QDx7OkA9e7qAPPw7gD08O0A+PLvAPXy8AD29PEA+PPwAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAADAWFxcXFxcXFxcXFyAvAAAVAQEBAQgKCgoKCgoB
|
||||
IQAACgECAQIubmxqZmZqCBgAAAsCBAIEO2pZTkpKZAYYAAARDkdHREhsXGBOTmQHHQAAERNnW1hZZ1xi
|
||||
bFtnDR0AABMTZ1lITW5cXG5cbw0fAAAaG21NWU1uZGdqXG0PKAAAHSttVFZWb3Nzb01CHCsAAB81bVxi
|
||||
VnNzc3NIKyc1AAAiPHNubmpNR0A3LSwsNQAAIj5zbW9vX0w5OTg4ODoAACU+YWFhYUM9QUFBQUEzAAAy
|
||||
JSYmJiYmJiYrIiYlMAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
|
||||
AACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAA//8AACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9fX4GeHh5Onp6
|
||||
emmAgIF8gYGCf4GBgn+BgYJ/gYGCf4GBgn+BgYJ/gYGCf4GBgn+BgYJ/gYGCf4GBgn+BgYJ/gYGCf4GB
|
||||
gn+BgYJ/gYGCf4GBgn+BgYJ/gYGCf4GBgn+BgYJ/gYGCf4GBgn+BgYJ/gYGCf4GBgn+BgYJ/gYGCf39/
|
||||
gHx4eHlpdnZ3Onp6ewYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhISFBnl5
|
||||
enSOjo7klpaX/pKSk/6Ojo7/i4uM/ouLi/+Li4v+i4uM/ouLjP6Li4v/i4uL/ouLi/6Li4v/i4uL/ouL
|
||||
i/6Li4v/i4uL/ouLi/6Li4z/i4uL/ouLi/6Li4z/i4uM/ouLi/6Li4v/i4uL/ouLjP+Li4z+i4uM/ouL
|
||||
i/+Li4z+i4uL/oyMjP+Ojo/+jY2O/oWFhuR1dXZ0enp7BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACHh4gVjIyNxqSkpf+ZmZr/wMDB/87Ozv/Pz8//0NDQ/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR
|
||||
0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR
|
||||
0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0v/Y2Nn/1tbW/62trf+Pj4//fn5/xnh4eRYAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAJOTkwaUlJXGpqan/qSkpf6nrqj/X4tf/j+GP/42iDb/NYk1/jWJNf81iTX+NYk1/jWJ
|
||||
Nf41iTX/NYk1/jWJNf41iTX/NYk1/jWJNf41iTX/NYk1/jWJNf41iTX/NYk1/jWJNf41iTX/NYk1/jWJ
|
||||
Nf41iTX/NYk1/jWJNf81iTX+NYk1/jWJNf81iTX+NYk1/jaINv8/hj/+YY1h/rW8tf/U1NT+jIyM/oCA
|
||||
gMZ9fX4GAAAAAAAAAAAAAAAAAAAAAImJinTFxcX/n5+g/oOXg/41izX/L5Av/i+QL/4wkDD/L5Av/jCQ
|
||||
MP8vkC/+L5Av/i+QL/4wkDD/L5Av/i+QL/4wkDD/L5Av/i+QL/4wkDD/L5Av/i+QL/4wkDD/L5Av/i+Q
|
||||
L/4wkDD/L5Av/i+QL/4wkDD/L5Av/jCQMP8vkC/+L5Av/jCQMP8vkC/+L5Av/jCQMP8vkC/+L5Av/jWM
|
||||
Nf+Po4/+1NTV/pKSk/96ent0AAAAAAAAAAAAAAAAmpqbB7CwsOSnp6j/maCa/zWNNf8wkTD/MJEw/zCR
|
||||
MP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCR
|
||||
MP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCR
|
||||
MP8wkTD/MJEw/zCRMP81jTX/tby1/7Ozs/+Li4zkg4OEBwAAAAAAAAAAl5eYO9PT1P6fn5//XItc/i+S
|
||||
L/4wkjD/L5Iv/i+SL/4wkjD/L5Iv/jCSMP8vki/+L5Iv/i+SL/4wkjD/L5Iv/i+SL/4wkjD/N5Q3/jmU
|
||||
Of45lTn/OZQ5/jmUOf45lDn/OZQ5/jmUOf45lDn/OZQ5/jmUOf45lDn/OZQ5/jmUOf85lDn+OZQ5/jmU
|
||||
Of85lDn+OZQ5/jmUOf80kzT+L5Iv/jCSMP8vki/+YZBi/tra2v+VlZb+gICBOwAAAAAAAAAAnJydatPT
|
||||
0/6cnJ3/QItA/i+TL/4wkzD/L5Mv/i+TL/4wkzD/L5Mv/jCTMP8vky/+L5Mv/i+TL/4wkzD/L5Mv/i+T
|
||||
L/42ljb/i5eI/p6hm/6eoZv/naCa/p2fmf6cn5n/nJ6Y/puemP6bnZf/mp2X/pmclv6ZnJb/mZuV/pib
|
||||
lf+Ym5X+l5qU/pealP+XmZP+lpmT/pSWkP9rkGn+L5Mv/jCTMP8vky/+QItB/tvb2/+ZmZn+g4OEagAA
|
||||
AAAAAAAAq6urfc3Nzv+ZmZr/N484/zCVMP8wlTD/MJUw/zCVMP8wlTD/MJUw/zCVMP8wlTD/MJUw/zCV
|
||||
MP8wlTD/MJUw/zCVMP85mDj/o6ef//n6+f/6+vj/+fn4//n5+P/5+fj/+fn3//n59//5+fj/+fn3//n4
|
||||
9//5+Pf/+fj3//n49//5+Pf/+fn3//n49//5+Pf/+fn3/+nq6f90knL/MJUw/zCVMP8wlTD/OI84/9XV
|
||||
1v+YmJn/jIyNfQAAAAAAAAAAr6+wf87Ozv6bm5z/N5E3/i+WL/4wljD/L5Yv/i+WL/4wljD/L5Yv/jCW
|
||||
MP8vli/+L5Yv/i+WL/4wljD/L5Yv/i+WL/45mjj/o6ig/vn5+P706+b/8+ji/vLm4P7y5d//8ePd/vDi
|
||||
2/7w4Nr/79/Y/u/e1/7u3dX/7tzU/u3c0//t29P+7tvT/u3b0//t29P+8eXf/urq6f90knL+L5Yv/jCW
|
||||
MP8vli/+N5E3/tXV1v+ampv+j4+QfwAAAAAAAAAAsbGyf8/Pz/+dnZ7/N5M4/zCYMP8wmDD/MJgw/zCY
|
||||
MP8wmDD/MJgw/zCYMP8wmDD/MJgw/zCYMP8wmDD/MJgw/zCYMP85mzj/pKmh//n5+P/06+b/8+fi//Lm
|
||||
4P/y5N7/8eLb//Dg2f/w39f/7t3V/+7b1P/t2tL/7dnR/+zYz//s187/7NfO/+zXzv/s187/8OLc/+rq
|
||||
6f91k3L/MJgw/zCYMP8wmDD/N5M4/9bW1/+dnZ7/kZGSfwAAAAAAAAAAs7Ozf9DQ0f6fn6D/OJQ4/i+Z
|
||||
L/4wmTD/L5kv/i+ZL/4wmTD/L5kv/jCZMP8vmS/+L5kv/i+ZL/4wmTD/L5kv/i+ZL/45nDj/pamh/vn5
|
||||
+P717en/9Orl/vPp4/7z5+H/8uXf/vHj3f7x4tv/8ODZ/u/e1/7u3NX/7tvT/u3Z0f/s2ND+7NfP/uzX
|
||||
zv/r1s3+8OLc/urq6f91lHP+L5kv/jCZMP8vmS/+OJQ4/tfX1/+fn6D+lJSVfwAAAAAAAAAAtLS1f9HR
|
||||
0v6hoaL/OJY4/i+bL/4wmzD/L5sv/i+bL/4wmzD/L5sv/jCbMP8vmy/+L5sv/i+bL/4wmzD/L5sv/i+b
|
||||
L/45njj/paqi/vn6+f727+v/9ezn/ufe2v7l29f/5NrV/uLX0/7i1tH/4dTP/uDTzf7f0cz/39DK/t7O
|
||||
yP/dzcf+3czG/t/Nxv/s187+8OPd/urq6v91lHP+L5sv/jCbMP8vmy/+OJY4/tjY2P+hoaP+lpaXfwAA
|
||||
AAAAAAAAtra2f9LS0/6jo6T/OJg4/i+dL/4wnTD/L50v/jGdMf4xnjH/MZ4x/jGeMf8xnjH+MZ4x/jGe
|
||||
Mf4xnjH/MZ4x/jGeMf46oDr/pqqi/vn6+P738O3/8erm/s3Gw/7MxMH/y8PA/sjAvf7Hv7v/xr26/sa8
|
||||
uf7Fu7f/xbq2/sO5tf/CuLP+wrey/sO3sv/r18/+8ePd/urq6v92lXP+L50v/jCdMP8vnS/+OJg4/tnZ
|
||||
2f+kpKX+mJiZfwAAAAAAAAAAt7e4f9PT1P+lpaf/OZo5/zCfMP8wnzD/OKA3/4CTff+IlIX/iJSE/4eT
|
||||
hP+Gk4P/hpOD/4WSgv+EkYH/hJGB/4SQgP+GkYL/qqem//n6+f/38e3/9u/r//Dp5f/u5+P/7ubh/+3k
|
||||
3//s497/6+Hc/+vf2v/q3tj/6dzW/+ja1P/o2dP/59fR/+jX0P/t29P/8eXf/+rr6v92lnT/MJ8w/zCf
|
||||
MP8wnzD/OZo5/9nZ2v+mpqf/mpqbfwAAAAAAAAAAuLi5f9TU1f6np6j/Opw6/jCgMP4xoDH/PKI8/qOk
|
||||
oP7r7Ov/6+vq/uvr6v/r6+r+6+vq/uvr6v7r6+r/6uvq/urr6v7n5+b/sa6u/vn6+P738e3/9u/r/vLr
|
||||
6P7x6ub/8enl/vDo5P716+f/8+nk/u7k3/7u4t3/7ODb/uzf2f/r3df+6tvV/uvb1P/u3dX+8ubg/urr
|
||||
6v93l3T+MKAw/jGgMf8woDD+Opw6/tra2/+oqKn+nJydfwAAAAAAAAAAubm6f9XV1v6pqar/Op06/jCi
|
||||
MP4xojH/PaM8/qSmov7v7+3/6uLd/urg2//p3tr+6N3Y/ujc1v7n29X/5trU/ubZ0v7j1c//sq2s/vn6
|
||||
+P738e3/8uvn/s/Jx/7Nx8X/zcfE/sjCv/7o4d3/39jU/szFwv7Lw8D/x7+8/se+uv/Gvbn+xby4/sa8
|
||||
uP/u3tf+8uji/urr6v93mHT+MKIw/jGiMf8wojD+Op06/tvb2/+qqqv+np6ffwAAAAAAAAAAurq7f9bW
|
||||
1/+rq6z/Op86/zGkMf8xpDH/PaU8/6Wmov/v7+3/6uDb/+nd1//o29b/59nU/+fY0v/m19D/5dXO/+TT
|
||||
zP/h0Mn/sq6t//n6+f/38e3/9e/r/+Xe2//j3Nn/49zZ/+Ha1//z7Oj/3dfT/9jSzv/u5uL/7eTg/+3j
|
||||
3v/s4tz/6t7Z/8W8uP/u4Nr/8+nl/+rr6v93mXX/MaQx/zGkMf8xpDH/Op86/9vb3P+srK3/n5+hfwAA
|
||||
AAAAAAAAu7u8f9fX2P6srK7/OqE7/jCmMP4xpjH/Pac8/qano/7v7+3/6+Ld/urf2v/p3tj+6dzX/uja
|
||||
1f7n2dP/5tfR/uXWz/7i08v/sq6t/vn6+f738e3/9u/r/vbv6/738Oz/9u/r/vbv6/738Oz/3dfU/tvV
|
||||
0f727ur/9e3p/vXs5//06uX+8ufi/sa+uv/v493+9Ovn/urr6v94mnX+MKYw/jGmMf8wpjD+OqE7/tzc
|
||||
3P+tra/+oaGifwAAAAAAAAAAvLy9f9jY2P6tra//O6M7/jCoMP4xqDH/Pak8/qaopP7v7+7/7OTg/uvi
|
||||
3f/i2dT+4NfS/t/V0P7e087/3tHN/t3Qy/7azcf/s6+u/vr6+f738e3/9O3p/tXPzf7Tzcr/0szJ/s/I
|
||||
xv7t5uL/3tfV/tvV0v738Oz/9+/r/vbu6v/27ej+8+nl/si/vP/x5uH+9e3p/uvr6v94m3b+MKgw/jGo
|
||||
Mf8wqDD+O6M7/tzc3f+vr7D+oqKjfwAAAAAAAAAAvb2+f9jY2f+urrD/O6U7/zGqMf8xqjH/Pas8/6eo
|
||||
pP/v7+7/7ebi/+Xd2f/Cvbr/wry5/8C6t/++uLT/vbaz/721sf+8tLD/sa2s//n6+f/38e3/9O3p/9rT
|
||||
0f/X0c7/1tDO/9PNyv/v6OT/3dfU/9vV0v/38Oz/9/Ds//fv6//27+v/9Ozn/8jBvv/y6OP/9u/r/+vr
|
||||
6v95nHb/Maox/zGqMf8xqjH/O6U7/93d3f+wsLH/o6OlfwAAAAAAAAAAvb2+f9jY2f6vr7H/O6c7/jCs
|
||||
MP4xrDH/Pa08/qiopP7v7+7/7ebi/uzk4P/f2dX+3tfT/t3W0v7c1ND/29PO/tvRzP7Yzsn/s7Cv/vn6
|
||||
+f738e3/9u/r/vbv6/738Oz/9u/r/vbv6/738Oz/3dfU/tvV0v738Oz/9u/r/vfw7P/38Oz+9O3p/sjC
|
||||
v//z6ub+9/Ht/uvr6v95nXb+MKww/jGsMf8wrDD+O6c7/t3d3f+wsLL+pKSlfwAAAAAAAAAAvr6+f9nZ
|
||||
2f6wsLH/O6g7/jCuMP4xrjH/Pa49/qippf7v7+7/7ebi/u3m4v/s5eH+6+Tg/uvj3/7q4t7/6+Ld/urg
|
||||
2/7m29b/tbGw/vn6+f738e3/9e7q/uDa1/7e2NX/3tfV/tzV0v7x6ub/3dfU/tfRz/7r5eH/6uTg/urk
|
||||
4P/r5OD+6eLf/sjCv//z7Oj+9/Lv/uvr6v96nnf+MK4w/jGuMf8wrjD+O6g7/t3d3f+xsbP+pKSmfwAA
|
||||
AAAAAAAAvr6+f9nZ2f+wsLH/O6o8/zGwMf8xsDH/PbA9/6mppf/v7+7/7ebi/+fg3P/Gwb//xcC+/8S/
|
||||
vf/AvLn/49vX/9TNyv/Dvbr/s6+v//n6+f/38e3/8+zo/9HLyf/Pycf/zsjG/8rEwf/q5OD/4tzZ/8/J
|
||||
x//OyMb/y8XC/8rEwv/LxML/ysTB/83Gw//17ur/+PPw/+vr6v96n3j/MbAx/zGwMf8xsDH/O6o8/93d
|
||||
3f+xsbP/paWmfwAAAAAAAAAAvr6+f9nZ2f6vr7H/Pq0+/kG3Qf49tj3/RrVG/qusqP7v7+7/7ebi/urj
|
||||
3//Uzsv+083K/tLNyv7Qy8j/6OHd/s/Kxv7MxsP/tbGx/vn6+f738e3/9u/r/vXu6v717ur/9O7q/vTt
|
||||
6v738Oz/9u/r/vTu6v707er/9O3p/vTt6f/07en+8uvn/vHr5//z7Oj+9PDt/urq6f9+onz+P7c//kK4
|
||||
Qv9GuUb+P60//t3d3f+xsbL+pKSmfwAAAAAAAAAAvb2+f9jY2f6vr7D/P68//k6+Tv5Ovk7/Wb5Z/ra2
|
||||
sv7x8fD/7+nm/u/p5f/v6OX+7+jl/u7o5P7u6OT/7ujk/tPOy/7Uz8z/u7e3/vr6+f738u7/9/Dt/vfw
|
||||
7f738O3/9/Dt/vfw7f738e3/9/Dt/vfx7f738e3/9/Ht/vfx7f/07uv+7Obj/ubg3f/l39z+5+Ph/uLi
|
||||
4f9+n3z+Tr5O/k6+Tv9Ovk7+QK9B/t3d3f+wsLL+o6OlfwAAAAAAAAAAvb2+f9jY2f+urq//QLFA/1LB
|
||||
Uv9SwVL/XcFd/7i4tf/y8vH/8Orn/+3n5P/Y09H/19LQ/9bRz//U0M3/6+Xi/9fT0f/Z1NL/wr+///v7
|
||||
+v/48/D/+PLv//jy7//48u//+PLv//jy7//48u//+PLv//jy7//48u//+PLv//jy7//x7On/0s3L/8bB
|
||||
v//FwL7/yMXE/8rJyP+Bon//UsFS/1LBUv9SwVL/QbFB/9zc3f+vr7D/o6OkfwAAAAAAAAAAvLy9f9fX
|
||||
2P6tra7/QLJA/lfEV/5XxFf/YcRh/rq7t/7y8vH/8Ovn/uvm4//Szsz+0c3L/tHMy/7Oy8j/6eTh/tjU
|
||||
0f7Z1dP/xMHA/vv7+v749PD/+PLv/vjy7/748+//+PLv/vjy7/748+//+PLv/vjy7/748+//+PLv/vjy
|
||||
7//s5uP+s6+v/sjGx//FxMT+v729/qqmpv97sXn+V8RX/lfEV/9XxFf+QrNC/tzc3f+urq/+oaGjfwAA
|
||||
AAAAAAAAu7u8f9bW1/6rq63/QLRB/lvHW/5bx1v/Zcdl/ry9uf7y8vH/8evo/vDr6P/w6uf+8Orn/vDq
|
||||
5/7w6uf/8Orn/tnV0/7a1tT/xsPC/vv7+v759PH/+PLv/vjy7/758/D/+PLv/vjy7/758/D/+PLv/vjy
|
||||
7/758/D/+PLv/vjy7//s5+T+vbq6/urq6v/g39/+vry8/oawhP9cx1z+W8db/lvHW/9bx1v+QrRC/tvb
|
||||
3P+srK7+oKChfwAAAAAAAAAAurq7f9bW1v+qqqv/QbVB/1/KX/9fyl//acpp/76/u//y8/H/8ezp/+/q
|
||||
5//j39z/497b/+Ld2//h3dr/7+nm/9rW1P/a1tT/x8XE//v7+v/59PH/+fPw//nz8P/58/D/+fPw//nz
|
||||
8P/58/D/+fPw//nz8P/58/D/+fPw//jz7//t6OX/vru7/+Hh4f/BwL//i7OJ/2HKYf9fyl//X8pf/1/K
|
||||
X/9fyl//Q7ZD/9vb2/+qqqz/np6gfwAAAAAAAAAAubm6f9XV1f6oqKn/QbdB/mTNZP5kzWT/bc1t/sDB
|
||||
vv7z8/L/8ezp/uzn5P/Szs3+0s7N/tHOzP7Oy8j/6eTh/t3Z1/7Rzsz/x8XE/vv7+v769/X/+vf0/vr3
|
||||
9P769/T/+vf0/vr39P769/T/+vf0/vr39P769/T/+vf0/vr39P/w7ev+vbu7/sXDw/+RtY/+Zsxm/mTN
|
||||
ZP9kzWT+ZM1k/mTNZP9kzWT+Q7hE/tra2/+oqKr+nZ2efwAAAAAAAAAAt7e4f9TU1P+mpqf/QbhC/2nQ
|
||||
af9p0Gn/ctBy/8LDwP/z8/L/8u3q//Hs6f/u6eb/7ejm/+3o5f/t6OX/8ezp//Dr6P/r5uT/ycbG//Hx
|
||||
8P/y8vH/8fHx//Hx8f/x8fH/8fHx//Hx8P/x8vH/8fHw//Hx8P/x8fD/8fHw//Hx8P/q6un/t7Sz/5q6
|
||||
mP9qz2r/adBp/2nQaf9p0Gn/adBp/2nQaf9p0Gn/RLlF/9ra2v+np6j/m5ucfwAAAAAAAAAAtra3f9LS
|
||||
0/6kpKX/QrpC/m3Tbf5t023/dtJ2/sTGwv7z9PP/8u3q/vLt6v/x7er+8u3q/vLt6v7y7er/8e3q/vHt
|
||||
6v7w7On/0s7N/s3Kyf7Oysn/zMnH/snGxf7HxMP/x8PC/sfExP7FwsL/rLWp/qbCo/6mw6T/psOk/qXB
|
||||
o/+jwKH+mcSX/nHScf9t023+bdNt/m3Tbf9t023+bdNt/m3Tbf9t023+RbtF/tnZ2f+kpKb+mZmafwAA
|
||||
AAAAAAAAtbW1f9HR0v6ioqP/Q7tD/nPVc/5z1XP/e9V7/sfIxf709PT/8+7r/vPu6//z7uv+8+7r/vPu
|
||||
6/7z7uv/8+7r/vPu6/7z7uv/8+7r/vPu6/7z7ev/7ejm/tnV0/7RzMr/0MvK/tTR0P7R0ND/kLWP/nPV
|
||||
c/5z1XP/c9Vz/nPVc/9z1XP+c9Vz/nPVc/9z1XP+c9Vz/nPVc/9z1XP+c9Vz/nPVc/9z1XP+RrxG/tjY
|
||||
2P+ioqP+l5eYfwAAAAAAAAAAs7O0f9DQ0f+goKH/Q7xD/3fYd/932Hf/gNd//8nKxv/09fT/8+7s//Pu
|
||||
7P/z7uv/8+7s//Pu7P/z7uz/8+7r//Pu6//z7uz/8+7r//Pu6//z7uv/5eHf/7u5uf/GxMT/xMLC/8G/
|
||||
v/+1srL/ksKR/3fYd/932Hf/d9h3/3fYd/932Hf/d9h3/3fYd/932Hf/d9h3/3fYd/932Hf/d9h3/3fY
|
||||
d/932Hf/R71H/9fX2P+goKH/lJSWfwAAAAAAAAAAsrKyf8/P0P6dnZ7/Q75D/nzafP582nz/hNqE/svM
|
||||
yf709fT/8+/s/vPv7P/z7uz+8+/s/vPv7P7z7+z/8+7s/vPu7P7z7+z/8+7s/vPu7P7z7uz/5eHf/sfG
|
||||
xv7o6Oj/4eHh/sjHxv6ewJ3/fdl9/nzafP582nz/fNp8/nzafP982nz+fNp8/nzafP982nz+fNp8/nza
|
||||
fP982nz+fNp8/nzafP982nz+SL9I/tbW1/+dnZ7+kpKTfwAAAAAAAAAAsLCxf87Oz/6bm5z/RL9E/oDd
|
||||
gP6B3YH/iNyI/s3Oy/719fT/9PDt/vTv7f/z7+z+9O/t/vTv7f707+3/8+/s/vPv7P707+3/8+/s/vPv
|
||||
7P7z7+3/5+Lg/snHx/7i4uL/y8rK/qTCov6C3IL/gN2A/oDdgP6B3YH/gN2A/oHdgf+A3YD+gN2A/oHd
|
||||
gf+A3YD+gN2A/oHdgf+A3YD+gN2A/oHdgf+A3YD+ScFJ/tXV1f+bm5z+kJCRfwAAAAAAAAAArKytfdHR
|
||||
0f+ZmZr/RL9E/4TfhP+F34X/jN6M/8/Qzf/19vX/9fLv//Xx7//18e//9fHv//Xx7//18e//9fHv//Xx
|
||||
7//18e//9fHv//Xx7//08e//6ebl/8jGxv/Ozc3/qcOn/4fdh/+F34X/hd+F/4Xfhf+F34X/hd+F/4Xf
|
||||
hf+F34X/hd+F/4Xfhf+F34X/hd+F/4Xfhf+F34X/hd+F/4Xfhf+F34X/SMBI/9PT1P+ampz/jY2OfQAA
|
||||
AAAAAAAAnp6fatvb2/6YmJn/RbVG/oXghf6J4Yn/keCQ/tDRzv7z9PP/8/Pz/vP08//z8/P+8/Tz/vPz
|
||||
8/7z8/P/8/Pz/vPz8/7z8/P/8/Pz/vPz8/7z8/P/6urq/sLAwP6vx63/i9+L/onhif6J4Yn/ieGJ/onh
|
||||
if6J4Yn/ieGJ/onhif+J4Yn+ieGJ/onhif+J4Yn+ieGJ/onhif+J4Yn+ieGJ/onhif+F4IX+R7ZH/tLS
|
||||
0v+cnJ3+hYWGagAAAAAAAAAAm5ubO9vb2/6cnJz/XKVc/nDbcP6O447/kuKS/r7PvP7Cz8D/ws/A/sLP
|
||||
wP/Cz8D+ws/A/sLOv/7Bzr//wc6//sHNv/7Bzb//wM2+/sDNvv6/zL3/vcq7/rPOsf6R4pH/juOO/o7j
|
||||
jv6O447/juOO/o7jjv6O447/juOO/o7jjv+O447+juOO/o7jjv+O447+juOO/o7jjv+O447+juOO/o7j
|
||||
jv9s2mz+Yaph/sbGxv+enp/+hISFOwAAAAAAAAAAoKCgB7GxsuS3t7f/iJSJ/0XGRf+K44r/kuSS/5Lk
|
||||
kv+T5JP/k+ST/5Pkk/+T5JP/k+ST/5Pkk/+T5JP/k+ST/5Pkk/+T5JP/k+ST/5Pkk/+T5JP/k+ST/5Lk
|
||||
kv+S5JL/kuSS/5Lkkv+S5JL/kuSS/5Lkkv+S5JL/kuSS/5Lkkv+S5JL/kuSS/5Lkkv+S5JL/kuSS/5Lk
|
||||
kv+S5JL/kuSS/4Xhhf9AxUD/qLSo/6Cgof+UlJXkioqKBwAAAAAAAAAAAAAAAI+PkHTg4OD/kpKS/naV
|
||||
dv5Fx0b/dd51/pHkkf6V5pX/luaW/pbmlv+W5pb+luaW/pbmlv6W5pb/luaW/pbmlv6W5pb/luaW/pbm
|
||||
lv6W5pb/luaW/pbmlv6W5pb/luaW/pbmlv6W5pb/luaW/pbmlv6W5pb/luaW/pbmlv+W5pb+luaW/pbm
|
||||
lv+W5pb+luaW/pXmlf+P5I/+cN1w/kDGQP+EpIX+pqan/qenqP9/f4B0AAAAAAAAAAAAAAAAAAAAAKCg
|
||||
oAaenp/G1tbX/pCQkf6GkYf/WqNb/kS2Rf5Fw0X/RcRF/kXERf9FxEX+RcRF/kXERf5FxEX/RcRF/kXE
|
||||
Rf5FxEX/RcRF/kXERf5FxEX/RcRF/kXERf5FxEX/RcRF/kXERf5FxEX/RcRF/kXERf5FxEX/RcRF/kXE
|
||||
Rf9FxEX+RcRF/kXERf9FxEX+RcRF/kXDRf9EtkT+XKRd/pijmf+enp/+p6eo/o+Pj8aKiosGAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACampoVnZ2dxd/f3/+zs7T/lJSV/4+PkP+Ojo//jo6P/46Oj/+Ojo//jo6P/46O
|
||||
j/+Ojo//jo6P/46Oj/+Ojo//jo6P/46Oj/+Ojo//jo6P/46Oj/+Ojo//jo6P/46Oj/+Ojo//jo6P/46O
|
||||
j/+Ojo//jo6P/46Oj/+Ojo//jo6P/46Oj/+Ojo//jo6P/4+PkP+UlJX/mJiZ/6Ojo//Dw8T/k5OUxYmJ
|
||||
ihUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn5+fBoyMjHSurq7k19fY/tjY2P7MzMz/x8fH/sbG
|
||||
x//Gxsf+xsbH/sbGx/7Gxsf/xsbH/sbGx/7Gxsf/xsbH/sbGx/7Gxsf/xsbH/sbGx/7Gxsf/xsbH/sbG
|
||||
x/7Gxsf/xsbH/sbGx/7Gxsf/xsbH/sbGx//Gxsf+xsbH/sbGx//Gxsf+xsbH/sjIyP/Pz9D+0NDQ/qys
|
||||
rOOHh4d0lZWVBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKAGl5eXOpaW
|
||||
l2ihoaJ8pKSkf6SkpH+kpKR/pKSkf6SkpH+kpKR/pKSkf6SkpH+kpKR/pKSkf6SkpH+kpKR/pKSkf6Sk
|
||||
pH+kpKR/pKSkf6SkpH+kpKR/pKSkf6SkpH+kpKR/pKSkf6SkpH+kpKR/pKSkf6SkpH+kpKR/pKSkf6Gh
|
||||
oXyVlZZolpaWOp6engYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAPwA
|
||||
AAAAPwAA8AAAAAAPAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
|
||||
AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
|
||||
AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
|
||||
AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
|
||||
AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
|
||||
AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAHAADwAAAAAA8AAPwA
|
||||
AAAAPwAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAB9fX02ioqKqoaGh+mHh4f9hoaH/4aGh/+Ghof/hoaH/4aGh/+Ghof/hoaH/4aG
|
||||
h/+Ghof/hoaH/4aGh/+Ghof/hoaH/4aGh/+Ghof/hoaH/4aGh/+Ghof/hoaG/YODg+mCgoOqd3d4NgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAjIyNap2dnvytra7/prKm/561nv+ftp//n7ef/5+3n/+ft5//n7ef/5+3
|
||||
n/+ft5//n7ef/5+3n/+ft5//n7ef/5+3n/+ft5//n7ef/5+3n/+ft5//n7ef/5+3n/+ft6D/r7uw/8HB
|
||||
wf+VlZX8e3t8agAAAAAAAAAAAAAAAI+Pjzavr6/8maKa/0SLRP8wjzD/MI8w/zCPMP8wjzD/MI8w/zCP
|
||||
MP8wjzD/MI8w/zCPMP8wjzD/MI8w/zCPMP8wjzD/MI8w/zCPMP8wjzD/MI8w/zCPMP8wjzD/MI8w/zCP
|
||||
MP8wjzD/RYxG/7rDuv+Xl5j8fHx9NgAAAAAAAAAAr6+vq6enqP9EjET/MJEw/zCRMP8wkTD/MJEw/zCR
|
||||
MP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCRMP8wkTD/MJEw/zCR
|
||||
MP8wkTD/MJEw/zCRMP8wkTD/Ro5G/8XFxf+JiYqrAAAAAAAAAAC5ubnph5SH/zCTMP8wkzD/MJMw/zCT
|
||||
MP8wkzD/MJMw/zCTMP8wkzD/MJMw/0aWRf99m3v/f559/3+dfP9+nHz/fpx7/32be/98mnr/fJp6/3ya
|
||||
ef97mXn/e5l5/3qYeP95l3f/TJJL/zCTMP8wkzD/sr+y/42NjukAAAAAAAAAALu7vP57lHz/MJUw/zCV
|
||||
MP8wlTD/MJUw/zCVMP8wlTD/MJUw/zCVMP8wlTD/VZlU/+Pi4f/49fP/9/Tx//fz8P/38u//9/Lv//bx
|
||||
7v/28O3/9fDt//bw7f/28O3/9vDt/+7u7P9dk1z/MJUw/zCVMP+jvKT/k5OU/gAAAAAAAAAAvb2+/32X
|
||||
fv8wlzD/MJcw/zCXMP8wlzD/MJcw/zCXMP8wlzD/MJcw/zCXMP9Wm1T/4+Ph//Tp5P/y5d//8ePc//Dg
|
||||
2f/v3tb/7tvT/+3Z0f/s2M//7NfO/+zXzv/s187/7evp/16UXP8wlzD/MJcw/6S+pP+Xl5j/AAAAAAAA
|
||||
AAC/v8D/gJqB/zCaMP8wmjD/MJow/zCaMP8wmjD/MJow/zCaMP8wmjD/MJow/1adVf/k4+L/9e3o//Tp
|
||||
5P/y5+H/8eTe//Di2//v39j/7t3V/+3a0v/s2ND/7NfO/+zXzv/t6+n/XpZc/zCaMP8wmjD/pb+l/5qa
|
||||
m/8AAAAAAAAAAMHBwv+CnYP/MJww/zCcMP8wnTD/MZ0x/zGdMf8xnTH/MZ0x/zGdMf8xnTH/V59W/+Tj
|
||||
4//38Oz/29TQ/8/HxP/NxMH/y8K+/8rAvP/Jvrr/yLy4/8a7tv/HurX/7NjQ/+7r6v9emF3/MJww/zCc
|
||||
MP+mwab/np6f/wAAAAAAAAAAw8PE/4Wghv8wnzD/MJ8w/3Obcf+osKX/p6+l/6avpP+mrqP/pa6j/6Wt
|
||||
ov+jp5//5OTj//fw7f/07On/8enl//Dn4//v5eD/7uPd/+3g2//r3tj/6tvV/+rZ0v/u29T/7uzq/1+Z
|
||||
Xf8wnzD/MJ8w/6fDqP+hoaL/AAAAAAAAAADFxcb/h6OI/zGiMf8xojH/hqWE/+7s6v/s5eL/6+Tg/+rj
|
||||
3//q4t3/6eDc/9HKxv/k5OP/9/Dt/+Hb2P/X0c//1M7L/+7m4v/Xz8z/1MvH/9HIxP/RxsL/0MXA/+7e
|
||||
1//u7Ov/YJte/zGiMf8xojH/qMSp/6Skpf8AAAAAAAAAAMfHx/+Jpor/MaQx/zGkMf+Gp4T/7ero/+ne
|
||||
2f/o29b/59nT/+bX0P/l1M3/zsG8/+Xk4//38O3/7ujk/+nj3//o4t7/8uvn/9XPy//x6OT/8Obh/+/k
|
||||
3//SyMT/7+Lb/+7t6/9gnV7/MaQx/zGkMf+pxqn/pqao/wAAAAAAAAAAyMjJ/4qoi/8xpzH/Macx/4eo
|
||||
hf/u6+n/6+Ld/+Ta1f/j19P/4dXQ/+DSzf/Mwbz/5eXk//fw7f/n4N3/39jV/93W0//v6OX/19DO//fv
|
||||
6//27un/9ezn/9XMyP/x5uD/7+7s/2CfX/8xpzH/Macx/6rHqv+oqKr/AAAAAAAAAADJycr/i6qM/zGq
|
||||
Mf8xqjH/iKqG/+7s6v/o4d3/x8K//8bAvf/DvLn/wru3/7ixrv/l5eT/9/Dt/+ni3//i29j/4NnW//Dp
|
||||
5f/X0M7/9/Ds//fv6//27+v/1s7L//Pq5f/v7u3/YaFf/zGqMf8xqjH/qsmr/6qqq/8AAAAAAAAAAMrK
|
||||
yv+Mq43/Ma0x/zGtMf+Iq4b/7uzq/+3m4v/s5eH/6+Pf/+ri3f/q4Nv/0snG/+Xl5P/38O3/7OXi/+bg
|
||||
3f/l3tv/8erm/9XPzP/v6OT/7ujk/+/o5P/Uzcr/9O3o/+/v7f9ho1//Ma0x/zGtMf+ryqv/q6ut/wAA
|
||||
AAAAAAAAysrK/4ysjf8ysTL/MbAx/4msh//u7Or/6eLe/8XAvv/Ev73/yMPA/9vU0P+7trT/5uXk//fw
|
||||
7f/j3dr/29XS/9jSz//w6eX/3NbT/9nT0P/Y0c7/2NHO/9jSz//27+v/8O/t/2KlYP8zsTP/NbI1/6vL
|
||||
q/+rq63/AAAAAAAAAADJycr/jKyN/0a7Rv9MvUz/l7eV//Du7P/u6OT/6+Xh/+vk4f/r5eH/29XS/8jC
|
||||
wP/n5uX/9/Ht//fw7P/38Oz/9/Ds//fw7f/38Oz/9/Dt//fw7f/z7en/6uTh/+nj4P/n5uX/b6pt/029
|
||||
Tf9Hu0f/q8ur/6qqrP8AAAAAAAAAAMjIyf+LrIz/S79L/1PCU/+evJv/8e/u/+3n5P/Uz83/087N/9bS
|
||||
z//g2tj/z8vJ/+rq6f/48/D/+PLv//jy7//48u//+PLv//jy7//48u//+PLv/+Pe2/++urn/vLi3/7+8
|
||||
vP90r3L/U8JT/0y/TP+qy6v/qamq/wAAAAAAAAAAx8fI/4mriv9Qw1D/Wsda/6LAoP/x8O7/8Orn/+ji
|
||||
4P/n4t//6eTh/+Hc2f/Rzcv/6+vq//nz8P/48/D/+PPw//jz8P/58/D/+PPw//jz8P/48u//2NPR/93d
|
||||
3f/a2tr/oLKe/1/DX/9ax1r/UcNR/6nLqv+np6j/AAAAAAAAAADFxcb/iKqI/1XHVf9hy2H/psOk//Lw
|
||||
7//v6eb/3dnW/9zY1v/f29j/4t3b/8/Lyv/s7Ov/+fTx//nz8P/58/D/+fPw//nz8P/58/D/+fPw//nz
|
||||
8P/a1tT/1dTU/6m4p/9nx2b/Ycth/2HLYf9WyFb/qcup/6Skpv8AAAAAAAAAAMTExf+FqYb/Wsta/2jP
|
||||
aP+qx6j/8/Hw//Dr6P/l4N7/5ODd/+bi3//t6OX/2NTS/+jn5v/19PP/9PTz//T08//09PP/9PTz//T0
|
||||
8//09PL/9PTy/9vZ2f+suan/b8tu/2jPaP9oz2j/aM9o/1zMXP+oy6j/oqKj/wAAAAAAAAAAwsLC/4On
|
||||
hP9gz2D/b9Nv/67Krf/z8vD/8u3q//Lt6v/y7ev/8u3q//Lt6v/s5+X/2tbU/9rV1P/Tz87/zcnI/87L
|
||||
yv/DwcH/k8OS/5XJk/+UyJL/kseR/3jReP9v02//b9Nv/2/Tb/9v02//Ys9i/6fKp/+enp//AAAAAAAA
|
||||
AADAwMD/gaWC/2XSZf9213b/ss2x//Tz8f/z7uv/8+7r//Pu6//z7uv/8+7r//Pu6//z7uv/8u3q/8zJ
|
||||
yP/Gw8P/xMLC/7W3s/9403j/dtd2/3bXdv9213b/dtd2/3bXdv9213b/dtd2/3bXdv9o02j/psqm/5ub
|
||||
nP8AAAAAAAAAAL6+vv9+o3//a9Zr/33bff+30bX/9PPy//Pv7P/z7+z/8+/s//Pv7P/z7+z/8+/s//Pv
|
||||
7P/y7uv/zszL/+Xl5f/Iycb/js6N/33bff99233/fdt9/33bff99233/fdt9/33bff99233/fdt9/27X
|
||||
bv+lyqX/l5eY/wAAAAAAAAAAvb29/nyhff9v2W//hN6E/7rUuf/19PP/9PHu//Tx7v/08e7/9PHu//Tx
|
||||
7v/08e7/9PHu//Pw7v/Qzs3/zc3L/5XRlP+E3oT/hN6E/4TehP+E3oT/hN6E/4TehP+E3oT/hN6E/4Te
|
||||
hP+E3oT/ctpy/6PIo/+UlJX+AAAAAAAAAAC+vr/phJiF/2nZaf+K4Yr/u9S6/+bl5f/m5eX/5uXl/+bl
|
||||
5f/l5eX/5eXk/+Xl5P/l5OT/5eTk/8jIx/+d1J3/iuGK/4rhiv+K4Yr/iuGK/4rhiv+K4Yr/iuGK/4rh
|
||||
iv+K4Yr/iuGK/4rhiv9o2Wj/qr6r/5GRkekAAAAAAAAAALOzs6unp6f/VrtX/43jjf+a4Zr/oN+f/6Df
|
||||
n/+g35//n9+f/5/fn/+f35//n9+e/5/fnv+e3p7/m+Ca/5Hkkf+R5JH/keSR/5Hkkf+R5JH/keSR/5Hk
|
||||
kf+R5JH/keSR/5Hkkf+R5JH/i+OL/1W9Vf+ysrL/kpKSqwAAAAAAAAAAlpaXNsbGx/yEkoT/V7tX/2/d
|
||||
b/994H3/feB9/33gff994H3/feB9/33gff994H3/feB9/33gff994H3/feB9/33gff994H3/feB9/33g
|
||||
ff994H3/feB9/33gff994H3/feB9/27dbv9UvFX/mqia/5+foPyFhYU2AAAAAAAAAAAAAAAAnJydacXF
|
||||
xvyjo6P/fZB+/3SadP9zmnT/c5p0/3OadP9zmnT/c5p0/3OadP9zmnT/c5p0/3OadP9zmnT/c5p0/3Oa
|
||||
dP9zmnT/c5p0/3OadP9zmnT/c5p0/3OadP90mnT/gZSC/6Ojo/+tra78jY2OaQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAlZWVNq+vr6q5ubnotbW1/bOztP+zs7T/s7O0/7OztP+zs7T/s7O0/7OztP+zs7T/s7O0/7Oz
|
||||
tP+zs7T/s7O0/7OztP+zs7T/s7O0/7OztP+zs7T/s7O0/7OztP2zs7PorKysqpCQkTYAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAP/////gAAAHwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
|
||||
AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
|
||||
AAGAAAABwAAAA+AAAAf/////KAAAABgAAAAwAAAAAQAgAAAAAABgCQAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGNjYxBsbGw5cHBxP3FxcT9xcXE/cXFxP3FxcT9xcXE/cXFxP3FxcT9xcXE/cXFxP3Fx
|
||||
cT9xcXE/cXFxP3BwcT9ra2w5Y2NjEAAAAAAAAAAAAAAAAAAAAABubm8Fi4uMj5+foPivr7D/rq6u/q6u
|
||||
rv+urq7/rq6u/q6urv+urq7/rq6u/66urv6urq7/rq6u/q6urv+urq7/rq6u/q6urv+xsbH/paWm+H9/
|
||||
gI9ra2wFAAAAAAAAAACdnZ6Qm6Cc/luVW/41izX+Mowy/jKMMv4yjDL+Mowy/jKMMv4yjDL+Mowy/jKM
|
||||
Mv4yjDL+Mowy/jKMMv4yjDL+Mowy/jKMMv41izX+X5lf/rG2sf6CgoOQAAAAAHh4eBCysrP4VpJW/jCR
|
||||
MP8wkTD/L5Ev/jCRMP8wkTD/L5Ev/jGSMf80kzT/NJM0/zSTNP40kzT/NJI0/jSTNP80kjT/NJI0/jSS
|
||||
NP8zkjP/L5Ev/l+bX/+rq6z4dnZ3EImJiTm1tbb/NpA2/jCUMP8wlDD/L5Qv/jCUMP8wlDD/L5Qv/meb
|
||||
Zf/Mzcr/y8zJ/8vMyP7Ky8f/ycrH/snKxv/Iysb/yMnF/sjJxf+XqJX/L5Qv/jaRNv+4uLn/g4OEOZWV
|
||||
lj+1tbb+M5Qz/i+XL/4vly/+L5cv/i+XL/4vly/+L5cv/m6hbP738u/+8+fh/vHj3f7w4Nn+793W/u3b
|
||||
0/7t2dH+7dnQ/u/e1/6vvq7+L5cv/jOUM/65ubn+jY2OP5iYmT+4uLn/NJg0/jCaMP8wmjD/L5ov/jCa
|
||||
MP8wmjD/L5ov/m+jbf/49PH/8efi/+vg2/7q3Nf/6NnT/ubWz//l08z/5dLK/u7d1f+wv67/L5ov/jSY
|
||||
NP+8vL3/kZGTP5ubnD+8vLz/NJs0/jKeMv9bmVn/XJlb/lyYWv9bmFn/W5dZ/oShgf/49fP/6eLe/9zV
|
||||
0f7a0c3/2c7K/tfMx//VycT/1cfB/u/e1/+wwK7/MJ4w/jSbNP+/v8D/lpaXP56enz++vr/+NZ81/jai
|
||||
Nv7Iycb+6ubj/urk4v7p4+D+6OLe/svGxP749fP+6uTg/t/Y1f7l3dr+49vW/tvRzf7Zzsn+2MvG/vDi
|
||||
3P6xwa/+MKEw/jWfNf7CwsP+mpqbP6CgoT/BwcL/NaM1/jemNv/Ky8j/6t/a/ujc1v/n2NL/5dXO/srA
|
||||
u//49fP/8uvn/+3m4v7w6eb/29XS/vLq5f/x5+L/2tDL/vHm4f+xwrD/MKUw/jWjNv/ExMX/nZ2eP6Ki
|
||||
oz/Dw8T/NqY2/jepNv/LzMn/6uLe/tHKxv/Px8P/zcO//r63tP/49fP/5t/c/9XOzP7f2db/3NbT/vfv
|
||||
6//27ur/3dXR/vPr5v+yw7D/MKkw/jamNv/Gxsf/n5+hP6Ojoz/ExMX/Nqo2/jetNv/LzMn/7Obi/uXe
|
||||
2v/k3Nj/49nV/snCwP/49fP/8erm/+rk4P7v6OT/29XS/vHq5v/x6ub/29XR/vXu6/+yxLD/MK0w/jaq
|
||||
Nv/Hx8j/oaGiP6OjpD/ExMX+O687/jyzPP7Mzcr+6uTg/s3Hxf7KxcL+29XR/r65t/749fP+7OXi/uLb
|
||||
2P7o4d7+5+Dd/uDa1/7f2dX+3tjV/vXv7P6zxbL+ObM5/jywPP7Hx8j+oaGiP6Kioz/Dw8T/SLhI/lbA
|
||||
Vv/U1NL/7+nm/uPd2v/i3Nn/4dvY/svGxf/59vT/9/Hu//fx7v748e7/9/Hu/vfx7v/17+z/2tXT/tbS
|
||||
0P+ru6n/UMBQ/km4Sf/Gxsf/oKChP6CgoT/BwcL+TbxN/l7GXv7W19X+7+rm/uHc2v7g29j+497b/s/M
|
||||
yv769/X++PLv/vjy7/748+/++PLv/vjy7/7y7On+yMbH/snHx/6CtID+WcZZ/k29Tv7ExMX+nZ2fP56e
|
||||
nz+/v8D/UcFR/mbMZv/Z2df/7+rn/trW1P/Z1dL/5N/d/s7Lyv/6+Pb/+fXy//n18v759fL/+fXy/vn1
|
||||
8v/08O3/yMfG/pG9j/9izGL/Ysxi/lLBUv/CwsP/mpqcP5ycnT+8vL3/VsVW/nDRb//b3Nr/8u3q/u/r
|
||||
6P/v6uj/8ezp/t7a2P/f3t3/3tzb/9za2v7c2tr/zdbL/svayv/J18f/l8GV/mzRbP9r0Wv/a9Fr/ljG
|
||||
WP+/v8D/l5eYP5mZmj+5ubr+XMlc/nnWef7e393+8+7r/vPu6/7z7uv+8+7r/vPu6/7z7uv+2tbU/srH
|
||||
x/7HxcT+g8mC/nXWdf511nX+ddZ1/nXWdf511nX+ddZ1/l7JXv68vL3+kpKTP5aWlj+1tbb/Yc1h/oLb
|
||||
gv/g4d//8+/s/vPv7P/z7+z/8+/s/vPv7P/z7+z/19TT/97d3f6jyaL/f9t//n7cfv9+3H7/ftx+/n7c
|
||||
fv9+3H7/ftx+/mPOY/+5ubr/jo6PP4uLizm3t7j/Zc1l/ovfi//i4uH/9PLx/vTy8f/08vH/9PLx/vTy
|
||||
8f/08vH/19bV/6zOq/6I34j/h+CH/ofgh/+H4If/h+CH/ofgh/+H4If/h+CH/mbNZv+3t7j/hYWGOXx8
|
||||
fBC4uLj4ZrZn/o/jj/6p2qj+qtqp/qraqf6q2an+qtmp/qrZqf6p2Kj+pdik/pDjkP6Q45D+kOOQ/pDj
|
||||
kP6Q45D+kOOQ/pDjkP6Q45D+jOOM/m2/bf6mpqf4e3t8EAAAAACrq6yQm6Oc/me2Z/9s0Wz/bdVt/m3V
|
||||
bf9t1W3/bdVt/m3Vbf9t1W3/bdVt/23Vbf5t1W3/bdVt/m3Vbf9t1W3/bdVt/m3Vbf9r0Wv/abpp/pyk
|
||||
nf+QkJGQAAAAAAAAAACAgIAFqqqqj7OztPiwsLH/qqqr/qqqq/+qqqv/qqqr/qqqq/+qqqv/qqqr/6qq
|
||||
q/6qqqv/qqqr/qqqq/+qqqv/qqqr/qqqq/+vr6//rq6u+J2dnY99fX4FAAAAAAAAAAAAAAAAAAAAAIKC
|
||||
gxCRkZI5m5ucP5ycnD+cnJw/nJycP5ycnD+cnJw/nJycP5ycnD+cnJw/nJycP5ycnD+cnJw/nJycP5ub
|
||||
nD+SkpI5hISEEAAAAAAAAAAAAAAAAOAABwCAAAEAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAQCAAAEA4AAHACgA
|
||||
AAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0tMDXR0dGR5eXp/eXl6f3l5
|
||||
en95eXp/eXl6f3l5en95eXp/eXl6f3l5en95eXl/cXFyZExMTA0AAAAAU1NUDZyendhynnL/Z6Nn/2ej
|
||||
Z/9no2f/Z6Nn/2ejZ/9no2f/Z6Nn/2ejZ/9no2f/Z6Nn/3mmev+YmpnYU1NTDZWVlWVolmn/MJIw/zCS
|
||||
MP8wkjD/MJIw/0mVSP9Xl1b/V5dW/1aWVf9WlVT/VZVU/1WUU/83kjb/e6l7/4KCg2Wmpqd/VpZW/zCW
|
||||
MP8wljD/MJYw/zCWMP+cvpv/9e7q//Tq5f/y5+L/8eTf//Hj3f/v6OT/R5VG/2mqav+QkJF/rKysf1ib
|
||||
Wf8wmzD/MJsw/zCbMP8wmzD/ncGc/+/m4v/g1tH/3dDL/9vMxv/ZycP/7eHc/0eZRv9qrmv/l5eZf6+v
|
||||
sH9boVz/VqBV/8rMxf/IycL/x8e//8/Oy//x6ub/49zY/+jf2//f1M//3dDK/+7k4P9InUf/bLJs/56e
|
||||
n3+zs7N/XaZd/1ynW//s5eL/5dnU/+PVzv/Z09D/8erm/+Pd2f/j3dn/8+vn/+PZ1f/v6OX/SKJH/222
|
||||
bf+jo6R/tLS1f16rX/9cq1v/7Ojl/9nSz//Wzsr/1dHP//Hq5v/j3dn/493Z//Ps6P/k3dn/8e3q/0mn
|
||||
SP9tum7/pqanf7W1tX9ksWX/Z7Rm/+3p5v/Y0s//2tTR/9TRz//y7Oj/6OLe/+7o5P/o4d7/493a/+3q
|
||||
5/9Ur1P/dMF1/6amqH+zs7R/bLZs/3vBev/w7Or/3tjW/+Db2P/d29r/+PPw//jy7//48u//+PLv/9bS
|
||||
0P+9wLv/YL9g/3zGfP+jo6V/sLCxf2+5b/+GyYX/8e7r/+Hc2v/l4N7/393b//f08v/29PH/9vTx//bz
|
||||
8f/Nz8r/ecZ5/2TNZP+ByoH/np6gf6ysrX9yu3P/kdCR//Pw7v/y7ev/8u3r/+vm5P/a1tX/ycbG/6HD
|
||||
n/+F0IT/ftF9/3LVcv9y1XL/hc6G/5iYmX+oqKh/db11/5zXnP/08vD/9PDt//Tw7f/08O3/4d7c/8TT
|
||||
w/+F2YT/gN2A/4DdgP+A3YD/gN2A/4rQiv+RkZJ/mZmZZXq1e/+b3pv/w+LC/8Piwv/C4sL/wuLB/7na
|
||||
uf+S35L/juOO/47jjv+O447/juOO/4zijP+GwYf/h4eIZVtbXA2rrqvYerN6/3i9eP94vXj/eL14/3i9
|
||||
eP94vXj/eL14/3i9eP94vXj/eL14/3i9eP95tHr/naGe2FxcXA0AAAAAXl5eDZycnWSpqap/qqqqf6qq
|
||||
qn+qqqp/qqqqf6qqqn+qqqp/qqqqf6qqqn+pqal/m5ubZGBgYA0AAAAAgAEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAA==
|
||||
</value>
|
||||
</data>
|
||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 8</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>123, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Duplicati dummy window</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name=">>label1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>143, 29</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Duplicati Control Window</value>
|
||||
</data>
|
||||
<data name=">>TrayIcon.Name" xml:space="preserve">
|
||||
<value>TrayIcon</value>
|
||||
</data>
|
||||
<data name=">>TrayIcon.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>statusToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>statusToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>statusToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>wizardToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>wizardToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>wizardToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator1.Name" xml:space="preserve">
|
||||
<value>toolStripSeparator1</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>optionsToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>optionsToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>optionsToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator2.Name" xml:space="preserve">
|
||||
<value>toolStripSeparator2</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>controlToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>controlToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>controlToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>pauseToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>pauseToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>pauseToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>pausePeriodToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>pausePeriodToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>pausePeriodToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration05Menu.Name" xml:space="preserve">
|
||||
<value>DelayDuration05Menu</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration05Menu.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration15Menu.Name" xml:space="preserve">
|
||||
<value>DelayDuration15Menu</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration15Menu.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration30Menu.Name" xml:space="preserve">
|
||||
<value>DelayDuration30Menu</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration30Menu.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration60Menu.Name" xml:space="preserve">
|
||||
<value>DelayDuration60Menu</value>
|
||||
</data>
|
||||
<data name=">>DelayDuration60Menu.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>stopToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>stopToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>stopToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>throttleOptionsToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>throttleOptionsToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>throttleOptionsToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator3.Name" xml:space="preserve">
|
||||
<value>toolStripSeparator3</value>
|
||||
</data>
|
||||
<data name=">>toolStripSeparator3.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>quitToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>quitToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>quitToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>MainForm</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,114 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
public static class MonoSupport
|
||||
{
|
||||
/// <summary>
|
||||
/// Fixes a bug in Mono MWF support for localized forms and multiline textboxes:
|
||||
/// https://bugzilla.novell.com/show_bug.cgi?id=440191
|
||||
/// </summary>
|
||||
/// <param name="owner">The toplevel control to run the procedure on</param>
|
||||
public static void FixTextBoxes(Control owner)
|
||||
{
|
||||
FixTextBoxes(owner, new System.ComponentModel.ComponentResourceManager(owner.GetType()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fixes a bug in Mono MWF support for localized forms and multiline textboxes:
|
||||
/// https://bugzilla.novell.com/show_bug.cgi?id=440191
|
||||
/// </summary>
|
||||
/// <param name="owner">The toplevel control to run the procedure on</param>
|
||||
public static void FixTextBoxes(Control owner, System.ComponentModel.ComponentResourceManager resources)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Duplicati.Library.Utility.Utility.IsClientLinux)
|
||||
return;
|
||||
|
||||
Dictionary<Control, Control> visited = new Dictionary<Control, Control>();
|
||||
Queue<Control> work = new Queue<Control>();
|
||||
work.Enqueue(owner);
|
||||
|
||||
while (work.Count > 0)
|
||||
{
|
||||
Control c = work.Dequeue();
|
||||
visited[c] = null;
|
||||
|
||||
if (c.HasChildren)
|
||||
foreach (Control cc in c.Controls)
|
||||
if (!visited.ContainsKey(cc))
|
||||
{
|
||||
work.Enqueue(cc);
|
||||
visited[cc] = null;
|
||||
}
|
||||
|
||||
if (c is TextBox && ((TextBox)c).Multiline)
|
||||
resources.ApplyResources(c, c.Name);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (resources != null)
|
||||
resources.ReleaseAllResources();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Custom implementation of the BeginInvoke method, as Mono does the same for Invoke and BeginInvoke
|
||||
/// </summary>
|
||||
/// <param name='method'>The method to invoke</param>
|
||||
/// <param name='args'>The parameters to call the method with</param>
|
||||
public static void BeginInvoke(Control owner, Delegate method, params object[] args)
|
||||
{
|
||||
new System.Threading.Thread(BeginInvokeHelper).Start (new object[] { owner, method, args });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper method to do invocations from a thread
|
||||
/// </summary>
|
||||
/// <param name='arg'>
|
||||
/// An object array where the first entry is the control owner,
|
||||
/// the second is the delegate and the third is the arguments
|
||||
/// </param>
|
||||
private static void BeginInvokeHelper(object arg)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Threading.Thread.Sleep(500);
|
||||
object[] args = (object[])arg;
|
||||
Control owner = (Control)args[0];
|
||||
Delegate delg = (Delegate)args[1];
|
||||
object[] input = (object[])args[2];
|
||||
|
||||
owner.Invoke(delg, input);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,567 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using System.Data.LightDatamodel;
|
||||
using System.Drawing;
|
||||
using Duplicati.Datamodel;
|
||||
using Duplicati.Server;
|
||||
using Duplicati.Library.Utility;
|
||||
|
||||
namespace Duplicati.GUI
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The name of the environment variable that holds the path to the data folder used by Duplicati
|
||||
/// </summary>
|
||||
public const string DATAFOLDER_ENV_NAME = "DUPLICATI_HOME";
|
||||
|
||||
/// <summary>
|
||||
/// The environment variable that holdes the database key used to encrypt the SQLite database
|
||||
/// </summary>
|
||||
public const string DB_KEY_ENV_NAME = "DUPLICATI_DB_KEY";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the folder where Duplicati data is stored
|
||||
/// </summary>
|
||||
public static string DATAFOLDER { get { return Library.Utility.Utility.AppendDirSeparator(Environment.ExpandEnvironmentVariables("%" + DATAFOLDER_ENV_NAME + "%").TrimStart('"').TrimEnd('"')); } }
|
||||
|
||||
/// <summary>
|
||||
/// A flag indicating if database encryption is in use
|
||||
/// </summary>
|
||||
public static bool UseDatabaseEncryption;
|
||||
|
||||
/// <summary>
|
||||
/// This is the only access to the database
|
||||
/// </summary>
|
||||
public static IDataFetcherWithRelations DataConnection;
|
||||
|
||||
/// <summary>
|
||||
/// This is the lock to be used before manipulating the shared resources
|
||||
/// </summary>
|
||||
public static object MainLock = new object();
|
||||
|
||||
/// <summary>
|
||||
/// This is the scheduling thread
|
||||
/// </summary>
|
||||
public static Scheduler Scheduler;
|
||||
|
||||
/// <summary>
|
||||
/// This is the working thread
|
||||
/// </summary>
|
||||
public static WorkerThread<IDuplicityTask> WorkThread;
|
||||
|
||||
/// <summary>
|
||||
/// The path to the file that contains the current database
|
||||
/// </summary>
|
||||
public static string DatabasePath;
|
||||
|
||||
/// <summary>
|
||||
/// The actual runner, do not call directly. Only used for events.
|
||||
/// </summary>
|
||||
public static DuplicatiRunner Runner;
|
||||
|
||||
/// <summary>
|
||||
/// The controller interface for pause/resume and throttle options
|
||||
/// </summary>
|
||||
public static LiveControls LiveControl;
|
||||
|
||||
/// <summary>
|
||||
/// The main form that contains the tray icon
|
||||
/// </summary>
|
||||
public static MainForm DisplayHelper;
|
||||
|
||||
/// <summary>
|
||||
/// The single instance keeper
|
||||
/// </summary>
|
||||
public static SingleInstance SingleInstance;
|
||||
|
||||
/// <summary>
|
||||
/// A value describing if Duplicati is running without a tray
|
||||
/// </summary>
|
||||
public static bool TraylessMode = Library.Utility.Utility.IsClientLinux ? true : false;
|
||||
|
||||
/// <summary>
|
||||
/// A flag indicating if the main message loop is still running,
|
||||
/// used to force exit when running on OSX
|
||||
/// </summary>
|
||||
public static bool IsRunningMainLoop;
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
//If we are on Windows, append the bundled "win-tools" programs to the search path
|
||||
//We add it last, to allow the user to override with other versions
|
||||
if (!Library.Utility.Utility.IsClientLinux)
|
||||
{
|
||||
string wintools = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "win-tools");
|
||||
Environment.SetEnvironmentVariable("PATH",
|
||||
Environment.GetEnvironmentVariable("PATH") +
|
||||
System.IO.Path.PathSeparator.ToString() +
|
||||
wintools +
|
||||
System.IO.Path.PathSeparator.ToString() +
|
||||
System.IO.Path.Combine(wintools, "gpg") //GPG needs to be in a subfolder for wrapping reasons
|
||||
);
|
||||
}
|
||||
|
||||
Library.Utility.UrlUtillity.ErrorHandler = new Duplicati.Library.Utility.UrlUtillity.ErrorHandlerDelegate(DisplayURLOpenError);
|
||||
|
||||
//If we are on windows we encrypt the database by default
|
||||
//We do not encrypt on Linux as most distros use a SQLite library without encryption support,
|
||||
//Linux users can use an encrypted home folder, or install a SQLite library with encryption support
|
||||
if (!Library.Utility.Utility.IsClientLinux && string.IsNullOrEmpty(Environment.GetEnvironmentVariable(DB_KEY_ENV_NAME)))
|
||||
{
|
||||
//Note that the password here is a default password and public knowledge
|
||||
//
|
||||
//The purpose of this is to prevent casual read of the database, as well
|
||||
// as protect from harddisk string scans, not to protect from determined
|
||||
// attacks.
|
||||
//
|
||||
//If you desire better security, start Duplicati once with the commandline option
|
||||
// --unencrypted-database to decrypt the database.
|
||||
//Then set the environment variable DUPLICATI_DB_KEY to the desired key,
|
||||
// and run Duplicati again without the --unencrypted-database option
|
||||
// to re-encrypt it with the new key
|
||||
//
|
||||
//If you change the key, please note that you need to supply the same
|
||||
// key when restoring the setup, as the setup being backed up will
|
||||
// be encrypted as well.
|
||||
Environment.SetEnvironmentVariable(DB_KEY_ENV_NAME, "Duplicati_Key_42");
|
||||
}
|
||||
|
||||
|
||||
//Find commandline options here for handling special startup cases
|
||||
Dictionary<string, string> commandlineOptions = Duplicati.Library.Utility.CommandLineParser.ExtractOptions(new List<string>(args));
|
||||
|
||||
foreach (string s in args)
|
||||
if (
|
||||
s.Equals("help", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
s.Equals("/help", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
s.Equals("usage", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
s.Equals("/usage", StringComparison.InvariantCultureIgnoreCase))
|
||||
commandlineOptions["help"] = "";
|
||||
|
||||
//If the commandline issues --help, just stop here
|
||||
if (commandlineOptions.ContainsKey("help"))
|
||||
{
|
||||
List<string> lines = new List<string>();
|
||||
foreach (Library.Interface.ICommandLineArgument arg in SupportedCommands)
|
||||
lines.Add(string.Format(Strings.Program.HelpDisplayFormat, arg.Name, arg.LongDescription));
|
||||
MessageBox.Show(string.Format(Strings.Program.HelpDisplayDialog, string.Join(Environment.NewLine, lines.ToArray())), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
if (commandlineOptions.ContainsKey("trayless"))
|
||||
Program.TraylessMode = Library.Utility.Utility.ParseBoolOption(commandlineOptions, "trayless");
|
||||
|
||||
#if DEBUG
|
||||
//Log various information in the logfile
|
||||
if (!commandlineOptions.ContainsKey("log-file"))
|
||||
{
|
||||
commandlineOptions["log-file"] = System.IO.Path.Combine(Application.StartupPath, "Duplicati.debug.log");
|
||||
commandlineOptions["log-level"] = Duplicati.Library.Logging.LogMessageType.Profiling.ToString();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (commandlineOptions.ContainsKey("log-level"))
|
||||
foreach (string s in Enum.GetNames(typeof(Duplicati.Library.Logging.LogMessageType)))
|
||||
if (s.Equals(commandlineOptions["log-level"].Trim(), StringComparison.InvariantCultureIgnoreCase))
|
||||
Duplicati.Library.Logging.Log.LogLevel = (Duplicati.Library.Logging.LogMessageType)Enum.Parse(typeof(Duplicati.Library.Logging.LogMessageType), s);
|
||||
|
||||
if (commandlineOptions.ContainsKey("log-file"))
|
||||
{
|
||||
if (System.IO.File.Exists(commandlineOptions["log-file"]))
|
||||
System.IO.File.Delete(commandlineOptions["log-file"]);
|
||||
Duplicati.Library.Logging.Log.CurrentLog = new Duplicati.Library.Logging.StreamLog(commandlineOptions["log-file"]);
|
||||
}
|
||||
|
||||
//Set the %DUPLICATI_HOME% env variable, if it is not already set
|
||||
if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable(DATAFOLDER_ENV_NAME)))
|
||||
{
|
||||
#if DEBUG
|
||||
//debug mode uses a lock file located in the app folder
|
||||
Environment.SetEnvironmentVariable(DATAFOLDER_ENV_NAME, System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));
|
||||
#else
|
||||
bool portableMode = Library.Utility.Utility.ParseBoolOption(commandlineOptions, "portable-mode");
|
||||
|
||||
if (portableMode)
|
||||
{
|
||||
//Portable mode uses a data folder in the application home dir
|
||||
Environment.SetEnvironmentVariable(DATAFOLDER_ENV_NAME, System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "data"));
|
||||
}
|
||||
else
|
||||
{
|
||||
//Normal release mode uses the systems "Application Data" folder
|
||||
Environment.SetEnvironmentVariable(DATAFOLDER_ENV_NAME, System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Application.ProductName));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
//This will also create Program.DATAFOLDER if it does not exist
|
||||
SingleInstance = new SingleInstance(Application.ProductName, Program.DATAFOLDER);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(string.Format(Strings.Program.StartupFailure, ex.ToString()), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!SingleInstance.IsFirstInstance)
|
||||
{
|
||||
//Linux shows this output
|
||||
Console.WriteLine(Strings.Program.AnotherInstanceDetected);
|
||||
return;
|
||||
}
|
||||
|
||||
Version sqliteVersion = new Version((string)SQLiteLoader.SQLiteConnectionType.GetProperty("SQLiteVersion").GetValue(null, null));
|
||||
if (sqliteVersion < new Version(3, 6, 3))
|
||||
{
|
||||
//The official Mono SQLite provider is also broken with less than 3.6.3
|
||||
MessageBox.Show(string.Format(Strings.Program.WrongSQLiteVersion, sqliteVersion, "3.6.3"), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
//Create the connection instance
|
||||
System.Data.IDbConnection con = (System.Data.IDbConnection)Activator.CreateInstance(SQLiteLoader.SQLiteConnectionType);
|
||||
|
||||
try
|
||||
{
|
||||
#if DEBUG
|
||||
//Default is to not use encryption for debugging
|
||||
Program.UseDatabaseEncryption = commandlineOptions.ContainsKey("unencrypted-database") ? !Library.Utility.Utility.ParseBoolOption(commandlineOptions, "unencrypted-database") : false;
|
||||
#else
|
||||
//Default is to use encryption for release
|
||||
Program.UseDatabaseEncryption = !Library.Utility.Utility.ParseBoolOption(commandlineOptions, "unencrypted-database");
|
||||
#endif
|
||||
|
||||
OpenSettingsDatabase(con, Program.DATAFOLDER);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//Unwrap the reflection exceptions
|
||||
if (ex is System.Reflection.TargetInvocationException && ex.InnerException != null)
|
||||
ex = ex.InnerException;
|
||||
|
||||
MessageBox.Show(string.Format(Strings.Program.DatabaseOpenError, ex.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
DataConnection = new DataFetcherWithRelations(new SQLiteDataProvider(con));
|
||||
|
||||
string displayLanguage = new Datamodel.ApplicationSettings(DataConnection).DisplayLanguage;
|
||||
if (!string.IsNullOrEmpty(displayLanguage) && displayLanguage != Library.Utility.Utility.DefaultCulture.Name)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo(displayLanguage);
|
||||
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(displayLanguage);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(string.Format(Strings.Program.LanguageSelectionError, ex.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
//This is non-fatal, just keep running with system default language
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
DataFetcherNested logcon = new DataFetcherNested(DataConnection);
|
||||
Log[] items = logcon.GetObjects<Log>("Subaction LIKE ?", "InProgress");
|
||||
if (items != null && items.Length > 0)
|
||||
{
|
||||
foreach (Log l in items)
|
||||
l.SubAction = "Primary";
|
||||
|
||||
logcon.CommitAllRecursive();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
//Non-fatal but any interrupted backup will not show
|
||||
}
|
||||
|
||||
LiveControl = new LiveControls(new ApplicationSettings(DataConnection));
|
||||
LiveControl.StateChanged += new EventHandler(LiveControl_StateChanged);
|
||||
LiveControl.ThreadPriorityChanged += new EventHandler(LiveControl_ThreadPriorityChanged);
|
||||
LiveControl.ThrottleSpeedChanged += new EventHandler(LiveControl_ThrottleSpeedChanged);
|
||||
|
||||
Runner = new DuplicatiRunner();
|
||||
WorkThread = new WorkerThread<IDuplicityTask>(new WorkerThread<IDuplicityTask>.ProcessItemDelegate(Runner.ExecuteTask), LiveControl.State == LiveControls.LiveControlState.Paused);
|
||||
Scheduler = new Scheduler(DataConnection, WorkThread, MainLock);
|
||||
|
||||
DataConnection.AfterDataConnection += new DataConnectionEventHandler(DataConnection_AfterDataConnection);
|
||||
|
||||
DisplayHelper = new MainForm();
|
||||
DisplayHelper.InitialArguments = args;
|
||||
|
||||
//Replicate variables to both entries
|
||||
Server.Program.DataConnection = Program.DataConnection;
|
||||
Server.Program.DatabasePath = Program.DatabasePath;
|
||||
Server.Program.LiveControl = Program.LiveControl;
|
||||
Server.Program.MainLock = Program.MainLock;
|
||||
Server.Program.Runner = Program.Runner;
|
||||
Server.Program.Scheduler = Program.Scheduler;
|
||||
Server.Program.UseDatabaseEncryption = Program.UseDatabaseEncryption;
|
||||
Server.Program.WorkThread = Program.WorkThread;
|
||||
|
||||
Program.IsRunningMainLoop = true;
|
||||
Application.Run(DisplayHelper);
|
||||
Program.IsRunningMainLoop = false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//If the helper thread aborts the main thread, it also sets IsRunningMainLoop to false
|
||||
// and in that case we accept the abort call
|
||||
if (ex is System.Threading.ThreadAbortException && !Program.IsRunningMainLoop)
|
||||
System.Threading.Thread.ResetAbort();
|
||||
else
|
||||
MessageBox.Show(string.Format(Strings.Program.SeriousError, ex.ToString()), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//Find logs that are no longer displayed, and delete them
|
||||
DataFetcherNested con = new DataFetcherNested(DataConnection);
|
||||
foreach (Log x in con.GetObjects<Log>("EndTime < ?", Library.Utility.Timeparser.ParseTimeInterval(new ApplicationSettings(con).RecentBackupDuration, DateTime.Now, true)))
|
||||
{
|
||||
if (x.Blob != null) //Load the blob part if required
|
||||
con.DeleteObject(x.Blob);
|
||||
con.DeleteObject(x);
|
||||
}
|
||||
|
||||
con.CommitAllRecursive();
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
|
||||
try
|
||||
{
|
||||
//Compact the database
|
||||
using (System.Data.IDbCommand vaccum_cmd = DataConnection.Provider.Connection.CreateCommand())
|
||||
{
|
||||
vaccum_cmd.CommandText = "VACUUM;";
|
||||
vaccum_cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
|
||||
|
||||
if (Scheduler != null)
|
||||
Scheduler.Terminate(true);
|
||||
if (WorkThread != null)
|
||||
WorkThread.Terminate(true);
|
||||
if (SingleInstance != null)
|
||||
SingleInstance.Dispose();
|
||||
|
||||
#if DEBUG
|
||||
using(Duplicati.Library.Logging.Log.CurrentLog as Duplicati.Library.Logging.StreamLog)
|
||||
Duplicati.Library.Logging.Log.CurrentLog = null;
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens the application settings database, creating a new db if missing
|
||||
/// </summary>
|
||||
/// <param name="con">the db connection</param>
|
||||
/// <param name="datafolder">the database folder path</param>
|
||||
/// <param name="dbfile">the database file name within the data folder; defaults to "Duplicati.sqlite"</param>
|
||||
internal static void OpenSettingsDatabase(System.Data.IDbConnection con, string datafolder, string dbfile = "Duplicati.sqlite") {
|
||||
DatabasePath = System.IO.Path.Combine(datafolder, dbfile);
|
||||
if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(DatabasePath)))
|
||||
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(DatabasePath));
|
||||
|
||||
con.ConnectionString = "Data Source=" + DatabasePath;
|
||||
|
||||
//Attempt to open the database, handling any encryption present
|
||||
OpenDatabase(con);
|
||||
|
||||
DatabaseUpgrader.UpgradeDatabase(con, DatabasePath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles a change in the LiveControl and updates the Runner
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private static void LiveControl_ThreadPriorityChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (LiveControl.ThreadPriority == null)
|
||||
Runner.UnsetThreadPriority();
|
||||
else
|
||||
Runner.SetThreadPriority(LiveControl.ThreadPriority.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles a change in the LiveControl and updates the Runner
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private static void LiveControl_ThrottleSpeedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (LiveControl.DownloadLimit == null)
|
||||
Runner.SetDownloadLimit(null);
|
||||
else
|
||||
Runner.SetDownloadLimit(LiveControl.DownloadLimit.Value.ToString() + "b");
|
||||
|
||||
if (LiveControl.UploadLimit == null)
|
||||
Runner.SetUploadLimit(null);
|
||||
else
|
||||
Runner.SetUploadLimit(LiveControl.UploadLimit.Value.ToString() + "b");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This event handler updates the trayicon menu with the current state of the runner.
|
||||
/// </summary>
|
||||
static void LiveControl_StateChanged(object sender, EventArgs e)
|
||||
{
|
||||
switch (LiveControl.State)
|
||||
{
|
||||
case LiveControls.LiveControlState.Paused:
|
||||
WorkThread.Pause();
|
||||
Runner.Pause();
|
||||
break;
|
||||
case LiveControls.LiveControlState.Running:
|
||||
WorkThread.Resume();
|
||||
Runner.Resume();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void DataConnection_AfterDataConnection(object sender, DataActions action)
|
||||
{
|
||||
if (action == DataActions.Insert || action == DataActions.Update)
|
||||
Scheduler.Reschedule();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a localized name for a task type
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public static string LocalizeTaskType(DuplicityTaskType type)
|
||||
{
|
||||
return Duplicati.Server.Program.LocalizeTaskType(type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper method with logic to handle opening a database in possibly encrypted format
|
||||
/// </summary>
|
||||
/// <param name="con">The SQLite connection object</param>
|
||||
internal static void OpenDatabase(System.Data.IDbConnection con)
|
||||
{
|
||||
bool noEncryption = !Program.UseDatabaseEncryption;
|
||||
string password = Environment.GetEnvironmentVariable(DB_KEY_ENV_NAME);
|
||||
|
||||
System.Reflection.MethodInfo setPwdMethod = con.GetType().GetMethod("SetPassword", new Type[] { typeof(string) });
|
||||
string attemptedPassword;
|
||||
|
||||
if (noEncryption || string.IsNullOrEmpty(password))
|
||||
attemptedPassword = null; //No encryption specified, attempt to open without
|
||||
else
|
||||
attemptedPassword = password; //Encryption specified, attempt to open with
|
||||
|
||||
setPwdMethod.Invoke(con, new object[] { attemptedPassword });
|
||||
|
||||
try
|
||||
{
|
||||
//Attempt to open in preferred state
|
||||
con.Open();
|
||||
}
|
||||
catch
|
||||
{
|
||||
try
|
||||
{
|
||||
//We can't try anything else without a password
|
||||
if (string.IsNullOrEmpty(password))
|
||||
throw;
|
||||
|
||||
//Open failed, now try the reverse
|
||||
if (attemptedPassword == null)
|
||||
attemptedPassword = password;
|
||||
else
|
||||
attemptedPassword = null;
|
||||
|
||||
setPwdMethod.Invoke(con, new object[] { attemptedPassword });
|
||||
con.Open();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
//If the db is not open now, it won't open
|
||||
if (con.State != System.Data.ConnectionState.Open)
|
||||
throw; //Report original error
|
||||
|
||||
//The open method succeeded with the non-default method, now change the password
|
||||
System.Reflection.MethodInfo changePwdMethod = con.GetType().GetMethod("ChangePassword", new Type[] { typeof(string) });
|
||||
changePwdMethod.Invoke(con, new object[] { noEncryption ? null : password });
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Callback method for dealing with url open errors
|
||||
/// </summary>
|
||||
/// <param name="message">The error message to display</param>
|
||||
private static void DisplayURLOpenError(string message)
|
||||
{
|
||||
System.Windows.Forms.MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of all supported commandline options
|
||||
/// </summary>
|
||||
private static Library.Interface.ICommandLineArgument[] SupportedCommands
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Duplicati.Library.Interface.ICommandLineArgument[] {
|
||||
new Duplicati.Library.Interface.CommandLineArgument("help", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.HelpCommandDescription, Strings.Program.HelpCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("run-backup", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.RunbackupCommandDescription, Strings.Program.RunbackupCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("run-backup-group", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.RunbackupGroupCommandDescription, Strings.Program.RunbackupGroupCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("full", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.FullCommandDescription, Strings.Program.FullCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("resume", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.ResumeCommandDescription, Strings.Program.ResumeCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("pause", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.PauseCommandDescription, Strings.Program.PauseCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("show-status", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.ShowstausCommandDescription, Strings.Program.ShowstausCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("show-wizard", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.ShowwizardCommandDescription, Strings.Program.ShowwizardCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("unencrypted-database", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.UnencrypteddatabaseCommandDescription, Strings.Program.UnencrypteddatabaseCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("portable-mode", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.PortablemodeCommandDescription, Strings.Program.PortablemodeCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("log-file", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Path, Strings.Program.LogfileCommandDescription, Strings.Program.LogfileCommandDescription),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("log-level", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Enumeration, Strings.Program.LoglevelCommandDescription, Strings.Program.LoglevelCommandDescription, "Warning", null, Enum.GetNames(typeof(Duplicati.Library.Logging.LogMessageType))),
|
||||
new Duplicati.Library.Interface.CommandLineArgument("trayless", Duplicati.Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.TraylessCommandDescription, Strings.Program.TraylessCommandDescription, Library.Utility.Utility.IsClientLinux ? "true" : "false" )
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Duplicati")]
|
||||
[assembly: AssemblyDescription("A GUI interface to Duplicati")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("HexaD")]
|
||||
[assembly: AssemblyProduct("Duplicati")]
|
||||
[assembly: AssemblyCopyright("LGPL, Copyright © HexaD 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("5fa23404-f104-47a3-8e2e-dc9fa89123da")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.1.276")]
|
||||
[assembly: AssemblyFileVersion("1.0.1.276")]
|
||||
|
||||
//
|
||||
// Make this assembly amenable to testing
|
||||
//
|
||||
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("Duplicati_Test,PublicKey=0024000004800000940000000602000000240000525341310004000001000100d1ce9cf2ab57d00de3083722ec78ca7b169236c1150350789f131a480c65ad27d3e59ec9c2cca53f84b4f0f6a7f4f59e6d08e8556ccaa54d24894d41813bdf61db969bfaa32c445995afc03e23a137c6328f7dabadeb17b8e5cc351f399334f3f6f2cb1b19f02af0e752116f4bdf808ad51f3340a1a0701a5455cb84a3a5eb9e")]
|
||||
@@ -1,406 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.1
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// 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", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[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.GUI.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap AddedFile {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("AddedFile", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap AddedFolder {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("AddedFolder", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap AddedOrModifiedFile {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("AddedOrModifiedFile", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Clock05 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Clock05", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Clock15 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Clock15", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Clock30 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Clock30", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Clock60 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Clock60", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap CloseMenuIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("CloseMenuIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap ControlFile {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ControlFile", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Delay {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Delay", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap DeletedFile {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("DeletedFile", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap DeletedFolder {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("DeletedFolder", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap donate_button {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("donate_button", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Duplicati {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Duplicati", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap EmptyBackupStatusIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("EmptyBackupStatusIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap ErrorStatusIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ErrorStatusIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap ExamineMenuIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ExamineMenuIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap FolderOpen {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("FolderOpen", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap FullBackup {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("FullBackup", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap help {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("help", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap IncompleteFile {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("IncompleteFile", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap InterruptedStatusIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("InterruptedStatusIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap LogMenuIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("LogMenuIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon LogViewer {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("LogViewer", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap ModifiedFile {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ModifiedFile", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap OKStatusIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("OKStatusIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap PartialBackup {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("PartialBackup", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap PartialStatusIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("PartialStatusIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Pause {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Pause", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Play {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Play", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap SettingsMenuIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("SettingsMenuIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap SmallLogo {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("SmallLogo", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Status_OK {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Status_OK", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Status_pause {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Status_pause", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Status_Working {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Status_Working", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap StatusMenuIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("StatusMenuIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Stop {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Stop", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Throttle {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Throttle", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon ThrottleIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ThrottleIcon", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Trash {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Trash", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon TrayNormal {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TrayNormal", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon TrayNormalError {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TrayNormalError", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon TrayNormalPause {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TrayNormalPause", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon TrayNormalWarning {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TrayNormalWarning", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon TrayWorking {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TrayWorking", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Icon TrayWorkingPause {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("TrayWorkingPause", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap WarningStatusIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("WarningStatusIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Wizard {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Wizard", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap WizardMenuIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("WizardMenuIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,269 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="AddedFolder" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AddedFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="AddedOrModifiedFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AddedOrModifiedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="CloseMenuIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\CloseMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ControlFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ControlFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="DeletedFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\DeletedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="DeletedFolder" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\DeletedFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Duplicati" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Duplicati.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ErrorStatusIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ErrorStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ExamineMenuIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ExamineMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="FolderOpen" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\FolderOpen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="FullBackup" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\FullBackup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="LogMenuIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\LogMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="LogViewer" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\LogViewer.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="OKStatusIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\OKStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="PartialBackup" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\PartialBackup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="PartialStatusIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\PartialStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="SettingsMenuIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SettingsMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="SmallLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SmallLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Status_OK" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Status OK.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Status_Working" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Status Working.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="StatusMenuIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\StatusMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TrayNormal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TrayNormal.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TrayWorking" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TrayWorking.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="WarningStatusIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\WarningStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="WizardMenuIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\WizardMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Delay" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Delay.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Pause" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Play" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Status_pause" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Status pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Stop" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TrayNormalPause" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TrayNormalPause.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TrayWorkingPause" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TrayWorkingPause.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Clock05" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Clock05.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Clock15" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Clock15.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Clock30" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Clock30.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Clock60" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Clock60.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Throttle" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Throttle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ThrottleIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Throttle.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="AddedFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AddedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="IncompleteFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\IncompleteFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ModifiedFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ModifiedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Trash" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Trash.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="donate_button" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\donate_button.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Wizard" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Wizard.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TrayNormalError" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TrayNormalError.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TrayNormalWarning" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TrayNormalWarning.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="InterruptedStatusIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\InterruptedStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="EmptyBackupStatusIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\EmptyBackupStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,26 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.1
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Duplicati.GUI.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
|
Before Width: | Height: | Size: 612 B |
|
Before Width: | Height: | Size: 714 B |
|
Before Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 678 B |
|
Before Width: | Height: | Size: 729 B |
|
Before Width: | Height: | Size: 794 B |
|
Before Width: | Height: | Size: 825 B |
|
Before Width: | Height: | Size: 661 B |
|
Before Width: | Height: | Size: 704 B |
|
Before Width: | Height: | Size: 573 B |
|
Before Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 705 B |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 876 B |