From 3dc9ced4e825d4ceb0e2e904e0fe62708e15fb60 Mon Sep 17 00:00:00 2001 From: "kenneth.skovhede@gmail.com" Date: Sun, 1 Feb 2009 23:20:07 +0000 Subject: [PATCH] Filters are now supported. Most of the wizard functionality is restored. git-svn-id: https://duplicati.googlecode.com/svn/trunk@75 59da171f-624f-0410-aa54-27559c288bec --- Duplicati.sln | 39 +++ .../GUI/Database schema/2.Filter support.sql | 7 + Duplicati/GUI/Database schema/Schema.sql | 10 +- Duplicati/GUI/DatabaseUpgrader.cs | 7 +- Duplicati/GUI/Datamodel/Datamodel.csproj | 9 +- Duplicati/GUI/Datamodel/Duplicati.sqlite | Bin 11264 -> 12288 bytes .../GUI/Datamodel/LightDataModel.Mapping.xml | 75 +++++ Duplicati/GUI/Datamodel/LightDatamodel.dll | Bin 114688 -> 118784 bytes Duplicati/GUI/Datamodel/Task.Extension.cs | 37 ++- Duplicati/GUI/Datamodel/Task.cs | 11 +- Duplicati/GUI/Datamodel/TaskFilter.cs | 81 ++++++ Duplicati/GUI/Duplicati.csproj | 29 +- .../GUI/HelperControls/BackupTreeView.cs | 11 + .../GUI/HelperControls/DurationEditor.cs | 17 +- Duplicati/GUI/Program.cs | 6 +- .../Add backup/AdvancedOptions.Designer.cs | 13 + .../Add backup/AdvancedOptions.cs | 3 + .../Add backup/FilterDialog.Designer.cs | 144 +++++++++ .../Wizard pages/Add backup/FilterDialog.cs | 68 +++++ .../Wizard pages/Add backup/FilterDialog.resx | 120 ++++++++ .../Add backup/FilterEditor.Designer.cs | 232 +++++++++++++++ .../Wizard pages/Add backup/FilterEditor.cs | 153 ++++++++++ .../Wizard pages/Add backup/FilterEditor.resx | 253 ++++++++++++++++ .../Add backup/IncrementalSettings.cs | 9 + .../Add backup/SelectFiles.Designer.cs | 45 +-- .../Wizard pages/Add backup/SelectFiles.cs | 273 +++++++++++++++--- .../Wizard pages/Add backup/SelectFiles.resx | 3 + .../GUI/Wizard pages/Add backup/SelectName.cs | 3 + .../GUI/Wizard pages/Add backup/SelectWhen.cs | 2 + .../Add backup/ThrottleOptions.cs | 7 +- Duplicati/GUI/Wizard pages/MainPage.cs | 31 -- Duplicati/GUI/Wizard pages/SelectBackend.cs | 24 ++ Duplicati/GUI/Wizard pages/SelectBackup.cs | 50 ++-- Duplicati/GUI/WizardHandler.cs | 5 +- Duplicati/GUI/WorkerThread.cs | 12 + Duplicati/Library/Core/FilenameFilter.cs | 2 +- WizardForm/Dialog.Designer.cs | 1 + WizardForm/Dialog.cs | 70 +++-- WizardForm/IWizardControl.cs | 4 +- WizardForm/IWizardForm.cs | 12 + WizardForm/StartPage.cs | 4 +- WizardForm/WizardControl.Designer.cs | 0 WizardForm/WizardControl.cs | 188 ++++++++++-- WizardForm/WizardControl.resx | 120 ++++++++ WizardForm/WizardForm.csproj | 11 +- thirdparty/LightDataModel/LightDatamodel.dll | Bin 114688 -> 118784 bytes 46 files changed, 1990 insertions(+), 211 deletions(-) create mode 100644 Duplicati/GUI/Database schema/2.Filter support.sql create mode 100644 Duplicati/GUI/Datamodel/TaskFilter.cs create mode 100644 Duplicati/GUI/Wizard pages/Add backup/FilterDialog.Designer.cs create mode 100644 Duplicati/GUI/Wizard pages/Add backup/FilterDialog.cs create mode 100644 Duplicati/GUI/Wizard pages/Add backup/FilterDialog.resx create mode 100644 Duplicati/GUI/Wizard pages/Add backup/FilterEditor.Designer.cs create mode 100644 Duplicati/GUI/Wizard pages/Add backup/FilterEditor.cs create mode 100644 Duplicati/GUI/Wizard pages/Add backup/FilterEditor.resx create mode 100644 WizardForm/WizardControl.Designer.cs create mode 100644 WizardForm/WizardControl.resx diff --git a/Duplicati.sln b/Duplicati.sln index 8d9fb766e..13f14c3cb 100644 --- a/Duplicati.sln +++ b/Duplicati.sln @@ -31,6 +31,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Logging", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Backend.S3", "Duplicati\Library\Backend\S3\Duplicati.Library.Backend.S3.csproj", "{C03F6DFD-805A-4BE0-9338-64870ADDB4A2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LightDatamodel", "..\LightDatamodel\LightDatamodel\LightDatamodel.csproj", "{CAE8433B-F013-474E-B7FC-4DE0D5933AD1}" +EndProject Global GlobalSection(SubversionScc) = preSolution Svn-Managed = True @@ -39,68 +41,105 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU + Test|Any CPU = Test|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Debug|Any CPU.Build.0 = Debug|Any CPU {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Release|Any CPU.ActiveCfg = Release|Any CPU {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Release|Any CPU.Build.0 = Release|Any CPU + {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Test|Any CPU.ActiveCfg = Release|Any CPU + {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Test|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 + {F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Test|Any CPU.ActiveCfg = Release|Any CPU + {F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Test|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 + {1470F75F-D364-4010-91D0-FD4DDA1C5159}.Test|Any CPU.ActiveCfg = Release|Any CPU + {1470F75F-D364-4010-91D0-FD4DDA1C5159}.Test|Any CPU.Build.0 = Release|Any CPU {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|Any CPU.Build.0 = Debug|Any CPU {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|Any CPU.ActiveCfg = Release|Any CPU {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|Any CPU.Build.0 = Release|Any CPU + {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Test|Any CPU.ActiveCfg = Release|Any CPU + {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Test|Any CPU.Build.0 = Release|Any CPU {10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {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 + {10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Test|Any CPU.ActiveCfg = Release|Any CPU + {10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Test|Any CPU.Build.0 = Release|Any CPU {994F3D0A-E91E-4EEE-80EE-064485E09909}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {994F3D0A-E91E-4EEE-80EE-064485E09909}.Debug|Any CPU.Build.0 = Debug|Any CPU {994F3D0A-E91E-4EEE-80EE-064485E09909}.Release|Any CPU.ActiveCfg = Release|Any CPU {994F3D0A-E91E-4EEE-80EE-064485E09909}.Release|Any CPU.Build.0 = Release|Any CPU + {994F3D0A-E91E-4EEE-80EE-064485E09909}.Test|Any CPU.ActiveCfg = Release|Any CPU + {994F3D0A-E91E-4EEE-80EE-064485E09909}.Test|Any CPU.Build.0 = Release|Any CPU {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Debug|Any CPU.Build.0 = Debug|Any CPU {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Any CPU.ActiveCfg = Release|Any CPU {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Any CPU.Build.0 = Release|Any CPU + {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Test|Any CPU.ActiveCfg = Release|Any CPU + {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Test|Any CPU.Build.0 = Release|Any CPU {FC9B7611-836F-4127-8B44-A7C31F506807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FC9B7611-836F-4127-8B44-A7C31F506807}.Debug|Any CPU.Build.0 = Debug|Any CPU {FC9B7611-836F-4127-8B44-A7C31F506807}.Release|Any CPU.ActiveCfg = Release|Any CPU {FC9B7611-836F-4127-8B44-A7C31F506807}.Release|Any CPU.Build.0 = Release|Any CPU + {FC9B7611-836F-4127-8B44-A7C31F506807}.Test|Any CPU.ActiveCfg = Release|Any CPU + {FC9B7611-836F-4127-8B44-A7C31F506807}.Test|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 {F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Release|Any CPU.Build.0 = Release|Any CPU + {F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Test|Any CPU.ActiveCfg = Release|Any CPU + {F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Test|Any CPU.Build.0 = Release|Any CPU {6BA21DCB-1701-4936-B177-3B6D4DE3474E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6BA21DCB-1701-4936-B177-3B6D4DE3474E}.Debug|Any CPU.Build.0 = Debug|Any CPU {6BA21DCB-1701-4936-B177-3B6D4DE3474E}.Release|Any CPU.ActiveCfg = Release|Any CPU {6BA21DCB-1701-4936-B177-3B6D4DE3474E}.Release|Any CPU.Build.0 = Release|Any CPU + {6BA21DCB-1701-4936-B177-3B6D4DE3474E}.Test|Any CPU.ActiveCfg = Release|Any CPU + {6BA21DCB-1701-4936-B177-3B6D4DE3474E}.Test|Any CPU.Build.0 = Release|Any CPU {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Debug|Any CPU.Build.0 = Debug|Any CPU {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Release|Any CPU.ActiveCfg = Release|Any CPU {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Release|Any CPU.Build.0 = Release|Any CPU + {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Test|Any CPU.ActiveCfg = Release|Any CPU + {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Test|Any CPU.Build.0 = Release|Any CPU {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Debug|Any CPU.Build.0 = Debug|Any CPU {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Release|Any CPU.ActiveCfg = Release|Any CPU {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Release|Any CPU.Build.0 = Release|Any CPU + {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Test|Any CPU.ActiveCfg = Release|Any CPU + {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Test|Any CPU.Build.0 = Release|Any CPU {47FE73E1-0832-44F7-96B9-2580273206C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {47FE73E1-0832-44F7-96B9-2580273206C3}.Debug|Any CPU.Build.0 = Debug|Any CPU {47FE73E1-0832-44F7-96B9-2580273206C3}.Release|Any CPU.ActiveCfg = Release|Any CPU {47FE73E1-0832-44F7-96B9-2580273206C3}.Release|Any CPU.Build.0 = Release|Any CPU + {47FE73E1-0832-44F7-96B9-2580273206C3}.Test|Any CPU.ActiveCfg = Release|Any CPU + {47FE73E1-0832-44F7-96B9-2580273206C3}.Test|Any CPU.Build.0 = Release|Any CPU {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Debug|Any CPU.Build.0 = Debug|Any CPU {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Release|Any CPU.ActiveCfg = Release|Any CPU {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Release|Any CPU.Build.0 = Release|Any CPU + {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Test|Any CPU.ActiveCfg = Release|Any CPU + {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Test|Any CPU.Build.0 = Release|Any CPU {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Debug|Any CPU.Build.0 = Debug|Any CPU {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Release|Any CPU.ActiveCfg = Release|Any CPU {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Release|Any CPU.Build.0 = Release|Any CPU + {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Test|Any CPU.ActiveCfg = Release|Any CPU + {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Test|Any CPU.Build.0 = Release|Any CPU + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1}.Release|Any CPU.Build.0 = Release|Any CPU + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1}.Test|Any CPU.ActiveCfg = Test|Any CPU + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1}.Test|Any CPU.Build.0 = Test|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Duplicati/GUI/Database schema/2.Filter support.sql b/Duplicati/GUI/Database schema/2.Filter support.sql new file mode 100644 index 000000000..c5afc5faf --- /dev/null +++ b/Duplicati/GUI/Database schema/2.Filter support.sql @@ -0,0 +1,7 @@ +CREATE TABLE "TaskFilter" ( + "ID" INTEGER PRIMARY KEY, + "SortOrder" INTEGER NULL, + "Include" BOOLEAN NULL, + "Filter" TEXT NULL, + "TaskID" INTEGER NULL +); diff --git a/Duplicati/GUI/Database schema/Schema.sql b/Duplicati/GUI/Database schema/Schema.sql index 0d3c7d06b..a4f63567d 100644 --- a/Duplicati/GUI/Database schema/Schema.sql +++ b/Duplicati/GUI/Database schema/Schema.sql @@ -66,5 +66,13 @@ CREATE TABLE "ApplicationSetting" ( "Value" TEXT NULL ); +CREATE TABLE "TaskFilter" ( + "ID" INTEGER PRIMARY KEY, + "SortOrder" INTEGER NULL, + "Include" BOOLEAN NULL, + "Filter" TEXT NULL, + "TaskID" INTEGER NULL +); -INSERT INTO "Version" ("Version") VALUES (1); \ No newline at end of file + +INSERT INTO "Version" ("Version") VALUES (2); \ No newline at end of file diff --git a/Duplicati/GUI/DatabaseUpgrader.cs b/Duplicati/GUI/DatabaseUpgrader.cs index 6642c0b56..4d4535015 100644 --- a/Duplicati/GUI/DatabaseUpgrader.cs +++ b/Duplicati/GUI/DatabaseUpgrader.cs @@ -133,13 +133,14 @@ namespace Duplicati.GUI if (upgrades.Count > 0) { - string backupfile = System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), System.Windows.Forms.Application.ProductName); + string backupfile = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(sourcefile), "backup " + DateTime.Now.ToString("yyyyMMddhhmmss") + ".sqlite"); try { - //Keep a backup - backupfile = System.IO.Path.Combine(backupfile, "backup " + DateTime.Now.ToString("yyyyMMddhhmmss") + ".sqlite"); + if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(backupfile))) + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(backupfile)); + //Keep a backup System.IO.File.Copy(sourcefile, backupfile, false); int newversion = -1; diff --git a/Duplicati/GUI/Datamodel/Datamodel.csproj b/Duplicati/GUI/Datamodel/Datamodel.csproj index 42a49a68d..ef3656f1d 100644 --- a/Duplicati/GUI/Datamodel/Datamodel.csproj +++ b/Duplicati/GUI/Datamodel/Datamodel.csproj @@ -70,10 +70,6 @@ prompt - - False - .\LightDatamodel.dll - System @@ -100,6 +96,7 @@ + @@ -109,6 +106,10 @@ + + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1} + LightDatamodel + {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65} Duplicati.Library.Core diff --git a/Duplicati/GUI/Datamodel/Duplicati.sqlite b/Duplicati/GUI/Datamodel/Duplicati.sqlite index 1059b9deffde914187eca23d175d112372ce3d27..4454ec0edf0e32d679d961aecaf3b6466cb8b994 100644 GIT binary patch delta 279 zcmZpOXh@hKEy&M+3ivkaTxMou*~G#kBFn;{$iSe;$jUT>*$q_{0|Uck8R;jRZ%a5a zP3D!`Da6abz`)8-$-q#_xS2_TsgK!oVq^N|V{%rEljqCkPBxUyo7^R{+`iF+lU-a< zk+CVdBrz!`H6*b(+buJvB((^^;&BdgbqsM;2yt}saaB-4NGK_2Ox`FZ7sREYprD`> zoL^MpUzCzsq@>{K7vk#f8l>PC>f@sWk@d_=&M8evRZ?*B_xEvi^h1_|Sg52B;u;YG S5ubcPN^0{zc_yAk94r9XMMeYw delta 91 zcmZojXo#2~&B!C@~+$XnuvVvURfalse + + TaskFilter + TaskFilter + ID + + + System.Int64 + ID + ID + true + true + false + false + false + true + + + System.Int64 + SortOrder + SortOrder + false + false + false + false + false + false + + + System.Boolean + Include + Include + false + false + false + false + false + false + + + System.String + Filter + Filter + false + false + false + false + false + false + + + System.Int64 + TaskID + TaskID + false + false + false + false + false + false + + + false + + + TaskFilterTask + TaskID + Task + OneToMany + Task + ID + Filters + TaskFilter + + +
\ No newline at end of file diff --git a/Duplicati/GUI/Datamodel/LightDatamodel.dll b/Duplicati/GUI/Datamodel/LightDatamodel.dll index 08fec021d46895ee8d565bfe9f51a07e250fefe3..41807e2e507f67c2addcb2bfa6313234efa4a5f5 100644 GIT binary patch literal 118784 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 literal 114688 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 I0cZ#S02OYO-v9sr diff --git a/Duplicati/GUI/Datamodel/Task.Extension.cs b/Duplicati/GUI/Datamodel/Task.Extension.cs index 8830af196..e6a57805e 100644 --- a/Duplicati/GUI/Datamodel/Task.Extension.cs +++ b/Duplicati/GUI/Datamodel/Task.Extension.cs @@ -69,6 +69,17 @@ namespace Duplicati.Datamodel public void GetOptions(Dictionary options) { this.Backend.GetOptions(options); + + List> filters = new List>(); + foreach (TaskFilter f in this.SortedFilters) + filters.Add(new KeyValuePair(f.Include, f.Filter)); + if (filters.Count > 0) + { + string o = Library.Core.FilenameFilter.EncodeAsFilter(filters); + if (!o.StartsWith("--filter=")) throw new Exception("What happend here?"); + o = o.Substring("--filter=".Length); + options["filter"] = o; + } } public bool ExistsInDb @@ -76,5 +87,29 @@ namespace Duplicati.Datamodel get { return this.ID > 0; } } - } + + public TaskFilter[] SortedFilters + { + get + { + return System.Data.LightDatamodel.Query.Parse("ORDER BY SortOrder").EvaluateList(this.Filters).ToArray(); + } + set + { + foreach (TaskFilter t in this.SortedFilters) + if (Array.IndexOf(value, t) >= 0) + this.Filters.Remove(t); + else + t.DataParent.DeleteObject(t); + + int index = 0; + foreach (TaskFilter t in value) + { + t.SortOrder = index++; + this.Filters.Add(t); + } + } + } + + } } diff --git a/Duplicati/GUI/Datamodel/Task.cs b/Duplicati/GUI/Datamodel/Task.cs index 268d0a77a..1cebdd533 100644 --- a/Duplicati/GUI/Datamodel/Task.cs +++ b/Duplicati/GUI/Datamodel/Task.cs @@ -19,7 +19,7 @@ namespace Duplicati.Datamodel #region " private members " - [AutoIncrement, PrimaryKey, Relation("TaskSettingTask", typeof(TaskSetting), "TaskID", false), Relation("LogTask", typeof(Log), "TaskID", false), DatabaseField("ID")] + [AutoIncrement, PrimaryKey, Relation("TaskSettingTask", typeof(TaskSetting), "TaskID", false), Relation("LogTask", typeof(Log), "TaskID", false), Relation("TaskFilterTask", typeof(TaskFilter), "TaskID", false), DatabaseField("ID")] private System.Int64 m_ID = long.MinValue; [DatabaseField("Service")] private System.String m_Service = ""; @@ -100,6 +100,15 @@ namespace Duplicati.Datamodel } } + [Affects(typeof(TaskFilter))] + public System.Collections.Generic.IList Filters + { + get + { + return ((DataFetcherWithRelations)m_dataparent).GetRelatedObjects("TaskFilterTask", this); + } + } + #endregion } diff --git a/Duplicati/GUI/Datamodel/TaskFilter.cs b/Duplicati/GUI/Datamodel/TaskFilter.cs new file mode 100644 index 000000000..dd9fb5d2a --- /dev/null +++ b/Duplicati/GUI/Datamodel/TaskFilter.cs @@ -0,0 +1,81 @@ +/// +/// This class was created by DataClassFileBuilder (LightDatamodel) +/// +/// Table +/// Duplicati.Datamodel +/// TaskFilter +/// +/// + +using System.Data.LightDatamodel; +using System.Data.LightDatamodel.DataClassAttributes; + +namespace Duplicati.Datamodel +{ + + [DatabaseTable("TaskFilter")] + public partial class TaskFilter : DataClassBase + { + +#region " private members " + + [AutoIncrement, PrimaryKey, DatabaseField("ID")] + private System.Int64 m_ID = long.MinValue; + [DatabaseField("SortOrder")] + private System.Int64 m_SortOrder = long.MinValue; + [DatabaseField("Include")] + private System.Boolean m_Include = false; + [DatabaseField("Filter")] + private System.String m_Filter = ""; + [Relation("TaskFilterTask", typeof(Task), "ID"), DatabaseField("TaskID")] + private System.Int64 m_TaskID = long.MinValue; +#endregion + +#region " properties " + + public System.Int64 ID + { + get{return m_ID;} + set{object oldvalue = m_ID;OnBeforeDataChange(this, "ID", oldvalue, value);m_ID = value;OnAfterDataChange(this, "ID", oldvalue, value);} + } + + public System.Int64 SortOrder + { + get{return m_SortOrder;} + set{object oldvalue = m_SortOrder;OnBeforeDataChange(this, "SortOrder", oldvalue, value);m_SortOrder = value;OnAfterDataChange(this, "SortOrder", oldvalue, value);} + } + + public System.Boolean Include + { + get{return m_Include;} + set{object oldvalue = m_Include;OnBeforeDataChange(this, "Include", oldvalue, value);m_Include = value;OnAfterDataChange(this, "Include", oldvalue, value);} + } + + public System.String Filter + { + get{return m_Filter;} + set{object oldvalue = m_Filter;OnBeforeDataChange(this, "Filter", oldvalue, value);m_Filter = value;OnAfterDataChange(this, "Filter", oldvalue, value);} + } + + public System.Int64 TaskID + { + get{return m_TaskID;} + set{object oldvalue = m_TaskID;OnBeforeDataChange(this, "TaskID", oldvalue, value);m_TaskID = value;OnAfterDataChange(this, "TaskID", oldvalue, value);} + } + +#endregion + +#region " referenced properties " + + [Affects(typeof(Task))] + public Task Task + { + get{ return ((DataFetcherWithRelations)m_dataparent).GetRelatedObject("TaskFilterTask", this); } + set{ ((DataFetcherWithRelations)m_dataparent).SetRelatedObject("TaskFilterTask", this, value); } + } + +#endregion + + } + +} \ No newline at end of file diff --git a/Duplicati/GUI/Duplicati.csproj b/Duplicati/GUI/Duplicati.csproj index e62207003..b4c990ae3 100644 --- a/Duplicati/GUI/Duplicati.csproj +++ b/Duplicati/GUI/Duplicati.csproj @@ -31,10 +31,6 @@ 4 - - False - Datamodel\LightDatamodel.dll - @@ -159,6 +155,18 @@ AdvancedOptions.cs + + Form + + + FilterDialog.cs + + + UserControl + + + FilterEditor.cs + UserControl @@ -283,6 +291,10 @@ + + {CAE8433B-F013-474E-B7FC-4DE0D5933AD1} + LightDatamodel + {F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1} WizardForm @@ -397,6 +409,14 @@ Designer AdvancedOptions.cs + + Designer + FilterDialog.cs + + + Designer + FilterEditor.cs + Designer FinishedAdd.cs @@ -478,6 +498,7 @@ SelectBackup.cs + diff --git a/Duplicati/GUI/HelperControls/BackupTreeView.cs b/Duplicati/GUI/HelperControls/BackupTreeView.cs index 28bdc7a78..0a3ba0b56 100644 --- a/Duplicati/GUI/HelperControls/BackupTreeView.cs +++ b/Duplicati/GUI/HelperControls/BackupTreeView.cs @@ -77,6 +77,17 @@ namespace Duplicati.GUI.HelperControls 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; + } + } } diff --git a/Duplicati/GUI/HelperControls/DurationEditor.cs b/Duplicati/GUI/HelperControls/DurationEditor.cs index 1896407d2..bd5ad5930 100644 --- a/Duplicati/GUI/HelperControls/DurationEditor.cs +++ b/Duplicati/GUI/HelperControls/DurationEditor.cs @@ -23,14 +23,19 @@ namespace Duplicati.GUI.HelperControls /// Sets the avalible intervals /// /// A dictionary where the key is the string to display and the value is the duplicity time string - public void SetIntervals(Dictionary values) + public void SetIntervals(List> values) { - List vx = new List(values.Values); - vx.Add(""); - - m_values = vx.ToArray(); EasyDuration.Items.Clear(); - EasyDuration.Items.AddRange(new List(values.Keys).ToArray()); + + if (values[values.Count - 1].Key != "") + values.Add(new KeyValuePair("", "")); + + 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) diff --git a/Duplicati/GUI/Program.cs b/Duplicati/GUI/Program.cs index 027cb99dd..3a1b6e936 100644 --- a/Duplicati/GUI/Program.cs +++ b/Duplicati/GUI/Program.cs @@ -147,7 +147,11 @@ namespace Duplicati.GUI TrayIcon.DoubleClick += new EventHandler(TrayIcon_DoubleClick); TrayIcon.Visible = true; - if (Program.DataConnection.GetObjects().Length == 0) + long count = 0; + lock (MainLock) + count = Program.DataConnection.GetObjects().Length; + + if (count == 0) { MessageBox.Show("Since this is the first time Duplicati is being run, the Wizard will now be shown.\r\nIf you wish to access the wizard again at some other time, you can right click the Duplicati icon in your system tray.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); ShowWizard(); diff --git a/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.Designer.cs b/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.Designer.cs index 30e80cae1..5a163afba 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.Designer.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.Designer.cs @@ -31,6 +31,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup this.SelectWhen = new System.Windows.Forms.CheckBox(); this.SelectIncremental = new System.Windows.Forms.CheckBox(); this.ThrottleOptions = new System.Windows.Forms.CheckBox(); + this.EditFilters = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // SelectWhen @@ -64,10 +65,21 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup this.ThrottleOptions.Text = "Select options that limit machine usage, such as bandwidth limits"; this.ThrottleOptions.UseVisualStyleBackColor = true; // + // EditFilters + // + this.EditFilters.AutoSize = true; + this.EditFilters.Location = new System.Drawing.Point(32, 128); + this.EditFilters.Name = "EditFilters"; + this.EditFilters.Size = new System.Drawing.Size(316, 17); + this.EditFilters.TabIndex = 4; + this.EditFilters.Text = "Modify filters that control what files are included in the backup"; + this.EditFilters.UseVisualStyleBackColor = true; + // // AdvancedOptions // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.EditFilters); this.Controls.Add(this.ThrottleOptions); this.Controls.Add(this.SelectIncremental); this.Controls.Add(this.SelectWhen); @@ -83,5 +95,6 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup private System.Windows.Forms.CheckBox SelectWhen; private System.Windows.Forms.CheckBox SelectIncremental; private System.Windows.Forms.CheckBox ThrottleOptions; + private System.Windows.Forms.CheckBox EditFilters; } } diff --git a/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.cs b/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.cs index 9aa3846fa..124810c1d 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/AdvancedOptions.cs @@ -24,6 +24,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup m_settings["Advanced:When"] = SelectWhen.Checked; m_settings["Advanced:Incremental"] = SelectIncremental.Checked; m_settings["Advanced:Throttle"] = ThrottleOptions.Checked; + m_settings["Advanced:Filters"] = EditFilters.Checked; if (args.Direction == PageChangedDirection.Back) return; @@ -34,6 +35,8 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup args.NextPage = new Wizard_pages.Add_backup.IncrementalSettings(); else if (ThrottleOptions.Checked) args.NextPage = new Wizard_pages.Add_backup.ThrottleOptions(); + else if (EditFilters.Checked) + args.NextPage = new Wizard_pages.Add_backup.FilterEditor(); else args.NextPage = new Wizard_pages.Add_backup.FinishedAdd(); } diff --git a/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.Designer.cs b/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.Designer.cs new file mode 100644 index 000000000..64a133455 --- /dev/null +++ b/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.Designer.cs @@ -0,0 +1,144 @@ +namespace Duplicati.GUI.Wizard_pages.Add_backup +{ + partial class FilterDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.Inclusive = new System.Windows.Forms.RadioButton(); + this.Exclusive = new System.Windows.Forms.RadioButton(); + this.label1 = new System.Windows.Forms.Label(); + this.Filter = 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.SuspendLayout(); + // + // Inclusive + // + this.Inclusive.AutoSize = true; + this.Inclusive.Checked = true; + this.Inclusive.Location = new System.Drawing.Point(8, 8); + this.Inclusive.Name = "Inclusive"; + this.Inclusive.Size = new System.Drawing.Size(167, 17); + this.Inclusive.TabIndex = 0; + this.Inclusive.TabStop = true; + this.Inclusive.Text = "Include files matching the filter"; + this.Inclusive.UseVisualStyleBackColor = true; + // + // Exclusive + // + this.Exclusive.AutoSize = true; + this.Exclusive.Location = new System.Drawing.Point(8, 32); + this.Exclusive.Name = "Exclusive"; + this.Exclusive.Size = new System.Drawing.Size(170, 17); + this.Exclusive.TabIndex = 1; + this.Exclusive.Text = "Exclude files matching the filter"; + this.Exclusive.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 64); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(29, 13); + this.label1.TabIndex = 2; + this.label1.Text = "Filter"; + // + // Filter + // + this.Filter.Location = new System.Drawing.Point(56, 64); + this.Filter.Name = "Filter"; + this.Filter.Size = new System.Drawing.Size(320, 20); + this.Filter.TabIndex = 3; + // + // OKBtn + // + this.OKBtn.Location = new System.Drawing.Point(112, 96); + this.OKBtn.Name = "OKBtn"; + this.OKBtn.Size = new System.Drawing.Size(75, 23); + this.OKBtn.TabIndex = 4; + this.OKBtn.Text = "OK"; + this.OKBtn.UseVisualStyleBackColor = true; + this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click); + // + // CancelBtn + // + this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.CancelBtn.Location = new System.Drawing.Point(200, 96); + this.CancelBtn.Name = "CancelBtn"; + this.CancelBtn.Size = new System.Drawing.Size(75, 23); + this.CancelBtn.TabIndex = 5; + this.CancelBtn.Text = "Cancel"; + this.CancelBtn.UseVisualStyleBackColor = true; + // + // IsRegExp + // + this.IsRegExp.AutoSize = true; + this.IsRegExp.Checked = true; + this.IsRegExp.CheckState = System.Windows.Forms.CheckState.Checked; + this.IsRegExp.Location = new System.Drawing.Point(224, 48); + this.IsRegExp.Name = "IsRegExp"; + this.IsRegExp.Size = new System.Drawing.Size(146, 17); + this.IsRegExp.TabIndex = 6; + this.IsRegExp.Text = "Filter is regular expression"; + this.IsRegExp.UseVisualStyleBackColor = true; + // + // FilterDialog + // + this.AcceptButton = this.OKBtn; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.CancelBtn; + this.ClientSize = new System.Drawing.Size(389, 126); + this.Controls.Add(this.Filter); + 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.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "FilterDialog"; + this.Load += new System.EventHandler(this.FilterDialog_Load); + 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 Filter; + private System.Windows.Forms.Button OKBtn; + private System.Windows.Forms.Button CancelBtn; + private System.Windows.Forms.CheckBox IsRegExp; + } +} \ No newline at end of file diff --git a/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.cs b/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.cs new file mode 100644 index 000000000..ce3e130fd --- /dev/null +++ b/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.cs @@ -0,0 +1,68 @@ +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.Wizard_pages.Add_backup +{ + public partial class FilterDialog : Form + { + TaskFilter m_filter; + + public FilterDialog(TaskFilter filter) + : this() + { + m_filter = filter; + } + + private FilterDialog() + { + InitializeComponent(); + } + + private void OKBtn_Click(object sender, EventArgs e) + { + m_filter.Include = Inclusive.Checked; + if (IsRegExp.Checked) + { + try + { + System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(Filter.Text); + } + catch (Exception ex) + { + MessageBox.Show(this, "The expression is not a valid regular expression: " + ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + m_filter.Filter = Filter.Text; + } + else + m_filter.Filter = Library.Core.FilenameFilter.ConvertGlobbingToRegExp(Filter.Text); + + this.DialogResult = DialogResult.OK; + this.Close(); + } + + private void FilterDialog_Load(object sender, EventArgs e) + { + if (m_filter != null) + { + Inclusive.Checked = m_filter.Include; + Exclusive.Checked = !m_filter.Include; + Filter.Text = m_filter.Filter; + if (!string.IsNullOrEmpty(m_filter.Filter)) + IsRegExp.Checked = true; + else + IsRegExp.Checked = false; + } + + try { Filter.Focus(); } + catch { } + + } + } +} \ No newline at end of file diff --git a/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.resx b/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.resx new file mode 100644 index 000000000..ff31a6db5 --- /dev/null +++ b/Duplicati/GUI/Wizard pages/Add backup/FilterDialog.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.Designer.cs b/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.Designer.cs new file mode 100644 index 000000000..ce028ddbc --- /dev/null +++ b/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.Designer.cs @@ -0,0 +1,232 @@ +namespace Duplicati.GUI.Wizard_pages.Add_backup +{ + partial class FilterEditor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + 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.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.AddFilterButton = new System.Windows.Forms.ToolStripButton(); + this.RemoveFilterButton = 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.EditFilterButton = new System.Windows.Forms.ToolStripButton(); + this.listView = new System.Windows.Forms.ListView(); + this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); + this.imageList1 = new System.Windows.Forms.ImageList(this.components); + this.groupBox1.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.listView); + this.groupBox1.Controls.Add(this.toolStrip1); + this.groupBox1.Location = new System.Drawing.Point(16, 16); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(464, 200); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Filters"; + // + // 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.toolStripSeparator1, + this.MoveFilterUpButton, + this.MoveFilterDownButton, + this.toolStripSeparator2, + this.MoveFilterTopButton, + this.MoveFilterBottomButton}); + this.toolStrip1.Location = new System.Drawing.Point(3, 16); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.toolStrip1.Size = new System.Drawing.Size(458, 25); + this.toolStrip1.TabIndex = 0; + this.toolStrip1.Text = "toolStrip1"; + // + // AddFilterButton + // + this.AddFilterButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.AddFilterButton.Image = ((System.Drawing.Image)(resources.GetObject("AddFilterButton.Image"))); + this.AddFilterButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.AddFilterButton.Name = "AddFilterButton"; + this.AddFilterButton.Size = new System.Drawing.Size(23, 22); + this.AddFilterButton.Text = "toolStripButton1"; + this.AddFilterButton.ToolTipText = "Add a new filter"; + this.AddFilterButton.Click += new System.EventHandler(this.AddFilterButton_Click); + // + // RemoveFilterButton + // + this.RemoveFilterButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.RemoveFilterButton.Enabled = false; + this.RemoveFilterButton.Image = ((System.Drawing.Image)(resources.GetObject("RemoveFilterButton.Image"))); + this.RemoveFilterButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.RemoveFilterButton.Name = "RemoveFilterButton"; + this.RemoveFilterButton.Size = new System.Drawing.Size(23, 22); + this.RemoveFilterButton.Text = "toolStripButton2"; + this.RemoveFilterButton.ToolTipText = "Remove the selected filter"; + this.RemoveFilterButton.Click += new System.EventHandler(this.RemoveFilterButton_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); + // + // MoveFilterUpButton + // + this.MoveFilterUpButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.MoveFilterUpButton.Enabled = false; + this.MoveFilterUpButton.Image = ((System.Drawing.Image)(resources.GetObject("MoveFilterUpButton.Image"))); + this.MoveFilterUpButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.MoveFilterUpButton.Name = "MoveFilterUpButton"; + this.MoveFilterUpButton.Size = new System.Drawing.Size(23, 22); + this.MoveFilterUpButton.Text = "toolStripButton3"; + this.MoveFilterUpButton.ToolTipText = "Move the selected filter up"; + this.MoveFilterUpButton.Click += new System.EventHandler(this.MoveFilterUpButton_Click); + // + // MoveFilterDownButton + // + this.MoveFilterDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.MoveFilterDownButton.Enabled = false; + this.MoveFilterDownButton.Image = ((System.Drawing.Image)(resources.GetObject("MoveFilterDownButton.Image"))); + this.MoveFilterDownButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.MoveFilterDownButton.Name = "MoveFilterDownButton"; + this.MoveFilterDownButton.Size = new System.Drawing.Size(23, 22); + this.MoveFilterDownButton.Text = "toolStripButton4"; + this.MoveFilterDownButton.ToolTipText = "Move the selected filter down"; + this.MoveFilterDownButton.Click += new System.EventHandler(this.MoveFilterDownButton_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); + // + // MoveFilterTopButton + // + this.MoveFilterTopButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.MoveFilterTopButton.Enabled = false; + this.MoveFilterTopButton.Image = ((System.Drawing.Image)(resources.GetObject("MoveFilterTopButton.Image"))); + this.MoveFilterTopButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.MoveFilterTopButton.Name = "MoveFilterTopButton"; + this.MoveFilterTopButton.Size = new System.Drawing.Size(23, 22); + this.MoveFilterTopButton.Text = "toolStripButton5"; + this.MoveFilterTopButton.ToolTipText = "Move the selected filter to the top"; + this.MoveFilterTopButton.Click += new System.EventHandler(this.MoveFilterTopButton_Click); + // + // MoveFilterBottomButton + // + this.MoveFilterBottomButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.MoveFilterBottomButton.Enabled = false; + this.MoveFilterBottomButton.Image = ((System.Drawing.Image)(resources.GetObject("MoveFilterBottomButton.Image"))); + this.MoveFilterBottomButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.MoveFilterBottomButton.Name = "MoveFilterBottomButton"; + this.MoveFilterBottomButton.Size = new System.Drawing.Size(23, 22); + this.MoveFilterBottomButton.Text = "toolStripButton6"; + this.MoveFilterBottomButton.ToolTipText = "Move the selected filter to the bottom"; + this.MoveFilterBottomButton.Click += new System.EventHandler(this.MoveFilterBottomButton_Click); + // + // EditFilterButton + // + this.EditFilterButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.EditFilterButton.Enabled = false; + this.EditFilterButton.Image = ((System.Drawing.Image)(resources.GetObject("EditFilterButton.Image"))); + this.EditFilterButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.EditFilterButton.Name = "EditFilterButton"; + this.EditFilterButton.Size = new System.Drawing.Size(23, 22); + this.EditFilterButton.Text = "toolStripButton1"; + this.EditFilterButton.ToolTipText = "Edit the selected filter"; + this.EditFilterButton.Click += new System.EventHandler(this.EditFilterButton_Click); + // + // listView + // + this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1}); + this.listView.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView.FullRowSelect = true; + this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listView.Location = new System.Drawing.Point(3, 41); + this.listView.Name = "listView"; + this.listView.Size = new System.Drawing.Size(458, 156); + this.listView.SmallImageList = this.imageList1; + this.listView.TabIndex = 1; + this.listView.UseCompatibleStateImageBehavior = false; + this.listView.View = System.Windows.Forms.View.Details; + this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged); + // + // columnHeader1 + // + this.columnHeader1.Width = 420; + // + // imageList1 + // + this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); + this.imageList1.TransparentColor = System.Drawing.Color.Transparent; + this.imageList1.Images.SetKeyName(0, "Inclusion.ico"); + this.imageList1.Images.SetKeyName(1, "Exclusion.ico"); + // + // FilterEditor + // + this.Controls.Add(this.groupBox1); + this.Name = "FilterEditor"; + this.Size = new System.Drawing.Size(506, 242); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton AddFilterButton; + private System.Windows.Forms.ToolStripButton RemoveFilterButton; + 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.ToolStripButton EditFilterButton; + private System.Windows.Forms.ListView listView; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ImageList imageList1; + } +} diff --git a/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.cs b/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.cs new file mode 100644 index 000000000..9d4efe9f6 --- /dev/null +++ b/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.cs @@ -0,0 +1,153 @@ +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.Wizard_pages.Add_backup +{ + public partial class FilterEditor : System.Windows.Forms.Wizard.WizardControl + { + Task m_task; + + public FilterEditor() + : base("Edit filters", "On this page you can modify filters that control what files are included in the backup.") + { + InitializeComponent(); + + base.PageEnter += new System.Windows.Forms.Wizard.PageChangeHandler(FilterEditor_PageEnter); + base.PageLeave += new System.Windows.Forms.Wizard.PageChangeHandler(FilterEditor_PageLeave); + } + + void FilterEditor_PageLeave(object sender, System.Windows.Forms.Wizard.PageChangedArgs args) + { + if (args.Direction == System.Windows.Forms.Wizard.PageChangedDirection.Back) + return; + + List filters = new List(); + foreach (ListViewItem lvi in listView.Items) + { + if ((lvi.Tag as TaskFilter).DataParent == null) + m_task.DataParent.Add(lvi.Tag as TaskFilter); + filters.Add(lvi.Tag as TaskFilter); + } + + m_task.SortedFilters = filters.ToArray(); + + args.NextPage = new Wizard_pages.Add_backup.FinishedAdd(); + } + + void FilterEditor_PageEnter(object sender, System.Windows.Forms.Wizard.PageChangedArgs args) + { + m_task = m_task = ((Schedule)m_settings["Schedule"]).Tasks[0]; + + listView.Items.Clear(); + foreach (TaskFilter tf in m_task.SortedFilters) + { + ListViewItem lvi = new ListViewItem(tf.Filter, tf.Include ? 0 : 1); + lvi.Tag = tf; + listView.Items.Add(lvi); + } + + if (listView.Items.Count > 0) + listView.Items[0].Selected = true; + } + + 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; + } + + private void RemoveFilterButton_Click(object sender, EventArgs e) + { + while(listView.SelectedItems.Count > 0) + listView.Items.Remove(listView.SelectedItems[0]); + } + + private void EditFilterButton_Click(object sender, EventArgs e) + { + if (listView.SelectedItems.Count == 1 && listView.SelectedItems[0].Tag is TaskFilter) + { + TaskFilter tf = listView.SelectedItems[0].Tag as TaskFilter; + FilterDialog dlg = new FilterDialog(tf); + if (dlg.ShowDialog(this) == DialogResult.OK) + { + listView.SelectedItems[0].Text = tf.Filter; + listView.SelectedItems[0].ImageIndex = tf.Include ? 0 : 1; + } + } + } + + 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; + } + } + + 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; + } + } + + 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; + } + } + + 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; + } + } + + private void AddFilterButton_Click(object sender, EventArgs e) + { + TaskFilter tf = new TaskFilter(); + FilterDialog dlg = new FilterDialog(tf); + if (dlg.ShowDialog(this) == DialogResult.OK) + { + ListViewItem lvi = new ListViewItem(tf.Filter, tf.Include ? 0 : 1); + lvi.Tag = tf; + listView.Items.Add(lvi); + } + + } + } +} + diff --git a/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.resx b/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.resx new file mode 100644 index 000000000..eddab68d2 --- /dev/null +++ b/Duplicati/GUI/Wizard pages/Add backup/FilterEditor.resx @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 116, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAU + BQAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABEAMAAQEBAAEgBgABEP8AKwABFQEDAQEBGgEsAQwBBAFDASwBDAEEAUMBLAEMAQQBQ/AAAUEBUAEU + AbIBUwHiAYwB/wFSAeEBiQH/AUQByAFsAf/wAAFCAVABFQGyAUcB1AFnAf8BPgHLAU4B/wFEAckBbAH/ + 8AABQgFSARUBsgFPAdoBcQH/AT8BzAFQAf8BRAHKAWwB//AAAUIBUwEVAbIBWwHjAX4B/wFLAdQBXQH/ + AUUBywFtAf/gAAEyAbQBNgH+AU4B0wFzAf8BTgHUAXUB/wFPAdQBdQH/AU4B0wF0Af8BZwHqAYQB/wFa + Ad8BbQH/AVgB4wGQAf8BRQHKAWsB/wFDAcgBagH/AUIBxgFoAf8BQgHFAWgB/wExAQ8BBQFMDAABQgEN + ATMBhAJKAdMB/wJMAdQB/wJOAdQB/wJPAdMB/wJOAdAB/wJLAcwB/wJHAccB/wJDAcMB/wJBAcIB/wJB + AcIB/wIwAagB/5AAATYBuQE+Af4BYwHaAXYB/wFsAeQBgAH/AXIB7AGGAf8BdQHwAYoB/wFyAe8BhwH/ + AWkB6gF+Af8BXAHhAXAB/wFPAdcBYQH/AUMBzgFUAf8BPgHLAU4B/wFRAeABhwH/ATEBDwEFAUwMAAFC + AQ0BMwGEAlwB1wH/AmMB1gH/Am8B5AH/AncB7gH/AncB8AH/AmsB6QH/AlgB3AH/AkgB0AH/AkMBzAH/ + AkMBzAH/AjoBtwH/kAABNgG6AT4B/gFcAdYBfQH/AWQB3wGFAf8BawHnAY0B/wFwAe4BkwH/AXUB7wGK + Af8BcwHwAYgB/wFrAewBhgH/AWAB5wGCAf8BVQHeAXcB/wFLAdcBbAH/AVIB4QGKAf8BMQEPAQUBTAwA + AUIBDQEzAYQCXQHaAf8CZAHdAf8CbgHoAf8CdAHwAf8CdAHyAf8CawHsAf8CXAHiAf8CTgHYAf8CSQHU + Af8CSQHUAf8COgG3Af+QAAFEAVgBFgGxAUMBXAEYAbUBQwFcARgBtQFDAVoBFwG1ATYBkQEkAegBcAHt + AZMB/wF1Ae8BiQH/AVEB1gF7Af8BQQFWARYBtQFAAVUBFQG1AUABUwEVAbUBQAFTARUBtQEZAQQBAgEh + DAABLgEFAQ8BRgFDARgBXwG1AUMBGAFfAbUBQwEYAV8BtQFDARgBXwG1AUMBGAFeAbUBQgEXAVoBtQFB + ARYBVwG1AUABFQFUAbUBQAEVAVIBtQE/ARQBTgG1AUABFAFMAbSgAAFDAVcBFwGyAWkB5QGLAf8BcAHo + AYMB/wFRAdYBewH/8AABQwFZARcBsgFgAdsBgQH/AWcB3gF6Af8BUAHVAXkB//AAAUMBWQEXAbIBVwHS + AXgB/wFcAdMBbwH/AU8B1AF3Af/wAAFEAVMBFgGrATIBuQE3Af8BMgG4ATcB/wEwAbUBMwH//wD/ANoA + AUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAT/BAAB/AE/Av8EAAH8AT8C/wQA + AfwBPwL/BAAB/AE/Av8EAAH8AT8C/wQAAcABAQHAAQMEAAHAAQEBwAEDBAABwAEBAcABAwQAAcABAQHA + AQMEAAH8AT8C/wQAAfwBPwL/BAAB/AE/Av8EAAH8AT8C/wQABP8EAAT/BAAL + + + + 17, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAiNJREFUOE+Fk29L + U3EUx+cr6AVES+e8btVEcwUlKWZI0IOQLIaNYrJqgc7sUrlCbG0oxmrhkpRkVGQM+ocPKpoRxHJXcW61 + SX8IZBA9CXrQK/jW98BuXebqwIHfPfd8P/ec8zu3ylTB3DEXvv38Km83bthkut+fqKqUa4hvDdRi/+12 + qMl+jKaD4jzvm96DLRetqAhR753BtjErBpI+RHNXMbkaxdTHCdzKTSC2eg2R7Ch8zz2Sw9wyUH3IDM+z + HowsD2GscBnj2RAWi2lxQsL5YVxZ9qNn7hCUsNkIYNm77zahL3UCQ9lBjOQDCGqXULJ4fhrD789DXenD + 6de92Bl3gBq9CnukBh2PdsG74IY/c1IggZSqA6ZyMYnxnSflQsuTJlAjAE67YaYOrU+dOD7fjYE3PlxY + +O0vB3XATe2GxPl15hBADbWm9nCLPDgf23EnP6OLKh04k+aHNtFQqwMY5LD+Z1rxrRFQaoGA7vlOBNI+ + hDJ+jGtnddZsYVJugK2xhVIF0gKNA9mRULD3lQ1dSw4cyzXCqzl1QPRTL46uNOKg5kBb0o7mB8qfIRLA + K9ket6IzWQdXTsGpzzb43zkMAO8HGw5n6tHxQpH+DddICBepLWGBe8kC/5oF6lo1ij8K4te/dEnsiFYr + Ocwt20Sup+0vyLniZgS/m8UJI7h1tkZy1l3lEpGlNUTMknxgrlqcZ8bKyv7X78kJ857p+rTXEfwChEDw + QjpqrrIAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAe9JREFUOE+FU99L + U3EU3976G6SnoIcpk5rU7AebFjFBaRkRCCJEOmbqMmoOUxwLVhuBbhLLBhUVCD7aS5BPPokPQRDU7CGN + 2noI79xcbNa8n+7nyBa3280vfOB7P+dzPpxz7vlaLSZn0deHSu6rRA80HLR408+tZlodP9/ajJXLXdgI + j+FbIi5Yn7wp3AunHaYmryeCWDplE/HWo1n8eDqH8rO0oPQ4BSU1jY3gEF6dsINag9HL4zZ8uT6A7ft3 + gNkYdtNJHX4m76EYm8LnwT5Qayh7rdOFwsQoqtHbUGeidRPMzcidnBoJYis0jIznpL6dZa2s3CUPdm75 + RYR4uG5SSxZOi5UCV5DtPgvmSBWc9ju3A5sayaCiVaHcnTQiEoIyHsD3G/2iZQ5zLQtdZ+Sj4nVi88lD + 7HeUN6tQPK3ItDvAXDH41HFESE56v2MwYBnvNTcaFK5eRD42jnxiag8P9GBrbIHaegucAweSPXcMOxec + UHtPAz43MOL6g2va3dcmMbZKbX2INOD2sY28twXV3qNQfQ5gqEUHcoxRQ61hK7kcDBR77KgO2PArcAjq + 6GEB7+QYo8awSKyC68nAx/ONUHqaUPbvJRK8k/vQYRfNP1e5tposjW/iradJzAjeyf33Mf39OPh3+IsJ + WRiT8xtNQweCAHQ6FwAAAABJRU5ErkJggg== + + + + + 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 + BQBGf59N9yfyuQAAAABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/Duplicati/GUI/Wizard pages/Add backup/IncrementalSettings.cs b/Duplicati/GUI/Wizard pages/Add backup/IncrementalSettings.cs index 9fbfac453..a29384b7a 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/IncrementalSettings.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/IncrementalSettings.cs @@ -44,6 +44,13 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup base.PageEnter += new PageChangeHandler(IncrementalSettings_PageEnter); base.PageLeave += new PageChangeHandler(IncrementalSettings_PageLeave); + + List> ix = new List>(); + ix.Add(new KeyValuePair("One day", "1D")); + ix.Add(new KeyValuePair("One week", "1W")); + ix.Add(new KeyValuePair("Two weeks", "2W")); + ix.Add(new KeyValuePair("One month", "1M")); + CleanupDuration.SetIntervals(ix); } void IncrementalSettings_PageLeave(object sender, PageChangedArgs args) @@ -116,6 +123,8 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup if ((bool)m_settings["Advanced:Throttle"]) args.NextPage = new Wizard_pages.Add_backup.ThrottleOptions(); + else if ((bool)m_settings["Advanced:Filters"]) + args.NextPage = new Wizard_pages.Add_backup.FilterEditor(); else args.NextPage = new Wizard_pages.Add_backup.FinishedAdd(); } diff --git a/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.Designer.cs b/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.Designer.cs index 09ea6ce85..46f0fd186 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.Designer.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.Designer.cs @@ -28,6 +28,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); this.label1 = new System.Windows.Forms.Label(); this.TargetFolder = new System.Windows.Forms.TextBox(); this.BrowseFolderButton = new System.Windows.Forms.Button(); @@ -35,14 +36,12 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup this.DocumentGroup = new System.Windows.Forms.GroupBox(); this.appdataSize = new System.Windows.Forms.Label(); this.desktopSize = new System.Windows.Forms.Label(); - this.myMoviesSize = new System.Windows.Forms.Label(); this.myMusicSize = new System.Windows.Forms.Label(); this.myPicturesSize = new System.Windows.Forms.Label(); this.myDocumentsSize = new System.Windows.Forms.Label(); this.IncludeDocuments = new System.Windows.Forms.CheckBox(); this.IncludeSettings = new System.Windows.Forms.CheckBox(); this.IncludeDesktop = new System.Windows.Forms.CheckBox(); - this.IncludeMovies = new System.Windows.Forms.CheckBox(); this.IncludeMusic = new System.Windows.Forms.CheckBox(); this.IncludeImages = new System.Windows.Forms.CheckBox(); this.DocumentsRadio = new System.Windows.Forms.RadioButton(); @@ -50,6 +49,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup this.customSize = new System.Windows.Forms.Label(); this.FolderRadio = new System.Windows.Forms.RadioButton(); this.totalSize = new System.Windows.Forms.Label(); + this.FolderTooltip = new System.Windows.Forms.ToolTip(this.components); this.DocumentGroup.SuspendLayout(); this.FolderGroup.SuspendLayout(); this.SuspendLayout(); @@ -65,9 +65,9 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup // // TargetFolder // - this.TargetFolder.Location = new System.Drawing.Point(152, 24); + this.TargetFolder.Location = new System.Drawing.Point(192, 24); this.TargetFolder.Name = "TargetFolder"; - this.TargetFolder.Size = new System.Drawing.Size(248, 20); + this.TargetFolder.Size = new System.Drawing.Size(208, 20); this.TargetFolder.TabIndex = 1; this.TargetFolder.Leave += new System.EventHandler(this.TargetFolder_Leave); // @@ -85,14 +85,12 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup // this.DocumentGroup.Controls.Add(this.appdataSize); this.DocumentGroup.Controls.Add(this.desktopSize); - this.DocumentGroup.Controls.Add(this.myMoviesSize); this.DocumentGroup.Controls.Add(this.myMusicSize); this.DocumentGroup.Controls.Add(this.myPicturesSize); this.DocumentGroup.Controls.Add(this.myDocumentsSize); this.DocumentGroup.Controls.Add(this.IncludeDocuments); this.DocumentGroup.Controls.Add(this.IncludeSettings); this.DocumentGroup.Controls.Add(this.IncludeDesktop); - this.DocumentGroup.Controls.Add(this.IncludeMovies); this.DocumentGroup.Controls.Add(this.IncludeMusic); this.DocumentGroup.Controls.Add(this.IncludeImages); this.DocumentGroup.Location = new System.Drawing.Point(24, 8); @@ -104,7 +102,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup // appdataSize // this.appdataSize.AutoSize = true; - this.appdataSize.Location = new System.Drawing.Point(392, 72); + this.appdataSize.Location = new System.Drawing.Point(392, 48); this.appdataSize.Name = "appdataSize"; this.appdataSize.Size = new System.Drawing.Size(22, 13); this.appdataSize.TabIndex = 11; @@ -113,21 +111,12 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup // desktopSize // this.desktopSize.AutoSize = true; - this.desktopSize.Location = new System.Drawing.Point(392, 48); + this.desktopSize.Location = new System.Drawing.Point(392, 24); this.desktopSize.Name = "desktopSize"; this.desktopSize.Size = new System.Drawing.Size(22, 13); this.desktopSize.TabIndex = 10; this.desktopSize.Text = "(...)"; // - // myMoviesSize - // - this.myMoviesSize.AutoSize = true; - this.myMoviesSize.Location = new System.Drawing.Point(392, 24); - this.myMoviesSize.Name = "myMoviesSize"; - this.myMoviesSize.Size = new System.Drawing.Size(22, 13); - this.myMoviesSize.TabIndex = 9; - this.myMoviesSize.Text = "(...)"; - // // myMusicSize // this.myMusicSize.AutoSize = true; @@ -166,38 +155,31 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup this.IncludeDocuments.TabIndex = 5; this.IncludeDocuments.Text = "Include documents"; this.IncludeDocuments.UseVisualStyleBackColor = true; + this.IncludeDocuments.CheckedChanged += new System.EventHandler(this.m_calculator_CompletedWork); // // IncludeSettings // this.IncludeSettings.AutoSize = true; - this.IncludeSettings.Location = new System.Drawing.Point(224, 72); + this.IncludeSettings.Location = new System.Drawing.Point(224, 48); this.IncludeSettings.Name = "IncludeSettings"; this.IncludeSettings.Size = new System.Drawing.Size(154, 17); this.IncludeSettings.TabIndex = 4; this.IncludeSettings.Text = "Include application settings"; this.IncludeSettings.UseVisualStyleBackColor = true; + this.IncludeSettings.CheckedChanged += new System.EventHandler(this.m_calculator_CompletedWork); // // IncludeDesktop // this.IncludeDesktop.AutoSize = true; this.IncludeDesktop.Checked = true; this.IncludeDesktop.CheckState = System.Windows.Forms.CheckState.Checked; - this.IncludeDesktop.Location = new System.Drawing.Point(224, 48); + this.IncludeDesktop.Location = new System.Drawing.Point(224, 24); this.IncludeDesktop.Name = "IncludeDesktop"; this.IncludeDesktop.Size = new System.Drawing.Size(156, 17); this.IncludeDesktop.TabIndex = 3; this.IncludeDesktop.Text = "Include files on the desktop"; this.IncludeDesktop.UseVisualStyleBackColor = true; - // - // IncludeMovies - // - this.IncludeMovies.AutoSize = true; - this.IncludeMovies.Location = new System.Drawing.Point(224, 24); - this.IncludeMovies.Name = "IncludeMovies"; - this.IncludeMovies.Size = new System.Drawing.Size(113, 17); - this.IncludeMovies.TabIndex = 2; - this.IncludeMovies.Text = "Include my movies"; - this.IncludeMovies.UseVisualStyleBackColor = true; + this.IncludeDesktop.CheckedChanged += new System.EventHandler(this.m_calculator_CompletedWork); // // IncludeMusic // @@ -208,6 +190,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup this.IncludeMusic.TabIndex = 1; this.IncludeMusic.Text = "Include my music"; this.IncludeMusic.UseVisualStyleBackColor = true; + this.IncludeMusic.CheckedChanged += new System.EventHandler(this.m_calculator_CompletedWork); // // IncludeImages // @@ -220,6 +203,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup this.IncludeImages.TabIndex = 0; this.IncludeImages.Text = "Include my images"; this.IncludeImages.UseVisualStyleBackColor = true; + this.IncludeImages.CheckedChanged += new System.EventHandler(this.m_calculator_CompletedWork); // // DocumentsRadio // @@ -309,19 +293,18 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup private System.Windows.Forms.RadioButton DocumentsRadio; private System.Windows.Forms.Label appdataSize; private System.Windows.Forms.Label desktopSize; - private System.Windows.Forms.Label myMoviesSize; private System.Windows.Forms.Label myMusicSize; private System.Windows.Forms.Label myPicturesSize; private System.Windows.Forms.Label myDocumentsSize; private System.Windows.Forms.CheckBox IncludeDocuments; private System.Windows.Forms.CheckBox IncludeSettings; private System.Windows.Forms.CheckBox IncludeDesktop; - private System.Windows.Forms.CheckBox IncludeMovies; private System.Windows.Forms.CheckBox IncludeMusic; private System.Windows.Forms.CheckBox IncludeImages; private System.Windows.Forms.GroupBox FolderGroup; private System.Windows.Forms.Label customSize; private System.Windows.Forms.RadioButton FolderRadio; private System.Windows.Forms.Label totalSize; + private System.Windows.Forms.ToolTip FolderTooltip; } } diff --git a/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.cs b/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.cs index 98b6a5de2..19c4d0811 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.cs @@ -42,17 +42,33 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup private string m_appData; private string m_myDocuments; + private string[] m_specialFolders; + public SelectFiles() : base("Select files to backup", "On this page you must select the folder and files you wish to backup") { InitializeComponent(); m_sizes = new Dictionary(); - m_myPictures = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); - m_myMusic = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic); - m_desktop = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - m_appData = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - m_myDocuments = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); + m_myPictures = Library.Core.Utility.AppendDirSeperator("!" + System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)); + m_myMusic = Library.Core.Utility.AppendDirSeperator("!" + System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)); + m_desktop = Library.Core.Utility.AppendDirSeperator("!" + System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop)); + m_appData = Library.Core.Utility.AppendDirSeperator("!" + System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); + m_myDocuments = Library.Core.Utility.AppendDirSeperator("!" + System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); + + FolderTooltip.SetToolTip(IncludeDocuments, m_myDocuments.Substring(1)); + FolderTooltip.SetToolTip(IncludeMusic, m_myMusic.Substring(1)); + FolderTooltip.SetToolTip(IncludeImages, m_myPictures.Substring(1)); + FolderTooltip.SetToolTip(IncludeDesktop, m_desktop.Substring(1)); + FolderTooltip.SetToolTip(IncludeSettings, m_appData.Substring(1)); + + m_specialFolders = new string[] { + m_myDocuments.Substring(1), + m_myMusic.Substring(1), + m_myPictures.Substring(1), + m_appData.Substring(1), + m_desktop.Substring(1) + }; base.PageEnter += new PageChangeHandler(SelectFiles_PageEnter); base.PageLeave += new PageChangeHandler(SelectFiles_PageLeave); @@ -60,14 +76,119 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup void SelectFiles_PageLeave(object sender, PageChangedArgs args) { + m_settings["Files:Sizes"] = m_sizes; + if (args.Direction == PageChangedDirection.Back) return; if (DocumentsRadio.Checked) { - MessageBox.Show(this, "This feature is not ready. Please manually point out the folder to back up.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); - args.Cancel = true; - return; + List folders = new List(); + List exfolders = new List(); + if (IncludeDocuments.Checked) + folders.Add(m_myDocuments.Substring(1)); + else + exfolders.Add(m_myDocuments.Substring(1)); + + if (IncludeImages.Checked) + folders.Add(m_myPictures.Substring(1)); + else + exfolders.Add(m_myPictures.Substring(1)); + + if (IncludeMusic.Checked) + folders.Add(m_myMusic.Substring(1)); + else + exfolders.Add(m_myMusic.Substring(1)); + + if (IncludeDesktop.Checked) + folders.Add(m_desktop.Substring(1)); + else + exfolders.Add(m_desktop.Substring(1)); + + if (IncludeSettings.Checked) + folders.Add(m_appData.Substring(1)); + else + exfolders.Add(m_appData.Substring(1)); + + if (folders.Count == 0) + { + MessageBox.Show(this, "You have not included any files.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); + args.Cancel = true; + return; + } + + //Find the most common root + string basefolder = folders[0]; + bool hasCommonParent = false; + + foreach (string f in folders) + if (basefolder.StartsWith(f)) + basefolder = f; + else if (!f.StartsWith(basefolder)) + { + string[] p1 = basefolder.Split(System.IO.Path.DirectorySeparatorChar); + string[] p2 = f.Split(System.IO.Path.DirectorySeparatorChar); + + int ix = 0; + while (p1.Length > ix && p2.Length > ix && p1[ix] == p2[ix]) + ix++; + + if (ix == 0) + { + MessageBox.Show(this, "Due to your machine setup, it is not possible to backup\nthe selected folders in the same backup.\nTry unchecking some items, and create more than one backup.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); + args.Cancel = true; + return; + } + + hasCommonParent = true; + basefolder = Library.Core.Utility.AppendDirSeperator(string.Join(System.IO.Path.DirectorySeparatorChar.ToString(), p1, 0, ix)); + } + + m_schedule.Tasks[0].SourcePath = basefolder; + + List filters = new List(); + + //Exclude everything if they have a non-included parent + if (hasCommonParent) + { + TaskFilter tf = m_schedule.DataParent.Add(); + tf.Include = false; + tf.Filter = Library.Core.FilenameFilter.ConvertGlobbingToRegExp(basefolder + "*"); + filters.Add(tf); + } + + //Include selected folders + foreach (string f in folders) + { + TaskFilter tfx = m_schedule.DataParent.Add(); + tfx.Include = true; + tfx.Filter = Library.Core.FilenameFilter.ConvertGlobbingToRegExp(f + "*"); + filters.Add(tfx); + + //Exclude subfolders + foreach (string s in exfolders) + if (s.StartsWith(f) && (basefolder == s || s.StartsWith(basefolder))) + { + TaskFilter tfp = m_schedule.DataParent.Add(); + tfp.Include = false; + tfp.Filter = Library.Core.FilenameFilter.ConvertGlobbingToRegExp(s + "*"); + filters.Add(tfp); + } + } + + List extras = new List(); + string key = Library.Core.FilenameFilter.ConvertGlobbingToRegExp(basefolder); + foreach(TaskFilter tf in m_schedule.Tasks[0].Filters) + if (!tf.Filter.StartsWith(key)) + extras.Add(tf); + + if (filters.Count < 2) + m_schedule.Tasks[0].SortedFilters = extras.ToArray(); + else + { + filters.AddRange(extras); + m_schedule.Tasks[0].SortedFilters = filters.ToArray(); + } } else { @@ -77,13 +198,13 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup args.Cancel = true; return; } + + m_schedule.Tasks[0].SourcePath = TargetFolder.Text; } if (m_calculator != null) m_calculator.ClearQueue(true); - m_schedule.Path = m_schedule.Tasks[0].SourcePath; - args.NextPage = new SelectBackend(); } @@ -91,10 +212,46 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup { m_schedule = (Schedule)m_settings["Schedule"]; + if (m_settings.ContainsKey("Files:Sizes")) + m_sizes = (Dictionary)m_settings["Files:Sizes"]; + + if (!m_valuesAutoLoaded) { - FolderRadio.Checked = true; - TargetFolder.Text = m_schedule.Path; + List filters = new List(); + foreach (TaskFilter tf in m_schedule.Tasks[0].Filters) + if (tf.Include && tf.Filter.StartsWith(Library.Core.FilenameFilter.ConvertGlobbingToRegExp(m_schedule.Tasks[0].SourcePath))) + filters.Add(tf.Filter); + + if (filters.Count == 0) + TargetFolder.Text = m_schedule.Path; + + List included = new List(); + foreach (string s in m_specialFolders) + if (filters.Contains(Library.Core.FilenameFilter.ConvertGlobbingToRegExp(s + "*"))) + included.Add(s); + + if (included.Count == 0) + { + FolderRadio.Checked = true; + TargetFolder.Text = m_schedule.Path; + } + else + { + DocumentsRadio.Checked = true; + IncludeDocuments.Checked = included.Contains(m_myDocuments.Substring(1)); + IncludeImages.Checked = included.Contains(m_myPictures.Substring(1)); + IncludeMusic.Checked = included.Contains(m_myMusic.Substring(1)); + IncludeDesktop.Checked = included.Contains(m_desktop.Substring(1)); + IncludeSettings.Checked = included.Contains(m_appData.Substring(1)); + + if (!(IncludeDocuments.Checked || IncludeMusic.Checked || IncludeImages.Checked || IncludeDesktop.Checked || IncludeSettings.Checked)) + { + FolderRadio.Checked = true; + TargetFolder.Text = m_schedule.Path; + } + } + } if (FolderRadio.Checked) @@ -107,6 +264,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup { if (m_calculator == null) { + totalSize.Text = "Calculating size ..."; m_calculator = new WorkerThread(CalculateFolderSize); m_calculator.CompletedWork += new EventHandler(m_calculator_CompletedWork); } @@ -114,19 +272,36 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup void m_calculator_CompletedWork(object sender, EventArgs e) { + if (this.InvokeRequired) this.Invoke(new EventHandler(m_calculator_CompletedWork), sender, e); else { + if (m_calculator == null) + return; + long s = 0; if (DocumentsRadio.Checked) - foreach (long l in m_sizes.Values) - s += l; + { + if (m_sizes.ContainsKey(m_myDocuments) && IncludeDocuments.Checked) + s += m_sizes[m_myDocuments]; + if (m_sizes.ContainsKey(m_myMusic) && IncludeMusic.Checked) + s += m_sizes[m_myMusic]; + if (m_sizes.ContainsKey(m_myPictures) && IncludeImages.Checked) + s += m_sizes[m_myPictures]; + if (m_sizes.ContainsKey(m_appData) && IncludeSettings.Checked) + s += m_sizes[m_appData]; + if (m_sizes.ContainsKey(m_desktop) && IncludeDesktop.Checked) + s += m_sizes[m_desktop]; + } else s = m_sizes.ContainsKey(TargetFolder.Text) ? m_sizes[TargetFolder.Text] : 0; - - totalSize.Text = string.Format("The selected items take up {0} of space", Library.Core.Utility.FormatSizeString(s)); + + if (m_calculator.CurrentTasks.Count == 0 && !m_calculator.Active) + totalSize.Text = string.Format("The selected items take up {0} of space", Library.Core.Utility.FormatSizeString(s)); + else + totalSize.Text = string.Format("Calculating ... (using more than {0} of space)", Library.Core.Utility.FormatSizeString(s)); if (m_sizes.ContainsKey(m_myMusic)) myMusicSize.Text = Library.Core.Utility.FormatSizeString(m_sizes[m_myMusic]); @@ -136,10 +311,8 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup desktopSize.Text = Library.Core.Utility.FormatSizeString(m_sizes[m_desktop]); if (m_sizes.ContainsKey(m_appData)) appdataSize.Text = Library.Core.Utility.FormatSizeString(m_sizes[m_appData]); - - //TODO: Do not count myMusic and myPictures, if they are inside myDocuments if (m_sizes.ContainsKey(m_myDocuments)) - myMusicSize.Text = Library.Core.Utility.FormatSizeString(m_sizes[m_myDocuments]); + myDocumentsSize.Text = Library.Core.Utility.FormatSizeString(m_sizes[m_myDocuments]); if (m_sizes.ContainsKey(TargetFolder.Text)) customSize.Text = Library.Core.Utility.FormatSizeString(m_sizes[TargetFolder.Text]); @@ -161,6 +334,8 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup m_calculator.AddTask(m_appData); if (!m_sizes.ContainsKey(m_myDocuments)) m_calculator.AddTask(m_myDocuments); + + m_calculator_CompletedWork(null, null); } } @@ -179,6 +354,8 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup FolderGroup.Enabled = FolderRadio.Checked; if (DocumentsRadio.Checked) Rescan(); + else + TargetFolder_Leave(sender, e); } private void CalculateFolderSize(string folder) @@ -188,46 +365,60 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup return; long size = 0; + + Library.Core.FilenameFilter fnf = null; + string folderkey = folder; + + //Special folders, extended logic + if (folder.StartsWith("!")) + { + folder = folder.Substring(1); + List> filters = new List>(); + + filters.Add(new KeyValuePair(true, Library.Core.FilenameFilter.ConvertGlobbingToRegExp(folder + "*"))); + + foreach (string s in m_specialFolders) + if (s != folder && s.StartsWith(folder)) + filters.Add(new KeyValuePair(false, Library.Core.FilenameFilter.ConvertGlobbingToRegExp(s + "*"))); + + + if (filters.Count > 1) + fnf = new Duplicati.Library.Core.FilenameFilter(filters); + } + if (System.IO.Directory.Exists(folder)) { - Queue work = new Queue(); - work.Enqueue(folder); try { - while(work.Count > 0) - try - { - string f = work.Dequeue(); - foreach (string s in System.IO.Directory.GetDirectories(f)) - work.Enqueue(s); - foreach (string s in System.IO.Directory.GetFiles(f)) - try { size += new System.IO.FileInfo(s).Length; } - catch { } - } - catch - { - } - } - catch - { + foreach (string file in Duplicati.Library.Core.Utility.EnumerateFiles(folder, fnf)) + try { size += new System.IO.FileInfo(file).Length; } + catch { } } + catch { } } lock (m_lock) - m_sizes[folder] = size; + m_sizes[folderkey] = size; } private void TargetFolder_Leave(object sender, EventArgs e) { - lock(m_lock) + lock (m_lock) if (TargetFolder.Text.Trim().Length > 0 && !m_sizes.ContainsKey(TargetFolder.Text)) { StartCalculator(); m_calculator.ClearQueue(true); m_calculator.AddTask(TargetFolder.Text); + m_calculator_CompletedWork(null, null); + } + else if (TargetFolder.Text == "") + totalSize.Text = ""; + else if (m_sizes.ContainsKey(TargetFolder.Text)) + { + StartCalculator(); + m_calculator.ClearQueue(true); + m_calculator_CompletedWork(null, null); } - - m_schedule.Tasks[0].SourcePath = TargetFolder.Text; } private void SelectFiles_VisibleChanged(object sender, EventArgs e) diff --git a/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.resx b/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.resx index 89c3d872b..6279282b3 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.resx +++ b/Duplicati/GUI/Wizard pages/Add backup/SelectFiles.resx @@ -120,4 +120,7 @@ 17, 17 + + 168, 17 + \ No newline at end of file diff --git a/Duplicati/GUI/Wizard pages/Add backup/SelectName.cs b/Duplicati/GUI/Wizard pages/Add backup/SelectName.cs index cb46def85..eccbe9561 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/SelectName.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/SelectName.cs @@ -95,6 +95,9 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup if (m_schedule != null && m_schedule.ExistsInDb) BackupName.Text = m_schedule.Name; + + try { BackupName.Focus(); } + catch { } } private void button1_Click(object sender, EventArgs e) diff --git a/Duplicati/GUI/Wizard pages/Add backup/SelectWhen.cs b/Duplicati/GUI/Wizard pages/Add backup/SelectWhen.cs index d3cae0f97..9f5042b4f 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/SelectWhen.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/SelectWhen.cs @@ -103,6 +103,8 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup args.NextPage = new Wizard_pages.Add_backup.IncrementalSettings(); else if ((bool)m_settings["Advanced:Throttle"]) args.NextPage = new Wizard_pages.Add_backup.ThrottleOptions(); + else if ((bool)m_settings["Advanced:Filters"]) + args.NextPage = new Wizard_pages.Add_backup.FilterEditor(); else args.NextPage = new Wizard_pages.Add_backup.FinishedAdd(); } diff --git a/Duplicati/GUI/Wizard pages/Add backup/ThrottleOptions.cs b/Duplicati/GUI/Wizard pages/Add backup/ThrottleOptions.cs index 865c393a9..324a17f8d 100644 --- a/Duplicati/GUI/Wizard pages/Add backup/ThrottleOptions.cs +++ b/Duplicati/GUI/Wizard pages/Add backup/ThrottleOptions.cs @@ -42,7 +42,7 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup if (size != 0) { for (int i = 0; i < combo.Items.Count; i++) - if (size < Math.Pow(2, 10 * i + 1)) + if (size < Math.Pow(2, 10 * (i + 1))) { combo.SelectedIndex = i; number.Value = (int)(size / (long)Math.Pow(2, 10 * i)); @@ -94,7 +94,10 @@ namespace Duplicati.GUI.Wizard_pages.Add_backup m_schedule.VolumeSize = VolumeSizeLimitNumber.Value.ToString() + VolumeSizeLimitSuffix.Text; - args.NextPage = new FinishedAdd(); + if ((bool)m_settings["Advanced:Filters"]) + args.NextPage = new Wizard_pages.Add_backup.FilterEditor(); + else + args.NextPage = new FinishedAdd(); } diff --git a/Duplicati/GUI/Wizard pages/MainPage.cs b/Duplicati/GUI/Wizard pages/MainPage.cs index b35238ddc..6063fdfbd 100644 --- a/Duplicati/GUI/Wizard pages/MainPage.cs +++ b/Duplicati/GUI/Wizard pages/MainPage.cs @@ -30,17 +30,6 @@ namespace Duplicati.GUI.Wizard_pages { public partial class MainPage : WizardControl { - public enum Action - { - Unknown, - Add, - Edit, - Delete, - Restore, - Backup, - Rearrange - } - public MainPage() : base("Welcome to the Duplicati Wizard", "Please select the action you want to perform below") { @@ -109,26 +98,6 @@ namespace Duplicati.GUI.Wizard_pages UpdateButtonState(); } - public Action SelectedAction - { - get - { - if (CreateNew.Checked) - return Action.Add; - else if (Edit.Checked) - return Action.Edit; - else if (Restore.Checked) - return Action.Restore; - else if (Backup.Checked) - return Action.Backup; - else if (Remove.Checked) - return Action.Delete; - else - return Action.Unknown; - - } - } - private void ShowAdvanced_Click(object sender, EventArgs e) { Program.ShowSetup(); diff --git a/Duplicati/GUI/Wizard pages/SelectBackend.cs b/Duplicati/GUI/Wizard pages/SelectBackend.cs index 79c28af99..f5dc95adc 100644 --- a/Duplicati/GUI/Wizard pages/SelectBackend.cs +++ b/Duplicati/GUI/Wizard pages/SelectBackend.cs @@ -104,8 +104,32 @@ namespace Duplicati.GUI.Wizard_pages void SelectBackend_PageEnter(object sender, PageChangedArgs args) { m_task = ((Schedule)m_settings["Schedule"]).Tasks[0]; + + if (!m_valuesAutoLoaded) + { + switch (m_task.Service) + { + case "file": + File.Checked = true; + break; + case "ftp": + FTP.Checked = true; + break; + case "ssh": + SSH.Checked = true; + break; + case "webdav": + WebDAV.Checked = true; + break; + case "s3": + S3.Checked = true; + break; + } + } + Item_CheckChanged(null, null); + } private void Item_CheckChanged(object sender, EventArgs e) diff --git a/Duplicati/GUI/Wizard pages/SelectBackup.cs b/Duplicati/GUI/Wizard pages/SelectBackup.cs index 628996480..059dbe60f 100644 --- a/Duplicati/GUI/Wizard pages/SelectBackup.cs +++ b/Duplicati/GUI/Wizard pages/SelectBackup.cs @@ -32,8 +32,6 @@ namespace Duplicati.GUI.Wizard_pages { public partial class SelectBackup : WizardControl { - private MainPage.Action m_selectType; - public SelectBackup() : base ("", "") { @@ -41,31 +39,45 @@ namespace Duplicati.GUI.Wizard_pages BackupList.treeView.HideSelection = false; base.PageLeave += new PageChangeHandler(SelectBackup_PageLeave); + base.PageEnter += new PageChangeHandler(SelectBackup_PageEnter); + } + + void SelectBackup_PageEnter(object sender, PageChangedArgs args) + { + BackupList.Setup((IDataFetcher)m_settings["Connection"], false, false); + if (m_settings.ContainsKey("Schedule")) + BackupList.SelectedBackup = (Schedule)m_settings["Schedule"]; } void SelectBackup_PageLeave(object sender, PageChangedArgs args) { + if (args.Direction == PageChangedDirection.Back) + return; + if (BackupList.SelectedBackup == null) { MessageBox.Show(this, "You must select a backup before you can continue", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); args.Cancel = true; return; } + + m_settings["Schedule"] = BackupList.SelectedBackup; + args.NextPage = new Add_backup.SelectName(); } public override string Title { get { - switch (m_selectType) + switch ((string)m_settings["Main:Action"]) { - case MainPage.Action.Backup: + case "backup": return "Select the backup to run now"; - case MainPage.Action.Delete: + case "delete": return "Select the backup to remove"; - case MainPage.Action.Edit: + case "edit": return "Select the backup to modify"; - case MainPage.Action.Restore: + case "restore": return "Select the backup to restore"; default: return "Unknown action"; @@ -78,34 +90,20 @@ namespace Duplicati.GUI.Wizard_pages { get { - switch (m_selectType) + switch ((string)m_settings["Main:Action"]) { - case MainPage.Action.Backup: + case "backup": return "In the list below, select the backup you want to run immediately"; - case MainPage.Action.Delete: + case "delete": return "In the list below, select the backup you want to delete"; - case MainPage.Action.Edit: + case "edit": return "In the list below, select the backup you want to modify"; - case MainPage.Action.Restore: + case "restore": return "In the list below, select the backup you want to restore"; default: return "Unknown action"; } } } - - public void Setup(IDataFetcher connection, MainPage.Action selectType) - { - m_selectType = selectType; - BackupList.Setup(connection, false, false); - } - - public MainPage.Action SelectType - { - get { return m_selectType; } - set { m_selectType = value; } - } - - public Schedule SelectedBackup { get { return BackupList.SelectedBackup; } } } } diff --git a/Duplicati/GUI/WizardHandler.cs b/Duplicati/GUI/WizardHandler.cs index 41ddf4692..984c45bdb 100644 --- a/Duplicati/GUI/WizardHandler.cs +++ b/Duplicati/GUI/WizardHandler.cs @@ -100,9 +100,8 @@ namespace Duplicati.GUI if (m_form.CurrentPage is Wizard_pages.Add_backup.FinishedAdd) { - //TODO: Implement CommitRecursive - m_connection.CommitAll(); - Program.DataConnection.CommitAll(); + Schedule schedule = (Schedule)m_form.Settings["Schedule"]; + ((IDataFetcherCached)schedule.DataParent).CommitRecursiveWithRelations(schedule); if ((m_form.CurrentPage as Duplicati.GUI.Wizard_pages.Add_backup.FinishedAdd).RunNow.Checked) if (m_addedItem != null) diff --git a/Duplicati/GUI/WorkerThread.cs b/Duplicati/GUI/WorkerThread.cs index 513d266a6..f4d4d661e 100644 --- a/Duplicati/GUI/WorkerThread.cs +++ b/Duplicati/GUI/WorkerThread.cs @@ -32,6 +32,8 @@ namespace Duplicati.GUI private volatile bool m_terminate; private Thread m_thread; + private volatile bool m_active; + private Tx m_currentTask; private ProcessItemDelegate m_delegate; @@ -65,6 +67,14 @@ namespace Duplicati.GUI } + /// + /// Gets a value indicating if the worker is running + /// + public bool Active + { + get { return m_active; } + } + /// /// Adds a task to the queue /// @@ -161,7 +171,9 @@ namespace Duplicati.GUI if (StartingWork != null) StartingWork(this, null); + m_active = true; m_delegate(m_currentTask); + m_active = false; if (CompletedWork != null) CompletedWork(this, null); diff --git a/Duplicati/Library/Core/FilenameFilter.cs b/Duplicati/Library/Core/FilenameFilter.cs index 040e9ced2..a55c4f588 100644 --- a/Duplicati/Library/Core/FilenameFilter.cs +++ b/Duplicati/Library/Core/FilenameFilter.cs @@ -148,7 +148,7 @@ namespace Duplicati.Library.Core /// /// /// - private static string ConvertGlobbingToRegExp(string globexp) + public static string ConvertGlobbingToRegExp(string globexp) { //First escape all special characters globexp = Regex.Replace(globexp, BADCHARS, "\\$&"); diff --git a/WizardForm/Dialog.Designer.cs b/WizardForm/Dialog.Designer.cs index 40c6bc40f..f2b1aa97f 100644 --- a/WizardForm/Dialog.Designer.cs +++ b/WizardForm/Dialog.Designer.cs @@ -132,6 +132,7 @@ namespace System.Windows.Forms.Wizard // // Dialog // + this.AcceptButton = this._NextButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this._CancelButton; diff --git a/WizardForm/Dialog.cs b/WizardForm/Dialog.cs index ae0ea3b5c..0514d8765 100644 --- a/WizardForm/Dialog.cs +++ b/WizardForm/Dialog.cs @@ -34,6 +34,10 @@ namespace System.Windows.Forms.Wizard private string m_title; private IWizardControl m_currentPage; private bool m_isLastPage = false; + private Dictionary m_settings; + + //The path the user has chosen + private Stack m_visited; public event CancelEventHandler Finished; public event CancelEventHandler Cancelled; @@ -64,6 +68,8 @@ namespace System.Windows.Forms.Wizard InitializeComponent(); m_pages = new List(); m_defaultImage = null; + m_settings = new Dictionary(); + m_visited = new Stack(); } public virtual string Title @@ -83,6 +89,8 @@ namespace System.Windows.Forms.Wizard get { return m_pages; } } + public virtual Dictionary Settings { get { return m_settings; } } + public virtual IWizardControl CurrentPage { get { return m_currentPage; } @@ -95,15 +103,15 @@ namespace System.Windows.Forms.Wizard public virtual void UpdateButtons() { - if (Pages.Count == 0) + /*if (Pages.Count == 0) { _NextButton.Enabled = false; _BackButton.Enabled = false; return; - } + }*/ _NextButton.Enabled = true; - _BackButton.Enabled = m_currentPage != Pages[0]; + _BackButton.Enabled = m_visited.Count > 0; if (m_isLastPage) _NextButton.Text = "Finish"; @@ -113,12 +121,18 @@ namespace System.Windows.Forms.Wizard public virtual void UpdateDisplay() { - UpdateButtons(); DisplayPage(CurrentPage); + UpdateButtons(); } protected virtual void DisplayPage(IWizardControl page) { + PageChangedArgs args = new PageChangedArgs(this, this.Pages.IndexOf(page) == this.Pages.Count - 1, PageChangedDirection.Next); + + page.Enter(this, args); + if (page.Control as IControl != null) + (page.Control as IControl).Displayed(this); + InfoPanel.Visible = !page.FullSize; TitleLabel.Text = page.Title; InfoLabel.Text = page.HelpText; @@ -126,24 +140,21 @@ namespace System.Windows.Forms.Wizard ContentPanel.Controls.Clear(); ContentPanel.Controls.Add(page.Control); page.Control.Dock = DockStyle.Fill; - UpdateButtons(); + m_isLastPage = args.TreatAsLast; - page.Enter(this); - if (page.Control as IControl != null) - (page.Control as IControl).Displayed(this); + UpdateButtons(); } private void BackBtn_Click(object sender, EventArgs e) { - PageChangedArgs args = new PageChangedArgs(); - args.Cancel = false; - args.NextPage = null; - int pos = Pages.IndexOf(CurrentPage); - if (pos > 0) - args.NextPage = Pages[pos - 1]; - args.TreatAsLast = false; - args.Direction = PageChangedDirection.Back; + PageChangedArgs args = new PageChangedArgs(this, false, PageChangedDirection.Back); + if (m_visited.Count > 0) + args.NextPage = m_visited.Pop(); + + if (this.CurrentPage != null) + this.CurrentPage.Leave(this, args); + if (BackPressed != null) BackPressed(this, args); @@ -156,11 +167,18 @@ namespace System.Windows.Forms.Wizard private void NextBtn_Click(object sender, EventArgs e) { + IWizardControl nextpage = null; + int pos = Pages.IndexOf(CurrentPage); + if (pos >= 0 && pos < Pages.Count - 1) + nextpage = Pages[pos + 1]; + + PageChangedArgs args = new PageChangedArgs(this, Pages.IndexOf(nextpage) == Pages.Count - 1 && Pages.Count != 0, PageChangedDirection.Next); + args.NextPage = nextpage; + if (m_currentPage != null) { - bool cancel = false; - m_currentPage.Leave(this, ref cancel); - if (cancel) + m_currentPage.Leave(this, args); + if (args.Cancel) return; } @@ -180,23 +198,16 @@ namespace System.Windows.Forms.Wizard return; } - PageChangedArgs args = new PageChangedArgs(); - args.Cancel = false; - args.Direction = PageChangedDirection.Next; - args.NextPage = null; - - int pos = Pages.IndexOf(CurrentPage); - if (pos >= 0) - args.NextPage = Pages[pos + 1]; - args.TreatAsLast = Pages.IndexOf(args.NextPage) == Pages.Count - 1; - if (NextPressed != null) NextPressed(this, args); if (args.Cancel || args.NextPage == null) return; + if (CurrentPage != null) + m_visited.Push(CurrentPage); m_isLastPage = args.TreatAsLast; CurrentPage = args.NextPage; + UpdateButtons(); } private void CancelBtn_Click(object sender, EventArgs e) @@ -212,7 +223,6 @@ namespace System.Windows.Forms.Wizard this.Close(); } - #region IWizardForm Members public Button NextButton diff --git a/WizardForm/IWizardControl.cs b/WizardForm/IWizardControl.cs index 729a713df..662f0f60b 100644 --- a/WizardForm/IWizardControl.cs +++ b/WizardForm/IWizardControl.cs @@ -31,7 +31,7 @@ namespace System.Windows.Forms.Wizard string HelpText { get; } Image Image { get; } bool FullSize { get; } - void Enter(IWizardForm owner); - void Leave(IWizardForm owner, ref bool cancel); + void Enter(IWizardForm owner, PageChangedArgs args); + void Leave(IWizardForm owner, PageChangedArgs args); } } diff --git a/WizardForm/IWizardForm.cs b/WizardForm/IWizardForm.cs index add714d2e..1d230bcd9 100644 --- a/WizardForm/IWizardForm.cs +++ b/WizardForm/IWizardForm.cs @@ -33,9 +33,20 @@ namespace System.Windows.Forms.Wizard public class PageChangedArgs : CancelEventArgs { + public PageChangedArgs(IWizardForm owner, bool treatAsLast, PageChangedDirection direction) + : base() + { + this.Owner = owner; + this.Settings = owner.Settings; + this.Direction = direction; + this.TreatAsLast = treatAsLast; + } + public IWizardControl NextPage; public bool TreatAsLast; public PageChangedDirection Direction; + public Dictionary Settings; + public IWizardForm Owner; } @@ -59,6 +70,7 @@ namespace System.Windows.Forms.Wizard Image DefaultImage { get; set; } void UpdateButtons(); void UpdateDisplay(); + Dictionary Settings { get; } event PageChangeHandler NextPressed; event PageChangeHandler BackPressed; diff --git a/WizardForm/StartPage.cs b/WizardForm/StartPage.cs index 58df16951..598dd8307 100644 --- a/WizardForm/StartPage.cs +++ b/WizardForm/StartPage.cs @@ -68,12 +68,12 @@ namespace System.Windows.Forms.Wizard get { return true; } } - void IWizardControl.Enter(IWizardForm owner) + void IWizardControl.Enter(IWizardForm owner, PageChangedArgs args) { } - void IWizardControl.Leave(IWizardForm owner, ref bool cancel) + void IWizardControl.Leave(IWizardForm owner, PageChangedArgs args) { } diff --git a/WizardForm/WizardControl.Designer.cs b/WizardForm/WizardControl.Designer.cs new file mode 100644 index 000000000..e69de29bb diff --git a/WizardForm/WizardControl.cs b/WizardForm/WizardControl.cs index accf825a9..8284eed7d 100644 --- a/WizardForm/WizardControl.cs +++ b/WizardForm/WizardControl.cs @@ -24,27 +24,39 @@ using System.Drawing; namespace System.Windows.Forms.Wizard { - public class WizardControl : IWizardControl + public class WizardControl : UserControl, IWizardControl { - private Control m_control; - private string m_title; - private string m_helpText; - private Image m_image; - private bool m_fullSize; + protected string m_title; + protected string m_helpText; + protected Image m_image; + protected bool m_fullSize; - public WizardControl(Control control, string title, string helptext) - : this(control, title, helptext, null) + protected bool m_autoFillValues = true; + protected bool m_valuesAutoLoaded = false; + + protected IWizardForm m_owner; + protected Dictionary m_settings; + + protected event PageChangeHandler PageEnter; + protected event PageChangeHandler PageLeave; + + //Windows forms designer support + private WizardControl() { } - public WizardControl(Control control, string title, string helptext, Image image) - : this(control, title, helptext, image, false) + public WizardControl(string title, string helptext) + : this(title, helptext, null) { } - public WizardControl(Control control, string title, string helptext, Image image, bool fullsize) + public WizardControl(string title, string helptext, Image image) + : this(title, helptext, image, false) + { + } + + public WizardControl(string title, string helptext, Image image, bool fullsize) { - m_control = control; m_title = title; m_helpText = helptext; m_image = image; @@ -53,39 +65,175 @@ namespace System.Windows.Forms.Wizard #region IWizardControl Members - Control IWizardControl.Control + public virtual Control Control { - get { return m_control; } + get { return this; } } - string IWizardControl.Title + public virtual string Title { get { return m_title; } } - string IWizardControl.HelpText + public virtual string HelpText { get { return m_helpText; } } - Image IWizardControl.Image + public virtual Image Image { get { return m_image; } } - bool IWizardControl.FullSize + public virtual bool FullSize { get { return m_fullSize; } } - void IWizardControl.Enter(IWizardForm owner) + void IWizardControl.Enter(IWizardForm owner, PageChangedArgs args) { + m_owner = args.Owner; + m_settings = args.Settings; + + if (m_autoFillValues) + m_valuesAutoLoaded = LoadDialogSettings(); + + if (PageEnter != null) + PageEnter(owner, args); } - void IWizardControl.Leave(IWizardForm owner, ref bool cancel) + void IWizardControl.Leave(IWizardForm owner, PageChangedArgs args) { + if (PageLeave != null) + PageLeave(owner, args); + + if (m_autoFillValues) + SaveDialogSettings(); } #endregion + + protected Control[] FindAllControls() + { + Dictionary visited = new Dictionary(); + List items = new List(); + List result = new List(); + + foreach (Control c in this.Controls) + items.Add(c); + + while (items.Count > 0) + { + Control c = items[0]; + items.RemoveAt(0); + + if (visited.ContainsKey(c)) + continue; + else + visited.Add(c, null); + + //Filter out display items + if (!(c is Label || c is Button || c is GroupBox || c is Panel)) + result.Add(c); + + foreach (Control cx in c.Controls) + items.Add(cx); + } + + return result.ToArray(); + } + + /// + /// Loads previously saved settings + /// + /// True if there were settings loaded, false otherwise. Use this flag to detect if the control should get default values. + protected virtual bool LoadDialogSettings() + { + string prefix = this.GetType().FullName + "."; + bool anyloaded = false; + + foreach(Control c in FindAllControls()) + { + if (m_settings.ContainsKey(prefix + c.Name)) + { + anyloaded = true; + + if (c is CheckBox) + ((CheckBox)c).Checked = (bool)m_settings[prefix + c.Name]; + else if (c is TextBox) + c.Text = (string)m_settings[prefix + c.Name]; + else if (c is ComboBox) + { + if (((ComboBox)c).DropDownStyle == ComboBoxStyle.DropDownList) + ((ComboBox)c).SelectedIndex = (int)m_settings[prefix + c.Name]; + else + c.Text = (string)m_settings[prefix + c.Name]; + } + else if (c is RadioButton) + ((RadioButton)c).Checked = (bool)m_settings[prefix + c.Name]; + else if (c is NumericUpDown) + ((NumericUpDown)c).Value = (decimal)m_settings[prefix + c.Name]; + else if (c is DateTimePicker) + ((DateTimePicker)c).Value = (DateTime)m_settings[prefix + c.Name]; + else + { + //Default to "Value" if it exists, otherwise use "Text" + System.Reflection.PropertyInfo pi = c.GetType().GetProperty("Value"); + if (pi == null) + c.Text = (string)m_settings[prefix + c.Name]; + else + pi.SetValue(c, m_settings[prefix + c.Name], null); + } + } + } + + return anyloaded; + } + + protected virtual void SaveDialogSettings() + { + string prefix = this.GetType().FullName + "."; + + foreach (Control c in FindAllControls()) + if (c is CheckBox) + m_settings[prefix + c.Name] = ((CheckBox)c).Checked; + else if (c is TextBox) + m_settings[prefix + c.Name] = c.Text; + else if (c is ComboBox) + { + if (((ComboBox)c).DropDownStyle == ComboBoxStyle.DropDownList) + m_settings[prefix + c.Name] = ((ComboBox)c).SelectedIndex; + else + m_settings[prefix + c.Name] = c.Text; + } + else if (c is RadioButton) + m_settings[prefix + c.Name] = ((RadioButton)c).Checked; + else if (c is NumericUpDown) + m_settings[prefix + c.Name] = ((NumericUpDown)c).Value; + else if (c is DateTimePicker) + m_settings[prefix + c.Name] = ((DateTimePicker)c).Value; + else + { + //Default to "Value" if it exists, otherwise use "Text" + System.Reflection.PropertyInfo pi = c.GetType().GetProperty("Value"); + if (pi == null) + m_settings[prefix + c.Name] = c.Text; + else + m_settings[prefix + c.Name] = pi.GetValue(c, null); + + } + } + + private void InitializeComponent() + { + this.SuspendLayout(); + // + // WizardControl + // + this.Name = "WizardControl"; + this.Size = new System.Drawing.Size(506, 242); + this.ResumeLayout(false); + + } } } diff --git a/WizardForm/WizardControl.resx b/WizardForm/WizardControl.resx new file mode 100644 index 000000000..ff31a6db5 --- /dev/null +++ b/WizardForm/WizardControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/WizardForm/WizardForm.csproj b/WizardForm/WizardForm.csproj index 9a8af4a34..414799541 100644 --- a/WizardForm/WizardForm.csproj +++ b/WizardForm/WizardForm.csproj @@ -53,7 +53,12 @@ StartPage.cs - + + UserControl + + + WizardControl.cs + @@ -65,6 +70,10 @@ Designer StartPage.cs + + Designer + WizardControl.cs + diff --git a/thirdparty/LightDataModel/LightDatamodel.dll b/thirdparty/LightDataModel/LightDatamodel.dll index 08fec021d46895ee8d565bfe9f51a07e250fefe3..41807e2e507f67c2addcb2bfa6313234efa4a5f5 100644 GIT binary patch literal 118784 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 literal 114688 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 I0cZ#S02OYO-v9sr