From e95ddfbe9f14e8f41693b7f367977b40384d61d7 Mon Sep 17 00:00:00 2001 From: FuketsuBaka Date: Sun, 25 Nov 2018 16:57:34 +0700 Subject: [PATCH] v1.0.2 Release --- ClearCache1C.sln | 14 +- ClearCache1C/1C_120.ico | Bin 59582 -> 0 bytes ClearCache1C/App.config | 2 +- ClearCache1C/Builds/Чистка кэша 1С v1.0.2.exe | Bin 0 -> 165888 bytes ClearCache1C/ClearCache1C.csproj | 98 +-- ClearCache1C/Form1.Designer.cs | 191 ----- ClearCache1C/Form1.cs | 437 ---------- ClearCache1C/Form2.cs | 54 -- ClearCache1C/Form2.resx | 120 --- ...orm3.Designer.cs => FormAbout.Designer.cs} | 182 ++-- ClearCache1C/{Form3.cs => FormAbout.cs} | 16 +- ClearCache1C/{Form3.resx => FormAbout.resx} | 0 ClearCache1C/FormMain.Designer.cs | 460 ++++++++++ ClearCache1C/FormMain.cs | 805 ++++++++++++++++++ ClearCache1C/{Form1.resx => FormMain.resx} | 18 +- ...m2.Designer.cs => FormResults.Designer.cs} | 40 +- ClearCache1C/FormResults.cs | 44 + ClearCache1C/FormResults.resx | 418 +++++++++ ClearCache1C/Properties/AssemblyInfo.cs | 10 +- ClearCache1C/Properties/Resources.Designer.cs | 44 +- ClearCache1C/Properties/Resources.resx | 24 +- ClearCache1C/Properties/Settings.Designer.cs | 30 +- ClearCache1C/Properties/app.manifest | 70 -- .../{ai-full logo - clean.PNG => ai-logo.png} | Bin ClearCache1C/Resources/arrows_16_L.png | Bin 0 -> 3027 bytes ClearCache1C/Resources/arrows_16_R.png | Bin 0 -> 3027 bytes ClearCache1C/Resources/icon_deselect_16.PNG | Bin 415 -> 420 bytes ClearCache1C/Resources/icon_refresh_24.png | Bin 0 -> 4027 bytes ClearCache1C/Resources/x-mark_16.png | Bin 0 -> 628 bytes ...on-Design-Mini-File-delete.ico => app.ico} | Bin ClearCache1C/packages.config | 4 - 31 files changed, 1990 insertions(+), 1091 deletions(-) delete mode 100644 ClearCache1C/1C_120.ico create mode 100644 ClearCache1C/Builds/Чистка кэша 1С v1.0.2.exe delete mode 100644 ClearCache1C/Form1.Designer.cs delete mode 100644 ClearCache1C/Form1.cs delete mode 100644 ClearCache1C/Form2.cs delete mode 100644 ClearCache1C/Form2.resx rename ClearCache1C/{Form3.Designer.cs => FormAbout.Designer.cs} (52%) rename ClearCache1C/{Form3.cs => FormAbout.cs} (74%) rename ClearCache1C/{Form3.resx => FormAbout.resx} (100%) create mode 100644 ClearCache1C/FormMain.Designer.cs create mode 100644 ClearCache1C/FormMain.cs rename ClearCache1C/{Form1.resx => FormMain.resx} (96%) rename ClearCache1C/{Form2.Designer.cs => FormResults.Designer.cs} (52%) create mode 100644 ClearCache1C/FormResults.cs create mode 100644 ClearCache1C/FormResults.resx delete mode 100644 ClearCache1C/Properties/app.manifest rename ClearCache1C/Resources/{ai-full logo - clean.PNG => ai-logo.png} (100%) create mode 100644 ClearCache1C/Resources/arrows_16_L.png create mode 100644 ClearCache1C/Resources/arrows_16_R.png create mode 100644 ClearCache1C/Resources/icon_refresh_24.png create mode 100644 ClearCache1C/Resources/x-mark_16.png rename ClearCache1C/{Custom-Icon-Design-Mini-File-delete.ico => app.ico} (100%) delete mode 100644 ClearCache1C/packages.config diff --git a/ClearCache1C.sln b/ClearCache1C.sln index 13eafed..3f83b6c 100644 --- a/ClearCache1C.sln +++ b/ClearCache1C.sln @@ -3,9 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28306.52 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClearCache1C", "ClearCache1C\ClearCache1C.csproj", "{CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{083C60B7-90FE-4420-ACC6-6FCD7AF073A6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClearCache1C", "ClearCache1C\ClearCache1C.csproj", "{2D3EA215-F5C4-435B-922E-F985AF0065CB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -13,15 +11,15 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Release|Any CPU.Build.0 = Release|Any CPU + {2D3EA215-F5C4-435B-922E-F985AF0065CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2D3EA215-F5C4-435B-922E-F985AF0065CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D3EA215-F5C4-435B-922E-F985AF0065CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2D3EA215-F5C4-435B-922E-F985AF0065CB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {BB1D2E8F-9657-45EA-B581-2CE59F7A8F53} + SolutionGuid = {45BC8D5D-5D6C-4E12-8ECB-154D6FA6A2F8} EndGlobalSection EndGlobal diff --git a/ClearCache1C/1C_120.ico b/ClearCache1C/1C_120.ico deleted file mode 100644 index b2e0d359d7d660df80dd00e594ec407e205cdb84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59582 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 diff --git a/ClearCache1C/App.config b/ClearCache1C/App.config index 731f6de..8e15646 100644 --- a/ClearCache1C/App.config +++ b/ClearCache1C/App.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/ClearCache1C/Builds/Чистка кэша 1С v1.0.2.exe b/ClearCache1C/Builds/Чистка кэша 1С v1.0.2.exe new file mode 100644 index 0000000000000000000000000000000000000000..959b4a88f0eb31ddcabfbd84eaf7ecfb5eba1148 GIT binary patch literal 165888 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 Debug AnyCPU - {CA37FAA9-7C77-4C16-81A4-3BBD93F235A1} + {2D3EA215-F5C4-435B-922E-F985AF0065CB} WinExe ClearCache1C - Чистка кэша 1С - v4.6.1 + ClearCache1C + v4.5 512 - true true - false publish\ true Disk @@ -24,9 +22,9 @@ false true 0 - 1.0.1.0 + 1.0.0.%2a + false false - true true @@ -49,32 +47,11 @@ 4 - Custom-Icon-Design-Mini-File-delete.ico - - - 7AC4C8549D1C2C8FCD8E3679F8E21FC6168EC2BF - - - ClearCache1C_TemporaryKey.pfx - - - true - - - LocalIntranet - - - Properties\app.manifest - - - true + app.ico - - ..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll - @@ -86,34 +63,34 @@ - + Form - - Form1.cs + + FormAbout.cs - + Form - - Form2.cs + + FormMain.cs - + Form - - Form3.cs + + FormResults.cs - - Form1.cs + + FormAbout.cs - - Form2.cs + + FormMain.cs - - Form3.cs + + FormResults.cs ResXFileCodeGenerator @@ -125,9 +102,6 @@ Resources.resx True - - - SettingsSingleFileGenerator Settings.Designer.cs @@ -141,9 +115,6 @@ - - - @@ -151,23 +122,30 @@ - + + + + + + + + + + + + + + + + + - - False - Microsoft .NET Framework 4.6.1 %28x86 и x64%29 - true - False .NET Framework 3.5 SP1 false - - - - \ No newline at end of file diff --git a/ClearCache1C/Form1.Designer.cs b/ClearCache1C/Form1.Designer.cs deleted file mode 100644 index ab0731b..0000000 --- a/ClearCache1C/Form1.Designer.cs +++ /dev/null @@ -1,191 +0,0 @@ -namespace ClearCache1C -{ - partial class FormMain - { - /// - /// Обязательная переменная конструктора. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Освободить все используемые ресурсы. - /// - /// истинно, если управляемый ресурс должен быть удален; иначе ложно. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Код, автоматически созданный конструктором форм Windows - - /// - /// Требуемый метод для поддержки конструктора — не изменяйте - /// содержимое этого метода с помощью редактора кода. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); - this.ListBases = new System.Windows.Forms.CheckedListBox(); - this.btnClearCache = new System.Windows.Forms.Button(); - this.btnPurgeAll = new System.Windows.Forms.Button(); - this.InfoBox = new System.Windows.Forms.TextBox(); - this.btnExpand = new System.Windows.Forms.Button(); - this.btnSmartSelect = new System.Windows.Forms.Button(); - this.btnRemoveSelection = new System.Windows.Forms.Button(); - this.btnSelectAll = new System.Windows.Forms.Button(); - this.btnAbout = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // ListBases - // - this.ListBases.BackColor = System.Drawing.SystemColors.Window; - this.ListBases.Cursor = System.Windows.Forms.Cursors.Arrow; - this.ListBases.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.ListBases.FormattingEnabled = true; - this.ListBases.Location = new System.Drawing.Point(12, 42); - this.ListBases.Name = "ListBases"; - this.ListBases.RightToLeft = System.Windows.Forms.RightToLeft.No; - this.ListBases.Size = new System.Drawing.Size(400, 364); - this.ListBases.TabIndex = 0; - this.ListBases.SelectedIndexChanged += new System.EventHandler(this.ListBases_SelectedIndexChanged); - // - // btnClearCache - // - this.btnClearCache.Location = new System.Drawing.Point(12, 412); - this.btnClearCache.Name = "btnClearCache"; - this.btnClearCache.Size = new System.Drawing.Size(198, 37); - this.btnClearCache.TabIndex = 1; - this.btnClearCache.Text = "Очистить кэш"; - this.btnClearCache.UseVisualStyleBackColor = true; - this.btnClearCache.Click += new System.EventHandler(this.ButtonClearCache_Click); - // - // btnPurgeAll - // - this.btnPurgeAll.Location = new System.Drawing.Point(214, 412); - this.btnPurgeAll.Name = "btnPurgeAll"; - this.btnPurgeAll.Size = new System.Drawing.Size(198, 37); - this.btnPurgeAll.TabIndex = 4; - this.btnPurgeAll.Text = "Удалить все"; - this.btnPurgeAll.UseVisualStyleBackColor = true; - this.btnPurgeAll.Click += new System.EventHandler(this.ButtonPurgeAll_Click); - // - // InfoBox - // - this.InfoBox.BackColor = System.Drawing.SystemColors.Info; - this.InfoBox.Cursor = System.Windows.Forms.Cursors.IBeam; - this.InfoBox.Location = new System.Drawing.Point(445, 12); - this.InfoBox.Multiline = true; - this.InfoBox.Name = "InfoBox"; - this.InfoBox.ReadOnly = true; - this.InfoBox.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.InfoBox.Size = new System.Drawing.Size(400, 437); - this.InfoBox.TabIndex = 6; - this.InfoBox.WordWrap = false; - // - // btnExpand - // - this.btnExpand.FlatAppearance.BorderSize = 0; - this.btnExpand.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnExpand.Location = new System.Drawing.Point(418, 42); - this.btnExpand.Name = "btnExpand"; - this.btnExpand.Size = new System.Drawing.Size(21, 364); - this.btnExpand.TabIndex = 7; - this.btnExpand.Text = ">\r\n>\r\n>"; - this.btnExpand.UseVisualStyleBackColor = true; - this.btnExpand.Click += new System.EventHandler(this.ButtonExpand_Click); - // - // btnSmartSelect - // - this.btnSmartSelect.Image = global::ClearCache1C.Properties.Resources.icon_smart_select_16; - this.btnSmartSelect.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.btnSmartSelect.Location = new System.Drawing.Point(12, 12); - this.btnSmartSelect.Name = "btnSmartSelect"; - this.btnSmartSelect.Size = new System.Drawing.Size(130, 27); - this.btnSmartSelect.TabIndex = 8; - this.btnSmartSelect.Text = "Выделить с кэшем"; - this.btnSmartSelect.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.btnSmartSelect.UseVisualStyleBackColor = true; - this.btnSmartSelect.Click += new System.EventHandler(this.ButtonSmartSelect_Click); - // - // btnRemoveSelection - // - this.btnRemoveSelection.Image = ((System.Drawing.Image)(resources.GetObject("btnRemoveSelection.Image"))); - this.btnRemoveSelection.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.btnRemoveSelection.Location = new System.Drawing.Point(282, 12); - this.btnRemoveSelection.Name = "btnRemoveSelection"; - this.btnRemoveSelection.Size = new System.Drawing.Size(130, 27); - this.btnRemoveSelection.TabIndex = 3; - this.btnRemoveSelection.Text = "Снять выделение"; - this.btnRemoveSelection.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.btnRemoveSelection.UseVisualStyleBackColor = true; - this.btnRemoveSelection.Click += new System.EventHandler(this.ButtonRemoveSelection_Click); - // - // btnSelectAll - // - this.btnSelectAll.Image = ((System.Drawing.Image)(resources.GetObject("btnSelectAll.Image"))); - this.btnSelectAll.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.btnSelectAll.Location = new System.Drawing.Point(146, 12); - this.btnSelectAll.Name = "btnSelectAll"; - this.btnSelectAll.Size = new System.Drawing.Size(130, 27); - this.btnSelectAll.TabIndex = 2; - this.btnSelectAll.Text = "Выделить все"; - this.btnSelectAll.UseVisualStyleBackColor = true; - this.btnSelectAll.Click += new System.EventHandler(this.ButtonSelectAll_Click); - // - // btnAbout - // - this.btnAbout.Cursor = System.Windows.Forms.Cursors.Help; - this.btnAbout.FlatAppearance.BorderSize = 0; - this.btnAbout.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnAbout.Location = new System.Drawing.Point(418, 13); - this.btnAbout.Name = "btnAbout"; - this.btnAbout.Size = new System.Drawing.Size(21, 26); - this.btnAbout.TabIndex = 9; - this.btnAbout.Text = "?"; - this.btnAbout.UseVisualStyleBackColor = true; - this.btnAbout.Click += new System.EventHandler(this.ButtonAbout_Click); - // - // FormMain - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(854, 461); - this.Controls.Add(this.btnAbout); - this.Controls.Add(this.btnSmartSelect); - this.Controls.Add(this.btnExpand); - this.Controls.Add(this.InfoBox); - this.Controls.Add(this.btnPurgeAll); - this.Controls.Add(this.btnRemoveSelection); - this.Controls.Add(this.btnSelectAll); - this.Controls.Add(this.btnClearCache); - this.Controls.Add(this.ListBases); - this.Cursor = System.Windows.Forms.Cursors.Arrow; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "FormMain"; - this.Text = "Чистка кэша 1С"; - this.Load += new System.EventHandler(this.FormMain_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.Button btnClearCache; - private System.Windows.Forms.Button btnSelectAll; - private System.Windows.Forms.Button btnRemoveSelection; - private System.Windows.Forms.Button btnPurgeAll; - private System.Windows.Forms.TextBox InfoBox; - private System.Windows.Forms.Button btnExpand; - private System.Windows.Forms.CheckedListBox ListBases; - private System.Windows.Forms.Button btnSmartSelect; - private System.Windows.Forms.Button btnAbout; - } -} - diff --git a/ClearCache1C/Form1.cs b/ClearCache1C/Form1.cs deleted file mode 100644 index 211755e..0000000 --- a/ClearCache1C/Form1.cs +++ /dev/null @@ -1,437 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -// Using -using System.IO; - -namespace ClearCache1C -{ - public partial class FormMain : Form - { - public FormMain() - { - StartPosition = FormStartPosition.CenterScreen; - InitializeComponent(); - } - // ******************* Classes ******************* - public class BasesListItem - { - public string Name { get; set; } - public string Path { get; set; } - public string Id { get; set; } - public bool FolderExists { get; set; } - public float FolderSize { get; set; } - public float CacheSize { get; set; } - public List FolderPaths { get; set; } - public List CachePaths { get; set; } - public BasesListItem(string s_name, string s_path, string s_id, - bool s_folder_exists, - float s_folder_size, float s_cache_size, - List s_folder_paths, List s_cache_paths) - { - Name = s_name; - Path = s_path; - Id = s_id; - FolderExists = s_folder_exists; - FolderSize = s_folder_size; - CacheSize = s_cache_size; - FolderPaths = s_folder_paths; - CachePaths = s_cache_paths; - } - public override string ToString() { - string f_size = String.Format("{0,3}", CacheSize.ToString("0")); - return (CacheSize > 0 ? "[" + f_size + " Mb] ": "[------] ") - + Name; - } - } - // ******************* Events ******************* - private void FormMain_Load(object sender, EventArgs e) - { - RefreshListBases(); - ToggleInfoView(); - SetToolTips(); - } - // ****** LIST CONTROL BUTTONS - private void ButtonSmartSelect_Click(object sender, EventArgs e) - { - ModListBases(true, true); - } - private void ButtonSelectAll_Click(object sender, EventArgs e) - { - ModListBases(true, false); - } - private void ButtonRemoveSelection_Click(object sender, EventArgs e) - { - ModListBases(false, false); - } - private void ButtonExpand_Click(object sender, EventArgs e) - { - ToggleInfoView(); - } - private void ToggleInfoView() - { - if (Size.Width != 870) // is collapsed - { - Size = new Size(870, Size.Height); - btnExpand.Text = "<\r\n<\r\n<"; - InfoBox.Visible = true; - ShowSelectedInfo(); - } - else - { - int calc_width = btnExpand.Location.X + btnExpand.Size.Width + 22; - Size = new Size(calc_width, Size.Height); - btnExpand.Text = ">\r\n>\r\n>"; - InfoBox.Visible = false; - } - } - private void ButtonAbout_Click(object sender, EventArgs e) - { - FormAbout aboutForm = new FormAbout(); - aboutForm.ShowDialog(); - } - // ****** MAIN BUTTONS - private void ButtonClearCache_Click(object sender, EventArgs e) - { - if (ListBases.CheckedItems.Count == 0) - { - MessageBox.Show("Ничего не выбрано.", "Meh...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); - return; - } - ClearFolders(false); - RefreshListBases(); - ShowSelectedInfo(); - } - private void ButtonPurgeAll_Click(object sender, EventArgs e) - { - if (ListBases.CheckedItems.Count == 0) - { - MessageBox.Show("Ничего не выбрано.", "Meh...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); - return; - } - DialogResult dialogResult = MessageBox.Show("Это удалит все локальные настройки пользователя в выбранных базах. \r\nВы уверены, что хотите этого?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); - if (dialogResult == DialogResult.Yes) - { - ClearFolders(true); - RefreshListBases(); - ShowSelectedInfo(); - } - } - // ****** FOR DEBUG - private void ListBases_SelectedIndexChanged(object sender, EventArgs e) - { - ShowSelectedInfo(); - } - // ******************* MAIN ******************* - private void ClearFolders(bool purge) - { - CheckedListBox.CheckedItemCollection items = ListBases.CheckedItems; - - int successfully_deleted = 0; - int errors_on_delete = 0; - float total_size_deleted = 0.0f; - - List list_success = new List(); - List list_error = new List(); - List list_exceptions = new List(); - - for (int i = 0; i < items.Count; i++) - { - BasesListItem base_item = items[i] as BasesListItem; - (bool is_error, float deleted_size, List exceptions) = DeleteFoldersContent(purge ? base_item.FolderPaths : base_item.CachePaths); - if (!is_error) - { - successfully_deleted++; - list_success.Add(base_item.Name); - } - else - { - errors_on_delete++; - list_error.Add(base_item.Name); - list_exceptions.AddRange(exceptions); - } - total_size_deleted += deleted_size; - } - ShowResults(successfully_deleted, errors_on_delete, total_size_deleted, list_success, list_error, list_exceptions); - } - private void ShowResults(int successfully_deleted, int errors_on_delete, float total_size_deleted, - List list_success, List list_error, List list_exceptions) - { - FormResult resultForm = new FormResult(); - resultForm.SetInfoResult(successfully_deleted, errors_on_delete, total_size_deleted, - list_success, list_error, list_exceptions); - resultForm.ShowDialog(); - } - private (bool is_error, float deleted_size, List exceptions) DeleteFoldersContent(List ListPaths) - { - bool is_error = false; - float deleted_size = 0.0f; - List exceptions = new List(); - - foreach (string folder_path in ListPaths) - { - long folder_size = DirSize(new DirectoryInfo(folder_path)); - try - { - Directory.Delete(folder_path, true); - deleted_size += folder_size; - } - catch (Exception e) - { - is_error = true; - exceptions.Add(e.ToString()); - } - } - deleted_size = deleted_size / 1024 / 1024; - return (is_error, deleted_size, exceptions); - } - - // ******************* Added functions ******************* - private void ShowSelectedInfo() - { - if (!InfoBox.Visible) { return; } - InfoBox.ResetText(); - BasesListItem curItem = ListBases.SelectedItem as BasesListItem; - if (curItem is null) { return; } - /* - Console.WriteLine("Name: " + curItem.Name); - Console.WriteLine("ID: " + curItem.Id); - Console.WriteLine("Connect string: " + curItem.Path); - Console.WriteLine("Cache exists: " + curItem.FolderExists); - Console.WriteLine("Size total: " + curItem.FolderSize.ToString("0.00")); - Console.WriteLine("Size cache: " + curItem.CacheSize.ToString("0.00")); - Console.WriteLine("Root Folders: " + curItem.FolderPaths.Count); - Console.WriteLine("Cache Folders: " + curItem.CachePaths.Count); - */ - InfoBox.AppendText("--- Информация о базе ---"); - InfoBox.AppendText("\r\nИмя: " + curItem.Name); - InfoBox.AppendText("\r\nID: " + curItem.Id); - InfoBox.AppendText("\r\nСтрока подключения: " + curItem.Path); - - InfoBox.AppendText("\r\n"); - InfoBox.AppendText("\r\nКэш существует: " + ((curItem.CacheSize > 0) ? "Да" : "Нет")); - InfoBox.AppendText("\r\nРазмер кэша: " + curItem.CacheSize.ToString("0.00") + " Mb"); - InfoBox.AppendText("\r\nРазмер всего: " + curItem.FolderSize.ToString("0.00") + " Mb"); - - InfoBox.AppendText("\r\n"); - InfoBox.AppendText("\r\nКорневые каталоги: "); - foreach (string s in curItem.FolderPaths) - { - InfoBox.AppendText("\r\n > " + s); - } - InfoBox.AppendText("\r\n"); - - InfoBox.AppendText("\r\nКаталоги кэша: "); - foreach (string s in curItem.CachePaths) - { - InfoBox.AppendText("\r\n > " + s); - } - InfoBox.AppendText("\r\n"); - } - private void ModListBases(bool isChecked, bool onlyWithCache) - { - for (int i = 0; i < ListBases.Items.Count; i++) - { - if (onlyWithCache) - { - if ((ListBases.Items[i] as BasesListItem).CacheSize > 0) - { - ListBases.SetItemChecked(i, true); - } - else - { - ListBases.SetItemChecked(i, false); - } - } - else - { - ListBases.SetItemChecked(i, isChecked); - } - } - } - private void RefreshListBases() - { - this.ListBases.Items.Clear(); - - string base_path = @"%appdata%\1C\1CEStart\ibases.v8i"; - string[] lines = ReadFileContent(base_path); - if (lines == null) - { - MessageBox.Show("Can't find ibases.v8i file in provided location: " + base_path, "Error reading file!", - MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - - var bases_dict = GetBasesDictionary(lines); - foreach (string key in bases_dict.Keys) - { - var value = bases_dict[key]; - (bool s_folder_exists, - float s_folder_size, float s_cache_size, - List s_folder_paths, List s_cache_paths) = GetLocalFolderInfo(key); - ListBases.Items.Add(new BasesListItem(value.Name, value.Path, key, - s_folder_exists, - s_folder_size, s_cache_size, - s_folder_paths, s_cache_paths), false); - } - } - private (bool s_folder_exists, - float s_folder_size, float s_cache_size, - List s_folder_paths, List s_cache_paths) GetLocalFolderInfo(string key) - { - // Local path of cache is: - // %APPDATA%\1C\1cv8\$Id - // %LOCALAPPDATA%\1C\1cv8\$Id - // var cache_folders = ("Config", "ConfigSave", "SICache", "vrs-cache"); - - string base_path_local = @"%LOCALAPPDATA%\1C\1cv8\" + key; - string base_path_roaming = @"%APPDATA%\1C\1cv8\" + key; - - base_path_local = Environment.ExpandEnvironmentVariables(base_path_local); - base_path_roaming = Environment.ExpandEnvironmentVariables(base_path_roaming); - - float s_folder_size = 0.0f; - float s_cache_size = 0.0f; - - List s_folder_paths = new List(); - List s_cache_paths = new List(); - - bool s_folder_exists = (Directory.Exists(base_path_local) || Directory.Exists(base_path_roaming)) ? true : false; - if (s_folder_exists) - { - s_cache_paths = GetFoldersById(base_path_local, base_path_roaming); - if (s_cache_paths.Count > 0) - { - foreach (string s in s_cache_paths) - { - s_cache_size += DirSize(new DirectoryInfo(s)); - } - } - if (Directory.Exists(base_path_local)) - { - s_folder_size += DirSize(new DirectoryInfo(base_path_local)); - s_folder_paths.Add(base_path_local); - } - if (Directory.Exists(base_path_roaming)) - { - s_folder_size += DirSize(new DirectoryInfo(base_path_roaming)); - s_folder_paths.Add(base_path_roaming); - } - } - s_folder_size = s_folder_size / 1024 / 1024; // Mb - s_cache_size = s_cache_size / 1024 / 1024; // Mb - return (s_folder_exists, - s_folder_size, s_cache_size, - s_folder_paths, s_cache_paths); - } - private List GetFoldersById(string base_path_local, string base_path_roaming) - { - var found_folders = new List(); - if (Directory.Exists(base_path_local)) - { - found_folders.AddRange(Directory.GetDirectories(base_path_local, "Config", SearchOption.AllDirectories).ToList()); - found_folders.AddRange(Directory.GetDirectories(base_path_local, "ConfigSave", SearchOption.AllDirectories).ToList()); - found_folders.AddRange(Directory.GetDirectories(base_path_local, "SICache", SearchOption.AllDirectories).ToList()); - } - if (Directory.Exists(base_path_roaming)) - { - found_folders.AddRange(Directory.GetDirectories(base_path_roaming, "vrs-cache", SearchOption.AllDirectories).ToList()); - } - return found_folders; - } - private Dictionary GetBasesDictionary(string[] lines) - { - var bases_dict = new Dictionary(); - var (name, id, path) = ("", "", ""); - foreach (string line in lines) - { - /* ---------- EXAMPLE - [Торговля(Рабочая)] - Connect=Srvr="winserv";Ref="ut2014_work"; - ID=f8370086-654e-4807-b79b-3f51653c3699 - OrderInList = 0 - Folder=/Рабочие - OrderInTree = 0 - External=1 - ClientConnectionSpeed=Normal - App = Auto - WA=1 - Version=8.2 - DefaultApp=ThickClient - -------------------- */ - if (line.StartsWith("[")) // Start - { - name = line.Substring(1, line.Length - 2); - id = ""; - path = ""; - } - else if (line.StartsWith("Connect=")) // Connect string - { - path = line.Substring(8); - } - else if (line.StartsWith("ID=")) // ID string - { - id = line.Substring(3); - } - if (name != "" && path != "" && id != "") - { - bases_dict.Add(id, (name, path)); - name = ""; - id = ""; - path = ""; - } - } - return bases_dict; - } - private string[] ReadFileContent(string path_to_file) - { - string full_path_to_file = Environment.ExpandEnvironmentVariables(path_to_file); - if (!File.Exists(full_path_to_file)) - { - return null; - } - return System.IO.File.ReadAllLines(full_path_to_file); - } - private static long DirSize(DirectoryInfo d) - { - long size = 0; - // Add file sizes. - FileInfo[] fis = d.GetFiles(); - foreach (FileInfo fi in fis) - { - size += fi.Length; - } - // Add subdirectory sizes. - DirectoryInfo[] dis = d.GetDirectories(); - foreach (DirectoryInfo di in dis) - { - size += DirSize(di); - } - return size; - } - private void SetToolTips() - { - ToolTip toolTip = new ToolTip(); - - string ClearCache_ToolTip = "Для выбранных баз - удаляет только файлы кэша.\r\nПользовательские настройки сохраняются."; - string PurgeAll_ToolTip = "Для выбранных баз - удаляет все найденные в корневых каталогах файлы.\r\nПользовательские настройки будут удалены."; - string SmartSelect_ToolTip = "Выбрать только базы, в которых есть локальный кэш."; - string SelectAll_ToolTip = "Выбрать все базы в списке."; - string RemoveSelection_ToolTip = "Убрать выбор со всех баз в списке."; - string About_ToolTip = "О программе"; - - toolTip.SetToolTip(btnClearCache, ClearCache_ToolTip); - toolTip.SetToolTip(btnPurgeAll, PurgeAll_ToolTip); - toolTip.SetToolTip(btnSmartSelect, SmartSelect_ToolTip); - toolTip.SetToolTip(btnSelectAll, SelectAll_ToolTip); - toolTip.SetToolTip(btnRemoveSelection, RemoveSelection_ToolTip); - toolTip.SetToolTip(btnAbout, About_ToolTip); - } - } -} diff --git a/ClearCache1C/Form2.cs b/ClearCache1C/Form2.cs deleted file mode 100644 index 2fb8e64..0000000 --- a/ClearCache1C/Form2.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace ClearCache1C -{ - public partial class FormResult : Form - { - public FormResult() - { - StartPosition = FormStartPosition.CenterScreen; - InitializeComponent(); - } - - private void FormResult_Load(object sender, EventArgs e) - { - MaximizeBox = false; - MinimizeBox = false; - } - public void SetInfoResult(int successfully_deleted, int errors_on_delete, float total_size_deleted, - List list_success, List list_error, List list_exceptions) - { - InfoResult.ResetText(); - InfoResult.AppendText("--- Итоги ---"); - InfoResult.AppendText("\r\nВыполнено успешно: " + successfully_deleted); - InfoResult.AppendText("\r\nВыполнено с ошибками: " + errors_on_delete); - InfoResult.AppendText("\r\nВсего удалено: " + total_size_deleted.ToString("0.00") + " Mb"); - InfoResult.AppendText("\r\n"); - InfoResult.AppendText("\r\n--- Список обработанных успешно ---"); - foreach (string s in list_success) - { - InfoResult.AppendText("\r\n > " + s); - } - InfoResult.AppendText("\r\n"); - InfoResult.AppendText("\r\n--- Список обработанных с ошибками ---"); - foreach (string s in list_error) - { - InfoResult.AppendText("\r\n > " + s); - } - InfoResult.AppendText("\r\n"); - InfoResult.AppendText("\r\n--- Лог ошибок ---"); - foreach (string s in list_exceptions) - { - InfoResult.AppendText("\r\n > " + s); - } - } - } -} diff --git a/ClearCache1C/Form2.resx b/ClearCache1C/Form2.resx deleted file mode 100644 index 1af7de1..0000000 --- a/ClearCache1C/Form2.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ClearCache1C/Form3.Designer.cs b/ClearCache1C/FormAbout.Designer.cs similarity index 52% rename from ClearCache1C/Form3.Designer.cs rename to ClearCache1C/FormAbout.Designer.cs index aebe965..31e5f48 100644 --- a/ClearCache1C/Form3.Designer.cs +++ b/ClearCache1C/FormAbout.Designer.cs @@ -29,92 +29,98 @@ private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout)); - this.pictureBoxAi = new System.Windows.Forms.PictureBox(); this.panel1 = new System.Windows.Forms.Panel(); - this.textBoxInfo = new System.Windows.Forms.TextBox(); + this.pictureBoxAi = new System.Windows.Forms.PictureBox(); + this.panel2 = new System.Windows.Forms.Panel(); + this.lInfo = new System.Windows.Forms.Label(); + this.labelVersion = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); - this.linkContact = new System.Windows.Forms.LinkLabel(); this.linkGit = new System.Windows.Forms.LinkLabel(); - this.label4 = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAi)).BeginInit(); + this.linkContact = new System.Windows.Forms.LinkLabel(); + this.labelYear = new System.Windows.Forms.Label(); this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAi)).BeginInit(); + this.panel2.SuspendLayout(); this.SuspendLayout(); // + // panel1 + // + this.panel1.Controls.Add(this.pictureBoxAi); + this.panel1.Controls.Add(this.panel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(357, 136); + this.panel1.TabIndex = 0; + // // pictureBoxAi // this.pictureBoxAi.Cursor = System.Windows.Forms.Cursors.Hand; - this.pictureBoxAi.Image = global::ClearCache1C.Properties.Resources.ai_full_logo___clean; - this.pictureBoxAi.InitialImage = global::ClearCache1C.Properties.Resources.ai_full_logo___clean; - this.pictureBoxAi.Location = new System.Drawing.Point(12, 12); + this.pictureBoxAi.Image = global::ClearCache1C.Properties.Resources.ai_logo; + this.pictureBoxAi.InitialImage = null; + this.pictureBoxAi.Location = new System.Drawing.Point(4, 4); this.pictureBoxAi.Name = "pictureBoxAi"; - this.pictureBoxAi.Size = new System.Drawing.Size(127, 119); + this.pictureBoxAi.Size = new System.Drawing.Size(142, 130); this.pictureBoxAi.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pictureBoxAi.TabIndex = 0; this.pictureBoxAi.TabStop = false; this.pictureBoxAi.Click += new System.EventHandler(this.pictureBoxAi_Click); // - // panel1 + // panel2 // - this.panel1.Controls.Add(this.textBoxInfo); - this.panel1.Controls.Add(this.label1); - this.panel1.Location = new System.Drawing.Point(147, 13); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(200, 118); - this.panel1.TabIndex = 2; + this.panel2.Controls.Add(this.lInfo); + this.panel2.Controls.Add(this.labelVersion); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Right; + this.panel2.Location = new System.Drawing.Point(152, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(205, 136); + this.panel2.TabIndex = 1; // - // textBoxInfo + // lInfo // - this.textBoxInfo.BackColor = System.Drawing.SystemColors.Control; - this.textBoxInfo.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.textBoxInfo.Cursor = System.Windows.Forms.Cursors.Default; - this.textBoxInfo.Enabled = false; - this.textBoxInfo.ForeColor = System.Drawing.SystemColors.WindowText; - this.textBoxInfo.Location = new System.Drawing.Point(4, 28); - this.textBoxInfo.Multiline = true; - this.textBoxInfo.Name = "textBoxInfo"; - this.textBoxInfo.ReadOnly = true; - this.textBoxInfo.Size = new System.Drawing.Size(193, 87); - this.textBoxInfo.TabIndex = 2; - this.textBoxInfo.TabStop = false; - this.textBoxInfo.Text = "Все просто.\r\nПрограмма читает пользовательский файл ibases.v8i и на его основе ст" + + this.lInfo.Dock = System.Windows.Forms.DockStyle.Top; + this.lInfo.ForeColor = System.Drawing.Color.DimGray; + this.lInfo.Location = new System.Drawing.Point(0, 47); + this.lInfo.Name = "lInfo"; + this.lInfo.Size = new System.Drawing.Size(205, 85); + this.lInfo.TabIndex = 1; + this.lInfo.Text = "Все просто.\r\nПрограмма читает пользовательский файл ibases.v8i и на его основе ст" + "роит список баз.\r\nПо найденным ID и происходит вся магия удалений."; + this.lInfo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelVersion + // + this.labelVersion.Dock = System.Windows.Forms.DockStyle.Top; + this.labelVersion.ForeColor = System.Drawing.Color.DarkRed; + this.labelVersion.Location = new System.Drawing.Point(0, 24); + this.labelVersion.Name = "labelVersion"; + this.labelVersion.Size = new System.Drawing.Size(205, 23); + this.labelVersion.TabIndex = 3; + this.labelVersion.Text = "Версия: 1.0.0.0"; + this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // label1 // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.label1.Location = new System.Drawing.Point(49, 12); + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label1.Location = new System.Drawing.Point(0, 0); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(103, 13); - this.label1.TabIndex = 1; - this.label1.Text = "Чистка кэша 1С"; - // - // linkContact - // - this.linkContact.AutoSize = true; - this.linkContact.LinkArea = new System.Windows.Forms.LinkArea(20, 15); - this.linkContact.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; - this.linkContact.LinkColor = System.Drawing.SystemColors.HotTrack; - this.linkContact.Location = new System.Drawing.Point(12, 134); - this.linkContact.Name = "linkContact"; - this.linkContact.Size = new System.Drawing.Size(199, 17); - this.linkContact.TabIndex = 6; - this.linkContact.TabStop = true; - this.linkContact.Text = "Автор: FuketsuBaka (ai@ai-frame.net)"; - this.linkContact.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.linkContact.UseCompatibleTextRendering = true; - this.linkContact.VisitedLinkColor = System.Drawing.SystemColors.WindowFrame; - this.linkContact.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkContact_LinkClicked); + this.label1.Size = new System.Drawing.Size(205, 24); + this.label1.TabIndex = 2; + this.label1.Text = "Чистка Кэша 1С"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // linkGit // - this.linkGit.AutoSize = true; + this.linkGit.Dock = System.Windows.Forms.DockStyle.Top; this.linkGit.LinkArea = new System.Windows.Forms.LinkArea(5, 46); - this.linkGit.LinkColor = System.Drawing.SystemColors.HotTrack; - this.linkGit.Location = new System.Drawing.Point(12, 151); + this.linkGit.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; + this.linkGit.LinkColor = System.Drawing.Color.DarkRed; + this.linkGit.Location = new System.Drawing.Point(0, 166); this.linkGit.Name = "linkGit"; - this.linkGit.Size = new System.Drawing.Size(267, 17); - this.linkGit.TabIndex = 7; + this.linkGit.Size = new System.Drawing.Size(357, 30); + this.linkGit.TabIndex = 2; this.linkGit.TabStop = true; this.linkGit.Text = "GIT: https://bitbucket.org/FuketsuBaka/clearcache1c"; this.linkGit.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -122,26 +128,42 @@ this.linkGit.VisitedLinkColor = System.Drawing.SystemColors.WindowFrame; this.linkGit.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkGit_LinkClicked); // - // label4 + // linkContact // - this.label4.AutoSize = true; - this.label4.ForeColor = System.Drawing.SystemColors.ControlDarkDark; - this.label4.Location = new System.Drawing.Point(149, 175); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(42, 13); - this.label4.TabIndex = 9; - this.label4.Text = "2018 г."; + this.linkContact.Dock = System.Windows.Forms.DockStyle.Top; + this.linkContact.LinkArea = new System.Windows.Forms.LinkArea(20, 15); + this.linkContact.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; + this.linkContact.LinkColor = System.Drawing.Color.DarkRed; + this.linkContact.Location = new System.Drawing.Point(0, 136); + this.linkContact.Name = "linkContact"; + this.linkContact.Size = new System.Drawing.Size(357, 30); + this.linkContact.TabIndex = 3; + this.linkContact.TabStop = true; + this.linkContact.Text = "Автор: FuketsuBaka (ai@ai-frame.net)"; + this.linkContact.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.linkContact.UseCompatibleTextRendering = true; + this.linkContact.VisitedLinkColor = System.Drawing.SystemColors.WindowFrame; + this.linkContact.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkContact_LinkClicked); + // + // labelYear + // + this.labelYear.Dock = System.Windows.Forms.DockStyle.Bottom; + this.labelYear.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.labelYear.Location = new System.Drawing.Point(0, 198); + this.labelYear.Name = "labelYear"; + this.labelYear.Size = new System.Drawing.Size(357, 21); + this.labelYear.TabIndex = 4; + this.labelYear.Text = "-2018 г.-"; + this.labelYear.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // FormAbout // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(356, 196); - this.Controls.Add(this.label4); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(357, 219); + this.Controls.Add(this.labelYear); this.Controls.Add(this.linkGit); this.Controls.Add(this.linkContact); this.Controls.Add(this.panel1); - this.Controls.Add(this.pictureBoxAi); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; @@ -150,23 +172,25 @@ this.ShowIcon = false; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "About"; - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAi)).EndInit(); + this.Text = "О программе"; + this.Load += new System.EventHandler(this.FormAbout_Load); this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAi)).EndInit(); + this.panel2.ResumeLayout(false); this.ResumeLayout(false); - this.PerformLayout(); } #endregion - private System.Windows.Forms.PictureBox pictureBoxAi; private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.TextBox textBoxInfo; + private System.Windows.Forms.PictureBox pictureBoxAi; + private System.Windows.Forms.Label lInfo; + private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Label label1; - private System.Windows.Forms.LinkLabel linkContact; private System.Windows.Forms.LinkLabel linkGit; - private System.Windows.Forms.Label label4; + private System.Windows.Forms.LinkLabel linkContact; + private System.Windows.Forms.Label labelYear; + private System.Windows.Forms.Label labelVersion; } } \ No newline at end of file diff --git a/ClearCache1C/Form3.cs b/ClearCache1C/FormAbout.cs similarity index 74% rename from ClearCache1C/Form3.cs rename to ClearCache1C/FormAbout.cs index 7dcd03f..22c12f7 100644 --- a/ClearCache1C/Form3.cs +++ b/ClearCache1C/FormAbout.cs @@ -8,17 +8,26 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +// using +using System.Reflection; +using System.Diagnostics; + namespace ClearCache1C { public partial class FormAbout : Form { public FormAbout() { - StartPosition = FormStartPosition.CenterScreen; InitializeComponent(); } - - private void LinkContact_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + private void FormAbout_Load(object sender, EventArgs e) + { + Assembly assembly = Assembly.GetExecutingAssembly(); + FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location); + string version = fileVersionInfo.ProductVersion; + labelVersion.Text = "Версия: " + version; + } + private void linkContact_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { string url; if (e.Link.LinkData != null) @@ -47,7 +56,6 @@ namespace ClearCache1C System.Diagnostics.Process.Start(url); linkGit.LinkVisited = true; } - private void pictureBoxAi_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("http://ai-frame.net/"); diff --git a/ClearCache1C/Form3.resx b/ClearCache1C/FormAbout.resx similarity index 100% rename from ClearCache1C/Form3.resx rename to ClearCache1C/FormAbout.resx diff --git a/ClearCache1C/FormMain.Designer.cs b/ClearCache1C/FormMain.Designer.cs new file mode 100644 index 0000000..ebe73dd --- /dev/null +++ b/ClearCache1C/FormMain.Designer.cs @@ -0,0 +1,460 @@ +namespace ClearCache1C +{ + partial class FormMain + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором форм Windows + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); + this.BaseDataView = new System.Windows.Forms.DataGridView(); + this.panBtnsBaseGrid = new System.Windows.Forms.Panel(); + this.cbInfo = new System.Windows.Forms.CheckBox(); + this.btnRefresh = new System.Windows.Forms.Button(); + this.btnUnselect = new System.Windows.Forms.Button(); + this.btnSelectAll = new System.Windows.Forms.Button(); + this.btnSelectCache = new System.Windows.Forms.Button(); + this.btnAbout = new System.Windows.Forms.Button(); + this.panBtnsBaseSubmit = new System.Windows.Forms.Panel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.cbOptSettingsUser = new System.Windows.Forms.CheckBox(); + this.cbOptCacheProgram = new System.Windows.Forms.CheckBox(); + this.cbOptCacheUser = new System.Windows.Forms.CheckBox(); + this.cbOptAll = new System.Windows.Forms.CheckBox(); + this.btnClear = new System.Windows.Forms.Button(); + this.tbInfo = new System.Windows.Forms.TextBox(); + this.panMain = new System.Windows.Forms.Panel(); + this.splitMain = new System.Windows.Forms.SplitContainer(); + this.panSearch = new System.Windows.Forms.Panel(); + this.tbSearch = new System.Windows.Forms.TextBox(); + this.lSearch = new System.Windows.Forms.Label(); + this.btnDropSearch = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.BaseDataView)).BeginInit(); + this.panBtnsBaseGrid.SuspendLayout(); + this.panBtnsBaseSubmit.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panMain.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitMain)).BeginInit(); + this.splitMain.Panel1.SuspendLayout(); + this.splitMain.Panel2.SuspendLayout(); + this.splitMain.SuspendLayout(); + this.panSearch.SuspendLayout(); + this.SuspendLayout(); + // + // BaseDataView + // + this.BaseDataView.AllowUserToAddRows = false; + this.BaseDataView.AllowUserToDeleteRows = false; + this.BaseDataView.AllowUserToOrderColumns = true; + this.BaseDataView.AllowUserToResizeRows = false; + this.BaseDataView.BackgroundColor = System.Drawing.Color.White; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.Color.Yellow; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.BaseDataView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4; + this.BaseDataView.ColumnHeadersHeight = 38; + this.BaseDataView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.BaseDataView.Dock = System.Windows.Forms.DockStyle.Fill; + this.BaseDataView.GridColor = System.Drawing.Color.LightGray; + this.BaseDataView.Location = new System.Drawing.Point(0, 0); + this.BaseDataView.MinimumSize = new System.Drawing.Size(400, 0); + this.BaseDataView.Name = "BaseDataView"; + this.BaseDataView.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle5.SelectionBackColor = System.Drawing.Color.LightYellow; + dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.BaseDataView.RowHeadersDefaultCellStyle = dataGridViewCellStyle5; + this.BaseDataView.RowHeadersVisible = false; + this.BaseDataView.RowHeadersWidth = 20; + dataGridViewCellStyle6.SelectionBackColor = System.Drawing.Color.LightYellow; + dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.ControlText; + this.BaseDataView.RowsDefaultCellStyle = dataGridViewCellStyle6; + this.BaseDataView.RowTemplate.DefaultCellStyle.ForeColor = System.Drawing.Color.Black; + this.BaseDataView.RowTemplate.DefaultCellStyle.SelectionBackColor = System.Drawing.Color.LightYellow; + this.BaseDataView.RowTemplate.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.Black; + this.BaseDataView.RowTemplate.Height = 18; + this.BaseDataView.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.BaseDataView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.BaseDataView.ShowEditingIcon = false; + this.BaseDataView.Size = new System.Drawing.Size(564, 411); + this.BaseDataView.TabIndex = 0; + // + // panBtnsBaseGrid + // + this.panBtnsBaseGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.panBtnsBaseGrid.Controls.Add(this.cbInfo); + this.panBtnsBaseGrid.Controls.Add(this.btnRefresh); + this.panBtnsBaseGrid.Controls.Add(this.btnUnselect); + this.panBtnsBaseGrid.Controls.Add(this.btnSelectAll); + this.panBtnsBaseGrid.Controls.Add(this.btnSelectCache); + this.panBtnsBaseGrid.Dock = System.Windows.Forms.DockStyle.Top; + this.panBtnsBaseGrid.Location = new System.Drawing.Point(0, 0); + this.panBtnsBaseGrid.Name = "panBtnsBaseGrid"; + this.panBtnsBaseGrid.Padding = new System.Windows.Forms.Padding(3, 3, 3, 0); + this.panBtnsBaseGrid.Size = new System.Drawing.Size(564, 35); + this.panBtnsBaseGrid.TabIndex = 4; + // + // cbInfo + // + this.cbInfo.Appearance = System.Windows.Forms.Appearance.Button; + this.cbInfo.Dock = System.Windows.Forms.DockStyle.Right; + this.cbInfo.FlatAppearance.BorderSize = 0; + this.cbInfo.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ButtonFace; + this.cbInfo.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.cbInfo.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.cbInfo.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cbInfo.Image = global::ClearCache1C.Properties.Resources.arrows_16_R; + this.cbInfo.Location = new System.Drawing.Point(534, 3); + this.cbInfo.Name = "cbInfo"; + this.cbInfo.Size = new System.Drawing.Size(27, 32); + this.cbInfo.TabIndex = 7; + this.cbInfo.UseVisualStyleBackColor = true; + this.cbInfo.CheckedChanged += new System.EventHandler(this.CbInfo_CheckedChanged); + // + // btnRefresh + // + this.btnRefresh.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnRefresh.Dock = System.Windows.Forms.DockStyle.Left; + this.btnRefresh.FlatAppearance.BorderSize = 0; + this.btnRefresh.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.btnRefresh.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.btnRefresh.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnRefresh.ForeColor = System.Drawing.SystemColors.ControlText; + this.btnRefresh.Image = global::ClearCache1C.Properties.Resources.icon_refresh_24; + this.btnRefresh.Location = new System.Drawing.Point(453, 3); + this.btnRefresh.Name = "btnRefresh"; + this.btnRefresh.Size = new System.Drawing.Size(36, 32); + this.btnRefresh.TabIndex = 4; + this.btnRefresh.UseVisualStyleBackColor = true; + this.btnRefresh.Click += new System.EventHandler(this.BtnRefresh_Click); + // + // btnUnselect + // + this.btnUnselect.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnUnselect.Dock = System.Windows.Forms.DockStyle.Left; + this.btnUnselect.Image = ((System.Drawing.Image)(resources.GetObject("btnUnselect.Image"))); + this.btnUnselect.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnUnselect.Location = new System.Drawing.Point(303, 3); + this.btnUnselect.Name = "btnUnselect"; + this.btnUnselect.Size = new System.Drawing.Size(150, 32); + this.btnUnselect.TabIndex = 3; + this.btnUnselect.Text = "Снять выделение"; + this.btnUnselect.UseVisualStyleBackColor = true; + this.btnUnselect.Click += new System.EventHandler(this.BtnUnselect_Click); + // + // btnSelectAll + // + this.btnSelectAll.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnSelectAll.Dock = System.Windows.Forms.DockStyle.Left; + this.btnSelectAll.Image = global::ClearCache1C.Properties.Resources.icon_select_16; + this.btnSelectAll.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnSelectAll.Location = new System.Drawing.Point(153, 3); + this.btnSelectAll.Name = "btnSelectAll"; + this.btnSelectAll.Size = new System.Drawing.Size(150, 32); + this.btnSelectAll.TabIndex = 2; + this.btnSelectAll.Text = "Выделить все"; + this.btnSelectAll.UseVisualStyleBackColor = true; + this.btnSelectAll.Click += new System.EventHandler(this.BtnSelectAll_Click); + // + // btnSelectCache + // + this.btnSelectCache.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnSelectCache.Dock = System.Windows.Forms.DockStyle.Left; + this.btnSelectCache.Image = global::ClearCache1C.Properties.Resources.icon_smart_select_16; + this.btnSelectCache.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnSelectCache.Location = new System.Drawing.Point(3, 3); + this.btnSelectCache.Name = "btnSelectCache"; + this.btnSelectCache.Size = new System.Drawing.Size(150, 32); + this.btnSelectCache.TabIndex = 1; + this.btnSelectCache.Text = "Выделить с кэшем"; + this.btnSelectCache.UseVisualStyleBackColor = true; + this.btnSelectCache.Click += new System.EventHandler(this.BtnSelectCache_Click); + // + // btnAbout + // + this.btnAbout.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.btnAbout.Dock = System.Windows.Forms.DockStyle.Right; + this.btnAbout.FlatAppearance.BorderSize = 0; + this.btnAbout.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.btnAbout.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.btnAbout.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnAbout.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.btnAbout.ForeColor = System.Drawing.Color.DimGray; + this.btnAbout.Location = new System.Drawing.Point(514, 3); + this.btnAbout.Name = "btnAbout"; + this.btnAbout.Size = new System.Drawing.Size(47, 48); + this.btnAbout.TabIndex = 14; + this.btnAbout.Text = "?"; + this.btnAbout.UseVisualStyleBackColor = true; + this.btnAbout.Click += new System.EventHandler(this.BtnAbout_Click); + // + // panBtnsBaseSubmit + // + this.panBtnsBaseSubmit.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.panBtnsBaseSubmit.Controls.Add(this.panel1); + this.panBtnsBaseSubmit.Controls.Add(this.btnAbout); + this.panBtnsBaseSubmit.Controls.Add(this.cbOptAll); + this.panBtnsBaseSubmit.Controls.Add(this.btnClear); + this.panBtnsBaseSubmit.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panBtnsBaseSubmit.Location = new System.Drawing.Point(0, 472); + this.panBtnsBaseSubmit.Name = "panBtnsBaseSubmit"; + this.panBtnsBaseSubmit.Padding = new System.Windows.Forms.Padding(3); + this.panBtnsBaseSubmit.Size = new System.Drawing.Size(564, 54); + this.panBtnsBaseSubmit.TabIndex = 5; + // + // panel1 + // + this.panel1.Controls.Add(this.cbOptSettingsUser); + this.panel1.Controls.Add(this.cbOptCacheProgram); + this.panel1.Controls.Add(this.cbOptCacheUser); + this.panel1.Dock = System.Windows.Forms.DockStyle.Left; + this.panel1.Location = new System.Drawing.Point(283, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(231, 48); + this.panel1.TabIndex = 8; + // + // cbOptSettingsUser + // + this.cbOptSettingsUser.Dock = System.Windows.Forms.DockStyle.Top; + this.cbOptSettingsUser.Location = new System.Drawing.Point(0, 34); + this.cbOptSettingsUser.Name = "cbOptSettingsUser"; + this.cbOptSettingsUser.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.cbOptSettingsUser.Size = new System.Drawing.Size(231, 17); + this.cbOptSettingsUser.TabIndex = 13; + this.cbOptSettingsUser.Text = "Настройки пользователя"; + this.cbOptSettingsUser.UseVisualStyleBackColor = true; + // + // cbOptCacheProgram + // + this.cbOptCacheProgram.Checked = true; + this.cbOptCacheProgram.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbOptCacheProgram.Dock = System.Windows.Forms.DockStyle.Top; + this.cbOptCacheProgram.Location = new System.Drawing.Point(0, 17); + this.cbOptCacheProgram.Name = "cbOptCacheProgram"; + this.cbOptCacheProgram.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.cbOptCacheProgram.Size = new System.Drawing.Size(231, 17); + this.cbOptCacheProgram.TabIndex = 12; + this.cbOptCacheProgram.Text = "Кэш приложения"; + this.cbOptCacheProgram.UseVisualStyleBackColor = true; + // + // cbOptCacheUser + // + this.cbOptCacheUser.Checked = true; + this.cbOptCacheUser.CheckState = System.Windows.Forms.CheckState.Checked; + this.cbOptCacheUser.Dock = System.Windows.Forms.DockStyle.Top; + this.cbOptCacheUser.Location = new System.Drawing.Point(0, 0); + this.cbOptCacheUser.Name = "cbOptCacheUser"; + this.cbOptCacheUser.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.cbOptCacheUser.Size = new System.Drawing.Size(231, 17); + this.cbOptCacheUser.TabIndex = 11; + this.cbOptCacheUser.Text = "Кэш пользователя"; + this.cbOptCacheUser.UseVisualStyleBackColor = true; + // + // cbOptAll + // + this.cbOptAll.AutoSize = true; + this.cbOptAll.Dock = System.Windows.Forms.DockStyle.Left; + this.cbOptAll.Location = new System.Drawing.Point(223, 3); + this.cbOptAll.Name = "cbOptAll"; + this.cbOptAll.Padding = new System.Windows.Forms.Padding(15, 0, 0, 0); + this.cbOptAll.Size = new System.Drawing.Size(60, 48); + this.cbOptAll.TabIndex = 10; + this.cbOptAll.Text = "Все"; + this.cbOptAll.UseVisualStyleBackColor = true; + // + // btnClear + // + this.btnClear.Dock = System.Windows.Forms.DockStyle.Left; + this.btnClear.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.btnClear.Location = new System.Drawing.Point(3, 3); + this.btnClear.Name = "btnClear"; + this.btnClear.Size = new System.Drawing.Size(220, 48); + this.btnClear.TabIndex = 9; + this.btnClear.Text = "Очистить"; + this.btnClear.UseVisualStyleBackColor = true; + this.btnClear.Click += new System.EventHandler(this.BtnClear_Click); + // + // tbInfo + // + this.tbInfo.BackColor = System.Drawing.SystemColors.Info; + this.tbInfo.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbInfo.Location = new System.Drawing.Point(0, 0); + this.tbInfo.MinimumSize = new System.Drawing.Size(400, 4); + this.tbInfo.Multiline = true; + this.tbInfo.Name = "tbInfo"; + this.tbInfo.ReadOnly = true; + this.tbInfo.Size = new System.Drawing.Size(400, 100); + this.tbInfo.TabIndex = 6; + // + // panMain + // + this.panMain.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.panMain.Controls.Add(this.splitMain); + this.panMain.Controls.Add(this.panSearch); + this.panMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.panMain.Location = new System.Drawing.Point(0, 35); + this.panMain.Name = "panMain"; + this.panMain.Size = new System.Drawing.Size(564, 437); + this.panMain.TabIndex = 7; + // + // splitMain + // + this.splitMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitMain.Location = new System.Drawing.Point(0, 26); + this.splitMain.MinimumSize = new System.Drawing.Size(550, 0); + this.splitMain.Name = "splitMain"; + // + // splitMain.Panel1 + // + this.splitMain.Panel1.AutoScroll = true; + this.splitMain.Panel1.Controls.Add(this.BaseDataView); + // + // splitMain.Panel2 + // + this.splitMain.Panel2.Controls.Add(this.tbInfo); + this.splitMain.Panel2Collapsed = true; + this.splitMain.Size = new System.Drawing.Size(564, 411); + this.splitMain.SplitterDistance = 282; + this.splitMain.SplitterWidth = 6; + this.splitMain.TabIndex = 7; + // + // panSearch + // + this.panSearch.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.panSearch.Controls.Add(this.tbSearch); + this.panSearch.Controls.Add(this.lSearch); + this.panSearch.Controls.Add(this.btnDropSearch); + this.panSearch.Dock = System.Windows.Forms.DockStyle.Top; + this.panSearch.Location = new System.Drawing.Point(0, 0); + this.panSearch.Name = "panSearch"; + this.panSearch.Padding = new System.Windows.Forms.Padding(3); + this.panSearch.Size = new System.Drawing.Size(564, 26); + this.panSearch.TabIndex = 1; + // + // tbSearch + // + this.tbSearch.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbSearch.Location = new System.Drawing.Point(48, 3); + this.tbSearch.Name = "tbSearch"; + this.tbSearch.Size = new System.Drawing.Size(486, 20); + this.tbSearch.TabIndex = 5; + this.tbSearch.TextChanged += new System.EventHandler(this.TbSearch_TextChanged); + // + // lSearch + // + this.lSearch.Dock = System.Windows.Forms.DockStyle.Left; + this.lSearch.Location = new System.Drawing.Point(3, 3); + this.lSearch.Name = "lSearch"; + this.lSearch.Size = new System.Drawing.Size(45, 20); + this.lSearch.TabIndex = 1; + this.lSearch.Text = "Поиск:"; + this.lSearch.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // btnDropSearch + // + this.btnDropSearch.Dock = System.Windows.Forms.DockStyle.Right; + this.btnDropSearch.FlatAppearance.BorderSize = 0; + this.btnDropSearch.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.btnDropSearch.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ButtonHighlight; + this.btnDropSearch.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnDropSearch.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.btnDropSearch.Image = global::ClearCache1C.Properties.Resources.x_mark_16; + this.btnDropSearch.Location = new System.Drawing.Point(534, 3); + this.btnDropSearch.Name = "btnDropSearch"; + this.btnDropSearch.Size = new System.Drawing.Size(27, 20); + this.btnDropSearch.TabIndex = 6; + this.btnDropSearch.UseVisualStyleBackColor = true; + this.btnDropSearch.Click += new System.EventHandler(this.BtnDropSearch_Click); + // + // FormMain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(564, 526); + this.Controls.Add(this.panMain); + this.Controls.Add(this.panBtnsBaseSubmit); + this.Controls.Add(this.panBtnsBaseGrid); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.MinimumSize = new System.Drawing.Size(550, 39); + this.Name = "FormMain"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Чистка кэша 1C"; + this.Load += new System.EventHandler(this.FormMain_Load); + ((System.ComponentModel.ISupportInitialize)(this.BaseDataView)).EndInit(); + this.panBtnsBaseGrid.ResumeLayout(false); + this.panBtnsBaseSubmit.ResumeLayout(false); + this.panBtnsBaseSubmit.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panMain.ResumeLayout(false); + this.splitMain.Panel1.ResumeLayout(false); + this.splitMain.Panel2.ResumeLayout(false); + this.splitMain.Panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitMain)).EndInit(); + this.splitMain.ResumeLayout(false); + this.panSearch.ResumeLayout(false); + this.panSearch.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.DataGridView BaseDataView; + private System.Windows.Forms.Button btnSelectCache; + private System.Windows.Forms.Button btnSelectAll; + private System.Windows.Forms.Button btnUnselect; + private System.Windows.Forms.Panel panBtnsBaseGrid; + private System.Windows.Forms.Panel panBtnsBaseSubmit; + private System.Windows.Forms.Button btnClear; + private System.Windows.Forms.CheckBox cbOptSettingsUser; + private System.Windows.Forms.CheckBox cbOptCacheProgram; + private System.Windows.Forms.CheckBox cbOptCacheUser; + private System.Windows.Forms.CheckBox cbOptAll; + private System.Windows.Forms.TextBox tbInfo; + private System.Windows.Forms.CheckBox cbInfo; + private System.Windows.Forms.Panel panMain; + private System.Windows.Forms.SplitContainer splitMain; + private System.Windows.Forms.Button btnRefresh; + private System.Windows.Forms.Panel panSearch; + private System.Windows.Forms.TextBox tbSearch; + private System.Windows.Forms.Label lSearch; + private System.Windows.Forms.Button btnDropSearch; + private System.Windows.Forms.Button btnAbout; + private System.Windows.Forms.Panel panel1; + } +} + diff --git a/ClearCache1C/FormMain.cs b/ClearCache1C/FormMain.cs new file mode 100644 index 0000000..30973c0 --- /dev/null +++ b/ClearCache1C/FormMain.cs @@ -0,0 +1,805 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +// Using +using System.IO; + +namespace ClearCache1C +{ + public partial class FormMain : Form + { + // ********************************************************************************************* + // LVARS START + // Data table + private BaseData baseData; + private string[] V8iContent; + // LVARS END + // ********************************************************************************************* + + // ********************************************************************************************* + // TABLE INIT START + private void InitDataTable() + { + baseData = new BaseData(); + } + private void InitDataGridView() + { + //BindingSource bs = new BindingSource(); + //bs.DataSource = BaseData; + BaseDataView.DataSource = baseData.dataTable; + BaseDataView.Columns[baseData.col_Index.ColumnName].Visible = false; + BaseDataView.Columns[baseData.col_Id.ColumnName].Visible = false; + BaseDataView.Columns[baseData.col_ConnectString.ColumnName].Visible = false; + BaseDataView.Columns[baseData.col_LastEnteredUser.ColumnName].Visible = false; + + // Formatting + BaseDataView.Columns[baseData.col_SizeCacheUser.ColumnName].DefaultCellStyle.Format = "0.00"; + BaseDataView.Columns[baseData.col_SizeCacheProgram.ColumnName].DefaultCellStyle.Format = "0.00"; + BaseDataView.Columns[baseData.col_SizeTotal.ColumnName].DefaultCellStyle.Format = "0.00"; + + // Columns formating + BaseDataView.Columns[baseData.col_Check.ColumnName].Width = 22; + BaseDataView.Columns[baseData.col_Check.ColumnName].ToolTipText = "Выбрано."; + + BaseDataView.Columns[baseData.col_Locked.ColumnName].Visible = false; + BaseDataView.Columns[baseData.col_Locked.ColumnName].Width = 22; + BaseDataView.Columns[baseData.col_Locked.ColumnName].ToolTipText = "Заблокировано."; + + BaseDataView.Columns[baseData.col_BaseName.ColumnName].Width = 200; + BaseDataView.Columns[baseData.col_SizeCacheUser.ColumnName].Width = 55; + BaseDataView.Columns[baseData.col_SizeCacheProgram.ColumnName].Width = 55; + BaseDataView.Columns[baseData.col_SizeTotal.ColumnName].Width = 55; + + // Events handling + BaseDataView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.BaseDataView_CellFormatting); + BaseDataView.CellPainting += new DataGridViewCellPaintingEventHandler(this.BaseDataView_CellPainting); + //deprecated + //BaseDataView.CellValueChanged += new DataGridViewCellEventHandler(this.BaseDataView_ValueChanged); + BaseDataView.CellClick += new DataGridViewCellEventHandler(this.BaseDataView_CellClick); + } + + private void ReadV8iFile() + { + string PathV8i = @"%appdata%\1C\1CEStart\ibases.v8i"; + V8iContent = ReadFileContent(PathV8i); + if (V8iContent is null) + { + MessageBox.Show("Не удалось найти файл ibases.v8i по указанному пути: " + PathV8i, "Ошибка чтения файла!", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + private void LoadBasesToData() + { + // In case we are doing a reload + baseData.dataTable.Rows.Clear(); + // Check if we have any source to work with + if (V8iContent is null) + return; + // Fill Data + int i = 0; + var baseRow = new BaseRow(); + foreach (string line in V8iContent) + { + /* ---------- EXAMPLE + [Торговля(Рабочая)] + Connect=Srvr="winserv";Ref="ut2014_work"; + ID=f8370086-654e-4807-b79b-3f51653c3699 + OrderInList = 0 + Folder=/Рабочие + OrderInTree = 0 + External=1 + ClientConnectionSpeed=Normal + App = Auto + WA=1 + Version=8.2 + DefaultApp=ThickClient + -------------------- */ + if (line.StartsWith("[")) // Start + { + baseRow.Name = line.Substring(1, line.Length - 2); + baseRow.Id = ""; + baseRow.ConnectString = ""; + } + else if (line.StartsWith("Connect=")) // Connect string + { + baseRow.ConnectString = line.Substring(8); + } + else if (line.StartsWith("ID=")) // ID string + { + baseRow.Id = line.Substring(3); + } + if (baseRow.Ready) + { + baseRow.Index = i; + + baseRow.FillSizesInRow(); + baseRow.GetLockedAndUserInfo(); + + object[] row = { baseRow.Check, baseRow.Locked, + baseRow.Index, baseRow.Id, baseRow.Name, baseRow.ConnectString, baseRow.LastEnteredUser, + baseRow.SizeCacheUser, + baseRow.SizeCacheProgram, + baseRow.SizeTotal }; + baseData.dataTable.Rows.Add(row); + // Clear + baseRow = new BaseRow(); + baseRow.Check = false; + i++; + } + } + } + // TABLE INIT END + // ********************************************************************************************* + + // ********************************************************************************************* + // EVENTS START + public FormMain() + { + InitializeComponent(); + + //Create DataTable with needed columns + InitDataTable(); + InitDataGridView(); + // Read file into string[] collection + ReadV8iFile(); + // Register keypressed event + KeyPress += new KeyPressEventHandler(Control_KeyPressed); + // CheckBoxes change + cbOptAll.CheckedChanged += new System.EventHandler(this.CbOptClear_CheckedChanged); + cbOptCacheUser.CheckedChanged += new System.EventHandler(this.CbOptClear_CheckedChanged); + cbOptCacheProgram.CheckedChanged += new System.EventHandler(this.CbOptClear_CheckedChanged); + cbOptSettingsUser.CheckedChanged += new System.EventHandler(this.CbOptClear_CheckedChanged); + SetToolTips(); + } + private void FormMain_Load(object sender, EventArgs e) + { + LoadBasesToData(); + //ToggleInfoView(); + } + private void BaseDataView_CellFormatting(object sender, System.Windows.Forms.DataGridViewCellFormattingEventArgs e) + { + if (BaseDataView.Columns[e.ColumnIndex].DefaultCellStyle.Format.Equals("0.00")) + if (e.Value.ToString().Equals("0")) + e.CellStyle.Format = "#.##"; + } + /* + private void BaseDataView_ValueChanged(object sender, DataGridViewCellEventArgs e) + { + if (BaseDataView.Rows[e.RowIndex].DefaultCellStyle.BackColor == Color.LightCoral) + return; + + bool isChecked = Convert.ToBoolean(BaseDataView.Rows[e.RowIndex].Cells[baseData.col_Check.ColumnName].Value); + + if (isChecked) + BaseDataView.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.PaleGreen; + else + BaseDataView.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White; + } + */ + private void BaseDataView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) + { + if(e.RowIndex >= 0) + { + bool isLocked = Convert.ToBoolean(BaseDataView.Rows[e.RowIndex].Cells[baseData.col_Locked.ColumnName].Value); + if (isLocked) + { + BaseDataView.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.DarkRed; + //BaseDataView.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.MistyRose; + BaseDataView.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = Color.MistyRose; + } + + bool isChecked = Convert.ToBoolean(BaseDataView.Rows[e.RowIndex].Cells[baseData.col_Check.ColumnName].Value); + if (isChecked && !isLocked) + BaseDataView.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.PaleGreen; + else if (!isLocked) + BaseDataView.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White; + } + } + private void BaseDataView_CellClick(object sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex >= 0) + ShowRowInfo(); + } + private void Control_KeyPressed(object sender, KeyPressEventArgs e) + { + if (tbSearch.Focused) + return; + // toggle selection in datagrid on spacebar + if (e.KeyChar == ' ') + BaseDataView.Focus(); + ToggleCheck_Selected(); + } + private void BtnRefresh_Click(object sender, EventArgs e) + { + BaseDataView_Refresh(); + } + private void BtnSelectCache_Click(object sender, EventArgs e) + { + ToggleCheck(true, true); + } + + private void BtnSelectAll_Click(object sender, EventArgs e) + { + ToggleCheck(true, false); + } + + private void BtnUnselect_Click(object sender, EventArgs e) + { + ToggleCheck(false, false); + } + + // Toggle InfoView + private void CbInfo_CheckedChanged(object sender, EventArgs e) + { + ToggleInfoView(); + } + + // CheckBoxes + private void CbOptClear_CheckedChanged(object sender, EventArgs e) + { + if (!cbOptAll.Checked && cbOptCacheUser.Checked && cbOptCacheProgram.Checked && cbOptSettingsUser.Checked) + { + cbOptAll.Checked = true; + cbOptCacheUser.Checked = false; + cbOptCacheProgram.Checked = false; + cbOptSettingsUser.Checked = false; + } + + cbOptCacheUser.Enabled = !cbOptAll.Checked; + cbOptCacheProgram.Enabled = !cbOptAll.Checked; + cbOptSettingsUser.Enabled = !cbOptAll.Checked; + } + // Search field + private void TbSearch_TextChanged(object sender, EventArgs e) + { + Searh_ApplyFilter(); + } + private void BtnDropSearch_Click(object sender, EventArgs e) + { + tbSearch.Text = ""; + Searh_ApplyFilter(); + } + + // About + private void BtnAbout_Click(object sender, EventArgs e) + { + FormAbout aboutForm = new FormAbout(); + aboutForm.ShowDialog(); + } + + // Button Clear Cache + private void BtnClear_Click(object sender, EventArgs e) + { + StartClear(); + } + // EVENTS END + // ********************************************************************************************* + + // ********************************************************************************************* + // CLASSES START + class BaseData + { + public DataTable dataTable; + public DataColumn col_Check; + public DataColumn col_Locked; + public DataColumn col_Index; + public DataColumn col_Id; + public DataColumn col_BaseName; + public DataColumn col_ConnectString; + public DataColumn col_LastEnteredUser; + public DataColumn col_SizeCacheUser; + public DataColumn col_SizeCacheProgram; + public DataColumn col_SizeTotal; + public BaseData() + { + this.dataTable = new DataTable(); + + this.col_Check = new DataColumn("В.", typeof(Boolean)); + this.col_Check.ReadOnly = false; + this.col_Locked = new DataColumn("З.", typeof(Boolean)); + this.col_Locked.ReadOnly = true; + + // String columns + this.col_Index = new DataColumn("#", typeof(Int32)); + this.col_Index.ReadOnly = true; + this.col_Id = new DataColumn("ID", typeof(String)); + this.col_Id.ReadOnly = true; + this.col_BaseName = new DataColumn("Наименование базы данных", typeof(String)); + this.col_BaseName.ReadOnly = true; + this.col_ConnectString = new DataColumn("Строка подключения", typeof(String)); + this.col_ConnectString.ReadOnly = true; + this.col_LastEnteredUser = new DataColumn("LastUser", typeof(String)); + this.col_LastEnteredUser.ReadOnly = true; + // Numeric columns + this.col_SizeCacheUser = new DataColumn("Кэш пользов.", typeof(Decimal)); + this.col_SizeCacheUser.ReadOnly = true; + this.col_SizeCacheProgram = new DataColumn("Кэш прилож.", typeof(Decimal)); + this.col_SizeCacheProgram.ReadOnly = true; + this.col_SizeTotal = new DataColumn("Всего", typeof(Decimal)); + this.col_SizeTotal.ReadOnly = true; + + + DataColumn[] dataColumns = { + col_Check, + col_Locked, + col_Index, + col_Id, + col_BaseName, + col_ConnectString, + col_LastEnteredUser, + col_SizeCacheUser, + col_SizeCacheProgram, + col_SizeTotal + }; + this.dataTable.Columns.AddRange(dataColumns); + } + } + class BaseRow + { + public bool Check; + public bool Locked; + public int Index; + public string Name; + public string Id; + public string ConnectString; + public string LastEnteredUser; + public decimal SizeCacheProgram; + public decimal SizeCacheUser; + public decimal SizeTotal; + + // for separate usage + public List rootFolders; + public List localCacheFolders; + public List userCacheFolders; + + public bool Ready => (!String.IsNullOrEmpty(this.Name) && !String.IsNullOrEmpty(this.Id) && !String.IsNullOrEmpty(this.ConnectString)); + + public void FillSizesInRow() + { + string basePathLocal = Environment.ExpandEnvironmentVariables(@"%LOCALAPPDATA%\1C\1cv8\" + this.Id); + string basePathRoaming = Environment.ExpandEnvironmentVariables(@"%APPDATA%\1C\1cv8\" + this.Id); + this.rootFolders = new List(); + this.localCacheFolders = new List(); + this.userCacheFolders = new List(); + if (Directory.Exists(basePathLocal)) + { + rootFolders.Add(basePathLocal); + string[] filterSearch = { "Config", "ConfigSave", "SICache", "vrs-cache" }; + localCacheFolders.AddRange(GetFoldersById(basePathLocal, filterSearch)); + if (localCacheFolders.Count() > 0) + foreach (string _Path in localCacheFolders) + this.SizeCacheProgram += DirSize(new DirectoryInfo(_Path), ""); + } + if (Directory.Exists(basePathRoaming)) + { + rootFolders.Add(basePathRoaming); + string[] filterSearch = { "vrs-cache" }; + userCacheFolders.AddRange(GetFoldersById(basePathRoaming, filterSearch)); + if (userCacheFolders.Count() > 0) + foreach (string _Path in userCacheFolders) + this.SizeCacheUser += DirSize(new DirectoryInfo(_Path), ""); + } + this.SizeTotal += DirSize(new DirectoryInfo(basePathLocal), ""); + this.SizeTotal += DirSize(new DirectoryInfo(basePathRoaming), ""); + + // Format to Mb + this.SizeCacheProgram = this.SizeCacheProgram / 1024 / 1024; + this.SizeCacheUser = this.SizeCacheUser / 1024 / 1024; + this.SizeTotal = this.SizeTotal / 1024 / 1024; + } + public void GetLockedAndUserInfo() + { + string basePathRoaming = Environment.ExpandEnvironmentVariables(@"%APPDATA%\1C\1cv8\" + this.Id); + if (Directory.Exists(basePathRoaming)) + { + // Locked then file exists (1Cv8.lck) + this.Locked = File.Exists(basePathRoaming + "\\1Cv8.lck"); + // Last entered user info (def.usr) + this.LastEnteredUser = ""; + if (File.Exists(basePathRoaming + "\\def.usr")) + { + string[] lines = ReadFileContent(basePathRoaming + "\\def.usr"); + if (lines != null) + if (lines.Count() > 0) + this.LastEnteredUser = lines[0].Substring(2, lines[0].Length - 4); + } + } + } + private string[] GetFoldersById(string _Path, string[] _Filter) + { + List foundFolders = new List(); + foreach (string f in _Filter) + { + foundFolders.AddRange(Directory.GetDirectories(_Path, f, SearchOption.AllDirectories).ToList()); + } + return foundFolders.ToArray(); + } + } + class DeleteResults + { + public bool isError; + public double sizeDeleted; + public List listErrors; + } + // CLASSES END + // ********************************************************************************************* + + // ********************************************************************************************* + // CLEAR START + private void StartClear() + { + var checkedRows = from DataGridViewRow row in BaseDataView.Rows + where Convert.ToBoolean(row.Cells[baseData.col_Check.ColumnName].Value) == true + select row; + if (checkedRows.Count() == 0) + { + MessageBox.Show("Ничего не выбрано.", "Meh...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + if (!cbOptAll.Checked && !cbOptCacheUser.Checked && !cbOptCacheProgram.Checked && !cbOptSettingsUser.Checked) + { + MessageBox.Show("Не указано, что очищать.", "Meh...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + + if(cbOptAll.Checked || cbOptSettingsUser.Checked) + { + DialogResult dialogResult = MessageBox.Show("Это удалит все локальные настройки пользователя в выбранных базах. \r\nВы уверены, что хотите этого?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (dialogResult != DialogResult.Yes) + return; + } + + int successfullyDeleted = 0; + int errorsOnDelete = 0; + double totalSizeDeleted = 0; + + List listSuccess = new List(); + List listError = new List(); + List listExceptions = new List(); + + foreach (DataGridViewRow row in checkedRows) + { + BaseRow baseRow = new BaseRow(); + baseRow.Id = row.Cells[baseData.col_Id.ColumnName].Value.ToString(); + baseRow.Name = row.Cells[baseData.col_BaseName.ColumnName].Value.ToString(); + baseRow.ConnectString = row.Cells[baseData.col_ConnectString.ColumnName].Value.ToString(); + + baseRow.FillSizesInRow(); + baseRow.GetLockedAndUserInfo(); + + if (cbOptAll.Checked) // Delete All + { + DeleteResults deleteResults = DeleteFoldersContent(baseRow.rootFolders, ""); + if (!deleteResults.isError) + { + successfullyDeleted++; + listSuccess.Add("[Полное] - " + baseRow.Name); + } + else + { + errorsOnDelete++; + listError.Add("[Полное] - " + baseRow.Name); + listExceptions.AddRange(deleteResults.listErrors); + } + totalSizeDeleted += deleteResults.sizeDeleted; + } + else + { + if (cbOptCacheProgram.Checked) // Delete ProgramCache + { + DeleteResults deleteResults = DeleteFoldersContent(baseRow.localCacheFolders, ""); + if (!deleteResults.isError) + { + successfullyDeleted++; + listSuccess.Add("[Кэш приложения] - " + baseRow.Name); + } + else + { + errorsOnDelete++; + listError.Add("[Кэш приложения] - " + baseRow.Name); + listExceptions.AddRange(deleteResults.listErrors); + } + totalSizeDeleted += deleteResults.sizeDeleted; + } + if (cbOptCacheUser.Checked) // Delete UserCache + { + DeleteResults deleteResults = DeleteFoldersContent(baseRow.userCacheFolders, ""); + if (!deleteResults.isError) + { + successfullyDeleted++; + listSuccess.Add("[Кэш пользователя] - " + baseRow.Name); + } + else + { + errorsOnDelete++; + listError.Add("[Кэш пользователя] - " + baseRow.Name); + listExceptions.AddRange(deleteResults.listErrors); + } + totalSizeDeleted += deleteResults.sizeDeleted; + } + if (cbOptSettingsUser.Checked) // Delete UserSettings + { + DeleteResults deleteResults = DeleteFoldersContent(baseRow.rootFolders, "*.pfl"); + if (!deleteResults.isError) + { + successfullyDeleted++; + listSuccess.Add("[Настройки пользователя] - " + baseRow.Name); + } + else + { + errorsOnDelete++; + listError.Add("[Настройки пользователя] - " + baseRow.Name); + listExceptions.AddRange(deleteResults.listErrors); + } + totalSizeDeleted += deleteResults.sizeDeleted; + } + } + } + + // Show results of operation + FormResults resultForm = new FormResults(); + resultForm.SetResults(successfullyDeleted, errorsOnDelete, totalSizeDeleted, + listSuccess, listError, listExceptions); + resultForm.ShowDialog(); + + BaseDataView_Refresh(); + } + + private DeleteResults DeleteFoldersContent(List ListOfFolders, string filterMask) + { + DeleteResults deleteResults = new DeleteResults(); + + deleteResults.isError = false; + deleteResults.sizeDeleted = 0; + deleteResults.listErrors = new List(); + foreach (string folderPath in ListOfFolders) + { + double folderSize = Convert.ToDouble(DirSize(new DirectoryInfo(folderPath), filterMask)); + + if (filterMask.Equals("")) // Clear by dirs + { + try + { + Directory.Delete(folderPath, true); + deleteResults.sizeDeleted += folderSize; + } + catch (Exception e) + { + deleteResults.isError = true; + deleteResults.listErrors.Add(e.Message); + } + } + else // Clear by Files + { + var filesFound = Directory.EnumerateFiles(folderPath, filterMask, SearchOption.AllDirectories); + foreach (var fi in filesFound) + { + try + { + new FileInfo(fi).Delete(); + deleteResults.sizeDeleted += folderSize; + } + catch (Exception e) + { + deleteResults.isError = true; + deleteResults.listErrors.Add(e.Message); + } + } + } + } + + deleteResults.sizeDeleted = deleteResults.sizeDeleted / 1024 / 1024; + return deleteResults; + } + + // CLEAR END + // ********************************************************************************************* + + private void Searh_ApplyFilter() + { + try + { + string queryString = String.Format("[{1}] LIKE '%{0}%' OR [{2}] LIKE '%{0}%'", + EscapeLikeValue(tbSearch.Text), baseData.col_BaseName.ColumnName, baseData.col_ConnectString.ColumnName); + baseData.dataTable.DefaultView.RowFilter = queryString; + } + catch { }; + } + private void ToggleInfoView() + { + int currentSize = Size.Width; + int expandWidth = new int[] { tbInfo.MinimumSize.Width, tbInfo.Size.Width }.Max() + 20; + int collpaseWidth = splitMain.SplitterDistance + splitMain.SplitterWidth; + + splitMain.Panel2Collapsed = !cbInfo.Checked; + cbInfo.Image = cbInfo.Checked ? Properties.Resources.arrows_16_L: Properties.Resources.arrows_16_R; + + int widthInfo = tbInfo.Size.Width; + // Adapt sizing + if (WindowState != FormWindowState.Maximized) + { + if(cbInfo.Checked) // Show + { + Size = new System.Drawing.Size(currentSize + expandWidth, Size.Height); + splitMain.SplitterDistance = currentSize - splitMain.SplitterWidth; + ShowRowInfo(); + } + else // Hide + { + Size = new System.Drawing.Size(collpaseWidth, Size.Height); + } + } + } + private void ShowRowInfo() + { + if (splitMain.Panel2Collapsed) + return; + + DataGridViewRow row = BaseDataView.CurrentRow; + + tbInfo.ResetText(); + if (row is null) + return; + BaseRow baseRow = new BaseRow(); + baseRow.Id = row.Cells[baseData.col_Id.ColumnName].Value.ToString(); + baseRow.FillSizesInRow(); + baseRow.GetLockedAndUserInfo(); + + tbInfo.AppendText("--- Информация о базе ---"); + tbInfo.AppendText("\r\nИмя: " + row.Cells[baseData.col_BaseName.ColumnName].Value); + tbInfo.AppendText("\r\nID: " + row.Cells[baseData.col_Id.ColumnName].Value); + tbInfo.AppendText("\r\nСтрока подключения: " + row.Cells[baseData.col_ConnectString.ColumnName].Value); + + tbInfo.AppendText("\r\n"); + tbInfo.AppendText("\r\nЗаблокировано (база открыта?): " + (baseRow.Locked ? "Да" : "Нет")); + tbInfo.AppendText("\r\nИмя пользователя при входе: " + (String.IsNullOrEmpty(baseRow.LastEnteredUser) ? "нет данных" : baseRow.LastEnteredUser)); + + double _SizeCacheUser = Convert.ToDouble(row.Cells[baseData.col_SizeCacheUser.ColumnName].Value); + double _SizeCacheProgram = Convert.ToDouble(row.Cells[baseData.col_SizeCacheProgram.ColumnName].Value); + double _SizeTotal = Convert.ToDouble(row.Cells[baseData.col_SizeTotal.ColumnName].Value); + tbInfo.AppendText("\r\n"); + tbInfo.AppendText("\r\nКэш пользователя: " + baseRow.SizeCacheUser.ToString("0.00") + " Mb"); + tbInfo.AppendText("\r\nКэш приложения: " + baseRow.SizeCacheProgram.ToString("0.00") + " Mb"); + tbInfo.AppendText("\r\nРазмер всего: " + baseRow.SizeTotal.ToString("0.00") + " Mb"); + + tbInfo.AppendText("\r\n"); + tbInfo.AppendText("\r\nКорневые каталоги: "); + foreach (string s in baseRow.rootFolders) + tbInfo.AppendText("\r\n > " + s); + + tbInfo.AppendText("\r\n"); + tbInfo.AppendText("\r\nКаталоги кэша приложения: "); + foreach (string s in baseRow.localCacheFolders) + tbInfo.AppendText("\r\n > " + s); + + tbInfo.AppendText("\r\n"); + tbInfo.AppendText("\r\nКаталоги кэша пользователя: "); + foreach (string s in baseRow.userCacheFolders) + tbInfo.AppendText("\r\n > " + s); + + tbInfo.AppendText("\r\n"); + } + private void BaseDataView_Refresh() + { + ReadV8iFile(); + LoadBasesToData(); + ShowRowInfo(); + } + private static string[] ReadFileContent(string pathToFile) + { + string fullPathToFile = Environment.ExpandEnvironmentVariables(pathToFile); + if (!File.Exists(fullPathToFile)) + { + return null; + } + return System.IO.File.ReadAllLines(fullPathToFile); + } + private static long DirSize(DirectoryInfo d, string filterMask) + { + long size = 0; + if (filterMask.Equals("")) + filterMask = "*.*"; + // Add file sizes. + if (!Directory.Exists(d.FullName)) + return size; + var filesFound = Directory.EnumerateFiles(d.FullName, filterMask, SearchOption.AllDirectories); + foreach (var fi in filesFound) + size += new FileInfo(fi).Length; + /* + FileInfo[] fis = d.GetFiles(); + foreach (FileInfo fi in fis) + { + size += fi.Length; + } + // Add subdirectory sizes. + DirectoryInfo[] dis = d.GetDirectories(); + foreach (DirectoryInfo di in dis) + { + size += DirSize(di, filterMask); + } + */ + return size; + } + private void ToggleCheck(bool checkState, bool cacheOnly) + { + foreach (DataGridViewRow row in BaseDataView.Rows) + { + if (checkState && cacheOnly) // Select only cache + row.Cells[baseData.col_Check.ColumnName].Value = Convert.ToDecimal(row.Cells[baseData.col_SizeCacheUser.ColumnName].Value) > 0; + else if (!cacheOnly) // Select/deselect all + row.Cells[baseData.col_Check.ColumnName].Value = checkState; + } + } + private void ToggleCheck_Selected() + { + var selectedRows = BaseDataView.SelectedRows; + bool nextState = true; + // Check the number of Cheked rows. If equals all - uncheck them + int checkedRows = 0; + foreach (DataGridViewRow row in selectedRows) + if (Convert.ToBoolean(row.Cells[baseData.col_Check.ColumnName].Value)) + checkedRows++; + if (checkedRows == selectedRows.Count) + nextState = false; + // do the stuff + foreach (DataGridViewRow row in selectedRows) + row.Cells[baseData.col_Check.ColumnName].Value = nextState; + } + private static string EscapeLikeValue(string valueWithoutWildcards) + { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < valueWithoutWildcards.Length; i++) + { + char c = valueWithoutWildcards[i]; + if (c == '*' || c == '%' || c == '[' || c == ']') + sb.Append("[").Append(c).Append("]"); + else if (c == '\'') + sb.Append("''"); + else + sb.Append(c); + } + return sb.ToString(); + } + private void SetToolTips() + { + ToolTip toolTip = new ToolTip(); + + string ClearCacheUser_ToolTip = "Для выбранных баз - удаляет только файлы кэша пользователя.\r\nПользовательские настройки сохраняются."; + string ClearCacheProgram_ToolTip = "Для выбранных баз - удаляет только файлы кэша приложения.\r\nПользовательские настройки сохраняются."; + string ClearSettingsUser_ToolTip = "Для выбранных баз - удаляет только файлы настроек пользователя.\r\nФайлы кэша сохраняются."; + string PurgeAll_ToolTip = "Для выбранных баз - удаляет все найденные в корневых каталогах файлы.\r\nПользовательские настройки будут удалены."; + string SmartSelect_ToolTip = "Выбрать только базы, в которых есть локальный кэш пользователя."; + string SelectAll_ToolTip = "Выбрать все базы в списке."; + string RemoveSelection_ToolTip = "Убрать выбор со всех баз в списке."; + + string Search_ToolTip = "Поиск по совпадению в имени базы или в строке подключения."; + string DropSearch_ToolTip = "Сбросить поиск."; + string Refresh_ToolTip = "Перезаполнить список баз."; + string Expand_ToolTip = "Показать\\Скрыть окно информации о выделенной строке."; + + string About_ToolTip = "О программе..."; + + toolTip.SetToolTip(cbOptCacheUser, ClearCacheUser_ToolTip); + toolTip.SetToolTip(cbOptCacheProgram, ClearCacheProgram_ToolTip); + toolTip.SetToolTip(cbOptSettingsUser, ClearSettingsUser_ToolTip); + toolTip.SetToolTip(cbOptAll, PurgeAll_ToolTip); + toolTip.SetToolTip(btnSelectCache, SmartSelect_ToolTip); + toolTip.SetToolTip(btnSelectAll, SelectAll_ToolTip); + toolTip.SetToolTip(btnUnselect, RemoveSelection_ToolTip); + + toolTip.SetToolTip(tbSearch, Search_ToolTip); + toolTip.SetToolTip(btnDropSearch, DropSearch_ToolTip); + toolTip.SetToolTip(btnRefresh, Refresh_ToolTip); + toolTip.SetToolTip(cbInfo, Expand_ToolTip); + + toolTip.SetToolTip(btnAbout, About_ToolTip); + } + } +} diff --git a/ClearCache1C/Form1.resx b/ClearCache1C/FormMain.resx similarity index 96% rename from ClearCache1C/Form1.resx rename to ClearCache1C/FormMain.resx index b49c6e5..3637e5f 100644 --- a/ClearCache1C/Form1.resx +++ b/ClearCache1C/FormMain.resx @@ -118,27 +118,15 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGeYUxB9wAAAO1pQ0NQUGhv dG9zaG9wIElDQyBwcm9maWxlAAAoz2NgYJzh6OLkyiTAwJCbV1LkHuQYGREZpcB+noGNgZkBDBKTiwsc AwJ8QOy8/LxUBlTAyMDw7RqIZGC4rAsyi4E0wJpcUFQCpA8AsVFKanEykP4CxJnlJQVAccYEIFskKRvM BqkTyQ4JcgayO4BsvpLUCpAYg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoK UC3UDhDgdy9KrFRwT8zNTVQw0jNioDoAhSWE9TkEHEaMYucRYgiQXFpUBgtPJmMGBgBLGzgw6GaaaQAA - AAlwSFlzAAALEwAACxMBAJqcGAAAACBJREFUOE9jAIL/FGKG/+SCUQNGDQCBUQOoaQD5mOE/ALwPSOI5 - CblOAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGeYUxB9wAAAO1pQ0NQUGhv - dG9zaG9wIElDQyBwcm9maWxlAAAoz2NgYJzh6OLkyiTAwJCbV1LkHuQYGREZpcB+noGNgZkBDBKTiwsc - AwJ8QOy8/LxUBlTAyMDw7RqIZGC4rAsyi4E0wJpcUFQCpA8AsVFKanEykP4CxJnlJQVAccYEIFskKRvM - BqkTyQ4JcgayO4BsvpLUCpAYg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoK - UC3UDhDgdy9KrFRwT8zNTVQw0jNioDoAhSWE9TkEHEaMYucRYgiQXFpUBgtPJmMGBgBLGzgw6GaaaQAA - AAlwSFlzAAALEwAACxMBAJqcGAAAAFxJREFUOE/VjEsOgDAIBVlx/xujTYYqWPzUjU7yFjxgZMVeRmyW - Hwp4YHoo8GfPrjsYmTa8z3vmYOtxqr5BVx/nZOiH1hBVZRthX5p7KtiPD66eG6eCO3xIMB+xBcMg0V0g - dEfYAAAAAElFTkSuQmCC + AAlwSFlzAAALEwAACxMBAJqcGAAAACJJREFUOE9jUFBQ+E8JBhtALhg1YNQAEBg1gJoGkI8V/gMAfgFf + Yj42DjoAAAAASUVORK5CYII= diff --git a/ClearCache1C/Form2.Designer.cs b/ClearCache1C/FormResults.Designer.cs similarity index 52% rename from ClearCache1C/Form2.Designer.cs rename to ClearCache1C/FormResults.Designer.cs index 25e5920..9337799 100644 --- a/ClearCache1C/Form2.Designer.cs +++ b/ClearCache1C/FormResults.Designer.cs @@ -1,6 +1,6 @@ namespace ClearCache1C { - partial class FormResult + partial class FormResults { /// /// Required designer variable. @@ -28,32 +28,36 @@ /// private void InitializeComponent() { - this.InfoResult = new System.Windows.Forms.TextBox(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormResults)); + this.tbResults = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // - // InfoResult + // tbResults // - this.InfoResult.BackColor = System.Drawing.SystemColors.Info; - this.InfoResult.Dock = System.Windows.Forms.DockStyle.Fill; - this.InfoResult.Location = new System.Drawing.Point(0, 0); - this.InfoResult.Multiline = true; - this.InfoResult.Name = "InfoResult"; - this.InfoResult.ReadOnly = true; - this.InfoResult.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.InfoResult.Size = new System.Drawing.Size(464, 461); - this.InfoResult.TabIndex = 0; + this.tbResults.BackColor = System.Drawing.SystemColors.Info; + this.tbResults.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbResults.Location = new System.Drawing.Point(0, 0); + this.tbResults.Multiline = true; + this.tbResults.Name = "tbResults"; + this.tbResults.ReadOnly = true; + this.tbResults.Size = new System.Drawing.Size(454, 499); + this.tbResults.TabIndex = 0; // - // FormResult + // FormResults // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(464, 461); - this.Controls.Add(this.InfoResult); - this.Name = "FormResult"; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.ClientSize = new System.Drawing.Size(454, 499); + this.Controls.Add(this.tbResults); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FormResults"; this.ShowIcon = false; this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Результат удаления"; - this.Load += new System.EventHandler(this.FormResult_Load); this.ResumeLayout(false); this.PerformLayout(); @@ -61,6 +65,6 @@ #endregion - private System.Windows.Forms.TextBox InfoResult; + private System.Windows.Forms.TextBox tbResults; } } \ No newline at end of file diff --git a/ClearCache1C/FormResults.cs b/ClearCache1C/FormResults.cs new file mode 100644 index 0000000..360fcc3 --- /dev/null +++ b/ClearCache1C/FormResults.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ClearCache1C +{ + public partial class FormResults : Form + { + public FormResults() + { + InitializeComponent(); + } + + public void SetResults(int successfullyDeleted, int errorsOnDelete, double totalSizeDeleted, + List listSuccess, List listError, List listExceptions) + { + tbResults.ResetText(); + tbResults.AppendText("--- Итоги ---"); + tbResults.AppendText("\r\nВыполнено успешно: " + successfullyDeleted); + tbResults.AppendText("\r\nВыполнено с ошибками: " + errorsOnDelete); + tbResults.AppendText("\r\nВсего удалено: " + totalSizeDeleted.ToString("0.00") + " Mb"); + tbResults.AppendText("\r\n"); + tbResults.AppendText("\r\n--- Список обработанных успешно ---"); + foreach (string s in listSuccess) + tbResults.AppendText("\r\n > " + s); + tbResults.AppendText("\r\n"); + tbResults.AppendText("\r\n--- Список обработанных с ошибками ---"); + foreach (string s in listError) + { + tbResults.AppendText("\r\n > " + s); + } + tbResults.AppendText("\r\n"); + tbResults.AppendText("\r\n--- Лог ошибок ---"); + foreach (string s in listExceptions) + tbResults.AppendText("\r\n > " + s); + } + } +} diff --git a/ClearCache1C/FormResults.resx b/ClearCache1C/FormResults.resx new file mode 100644 index 0000000..a9887f0 --- /dev/null +++ b/ClearCache1C/FormResults.resx @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA + IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMW + IRATFiFAFBciIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSoyMCosNDAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW + If8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiGAAAAAAAAA + AAAAAAAAExYhEBMWIc8UFyH/Fhkj7xgbJTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKjKfKiwz/ywu + Nf8uMDePAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW + If8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW + If8TFiFgAAAAAAAAAAATFiEQExYhzxQXIf8WGSP/GBsl/xodJ+8cHygwAAAAAAAAAAAAAAAAAAAAACgq + Mp8qLDP/LC41/y4wN/8wMjj/MjQ6gAAAAAAAAAAAAAAAAAAAAAAAAAAAFBci/xQXIv8UFyL/FBci/xQX + Iv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQX + Iv8UFyL/FBci/xQXIWAAAAAAAAAAAAAAAAATFiFAFBch/xYZI/8YGyX/Gh0n/xwfKP8fISrvISMsMAAA + AAAAAAAAKCoynyosM/8sLjX/LjA3/zAyOP8zNDr/NTY87wAAAAAAAAAAAAAAAAAAAAAAAAAAFRgj/xUY + I/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUY + I/8VGCP/FRgj/xUYI/8VGCP/FRgjvwAAAAAAAAAAAAAAAAAAAAAUFyIgFhkj7xgbJf8aHSf/HB8o/x8h + Kv8hIyz/IyUu7yUnMDAoKjKfKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg9rwAAAAAAAAAAAAAAAAAA + AAAAAAAAFxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZ + JP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJJ8AAAAAAAAAAAAAAAAAAAAAGBslMBod + J+8cHyj/HyEq/yEjLP8jJS7/JScw/ycpMf8qLDP/LC41/y4wN/8wMjj/MzQ6/zU2PP83OD3PODk+EAAA + AAAAAAAAAAAAAAAAAAAAAAAAGBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgb + Jf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyWfAAAAAAAA + AAAAAAAAAAAAABwfKDAfISrvISMs/yMlLv8lJzD/Jykx/yosM/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4 + Pc84OT4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkc + Jv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkc + Jv8ZHCb/GRwmnwAAAAAAAAAAAAAAAAAAAAAhIywwIyUu7yUnMP8nKTH/Kiwz/ywuNf8uMDf/MDI4/zM0 + Ov81Njz/Nzg9zzg5PhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx0n/xsdJ/8bHSf/Gx0n/xsd + J/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsd + J/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ58AAAAAAAAAAAAAAAAAAAAAJScwMCcpMf8qLDP/LC41/y4w + N/8wMjj/MzQ6/zU2PP83OD3PODk+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHB8o/xwf + KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf + KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyiPAAAAAAAAAAAAAAAAKCoynyos + M/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4Pv85Oj/vOzxBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHSAp/x0gKf8dICn/HSAp/x0gKf8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf + KP8cHyj/HB8o/xwfKP8cHyj/HB8o/x0gKf8dICn/HSAp/x0gKf8dICn/HSAp/x0fKe8dHykwAAAAAAAA + AAAoKjKfKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg+/zk6P/87PEH/Pj5D70BBRTAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHyEq/x8hKv8fISr/HyEq/x8hKv8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf + KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/x8hKv8fISr/HyEq/x8hKv8fISr/HiEq7x4g + KjAAAAAAAAAAACgqMp8qLDP/LC41/y4wN/8wMjj/MzQ6/zU2PP83OD7/OTo//zs8Qf8+PkP/QEFF/0JD + Ru9ERUgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICIr/yAiK/8gIiv/ICIr/yAiK/8cHyj/HB8o/xwf + KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/yAiK/8gIiv/ICIr/yAi + K/8gIivvHyIrMAAAAAAAAAAAKCoynyosM/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4Pc85Oj/vOzxB/z4+ + Q/9AQUX/QkNG/0RFSP9GR0rvSUlMMAAAAAAAAAAAAAAAAAAAAAAAAAAAISQs/yEkLP8hJCz/ISQs/yEk + LP8hJCz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISQs/yEkLP8hJCz/ISQs/yEk + LP8hJCz/ISQs/yEjLO8hIywwAAAAAAAAAAApKjIwKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg9zzg5 + PhA7PEEwPj5D70BBRf9CQ0b/REVI/0ZHSv9JSUz/S0tOzwAAAAAAAAAAAAAAAAAAAAAAAAAAIyUt/yMl + Lf8jJS3/IyUt/yMlLf8jJS3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyUt/yMl + Lf8jJS3/IyUt/yMlLf8jJS3/IiUt7yIkLTAAAAAAAAAAAAAAAAAqLDQwLC41/y4wN/8wMjj/MzQ6/zU2 + PP83OD3PODk+EAAAAAAAAAAAQEFFMEJDRu9ERUj/RkdK/0lJTP9LS07/TU1PzwAAAAAAAAAAAAAAAAAA + AAAAAAAAJCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQm + L/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv7yQmLzAAAAAAAAAAAAAAAAAAAAAALjA3nzAy + OP8zNDr/NTY8/zc4Pc84OT4QAAAAAAAAAAAAAAAAAAAAAERFSDBGR0rvSUlM/0tLTv9NTU/vTk5QMAAA + AAAAAAAAAAAAAAAAAAAAAAAAJScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUn + MP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMO8mKDAwAAAAAAAA + AAAAAAAAAAAAADI0Oo81NjzvNzg9rzg5PhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJSUwwS0tO301N + T99OTlAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycp + Mf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycp + Mf8nKTHvJykxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcpMTAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCoy/ygqMv8oKjL/KCoy/ygq + Mv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq + Mv8oKjL/KCoy/ygqMv8oKjL/KCoy7ygqMjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCoyYCgq + Mr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSsz/ykr + M/8pKzP/KSsz/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq + Mv8oKjL/KCoy/ykrM/8pKzP/KSsz/ykrM/8pKzP/KSsz/ykrM+8qLDMwAAAAAAAAAAAAAAAAAAAAAAAA + AAAqLDNgKSsz/ykrM78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAKy00/ystNP8rLTT/Ky00/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq + Mv8oKjL/KCoy/ygqMv8oKjL/KCoy/ystNP8rLTT/Ky00/ystNP8rLTT/Ky00/ystNP8rLTTvKy00MAAA + AAAAAAAAAAAAACstNGArLTT/Ky00/ystNL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAALC41/ywuNf8sLjX/LC41/ywuNf8sLjX/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAALC41/ywuNf8sLjX/LC41/ywuNf8sLjX/LC41/ywuNf8sLjX/LC41/ywu + Nf8sLjX/LC417ywuNTAAAAAALC41YCwuNf8sLjX/LC41/ywuNb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS82/y0vNv8tLzb/LS82/y0vNv8tLzb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS82/y0vNv8tLzb/LS82/y0vNv8tLzb/LS82/y0v + Nv8tLzb/LS82/y0vNv8tLzb/LS82/y0vNu8uLzaALS82/y0vNv8tLzb/LS82/y0vNr8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALzA3/y8wN/8vMDf/LzA3/y8w + N/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8w + N/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8w + N78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDI4/zAy + OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy + OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy + OP8wMjj/MDI4/zAyOL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAMTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz + Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz + Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAMzQ6/zM0Ov8zNDr/MzQ6/zM0Ov8zNDr/MTM5/zEzOf8xMzn/MTM5/zEz + Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zM0Ov8zNDr/MzQ6/zM0 + Ov8zNDr/MzQ6/zM0Ov8zNDr/MzQ6/zM0Ov8zNDr/MzQ6/zM0Or8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/MTM5/zEz + Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zQ1 + O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O78AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTc8/zU3PP81Nzz/NTc8/zU3 + PP81Nzz/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz + Of8xMzn/MTM5/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3 + PL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzg+/zc4 + Pv83OD7/Nzg+/zc4Pv83OD7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAANzg+/zc4Pv83OD7/Nzg+/zc4Pv83OD7/Nzg+/zc4Pv83OD7/Nzg+/zc4 + Pv83OD7/Nzg+/zc4Pr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAODk//zg5P/84OT//ODk//zg5P/84OT//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODk//zg5P/84OT//ODk//zg5P/84OT//ODk//zg5 + P/84OT//ODk//zg5P/84OT//ODk//zg5P78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAOjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7 + QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7 + QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8 + Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8 + Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qb8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD1C/zw9Qv88PUL/PD1C/zw9 + Qv88PUL/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8 + Qf87PEH/OzxB/zw9Qv88PUL/PD1Cvzw9Qr88PUK/PD1Cvzw9Qr88PUK/PD1Cvzw9Qr88PUK/PD1Cvzw9 + Qo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj5D/z4+ + Q/8+PkP/Pj5D/z4+Q/8+PkP/PD1C/zw9Qv88PUL/PD1C/zw9Qv88PUL/PD1C/zw9Qv88PUL/PD1C/zw9 + Qv88PUL/PD1C/zw9Qv88PUL/PD1C/z4+Q/8+PkP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAP0BE/z9ARP8/QET/P0BE/z9ARP8/QET/PT1C/z09Qv89PUL/PT1C/z09Qv89PUL/PT1C/z09 + Qv89PUL/PT1C/z09Qv89PUL/PT1C/z09Qv89PUL/PT1C/z9ARP8/QET/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAQEFF/0BBRf9AQUX/QEFF/0BBRf9AQUX/Pj5D/z4+Q/8+PkP/Pj5D/z4+ + Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/0BBRf9AQUX/AAAAAAAA + AABAQUXXQEFFv0BBRb9AQUW/QEFFv0BBRb9AQUW/QEFFr0BBRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkJG/0JCRv9CQkb/QkJG/0JCRv9CQkb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkJG/0JC + Rv9CQkb/AAAAAAAAAABCQkb/QkJG/0JCRv9CQkb/QkJG/0JCRv9CQkb/QUJGYAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0NH/0NDR/9DQ0f/Q0NH/0ND + R/9DQ0f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAQ0NH/0NDR/9DQ0f/AAAAAAAAAABDQ0f/Q0NH/0NDR/9DQ0f/Q0NH/0NDR/9DQ0efAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREVI/0RF + SP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RF + SP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/AAAAAAAAAABERUj/REVI/0RFSP9ERUj/REVI/0RE + SM8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAARkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZG + Sf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/AAAAAAAAAABGRkn/RkZJ/0ZG + Sf9GRkn/RUZJ70VGSSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAR0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dH + Sv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/AAAAAAAA + AABHR0r/R0dK/0dHSv9HR0r/R0dKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJ + S/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJ + S/9ISUv/AAAAAAAAAABISUv/SElL/0hJS/9ISEuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpN/0pKTf9KSk3/SkpN/0pK + Tf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pK + Tf9KSk3/SkpN/0pKTf9KSk3/AAAAAAAAAABKSk3/SkpN/0lKTK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0tO/0tL + Tv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tL + Tv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/AAAAAAAAAABLS03vS0tN30pKTRAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAATExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xM + 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 + AAAAAAAAAAAAAAAAAAAAAAAALC41/iwuNf8sLjX/LC41/ywuNf8sLjX+LC41/CwuNcctLjV8LC417Cwu + Nf4sLjXTMzQ6AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuMDb/LjA2/y4wNv4uMDb+LjA2/i4w + Nv0uMDb9LjA2/S4wNv0uMDb9LjA2/i4wNv4uMDb+LjA2/y4wNv8uMDb/LjA2/y4wNv4uMDb+LjA2/i4w + Nv4uMDb+LjA2/i8wN9MxMzkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAyOP8wMjj/MDI4/zAy + OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy + OP8wMjj/MDI4/zAyOP8wMjj+MDI40zEzOQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjQ5/zIz + Of8yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jI0 + Of4yNDn/MjQ5/zI0Of8yNDn/MjQ5/zI0Of4yMznTMjM5AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA0Njv/NDU7/zQ1O/40NTv+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA0NTv2NDY7/jQ2O/80Njv/NDY7/zQ2O/80Njv/NDY7/jQ1O9MzNDoBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADY4Pf82Nz3/Njc9/jY3Pf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADY3Peo2OD3+Njg9/zY4Pf82OD3/Njg9/zY4Pf82OD3+Njc90zU2PAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAOTo//zo6P/87O0D/OztA/zs7QP87O0D/OztA/zs7QP87O0D/OztA/zs7 + QP87O0D/OztA/zs7QP87O0D/ODo/+Dk6P/45Oj/+OTo//jk6P/45Oj/+OTo//jk6P/44OT7SNjc9AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7O0D/OztA/zs7QP47O0D+OztA/js7QP47O0D+OztA/js7 + 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 + AAAA/wAAAI8AAD6PAAAAnwAAAL8AAA== + + + \ No newline at end of file diff --git a/ClearCache1C/Properties/AssemblyInfo.cs b/ClearCache1C/Properties/AssemblyInfo.cs index 8027dac..b60d67e 100644 --- a/ClearCache1C/Properties/AssemblyInfo.cs +++ b/ClearCache1C/Properties/AssemblyInfo.cs @@ -5,12 +5,12 @@ using System.Runtime.InteropServices; // Общие сведения об этой сборке предоставляются следующим набором // набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, // связанные со сборкой. -[assembly: AssemblyTitle("Чистка кэша 1С")] +[assembly: AssemblyTitle("ClearCache1C")] [assembly: AssemblyDescription("Чистка кэша 1С")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ClearCache1C")] -[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyCopyright("GNU GPL v3")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -20,7 +20,7 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] // Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM -[assembly: Guid("ca37faa9-7c77-4c16-81a4-3bbd93f235a1")] +[assembly: Guid("2d3ea215-f5c4-435b-922e-f985af0065cb")] // Сведения о версии сборки состоят из следующих четырех значений: // @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Можно задать все значения или принять номер сборки и номер редакции по умолчанию. // используя "*", как показано ниже: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.1.0")] -[assembly: AssemblyFileVersion("1.0.1.0")] +[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyFileVersion("1.0.2.0")] diff --git a/ClearCache1C/Properties/Resources.Designer.cs b/ClearCache1C/Properties/Resources.Designer.cs index c312ffa..22b1124 100644 --- a/ClearCache1C/Properties/Resources.Designer.cs +++ b/ClearCache1C/Properties/Resources.Designer.cs @@ -63,9 +63,29 @@ namespace ClearCache1C.Properties { /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ai_full_logo___clean { + internal static System.Drawing.Bitmap ai_logo { get { - object obj = ResourceManager.GetObject("ai-full logo - clean", resourceCulture); + object obj = ResourceManager.GetObject("ai_logo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrows_16_L { + get { + object obj = ResourceManager.GetObject("arrows_16_L", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrows_16_R { + get { + object obj = ResourceManager.GetObject("arrows_16_R", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -80,6 +100,16 @@ namespace ClearCache1C.Properties { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icon_refresh_24 { + get { + object obj = ResourceManager.GetObject("icon_refresh_24", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// @@ -99,5 +129,15 @@ namespace ClearCache1C.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap x_mark_16 { + get { + object obj = ResourceManager.GetObject("x-mark_16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/ClearCache1C/Properties/Resources.resx b/ClearCache1C/Properties/Resources.resx index 00a5e3f..0ff9f93 100644 --- a/ClearCache1C/Properties/Resources.resx +++ b/ClearCache1C/Properties/Resources.resx @@ -118,16 +118,28 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\icon_select_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon_smart_select_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon_refresh_24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icon_deselect_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon_smart_select_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon_select_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ai-full logo - clean.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\arrows_16_L.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ai-logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrows_16_R.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\x-mark_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/ClearCache1C/Properties/Settings.Designer.cs b/ClearCache1C/Properties/Settings.Designer.cs index 4db35b4..23c2174 100644 --- a/ClearCache1C/Properties/Settings.Designer.cs +++ b/ClearCache1C/Properties/Settings.Designer.cs @@ -1,28 +1,24 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. // //------------------------------------------------------------------------------ -namespace ClearCache1C.Properties -{ - - +namespace ClearCache1C.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } diff --git a/ClearCache1C/Properties/app.manifest b/ClearCache1C/Properties/app.manifest deleted file mode 100644 index 5b8f607..0000000 --- a/ClearCache1C/Properties/app.manifest +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ClearCache1C/Resources/ai-full logo - clean.PNG b/ClearCache1C/Resources/ai-logo.png similarity index 100% rename from ClearCache1C/Resources/ai-full logo - clean.PNG rename to ClearCache1C/Resources/ai-logo.png diff --git a/ClearCache1C/Resources/arrows_16_L.png b/ClearCache1C/Resources/arrows_16_L.png new file mode 100644 index 0000000000000000000000000000000000000000..953e4ed505e3ba2107e5cfd5cef182633209dab2 GIT binary patch literal 3027 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 VPk)78s-pk^002ovPDHLkV1nmUr$Yb$ literal 0 HcmV?d00001 diff --git a/ClearCache1C/Resources/arrows_16_R.png b/ClearCache1C/Resources/arrows_16_R.png new file mode 100644 index 0000000000000000000000000000000000000000..5e2f2b1e1cdf4fbc24e630b016cb6ce65ab6c7f3 GIT binary patch literal 3027 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 diff --git a/ClearCache1C/Resources/icon_refresh_24.png b/ClearCache1C/Resources/icon_refresh_24.png new file mode 100644 index 0000000000000000000000000000000000000000..3962864ec68fbf61af656a6f988bae42ecb5ffcf GIT binary patch literal 4027 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 O0000 - - - \ No newline at end of file