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 b2e0d35..0000000 Binary files a/ClearCache1C/1C_120.ico and /dev/null differ 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 0000000..959b4a8 Binary files /dev/null and b/ClearCache1C/Builds/Чистка кэша 1С v1.0.2.exe differ diff --git a/ClearCache1C/ClearCache1C.csproj b/ClearCache1C/ClearCache1C.csproj index 58e602f..d52bc3c 100644 --- a/ClearCache1C/ClearCache1C.csproj +++ b/ClearCache1C/ClearCache1C.csproj @@ -4,15 +4,13 @@ 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 0000000..953e4ed Binary files /dev/null and b/ClearCache1C/Resources/arrows_16_L.png differ diff --git a/ClearCache1C/Resources/arrows_16_R.png b/ClearCache1C/Resources/arrows_16_R.png new file mode 100644 index 0000000..5e2f2b1 Binary files /dev/null and b/ClearCache1C/Resources/arrows_16_R.png differ diff --git a/ClearCache1C/Resources/icon_deselect_16.PNG b/ClearCache1C/Resources/icon_deselect_16.PNG index 250200a..f1137b5 100644 Binary files a/ClearCache1C/Resources/icon_deselect_16.PNG and b/ClearCache1C/Resources/icon_deselect_16.PNG differ diff --git a/ClearCache1C/Resources/icon_refresh_24.png b/ClearCache1C/Resources/icon_refresh_24.png new file mode 100644 index 0000000..3962864 Binary files /dev/null and b/ClearCache1C/Resources/icon_refresh_24.png differ diff --git a/ClearCache1C/Resources/x-mark_16.png b/ClearCache1C/Resources/x-mark_16.png new file mode 100644 index 0000000..3563e83 Binary files /dev/null and b/ClearCache1C/Resources/x-mark_16.png differ diff --git a/ClearCache1C/Custom-Icon-Design-Mini-File-delete.ico b/ClearCache1C/app.ico similarity index 100% rename from ClearCache1C/Custom-Icon-Design-Mini-File-delete.ico rename to ClearCache1C/app.ico diff --git a/ClearCache1C/packages.config b/ClearCache1C/packages.config deleted file mode 100644 index 142ece2..0000000 --- a/ClearCache1C/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file