From b8aece8fe5a461831ebf45ea69fec75da2be4ce4 Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:03:13 +0800 Subject: [PATCH 01/11] remove _archived --- _archived/DragNDrop/AssemblyInfo.cs | 58 - _archived/DragNDrop/DragAndDropListView.cs | 404 -- _archived/DragNDrop/DragAndDropListView.resx | 42 - _archived/DragNDrop/DragNDrop.csproj | 133 - _archived/DragNDrop/DragNDrop.dll | Bin 20480 -> 0 bytes _archived/HUB/Class1.cs | 8 - _archived/HUB/HUB.csproj | 7 - _archived/README.md | 65 - _archived/StarRatingControl/AssemblyInfo.cs | 58 - .../StarRatingControl/StarRatingControl.cs | 349 -- .../StarRatingControl.csproj | 129 - .../StarRatingControl/StarRatingControl.resx | 42 - .../Enumerations/CheckBoxState.cs | 15 - .../ThreeStateTreeView/ThreeStateTreeView.cs | 80 - .../ThreeStateTreeView.csproj | 80 - _archived/cleanup_deadlock.bat | 42 - _archived/dotnet-desktop.yml.backup | 89 - _archived/varManager.sln | 48 - _archived/varManager/App.config | 58 - _archived/varManager/Backend/BackendClient.cs | 220 - .../varManager/Backend/BackendSession.cs | 263 -- _archived/varManager/Comm.cs | 459 -- .../varManager/Custom/Scripts/MorphMerger.cs | 592 --- .../varManager/Custom/Scripts/loadscene.cs | 726 --- .../varManager/Data/VarManagerContext.cs | 225 - _archived/varManager/Form1.Designer.cs | 1660 ------- _archived/varManager/Form1.cs | 4008 ----------------- _archived/varManager/Form1.resx | 424 -- _archived/varManager/Form2.Designer.cs | 40 - _archived/varManager/Form2.cs | 20 - _archived/varManager/FormAnalysis.Designer.cs | 449 -- _archived/varManager/FormAnalysis.cs | 1242 ----- _archived/varManager/FormAnalysis.resx | 293 -- _archived/varManager/FormHub.Designer.cs | 679 --- _archived/varManager/FormHub.cs | 1118 ----- _archived/varManager/FormHub.resx | 411 -- .../varManager/FormMissingVars.Designer.cs | 771 ---- _archived/varManager/FormMissingVars.cs | 598 --- _archived/varManager/FormMissingVars.resx | 366 -- _archived/varManager/FormScenes.Designer.cs | 1023 ----- _archived/varManager/FormScenes.cs | 1275 ------ _archived/varManager/FormScenes.resx | 299 -- _archived/varManager/FormSettings.Designer.cs | 224 - _archived/varManager/FormSettings.cs | 83 - _archived/varManager/FormSettings.resx | 129 - .../varManager/FormStaleVars.Designer.cs | 166 - _archived/varManager/FormStaleVars.cs | 27 - _archived/varManager/FormStaleVars.resx | 120 - .../varManager/FormSwitchAdd.Designer.cs | 93 - _archived/varManager/FormSwitchAdd.cs | 34 - _archived/varManager/FormSwitchAdd.resx | 120 - .../varManager/FormSwitchRename.Designer.cs | 119 - _archived/varManager/FormSwitchRename.cs | 45 - _archived/varManager/FormSwitchRename.resx | 120 - .../varManager/FormUninstallVars.Designer.cs | 617 --- _archived/varManager/FormUninstallVars.cs | 297 -- _archived/varManager/FormUninstallVars.resx | 150 - .../varManager/FormVarDetail.Designer.cs | 294 -- _archived/varManager/FormVarDetail.cs | 201 - _archived/varManager/FormVarDetail.resx | 141 - _archived/varManager/FormVarsMove.Designer.cs | 185 - _archived/varManager/FormVarsMove.cs | 44 - _archived/varManager/FormVarsMove.resx | 120 - _archived/varManager/HubItem.Designer.cs | 311 -- _archived/varManager/HubItem.cs | 420 -- _archived/varManager/HubItem.resx | 123 - .../20250807184700_Initial.Designer.cs | 251 -- .../Migrations/20250807184700_Initial.cs | 143 - .../VarManagerContextModelSnapshot.cs | 248 - _archived/varManager/Models/Dependency.cs | 17 - _archived/varManager/Models/HideFav.cs | 17 - _archived/varManager/Models/InstallStatus.cs | 15 - .../varManager/Models/SavedDependency.cs | 21 - _archived/varManager/Models/Scene.cs | 26 - _archived/varManager/Models/ScenesView.cs | 21 - _archived/varManager/Models/Var.cs | 71 - _archived/varManager/PrepareSaves.Designer.cs | 222 - _archived/varManager/PrepareSaves.cs | 273 -- _archived/varManager/PrepareSaves.resx | 123 - _archived/varManager/Program.cs | 21 - .../varManager/Properties/AssemblyInfo.cs | 37 - .../Properties/Resources.Designer.cs | 143 - .../varManager/Properties/Resources.resx | 145 - .../Properties/Settings.Designer.cs | 144 - .../varManager/Properties/Settings.settings | 38 - _archived/varManager/Resources/IconHub.ico | Bin 45451 -> 0 bytes _archived/varManager/Resources/hub.ico | Bin 16958 -> 0 bytes _archived/varManager/Resources/hub.png | Bin 4127 -> 0 bytes _archived/varManager/Resources/star.psd | Bin 106490 -> 0 bytes _archived/varManager/Resources/starEmpty.png | Bin 5181 -> 0 bytes _archived/varManager/Resources/starFull.png | Bin 5159 -> 0 bytes _archived/varManager/Resources/starHalf.png | Bin 6457 -> 0 bytes .../varManager/Resources/starOneQuarter.png | Bin 6370 -> 0 bytes .../varManager/Resources/starTriQuarter.png | Bin 6634 -> 0 bytes .../varManager/Resources/vam_logo_hub.png | Bin 7720 -> 0 bytes _archived/varManager/SimpleJSON/JSON.cs | 14 - _archived/varManager/SimpleJSON/JSONArray.cs | 173 - .../varManager/SimpleJSON/JSONBinaryTag.cs | 23 - _archived/varManager/SimpleJSON/JSONClass.cs | 259 -- _archived/varManager/SimpleJSON/JSONData.cs | 112 - .../varManager/SimpleJSON/JSONLazyCreator.cs | 236 - _archived/varManager/SimpleJSON/JSONNode.cs | 695 --- _archived/varManager/SimpleLogger.cs | 167 - _archived/varManager/ThreeStateTreeview.cs | 279 -- _archived/varManager/VarManager.ico | Bin 9662 -> 0 bytes _archived/varManager/app.manifest | 78 - _archived/varManager/icoVarManager.ico | Bin 9662 -> 0 bytes _archived/varManager/meta.json | 456 -- _archived/varManager/vam.png | Bin 19715 -> 0 bytes _archived/varManager/varManager.csproj | 305 -- _archived/varManager/varManager.mdb | Bin 413696 -> 0 bytes 111 files changed, 27824 deletions(-) delete mode 100644 _archived/DragNDrop/AssemblyInfo.cs delete mode 100644 _archived/DragNDrop/DragAndDropListView.cs delete mode 100644 _archived/DragNDrop/DragAndDropListView.resx delete mode 100644 _archived/DragNDrop/DragNDrop.csproj delete mode 100644 _archived/DragNDrop/DragNDrop.dll delete mode 100644 _archived/HUB/Class1.cs delete mode 100644 _archived/HUB/HUB.csproj delete mode 100644 _archived/README.md delete mode 100644 _archived/StarRatingControl/AssemblyInfo.cs delete mode 100644 _archived/StarRatingControl/StarRatingControl.cs delete mode 100644 _archived/StarRatingControl/StarRatingControl.csproj delete mode 100644 _archived/StarRatingControl/StarRatingControl.resx delete mode 100644 _archived/ThreeStateTreeView/Enumerations/CheckBoxState.cs delete mode 100644 _archived/ThreeStateTreeView/ThreeStateTreeView.cs delete mode 100644 _archived/ThreeStateTreeView/ThreeStateTreeView.csproj delete mode 100644 _archived/cleanup_deadlock.bat delete mode 100644 _archived/dotnet-desktop.yml.backup delete mode 100644 _archived/varManager.sln delete mode 100644 _archived/varManager/App.config delete mode 100644 _archived/varManager/Backend/BackendClient.cs delete mode 100644 _archived/varManager/Backend/BackendSession.cs delete mode 100644 _archived/varManager/Comm.cs delete mode 100644 _archived/varManager/Custom/Scripts/MorphMerger.cs delete mode 100644 _archived/varManager/Custom/Scripts/loadscene.cs delete mode 100644 _archived/varManager/Data/VarManagerContext.cs delete mode 100644 _archived/varManager/Form1.Designer.cs delete mode 100644 _archived/varManager/Form1.cs delete mode 100644 _archived/varManager/Form1.resx delete mode 100644 _archived/varManager/Form2.Designer.cs delete mode 100644 _archived/varManager/Form2.cs delete mode 100644 _archived/varManager/FormAnalysis.Designer.cs delete mode 100644 _archived/varManager/FormAnalysis.cs delete mode 100644 _archived/varManager/FormAnalysis.resx delete mode 100644 _archived/varManager/FormHub.Designer.cs delete mode 100644 _archived/varManager/FormHub.cs delete mode 100644 _archived/varManager/FormHub.resx delete mode 100644 _archived/varManager/FormMissingVars.Designer.cs delete mode 100644 _archived/varManager/FormMissingVars.cs delete mode 100644 _archived/varManager/FormMissingVars.resx delete mode 100644 _archived/varManager/FormScenes.Designer.cs delete mode 100644 _archived/varManager/FormScenes.cs delete mode 100644 _archived/varManager/FormScenes.resx delete mode 100644 _archived/varManager/FormSettings.Designer.cs delete mode 100644 _archived/varManager/FormSettings.cs delete mode 100644 _archived/varManager/FormSettings.resx delete mode 100644 _archived/varManager/FormStaleVars.Designer.cs delete mode 100644 _archived/varManager/FormStaleVars.cs delete mode 100644 _archived/varManager/FormStaleVars.resx delete mode 100644 _archived/varManager/FormSwitchAdd.Designer.cs delete mode 100644 _archived/varManager/FormSwitchAdd.cs delete mode 100644 _archived/varManager/FormSwitchAdd.resx delete mode 100644 _archived/varManager/FormSwitchRename.Designer.cs delete mode 100644 _archived/varManager/FormSwitchRename.cs delete mode 100644 _archived/varManager/FormSwitchRename.resx delete mode 100644 _archived/varManager/FormUninstallVars.Designer.cs delete mode 100644 _archived/varManager/FormUninstallVars.cs delete mode 100644 _archived/varManager/FormUninstallVars.resx delete mode 100644 _archived/varManager/FormVarDetail.Designer.cs delete mode 100644 _archived/varManager/FormVarDetail.cs delete mode 100644 _archived/varManager/FormVarDetail.resx delete mode 100644 _archived/varManager/FormVarsMove.Designer.cs delete mode 100644 _archived/varManager/FormVarsMove.cs delete mode 100644 _archived/varManager/FormVarsMove.resx delete mode 100644 _archived/varManager/HubItem.Designer.cs delete mode 100644 _archived/varManager/HubItem.cs delete mode 100644 _archived/varManager/HubItem.resx delete mode 100644 _archived/varManager/Migrations/20250807184700_Initial.Designer.cs delete mode 100644 _archived/varManager/Migrations/20250807184700_Initial.cs delete mode 100644 _archived/varManager/Migrations/VarManagerContextModelSnapshot.cs delete mode 100644 _archived/varManager/Models/Dependency.cs delete mode 100644 _archived/varManager/Models/HideFav.cs delete mode 100644 _archived/varManager/Models/InstallStatus.cs delete mode 100644 _archived/varManager/Models/SavedDependency.cs delete mode 100644 _archived/varManager/Models/Scene.cs delete mode 100644 _archived/varManager/Models/ScenesView.cs delete mode 100644 _archived/varManager/Models/Var.cs delete mode 100644 _archived/varManager/PrepareSaves.Designer.cs delete mode 100644 _archived/varManager/PrepareSaves.cs delete mode 100644 _archived/varManager/PrepareSaves.resx delete mode 100644 _archived/varManager/Program.cs delete mode 100644 _archived/varManager/Properties/AssemblyInfo.cs delete mode 100644 _archived/varManager/Properties/Resources.Designer.cs delete mode 100644 _archived/varManager/Properties/Resources.resx delete mode 100644 _archived/varManager/Properties/Settings.Designer.cs delete mode 100644 _archived/varManager/Properties/Settings.settings delete mode 100644 _archived/varManager/Resources/IconHub.ico delete mode 100644 _archived/varManager/Resources/hub.ico delete mode 100644 _archived/varManager/Resources/hub.png delete mode 100644 _archived/varManager/Resources/star.psd delete mode 100644 _archived/varManager/Resources/starEmpty.png delete mode 100644 _archived/varManager/Resources/starFull.png delete mode 100644 _archived/varManager/Resources/starHalf.png delete mode 100644 _archived/varManager/Resources/starOneQuarter.png delete mode 100644 _archived/varManager/Resources/starTriQuarter.png delete mode 100644 _archived/varManager/Resources/vam_logo_hub.png delete mode 100644 _archived/varManager/SimpleJSON/JSON.cs delete mode 100644 _archived/varManager/SimpleJSON/JSONArray.cs delete mode 100644 _archived/varManager/SimpleJSON/JSONBinaryTag.cs delete mode 100644 _archived/varManager/SimpleJSON/JSONClass.cs delete mode 100644 _archived/varManager/SimpleJSON/JSONData.cs delete mode 100644 _archived/varManager/SimpleJSON/JSONLazyCreator.cs delete mode 100644 _archived/varManager/SimpleJSON/JSONNode.cs delete mode 100644 _archived/varManager/SimpleLogger.cs delete mode 100644 _archived/varManager/ThreeStateTreeview.cs delete mode 100644 _archived/varManager/VarManager.ico delete mode 100644 _archived/varManager/app.manifest delete mode 100644 _archived/varManager/icoVarManager.ico delete mode 100644 _archived/varManager/meta.json delete mode 100644 _archived/varManager/vam.png delete mode 100644 _archived/varManager/varManager.csproj delete mode 100644 _archived/varManager/varManager.mdb diff --git a/_archived/DragNDrop/AssemblyInfo.cs b/_archived/DragNDrop/AssemblyInfo.cs deleted file mode 100644 index 9e0fc91..0000000 --- a/_archived/DragNDrop/AssemblyInfo.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Reflection; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly: AssemblyTitle("")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly: AssemblyVersion("1.0.0.1")] - -// -// In order to sign your assembly you must specify a key to use. Refer to the -// Microsoft .NET Framework documentation for more information on assembly signing. -// -// Use the attributes below to control which key is used for signing. -// -// Notes: -// (*) If no key is specified, the assembly is not signed. -// (*) KeyName refers to a key that has been installed in the Crypto Service -// Provider (CSP) on your machine. KeyFile refers to a file which contains -// a key. -// (*) If the KeyFile and the KeyName values are both specified, the -// following processing occurs: -// (1) If the KeyName can be found in the CSP, that key is used. -// (2) If the KeyName does not exist and the KeyFile does exist, the key -// in the KeyFile is installed into the CSP and used. -// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. -// When specifying the KeyFile, the location of the KeyFile should be -// relative to the project output directory which is -// %Project Directory%\obj\. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// -[assembly: AssemblyDelaySign(false)] -[assembly: AssemblyKeyFile("")] -[assembly: AssemblyKeyName("")] -[assembly: AssemblyFileVersion("1.0.0.1")] diff --git a/_archived/DragNDrop/DragAndDropListView.cs b/_archived/DragNDrop/DragAndDropListView.cs deleted file mode 100644 index d65fc4d..0000000 --- a/_archived/DragNDrop/DragAndDropListView.cs +++ /dev/null @@ -1,404 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Windows.Forms; - -namespace DragNDrop -{ - public class DragAndDropListView : ListView - { - #region Private Members - - private ListViewItem m_previousItem; - private bool m_allowReorder; - private bool m_allowSelfDrop; - private Color m_lineColor; - - #endregion - - #region Public Properties - - [Category("Behavior")] - public bool AllowReorder - { - get { return m_allowReorder; } - set { m_allowReorder = value; } - } - - public bool AllowSelfDrop - { - get { return m_allowSelfDrop; } - set { m_allowSelfDrop = value; } - } - - [Category("Appearance")] - public Color LineColor - { - get { return m_lineColor; } - set { m_lineColor = value; } - } - - #endregion - - #region Protected and Public Methods - - public DragAndDropListView() : base() - { - m_allowReorder = true; - m_lineColor = Color.Red; - } - - //定义委托 - public delegate void DragDropHandle(object sender, DragEventArgs e); - //定义事件 - public event DragDropHandle ListViewDragDrop; - private void EventListViewDragDrop(object sender, DragEventArgs e) - { - if (ListViewDragDrop != null) - ListViewDragDrop(sender, e); - } - - protected override void OnDragDrop(DragEventArgs drgevent) - { - if (!m_allowReorder) - { - base.OnDragDrop(drgevent); - return; - } - /* - // get the currently hovered row that the items will be dragged to - Point clientPoint = base.PointToClient(new Point(drgevent.X, drgevent.Y)); - ListViewItem hoverItem = base.GetItemAt(clientPoint.X, clientPoint.Y); - - if (!drgevent.Data.GetDataPresent(typeof(DragItemData).ToString()) || - ((DragItemData)drgevent.Data.GetData(typeof(DragItemData).ToString())).ListView == null || - ((DragItemData)drgevent.Data.GetData(typeof(DragItemData).ToString())).DragItemIndexs.Count == 0) - return; - - // retrieve the drag item data - DragItemData data = (DragItemData)drgevent.Data.GetData(typeof(DragItemData).ToString()); - - if (hoverItem == null || !m_allowSelfDrop) - { - // the user does not wish to re-order the items, just append to the end - for (int i = 0; i < data.DragItemIndexs.Count; i++) - { - ListViewItem newItem = data.ListView.Items[(int)(data.DragItemIndexs[i])]; - base.Items.Add(newItem); - } - } - else - { - // the user wishes to re-order the items - - // get the index of the hover item - int hoverIndex = hoverItem.Index; - - // determine if the items to be dropped are from - // this list view. If they are, perform a hack - // to increment the hover index so that the items - // get moved properly. - if (this == data.ListView) - { - if (hoverIndex > base.SelectedItems[0].Index) - hoverIndex++; - } - - // insert the new items into the list view - // by inserting the items reversely from the array list - for (int i = data.DragItemIndexs.Count - 1; i >= 0; i--) - { - ListViewItem newItem = data.ListView.Items[(int)(data.DragItemIndexs[i])]; - base.Items.Insert(hoverIndex, newItem); - } - } - - // remove all the selected items from the previous list view - // if the list view was found - if (data.ListView != null) - { - List listitemindex = new List(); - foreach (int itemindexToRemove in data.ListView.SelectedIndices) - { - listitemindex.Add(itemindexToRemove); - } - listitemindex.Sort(); - listitemindex.Reverse(); - foreach (int itemindexToRemove in listitemindex) - { - data.ListView.Items.RemoveAt(itemindexToRemove); - } - - } - */ - - // set the back color of the previous item, then nullify it - if (m_previousItem != null) - { - m_previousItem = null; - } - - - EventListViewDragDrop(this, drgevent); - this.Invalidate(); - - // call the base on drag drop to raise the event - base.OnDragDrop(drgevent); - } - - protected override void OnDragOver(DragEventArgs drgevent) - { - if (!m_allowReorder) - { - base.OnDragOver(drgevent); - return; - } - - if (!drgevent.Data.GetDataPresent(typeof(DragItemData).ToString())) - { - // the item(s) being dragged do not have any data associated - drgevent.Effect = DragDropEffects.None; - return; - } - if (!m_allowSelfDrop) - { - DragItemData data = (DragItemData)drgevent.Data.GetData(typeof(DragItemData).ToString()); - if (this == data.ListView) - { - // the item(s) being dragged do not have any data associated - drgevent.Effect = DragDropEffects.None; - return; - } - } - /* - if (base.Items.Count > 0) - { - // get the currently hovered row that the items will be dragged to - Point clientPoint = base.PointToClient(new Point(drgevent.X, drgevent.Y)); - ListViewItem hoverItem = base.GetItemAt(clientPoint.X, clientPoint.Y); - - Graphics g = this.CreateGraphics(); - - if (hoverItem == null) - { - //MessageBox.Show(base.GetChildAtPoint(new Point(clientPoint.X, clientPoint.Y)).GetType().ToString()); - - // no item was found, so no drop should take place - drgevent.Effect = DragDropEffects.Move; - - if (m_previousItem != null) - { - m_previousItem = null; - Invalidate(); - } - - hoverItem = base.Items[base.Items.Count - 1]; - - if (this.View == View.Details || this.View == View.List) - { - g.DrawLine(new Pen(m_lineColor, 2), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y + hoverItem.Bounds.Height), new Point(hoverItem.Bounds.X + this.Bounds.Width, hoverItem.Bounds.Y + hoverItem.Bounds.Height)); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y + hoverItem.Bounds.Height - 5), new Point(hoverItem.Bounds.X + 5, hoverItem.Bounds.Y + hoverItem.Bounds.Height), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y + hoverItem.Bounds.Height + 5) }); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(this.Bounds.Width - 4, hoverItem.Bounds.Y + hoverItem.Bounds.Height - 5), new Point(this.Bounds.Width - 9, hoverItem.Bounds.Y + hoverItem.Bounds.Height), new Point(this.Bounds.Width - 4, hoverItem.Bounds.Y + hoverItem.Bounds.Height + 5) }); - } - else - { - g.DrawLine(new Pen(m_lineColor, 2), new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width, hoverItem.Bounds.Y + hoverItem.Bounds.Height)); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width - 5, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width + 5, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width, hoverItem.Bounds.Y + 5) }); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width - 5, hoverItem.Bounds.Y + hoverItem.Bounds.Height), new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width + 5, hoverItem.Bounds.Y + hoverItem.Bounds.Height), new Point(hoverItem.Bounds.X + hoverItem.Bounds.Width, hoverItem.Bounds.Y + hoverItem.Bounds.Height - 5) }); - } - - // call the base OnDragOver event - base.OnDragOver(drgevent); - - return; - } - - // determine if the user is currently hovering over a new - // item. If so, set the previous item's back color back - // to the default color. - if ((m_previousItem != null && m_previousItem != hoverItem) || m_previousItem == null) - { - this.Invalidate(); - } - - // set the background color of the item being hovered - // and assign the previous item to the item being hovered - //hoverItem.BackColor = Color.Beige; - m_previousItem = hoverItem; - - if (this.View == View.Details || this.View == View.List) - { - g.DrawLine(new Pen(m_lineColor, 2), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X + this.Bounds.Width, hoverItem.Bounds.Y)); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y - 5), new Point(hoverItem.Bounds.X + 5, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y + 5) }); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(this.Bounds.Width - 4, hoverItem.Bounds.Y - 5), new Point(this.Bounds.Width - 9, hoverItem.Bounds.Y), new Point(this.Bounds.Width - 4, hoverItem.Bounds.Y + 5) }); - } - else - { - g.DrawLine(new Pen(m_lineColor, 2), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y + hoverItem.Bounds.Height)); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(hoverItem.Bounds.X - 5, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X + 5, hoverItem.Bounds.Y), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y + 5) }); - g.FillPolygon(new SolidBrush(m_lineColor), new Point[] { new Point(hoverItem.Bounds.X - 5, hoverItem.Bounds.Y + hoverItem.Bounds.Height), new Point(hoverItem.Bounds.X + 5, hoverItem.Bounds.Y + hoverItem.Bounds.Height), new Point(hoverItem.Bounds.X, hoverItem.Bounds.Y + hoverItem.Bounds.Height - 5) }); - } - - // go through each of the selected items, and if any of the - // selected items have the same index as the item being - // hovered, disable dropping. - foreach (int itemToMove in base.SelectedIndices) - { - if (itemToMove == hoverItem.Index) - { - drgevent.Effect = DragDropEffects.None; - hoverItem.EnsureVisible(); - return; - } - } - - // ensure that the hover item is visible - hoverItem.EnsureVisible(); - } - */ - // everything is fine, allow the user to move the items - drgevent.Effect = DragDropEffects.Move; - - // call the base OnDragOver event - base.OnDragOver(drgevent); - } - - protected override void OnDragEnter(DragEventArgs drgevent) - { - if (!m_allowReorder) - { - base.OnDragEnter(drgevent); - return; - } - - if (!drgevent.Data.GetDataPresent(typeof(DragItemData).ToString())) - { - // the item(s) being dragged do not have any data associated - drgevent.Effect = DragDropEffects.None; - return; - } - - // everything is fine, allow the user to move the items - drgevent.Effect = DragDropEffects.Move; - - // call the base OnDragEnter event - base.OnDragEnter(drgevent); - } - - protected override void OnItemDrag(ItemDragEventArgs e) - { - if (!m_allowReorder) - { - base.OnItemDrag(e); - return; - } - - // call the DoDragDrop method - base.DoDragDrop(GetDataForDragDrop(), DragDropEffects.Move); - - // call the base OnItemDrag event - base.OnItemDrag(e); - } - - protected override void OnLostFocus(EventArgs e) - { - // reset the selected items background and remove the previous item - ResetOutOfRange(); - - Invalidate(); - - // call the OnLostFocus event - base.OnLostFocus(e); - } - - protected override void OnDragLeave(EventArgs e) - { - // reset the selected items background and remove the previous item - ResetOutOfRange(); - - Invalidate(); - - // call the base OnDragLeave event - base.OnDragLeave(e); - } - - #endregion - - #region Private Methods - - private DragItemData GetDataForDragDrop() - { - // create a drag item data object that will be used to pass along with the drag and drop - DragItemData data = new DragItemData(this); - - // go through each of the selected items and - // add them to the drag items collection - // by creating a clone of the list item - /* - foreach (ListViewItem item in this.SelectedItems) - { - data.DragItems.Add(item.Clone()); - } - */ - foreach (var itemindex in this.SelectedIndices) - { - data.DragItemIndexs.Add(itemindex); - } - return data; - } - - private void ResetOutOfRange() - { - // determine if the previous item exists, - // if it does, reset the background and release - // the previous item - if (m_previousItem != null) - { - m_previousItem = null; - } - - } - - #endregion - - #region DragItemData Class - - public class DragItemData - { - #region Private Members - - private DragAndDropListView m_listView; - private ArrayList m_dragItemindexs; - - #endregion - - #region Public Properties - - public DragAndDropListView ListView - { - get { return m_listView; } - } - - public ArrayList DragItemIndexs - { - get { return m_dragItemindexs; } - } - - #endregion - - #region Public Methods and Implementation - - public DragItemData(DragAndDropListView listView) - { - m_listView = listView; - m_dragItemindexs = new ArrayList(); - } - - #endregion - } - - #endregion - } -} diff --git a/_archived/DragNDrop/DragAndDropListView.resx b/_archived/DragNDrop/DragAndDropListView.resx deleted file mode 100644 index 3f337e0..0000000 --- a/_archived/DragNDrop/DragAndDropListView.resx +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.0.0.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - diff --git a/_archived/DragNDrop/DragNDrop.csproj b/_archived/DragNDrop/DragNDrop.csproj deleted file mode 100644 index 6625a4a..0000000 --- a/_archived/DragNDrop/DragNDrop.csproj +++ /dev/null @@ -1,133 +0,0 @@ -锘 - - - Local - 7.10.3077 - 2.0 - {C7E21F05-C166-4DCC-8429-EC8A4C1A67B6} - Debug - AnyCPU - - - DragNDrop - - JScript - Grid - IE50 - false - Library - DragNDrop - OnBuildSuccess - - - - - - 0.0 - v4.8 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - bin\Debug\ - false - 285212672 - false - - DEBUG;TRACE - - true - 4096 - false - - false - false - false - false - 4 - full - prompt - MinimumRecommendedRules.ruleset - false - x64 - - - bin\Release\ - false - 285212672 - false - - TRACE - - false - 4096 - false - - true - false - false - false - 4 - none - prompt - MinimumRecommendedRules.ruleset - false - - - - System - - - System.Data - - - System.Drawing - - - System.Drawing.Design - - - System.Windows.Forms - - - System.XML - - - - - Code - - - Component - - - DragAndDropListView.cs - - - - - False - .NET Framework 3.5 SP1 - false - - - - - - - - \ No newline at end of file diff --git a/_archived/DragNDrop/DragNDrop.dll b/_archived/DragNDrop/DragNDrop.dll deleted file mode 100644 index 1c40ea7f561a78131f5237054ed239a02c6dcab4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 BVygfE diff --git a/_archived/HUB/Class1.cs b/_archived/HUB/Class1.cs deleted file mode 100644 index a1bf484..0000000 --- a/_archived/HUB/Class1.cs +++ /dev/null @@ -1,8 +0,0 @@ -锘縰sing System; - -namespace HUB -{ - public class Class1 - { - } -} diff --git a/_archived/HUB/HUB.csproj b/_archived/HUB/HUB.csproj deleted file mode 100644 index f208d30..0000000 --- a/_archived/HUB/HUB.csproj +++ /dev/null @@ -1,7 +0,0 @@ - - - - net5.0 - - - diff --git a/_archived/README.md b/_archived/README.md deleted file mode 100644 index 016c5a2..0000000 --- a/_archived/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Archived C# Projects - -This directory contains the legacy C# WinForms implementation of varManager (v1.0.4.x). - -## Contents - -- **varManager/** - Main C# WinForms application (.NET 9.0) -- **DragNDrop/** - Custom drag-and-drop ListView control -- **StarRatingControl/** - Star rating control -- **ThreeStateTreeView/** - Three-state tree view control -- **HUB/** - Empty placeholder project -- **packages/** - NuGet package cache -- **varManager.sln** - Visual Studio solution file - -## Status - -鈿狅笍 **This code is no longer actively maintained.** - -All functionality has been migrated to the new Flutter + Rust architecture (v2.0.0+). - -## Why Archived? - -The v2.0.0 release represents a complete architectural rewrite: -- **Old:** C# WinForms + .NET Runtime + EF Core + SQLite -- **New:** Flutter UI + Rust Backend + SQLite - -The new architecture provides: -- Cross-platform support (Windows/macOS/Linux) -- Better performance (Rust backend) -- Modern UI (Material Design 3) -- No .NET Runtime dependency -- Smaller deployment size -- Easier maintenance - -## Reference Use Only - -This code is kept for: -- Historical reference -- Understanding migration decisions -- Fallback if critical issues arise with v2.0.0 - -## Running the Old C# Version - -If you need to run the legacy version: - -1. Requirements: - - .NET 9.0 Runtime - - Windows OS - - Visual Studio 2022 or higher (for building) - -2. Build: - ``` - cd _archived - dotnet build varManager.sln - ``` - -3. Run: - ``` - cd varManager/bin/Debug/net9.0-windows - varManager.exe - ``` - -## Migration to v2.0.0 - -See the main [README.md](../README.md) for migration instructions. Your database and configuration will work seamlessly with the new version. diff --git a/_archived/StarRatingControl/AssemblyInfo.cs b/_archived/StarRatingControl/AssemblyInfo.cs deleted file mode 100644 index 9f89a32..0000000 --- a/_archived/StarRatingControl/AssemblyInfo.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly: AssemblyTitle("")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly: AssemblyVersion("1.0.*")] - -// -// In order to sign your assembly you must specify a key to use. Refer to the -// Microsoft .NET Framework documentation for more information on assembly signing. -// -// Use the attributes below to control which key is used for signing. -// -// Notes: -// (*) If no key is specified, the assembly is not signed. -// (*) KeyName refers to a key that has been installed in the Crypto Service -// Provider (CSP) on your machine. KeyFile refers to a file which contains -// a key. -// (*) If the KeyFile and the KeyName values are both specified, the -// following processing occurs: -// (1) If the KeyName can be found in the CSP, that key is used. -// (2) If the KeyName does not exist and the KeyFile does exist, the key -// in the KeyFile is installed into the CSP and used. -// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. -// When specifying the KeyFile, the location of the KeyFile should be -// relative to the project output directory which is -// %Project Directory%\obj\. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// -[assembly: AssemblyDelaySign(false)] -[assembly: AssemblyKeyFile("")] -[assembly: AssemblyKeyName("")] diff --git a/_archived/StarRatingControl/StarRatingControl.cs b/_archived/StarRatingControl/StarRatingControl.cs deleted file mode 100644 index 38ebfc9..0000000 --- a/_archived/StarRatingControl/StarRatingControl.cs +++ /dev/null @@ -1,349 +0,0 @@ -using System; -using System.Windows.Forms; -using System.Drawing; -using System.Drawing.Drawing2D; - -namespace RatingControls -{ - public class StarRatingControl : System.Windows.Forms.Control - { - public StarRatingControl() - { - SetStyle(ControlStyles.AllPaintingInWmPaint, true); - SetStyle(ControlStyles.UserPaint, true); - SetStyle(ControlStyles.DoubleBuffer, true); - SetStyle(ControlStyles.ResizeRedraw, true); - - Width = 120; - Height = 18; - - m_starAreas = new Rectangle[StarCount]; - } - - #region Properties - - public int LeftMargin - { - get - { - return m_leftMargin; - } - set - { - if ( m_leftMargin != value ) - { - m_leftMargin = value; - Invalidate(); - } - } - } - - public int RightMargin - { - get - { - return m_rightMargin; - } - set - { - if ( m_rightMargin != value ) - { - m_rightMargin = value; - Invalidate(); - } - } - } - - public int TopMargin - { - get - { - return m_topMargin; - } - set - { - if ( m_topMargin != value ) - { - m_topMargin = value; - Invalidate(); - } - } - } - - public int BottomMargin - { - get - { - return m_bottomMargin; - } - set - { - if ( m_bottomMargin != value ) - { - m_bottomMargin = value; - Invalidate(); - } - } - } - - public int StarSpacing - { - get - { - return m_starSpacing; - } - set - { - if ( m_starSpacing != value ) - { - m_starSpacing = value; - Invalidate(); - } - } - } - - public int StarCount - { - get - { - return m_starCount; - } - set - { - if ( m_starCount != value ) - { - m_starCount = value; - m_starAreas = new Rectangle[m_starCount]; - Invalidate(); - } - } - } - - public bool IsHovering - { - get - { - return m_hovering; - } - } - - public Color OutlineColor - { - get - { - return m_outlineColor; - } - set - { - if ( m_outlineColor != value ) - { - m_outlineColor = value; - Invalidate(); - } - } - } - - public Color HoverColor - { - get - { - return m_hoverColor; - } - set - { - if ( m_hoverColor != value ) - { - m_hoverColor = value; - Invalidate(); - } - } - } - - public Color SelectedColor - { - get - { - return m_selectedColor; - } - set - { - if ( m_selectedColor != value ) - { - m_selectedColor = value; - Invalidate(); - } - } - } - - public int OutlineThickness - { - get - { - return m_outlineThickness; - } - set - { - if ( m_outlineThickness != value ) - { - m_outlineThickness = value; - Invalidate(); - } - } - } - - public double HoverStar - { - get - { - return m_hoverStar; - } - } - - public int SelectedStar - { - get - { - return m_selectedStar; - } - } - - #endregion - - protected override void OnPaint(PaintEventArgs pe) - { - pe.Graphics.Clear(BackColor); - - int starWidth = (Width - (LeftMargin + RightMargin + (StarSpacing * (StarCount - 1)))) / StarCount; - int starHeight = (Height - (TopMargin + BottomMargin)); - - Rectangle drawArea = new Rectangle(LeftMargin, TopMargin, starWidth, starHeight); - - for ( int i = 0 ; i < StarCount; ++i ) - { - m_starAreas[i].X = drawArea.X - StarSpacing / 2; - m_starAreas[i].Y = drawArea.Y; - m_starAreas[i].Width = drawArea.Width + StarSpacing / 2; - m_starAreas[i].Height = drawArea.Height; - - DrawStar ( pe.Graphics, drawArea, i ); - - drawArea.X += drawArea.Width + StarSpacing; - } - - base.OnPaint ( pe ); - } - - protected void DrawStar ( Graphics g, Rectangle rect, int starAreaIndex ) - { - Brush fillBrush; - Pen outlinePen = new Pen ( OutlineColor, OutlineThickness ); - - if ( m_hovering && m_hoverStar > starAreaIndex ) - { - fillBrush = new LinearGradientBrush(rect, HoverColor, BackColor, LinearGradientMode.ForwardDiagonal); - } - else if ( (!m_hovering) && m_selectedStar > starAreaIndex ) - { - fillBrush = new LinearGradientBrush(rect, SelectedColor, BackColor, LinearGradientMode.ForwardDiagonal); - } - else - { - fillBrush = new SolidBrush ( BackColor ); - } - - PointF[] p = new PointF[10]; - p[0].X = rect.X + (rect.Width / 2); - p[0].Y = rect.Y; - p[1].X = rect.X + (42 * rect.Width / 64); - p[1].Y = rect.Y + (19 * rect.Height / 64); - p[2].X = rect.X + rect.Width; - p[2].Y = rect.Y + (22 * rect.Height / 64); - p[3].X = rect.X + (48 * rect.Width / 64); - p[3].Y = rect.Y + (38 * rect.Height / 64); - p[4].X = rect.X + (52 * rect.Width / 64); - p[4].Y = rect.Y + rect.Height; - p[5].X = rect.X + (rect.Width / 2); - p[5].Y = rect.Y + (52 * rect.Height / 64); - p[6].X = rect.X + (12 * rect.Width / 64); - p[6].Y = rect.Y + rect.Height; - p[7].X = rect.X + rect.Width / 4; - p[7].Y = rect.Y + (38 * rect.Height / 64); - p[8].X = rect.X; - p[8].Y = rect.Y + (22 * rect.Height / 64); - p[9].X = rect.X + (22 * rect.Width / 64); - p[9].Y = rect.Y + (19 * rect.Height / 64); - p.GetValue() - g.FillPolygon ( fillBrush, p ); - g.DrawPolygon ( outlinePen, p ); - } - - protected override void OnMouseEnter ( System.EventArgs ea ) - { - m_hovering = true; - Invalidate(); - base.OnMouseEnter ( ea ); - } - - protected override void OnMouseLeave ( System.EventArgs ea ) - { - m_hovering = false; - Invalidate(); - base.OnMouseLeave ( ea ); - } - - protected override void OnMouseMove ( MouseEventArgs args ) - { - for ( int i = 0 ; i < StarCount ; ++i ) - { - if ( m_starAreas[i].Contains(args.X, args.Y) ) - { - m_hoverStar = i + 1; - Invalidate(); - break; - } - } - - base.OnMouseMove ( args ); - } - - protected override void OnClick ( System.EventArgs args ) - { - Point p = PointToClient ( MousePosition ); - - for ( int i = 0 ; i < StarCount ; ++i ) - { - if ( m_starAreas[i].Contains(p) ) - { - m_hoverStar = i + 1; - m_selectedStar = i + 1; - Invalidate(); - break; - } - } - - base.OnClick ( args ); - } - - #region Protected Data - - protected int m_leftMargin = 2; - protected int m_rightMargin = 2; - protected int m_topMargin = 2; - protected int m_bottomMargin = 2; - protected int m_starSpacing = 8; - protected int m_starCount = 5; - protected Rectangle[] m_starAreas; - protected bool m_hovering = false; - - protected double m_hoverStar = 0; - protected int m_selectedStar = 0; - - protected Color m_outlineColor = Color.DarkGray; - protected Color m_hoverColor = Color.Yellow; - protected Color m_selectedColor = Color.RoyalBlue; - - protected int m_outlineThickness = 1; - - #endregion - } -} diff --git a/_archived/StarRatingControl/StarRatingControl.csproj b/_archived/StarRatingControl/StarRatingControl.csproj deleted file mode 100644 index 495a0a4..0000000 --- a/_archived/StarRatingControl/StarRatingControl.csproj +++ /dev/null @@ -1,129 +0,0 @@ -锘 - - - Local - 7.10.3077 - 2.0 - {4F9EA4F5-182C-4402-B21C-CB8EB96DE958} - Debug - AnyCPU - - - StarRatingControl - - JScript - Grid - IE50 - false - Library - StarRatingControl - OnBuildSuccess - - - - - - 0.0 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - v4.8 - - - - bin\Debug\ - false - 285212672 - false - - DEBUG;TRACE - - true - 4096 - false - - false - false - false - false - 4 - full - prompt - MinimumRecommendedRules.ruleset - false - - - bin\Release\ - false - 285212672 - false - - TRACE - - false - 4096 - false - - true - false - false - false - 4 - none - prompt - MinimumRecommendedRules.ruleset - false - - - - System - - - System.Data - - - System.Drawing - - - System.Windows.Forms - - - System.XML - - - - - Code - - - Component - - - StarRatingControl.cs - - - - - False - .NET Framework 3.5 SP1 - false - - - - - - - - \ No newline at end of file diff --git a/_archived/StarRatingControl/StarRatingControl.resx b/_archived/StarRatingControl/StarRatingControl.resx deleted file mode 100644 index 3f337e0..0000000 --- a/_archived/StarRatingControl/StarRatingControl.resx +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.0.0.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - diff --git a/_archived/ThreeStateTreeView/Enumerations/CheckBoxState.cs b/_archived/ThreeStateTreeView/Enumerations/CheckBoxState.cs deleted file mode 100644 index 6a14210..0000000 --- a/_archived/ThreeStateTreeView/Enumerations/CheckBoxState.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace Ascentium.Research.Windows.Forms.Components.Enumerations -{ - /// - /// The available states for a ThreeStateCheckBox. - /// - [FlagsAttribute] - public enum CheckBoxState - { - Unchecked = 1, - Checked = 2, - Indeterminate = CheckBoxState.Unchecked | CheckBoxState.Checked - } -} diff --git a/_archived/ThreeStateTreeView/ThreeStateTreeView.cs b/_archived/ThreeStateTreeView/ThreeStateTreeView.cs deleted file mode 100644 index 0c41314..0000000 --- a/_archived/ThreeStateTreeView/ThreeStateTreeView.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.ComponentModel; -using System.Text; -using System.Windows.Forms; - -namespace Ascentium.Research.Windows.Forms.Components -{ - /// - /// ThreeStateTreeNode inherits from TreeView - /// and adds the ability to cascade state changes to related nodes, i.e. child nodes and or parent nodes, as well as to optionally - /// use the three state functionality. - /// - public class ThreeStateTreeView : TreeView - { - #region Constructors - /// - /// Initializes a new instance of the ThreeStateTreeView class in addition to intializing - /// the base class (TreeView Constructor). - /// - public ThreeStateTreeView() : base() - { - } - #endregion - - #region Public Properties - /// - /// Flag. If true, use three state checkboxes, otherwise, use the default behavior of the TreeView and associated TreeNodes. - /// - private bool mUseThreeStateCheckBoxes = true; - [Category("Three State TreeView"), - Description("Flag. If true, use three state checkboxes, otherwise, use the default behavior of the TreeView and associated TreeNodes."), - DefaultValue(true), - TypeConverter(typeof(bool)), - Editor("System.Boolean", typeof(bool))] - public bool UseThreeStateCheckBoxes - { - get { return this.mUseThreeStateCheckBoxes; } - set { this.mUseThreeStateCheckBoxes = value; } - } - #endregion - - #region Overrides - /// - /// Raises the AfterCheck event. - /// - /// A TreeViewEventArgs containing the event data. - protected override void OnAfterCheck(TreeViewEventArgs e) - { - base.OnAfterCheck(e); - - if (this.UseThreeStateCheckBoxes) - { - switch (e.Action) - { - case TreeViewAction.ByKeyboard: - case TreeViewAction.ByMouse: - { - if (e.Node is ThreeStateTreeNode) - { - // Toggle to the next state. - ThreeStateTreeNode tn = e.Node as ThreeStateTreeNode; - tn.Toggle(); - } - - break; - } - case TreeViewAction.Collapse: - case TreeViewAction.Expand: - case TreeViewAction.Unknown: - default: - { - // Do nothing. - break; - } - } - } - } - #endregion - } -} diff --git a/_archived/ThreeStateTreeView/ThreeStateTreeView.csproj b/_archived/ThreeStateTreeView/ThreeStateTreeView.csproj deleted file mode 100644 index 18e2fcb..0000000 --- a/_archived/ThreeStateTreeView/ThreeStateTreeView.csproj +++ /dev/null @@ -1,80 +0,0 @@ -锘 - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {43DD8879-E9F0-4577-A410-6FA118914300} - Library - Properties - Ascentium.Research.Windows.Forms.Components - Ascentium.Research.Windows.Forms.Components - - - - - - - 2.0 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - MinimumRecommendedRules.ruleset - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - MinimumRecommendedRules.ruleset - - - - - - - Component - - - - - - - - - False - .NET Framework 3.5 SP1 - false - - - \ No newline at end of file diff --git a/_archived/cleanup_deadlock.bat b/_archived/cleanup_deadlock.bat deleted file mode 100644 index a051167..0000000 --- a/_archived/cleanup_deadlock.bat +++ /dev/null @@ -1,42 +0,0 @@ -@echo off -echo VarManager 姝婚攣娓呯悊宸ュ叿 -echo ======================== - -echo 姝e湪妫鏌arManager杩涚▼... -tasklist | findstr "varManager" > nul -if %errorlevel% == 0 ( - echo 鍙戠幇VarManager杩涚▼锛屾鍦ㄥ己鍒剁粨鏉... - taskkill /F /IM varManager.exe /T > nul 2>&1 - timeout /t 3 > nul - echo 杩涚▼宸茬粨鏉熴 -) else ( - echo 鏈彂鐜癡arManager杩涚▼銆 -) - -echo. -echo 姝e湪娓呯悊涓存椂鏂囦欢... - -if exist "varsForInstall.txt" ( - del "varsForInstall.txt" > nul 2>&1 - echo 宸插垹闄: varsForInstall.txt -) - -if exist "*.lock" ( - del "*.lock" > nul 2>&1 - echo 宸插垹闄: 閿佹枃浠 -) - -if exist "*.tmp" ( - del "*.tmp" > nul 2>&1 - echo 宸插垹闄: 涓存椂鏂囦欢 -) - -echo. -echo 姝e湪绛夊緟绯荤粺閲婃斁璧勬簮... -timeout /t 3 > nul - -echo. -echo 姝婚攣娓呯悊瀹屾垚锛 -echo 鐜板湪鍙互閲嶆柊鍚姩VarManager銆 -echo. -pause \ No newline at end of file diff --git a/_archived/dotnet-desktop.yml.backup b/_archived/dotnet-desktop.yml.backup deleted file mode 100644 index 76265ab..0000000 --- a/_archived/dotnet-desktop.yml.backup +++ /dev/null @@ -1,89 +0,0 @@ -name: .NET Core Desktop - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - -jobs: - build: - strategy: - matrix: - configuration: [Release] - - runs-on: windows-latest - - env: - Solution_Name: varManager.sln # 瑙e喅鏂规鍚嶇О - Project_Path: varManager/varManager.csproj # 椤圭洰璺緞 - Project_Version: v1.0.4.13 # 椤圭洰鐗堟湰 - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - # Clone the external project to the correct directory - - name: Clone DgvFilterPopup - run: git clone --branch main https://github.com/farosch/DgvFilterPopup.git ../DgvFilterPopup - - # Install the .NET Core workload - - name: Install .NET Core - uses: actions/setup-dotnet@v4 - with: - dotnet-version: | - 6.0.x - 9.0.x - - # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild - - name: Setup MSBuild.exe - uses: microsoft/setup-msbuild@v2 - - # Restore the application to populate the obj folder with RuntimeIdentifiers - - name: Restore the application - run: msbuild ${{ env.Solution_Name }} /t:Restore /p:Configuration=${{ matrix.configuration }} - - # Decode the base 64 encoded pfx and save the Signing_Certificate - - name: Decode the pfx - run: | - $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.Base64_Encoded_Pfx }}") - $certificatePath = "varManager/GitHubActionsWorkflow.pfx" - [IO.File]::WriteAllBytes("$certificatePath", $pfx_cert_byte) - - # Build the project - - name: Build the project - run: msbuild ${{ env.Project_Path }} /p:Configuration=${{ matrix.configuration }} - - # Package the application with self-contained deployment - - name: Package the application - run: | - dotnet publish ${{ env.Project_Path }} -c ${{ matrix.configuration }} -r win-x64 --self-contained true -p:PublishSingleFile=true -p:PackageCertificateKeyFile="varManager/GitHubActionsWorkflow.pfx" -p:PackageCertificatePassword=${{ secrets.Pfx_Key }} - - # Remove the pfx - - name: Remove the pfx - run: Remove-Item -path "varManager/GitHubActionsWorkflow.pfx" - - # Clone vam_downloader repository and build it - - name: Clone vam_downloader - run: git clone --branch master https://github.com/bustesoul/vam_downloader.git ../vam_downloader - - - name: Build vam_downloader - run: | - cd ../vam_downloader - rustup toolchain install stable-x86_64-pc-windows-msvc - rustup default stable-x86_64-pc-windows-msvc - cargo build --release --target x86_64-pc-windows-msvc -j $env:NUMBER_OF_PROCESSORS - - - name: Copy vam_downloader to plugin directory - run: | - mkdir -p varManager/bin/${{ matrix.configuration }}/net9.0-windows/win-x64/publish/plugin - cp ../vam_downloader/target/x86_64-pc-windows-msvc/release/vam_downloader.exe varManager/bin/${{ matrix.configuration }}/net9.0-windows/win-x64/publish/plugin/ - - # Upload the build artifacts - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: varManager_${{ env.Project_Version }} - path: varManager/bin/${{ matrix.configuration }}/net9.0-windows/win-x64/publish diff --git a/_archived/varManager.sln b/_archived/varManager.sln deleted file mode 100644 index a6ef910..0000000 --- a/_archived/varManager.sln +++ /dev/null @@ -1,48 +0,0 @@ -锘 -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.1.32407.343 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "varManager", "varManager\varManager.csproj", "{EA2A1B27-CA81-4DBF-8E10-97A0243B6184}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DgvFilterPopup", "..\DgvFilterPopup\DgvFilterPopup\DgvFilterPopup.csproj", "{4B9BE5FD-303E-4270-9C4D-FA3BDE6C34EB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DragNDrop", "DragNDrop\DragNDrop.csproj", "{C7E21F05-C166-4DCC-8429-EC8A4C1A67B6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MMDLoader", "MMDLoader\MMDLoader.csproj", "{60569535-F3F9-4412-82D8-9EB84DA0CFD6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LoadScene", "LoadScene\LoadScene.csproj", "{8D90CE12-F58A-4AD9-81E6-A93B3D6BB2EE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EA2A1B27-CA81-4DBF-8E10-97A0243B6184}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EA2A1B27-CA81-4DBF-8E10-97A0243B6184}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EA2A1B27-CA81-4DBF-8E10-97A0243B6184}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EA2A1B27-CA81-4DBF-8E10-97A0243B6184}.Release|Any CPU.Build.0 = Release|Any CPU - {4B9BE5FD-303E-4270-9C4D-FA3BDE6C34EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B9BE5FD-303E-4270-9C4D-FA3BDE6C34EB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B9BE5FD-303E-4270-9C4D-FA3BDE6C34EB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B9BE5FD-303E-4270-9C4D-FA3BDE6C34EB}.Release|Any CPU.Build.0 = Release|Any CPU - {C7E21F05-C166-4DCC-8429-EC8A4C1A67B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C7E21F05-C166-4DCC-8429-EC8A4C1A67B6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C7E21F05-C166-4DCC-8429-EC8A4C1A67B6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C7E21F05-C166-4DCC-8429-EC8A4C1A67B6}.Release|Any CPU.Build.0 = Release|Any CPU - {60569535-F3F9-4412-82D8-9EB84DA0CFD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {60569535-F3F9-4412-82D8-9EB84DA0CFD6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {60569535-F3F9-4412-82D8-9EB84DA0CFD6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {60569535-F3F9-4412-82D8-9EB84DA0CFD6}.Release|Any CPU.Build.0 = Release|Any CPU - {8D90CE12-F58A-4AD9-81E6-A93B3D6BB2EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8D90CE12-F58A-4AD9-81E6-A93B3D6BB2EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8D90CE12-F58A-4AD9-81E6-A93B3D6BB2EE}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {D0040F30-0947-4707-95E7-97AFD37A5633} - EndGlobalSection -EndGlobal diff --git a/_archived/varManager/App.config b/_archived/varManager/App.config deleted file mode 100644 index e42aad8..0000000 --- a/_archived/varManager/App.config +++ /dev/null @@ -1,58 +0,0 @@ - - - - -
- - - - - - - - - - - - d:\vars - - - d:\virt_a_mate - - - True - - - True - - - False - - - True - - - True - - - False - - - - - - - - - - - - - - - - - - diff --git a/_archived/varManager/Backend/BackendClient.cs b/_archived/varManager/Backend/BackendClient.cs deleted file mode 100644 index be4cc0f..0000000 --- a/_archived/varManager/Backend/BackendClient.cs +++ /dev/null @@ -1,220 +0,0 @@ -using System; -using System.Net.Http; -using System.Text; -using System.Text.Json; -using System.Text.Json.Serialization; -using System.Threading; -using System.Threading.Tasks; - -namespace varManager.Backend -{ - public sealed class BackendClient - { - private readonly HttpClient _http; - private readonly JsonSerializerOptions _jsonOptions; - - public BackendClient(string baseUrl) - { - _http = new HttpClient { BaseAddress = new Uri(baseUrl, UriKind.Absolute) }; - _jsonOptions = new JsonSerializerOptions - { - PropertyNameCaseInsensitive = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - }; - } - - public async Task HealthAsync(CancellationToken ct) - { - try - { - using var resp = await _http.GetAsync("health", ct).ConfigureAwait(false); - return resp.IsSuccessStatusCode; - } - catch - { - return false; - } - } - - public Task GetConfigAsync(CancellationToken ct) - { - return GetAsync("config", ct); - } - - public Task StartJobAsync(string kind, object? args, CancellationToken ct) - { - if (string.IsNullOrWhiteSpace(kind)) - { - throw new ArgumentException("kind is required", nameof(kind)); - } - var payload = new StartJobRequest { Kind = kind, Args = args }; - return PostAsync("jobs", payload, ct); - } - - public Task GetJobAsync(ulong id, CancellationToken ct) - { - return GetAsync($"jobs/{id}", ct); - } - - public Task GetJobLogsAsync(ulong id, ulong? from, CancellationToken ct) - { - var url = from.HasValue ? $"jobs/{id}/logs?from={from.Value}" : $"jobs/{id}/logs"; - return GetAsync(url, ct); - } - - public Task GetJobResultAsync(ulong id, CancellationToken ct) - { - return GetAsync($"jobs/{id}/result", ct); - } - - public Task ShutdownAsync(CancellationToken ct) - { - return PostAsync("shutdown", new { }, ct); - } - - private async Task GetAsync(string path, CancellationToken ct) - { - using var resp = await _http.GetAsync(path, ct).ConfigureAwait(false); - var json = await resp.Content.ReadAsStringAsync(ct).ConfigureAwait(false); - if (!resp.IsSuccessStatusCode) - { - throw new InvalidOperationException($"backend error: {resp.StatusCode} {json}"); - } - var result = JsonSerializer.Deserialize(json, _jsonOptions); - if (result == null) - { - throw new InvalidOperationException("backend response is empty"); - } - return result; - } - - private async Task PostAsync(string path, object? body, CancellationToken ct) - { - using var content = new StringContent( - JsonSerializer.Serialize(body, _jsonOptions), - Encoding.UTF8, - "application/json"); - using var resp = await _http.PostAsync(path, content, ct).ConfigureAwait(false); - var json = await resp.Content.ReadAsStringAsync(ct).ConfigureAwait(false); - if (!resp.IsSuccessStatusCode) - { - throw new InvalidOperationException($"backend error: {resp.StatusCode} {json}"); - } - var result = JsonSerializer.Deserialize(json, _jsonOptions); - if (result == null) - { - throw new InvalidOperationException("backend response is empty"); - } - return result; - } - - private async Task PostAsync(string path, object? body, CancellationToken ct) - { - using var content = new StringContent( - JsonSerializer.Serialize(body, _jsonOptions), - Encoding.UTF8, - "application/json"); - using var resp = await _http.PostAsync(path, content, ct).ConfigureAwait(false); - if (!resp.IsSuccessStatusCode) - { - var json = await resp.Content.ReadAsStringAsync(ct).ConfigureAwait(false); - throw new InvalidOperationException($"backend error: {resp.StatusCode} {json}"); - } - } - } - - public sealed class BackendConfig - { - [JsonPropertyName("listen_host")] - public string? ListenHost { get; set; } - [JsonPropertyName("listen_port")] - public int ListenPort { get; set; } - [JsonPropertyName("log_level")] - public string? LogLevel { get; set; } - [JsonPropertyName("job_concurrency")] - public int JobConcurrency { get; set; } - [JsonPropertyName("varspath")] - public string? Varspath { get; set; } - [JsonPropertyName("vampath")] - public string? Vampath { get; set; } - [JsonPropertyName("vam_exec")] - public string? VamExec { get; set; } - [JsonPropertyName("downloader_path")] - public string? DownloaderPath { get; set; } - [JsonPropertyName("downloader_save_path")] - public string? DownloaderSavePath { get; set; } - } - - public sealed class StartJobRequest - { - [JsonPropertyName("kind")] - public string Kind { get; set; } = string.Empty; - [JsonPropertyName("args")] - public object? Args { get; set; } - } - - public sealed class StartJobResponse - { - [JsonPropertyName("id")] - public ulong Id { get; set; } - [JsonPropertyName("status")] - public string Status { get; set; } = string.Empty; - } - - public sealed class JobView - { - [JsonPropertyName("id")] - public ulong Id { get; set; } - [JsonPropertyName("kind")] - public string Kind { get; set; } = string.Empty; - [JsonPropertyName("status")] - public string Status { get; set; } = string.Empty; - [JsonPropertyName("progress")] - public int Progress { get; set; } - [JsonPropertyName("message")] - public string Message { get; set; } = string.Empty; - [JsonPropertyName("error")] - public string? Error { get; set; } - [JsonPropertyName("log_offset")] - public ulong LogOffset { get; set; } - [JsonPropertyName("log_count")] - public ulong LogCount { get; set; } - [JsonPropertyName("result_available")] - public bool ResultAvailable { get; set; } - } - - public sealed class JobLogsResponse - { - [JsonPropertyName("id")] - public ulong Id { get; set; } - [JsonPropertyName("from")] - public ulong From { get; set; } - [JsonPropertyName("next")] - public ulong Next { get; set; } - [JsonPropertyName("dropped")] - public bool Dropped { get; set; } - [JsonPropertyName("lines")] - public string[] Lines { get; set; } = Array.Empty(); - } - - public sealed class JobResultResponse - { - [JsonPropertyName("id")] - public ulong Id { get; set; } - [JsonPropertyName("result")] - public JsonElement Result { get; set; } - } - - public sealed class BackendJobResult - { - public BackendJobResult(JobView job, JsonElement? result) - { - Job = job; - Result = result; - } - - public JobView Job { get; } - public JsonElement? Result { get; } - public bool Succeeded => string.Equals(Job.Status, "succeeded", StringComparison.OrdinalIgnoreCase); - } -} diff --git a/_archived/varManager/Backend/BackendSession.cs b/_archived/varManager/Backend/BackendSession.cs deleted file mode 100644 index 4f35b52..0000000 --- a/_archived/varManager/Backend/BackendSession.cs +++ /dev/null @@ -1,263 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using System.Text.Json; -using System.Threading; -using System.Threading.Tasks; -using varManager.Properties; - -namespace varManager.Backend -{ - public static class BackendSession - { - private static readonly SemaphoreSlim s_lock = new SemaphoreSlim(1, 1); - private static BackendClient? s_client; - private static BackendConfig? s_config; - private static Process? s_process; - private static string? s_baseUrl; - - public static BackendConfig? Config => s_config; - - public static async Task EnsureStartedAsync(Action? log, CancellationToken ct) - { - await s_lock.WaitAsync(ct).ConfigureAwait(false); - try - { - if (s_client == null || string.IsNullOrEmpty(s_baseUrl)) - { - s_baseUrl = ResolveBaseUrl(); - s_client = new BackendClient(s_baseUrl); - } - - if (await s_client.HealthAsync(ct).ConfigureAwait(false)) - { - await RefreshConfigAsync(log, ct).ConfigureAwait(false); - return; - } - - StartProcess(log); - - var deadline = DateTime.UtcNow.AddSeconds(10); - while (DateTime.UtcNow < deadline) - { - if (await s_client.HealthAsync(ct).ConfigureAwait(false)) - { - await RefreshConfigAsync(log, ct).ConfigureAwait(false); - return; - } - await Task.Delay(200, ct).ConfigureAwait(false); - } - - throw new InvalidOperationException("鍚庣鍚姩瓒呮椂"); - } - finally - { - s_lock.Release(); - } - } - - public static async Task RunJobAsync( - string kind, - object? args, - Action? log, - CancellationToken ct) - { - await EnsureStartedAsync(log, ct).ConfigureAwait(false); - if (s_client == null) - { - throw new InvalidOperationException("鍚庣鏈垵濮嬪寲"); - } - - var start = await s_client.StartJobAsync(kind, args, ct).ConfigureAwait(false); - ulong id = start.Id; - ulong? from = null; - JobView job; - - while (true) - { - job = await s_client.GetJobAsync(id, ct).ConfigureAwait(false); - var logs = await s_client.GetJobLogsAsync(id, from, ct).ConfigureAwait(false); - if (logs.Dropped) - { - log?.Invoke("鍚庣鏃ュ織宸叉埅鏂"); - } - foreach (var line in logs.Lines) - { - log?.Invoke(line); - } - from = logs.Next; - - if (string.Equals(job.Status, "succeeded", StringComparison.OrdinalIgnoreCase) || - string.Equals(job.Status, "failed", StringComparison.OrdinalIgnoreCase)) - { - break; - } - - await Task.Delay(300, ct).ConfigureAwait(false); - } - - var finalLogs = await s_client.GetJobLogsAsync(id, from, ct).ConfigureAwait(false); - if (finalLogs.Dropped) - { - log?.Invoke("鍚庣鏃ュ織宸叉埅鏂"); - } - foreach (var line in finalLogs.Lines) - { - log?.Invoke(line); - } - - JsonElement? result = null; - if (job.ResultAvailable) - { - var jobResult = await s_client.GetJobResultAsync(id, ct).ConfigureAwait(false); - result = jobResult.Result; - } - - if (string.Equals(job.Status, "failed", StringComparison.OrdinalIgnoreCase)) - { - if (!string.IsNullOrEmpty(job.Error)) - { - log?.Invoke($"error: {job.Error}"); - } - else - { - log?.Invoke($"error: 鍚庣浣滀笟澶辫触 ({kind})"); - } - } - - return new BackendJobResult(job, result); - } - - public static BackendJobResult RunJob( - string kind, - object? args, - Action? log, - CancellationToken ct) - { - return RunJobAsync(kind, args, log, ct).GetAwaiter().GetResult(); - } - - public static async Task ShutdownAsync(Action? log, CancellationToken ct) - { - BackendClient? client = s_client; - Process? proc = s_process; - - if (client != null) - { - try - { - await client.ShutdownAsync(ct).ConfigureAwait(false); - } - catch (Exception ex) - { - log?.Invoke($"shutdown failed: {ex.Message}"); - } - } - - if (proc != null && !proc.HasExited) - { - try - { - if (!proc.WaitForExit(2000)) - { - proc.Kill(true); - } - } - catch (Exception ex) - { - log?.Invoke($"kill backend failed: {ex.Message}"); - } - } - } - - public static void ApplyConfigToSettings(BackendConfig config) - { - Settings.Default.varspath = config.Varspath ?? string.Empty; - Settings.Default.vampath = config.Vampath ?? string.Empty; - if (config.VamExec != null) - { - Settings.Default.defaultVamExec = config.VamExec; - } - } - - private static async Task RefreshConfigAsync(Action? log, CancellationToken ct) - { - if (s_client == null) - { - return; - } - try - { - s_config = await s_client.GetConfigAsync(ct).ConfigureAwait(false); - if (s_config != null) - { - ApplyConfigToSettings(s_config); - } - } - catch (Exception ex) - { - log?.Invoke($"璇诲彇鍚庣閰嶇疆澶辫触: {ex.Message}"); - } - } - - private static void StartProcess(Action? log) - { - if (s_process != null && !s_process.HasExited) - { - return; - } - - string exePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "varManager_backend.exe"); - if (!File.Exists(exePath)) - { - throw new FileNotFoundException($"鍚庣绋嬪簭涓嶅瓨鍦: {exePath}"); - } - - var startInfo = new ProcessStartInfo - { - FileName = exePath, - WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory, - UseShellExecute = false, - CreateNoWindow = true - }; - - s_process = Process.Start(startInfo); - log?.Invoke("鍚庣宸插惎鍔"); - } - - private static string ResolveBaseUrl() - { - string host = "127.0.0.1"; - int port = 57123; - string cfgPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json"); - if (File.Exists(cfgPath)) - { - try - { - var json = File.ReadAllText(cfgPath); - using var doc = JsonDocument.Parse(json); - if (doc.RootElement.TryGetProperty("listen_host", out var hostProp)) - { - var value = hostProp.GetString(); - if (!string.IsNullOrWhiteSpace(value)) - { - host = value; - } - } - if (doc.RootElement.TryGetProperty("listen_port", out var portProp)) - { - if (portProp.ValueKind == JsonValueKind.Number && portProp.TryGetInt32(out var portValue)) - { - port = portValue; - } - } - } - catch - { - // ignore config parse errors; fallback to defaults - } - } - return $"http://{host}:{port}/"; - } - } -} diff --git a/_archived/varManager/Comm.cs b/_archived/varManager/Comm.cs deleted file mode 100644 index f49586c..0000000 --- a/_archived/varManager/Comm.cs +++ /dev/null @@ -1,459 +0,0 @@ -锘縰sing System; -using System.ComponentModel; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; - -namespace varManager -{ - static class Comm - { - public static void LocateFile(string filePath) - { - if (!File.Exists(filePath)) - { - return; - } - - // combine the arguments together - // it doesn't matter if there is a space after ',' - string argument = "/select, \"" + filePath + "\""; - - System.Diagnostics.Process.Start("explorer.exe", argument); - } - public static string ValidFileName(string filename) - { - foreach (char c in Path.GetInvalidFileNameChars()) - filename = filename.Replace(System.Char.ToString(c), ""); - return filename; - } - public static void DirectoryMoveAll(string sourceDir, string destDir) - { - if (Directory.Exists(destDir)) - { - foreach (string sourcefile in Directory.GetFiles(sourceDir, "*", SearchOption.TopDirectoryOnly)) - { - string destfile = sourcefile.Replace(sourceDir, destDir); - if (!File.Exists(destfile)) - File.Move(sourcefile, destfile); - } - foreach (string sourcesubdir in Directory.GetDirectories(sourceDir, "*", SearchOption.TopDirectoryOnly)) - { - string destsubdir = sourcesubdir.Replace(sourceDir, destDir); - DirectoryMoveAll(sourcesubdir, destsubdir); - } - if ((Directory.GetFiles(sourceDir, "*", SearchOption.AllDirectories).Length <= 0) && (Directory.GetDirectories(sourceDir, "*", SearchOption.TopDirectoryOnly).Length <= 0)) - { - Directory.Delete(sourceDir); - } - } - else - { - Directory.Move(sourceDir, destDir); - } - } - - [DllImport("Kernel32.dll", CharSet = CharSet.Unicode)] - public static extern bool CreateHardLink( - string lpFileName, - string lpExistingFileName, - IntPtr lpSecurityAttributes - ); - [Flags] - public enum SYMBOLIC_LINK_FLAG - { - File = 0, - Directory = 1, - AllowUnprivilegedCreate = 2 - } - - [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] - [return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.I1)] - public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, SYMBOLIC_LINK_FLAG dwFlags); - - [DllImport("kernel32.dll")] - static extern bool GetFileSizeEx(IntPtr hFile, out long lpFileSize); - - /// - /// Creates a relative path from one file or folder to another. - /// - /// Contains the directory that defines the start of the relative path. - /// Contains the path that defines the endpoint of the relative path. - /// The relative path from the start directory to the end path or toPath if the paths are not related. - /// - /// - /// - public static String MakeRelativePath(String fromPath, String toPath) - { - - if (String.IsNullOrEmpty(fromPath)) throw new ArgumentNullException("fromPath"); - if (String.IsNullOrEmpty(toPath)) throw new ArgumentNullException("toPath"); - if (fromPath.Last() != Path.DirectorySeparatorChar) - fromPath += Path.DirectorySeparatorChar; - Uri fromUri = new Uri(fromPath); - Uri toUri = new Uri(toPath); - - if (fromUri.Scheme != toUri.Scheme) { return toPath; } // path can't be made relative. - - Uri relativeUri = fromUri.MakeRelativeUri(toUri); - String relativePath = Uri.UnescapeDataString(relativeUri.ToString()); - - if (toUri.Scheme.Equals("file", StringComparison.InvariantCultureIgnoreCase)) - { - relativePath = relativePath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); - } - - return relativePath; - } - // This is based on the code at http://www.flexhex.com/docs/articles/hard-links.phtml - - private const uint IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003; // Moiunt point or junction, see winnt.h - private const uint IO_REPARSE_TAG_SYMLINK = 0xA000000C; // SYMLINK or SYMLINKD (see http://wesnerm.blogs.com/net_undocumented/2006/10/index.html) - private const UInt32 SE_PRIVILEGE_ENABLED = 0x00000002; - private const string SE_BACKUP_NAME = "SeBackupPrivilege"; - private const uint FILE_FLAG_BACKUP_SEMANTICS = 0x02000000; - private const uint FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000; - private const uint FILE_DEVICE_FILE_SYSTEM = 9; - private const uint FILE_ANY_ACCESS = 0; - private const uint METHOD_BUFFERED = 0; - private const int MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024; - private const uint TOKEN_ADJUST_PRIVILEGES = 0x0020; - private const int FSCTL_GET_REPARSE_POINT = 42; - - // This is the official version of the data buffer, see http://msdn2.microsoft.com/en-us/library/ms791514.aspx - // not the one used at http://www.flexhex.com/docs/articles/hard-links.phtml - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - private struct REPARSE_DATA_BUFFER - { - public uint ReparseTag; - public short ReparseDataLength; - public short Reserved; - public short SubsNameOffset; - public short SubsNameLength; - public short PrintNameOffset; - public short PrintNameLength; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAXIMUM_REPARSE_DATA_BUFFER_SIZE)] - public char[] ReparseTarget; - } - - [StructLayout(LayoutKind.Sequential)] - private struct LUID - { - public UInt32 LowPart; - public Int32 HighPart; - } - - [StructLayout(LayoutKind.Sequential)] - private struct LUID_AND_ATTRIBUTES - { - public LUID Luid; - public UInt32 Attributes; - } - - private struct TOKEN_PRIVILEGES - { - public UInt32 PrivilegeCount; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] // !! think we only need one - public LUID_AND_ATTRIBUTES[] Privileges; - } - - [DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool DeviceIoControl( - IntPtr hDevice, - uint dwIoControlCode, - IntPtr lpInBuffer, - uint nInBufferSize, - //IntPtr lpOutBuffer, - out REPARSE_DATA_BUFFER outBuffer, - uint nOutBufferSize, - out uint lpBytesReturned, - IntPtr lpOverlapped); - - [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] - private static extern IntPtr CreateFile( - string fileName, - [MarshalAs(UnmanagedType.U4)] uint fileAccess, - [MarshalAs(UnmanagedType.U4)] FileShare fileShare, - int securityAttributes, - [MarshalAs(UnmanagedType.U4)] FileMode creationDisposition, - uint flags, - IntPtr template); - - [DllImport("advapi32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool OpenProcessToken(IntPtr ProcessHandle, - UInt32 DesiredAccess, out IntPtr TokenHandle); - - [DllImport("kernel32.dll")] - private static extern IntPtr GetCurrentProcess(); - - [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool LookupPrivilegeValue(string lpSystemName, string lpName, - out LUID lpLuid); - - [DllImport("advapi32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool AdjustTokenPrivileges(IntPtr TokenHandle, - [MarshalAs(UnmanagedType.Bool)] bool DisableAllPrivileges, - ref TOKEN_PRIVILEGES NewState, - Int32 BufferLength, - //ref TOKEN_PRIVILEGES PreviousState, !! for some reason this won't accept null - IntPtr PreviousState, - IntPtr ReturnLength); - - [DllImport("kernel32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool CloseHandle(IntPtr hObject); - - public enum TagType - { - None = 0, - MountPoint = 1, - SymbolicLink = 2, - JunctionPoint = 3 - } - - /// - /// Takes a full path to a reparse point and finds the target. - /// - /// Full path of the reparse point - public static string ReparsePoint(string path) - { - Debug.Assert(!string.IsNullOrEmpty(path) && path.Length > 2 && path[1] == ':' && path[2] == '\\'); - string normalisedTarget = ""; - TagType tag = TagType.None; - bool success; - int lastError; - // Apparently we need to have backup privileges - IntPtr token; - TOKEN_PRIVILEGES tokenPrivileges = new TOKEN_PRIVILEGES(); - tokenPrivileges.Privileges = new LUID_AND_ATTRIBUTES[1]; - success = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, out token); - lastError = Marshal.GetLastWin32Error(); - if (success) - { - success = LookupPrivilegeValue(null, SE_BACKUP_NAME, out tokenPrivileges.Privileges[0].Luid); // null for local system - lastError = Marshal.GetLastWin32Error(); - if (success) - { - tokenPrivileges.PrivilegeCount = 1; - tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - success = AdjustTokenPrivileges(token, false, ref tokenPrivileges, Marshal.SizeOf(tokenPrivileges), IntPtr.Zero, IntPtr.Zero); - lastError = Marshal.GetLastWin32Error(); - } - CloseHandle(token); - } - - if (success) - { - // Open the file and get its handle - IntPtr handle = CreateFile(path, 0x80000000, FileShare.None, 0, FileMode.Open, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero); - lastError = Marshal.GetLastWin32Error(); - if (handle.ToInt32() >= 0) - { - REPARSE_DATA_BUFFER buffer = new REPARSE_DATA_BUFFER(); - // Make up the control code - see CTL_CODE on ntddk.h - uint controlCode = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (FSCTL_GET_REPARSE_POINT << 2) | METHOD_BUFFERED; - uint bytesReturned; - success = DeviceIoControl(handle, controlCode, IntPtr.Zero, 0, out buffer, MAXIMUM_REPARSE_DATA_BUFFER_SIZE, out bytesReturned, IntPtr.Zero); - lastError = Marshal.GetLastWin32Error(); - if (success) - { - string subsString = ""; - string printString = ""; - // Note that according to http://wesnerm.blogs.com/net_undocumented/2006/10/symbolic_links_.html - // Symbolic links store relative paths, while junctions use absolute paths - // however, they can in fact be either, and may or may not have a leading \. - Debug.Assert(buffer.ReparseTag == IO_REPARSE_TAG_SYMLINK || buffer.ReparseTag == IO_REPARSE_TAG_MOUNT_POINT, - "Unrecognised reparse tag"); // We only recognise these two - if (buffer.ReparseTag == IO_REPARSE_TAG_SYMLINK) - { - // for some reason symlinks seem to have an extra two characters on the front - subsString = new string(buffer.ReparseTarget, (buffer.SubsNameOffset / 2 + 2), buffer.SubsNameLength / 2); - printString = new string(buffer.ReparseTarget, (buffer.PrintNameOffset / 2 + 2), buffer.PrintNameLength / 2); - tag = TagType.SymbolicLink; - } - else if (buffer.ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) - { - // This could be a junction or a mounted drive - a mounted drive starts with "\\??\\Volume" - subsString = new string(buffer.ReparseTarget, buffer.SubsNameOffset / 2, buffer.SubsNameLength / 2); - printString = new string(buffer.ReparseTarget, buffer.PrintNameOffset / 2, buffer.PrintNameLength / 2); - tag = subsString.StartsWith(@"\??\Volume") ? TagType.MountPoint : TagType.JunctionPoint; - } - Debug.Assert(!(string.IsNullOrEmpty(subsString) && string.IsNullOrEmpty(printString)), "Failed to retrieve parse point"); - // the printstring should give us what we want - if (!string.IsNullOrEmpty(printString)) - { - normalisedTarget = printString; - } - else - { - // if not we can use the substring with a bit of tweaking - normalisedTarget = subsString; - Debug.Assert(normalisedTarget.Length > 2, "Target string too short"); - Debug.Assert( - (normalisedTarget.StartsWith(@"\??\") && (normalisedTarget[5] == ':' || normalisedTarget.StartsWith(@"\??\Volume")) || - (!normalisedTarget.StartsWith(@"\??\") && normalisedTarget[1] != ':')), - "Malformed subsString"); - // Junction points must be absolute - Debug.Assert( - buffer.ReparseTag == IO_REPARSE_TAG_SYMLINK || - normalisedTarget.StartsWith(@"\??\Volume") || - normalisedTarget[1] == ':', - "Relative junction point"); - if (normalisedTarget.StartsWith(@"\??\")) - { - normalisedTarget = normalisedTarget.Substring(4); - } - } - string actualTarget = normalisedTarget; - // Symlinks can be relative. - if (buffer.ReparseTag == IO_REPARSE_TAG_SYMLINK && (normalisedTarget.Length < 2 || normalisedTarget[1] != ':')) - { - // it's relative, we need to tack it onto the path - if (normalisedTarget[0] == '\\') - { - normalisedTarget = normalisedTarget.Substring(1); - } - if (path.EndsWith(@"\")) - { - path = path.Substring(0, path.Length - 1); - } - // Need to take the symlink name off the path - normalisedTarget = path.Substring(0, path.LastIndexOf('\\')) + @"\" + normalisedTarget; - // Note that if the symlink target path contains any ..s these are not normalised but returned as is. - } - // Remove any final slash for consistency - if (normalisedTarget.EndsWith("\\")) - { - normalisedTarget = normalisedTarget.Substring(0, normalisedTarget.Length - 1); - } - } - CloseHandle(handle); - } - else if (lastError == 5) - { - success = false; - } - else - { - throw new Win32Exception(lastError); - } - - } - return normalisedTarget; - } - - public static bool SetSymboLinkFileTime(string path, DateTime createtime, DateTime lastwritetime) - { - Debug.Assert(!string.IsNullOrEmpty(path) && path.Length > 2 && path[1] == ':' && path[2] == '\\'); - bool success; - int lastError; - // Apparently we need to have backup privileges - IntPtr token; - TOKEN_PRIVILEGES tokenPrivileges = new TOKEN_PRIVILEGES(); - tokenPrivileges.Privileges = new LUID_AND_ATTRIBUTES[1]; - success = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, out token); - lastError = Marshal.GetLastWin32Error(); - if (success) - { - success = LookupPrivilegeValue(null, SE_BACKUP_NAME, out tokenPrivileges.Privileges[0].Luid); // null for local system - lastError = Marshal.GetLastWin32Error(); - if (success) - { - tokenPrivileges.PrivilegeCount = 1; - tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - success = AdjustTokenPrivileges(token, false, ref tokenPrivileges, Marshal.SizeOf(tokenPrivileges), IntPtr.Zero, IntPtr.Zero); - lastError = Marshal.GetLastWin32Error(); - } - CloseHandle(token); - } - - if (success) - { - // Open the file and get its handle - IntPtr handle = CreateFile(path, 0x40000000, FileShare.ReadWrite | FileShare.Delete, - 0, FileMode.Open, 0x00200000, IntPtr.Zero); - lastError = Marshal.GetLastWin32Error(); - if (handle.ToInt32() >= 0) - { - var basicInfo = new FileInformation(); - //basicInfo.FILE_BASIC_INFO.CreationTime = createtime.ToFileTime(); - //basicInfo.FILE_BASIC_INFO.LastWriteTime = lastwritetime.ToFileTime(); - basicInfo.FILE_BASIC_INFO = new FILE_BASIC_INFO() - { - CreationTime = createtime.ToFileTime(), - LastAccessTime = -1, - LastWriteTime = lastwritetime.ToFileTime(), - ChangeTime = -1, - FileAttributes = 0 - }; - success = SetFileInformationByHandle(handle, FileInformationClass.FileBasicInfo, ref basicInfo, Marshal.SizeOf(basicInfo.FILE_BASIC_INFO)); - if (!success) - { - throw new Win32Exception(Marshal.GetLastWin32Error()); - } - CloseHandle(handle); - } - } - return success; - } - - enum FileInformationClass : int - { - FileBasicInfo = 0, - FileStandardInfo = 1, - FileNameInfo = 2, - FileRenameInfo = 3, - FileDispositionInfo = 4, - FileAllocationInfo = 5, - FileEndOfFileInfo = 6, - FileStreamInfo = 7, - FileCompressionInfo = 8, - FileAttributeTagInfo = 9, - FileIdBothDirectoryInfo = 10, // 0xA - FileIdBothDirectoryRestartInfo = 11, // 0xB - FileIoPriorityHintInfo = 12, // 0xC - FileRemoteProtocolInfo = 13, // 0xD - FileFullDirectoryInfo = 14, // 0xE - FileFullDirectoryRestartInfo = 15, // 0xF - FileStorageInfo = 16, // 0x10 - FileAlignmentInfo = 17, // 0x11 - FileIdInfo = 18, // 0x12 - FileIdExtdDirectoryInfo = 19, // 0x13 - FileIdExtdDirectoryRestartInfo = 20, // 0x14 - } - [StructLayout(LayoutKind.Sequential)] - private struct FILE_BASIC_INFO - { - public Int64 CreationTime; - public Int64 LastAccessTime; - public Int64 LastWriteTime; - public Int64 ChangeTime; - public UInt32 FileAttributes; - } - [StructLayout(LayoutKind.Sequential)] - struct FILE_DISPOSITION_INFO - { - public bool DeleteFile; - } - [StructLayout(LayoutKind.Explicit)] - struct FileInformation - { - [FieldOffset(0)] - public FILE_BASIC_INFO FILE_BASIC_INFO; - [FieldOffset(0)] - public FILE_DISPOSITION_INFO FILE_DISPOSITION_INFO; - } - [DllImport("Kernel32.dll", SetLastError = true)] - private static extern bool SetFileInformationByHandle(IntPtr hFile, - FileInformationClass FileInformationClass, - ref FileInformation FileInformation, - Int32 dwBufferSize); - - - } -} diff --git a/_archived/varManager/Custom/Scripts/MorphMerger.cs b/_archived/varManager/Custom/Scripts/MorphMerger.cs deleted file mode 100644 index d714fc7..0000000 --- a/_archived/varManager/Custom/Scripts/MorphMerger.cs +++ /dev/null @@ -1,592 +0,0 @@ -锘/* -MIT License - -Copyright (c) 2019 ProjectCanyon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -using System; -using UnityEngine; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.UI; - -namespace MorphMerger -{ - public class MorphMerger : MVRScript - { - private Atom _person; - - private UIDynamicButton _refreshButton; - private UIDynamicButton _selectAllButton; - private UIDynamicButton _selectNoneButton; - private UIDynamicButton _mergeButton; - private UIDynamicButton _splitButton; - - private List _mainBank; - private List _genitalBank; - - private DAZCharacterSelector _characterSelector; - - private UIDynamicTextField _titleTextField; - private UIDynamicTextField _infoTextField; - private UIDynamicTextField _resultTextField; - - private InputField _morphNameInputField; - private InputField _groupNameInputField; - private InputField _regionNameInputField; - - public override void Init() - { - try - { - pluginLabelJSON.val = "MorphMerger v1.0.7b (by ProjectCanyon, chokaphi, patch by MeshedVR)."; - - if (containingAtom.type != "Person") - { - SuperController.LogError($"This plugin is for use with 'Person' atom only, not '{containingAtom.type}'"); - return; - } - - _person = containingAtom; - - _characterSelector = _person.GetComponentInChildren(); - if (_characterSelector == null) - throw new InvalidOperationException("Missing DAZCharacterSelector"); - - _titleTextField = CreateTextField(new JSONStorableString("info", "Morph Merger")); - _titleTextField.height = 12; - _titleTextField.UItext.fontSize = 72; - _titleTextField.UItext.alignment = TextAnchor.LowerCenter; - _titleTextField.UItext.fontStyle = FontStyle.Bold; - - var infoBuilder = new StringBuilder(); - - infoBuilder.AppendLine(); - infoBuilder.AppendLine("Select morphs on the right to include them into the merged morph."); - infoBuilder.AppendLine(); - infoBuilder.AppendLine("Morph colors are greener the more impact they are having."); - infoBuilder.AppendLine(); - infoBuilder.AppendLine("Disable auto behaviours to prevent them showing."); - infoBuilder.AppendLine(); - infoBuilder.AppendLine("Morph will not show up until hard reset via main menu, or VAM restart."); - - _infoTextField = CreateTextField(new JSONStorableString("info", infoBuilder.ToString())); - _infoTextField.height = 450; - _infoTextField.UItext.fontSize = 32; - - _mainBank = new List(); - _genitalBank = new List(); - - _refreshButton = CreateButton("Refresh", rightSide: true); - _refreshButton.buttonColor = Color.yellow; - if (_refreshButton != null) - _refreshButton.button.onClick.AddListener(Refresh); - - _selectAllButton = CreateButton("Select All", rightSide: true); - if (_selectAllButton != null) - _selectAllButton.button.onClick.AddListener(() => - { - foreach (SelectableMorph selectableMorph in _mainBank.Concat(_genitalBank)) - selectableMorph.Storable.val = selectableMorph.Selected = true; - }); - - _selectNoneButton = CreateButton("Select None", rightSide: true); - if (_selectNoneButton != null) - _selectNoneButton.button.onClick.AddListener(() => - { - foreach (SelectableMorph selectableMorph in _mainBank.Concat(_genitalBank)) - selectableMorph.Storable.val = selectableMorph.Selected = false; - }); - - var morphNameLabel = CreateTextField(new JSONStorableString("morphName", "Morph Name")); - morphNameLabel.UItext.fontSize = 36; - morphNameLabel.backgroundColor = Color.clear; - - SetLayoutHeight(morphNameLabel, 48); - - var morphNameTextField = CreateTextField(new JSONStorableString(name, "My Morph")); - _morphNameInputField = morphNameTextField.gameObject.AddComponent(); - _morphNameInputField.textComponent = morphNameTextField.UItext; - _morphNameInputField.text = "My Morph"; - morphNameTextField.height = 18; - morphNameTextField.backgroundColor = Color.white; - _morphNameInputField.textComponent.fontSize = 36; - - SetLayoutHeight(morphNameTextField, 48); - - var groupNameLabel = CreateTextField(new JSONStorableString("groupName", "Group")); - groupNameLabel.height = 12; - groupNameLabel.UItext.fontSize = 36; - groupNameLabel.backgroundColor = Color.clear; - - SetLayoutHeight(groupNameLabel, 48); - - var groupNameTextField = CreateTextField(new JSONStorableString(name, "_MorphMerger")); - _groupNameInputField = groupNameTextField.gameObject.AddComponent(); - _groupNameInputField.textComponent = groupNameTextField.UItext; - _groupNameInputField.text = "_MorphMerger"; - groupNameTextField.height = 18; - groupNameTextField.backgroundColor = Color.white; - _groupNameInputField.textComponent.fontSize = 36; - - SetLayoutHeight(_groupNameInputField, 48); - - var regionNameLabel = CreateTextField(new JSONStorableString("regionName", "Region (Category)")); - regionNameLabel.height = 12; - regionNameLabel.UItext.fontSize = 36; - regionNameLabel.backgroundColor = Color.clear; - - SetLayoutHeight(regionNameLabel, 48); - - var regionNameTextField = CreateTextField(new JSONStorableString(name, "_MorphMerger")); - _regionNameInputField = regionNameTextField.gameObject.AddComponent(); - _regionNameInputField.textComponent = regionNameTextField.UItext; - _regionNameInputField.text = "_MorphMerger"; - regionNameTextField.height = 18; - regionNameTextField.backgroundColor = Color.white; - _regionNameInputField.textComponent.fontSize = 36; - - SetLayoutHeight(regionNameTextField, 48); - - _mergeButton = CreateButton("Merge"); - _mergeButton.buttonColor = Color.red; - _mergeButton.height = 100; - _mergeButton.buttonText.fontStyle = FontStyle.Bold; - _mergeButton.buttonText.fontSize = 42; - if (_mergeButton != null) - _mergeButton.button.onClick.AddListener(Merge); - - //Body Spliter - _splitButton = CreateButton("Split Body"); - _splitButton.buttonColor = Color.cyan; - _splitButton.height = 100; - _splitButton.buttonText.fontStyle = FontStyle.Bold; - _splitButton.buttonText.fontSize = 42; - if (_splitButton != null) - _splitButton.button.onClick.AddListener(Split); - - _resultTextField = CreateTextField(new JSONStorableString("result", string.Empty)); - _resultTextField.UItext.fontSize = 24; - - Refresh(); - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - } - - private void SetLayoutHeight(Component component, float height) - { - var layoutElement = component.GetComponent(); - layoutElement.minHeight = 0f; - layoutElement.preferredHeight = height; - } - - private UIDynamic _genitalSpacer; - - private void Refresh() - { - foreach (SelectableMorph selectableMorph in _mainBank) - RemoveToggle(selectableMorph.Storable); - - _mainBank.Clear(); - - foreach (SelectableMorph selectableMorph in _genitalBank) - RemoveToggle(selectableMorph.Storable); - - _genitalBank.Clear(); - - ScanBank(_characterSelector.morphBank1, _mainBank); - - if (_genitalSpacer != null) - RemoveSpacer(_genitalSpacer); - _genitalSpacer = CreateSpacer(rightSide: true); - - ScanBank(_characterSelector.morphBank2, _genitalBank); - ScanBank(_characterSelector.morphBank3, _genitalBank); - } - - private void ScanBank(DAZMorphBank bank, List selectableList) - { - if (bank == null) - return; - - foreach (DAZMorph morph in bank.morphs.OrderByDescending(NormalisedMagnitude)) - { - // ReSharper disable once CompareOfFloatsByEqualityOperator - if (morph.appliedValue != morph.jsonFloat.defaultVal && morph.visible) - { - var jsonStorable = new JSONStorableBool($"{morph.morphName}Bool", false); - - var morphToggle = CreateToggle(jsonStorable, true); - morphToggle.label = morph.displayName; - - var selectable = new SelectableMorph - { - Morph = morph, - Storable = jsonStorable, - }; - - morphToggle.backgroundColor = Color.Lerp(Color.white, Color.green, NormalisedMagnitude(morph)); - morphToggle.toggle.onValueChanged.AddListener(value => - { - selectable.Selected = value; - }); - - selectableList.Add(selectable); - } - } - } - - private void Merge() - { - try - { - var rndId = Guid.NewGuid().ToString("N").Substring(0, 8); - - ClearResultField(); - - var characterSelector = _person.GetComponentInChildren(); - if (characterSelector == null) - throw new InvalidOperationException("Missing DAZCharacterSelector"); - - string morphName = _morphNameInputField.text; - if (string.IsNullOrEmpty(morphName)) - morphName = _person.name; - - // Main - DAZMorph mainMorph = ProcessMorphBank(_mainBank, morphName, morphName); - if (mainMorph != null) - { - string mainMetaPath = characterSelector.morphBank1.autoImportFolder + $"/{morphName}-{rndId}.vmi"; - string mainDeltasPath = characterSelector.morphBank1.autoImportFolder + $"/{morphName}-{rndId}.vmb"; - - var mainMeta = mainMorph.GetMetaJSON(); - if (mainMeta == null) - throw new InvalidOperationException("Failed to generate meta data"); - - SaveJSON(mainMeta, mainMetaPath); - mainMorph.SaveDeltasToBinaryFile(mainDeltasPath); - - WriteToResultField($"Saved VMI: \"{mainMetaPath}\""); - WriteToResultField($"Saved VMB \"{mainDeltasPath}\""); - } - - // Genital - DAZMorph genMorph = ProcessMorphBank(_genitalBank, $"{morphName}-genital", $"{morphName} Genital"); - if (genMorph != null) - { - string genMetaPath = characterSelector.morphBank2.autoImportFolder + $"/{morphName}-{rndId}-Genital.vmi"; - string genDeltasPath = characterSelector.morphBank2.autoImportFolder + $"/{morphName}-{rndId}-Genital.vmb"; - - var genMeta = genMorph.GetMetaJSON(); - if (genMeta == null) - throw new InvalidOperationException("Failed to generate gen meta data"); - - SaveJSON(genMeta, genMetaPath); - genMorph.SaveDeltasToBinaryFile(genDeltasPath); - - WriteToResultField($"Saved Genital VMI: \"{genMetaPath}\""); - WriteToResultField($"Saved Genital VMB: \"{genDeltasPath}\""); - } - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - } - - private void Split() - { - try - { - //use a more usefull date of creation as random instead of guid - var rndId = DateTime.Now.ToString("yyyy-dd-M--HH_mm_ss.fff"); - - ClearResultField(); - - var characterSelector = _person.GetComponentInChildren(); - if (characterSelector == null) - throw new InvalidOperationException("Missing DAZCharacterSelector"); - - string morphName = _morphNameInputField.text; - if (string.IsNullOrEmpty(morphName)) - morphName = _person.name; - - VertexFilter vertexFilter = new VertexFilter() { vertecies = _headVerticies, boneNames = _headBoneNames }; - - // Head - string tempName = morphName + "-Head"; - DAZMorph mainMorph = ProcessMorphBank(_mainBank, tempName, tempName, vertexFilter); - if (mainMorph != null) - { - string mainMetaPath = characterSelector.morphBank1.autoImportFolder + $"/{tempName}-{rndId}.vmi"; - string mainDeltasPath = characterSelector.morphBank1.autoImportFolder + $"/{tempName}-{rndId}.vmb"; - - var mainMeta = mainMorph.GetMetaJSON(); - if (mainMeta == null) - throw new InvalidOperationException("Failed to generate meta data"); - - SaveJSON(mainMeta, mainMetaPath); - mainMorph.SaveDeltasToBinaryFile(mainDeltasPath); - - WriteToResultField($"Saved VMI: \"{mainMetaPath}\""); - WriteToResultField($"Saved VMB \"{mainDeltasPath}\""); - } - //BODY - just inverse head filter - tempName = morphName + "-Body"; - vertexFilter.invert = true; - mainMorph = ProcessMorphBank(_mainBank, tempName, tempName, vertexFilter); - if (mainMorph != null) - { - string mainMetaPath = characterSelector.morphBank1.autoImportFolder + $"/{tempName}-{rndId}.vmi"; - string mainDeltasPath = characterSelector.morphBank1.autoImportFolder + $"/{tempName}-{rndId}.vmb"; - - - var mainMeta = mainMorph.GetMetaJSON(); - if (mainMeta == null) - throw new InvalidOperationException("Failed to generate meta data"); - - SaveJSON(mainMeta, mainMetaPath); - mainMorph.SaveDeltasToBinaryFile(mainDeltasPath); - - WriteToResultField($"Saved VMI: \"{mainMetaPath}\""); - WriteToResultField($"Saved VMB \"{mainDeltasPath}\""); - } - - // Genital - DAZMorph genMorph = ProcessMorphBank(_genitalBank, $"{morphName}-genital", $"{morphName} Genital"); - if (genMorph != null) - { - string genMetaPath = characterSelector.morphBank2.autoImportFolder + $"/{morphName}-{rndId}-Genital.vmi"; - string genDeltasPath = characterSelector.morphBank2.autoImportFolder + $"/{morphName}-{rndId}-Genital.vmb"; - - var genMeta = genMorph.GetMetaJSON(); - if (genMeta == null) - throw new InvalidOperationException("Failed to generate gen meta data"); - - SaveJSON(genMeta, genMetaPath); - genMorph.SaveDeltasToBinaryFile(genDeltasPath); - - WriteToResultField($"Saved Genital VMI: \"{genMetaPath}\""); - WriteToResultField($"Saved Genital VMB: \"{genDeltasPath}\""); - } - - //_person.GetComponentInChildren().morphBank1.RebuildAllLookups(); - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - } - - private void ClearResultField() - { - _resultTextField.text = string.Empty; - } - - private void WriteToResultField(string message) - { - _resultTextField.text += "\n" + message; - } - - private DAZMorph ProcessMorphBank(IEnumerable bank, string name, string displayName, VertexFilter vertexFilter = null) - { - try - { - VertexDeltas vertexDeltas = new VertexDeltas(); - Formulas formulas = new Formulas(); - - foreach (SelectableMorph selectableMorph in bank) - { //vertex filters don't care about user morph category selections - if (!selectableMorph.Selected && vertexFilter == null) - continue; - - if (selectableMorph.Morph.deltas != null) - { - foreach (DAZMorphVertex delta in selectableMorph.Morph.deltas) - { - if(vertexFilter != null) - { - if (vertexFilter.Contains(delta.vertex)) - { - vertexDeltas.Add(delta, selectableMorph); - } - } - else - { - vertexDeltas.Add(delta, selectableMorph); - } - } - } - - foreach (DAZMorphFormula formula in selectableMorph.Morph.formulas) - { - if (formula.targetType == DAZMorphFormulaTargetType.MCM || formula.targetType == DAZMorphFormulaTargetType.MCMMult || formula.targetType == DAZMorphFormulaTargetType.MorphValue) - continue; - - var combinedFormula = new DAZMorphFormula - { - targetType = formula.targetType, - target = formula.target, - multiplier = formula.multiplier * selectableMorph.Morph.morphValue - }; - - if (vertexFilter != null) - { - if (vertexFilter.Contains(formula.target)) - { - formulas.Add(combinedFormula); - } - } - else - { - formulas.Add(combinedFormula); - } - - } - } - - if (vertexDeltas.Count == 0 && formulas.Count == 0) - return null; - - var groupName = _groupNameInputField.text; - if (string.IsNullOrEmpty(groupName)) - groupName = "_MorphMerger"; - - var regionName = _regionNameInputField.text; - if (string.IsNullOrEmpty(regionName)) - regionName = "_MorphMerger"; - - var combinedMorph = new DAZMorph - { - group = groupName, - region = regionName, - morphName = name, - displayName = displayName, - min = 0, - max = 1, - visible = true, - disable = false, - isPoseControl = false, - formulas = formulas.formulas - .SelectMany(x => x.Value.Values) - .ToArray(), - numDeltas = vertexDeltas.Count, - deltas = vertexDeltas.Deltas - .Select(x => new DAZMorphVertex { vertex = x.Key, delta = x.Value }) - .ToArray(), - }; - - return combinedMorph; - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - - return null; - } - - public static float NormalisedMagnitude(DAZMorph morph) - { - return morph.morphValue > morph.jsonFloat.defaultVal ? - Math.Abs(morph.jsonFloat.defaultVal - morph.morphValue) / Math.Abs(morph.jsonFloat.defaultVal - morph.max) : - Math.Abs(morph.jsonFloat.defaultVal - morph.morphValue) / Math.Abs(morph.jsonFloat.defaultVal - morph.min); - } - - public class SelectableMorph - { - public bool Selected { get; set; } - public DAZMorph Morph { get; set; } - public JSONStorableBool Storable { get; set; } - } - - public class SelectableMorphComparer : IComparer - { - public int Compare(SelectableMorph x, SelectableMorph y) - { - if (x == null || y == null) return 0; - return NormalisedMagnitude(x.Morph).CompareTo(MorphMerger.NormalisedMagnitude(y.Morph)); - } - } - - public class VertexDeltas - { - public Dictionary Deltas { get; set; } = new Dictionary(); - public int Count { get { return Deltas.Count; } } - - public void Add(DAZMorphVertex delta, SelectableMorph selectableMorph) - { - if (!Deltas.ContainsKey(delta.vertex)) - Deltas.Add(delta.vertex, delta.delta * selectableMorph.Morph.morphValue); - else - Deltas[delta.vertex] += delta.delta * selectableMorph.Morph.morphValue; - } - } - - public class Formulas - { - public Dictionary> formulas { get; set; } = new Dictionary>(); - public int Count { get { return formulas.Count; } } - public void Add(DAZMorphFormula combinedFormula) - { - if (!formulas.ContainsKey(combinedFormula.target)) - formulas.Add(combinedFormula.target, new Dictionary { { combinedFormula.targetType, combinedFormula } }); - else if (!formulas[combinedFormula.target].ContainsKey(combinedFormula.targetType)) - formulas[combinedFormula.target].Add(combinedFormula.targetType, combinedFormula); - else - formulas[combinedFormula.target][combinedFormula.targetType].multiplier += combinedFormula.multiplier; - } - - } - public class VertexFilter - { - public bool invert { get; set; } = false; - public List vertecies { private get; set; } - public List boneNames { private get; set; } - public bool Contains(string bone) - { - if (invert) - { - return !boneNames.Contains(bone); - } - return boneNames.Contains(bone); - } - public bool Contains(int vertex) - { - if (invert) - { - return !vertecies.Contains(vertex); - } - return vertecies.Contains(vertex); - } - - } - - static private List _headVerticies = new List() { 61, 85, 184, 185, 186, 187, 188, 189, 190, 191, 210, 211, 256, 257, 258, 259, 260, 263, 264, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2090, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2441, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2608, 2609, 2610, 2611, 2612, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2784, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 4211, 4212, 4213, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221, 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234, 4235, 4236, 4237, 4238, 4239, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, 4254, 4255, 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, 4302, 4303, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349, 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365, 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381, 4382, 4383, 4384, 4385, 4386, 4387, 4388, 4389, 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397, 4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, 4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429, 4430, 4431, 4432, 4433, 4434, 4435, 4436, 4437, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 4446, 4447, 4448, 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 4458, 4459, 4460, 4461, 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469, 4470, 4471, 4472, 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, 4481, 4482, 4483, 4484, 4485, 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517, 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565, 4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4577, 4578, 4579, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, 4602, 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4626, 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4638, 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674, 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, 4683, 4684, 4685, 4686, 4687, 4688, 4689, 4690, 4691, 4692, 4693, 4694, 4695, 4696, 4697, 4698, 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, 4718, 4719, 4720, 4721, 4722, 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4745, 4746, 4747, 4748, 4749, 4750, 4751, 4752, 4753, 4754, 4755, 4756, 4757, 4758, 4759, 4760, 4761, 4762, 4763, 4764, 4765, 4766, 4767, 4768, 4769, 4770, 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, 4786, 4787, 4788, 4789, 4790, 4791, 4792, 4793, 4794, 4795, 4796, 4797, 4798, 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, 4818, 4819, 4820, 4821, 4822, 4823, 4824, 4825, 4826, 4827, 4828, 4829, 4830, 4831, 4832, 4833, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, 4842, 4843, 4844, 4845, 4846, 4847, 4848, 4849, 4850, 4851, 4852, 4853, 4854, 4855, 4856, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, 4866, 4867, 4868, 4869, 4870, 4871, 4872, 4873, 4874, 4875, 4876, 4877, 4878, 4879, 4880, 4881, 4882, 4883, 4884, 4885, 4886, 4887, 4888, 4889, 4890, 4891, 4892, 4893, 4894, 4895, 4896, 4897, 4898, 4899, 4900, 4901, 4902, 4903, 4904, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, 4914, 4915, 4916, 4917, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 4925, 4926, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4936, 4937, 4938, 4939, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4947, 4948, 4949, 4950, 4951, 4952, 4953, 4954, 4955, 4956, 4957, 4958, 4959, 4960, 4961, 4962, 4963, 4964, 4965, 4966, 4967, 4968, 4969, 4970, 4971, 4972, 4973, 4974, 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985, 4986, 4987, 4988, 4989, 4990, 4991, 4992, 4993, 4994, 4995, 4996, 4997, 4998, 4999, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, 5140, 5141, 5142, 5143, 5144, 5145, 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154, 5155, 5156, 5157, 5158, 5159, 5160, 5161, 5162, 5163, 5164, 5165, 5166, 5167, 5168, 5169, 5170, 5171, 5172, 5173, 5174, 5175, 5176, 5177, 5178, 5179, 5180, 5181, 5182, 5183, 5184, 5185, 5186, 5187, 5188, 5189, 5190, 5191, 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5199, 5200, 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, 5214, 5215, 5216, 5217, 5218, 5219, 5220, 5221, 5222, 5223, 5224, 5225, 5226, 5227, 5228, 5229, 5230, 5231, 5232, 5233, 5234, 5235, 5236, 5237, 5238, 5239, 5240, 5241, 5242, 5243, 5244, 5245, 5246, 5247, 5248, 5249, 5250, 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5262, 5263, 5264, 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, 5278, 5279, 5280, 5281, 5282, 5283, 5284, 5285, 5286, 5287, 5288, 5289, 5290, 5291, 5292, 5293, 5294, 5295, 5296, 5297, 5298, 5299, 5300, 5301, 5302, 5303, 5304, 5305, 5306, 5307, 5308, 5309, 5310, 5311, 5312, 5313, 5314, 5315, 5316, 5317, 5318, 5319, 5320, 5321, 5322, 5323, 5324, 5325, 5326, 5327, 5328, 5329, 5330, 5331, 5332, 5333, 5334, 5335, 5336, 5337, 5338, 5339, 5340, 5341, 5342, 5343, 5344, 5345, 5346, 5347, 5348, 5349, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 5357, 5358, 5359, 5360, 5361, 5362, 5363, 5364, 5365, 5366, 5367, 5368, 5369, 5370, 5371, 5372, 5373, 5374, 5375, 5376, 5377, 5378, 5379, 5380, 5381, 5382, 5383, 5384, 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393, 5394, 5395, 5396, 5397, 5398, 5399, 5400, 5401, 5402, 5403, 5404, 5405, 5406, 5407, 5408, 5409, 5410, 5411, 5412, 5413, 5414, 5415, 5416, 5417, 5418, 5419, 5420, 5421, 5422, 5423, 5424, 5425, 5426, 5427, 5428, 5429, 5430, 5431, 5432, 5433, 5434, 5435, 5436, 5437, 5438, 5439, 5440, 5441, 5442, 5443, 5444, 5445, 5446, 5447, 5448, 5449, 5450, 5451, 5452, 5453, 5454, 5455, 5456, 5457, 5458, 5459, 5460, 5461, 5462, 5463, 5464, 5465, 5466, 5467, 5468, 5469, 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, 5478, 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, 5488, 5489, 5490, 5491, 5492, 5493, 5494, 5495, 5496, 5497, 5498, 5499, 5500, 5501, 5502, 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5515, 5516, 5517, 5518, 5519, 5520, 5521, 5522, 5523, 5524, 5525, 5526, 5527, 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, 5537, 5538, 5539, 5540, 5541, 5542, 5543, 5544, 5545, 5546, 5547, 5548, 5549, 5550, 5551, 5552, 5553, 5554, 5555, 5556, 5557, 5558, 5559, 5560, 5561, 5562, 5563, 5564, 5565, 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, 5574, 5575, 5576, 5577, 5578, 5579, 5580, 5581, 5582, 5583, 5584, 5585, 5586, 5587, 5588, 5589, 5590, 5591, 5592, 5593, 5594, 5595, 5596, 5597, 5598, 5599, 5600, 5601, 5602, 5603, 5604, 5605, 5606, 5607, 5608, 5609, 5610, 5611, 5612, 5613, 5614, 5615, 5616, 5617, 5618, 5619, 5620, 5621, 5622, 5623, 5624, 5625, 5626, 5627, 5628, 5629, 5630, 5631, 5632, 5633, 5634, 5635, 5636, 5637, 5638, 5639, 5640, 5641, 5642, 5643, 5644, 5645, 5646, 5647, 5648, 5649, 5650, 5651, 5652, 5653, 5654, 5655, 5656, 5657, 5658, 5659, 5660, 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5669, 5670, 5671, 5672, 5673, 5674, 5675, 5676, 5677, 5678, 5679, 5680, 5681, 5682, 5683, 5684, 5685, 5686, 5687, 5688, 5689, 5690, 5691, 5692, 5693, 5694, 5695, 5696, 5697, 5698, 5699, 5700, 5701, 5702, 5703, 5704, 5705, 5706, 5707, 5708, 5709, 5710, 5711, 5712, 5713, 5714, 5715, 5716, 5717, 5718, 5719, 5720, 5721, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, 5730, 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5740, 5741, 5742, 5743, 5744, 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, 5753, 5754, 5755, 5756, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, 5765, 5766, 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776, 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, 5788, 5789, 5790, 5791, 5792, 5793, 5794, 5795, 5796, 5797, 5798, 5799, 5800, 5801, 5802, 5803, 5804, 5805, 5806, 5807, 5808, 5809, 5810, 5811, 5812, 5813, 5871, 5872, 5873, 5874, 5875, 5876, 5877, 5878, 5879, 5880, 5881, 5882, 5883, 5884, 5885, 5886, 5887, 5888, 5889, 5890, 5891, 5892, 5893, 5894, 5966, 5967, 5968, 5969, 5970, 5971, 5972, 5973, 5974, 5975, 5976, 5977, 5978, 5979, 5980, 5981, 5982, 5983, 5984, 5985, 5986, 5987, 5988, 5989, 5990, 5991, 5992, 5993, 5994, 5995, 5996, 5997, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, 6019, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, 6030, 6031, 6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, 6041, 6042, 6043, 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059, 6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6167, 6168, 6169, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, 6190, 6191, 6192, 6193, 6194, 6195, 6196, 6197, 6198, 6199, 6200, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6210, 6211, 6212, 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, 6222, 6223, 6224, 6225, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, 6236, 6237, 6238, 6239, 6240, 6241, 6242, 6243, 6244, 6245, 6246, 6247, 6248, 6249, 6250, 6251, 6252, 6253, 6254, 6255, 6256, 6257, 6258, 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6266, 6267, 6268, 6269, 6270, 6271, 6272, 7256, 7257, 7258, 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, 7275, 7276, 7277, 7278, 7279, 7280, 7281, 7282, 7283, 7284, 7285, 7286, 7287, 7288, 7289, 7290, 7291, 7292, 7293, 7294, 7295, 7296, 7297, 7298, 7299, 7300, 7301, 7302, 7303, 7304, 7305, 7306, 7307, 7308, 7309, 7310, 7311, 7312, 7313, 7314, 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, 7323, 7324, 7325, 7326, 7327, 7328, 7329, 7330, 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, 7355, 7356, 7357, 7358, 7359, 7360, 7361, 7362, 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371, 7372, 7373, 7374, 7375, 7376, 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, 7395, 7396, 7397, 7398, 7399, 7400, 7401, 7402, 7403, 7404, 7405, 7406, 7407, 7408, 7409, 7410, 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420, 7421, 7422, 7423, 7424, 7425, 7426, 7427, 7428, 7429, 7430, 7431, 7432, 7433, 7434, 7435, 7436, 7437, 7438, 7439, 7440, 7441, 7442, 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453, 7454, 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, 7467, 7468, 7469, 7470, 7471, 7472, 7473, 7474, 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486, 7487, 7488, 7489, 7490, 7491, 7492, 7493, 7494, 7495, 7496, 7497, 7498, 7499, 7500, 7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509, 7510, 7511, 7512, 7513, 7514, 7515, 7516, 7517, 7518, 7519, 7520, 7521, 7522, 7523, 7524, 7525, 7526, 7527, 7528, 7529, 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, 7555, 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563, 7564, 7565, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7575, 7576, 7577, 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585, 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, 7595, 7596, 7597, 7598, 7599, 7600, 7601, 7602, 7603, 7604, 7605, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7613, 7614, 7615, 7616, 7617, 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7626, 7627, 7628, 7629, 7630, 7631, 7632, 7633, 7634, 7635, 7636, 7637, 7638, 7639, 7640, 7641, 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7649, 7650, 7651, 7652, 7653, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665, 7666, 7667, 7668, 7669, 7670, 7671, 7672, 7673, 7674, 7675, 7676, 7677, 7678, 7679, 7680, 7681, 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7714, 7715, 7716, 7717, 7718, 7719, 7720, 7721, 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 8255, 8256, 8257, 8258, 8259, 8260, 8261, 8262, 8263, 8264, 8265, 8266, 8267, 8268, 8269, 8270, 8271, 8272, 8273, 8274, 8275, 8276, 8277, 8278, 8279, 8280, 8281, 8282, 8283, 8284, 8285, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, 8297, 8298, 8299, 8300, 8301, 8302, 8303, 8304, 8305, 8306, 8307, 8308, 8309, 8310, 8311, 8312, 8313, 8314, 8315, 8316, 8317, 8318, 8319, 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8327, 8328, 8329, 8330, 8331, 8332, 8333, 8334, 8335, 8336, 8337, 8338, 8339, 8340, 8341, 8342, 8343, 8344, 8345, 8346, 8347, 8348, 8349, 8350, 8351, 8352, 8353, 8354, 8355, 8356, 8357, 8358, 8359, 8360, 8361, 8362, 8363, 8364, 8365, 8366, 8367, 8368, 8369, 8370, 8371, 8372, 8373, 8374, 8375, 8376, 8377, 8378, 8379, 8380, 8381, 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391, 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8404, 8405, 8406, 8407, 8408, 8409, 8410, 8411, 8412, 8413, 8414, 8415, 8416, 8417, 8418, 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428, 8429, 8430, 8431, 8432, 8433, 8434, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442, 8443, 8444, 8445, 8446, 8447, 8448, 8449, 8450, 8451, 8452, 8453, 8454, 8455, 8456, 8457, 8458, 8459, 8460, 8461, 8462, 8463, 8464, 8465, 8858, 8859, 8860, 8887, 8888, 8889, 9006, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9035, 9036, 9037, 9038, 9039, 9040, 9041, 9042, 9043, 9044, 9045, 9046, 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067, 9068, 9069, 9070, 9071, 9072, 9073, 9074, 9075, 9076, 9077, 9078, 9079, 9080, 9081, 9082, 9083, 9084, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, 9095, 9096, 9097, 9098, 9099, 9100, 9101, 9102, 9103, 9104, 9105, 9106, 9107, 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, 9116, 9117, 9118, 9119, 9120, 9121, 9122, 9123, 9124, 9125, 9126, 9127, 9128, 9129, 9130, 9131, 9132, 9133, 9134, 9135, 9136, 9137, 9138, 9139, 9140, 9141, 9142, 9143, 9144, 9145, 9146, 9147, 9148, 9149, 9150, 9151, 9152, 9153, 9154, 9155, 9156, 9157, 9158, 9159, 9160, 9161, 9162, 9163, 9164, 9165, 9166, 9167, 9168, 9169, 9170, 9171, 9172, 9173, 9174, 9175, 9176, 9177, 9178, 9179, 9180, 9181, 9182, 9183, 9184, 9185, 9186, 9187, 9188, 9189, 9190, 9191, 9192, 9193, 9194, 9195, 9196, 9197, 9198, 9199, 9200, 9201, 9202, 9203, 9204, 9205, 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213, 9214, 9215, 9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223, 9224, 9225, 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253, 9254, 9255, 9256, 9257, 9258, 9259, 9260, 9261, 9262, 9263, 9264, 9265, 9266, 9267, 9268, 9269, 9270, 9271, 9272, 9273, 9274, 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9283, 9284, 9285, 9286, 9287, 9288, 9289, 9290, 9291, 9292, 9293, 9294, 9295, 9787, 9788, 9789, 9790, 9791, 9792, 9793, 9794, 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 9828, 9829, 9830, 9831, 9832, 9833, 9834, 9835, 9836, 9837, 9838, 9839, 9840, 9841, 9842, 9843, 9844, 9845, 9846, 9847, 9848, 9849, 9850, 9851, 9852, 9853, 9854, 9855, 9856, 9857, 9858, 9859, 9860, 9861, 9862, 9863, 9864, 9865, 9866, 9867, 9868, 9869, 9870, 9871, 9872, 9873, 9874, 9875, 9876, 9877, 9878, 9879, 9880, 9881, 9882, 9883, 9884, 9885, 9886, 9887, 9888, 9889, 9890, 9891, 9892, 9893, 9894, 9895, 9896, 9897, 9898, 9899, 9900, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9908, 9909, 9910, 9911, 9912, 9913, 9914, 9915, 9916, 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924, 9925, 9926, 9927, 9928, 9929, 9930, 9931, 9932, 9933, 9934, 9935, 9936, 9937, 9938, 9939, 9940, 9941, 9942, 9943, 9944, 9945, 9946, 9947, 9948, 9949, 9950, 9951, 9952, 9953, 9954, 9955, 9956, 9957, 9958, 9959, 9960, 9961, 9962, 9963, 9964, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9972, 9973, 9974, 9975, 9976, 9977, 9978, 9979, 9980, 9981, 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999, 10000, 10001, 10002, 10004, 10005, 10006, 10007, 10008, 10372, 10376, 10381, 10382, 10383, 10384, 10385, 10499, 10500, 10501, 10502, 10503, 10504, 10505, 10506, 10507, 10508, 10509, 10510, 10511, 10512, 10513, 10514, 10515, 10516, 10517, 10524, 10530, 10531, 10532, 10533, 10534, 10535, 10536, 10537, 10538, 10790, 10791, 10792, 10793, 10794, 10795, 10796, 10797, 10798, 10799, 10896, 10897, 10898, 10899, 10900, 10901, 10902, 10903, 10904, 10905, 10906, 10907, 10908, 10909, 10910, 10911, 10912, 10913, 10914, 10915, 10916, 10917, 10918, 10919, 10920, 10921, 10922, 10923, 10924, 10925, 10926, 10927, 10989, 11013, 11112, 11113, 11114, 11115, 11116, 11117, 11118, 11119, 11138, 11139, 11184, 11185, 11186, 11187, 11188, 11191, 11192, 12185, 12186, 12187, 12188, 12189, 12190, 12191, 12192, 12193, 12245, 12246, 12247, 12248, 12249, 12250, 12251, 12252, 12253, 12254, 12255, 12256, 12257, 12258, 12259, 12260, 12261, 12262, 12263, 12264, 12265, 12266, 12267, 12268, 12269, 12270, 12271, 12272, 12273, 12274, 12275, 12276, 12277, 12278, 12279, 12280, 12281, 12282, 12283, 12284, 12285, 12286, 12287, 12288, 12289, 12290, 12291, 12292, 12293, 12294, 12295, 12296, 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12304, 12305, 12306, 12307, 12308, 12309, 12310, 12311, 12312, 12313, 12314, 12315, 12316, 12317, 12318, 12319, 12320, 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12330, 12331, 12332, 12333, 12334, 12335, 12336, 12337, 12338, 12339, 12340, 12341, 12342, 12343, 12344, 12345, 12346, 12347, 12348, 12349, 12350, 12351, 12352, 12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386, 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396, 12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416, 12417, 12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428, 12429, 12430, 12431, 12432, 12433, 12434, 12435, 12436, 12437, 12438, 12439, 12440, 12441, 12442, 12443, 12444, 12445, 12446, 12447, 12448, 12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471, 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482, 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490, 12491, 12492, 12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502, 12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512, 12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522, 12523, 12524, 12525, 12526, 12527, 12528, 12529, 12530, 12531, 12532, 12533, 12534, 12535, 12536, 12537, 12538, 12539, 12540, 12541, 12542, 12543, 12544, 12545, 12546, 12547, 12548, 12549, 12550, 12551, 12552, 12553, 12554, 12555, 12556, 12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566, 12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577, 12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 12586, 12587, 12588, 12589, 12590, 12591, 12592, 12593, 12594, 12595, 12596, 12597, 12598, 12599, 12600, 12601, 12602, 12603, 12604, 12605, 12606, 12607, 12608, 12609, 12610, 12611, 12612, 12613, 12614, 12615, 12616, 12617, 12618, 12619, 12620, 12621, 12622, 12623, 12624, 12625, 12626, 12627, 12628, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12638, 12639, 12640, 12641, 12642, 12643, 12644, 12645, 12646, 12647, 12648, 12649, 12650, 12651, 12652, 12653, 12654, 12655, 12656, 12657, 12658, 12659, 12660, 12661, 12662, 12663, 12664, 12665, 12666, 12667, 12668, 12669, 12670, 12671, 12672, 12673, 12674, 12675, 12676, 12677, 12678, 12679, 12680, 12681, 12682, 12683, 12684, 12685, 12686, 12687, 12688, 12689, 12690, 12691, 12692, 12693, 12694, 12695, 12696, 12697, 12698, 12699, 12700, 12701, 12702, 12703, 12704, 12705, 12706, 12707, 12708, 12709, 12710, 12711, 12712, 12713, 12714, 12715, 12716, 12717, 12718, 12719, 12720, 12721, 12722, 12723, 12724, 12725, 12726, 12727, 12728, 12729, 12730, 12731, 12732, 12733, 12734, 12735, 12736, 12737, 12738, 12739, 12740, 12741, 12742, 12743, 12744, 12745, 12746, 12747, 12748, 12749, 12750, 12751, 12752, 12753, 12754, 12755, 12756, 12757, 12758, 12759, 12760, 12761, 12762, 12763, 12764, 12765, 12766, 12767, 12768, 12769, 12770, 12771, 12772, 12773, 12774, 12775, 12776, 12777, 12778, 12779, 12780, 12781, 12782, 12783, 12784, 12785, 12786, 12787, 12788, 12789, 12790, 12791, 12792, 12793, 12794, 12795, 12796, 12797, 12798, 12799, 12800, 12801, 12802, 12803, 12804, 12805, 12806, 12807, 12808, 12809, 12810, 12811, 12812, 12813, 12814, 12815, 12816, 12817, 12818, 12819, 12820, 12821, 12822, 12823, 12824, 12825, 12826, 12827, 12828, 12829, 12830, 12831, 12832, 12833, 12834, 12835, 12836, 12837, 12838, 12839, 12840, 12841, 12842, 12843, 12844, 12845, 12846, 12847, 12848, 12849, 12850, 12851, 12852, 12853, 12854, 12855, 12856, 12857, 12858, 12859, 12860, 12861, 12862, 12863, 12864, 12865, 12866, 12867, 12868, 12869, 12870, 12871, 12872, 12873, 12874, 12875, 12876, 12877, 12878, 12879, 12880, 12881, 12882, 12883, 12884, 12885, 12886, 12887, 12888, 12889, 12890, 12891, 12892, 12893, 12894, 12895, 12896, 12897, 12898, 12899, 12900, 12901, 12902, 12903, 12904, 12905, 12906, 12907, 12908, 12909, 12910, 12911, 12912, 12913, 12914, 12915, 12916, 12917, 12918, 12919, 12920, 12921, 12922, 12923, 12924, 12925, 12926, 12927, 12928, 12929, 12930, 12931, 12932, 12933, 12934, 12935, 12936, 12937, 12938, 12939, 12940, 12941, 12942, 12943, 12944, 12945, 12946, 12947, 12948, 12949, 12950, 12951, 12952, 12953, 12954, 12955, 12956, 12957, 12958, 12959, 12960, 12961, 12962, 12963, 12964, 12965, 12966, 12967, 12968, 12969, 12970, 12971, 12972, 12973, 12974, 12975, 12976, 12977, 12978, 12979, 12980, 12981, 12982, 12983, 12984, 12985, 12986, 12987, 12988, 12989, 12990, 12991, 12992, 12993, 12994, 12995, 12996, 12997, 12998, 12999, 13000, 13001, 13002, 13003, 13004, 13005, 13006, 13007, 13008, 13009, 13010, 13011, 13012, 13013, 13014, 13015, 13016, 13017, 13018, 13019, 13020, 13021, 13022, 13023, 13024, 13025, 13026, 13027, 13028, 13029, 13030, 13031, 13032, 13033, 13034, 13035, 13036, 13037, 13038, 13039, 13040, 13041, 13042, 13043, 13044, 13045, 13046, 13047, 13048, 13049, 13050, 13051, 13052, 13053, 13054, 13055, 13056, 13057, 13058, 13059, 13060, 13061, 13062, 13063, 13064, 13065, 13066, 13067, 13068, 13069, 13070, 13071, 13072, 13073, 13074, 13075, 13076, 13077, 13078, 13079, 13080, 13081, 13082, 13083, 13084, 13085, 13086, 13087, 13088, 13089, 13090, 13091, 13092, 13093, 13094, 13095, 13096, 13097, 13098, 13099, 13100, 13101, 13105, 13106, 13107, 13108, 13109, 13110, 13111, 13112, 13113, 13114, 13115, 13116, 13117, 13118, 13119, 13120, 13121, 13122, 13123, 13124, 13125, 13126, 13270, 13298, 13299, 13300, 13301, 13302, 13303, 13304, 13305, 13306, 13307, 13308, 13309, 13310, 13311, 13312, 13313, 13314, 13315, 13316, 13317, 13318, 13319, 13320, 13321, 13322, 13323, 13324, 13325, 13326, 13327, 13328, 13329, 13330, 13331, 13332, 13333, 13334, 13335, 13336, 13337, 13338, 13339, 13340, 13341, 13342, 13343, 13344, 13345, 13346, 13347, 13348, 13349, 13350, 13351, 13352, 13353, 13354, 13355, 13356, 13357, 13358, 13423, 13424, 13425, 13426, 13427, 13431, 13432, 13433, 13434, 13435, 13436, 13437, 13438, 13515, 13516, 13517, 13518, 13519, 13520, 13521, 13522, 13523, 13524, 13525, 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13534, 13535, 13536, 13537, 13538, 13539, 13540, 13541, 13542, 13543, 13544, 13545, 13546, 13547, 13548, 13549, 13550, 13551, 13552, 13553, 13554, 13555, 13556, 13557, 13848, 13849, 13850, 13851, 13852, 13853, 13858, 13859, 13860, 13861, 13862, 13863, 13864, 13865, 13866, 13867, 13868, 13869, 13870, 13871, 13872, 13873, 13874, 13875, 13876, 13877, 13878, 13879, 13880, 13881, 13882, 13883, 13884, 13885, 13886, 13887, 13888, 13889, 13890, 13891, 13892, 13893, 13894, 13895, 13896, 13897, 13898, 13899, 13900, 13901, 13902, 13903, 13904, 13905, 13906, 13907, 13908, 13909, 13910, 13911, 13912, 13913, 13914, 13915, 13916, 13917, 13918, 13919, 13920, 13921, 13922, 13923, 13924, 13925, 13926, 13927, 13928, 13929, 13930, 13931, 13932, 13933, 13934, 13935, 13936, 13937, 13938, 13939, 13940, 13941, 13942, 13943, 13944, 13945, 13946, 13947, 13948, 13949, 13950, 13951, 13952, 13953, 13954, 13955, 13956, 13957, 13958, 13959, 13960, 13961, 13962, 13963, 13964, 13965, 13966, 13967, 13968, 13969, 13970, 13971, 13972, 13973, 13974, 13975, 13976, 13977, 13978, 13979, 13980, 13981, 13982, 13983, 13984, 13985, 13986, 13987, 13988, 13989, 13990, 13991, 13992, 13993, 13994, 13995, 13996, 13997, 13998, 13999, 14000, 14001, 14002, 14003, 14004, 14005, 14006, 14007, 14008, 14009, 14010, 14011, 14012, 14013, 14014, 14015, 14016, 14017, 14018, 14019, 14020, 14021, 14022, 14023, 14024, 14025, 14026, 14027, 14028, 14029, 14030, 14031, 14032, 14033, 14034, 14035, 14036, 14037, 14038, 14039, 14040, 14041, 14042, 14043, 14044, 14045, 14046, 14047, 14048, 14049, 14050, 14051, 14052, 14053, 14054, 14055, 14056, 14057, 14058, 14059, 14060, 14061, 14062, 14063, 14064, 14065, 14066, 14067, 14068, 14069, 14070, 14071, 14072, 14073, 14074, 14075, 14076, 14077, 14078, 14079, 14080, 14081, 14082, 14083, 14084, 14085, 14086, 14087, 14088, 14089, 14090, 14091, 14092, 14093, 14094, 14095, 14096, 14097, 14098, 14099, 14100, 14101, 14102, 14103, 14104, 14105, 14106, 14107, 14108, 14109, 14110, 14111, 14112, 14113, 14114, 14115, 14116, 14117, 14118, 14119, 14120, 14121, 14122, 14123, 14124, 14125, 14126, 14127, 14128, 14129, 14130, 14131, 14132, 14987, 14988, 14989, 14990, 14991, 14992, 14993, 14994, 14995, 14996, 14997, 14998, 14999, 15000, 15001, 15002, 15003, 15004, 15005, 15006, 15007, 15008, 15009, 15010, 15011, 15012, 15013, 15014, 15015, 15016, 15017, 15018, 15019, 15020, 15021, 15022, 15023, 15024, 15025, 15026, 15027, 15028, 15029, 15030, 15031, 15032, 15033, 15034, 15035, 15036, 15037, 15038, 15039, 15040, 15041, 15042, 15043, 15044, 15045, 15046, 15047, 15048, 15049, 15050, 15051, 15052, 15053, 15054, 15055, 15056, 15057, 15058, 15059, 15060, 15061, 15062, 15063, 15064, 15065, 15066, 15067, 15068, 15069, 15070, 15071, 15072, 15073, 15074, 15075, 15076, 15077, 15078, 15079, 15080, 15081, 15082, 15083, 15084, 15085, 15086, 15087, 15088, 15089, 15090, 15091, 15092, 15093, 15094, 15095, 15096, 15097, 15098, 15099, 15100, 15101, 15102, 15103, 15104, 15105, 15106, 15107, 15108, 15109, 15110, 15111, 15112, 15113, 15114, 15115, 15116, 15117, 15118, 15119, 15120, 15121, 15122, 15123, 15124, 15125, 15126, 15127, 15128, 15129, 15130, 15131, 15132, 15133, 15134, 15135, 15136, 15137, 15138, 15139, 15140, 15141, 15142, 15143, 15144, 15145, 15146, 15147, 15148, 15149, 15150, 15151, 15152, 15153, 15154, 15155, 15156, 15157, 15158, 15159, 15160, 15161, 15162, 15163, 15164, 15165, 15166, 15167, 15168, 15169, 15170, 15171, 15172, 15173, 15174, 15175, 15176, 15177, 15178, 15179, 15180, 15181, 15182, 15183, 15184, 15185, 15186, 15187, 15188, 15189, 15190, 15191, 15192, 15193, 15194, 15195, 15196, 15197, 15198, 15199, 15200, 15201, 15202, 15203, 15204, 15205, 15206, 15207, 15208, 15209, 15210, 15211, 15212, 15213, 15214, 15215, 15216, 15217, 15218, 15219, 15220, 15221, 15222, 15223, 15224, 15225, 15226, 15227, 15228, 15229, 15230, 15231, 15232, 15233, 15234, 15235, 15236, 15237, 15238, 15239, 15240, 15241, 15242, 15243, 15244, 15245, 15246, 15247, 15248, 15249, 15250, 15251, 15252, 15253, 15254, 15255, 15256, 15257, 15258, 15259, 15260, 15261, 15262, 15263, 15264, 15265, 15266, 15267, 15268, 15269, 15270, 15271, 15272, 15273, 15274, 15275, 15276, 15277, 15278, 15279, 15280, 15281, 15282, 15283, 15284, 15285, 15286, 15287, 15288, 15289, 15290, 15291, 15292, 15293, 15294, 15295, 15296, 15297, 15298, 15299, 15300, 15301, 15302, 15303, 15304, 15305, 15306, 15307, 15308, 15309, 15310, 15311, 15312, 15313, 15314, 15315, 15316, 15317, 15318, 15319, 15320, 15321, 15322, 15323, 15324, 15325, 15326, 15327, 15328, 15329, 15330, 15331, 15332, 15333, 15334, 15335, 15336, 15337, 15338, 15339, 15340, 15341, 15342, 15343, 15344, 15345, 15346, 15347, 15348, 15349, 15350, 15351, 15352, 15353, 15354, 15355, 15356, 15357, 15358, 15359, 15360, 15361, 15362, 15363, 15364, 15365, 15366, 15367, 15368, 15369, 15370, 15371, 15372, 15373, 15374, 15375, 15376, 15377, 15378, 15379, 15380, 15381, 15382, 15383, 15384, 15385, 15386, 15387, 15388, 15389, 15390, 15391, 15392, 15393, 15394, 15395, 15396, 15397, 15398, 15399, 15400, 15401, 15402, 15403, 15404, 15405, 15406, 15407, 15408, 15409, 15410, 15411, 15412, 15413, 15414, 15415, 15416, 15417, 15418, 15419, 15420, 15421, 15422, 15423, 15424, 15425, 15426, 15427, 15428, 15429, 15430, 15431, 15432, 15433, 15434, 15435, 15436, 15437, 15438, 15439, 15440, 15441, 15442, 15443, 15444, 15445, 15446, 15447, 15448, 15449, 15450, 15451, 15452, 15453, 15454, 15455, 15456, 15457, 15458, 15459, 15460, 15461, 15462, 15463, 15464, 15465, 15466, 15467, 15468, 15469, 15470, 15471, 15472, 15473, 15474, 15475, 15476, 15477, 15478, 15479, 15480, 15481, 15482, 15483, 15484, 15485, 15486, 15487, 15488, 15489, 15490, 15491, 15492, 15493, 15494, 15495, 15496, 15497, 15498, 15499, 15500, 15501, 15502, 15503, 15504, 15505, 15506, 15507, 15508, 15509, 15510, 15511, 15512, 15513, 15514, 15515, 15516, 15517, 15518, 15519, 15520, 15521, 15522, 15523, 15524, 15525, 15526, 15527, 15528, 15529, 15530, 15531, 15532, 15533, 15534, 15535, 15536, 15537, 15538, 15539, 15540, 15541, 15542, 15543, 15544, 15545, 15546, 15547, 15548, 15549, 15550, 15551, 15552, 15553, 15554, 15555, 15556, 15557, 15558, 15559, 15560, 15561, 15562, 15563, 15564, 15565, 15566, 15567, 15568, 15569, 15570, 15571, 15572, 15573, 15574, 15575, 15576, 15577, 15578, 15579, 15580, 15581, 15582, 15583, 15584, 15585, 15586, 15587, 15588, 15589, 15590, 15591, 15592, 15593, 15594, 15595, 15596, 15597, 15598, 15599, 15600, 15601, 15602, 15603, 15604, 15605, 15606, 15607, 15608, 15609, 15610, 15611, 15612, 15613, 15614, 15615, 15616, 15617, 15618, 15619, 15620, 15621, 15622, 15623, 15624, 15625, 15626, 15627, 15628, 15629, 15630, 15631, 15632, 15633, 15634, 15635, 15636, 15637, 15638, 15639, 15640, 15641, 15642, 15643, 15644, 15645, 15646, 15647, 15648, 15649, 15650, 15651, 15652, 15653, 15654, 15655, 15656, 15657, 15658, 15659, 15660, 15661, 15662, 15663, 15664, 15665, 15666, 15667, 15668, 15669, 15670, 15671, 15672, 15673, 15674, 15675, 15676, 15677, 15678, 15679, 15680, 15681, 15682, 15683, 15684, 15685, 15686, 15687, 15688, 15689, 15690, 15691, 15692, 15693, 15694, 15695, 15696, 15697, 15698, 15699, 15700, 15701, 15702, 15703, 15704, 15705, 15706, 15707, 15708, 15709, 15710, 15711, 15712, 15713, 15714, 15715, 15716, 15717, 15718, 15719, 15720, 15721, 15722, 15723, 15724, 15725, 15726, 15727, 15728, 15729, 15730, 15731, 15732, 15733, 15734, 15735, 15736, 15737, 15738, 15739, 15740, 15741, 15742, 15743, 15744, 15745, 15746, 15747, 15748, 15749, 15750, 15751, 15752, 15753, 15754, 15755, 15756, 15757, 15758, 15759, 15760, 15761, 15762, 15763, 15764, 15765, 15766, 15767, 15768, 15769, 15770, 15771, 15772, 15773, 15774, 15775, 15776, 15777, 15778, 15779, 15780, 15781, 15782, 15783, 15784, 15785, 15786, 15787, 15788, 15789, 15790, 15791, 15792, 15793, 15794, 15795, 15796, 15797, 15798, 15799, 15800, 15801, 15802, 15803, 15804, 15805, 15806, 15807, 15808, 15809, 15810, 15811, 15812, 15813, 15814, 15815, 15816, 15817, 15818, 15819, 15820, 15821, 15822, 15823, 15824, 15825, 15826, 15827, 15828, 15829, 15830, 15831, 15832, 15833, 15834, 15835, 15836, 15837, 15838, 15839, 15840, 15841, 15842, 15843, 15844, 15845, 15846, 15847, 15848, 15849, 15850, 15851, 15852, 15853, 15854, 15855, 15856, 15857, 15858, 15859, 15860, 15861, 15862, 15863, 15864, 15865, 15866, 15867, 15868, 15869, 15870, 15871, 15872, 15873, 15874, 15875, 15876, 15877, 15878, 15879, 15880, 15881, 15882, 15883, 15884, 15885, 15886, 15887, 15888, 15889, 15890, 15891, 15892, 15893, 15894, 15895, 15896, 15897, 15898, 15899, 15900, 15901, 15902, 15903, 15904, 15905, 15906, 15907, 15908, 15909, 15910, 15911, 15912, 15913, 15914, 15915, 15916, 15917, 15918, 15919, 15920, 15921, 15922, 15923, 15924, 15925, 15926, 15927, 15928, 15929, 15930, 15931, 15932, 15933, 15934, 15935, 15936, 15937, 15938, 15939, 15940, 15941, 15942, 15943, 15944, 15945, 15946, 15947, 15948, 15949, 15950, 15951, 15952, 15953, 15954, 15955, 15956, 15957, 15958, 15959, 15960, 15961, 15962, 15963, 15964, 15965, 15966, 15967, 15968, 15969, 15970, 15971, 15972, 15973, 15974, 15975, 15976, 15977, 15978, 15979, 15980, 15981, 15982, 15983, 15984, 15985, 15986, 15987, 15988, 15989, 15990, 15991, 15992, 15993, 15994, 15995, 15996, 15997, 15998, 15999, 16000, 16001, 16002, 16003, 16004, 16005, 16006, 16007, 16008, 16009, 16010, 16011, 16012, 16013, 16014, 16015, 16016, 16017, 16018, 16019, 16020, 16021, 16022, 16023, 16024, 16025, 16026, 16027, 16028, 16029, 16030, 16031, 16032, 16033, 16034, 16035, 16036, 16037, 16038, 16039, 16040, 16041, 16042, 16043, 16044, 16045, 16046, 16047, 16048, 16049, 16050, 16051, 16052, 16053, 16054, 16055, 16056, 16057, 16058, 16059, 16060, 16061, 16062, 16063, 16064, 16065, 16066, 16067, 16068, 16069, 16070, 16071, 16072, 16073, 16074, 16075, 16076, 16077, 16078, 16079, 16080, 16081, 16082, 16083, 16084, 16085, 16086, 16087, 16088, 16089, 16090, 16091, 16092, 16093, 16094, 16095, 16096, 16097, 16098, 16099, 16100, 16101, 16102, 16103, 16104, 16105, 16106, 16107, 16108, 16109, 16110, 16111, 16112, 16113, 16114, 16115, 16116, 16117, 16118, 16119, 16120, 16121, 16122, 16123, 16124, 16125, 16126, 16127, 16128, 16129, 16130, 16131, 16132, 16133, 16134, 16135, 16136, 16137, 16138, 16139, 16140, 16141, 16142, 16143, 16144, 16145, 16146, 16147, 16148, 16149, 16150, 16151, 16152, 16153, 16154, 16155, 16156, 16157, 16158, 16159, 16160, 16161, 16162, 16163, 16164, 16165, 16166, 16167, 16168, 16169, 16170, 16171, 16172, 16173, 16174, 16175, 16176, 16177, 16178, 16179, 16180, 16181, 16182, 16183, 16184, 16185, 16186, 16187, 16188, 16189, 16190, 16191, 16192, 16193, 16194, 16195, 16196, 16197, 16198, 16199, 16200, 16201, 16202, 16203, 16204, 16205, 16206, 16207, 16208, 16209, 16210, 16211, 16212, 16213, 16214, 16215, 16216, 16217, 16218, 16219, 16220, 16221, 16222, 16223, 16224, 16225, 16226, 16227, 16228, 16229, 16230, 16231, 16232, 16233, 16234, 16235, 16236, 16237, 16238, 16239, 16240, 16241, 16242, 16243, 16244, 16245, 16246, 16247, 16248, 16249, 16250, 16251, 16252, 16253, 16254, 16255, 16256, 16257, 16258, 16259, 16260, 16261, 16262, 16263, 16264, 16265, 16266, 16267, 16268, 16269, 16270, 16271, 16272, 16273, 16274, 16275, 16276, 16277, 16278, 16279, 16280, 16281, 16282, 16283, 16284, 16285, 16286, 16287, 16288, 16289, 16290, 16291, 16292, 16293, 16294, 16295, 16296, 16297, 16298, 16299, 16300, 16301, 16302, 16303, 16304, 16305, 16306, 16307, 16308, 16309, 16310, 16311, 16312, 16313, 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338, 16339, 16340, 16341, 16342, 16343, 16344, 16345, 16346, 16347, 16348, 16349, 16350, 16351, 16352, 16353, 16354, 16355, 16356, 16357, 16358, 16359, 16360, 16361, 16362, 16363, 16364, 16365, 16366, 16367, 16368, 16369, 16370, 16371, 16372, 16373, 16374, 16375, 16376, 16377, 16378, 16379, 16380, 16381, 16382, 16383, 16384, 16385, 16386, 16387, 16388, 16389, 16390, 16391, 16392, 16393, 16394, 16395, 16396, 16397, 16398, 16399, 16400, 16401, 16402, 16403, 16404, 16405, 16406, 16407, 16408, 16409, 16410, 16411, 16412, 16413, 16414, 16415, 16416, 16417, 16418, 16419, 16420, 16421, 16422, 16423, 16424, 16425, 16426, 16427, 16428, 16429, 16430, 16431, 16432, 16433, 16434, 16435, 16436, 16437, 16438, 16439, 16440, 16441, 16442, 16443, 16444, 16445, 16446, 16447, 16448, 16449, 16450, 16451, 16452, 16453, 16454, 16455, 16456, 16457, 16458, 16459, 16460, 16461, 16462, 16463, 16464, 16465, 16466, 16467, 16468, 16469, 16470, 16471, 16472, 16473, 16474, 16475, 16476, 16477, 16478, 16479, 16480, 16481, 16482, 16483, 16484, 16485, 16486, 16487, 16488, 16489, 16490, 16491, 16492, 16493, 16494, 16495, 16496, 16497, 16498, 16499, 16500, 16501, 16502, 16503, 16504, 16505, 16506, 16507, 16508, 16509, 16510, 16511, 16512, 16513, 16514, 16515, 16516, 16517, 16518, 16519, 16520, 16521, 16522, 16523, 16524, 16525, 16526, 16527, 16528, 16529, 16530, 16531, 16532, 16533, 16534, 16535, 16536, 16537, 16538, 16595, 16596, 16597, 16598, 16599, 16600, 16601, 16602, 16603, 16604, 16605, 16606, 16607, 16608, 16609, 16610, 16611, 16612, 16613, 16614, 16615, 16616, 16688, 16689, 16690, 16691, 16692, 16693, 16694, 16695, 16696, 16697, 16698, 16699, 16700, 16701, 16702, 16703, 16704, 16705, 16706, 16707, 16708, 16709, 16710, 16711, 16712, 16713, 16714, 16715, 16716, 16717, 16718, 16719, 16720, 16721, 16722, 16723, 16724, 16725, 16726, 16727, 16728, 16729, 16730, 16731, 16732, 16733, 16734, 16735, 16736, 16737, 16738, 16739, 16740, 16741, 16742, 16743, 16744, 16745, 16746, 16747, 16748, 16749, 16750, 16751, 16752, 16753, 16754, 16755, 16756, 16757, 16758, 16759, 16760, 16761, 16762, 16763, 16764, 16765, 16766, 16767, 16768, 16769, 16770, 16771, 16772, 16773, 16774, 16775, 16776, 16777, 16778, 16779, 16780, 16781, 16782, 16783, 16784, 16785, 16786, 16787, 16788, 16789, 16790, 16791, 16792, 16793, 16794, 16795, 16887, 16888, 16889, 16890, 16891, 16892, 16893, 16894, 16895, 16896, 16897, 16898, 16899, 16900, 16901, 16902, 16903, 16904, 16905, 16906, 16907, 16908, 16909, 16910, 16911, 16912, 16913, 16914, 16915, 16916, 16917, 16918, 16919, 16920, 16921, 16922, 16923, 16924, 16925, 16926, 16927, 16928, 16929, 16930, 16931, 16932, 16933, 16934, 16935, 16936, 16937, 16938, 16939, 16940, 16941, 16942, 16943, 16944, 16945, 16946, 16947, 16948, 16949, 16950, 16951, 16952, 16953, 16954, 16955, 16956, 16957, 16958, 16959, 16960, 16961, 16962, 16963, 16964, 16965, 16966, 16967, 16968, 16969, 16970, 16971, 16972, 16973, 16974, 16975, 16976, 16977, 16978, 16979, 16980, 16981, 16982, 17961, 17962, 17963, 17964, 17965, 17966, 17967, 17968, 17969, 17970, 17971, 17972, 17973, 17974, 17975, 17976, 17977, 17978, 17979, 17980, 17981, 17982, 17983, 17984, 17985, 17986, 17987, 17988, 17989, 17990, 17991, 17992, 17993, 17994, 17995, 17996, 17997, 17998, 17999, 18000, 18001, 18002, 18003, 18004, 18005, 18006, 18007, 18008, 18009, 18010, 18011, 18012, 18013, 18014, 18015, 18016, 18017, 18018, 18019, 18020, 18021, 18022, 18023, 18024, 18025, 18026, 18027, 18028, 18029, 18030, 18031, 18032, 18033, 18034, 18035, 18036, 18037, 18038, 18039, 18040, 18041, 18042, 18043, 18044, 18045, 18046, 18047, 18048, 18049, 18050, 18051, 18052, 18053, 18054, 18055, 18056, 18057, 18058, 18059, 18060, 18061, 18062, 18063, 18064, 18065, 18066, 18067, 18068, 18069, 18070, 18071, 18072, 18073, 18074, 18075, 18076, 18077, 18078, 18079, 18080, 18081, 18082, 18083, 18084, 18085, 18086, 18087, 18088, 18089, 18090, 18091, 18092, 18093, 18094, 18095, 18096, 18097, 18098, 18099, 18100, 18101, 18102, 18103, 18104, 18105, 18106, 18107, 18108, 18109, 18110, 18111, 18112, 18113, 18114, 18115, 18116, 18117, 18118, 18119, 18120, 18121, 18122, 18123, 18124, 18125, 18126, 18127, 18128, 18129, 18130, 18131, 18132, 18133, 18134, 18135, 18136, 18137, 18138, 18139, 18140, 18141, 18142, 18143, 18144, 18145, 18146, 18147, 18148, 18149, 18150, 18151, 18152, 18153, 18154, 18155, 18156, 18157, 18158, 18159, 18160, 18161, 18162, 18163, 18164, 18165, 18166, 18167, 18168, 18169, 18170, 18171, 18172, 18173, 18174, 18175, 18176, 18177, 18178, 18179, 18180, 18181, 18182, 18183, 18184, 18185, 18186, 18187, 18188, 18189, 18190, 18191, 18192, 18193, 18194, 18195, 18196, 18197, 18198, 18199, 18200, 18201, 18202, 18203, 18204, 18205, 18206, 18207, 18208, 18209, 18210, 18211, 18212, 18213, 18214, 18215, 18216, 18217, 18218, 18219, 18220, 18221, 18222, 18223, 18224, 18225, 18226, 18227, 18228, 18229, 18230, 18231, 18232, 18233, 18234, 18235, 18236, 18237, 18238, 18239, 18240, 18241, 18242, 18243, 18244, 18245, 18246, 18247, 18248, 18249, 18250, 18251, 18252, 18253, 18254, 18255, 18256, 18257, 18258, 18259, 18260, 18261, 18262, 18263, 18264, 18265, 18266, 18267, 18268, 18269, 18270, 18271, 18272, 18273, 18274, 18275, 18276, 18277, 18278, 18279, 18280, 18281, 18282, 18283, 18284, 18285, 18286, 18287, 18288, 18289, 18290, 18291, 18292, 18293, 18294, 18295, 18296, 18297, 18298, 18299, 18300, 18301, 18302, 18303, 18304, 18305, 18306, 18307, 18308, 18309, 18310, 18311, 18312, 18313, 18314, 18315, 18316, 18317, 18318, 18319, 18320, 18321, 18322, 18323, 18324, 18325, 18326, 18327, 18328, 18329, 18330, 18331, 18332, 18333, 18334, 18335, 18336, 18337, 18338, 18339, 18340, 18341, 18342, 18343, 18344, 18345, 18346, 18347, 18348, 18349, 18350, 18351, 18352, 18353, 18354, 18355, 18356, 18357, 18358, 18359, 18360, 18361, 18362, 18363, 18364, 18365, 18366, 18367, 18368, 18369, 18370, 18371, 18372, 18373, 18374, 18375, 18376, 18377, 18378, 18379, 18380, 18381, 18382, 18383, 18384, 18385, 18386, 18387, 18388, 18389, 18390, 18391, 18392, 18393, 18394, 18395, 18396, 18397, 18398, 18399, 18400, 18401, 18402, 18403, 18404, 18405, 18406, 18407, 18408, 18409, 18410, 18411, 18412, 18413, 18414, 18415, 18416, 18417, 18418, 18419, 18420, 18421, 18422, 18423, 18424, 18425, 18426, 18427, 18428, 18429, 18430, 18431, 18432, 18433, 18434, 18435, 18436, 18437, 18438, 18439, 18440, 18441, 18442, 18443, 18444, 18445, 18446, 18447, 18448, 18449, 18450, 18451, 18452, 18453, 18454, 18926, 18927, 18928, 18929, 18930, 18931, 18932, 18933, 18934, 18935, 18936, 18937, 18938, 18939, 18940, 18941, 18942, 18943, 18944, 18945, 18946, 18947, 18948, 18949, 18950, 18951, 18952, 18953, 18954, 18955, 18956, 18957, 18958, 18959, 18960, 18961, 18962, 18963, 18964, 18965, 18966, 18967, 18968, 18969, 18970, 18971, 18972, 18973, 18974, 18975, 18976, 18977, 18978, 18979, 18980, 18981, 18982, 18983, 18984, 18985, 18986, 18987, 18988, 18989, 18990, 18991, 18992, 18993, 18994, 18995, 18996, 18997, 18998, 18999, 19000, 19001, 19002, 19003, 19004, 19005, 19006, 19007, 19008, 19009, 19010, 19011, 19012, 19013, 19014, 19015, 19016, 19017, 19018, 19019, 19020, 19021, 19022, 19023, 19024, 19025, 19026, 19027, 19028, 19029, 19030, 19031, 19032, 19033, 19034, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 19047, 19048, 19049, 19050, 19051, 19052, 19053, 19054, 19055, 19056, 19057, 19058, 19059, 19060, 19061, 19062, 19063, 19064, 19065, 19066, 19067, 19068, 19069, 19070, 19071, 19072, 19073, 19074, 19075, 19076, 19077, 19078, 19079, 19080, 19081, 19082, 19083, 19084, 19085, 19086, 19087, 19088, 19089, 19090, 19091, 19092, 19093, 19094, 19095, 19096, 19097, 19098, 19099, 19100, 19101, 19102, 19103, 19104, 19105, 19106, 19107, 19108, 19109, 19110, 19111, 19112, 19113, 19114, 19115, 19116, 19117, 19118, 19119, 19120, 19121, 19122, 19123, 19124, 19125, 19126, 19127, 19128, 19129, 19130, 19131, 19132, 19133, 19134, 19135, 19136, 19529, 19530, 19531, 19555, 19556, 19672, 19673, 19674, 19675, 19676, 19677, 19678, 19679, 19680, 19681, 19682, 19683, 19684, 19685, 19686, 19687, 19688, 19689, 19690, 19691, 19692, 19693, 19694, 19695, 19696, 19697, 19698, 19699, 19700, 19701, 19702, 19703, 19704, 19705, 19706, 19707, 19708, 19709, 19710, 19711, 19712, 19713, 19714, 19715, 19716, 19717, 19718, 19719, 19720, 19721, 19722, 19723, 19724, 19725, 19726, 19727, 19728, 19729, 19730, 19731, 19732, 19733, 19734, 19735, 19736, 19737, 19738, 19739, 19740, 19741, 19742, 19743, 19744, 19745, 19746, 19747, 19748, 19749, 19750, 19751, 19752, 19753, 19754, 19755, 19756, 19757, 19758, 19759, 19760, 19761, 19762, 19763, 19764, 19765, 19766, 19767, 19768, 19769, 19770, 19771, 19772, 19773, 19774, 19775, 19776, 19777, 19778, 19779, 19780, 19781, 19782, 19783, 19784, 19785, 19786, 19787, 19788, 19789, 19790, 19791, 19792, 19793, 19794, 19795, 19796, 19797, 19798, 19799, 19800, 19801, 19802, 19803, 19804, 19805, 19806, 19807, 19808, 19809, 19810, 19811, 19812, 19813, 19814, 19815, 19816, 19817, 19818, 19819, 19820, 19821, 19822, 19823, 19824, 19825, 19826, 19827, 19828, 19829, 19830, 19831, 19832, 19833, 19834, 19835, 19836, 19837, 19838, 19839, 19840, 19841, 19842, 19843, 19844, 19845, 19846, 19847, 19848, 19849, 19850, 19851, 19852, 19853, 19854, 19855, 19856, 19857, 19858, 19859, 19860, 19861, 19862, 19863, 19864, 19865, 19866, 19867, 19868, 19869, 19870, 19871, 19872, 19873, 19874, 19875, 19876, 19877, 19878, 19879, 19880, 19881, 19882, 19883, 19884, 19885, 19886, 19887, 19888, 19889, 19890, 19891, 19892, 19893, 19894, 19895, 19896, 19897, 19898, 19899, 19900, 19901, 19902, 19903, 19904, 19905, 19906, 19907, 19908, 19909, 19910, 19911, 19912, 19913, 19914, 19915, 19916, 19917, 19918, 19919, 19920, 19921, 19922, 19923, 19924, 19925, 19926, 19927, 19928, 19929, 19930, 19931, 19932, 19933, 19934, 19935, 19936, 19937, 19938, 19939, 19940, 19941, 19942, 19943, 19944, 19945, 19946, 19947, 19948, 19949, 19950, 19951, 19952, 19953, 19954, 19955, 19956, 19957, 19958, 19959, 19960, 19961, 20453, 20454, 20455, 20456, 20457, 20458, 20459, 20460, 20461, 20462, 20463, 20464, 20465, 20466, 20467, 20468, 20469, 20470, 20471, 20472, 20473, 20474, 20475, 20476, 20477, 20478, 20479, 20480, 20481, 20482, 20483, 20484, 20485, 20486, 20487, 20488, 20489, 20490, 20491, 20492, 20493, 20494, 20495, 20496, 20497, 20498, 20499, 20500, 20501, 20502, 20503, 20504, 20505, 20506, 20507, 20508, 20509, 20510, 20511, 20512, 20513, 20514, 20515, 20516, 20517, 20518, 20519, 20520, 20521, 20522, 20523, 20524, 20525, 20526, 20527, 20528, 20529, 20530, 20531, 20532, 20533, 20534, 20535, 20536, 20537, 20538, 20539, 20540, 20541, 20542, 20543, 20544, 20545, 20546, 20547, 20548, 20549, 20550, 20551, 20552, 20553, 20554, 20555, 20556, 20557, 20558, 20559, 20560, 20561, 20562, 20563, 20564, 20565, 20566, 20567, 20568, 20569, 20570, 20571, 20572, 20573, 20574, 20575, 20576, 20577, 20578, 20579, 20580, 20581, 20582, 20583, 20584, 20585, 20586, 20587, 20588, 20589, 20590, 20591, 20592, 20593, 20594, 20595, 20596, 20597, 20598, 20599, 20600, 20601, 20602, 20603, 20604, 20605, 20606, 20607, 20608, 20609, 20610, 20611, 20612, 20613, 20614, 20615, 20616, 20617, 20618, 20619, 20620, 20621, 20622, 20623, 20624, 20625, 20626, 20627, 20628, 20629, 20630, 20631, 20632, 20633, 20634, 20635, 20636, 20637, 20638, 20639, 20640, 20641, 20642, 20643, 20644, 20645, 20646, 20647, 20648, 20649, 20650, 20651, 20652, 20653, 20654, 20655, 20656, 20657, 20658, 20659, 20660, 20661, 20663, 20664, 20665, 20666, 20667, 21031, 21034, 21039, 21040, 21041, 21042, 21043, 21154, 21155, 21156, 21157, 21158, 21159, 21160, 21161, 21162, 21163, 21164, 21165, 21166, 21167, 21168, 21169, 21170, 21171, 21172, 21179, 21185, 21186, 21187, 21188, 21189, 21190, 21191, 21192, 21193, 21441, 21442, 21443, 21444, 21445, 21446, 21447, 21448, 21449, 21450, 21531, 21532, 21533, 21534, 21535, 21536, 21537, 21538, 21539, 21540, 21541, 21542, 21543, 21544, 21545, 21546, 21547, 21548, 21549, 21550, 21551, 21552, 21553, 21554, 21555 }; - static private List _headBoneNames = new List(){ "neck", "head", "rEye", "lEye", "upperJaw", "lowerJaw", "tongueBase", "tongue01", "tongue02", "tongue03", "tongue04", "tongue05", "tongueTip" }; - - } -} diff --git a/_archived/varManager/Custom/Scripts/loadscene.cs b/_archived/varManager/Custom/Scripts/loadscene.cs deleted file mode 100644 index b9f506c..0000000 --- a/_archived/varManager/Custom/Scripts/loadscene.cs +++ /dev/null @@ -1,726 +0,0 @@ -锘縰sing System; -using UnityEngine; -using System.Collections; -using System.Collections.Generic; -using SimpleJSON; -using System.Threading; -using MeshVR; -using MVR.FileManagementSecure; -using UnityEngine.SceneManagement; -using MVR.FileManagement; -using System.Text.RegularExpressions; - -namespace MVRPlugin -{ - public class loadscene : MVRScript - { - - // IMPORTANT - DO NOT make custom enums. The dynamic C# complier crashes Unity when it encounters these for - // some reason - - // IMPORTANT - DO NOT OVERRIDE Awake() as it is used internally by MVRScript - instead use Init() function which - // is called right after creation - - private DateTime dtspan; - private Atom coreControl; - public override void Init() - { - try - { - // put init code in here - SuperController.LogMessage("loadscene Loaded"); - coreControl = SuperController.singleton.GetAtomByUid("CoreControl"); - dtspan = DateTime.Now; - - // create custom JSON storable params here if you want them to be stored with scene JSON - // types are JSONStorableFloat, JSONStorableBool, JSONStorableString, JSONStorableStringChooser - // JSONStorableColor - - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - } - - // Start is called once before Update or FixedUpdate is called and after Init() - void Start() - { - try - { - - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - } - - // Update is called with each rendered frame by Unity - void Update() - { - try - { - if ((DateTime.Now - dtspan).Seconds >= 2) - { - dtspan = DateTime.Now; - if (SuperController.singleton.isLoading) return; - - - string loadscenetxt = "Custom\\PluginData\\feelfar\\loadscene.json"; - if (FileManagerSecure.FileExists(loadscenetxt)) - { - SuperController.LogMessage("find loadscene.json"); - - JSONClass atomforload = (JSONClass)JSON.Parse(FileManagerSecure.ReadAllText(loadscenetxt)); - //SuperController.LogMessage(atomforload.ToString()); - Thread.Sleep(1000); - FileManagerSecure.DeleteFile(loadscenetxt); - bool rescan = false; - if (atomforload.HasKey("rescan")) - { - rescan = atomforload["rescan"].AsBool; - } - if (rescan) - { - SuperController.LogMessage("Rescan Packages..."); - SuperController.singleton.RescanPackages(); - //Thread.Sleep(10000); - } - bool merge = false; - if (atomforload.HasKey("merge")) - { - SuperController.LogMessage("merge load enabled..."); - merge = atomforload["merge"].AsBool; - } - string characterGender = "female"; - if (atomforload.HasKey("characterGender")) - { - characterGender = atomforload["characterGender"].Value; - SuperController.LogMessage("Character gender is " + characterGender.ToString()); - } - bool ignoreGender = false; - if (atomforload.HasKey("ignoreGender")) - { - ignoreGender = atomforload["ignoreGender"].AsBool; - SuperController.LogMessage("Ignore Gender is " + ignoreGender.ToString()); - } - bool forMale = (characterGender == "male" || characterGender == "futa"); - int personOrder = 1; - if (atomforload.HasKey("personOrder")) - { - personOrder = atomforload["personOrder"].AsInt; - } - JSONArray resources = atomforload["resources"].AsArray; - List atompresets = new List(); - List atoms = new List(); - List atomSubscene = new List(); - foreach (JSONClass resource in resources) - { - while (SuperController.singleton.isLoading) - { - Thread.Sleep(1000); - } - string scenetype = ""; - if (resource.HasKey("type")) - { - scenetype = resource["type"]; - } - string scenefile = ""; - if (resource.HasKey("saveName")) - { - scenefile = resource["saveName"]; - } - if (string.IsNullOrEmpty(scenetype) || string.IsNullOrEmpty(scenefile)) - continue; - - if (FileManagerSecure.FileExists(scenefile)) - { - switch (scenetype) - { - case "scenes": - SuperController.LogMessage("load " + scenetype + ": " + scenefile); - if (merge) - SuperController.singleton.LoadMerge(scenefile); - else - SuperController.singleton.Load(scenefile); - break; - case "atom": - atoms.Add((JSONClass)JSONNode.LoadFromFile(scenefile)); - break; - - case "atomSubscene": - atomSubscene.Add((JSONClass)JSONNode.LoadFromFile(scenefile)); - break; - - default: - atompresets.Add(resource); - break; - } - } - else - { - SuperController.LogError("no found " + scenefile); - } - } - if (atoms.Count > 0) - { - base.StartCoroutine(this.AddAtoms(atoms)); - } - if (atomSubscene.Count > 0) - { - base.StartCoroutine(this.AddAtoms(atomSubscene, true)); - } - if (atompresets.Count > 0) - { - bool findatom = false; - foreach (var atom in SuperController.singleton.GetAtoms()) - { - if (atom.type == "Person" && atom.on) - { - if (IsMale(atom) == forMale || ignoreGender) - { - personOrder--; - if (personOrder > 0) - continue; - findatom = true; - SuperController.LogMessage("Find Person " + atom.name); - atom.SetOn(false); - //atom.hidden = true; - foreach (JSONClass resource in atompresets) - { - while (SuperController.singleton.isLoading) - { - Thread.Sleep(1000); - } - //Thread.Sleep(2000); - string scenetype = ""; - if (resource.HasKey("type")) - { - scenetype = resource["type"]; - } - string scenefile = ""; - if (resource.HasKey("saveName")) - { - scenefile = resource["saveName"]; - } - if (string.IsNullOrEmpty(scenetype) || string.IsNullOrEmpty(scenefile)) - continue; - - if (FileManagerSecure.FileExists(scenefile)) - { - if (scenetype == ("hairstyle")) - { - LoadPreset(atom, "HairPresets", merge, scenefile); - } - if (scenetype == ("morphs")) - { - LoadPreset(atom, "MorphPresets", merge, scenefile); - } - if (scenetype == ("skin")) - { - LoadPreset(atom, "SkinPresets", merge, scenefile); - } - if (scenetype == ("clothing")) - { - LoadPreset(atom, "ClothingPresets", merge, scenefile); - } - if (scenetype == ("plugin")) - { - LoadPreset(atom, "PluginPresets", merge, scenefile); - } - if (scenetype == ("breast")) - { - LoadPreset(atom, "FemaleBreastPhysicsPresets", merge, scenefile); - } - if (scenetype == ("glute")) - { - LoadPreset(atom, "FemaleGlutePhysicsPresets", merge, scenefile); - } - if (scenetype == ("pose")) - { - SuperController.singleton.motionAnimationMaster.StopPlayback(); - SuperController.singleton.motionAnimationMaster.ResetAnimation(); - atom.ResetPhysical(); - if (scenefile.EndsWith(".json")) - LoadLegacyl(atom, "pose", scenefile); - else - LoadPreset(atom, "PosePresets", merge, scenefile); - } - if (scenetype == ("looks")) - { - if (scenefile.EndsWith(".json")) - { - if (scenefile.IndexOf("/Person/full/") >= 0) - LoadLegacyl(atom, "full", scenefile); - else - LoadLegacyl(atom, "appearance", scenefile); - } - else - { - LoadPreset(atom, "AppearancePresets", merge, scenefile); - } - } - if (scenetype == ("animation")) - { - SuperController.singleton.motionAnimationMaster.StopPlayback(); - SuperController.singleton.motionAnimationMaster.SeekToBeginning(); - SuperController.LogMessage("loaded Storable " + FileManagerSecure.GetFullPath(scenefile)); JSONClass atomitem = (JSONClass)JSONNode.LoadFromFile(FileManagerSecure.GetFullPath(scenefile)); - List storids = atom.GetStorableIDs(); - JSONClass jcempty = new JSONClass(); - foreach (string storid in storids) - { - if (storid.EndsWith("Animation")) - { - JSONStorable storable = atom.GetStorableByID(storid); - storable.RestoreFromJSON(jcempty); - } - } - LoadStorableFile(atom, atomitem["storables"].AsArray); - SuperController.singleton.motionAnimationMaster.RestoreFromJSON((JSONClass)atomitem["motionAnimationMaster"]); - SuperController.singleton.motionAnimationMaster.StartPlayback(); - } - } - } - atom.SetOn(true); - //atom.hidden = false; - break; - } - } - } - if (!findatom) - SuperController.LogError("Error load Preset,Unable to match the right atom"); - } - } - } - - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - } - protected IEnumerator AddAtoms(List jatoms, bool setSubScene = false) - { - IEnumerator enumerator7 = jatoms.GetEnumerator(); - try - { - while (enumerator7.MoveNext()) - { - object obj = enumerator7.Current; - JSONClass jsonclass = (JSONClass)obj; - string uid = jsonclass["id"]; - Atom atomByUid = SuperController.singleton.GetAtomByUid(uid); - if (atomByUid != null) - { - atomByUid.PreRestore(); - } - } - } - finally - { - IDisposable disposable; - if ((disposable = (enumerator7 as IDisposable)) != null) - { - disposable.Dispose(); - } - } - - Physics.autoSimulation = false; - IEnumerator enumerator8 = jatoms.GetEnumerator(); - try - { - while (enumerator8.MoveNext()) - { - object obj2 = enumerator8.Current; - JSONClass jatom = (JSONClass)obj2; - string auid = jatom["id"]; - string type = jatom["type"]; - - Atom a = SuperController.singleton.GetAtomByUid(auid); - if (a == null) - { - yield return base.StartCoroutine(SuperController.singleton.AddAtomByType(type, auid, false, false, false)); - a = SuperController.singleton.GetAtomByUid(auid); - } - else if (a.type != type) - { - SuperController.LogError(string.Concat(new string[] - { - "Atom ", - a.name, - " already exists, but uses different type ", - a.type, - " compared to requested ", - type - }), true, true); - } - if (a != null) - { - a.SetOn(true); - } - } - } - finally - { - IDisposable disposable2; - if ((disposable2 = (enumerator8 as IDisposable)) != null) - { - disposable2.Dispose(); - } - } - yield return null; - Physics.Simulate(0.01f); - yield return null; - IEnumerator enumerator9 = jatoms.GetEnumerator(); - try - { - while (enumerator9.MoveNext()) - { - object obj3 = enumerator9.Current; - JSONClass jsonclass2 = (JSONClass)obj3; - string text = jsonclass2["id"]; - string str = jsonclass2["type"]; - Atom atomByUid2 = SuperController.singleton.GetAtomByUid(text); - if (atomByUid2 != null) - { - atomByUid2.RestoreTransform(jsonclass2, true); - } - else - { - SuperController.LogError("Failed to find atom " + text + " of type " + str, true, true); - } - } - } - finally - { - IDisposable disposable3; - if ((disposable3 = (enumerator9 as IDisposable)) != null) - { - disposable3.Dispose(); - } - } - IEnumerator enumerator10 = jatoms.GetEnumerator(); - try - { - while (enumerator10.MoveNext()) - { - object obj4 = enumerator10.Current; - JSONClass jsonclass3 = (JSONClass)obj4; - string uid2 = jsonclass3["id"]; - Atom atomByUid3 = SuperController.singleton.GetAtomByUid(uid2); - if (atomByUid3 != null) - { - atomByUid3.RestoreParentAtom(jsonclass3); - } - } - } - finally - { - IDisposable disposable4; - if ((disposable4 = (enumerator10 as IDisposable)) != null) - { - disposable4.Dispose(); - } - } - IEnumerator enumerator11 = jatoms.GetEnumerator(); - try - { - while (enumerator11.MoveNext()) - { - object obj5 = enumerator11.Current; - JSONClass jsonclass4 = (JSONClass)obj5; - string text2 = jsonclass4["id"]; - Atom atomByUid4 = SuperController.singleton.GetAtomByUid(text2); - if (atomByUid4 != null) - { - atomByUid4.Restore(jsonclass4, true, true, true, null, false, false, true, false); - } - else - { - SuperController.LogError("Could not find atom by uid " + text2, true, true); - } - } - } - finally - { - IDisposable disposable5; - if ((disposable5 = (enumerator11 as IDisposable)) != null) - { - disposable5.Dispose(); - } - } - IEnumerator enumerator12 = jatoms.GetEnumerator(); - try - { - while (enumerator12.MoveNext()) - { - object obj6 = enumerator12.Current; - JSONClass jsonclass5 = (JSONClass)obj6; - string text3 = jsonclass5["id"]; - Atom atomByUid5 = SuperController.singleton.GetAtomByUid(text3); - if (atomByUid5 != null) - { - atomByUid5.LateRestore(jsonclass5, true, true, true, false, true, false); - } - else - { - SuperController.LogError("Could not find atom by uid " + text3, true, true); - } - } - } - finally - { - IDisposable disposable6; - if ((disposable6 = (enumerator12 as IDisposable)) != null) - { - disposable6.Dispose(); - } - } - if (setSubScene) - { - yield return base.StartCoroutine(SuperController.singleton.AddAtomByType("SubScene", "SubSceneVarManager", false, false, false)); - - IEnumerator enumerator13 = jatoms.GetEnumerator(); - try - { - while (enumerator13.MoveNext()) - { - object obj6 = enumerator13.Current; - JSONClass jsonclass5 = (JSONClass)obj6; - string text3 = jsonclass5["id"]; - Atom atomByUid5 = SuperController.singleton.GetAtomByUid(text3); - if (atomByUid5 != null) - { - atomByUid5.SetParentAtom("SubSceneVarManager"); - } - else - { - SuperController.LogError("Could not find atom by uid " + text3, true, true); - } - } - } - finally - { - IDisposable disposable6; - if ((disposable6 = (enumerator13 as IDisposable)) != null) - { - disposable6.Dispose(); - } - } - } - - foreach (Atom atom8 in SuperController.singleton.GetAtoms()) - { - atom8.PostRestore(); - } - - - Physics.autoSimulation = true; - - yield return null; - } - private void LoadPreset(Atom atom, string presetType, bool merge, string presetFile) - { - JSONStorable js = atom.GetStorableByID(presetType); - - JSONStorableBool loadOnSelectJSON = js.GetBoolJSONParam("loadPresetOnSelect"); - bool preState = loadOnSelectJSON.val; - loadOnSelectJSON.val = false; - - JSONStorableUrl presetPathJSON = js.GetUrlJSONParam("presetBrowsePath"); - string pathPreState = presetPathJSON.val; - presetPathJSON.val = SuperController.singleton.NormalizePath(presetFile); - - if (merge) js.CallAction("MergeLoadPreset"); - else js.CallAction("LoadPreset"); - - //presetPathJSON.val = pathPreState; - //loadOnSelectJSON.val = preState; - SuperController.LogMessage("loaded " + presetType + ": " + presetFile); - } - private void SetAnimationStorableIds() - { - List animationStorableIds = new List(); - foreach (string id in containingAtom.GetStorableIDs()) - { - if (id.EndsWith("Animation")) - { - animationStorableIds.Add(id); - } - } - } - private void LoadStorableFile(Atom atom, JSONArray storablesArray) - { - foreach (JSONClass storablesitem in storablesArray) - { - if (storablesitem.HasKey("id")) - { - JSONStorable storable = atom.GetStorableByID(storablesitem["id"].Value); - storable.RestoreFromJSON(storablesitem); - } - } - - } - private void LoadLegacyl(Atom atom, string presetType, string presetFile) - { - if (presetType == "pose") - atom.LoadPhysicalPreset(presetFile); - if (presetType == "full") - atom.LoadPreset(presetFile); - if (presetType == "appearance") - atom.LoadAppearancePreset(presetFile); - SuperController.LogMessage("loaded " + presetType + ": " + presetFile); - } - - private void LoadPreset(string presetType, bool merge, string presetFile, bool formale = false, bool futaasfemale = false, int personOrder = 1) - { - SuperController.LogMessage((merge ? " Merge LoadPreset " : "LoadPreset ") + presetType + ":" + presetFile); - - //bool formale = ForMale(presetFile, futaasfemale); - bool findatom = false; - foreach (var atom in SuperController.singleton.GetAtoms()) - { - if (atom.type == "Person" && atom.on) - { - SuperController.LogMessage("Find Person " + (IsMale(atom, futaasfemale) ? "Male :" : "Female :") + atom.name); - if (IsMale(atom, futaasfemale) == formale) - { - personOrder--; - if (personOrder > 0) - continue; - atom.SetOn(false); - JSONStorable js = atom.GetStorableByID(presetType); - - JSONStorableBool loadOnSelectJSON = js.GetBoolJSONParam("loadPresetOnSelect"); - bool preState = loadOnSelectJSON.val; - loadOnSelectJSON.val = false; - - JSONStorableUrl presetPathJSON = js.GetUrlJSONParam("presetBrowsePath"); - string pathPreState = presetPathJSON.val; - presetPathJSON.val = SuperController.singleton.NormalizePath(presetFile); - - if (merge) js.CallAction("MergeLoadPreset"); - else js.CallAction("LoadPreset"); - - presetPathJSON.val = pathPreState; - loadOnSelectJSON.val = preState; - atom.SetOn(true); - findatom = true; - SuperController.LogMessage("loaded Preset: " + presetFile); - break; - } - } - } - if (!findatom) - SuperController.LogError("Error load Preset " + presetFile + ",Unable to match the right atom"); - - } - - private void LoadLegacyl(string presetType, string presetFile, bool formale = false, bool futaasfemale = false, int personOrder = 1) - { - SuperController.LogMessage("LoadLegacyl " + presetType + ":" + presetFile); - - //bool formale = ForMale(presetFile, futaasfemale); - bool findatom = false; - foreach (var atom in SuperController.singleton.GetAtoms()) - { - if (atom.type == "Person" && atom.on) - { - SuperController.LogMessage("Find Person " + (IsMale(atom, futaasfemale) ? "Male :" : "Female :") + atom.name); - if (IsMale(atom, futaasfemale) == formale) - { - personOrder--; - if (personOrder > 0) - continue; - atom.SetOn(false); - if (presetType == "pose") - atom.LoadPhysicalPreset(presetFile); - if (presetType == "full") - atom.LoadPreset(presetFile); - if (presetType == "appearance") - atom.LoadAppearancePreset(presetFile); - findatom = true; - atom.SetOn(true); - SuperController.LogMessage("loaded Preset: " + presetFile); - break; - } - } - } - if (!findatom) - SuperController.LogError("Error load Preset " + presetFile + ",Unable to match the right atom"); - - } - - private static bool ForMale(string presetFile, bool futaAsFemale = false) - { - bool formale = false; - string presetstr = SuperController.singleton.ReadFileIntoString(presetFile); - int indexcharacter = presetstr.IndexOf("\"character\"", StringComparison.OrdinalIgnoreCase); - if (indexcharacter >= 0) - { - presetstr = presetstr.Substring(indexcharacter); - int indexcharacter2 = presetstr.IndexOf(",", StringComparison.OrdinalIgnoreCase); - presetstr = presetstr.Substring(0, indexcharacter2); - string resultString = ""; - try - { - resultString = Regex.Match(presetstr, @"\x3A\s*\x22(?.*?)\x22", RegexOptions.Multiline).Groups["character"].Value; - } - catch (ArgumentException ex) - { - // Syntax error in the regular expression - } - if (!string.IsNullOrEmpty(resultString)) - { - resultString = resultString.Trim().ToLower(); - formale = resultString.StartsWith("male") || - resultString.StartsWith("lee") || - resultString.StartsWith("jarlee") || - resultString.StartsWith("julian") || - resultString.StartsWith("jarjulian"); - if (!futaAsFemale) - formale = formale || resultString.StartsWith("futa"); - - } - } - - return formale; - } - - public bool IsMale(Atom atom, bool futaAsFemale = false) - { - bool isMale = false; - string atomCharacter = atom.GetComponentInChildren().name.ToLower(); - // If the peson atom is not "On", then we cant determine their gender it seems as GetComponentInChildren just returns null - isMale = atomCharacter.StartsWith("male") || - atomCharacter.StartsWith("lee") || - atomCharacter.StartsWith("jarlee") || - atomCharacter.StartsWith("julian") || - atomCharacter.StartsWith("jarjulian"); - if (!futaAsFemale) - isMale = isMale || atomCharacter.StartsWith("futa"); - return (isMale); - } - - // FixedUpdate is called with each physics simulation frame by Unity - void FixedUpdate() - { - try - { - // put code in here - } - catch (Exception e) - { - SuperController.LogError("Exception caught: " + e); - } - } - - // OnDestroy is where you should put any cleanup - // if you registered objects to supercontroller or atom, you should unregister them here - void OnDestroy() - { - } - - } -} \ No newline at end of file diff --git a/_archived/varManager/Data/VarManagerContext.cs b/_archived/varManager/Data/VarManagerContext.cs deleted file mode 100644 index cdcdbb2..0000000 --- a/_archived/varManager/Data/VarManagerContext.cs +++ /dev/null @@ -1,225 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using varManager.Models; -using varManager.Properties; - -namespace varManager.Data -{ - public class VarManagerContext : DbContext - { - public const string ProviderName = "Microsoft.Data.Sqlite"; - private static readonly object s_initLock = new object(); - private static bool s_initialized; - - public static string GetDatabasePath() - { - var baseDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) - ?? System.AppDomain.CurrentDomain.BaseDirectory; - return Path.Combine(baseDirectory, "varManager.db"); - } - - public static (string DbPath, string Provider) GetDatabaseInfo() - { - return (GetDatabasePath(), ProviderName); - } - - public static void EnsureCreatedOnce() - { - if (s_initialized) - { - return; - } - - lock (s_initLock) - { - if (s_initialized) - { - return; - } - - using var context = new VarManagerContext(); - context.Database.EnsureCreated(); - s_initialized = true; - } - } - - public DbSet Dependencies { get; set; } - public DbSet InstallStatuses { get; set; } - public DbSet Vars { get; set; } - public DbSet Scenes { get; set; } - public DbSet SavedDependencies { get; set; } - public DbSet HideFavs { get; set; } - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - if (!optionsBuilder.IsConfigured) - { - // Use project directory for database location to match original behavior - var dbPath = GetDatabasePath(); - optionsBuilder.UseSqlite($"Data Source={dbPath}"); - } - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - // Configure table names to match existing database - modelBuilder.Entity().ToTable("dependencies"); - modelBuilder.Entity().ToTable("installStatus"); - modelBuilder.Entity().ToTable("vars"); - modelBuilder.Entity().ToTable("scenes"); - modelBuilder.Entity().ToTable("savedepens"); - modelBuilder.Entity().ToTable("HideFav"); - - // Configure property mappings for different naming conventions - modelBuilder.Entity(entity => - { - entity.Property(e => e.DependencyName).HasColumnName("dependency"); - entity.Property(e => e.VarName).HasColumnName("varName"); - }); - - modelBuilder.Entity(entity => - { - entity.Property(e => e.DependencyName).HasColumnName("dependency"); - entity.Property(e => e.VarName).HasColumnName("varName"); - }); - - // Configure InstallStatus key - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.VarName); - entity.Property(e => e.VarName).HasColumnName("varName"); - entity.Property(e => e.Installed).HasColumnName("installed"); - entity.Property(e => e.Disabled).HasColumnName("disabled"); - }); - - // Configure Scene entity - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.ID); - entity.Property(e => e.VarName).HasColumnName("varName"); - entity.Property(e => e.AtomType).HasColumnName("atomType"); - entity.Property(e => e.PreviewPic).HasColumnName("previewPic"); - entity.Property(e => e.ScenePath).HasColumnName("scenePath"); - entity.Property(e => e.IsPreset).HasColumnName("isPreset"); - entity.Property(e => e.IsLoadable).HasColumnName("isLoadable"); - }); - - // Configure HideFav entity - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.VarName); - entity.Property(e => e.VarName).HasColumnName("varName"); - entity.Property(e => e.Hide).HasColumnName("hide"); - entity.Property(e => e.Fav).HasColumnName("fav"); - }); - - // Configure Var entity with proper column mappings - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.VarName); - entity.Property(e => e.VarName).HasColumnName("varName"); - entity.Property(e => e.CreatorName).HasColumnName("creatorName"); - entity.Property(e => e.PackageName).HasColumnName("packageName"); - entity.Property(e => e.MetaDate).HasColumnName("metaDate"); - entity.Property(e => e.VarDate).HasColumnName("varDate"); - entity.Property(e => e.Version).HasColumnName("version"); - entity.Property(e => e.Description).HasColumnName("description"); - entity.Property(e => e.Morph).HasColumnName("morph"); - entity.Property(e => e.Cloth).HasColumnName("cloth"); - entity.Property(e => e.Hair).HasColumnName("hair"); - entity.Property(e => e.Skin).HasColumnName("skin"); - entity.Property(e => e.Pose).HasColumnName("pose"); - entity.Property(e => e.Scene).HasColumnName("scene"); - entity.Property(e => e.Script).HasColumnName("script"); - entity.Property(e => e.Plugin).HasColumnName("plugin"); - entity.Property(e => e.Asset).HasColumnName("asset"); - entity.Property(e => e.Texture).HasColumnName("texture"); - entity.Property(e => e.Look).HasColumnName("look"); - entity.Property(e => e.SubScene).HasColumnName("subScene"); - entity.Property(e => e.Appearance).HasColumnName("appearance"); - entity.Property(e => e.DependencyCnt).HasColumnName("dependencyCnt"); - entity.Property(e => e.Fsize).HasColumnName("fsize"); - }); - - base.OnModelCreating(modelBuilder); - } - - // Create views as queryable properties - public IQueryable VarsView => - from v in Vars - join i in InstallStatuses on v.VarName equals i.VarName into installJoin - from install in installJoin.DefaultIfEmpty() - select new VarsView - { - VarName = v.VarName, - CreatorName = v.CreatorName, - PackageName = v.PackageName, - MetaDate = v.MetaDate, - VarDate = v.VarDate, - Version = v.Version, - Description = v.Description, - VarPath = "", // No varPath in existing schema - Fsize = v.Fsize ?? 0.0, - Scenes = v.Scene ?? 0, - Looks = v.Look ?? 0, - Clothing = v.Cloth ?? 0, - Hairstyle = v.Hair ?? 0, - Plugins = v.Plugin ?? 0, - Assets = v.Asset ?? 0, - Morphs = v.Morph ?? 0, - Pose = v.Pose ?? 0, - Skin = v.Skin ?? 0, - Installed = install != null && install.Installed, - Disabled = install != null && install.Disabled - }; - - public IQueryable ScenesView => - from s in Scenes - join v in Vars on s.VarName equals v.VarName into varJoin - from var in varJoin.DefaultIfEmpty() - join i in InstallStatuses on s.VarName equals i.VarName into installJoin - from install in installJoin.DefaultIfEmpty() - join h in HideFavs on s.VarName equals h.VarName into hideFavJoin - from hideFav in hideFavJoin.DefaultIfEmpty() - select new ScenesView - { - VarName = s.VarName, - AtomType = s.AtomType, - IsPreset = s.IsPreset, - ScenePath = s.ScenePath, - PreviewPic = s.PreviewPic, - CreatorName = var != null ? var.CreatorName : null, - PackageName = var != null ? var.PackageName : null, - MetaDate = var != null ? var.MetaDate : null, - Version = var != null ? var.Version : null, - Installed = install != null && install.Installed, - Disabled = install != null && install.Disabled, - Hide = hideFav != null && hideFav.Hide, - Fav = hideFav != null && hideFav.Fav - }; - } - - // View model for VarsView - public class VarsView - { - public string VarName { get; set; } = string.Empty; - public string? CreatorName { get; set; } - public string? PackageName { get; set; } - public DateTime? MetaDate { get; set; } - public DateTime? VarDate { get; set; } - public string? Version { get; set; } - public string? Description { get; set; } - public string? VarPath { get; set; } - public double Fsize { get; set; } - public int Scenes { get; set; } - public int Looks { get; set; } - public int Clothing { get; set; } - public int Hairstyle { get; set; } - public int Plugins { get; set; } - public int Assets { get; set; } - public int Morphs { get; set; } - public int Pose { get; set; } - public int Skin { get; set; } - public bool Installed { get; set; } - public bool Disabled { get; set; } - } -} diff --git a/_archived/varManager/Form1.Designer.cs b/_archived/varManager/Form1.Designer.cs deleted file mode 100644 index b1dcee0..0000000 --- a/_archived/varManager/Form1.Designer.cs +++ /dev/null @@ -1,1660 +0,0 @@ -锘 -namespace varManager -{ - partial class Form1 - { - /// - /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 娓呯悊鎵鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆 - /// - /// 濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓 true锛涘惁鍒欎负 false銆 - protected override void Dispose(bool disposing) - { - if (disposing) - { - if (components != null) - { - components.Dispose(); - } - foreach (var context in _dbContext.Values) - { - context?.Dispose(); - } - _dbContext.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows 绐椾綋璁捐鍣ㄧ敓鎴愮殑浠g爜 - - /// - /// 璁捐鍣ㄦ敮鎸佹墍闇鐨勬柟娉 - 涓嶈淇敼 - /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广 - /// - private void InitializeComponent() - { - components = new System.ComponentModel.Container(); - DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); - buttonSetting = new Button(); - tableLayoutPanel1 = new TableLayoutPanel(); - listBoxLog = new ListBox(); - panel1 = new Panel(); - buttonFixPreview = new Button(); - groupBoxSwitch = new GroupBox(); - comboBoxPacksSwitch = new ComboBox(); - buttonPacksDelete = new Button(); - buttonPacksRename = new Button(); - buttonPacksAdd = new Button(); - buttonFixRebuildLink = new Button(); - groupBox1 = new GroupBox(); - buttonMissingDepends = new Button(); - buttonFilteredMissingDepends = new Button(); - buttonAllMissingDepends = new Button(); - buttonFixSavesDepend = new Button(); - contextMenuStripPrepareSave = new ContextMenuStrip(components); - prepareFormSavesToolStripMenuItem = new ToolStripMenuItem(); - buttonScenesManager = new Button(); - buttonStaleVars = new Button(); - buttonUpdDB = new Button(); - buttonStartVam = new Button(); - tableLayoutPanel2 = new TableLayoutPanel(); - progressBar1 = new ProgressBar(); - labelProgress = new Label(); - splitContainer1 = new SplitContainer(); - varsViewDataGridView = new DataGridView(); - varNamedataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - installedDataGridViewCheckBoxColumn = new DataGridViewCheckBoxColumn(); - ColumnDetail = new DataGridViewButtonColumn(); - fsize = new DataGridViewTextBoxColumn(); - varPathDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - creatorNameDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - packageNameDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - versionDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - metaDateDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - varDateDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - scenesDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - looksDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - clothingDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - hairstyleDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - pluginsDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - assetsDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); - morphs = new DataGridViewTextBoxColumn(); - pose = new DataGridViewTextBoxColumn(); - skin = new DataGridViewTextBoxColumn(); - disabledDataGridViewCheckBoxColumn = new DataGridViewCheckBoxColumn(); - varsViewBindingSource = new BindingSource(components); - flowLayoutPanel2 = new FlowLayoutPanel(); - buttonInstall = new Button(); - buttonUninstallSels = new Button(); - buttonDelete = new Button(); - buttonMove = new Button(); - buttonExpInsted = new Button(); - buttonInstFormTxt = new Button(); - buttonHub = new Button(); - buttonClearLog = new Button(); - flowLayoutPanel1 = new FlowLayoutPanel(); - varsBindingNavigator = new BindingNavigator(components); - bindingNavigatorCountItem = new ToolStripLabel(); - bindingNavigatorMoveFirstItem = new ToolStripButton(); - bindingNavigatorMovePreviousItem = new ToolStripButton(); - bindingNavigatorSeparator = new ToolStripSeparator(); - bindingNavigatorPositionItem = new ToolStripTextBox(); - bindingNavigatorSeparator1 = new ToolStripSeparator(); - bindingNavigatorMoveNextItem = new ToolStripButton(); - bindingNavigatorMoveLastItem = new ToolStripButton(); - bindingNavigatorSeparator2 = new ToolStripSeparator(); - label1 = new Label(); - comboBoxCreater = new ComboBox(); - label2 = new Label(); - textBoxFilter = new TextBox(); - checkBoxInstalled = new CheckBox(); - buttonResetFilter = new Button(); - tableLayoutPanelPreview = new TableLayoutPanel(); - pictureBoxPreview = new PictureBox(); - labelPreviewVarName = new Label(); - buttonLocate = new Button(); - panel3 = new Panel(); - buttonLoad = new Button(); - checkBoxForMale = new CheckBox(); - checkBoxIgnoreGender = new CheckBox(); - groupBoxPersonOrder = new GroupBox(); - radioButtonPersonOrder6 = new RadioButton(); - radioButtonPersonOrder8 = new RadioButton(); - radioButtonPersonOrder7 = new RadioButton(); - radioButtonPersonOrder5 = new RadioButton(); - radioButtonPersonOrder4 = new RadioButton(); - radioButtonPersonOrder3 = new RadioButton(); - radioButtonPersonOrder2 = new RadioButton(); - radioButtonPersonOrder1 = new RadioButton(); - checkBoxMerge = new CheckBox(); - buttonClearCache = new Button(); - buttonAnalysis = new Button(); - buttonpreviewinstall = new Button(); - listViewPreviewPics = new ListView(); - imageListPreviewPics = new ImageList(components); - flowLayoutPanel3 = new FlowLayoutPanel(); - toolStripPreview = new ToolStrip(); - toolStripButtonPreviewFirst = new ToolStripButton(); - toolStripButtonPreviewPrev = new ToolStripButton(); - toolStripLabelPreviewItemIndex = new ToolStripLabel(); - toolStripLabelPreviewCountItem = new ToolStripLabel(); - toolStripButtonPreviewNext = new ToolStripButton(); - toolStripButtonPreviewLast = new ToolStripButton(); - label4 = new Label(); - comboBoxPreviewType = new ComboBox(); - checkBoxPreviewTypeLoadable = new CheckBox(); - backgroundWorkerInstall = new System.ComponentModel.BackgroundWorker(); - toolTip1 = new ToolTip(components); - backgroundWorkerPreview = new System.ComponentModel.BackgroundWorker(); - folderBrowserDialogMove = new FolderBrowserDialog(); - openFileDialogInstByTXT = new OpenFileDialog(); - saveFileDialogExportInstalled = new SaveFileDialog(); - varsBindingSource = new BindingSource(components); - dependenciesBindingSource = new BindingSource(components); - installStatusBindingSource = new BindingSource(components); - scenesBindingSource = new BindingSource(components); - tableLayoutPanel1.SuspendLayout(); - panel1.SuspendLayout(); - groupBoxSwitch.SuspendLayout(); - groupBox1.SuspendLayout(); - contextMenuStripPrepareSave.SuspendLayout(); - tableLayoutPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit(); - splitContainer1.Panel1.SuspendLayout(); - splitContainer1.Panel2.SuspendLayout(); - splitContainer1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)varsViewDataGridView).BeginInit(); - ((System.ComponentModel.ISupportInitialize)varsViewBindingSource).BeginInit(); - flowLayoutPanel2.SuspendLayout(); - flowLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)varsBindingNavigator).BeginInit(); - varsBindingNavigator.SuspendLayout(); - tableLayoutPanelPreview.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)pictureBoxPreview).BeginInit(); - panel3.SuspendLayout(); - groupBoxPersonOrder.SuspendLayout(); - flowLayoutPanel3.SuspendLayout(); - toolStripPreview.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)varsBindingSource).BeginInit(); - ((System.ComponentModel.ISupportInitialize)dependenciesBindingSource).BeginInit(); - ((System.ComponentModel.ISupportInitialize)installStatusBindingSource).BeginInit(); - ((System.ComponentModel.ISupportInitialize)scenesBindingSource).BeginInit(); - SuspendLayout(); - // - // buttonSetting - // - buttonSetting.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonSetting.Location = new Point(33, 749); - buttonSetting.Name = "buttonSetting"; - buttonSetting.Size = new Size(89, 48); - buttonSetting.TabIndex = 0; - buttonSetting.Text = "Settings"; - buttonSetting.UseVisualStyleBackColor = true; - buttonSetting.Click += buttonSetting_Click; - // - // tableLayoutPanel1 - // - tableLayoutPanel1.ColumnCount = 2; - tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); - tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 159F)); - tableLayoutPanel1.Controls.Add(listBoxLog, 0, 1); - tableLayoutPanel1.Controls.Add(panel1, 1, 0); - tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 0, 2); - tableLayoutPanel1.Controls.Add(splitContainer1, 0, 0); - tableLayoutPanel1.Dock = DockStyle.Fill; - tableLayoutPanel1.Location = new Point(0, 0); - tableLayoutPanel1.Name = "tableLayoutPanel1"; - tableLayoutPanel1.RowCount = 3; - tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); - tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 245F)); - tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 26F)); - tableLayoutPanel1.Size = new Size(1540, 829); - tableLayoutPanel1.TabIndex = 2; - // - // listBoxLog - // - listBoxLog.Dock = DockStyle.Fill; - listBoxLog.FormattingEnabled = true; - listBoxLog.ItemHeight = 21; - listBoxLog.Location = new Point(3, 561); - listBoxLog.Name = "listBoxLog"; - listBoxLog.Size = new Size(1375, 239); - listBoxLog.TabIndex = 2; - toolTip1.SetToolTip(listBoxLog, "Log"); - // - // panel1 - // - panel1.AutoScroll = true; - panel1.Controls.Add(buttonFixPreview); - panel1.Controls.Add(groupBoxSwitch); - panel1.Controls.Add(buttonFixRebuildLink); - panel1.Controls.Add(groupBox1); - panel1.Controls.Add(buttonScenesManager); - panel1.Controls.Add(buttonStaleVars); - panel1.Controls.Add(buttonUpdDB); - panel1.Controls.Add(buttonStartVam); - panel1.Controls.Add(buttonSetting); - panel1.Dock = DockStyle.Fill; - panel1.Location = new Point(1384, 3); - panel1.Name = "panel1"; - tableLayoutPanel1.SetRowSpan(panel1, 3); - panel1.Size = new Size(153, 823); - panel1.TabIndex = 5; - // - // buttonFixPreview - // - buttonFixPreview.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonFixPreview.Location = new Point(17, 568); - buttonFixPreview.Name = "buttonFixPreview"; - buttonFixPreview.Size = new Size(118, 29); - buttonFixPreview.TabIndex = 1; - buttonFixPreview.Text = "Fix Preview"; - toolTip1.SetToolTip(buttonFixPreview, "Re-extract the lost preview images"); - buttonFixPreview.UseVisualStyleBackColor = true; - buttonFixPreview.Click += buttonFixPreview_Click; - // - // groupBoxSwitch - // - groupBoxSwitch.Anchor = AnchorStyles.Top | AnchorStyles.Right; - groupBoxSwitch.Controls.Add(comboBoxPacksSwitch); - groupBoxSwitch.Controls.Add(buttonPacksDelete); - groupBoxSwitch.Controls.Add(buttonPacksRename); - groupBoxSwitch.Controls.Add(buttonPacksAdd); - groupBoxSwitch.Location = new Point(9, 10); - groupBoxSwitch.Name = "groupBoxSwitch"; - groupBoxSwitch.Size = new Size(235, 149); - groupBoxSwitch.TabIndex = 6; - groupBoxSwitch.TabStop = false; - groupBoxSwitch.Text = "AddonPacks Switch"; - // - // comboBoxPacksSwitch - // - comboBoxPacksSwitch.Anchor = AnchorStyles.Top | AnchorStyles.Right; - comboBoxPacksSwitch.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxPacksSwitch.FormattingEnabled = true; - comboBoxPacksSwitch.Location = new Point(8, 34); - comboBoxPacksSwitch.Name = "comboBoxPacksSwitch"; - comboBoxPacksSwitch.Size = new Size(118, 29); - comboBoxPacksSwitch.TabIndex = 0; - toolTip1.SetToolTip(comboBoxPacksSwitch, "Switching AddonPackagess"); - comboBoxPacksSwitch.SelectedIndexChanged += comboBoxPacksSwitch_SelectedIndexChanged; - comboBoxPacksSwitch.Enter += SwitchControl_Enter; - // - // buttonPacksDelete - // - buttonPacksDelete.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonPacksDelete.ForeColor = Color.OrangeRed; - buttonPacksDelete.Location = new Point(72, 65); - buttonPacksDelete.Name = "buttonPacksDelete"; - buttonPacksDelete.Size = new Size(54, 35); - buttonPacksDelete.TabIndex = 2; - buttonPacksDelete.Text = "Del"; - toolTip1.SetToolTip(buttonPacksDelete, "Delete current AddonPackages"); - buttonPacksDelete.UseVisualStyleBackColor = true; - buttonPacksDelete.Click += buttonPacksDelete_Click; - buttonPacksDelete.Enter += SwitchControl_Enter; - // - // buttonPacksRename - // - buttonPacksRename.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonPacksRename.ForeColor = Color.Maroon; - buttonPacksRename.Location = new Point(29, 106); - buttonPacksRename.Name = "buttonPacksRename"; - buttonPacksRename.Size = new Size(84, 35); - buttonPacksRename.TabIndex = 3; - buttonPacksRename.Text = "Rename"; - toolTip1.SetToolTip(buttonPacksRename, "Rename current AddonPackages"); - buttonPacksRename.UseVisualStyleBackColor = true; - buttonPacksRename.Click += buttonPacksRename_Click; - buttonPacksRename.Enter += SwitchControl_Enter; - // - // buttonPacksAdd - // - buttonPacksAdd.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonPacksAdd.ForeColor = SystemColors.HotTrack; - buttonPacksAdd.Location = new Point(8, 65); - buttonPacksAdd.Name = "buttonPacksAdd"; - buttonPacksAdd.Size = new Size(54, 35); - buttonPacksAdd.TabIndex = 1; - buttonPacksAdd.Text = "Add"; - toolTip1.SetToolTip(buttonPacksAdd, "Add AddonPackages"); - buttonPacksAdd.UseVisualStyleBackColor = true; - buttonPacksAdd.Click += buttonPacksAdd_Click; - buttonPacksAdd.Enter += SwitchControl_Enter; - // - // buttonFixRebuildLink - // - buttonFixRebuildLink.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonFixRebuildLink.Location = new Point(17, 534); - buttonFixRebuildLink.Name = "buttonFixRebuildLink"; - buttonFixRebuildLink.Size = new Size(118, 28); - buttonFixRebuildLink.TabIndex = 1; - buttonFixRebuildLink.Text = "Rebuild symlink"; - toolTip1.SetToolTip(buttonFixRebuildLink, "When your Vars source directory changes, you need to rebuild symlinks"); - buttonFixRebuildLink.UseVisualStyleBackColor = true; - buttonFixRebuildLink.Click += buttonFixRebuildLink_Click; - // - // groupBox1 - // - groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right; - groupBox1.Controls.Add(buttonMissingDepends); - groupBox1.Controls.Add(buttonFilteredMissingDepends); - groupBox1.Controls.Add(buttonAllMissingDepends); - groupBox1.Controls.Add(buttonFixSavesDepend); - groupBox1.ForeColor = Color.SaddleBrown; - groupBox1.Location = new Point(9, 264); - groupBox1.Name = "groupBox1"; - groupBox1.Size = new Size(235, 233); - groupBox1.TabIndex = 5; - groupBox1.TabStop = false; - groupBox1.Text = "Depends Analysis"; - // - // buttonMissingDepends - // - buttonMissingDepends.Location = new Point(24, 24); - buttonMissingDepends.Name = "buttonMissingDepends"; - buttonMissingDepends.Size = new Size(89, 28); - buttonMissingDepends.TabIndex = 0; - buttonMissingDepends.Text = "Installed Packages"; - toolTip1.SetToolTip(buttonMissingDepends, "Analyzing dependencies from Installed Vars"); - buttonMissingDepends.UseVisualStyleBackColor = true; - buttonMissingDepends.Click += buttonMissingDepends_Click; - // - // buttonFilteredMissingDepends - // - buttonFilteredMissingDepends.Location = new Point(24, 179); - buttonFilteredMissingDepends.Name = "buttonFilteredMissingDepends"; - buttonFilteredMissingDepends.Size = new Size(89, 28); - buttonFilteredMissingDepends.TabIndex = 1; - buttonFilteredMissingDepends.Text = "Filtered Packages"; - toolTip1.SetToolTip(buttonFilteredMissingDepends, "Analyzing dependencies from filtered list on the leftside of form"); - buttonFilteredMissingDepends.UseVisualStyleBackColor = true; - buttonFilteredMissingDepends.Click += buttonFilteredMissingDepends_Click; - // - // buttonAllMissingDepends - // - buttonAllMissingDepends.Location = new Point(24, 126); - buttonAllMissingDepends.Name = "buttonAllMissingDepends"; - buttonAllMissingDepends.Size = new Size(89, 28); - buttonAllMissingDepends.TabIndex = 1; - buttonAllMissingDepends.Text = "All Packages"; - toolTip1.SetToolTip(buttonAllMissingDepends, "Analyzing dependencies from All Vars"); - buttonAllMissingDepends.UseVisualStyleBackColor = true; - buttonAllMissingDepends.Click += buttonAllMissingDepends_Click; - // - // buttonFixSavesDepend - // - buttonFixSavesDepend.ContextMenuStrip = contextMenuStripPrepareSave; - buttonFixSavesDepend.Location = new Point(24, 75); - buttonFixSavesDepend.Name = "buttonFixSavesDepend"; - buttonFixSavesDepend.Size = new Size(89, 28); - buttonFixSavesDepend.TabIndex = 1; - buttonFixSavesDepend.Text = "\"Saves\" JsonFile"; - toolTip1.SetToolTip(buttonFixSavesDepend, "Analyzing dependencies from json files in \"Saves\" folder and vap files in \"Custom\" folder\r\n"); - buttonFixSavesDepend.UseVisualStyleBackColor = true; - buttonFixSavesDepend.Click += buttonFixSavesDepend_Click; - // - // contextMenuStripPrepareSave - // - contextMenuStripPrepareSave.ImageScalingSize = new Size(20, 20); - contextMenuStripPrepareSave.Items.AddRange(new ToolStripItem[] { prepareFormSavesToolStripMenuItem }); - contextMenuStripPrepareSave.Name = "contextMenuStripPrepareSave"; - contextMenuStripPrepareSave.Size = new Size(250, 34); - // - // prepareFormSavesToolStripMenuItem - // - prepareFormSavesToolStripMenuItem.Name = "prepareFormSavesToolStripMenuItem"; - prepareFormSavesToolStripMenuItem.Size = new Size(249, 30); - prepareFormSavesToolStripMenuItem.Text = "Prepare Form Saves"; - prepareFormSavesToolStripMenuItem.Click += prepareFormSavesToolStripMenuItem_Click; - // - // buttonScenesManager - // - buttonScenesManager.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonScenesManager.Font = new Font("Cambria", 9F, FontStyle.Bold, GraphicsUnit.Point); - buttonScenesManager.ForeColor = Color.RoyalBlue; - buttonScenesManager.Location = new Point(17, 637); - buttonScenesManager.Name = "buttonScenesManager"; - buttonScenesManager.Size = new Size(118, 28); - buttonScenesManager.TabIndex = 3; - buttonScenesManager.Text = "Hide| |Fav"; - toolTip1.SetToolTip(buttonScenesManager, "Batch hide or favorite Scenes and Presets,"); - buttonScenesManager.UseVisualStyleBackColor = true; - buttonScenesManager.Click += buttonScenesManager_Click; - // - // buttonStaleVars - // - buttonStaleVars.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonStaleVars.Location = new Point(17, 603); - buttonStaleVars.Name = "buttonStaleVars"; - buttonStaleVars.Size = new Size(118, 28); - buttonStaleVars.TabIndex = 2; - buttonStaleVars.Text = "Stale Vars"; - toolTip1.SetToolTip(buttonStaleVars, "Move old version packages are not dependent on other packages to ___VarTidied___ dirtory"); - buttonStaleVars.UseVisualStyleBackColor = true; - buttonStaleVars.Click += buttonStaleVars_Click; - // - // buttonUpdDB - // - buttonUpdDB.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonUpdDB.Font = new Font("Cambria", 9F, FontStyle.Bold, GraphicsUnit.Point); - buttonUpdDB.ForeColor = Color.RoyalBlue; - buttonUpdDB.Location = new Point(17, 164); - buttonUpdDB.Name = "buttonUpdDB"; - buttonUpdDB.Size = new Size(118, 29); - buttonUpdDB.TabIndex = 0; - buttonUpdDB.Text = "UPD_DB"; - toolTip1.SetToolTip(buttonUpdDB, "Organize vars, extract preview images,update DB."); - buttonUpdDB.UseVisualStyleBackColor = true; - buttonUpdDB.Click += buttonUpdDB_Click; - // - // buttonStartVam - // - buttonStartVam.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonStartVam.Font = new Font("Cambria", 9F, FontStyle.Bold, GraphicsUnit.Point); - buttonStartVam.ForeColor = Color.RoyalBlue; - buttonStartVam.Location = new Point(17, 199); - buttonStartVam.Name = "buttonStartVam"; - buttonStartVam.Size = new Size(118, 32); - buttonStartVam.TabIndex = 7; - buttonStartVam.Text = "Start VAM"; - toolTip1.SetToolTip(buttonStartVam, "Start VAM application"); - buttonStartVam.UseVisualStyleBackColor = true; - buttonStartVam.Click += buttonStartVam_Click; - // - // tableLayoutPanel2 - // - tableLayoutPanel2.ColumnCount = 2; - tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 160F)); - tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); - tableLayoutPanel2.Controls.Add(progressBar1, 1, 0); - tableLayoutPanel2.Controls.Add(labelProgress, 0, 0); - tableLayoutPanel2.Dock = DockStyle.Fill; - tableLayoutPanel2.Location = new Point(3, 806); - tableLayoutPanel2.Name = "tableLayoutPanel2"; - tableLayoutPanel2.RowCount = 1; - tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); - tableLayoutPanel2.Size = new Size(1375, 20); - tableLayoutPanel2.TabIndex = 7; - // - // progressBar1 - // - progressBar1.Dock = DockStyle.Fill; - progressBar1.Location = new Point(163, 3); - progressBar1.Name = "progressBar1"; - progressBar1.Size = new Size(1209, 14); - progressBar1.TabIndex = 4; - // - // labelProgress - // - labelProgress.Anchor = AnchorStyles.None; - labelProgress.AutoSize = true; - labelProgress.Location = new Point(60, 0); - labelProgress.Name = "labelProgress"; - labelProgress.Size = new Size(39, 20); - labelProgress.TabIndex = 5; - labelProgress.Text = "0/0"; - // - // splitContainer1 - // - splitContainer1.Dock = DockStyle.Fill; - splitContainer1.Location = new Point(3, 3); - splitContainer1.Name = "splitContainer1"; - // - // splitContainer1.Panel1 - // - splitContainer1.Panel1.AutoScroll = true; - splitContainer1.Panel1.Controls.Add(varsViewDataGridView); - splitContainer1.Panel1.Controls.Add(flowLayoutPanel2); - splitContainer1.Panel1.Controls.Add(flowLayoutPanel1); - // - // splitContainer1.Panel2 - // - splitContainer1.Panel2.Controls.Add(tableLayoutPanelPreview); - splitContainer1.Panel2.Controls.Add(listViewPreviewPics); - splitContainer1.Panel2.Controls.Add(flowLayoutPanel3); - splitContainer1.Size = new Size(1375, 552); - splitContainer1.SplitterDistance = 836; - splitContainer1.TabIndex = 8; - // - // varsViewDataGridView - // - varsViewDataGridView.AllowUserToAddRows = false; - varsViewDataGridView.AllowUserToDeleteRows = false; - varsViewDataGridView.AutoGenerateColumns = false; - varsViewDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; - varsViewDataGridView.Columns.AddRange(new DataGridViewColumn[] { varNamedataGridViewTextBoxColumn, installedDataGridViewCheckBoxColumn, ColumnDetail, fsize, varPathDataGridViewTextBoxColumn, creatorNameDataGridViewTextBoxColumn, packageNameDataGridViewTextBoxColumn, versionDataGridViewTextBoxColumn, metaDateDataGridViewTextBoxColumn, varDateDataGridViewTextBoxColumn, scenesDataGridViewTextBoxColumn, looksDataGridViewTextBoxColumn, clothingDataGridViewTextBoxColumn, hairstyleDataGridViewTextBoxColumn, pluginsDataGridViewTextBoxColumn, assetsDataGridViewTextBoxColumn, morphs, pose, skin, disabledDataGridViewCheckBoxColumn }); - varsViewDataGridView.DataSource = varsViewBindingSource; - varsViewDataGridView.Dock = DockStyle.Fill; - varsViewDataGridView.Location = new Point(0, 70); - varsViewDataGridView.Name = "varsViewDataGridView"; - varsViewDataGridView.ReadOnly = true; - varsViewDataGridView.RowHeadersWidth = 20; - varsViewDataGridView.RowTemplate.Height = 27; - varsViewDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - varsViewDataGridView.ShowCellToolTips = false; - varsViewDataGridView.Size = new Size(836, 434); - varsViewDataGridView.TabIndex = 6; - toolTip1.SetToolTip(varsViewDataGridView, "Multiple selectable,Right click column header for advanced filter"); - varsViewDataGridView.CellContentClick += varsViewDataGridView_CellContentClick; - varsViewDataGridView.DataError += varsViewDataGridView_DataError; - // - // varNamedataGridViewTextBoxColumn - // - varNamedataGridViewTextBoxColumn.DataPropertyName = "varName"; - varNamedataGridViewTextBoxColumn.HeaderText = "varName"; - varNamedataGridViewTextBoxColumn.MinimumWidth = 6; - varNamedataGridViewTextBoxColumn.Name = "varNamedataGridViewTextBoxColumn"; - varNamedataGridViewTextBoxColumn.ReadOnly = true; - varNamedataGridViewTextBoxColumn.Width = 180; - // - // installedDataGridViewCheckBoxColumn - // - installedDataGridViewCheckBoxColumn.DataPropertyName = "Installed"; - installedDataGridViewCheckBoxColumn.HeaderText = "Installed"; - installedDataGridViewCheckBoxColumn.MinimumWidth = 6; - installedDataGridViewCheckBoxColumn.Name = "installedDataGridViewCheckBoxColumn"; - installedDataGridViewCheckBoxColumn.ReadOnly = true; - installedDataGridViewCheckBoxColumn.Width = 68; - // - // ColumnDetail - // - ColumnDetail.HeaderText = "Detail"; - ColumnDetail.MinimumWidth = 6; - ColumnDetail.Name = "ColumnDetail"; - ColumnDetail.ReadOnly = true; - ColumnDetail.Text = "Detail"; - ColumnDetail.UseColumnTextForButtonValue = true; - ColumnDetail.Width = 60; - // - // fsize - // - fsize.DataPropertyName = "Fsize"; - dataGridViewCellStyle1.Format = "N2"; - dataGridViewCellStyle1.NullValue = null; - fsize.DefaultCellStyle = dataGridViewCellStyle1; - fsize.HeaderText = "fsize(MB)"; - fsize.MinimumWidth = 6; - fsize.Name = "fsize"; - fsize.ReadOnly = true; - fsize.Width = 70; - // - // varPathDataGridViewTextBoxColumn - // - varPathDataGridViewTextBoxColumn.DataPropertyName = "varPath"; - varPathDataGridViewTextBoxColumn.HeaderText = "varPath"; - varPathDataGridViewTextBoxColumn.MinimumWidth = 6; - varPathDataGridViewTextBoxColumn.Name = "varPathDataGridViewTextBoxColumn"; - varPathDataGridViewTextBoxColumn.ReadOnly = true; - varPathDataGridViewTextBoxColumn.Visible = false; - varPathDataGridViewTextBoxColumn.Width = 125; - // - // creatorNameDataGridViewTextBoxColumn - // - creatorNameDataGridViewTextBoxColumn.DataPropertyName = "creatorName"; - creatorNameDataGridViewTextBoxColumn.HeaderText = "creatorName"; - creatorNameDataGridViewTextBoxColumn.MinimumWidth = 6; - creatorNameDataGridViewTextBoxColumn.Name = "creatorNameDataGridViewTextBoxColumn"; - creatorNameDataGridViewTextBoxColumn.ReadOnly = true; - creatorNameDataGridViewTextBoxColumn.Visible = false; - creatorNameDataGridViewTextBoxColumn.Width = 125; - // - // packageNameDataGridViewTextBoxColumn - // - packageNameDataGridViewTextBoxColumn.DataPropertyName = "packageName"; - packageNameDataGridViewTextBoxColumn.HeaderText = "packageName"; - packageNameDataGridViewTextBoxColumn.MinimumWidth = 6; - packageNameDataGridViewTextBoxColumn.Name = "packageNameDataGridViewTextBoxColumn"; - packageNameDataGridViewTextBoxColumn.ReadOnly = true; - packageNameDataGridViewTextBoxColumn.Visible = false; - packageNameDataGridViewTextBoxColumn.Width = 125; - // - // versionDataGridViewTextBoxColumn - // - versionDataGridViewTextBoxColumn.DataPropertyName = "version"; - versionDataGridViewTextBoxColumn.HeaderText = "version"; - versionDataGridViewTextBoxColumn.MinimumWidth = 6; - versionDataGridViewTextBoxColumn.Name = "versionDataGridViewTextBoxColumn"; - versionDataGridViewTextBoxColumn.ReadOnly = true; - versionDataGridViewTextBoxColumn.Visible = false; - versionDataGridViewTextBoxColumn.Width = 125; - // - // metaDateDataGridViewTextBoxColumn - // - metaDateDataGridViewTextBoxColumn.DataPropertyName = "metaDate"; - metaDateDataGridViewTextBoxColumn.HeaderText = "Date"; - metaDateDataGridViewTextBoxColumn.MinimumWidth = 6; - metaDateDataGridViewTextBoxColumn.Name = "metaDateDataGridViewTextBoxColumn"; - metaDateDataGridViewTextBoxColumn.ReadOnly = true; - metaDateDataGridViewTextBoxColumn.Width = 105; - // - // varDateDataGridViewTextBoxColumn - // - varDateDataGridViewTextBoxColumn.DataPropertyName = "varDate"; - varDateDataGridViewTextBoxColumn.HeaderText = "VarDate"; - varDateDataGridViewTextBoxColumn.MinimumWidth = 6; - varDateDataGridViewTextBoxColumn.Name = "varDateDataGridViewTextBoxColumn"; - varDateDataGridViewTextBoxColumn.ReadOnly = true; - varDateDataGridViewTextBoxColumn.Width = 105; - // - // scenesDataGridViewTextBoxColumn - // - scenesDataGridViewTextBoxColumn.DataPropertyName = "scenes"; - scenesDataGridViewTextBoxColumn.HeaderText = "scenes"; - scenesDataGridViewTextBoxColumn.MinimumWidth = 6; - scenesDataGridViewTextBoxColumn.Name = "scenesDataGridViewTextBoxColumn"; - scenesDataGridViewTextBoxColumn.ReadOnly = true; - scenesDataGridViewTextBoxColumn.Width = 45; - // - // looksDataGridViewTextBoxColumn - // - looksDataGridViewTextBoxColumn.DataPropertyName = "looks"; - looksDataGridViewTextBoxColumn.HeaderText = "looks"; - looksDataGridViewTextBoxColumn.MinimumWidth = 6; - looksDataGridViewTextBoxColumn.Name = "looksDataGridViewTextBoxColumn"; - looksDataGridViewTextBoxColumn.ReadOnly = true; - looksDataGridViewTextBoxColumn.Width = 45; - // - // clothingDataGridViewTextBoxColumn - // - clothingDataGridViewTextBoxColumn.DataPropertyName = "clothing"; - clothingDataGridViewTextBoxColumn.HeaderText = "clothes"; - clothingDataGridViewTextBoxColumn.MinimumWidth = 6; - clothingDataGridViewTextBoxColumn.Name = "clothingDataGridViewTextBoxColumn"; - clothingDataGridViewTextBoxColumn.ReadOnly = true; - clothingDataGridViewTextBoxColumn.Width = 45; - // - // hairstyleDataGridViewTextBoxColumn - // - hairstyleDataGridViewTextBoxColumn.DataPropertyName = "hairstyle"; - hairstyleDataGridViewTextBoxColumn.HeaderText = "hairs"; - hairstyleDataGridViewTextBoxColumn.MinimumWidth = 6; - hairstyleDataGridViewTextBoxColumn.Name = "hairstyleDataGridViewTextBoxColumn"; - hairstyleDataGridViewTextBoxColumn.ReadOnly = true; - hairstyleDataGridViewTextBoxColumn.Width = 45; - // - // pluginsDataGridViewTextBoxColumn - // - pluginsDataGridViewTextBoxColumn.DataPropertyName = "plugins"; - pluginsDataGridViewTextBoxColumn.HeaderText = "plugins"; - pluginsDataGridViewTextBoxColumn.MinimumWidth = 6; - pluginsDataGridViewTextBoxColumn.Name = "pluginsDataGridViewTextBoxColumn"; - pluginsDataGridViewTextBoxColumn.ReadOnly = true; - pluginsDataGridViewTextBoxColumn.Width = 45; - // - // assetsDataGridViewTextBoxColumn - // - assetsDataGridViewTextBoxColumn.DataPropertyName = "assets"; - assetsDataGridViewTextBoxColumn.HeaderText = "assets"; - assetsDataGridViewTextBoxColumn.MinimumWidth = 6; - assetsDataGridViewTextBoxColumn.Name = "assetsDataGridViewTextBoxColumn"; - assetsDataGridViewTextBoxColumn.ReadOnly = true; - assetsDataGridViewTextBoxColumn.Width = 45; - // - // morphs - // - morphs.DataPropertyName = "morphs"; - morphs.HeaderText = "morphs"; - morphs.MinimumWidth = 6; - morphs.Name = "morphs"; - morphs.ReadOnly = true; - morphs.Width = 45; - // - // pose - // - pose.DataPropertyName = "pose"; - pose.HeaderText = "pose"; - pose.MinimumWidth = 6; - pose.Name = "pose"; - pose.ReadOnly = true; - pose.Width = 45; - // - // skin - // - skin.DataPropertyName = "skin"; - skin.HeaderText = "skin"; - skin.MinimumWidth = 6; - skin.Name = "skin"; - skin.ReadOnly = true; - skin.Width = 45; - // - // disabledDataGridViewCheckBoxColumn - // - disabledDataGridViewCheckBoxColumn.DataPropertyName = "Disabled"; - disabledDataGridViewCheckBoxColumn.HeaderText = "Disabled"; - disabledDataGridViewCheckBoxColumn.MinimumWidth = 6; - disabledDataGridViewCheckBoxColumn.Name = "disabledDataGridViewCheckBoxColumn"; - disabledDataGridViewCheckBoxColumn.ReadOnly = true; - disabledDataGridViewCheckBoxColumn.Visible = false; - disabledDataGridViewCheckBoxColumn.Width = 68; - // - // varsViewBindingSource - // - varsViewBindingSource.DataMember = "varsView"; - // DataSource will be set in code using EF Core - // varsViewBindingSource.Sort = "metaDate Desc"; // Moved to Form1_Load to avoid .NET 9 initialization issues - // - // flowLayoutPanel2 - // - flowLayoutPanel2.AutoScroll = true; - flowLayoutPanel2.AutoSize = true; - flowLayoutPanel2.AutoSizeMode = AutoSizeMode.GrowAndShrink; - flowLayoutPanel2.Controls.Add(buttonInstall); - flowLayoutPanel2.Controls.Add(buttonUninstallSels); - flowLayoutPanel2.Controls.Add(buttonDelete); - flowLayoutPanel2.Controls.Add(buttonMove); - flowLayoutPanel2.Controls.Add(buttonExpInsted); - flowLayoutPanel2.Controls.Add(buttonInstFormTxt); - flowLayoutPanel2.Controls.Add(buttonHub); - flowLayoutPanel2.Controls.Add(buttonClearLog); - flowLayoutPanel2.Dock = DockStyle.Bottom; - flowLayoutPanel2.ForeColor = SystemColors.ActiveCaptionText; - flowLayoutPanel2.Location = new Point(0, 504); - flowLayoutPanel2.Name = "flowLayoutPanel2"; - flowLayoutPanel2.Size = new Size(836, 48); - flowLayoutPanel2.TabIndex = 9; - // - // buttonInstall - // - buttonInstall.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonInstall.ForeColor = SystemColors.Highlight; - buttonInstall.Location = new Point(3, 3); - buttonInstall.Name = "buttonInstall"; - buttonInstall.Size = new Size(70, 42); - buttonInstall.TabIndex = 0; - buttonInstall.Text = "Install Selected"; - toolTip1.SetToolTip(buttonInstall, "Install Selected vars and Dependencies "); - buttonInstall.UseVisualStyleBackColor = true; - buttonInstall.Click += buttonInstall_Click; - // - // buttonUninstallSels - // - buttonUninstallSels.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonUninstallSels.ForeColor = Color.IndianRed; - buttonUninstallSels.Location = new Point(79, 3); - buttonUninstallSels.Name = "buttonUninstallSels"; - buttonUninstallSels.Size = new Size(70, 42); - buttonUninstallSels.TabIndex = 1; - buttonUninstallSels.Text = "UnInst Selected"; - toolTip1.SetToolTip(buttonUninstallSels, "Uninstall Selected vars and Dependent impact items"); - buttonUninstallSels.UseVisualStyleBackColor = true; - buttonUninstallSels.Click += buttonUninstallSels_Click; - // - // buttonDelete - // - buttonDelete.BackColor = Color.Red; - buttonDelete.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonDelete.ForeColor = Color.Yellow; - buttonDelete.Location = new Point(155, 3); - buttonDelete.Name = "buttonDelete"; - buttonDelete.Size = new Size(70, 42); - buttonDelete.TabIndex = 2; - buttonDelete.Text = "Delete Selected"; - toolTip1.SetToolTip(buttonDelete, "Delete Selected vars and Dependent impact items"); - buttonDelete.UseVisualStyleBackColor = false; - buttonDelete.Click += buttonDelete_Click; - // - // buttonMove - // - buttonMove.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonMove.Location = new Point(231, 3); - buttonMove.Name = "buttonMove"; - buttonMove.Size = new Size(70, 42); - buttonMove.TabIndex = 3; - buttonMove.Text = "Move SeleLinks To SubDir"; - buttonMove.UseVisualStyleBackColor = false; - buttonMove.Click += buttonMove_Click; - // - // buttonExpInsted - // - buttonExpInsted.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonExpInsted.Location = new Point(307, 3); - buttonExpInsted.Name = "buttonExpInsted"; - buttonExpInsted.Size = new Size(70, 42); - buttonExpInsted.TabIndex = 4; - buttonExpInsted.Text = "Export Insted"; - toolTip1.SetToolTip(buttonExpInsted, "Export Installed vars to text file."); - buttonExpInsted.UseVisualStyleBackColor = false; - buttonExpInsted.Click += buttonExpInsted_Click; - // - // buttonInstFormTxt - // - buttonInstFormTxt.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonInstFormTxt.Location = new Point(383, 3); - buttonInstFormTxt.Name = "buttonInstFormTxt"; - buttonInstFormTxt.Size = new Size(70, 42); - buttonInstFormTxt.TabIndex = 5; - buttonInstFormTxt.Text = "Install By TXT"; - toolTip1.SetToolTip(buttonInstFormTxt, "install vars from txt file."); - buttonInstFormTxt.UseVisualStyleBackColor = true; - buttonInstFormTxt.Click += buttonInstFormTxt_Click; - // - // buttonHub - // - buttonHub.BackColor = Color.DarkSlateGray; - buttonHub.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonHub.ForeColor = SystemColors.HighlightText; - buttonHub.Image = Properties.Resources.vam_logo_hub; - buttonHub.Location = new Point(459, 3); - buttonHub.Name = "buttonHub"; - buttonHub.Size = new Size(118, 42); - buttonHub.TabIndex = 5; - buttonHub.Text = "Brow"; - buttonHub.TextAlign = ContentAlignment.MiddleRight; - buttonHub.TextImageRelation = TextImageRelation.ImageBeforeText; - toolTip1.SetToolTip(buttonHub, "Hub browsing, combined with analysis of all the var files you have."); - buttonHub.UseVisualStyleBackColor = false; - buttonHub.Click += buttonHub_Click; - // - // buttonClearLog - // - buttonClearLog.Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - buttonClearLog.Location = new Point(583, 3); - buttonClearLog.Name = "buttonClearLog"; - buttonClearLog.Size = new Size(90, 42); - buttonClearLog.TabIndex = 6; - buttonClearLog.Text = "ClearLog"; - toolTip1.SetToolTip(buttonClearLog, "Clear the log list."); - buttonClearLog.UseVisualStyleBackColor = true; - buttonClearLog.Click += buttonClearLog_Click; - // - // flowLayoutPanel1 - // - flowLayoutPanel1.AutoScroll = true; - flowLayoutPanel1.AutoSize = true; - flowLayoutPanel1.Controls.Add(varsBindingNavigator); - flowLayoutPanel1.Controls.Add(label1); - flowLayoutPanel1.Controls.Add(comboBoxCreater); - flowLayoutPanel1.Controls.Add(label2); - flowLayoutPanel1.Controls.Add(textBoxFilter); - flowLayoutPanel1.Controls.Add(checkBoxInstalled); - flowLayoutPanel1.Controls.Add(buttonResetFilter); - flowLayoutPanel1.Dock = DockStyle.Top; - flowLayoutPanel1.Location = new Point(0, 0); - flowLayoutPanel1.Name = "flowLayoutPanel1"; - flowLayoutPanel1.Size = new Size(836, 70); - flowLayoutPanel1.TabIndex = 6; - // - // varsBindingNavigator - // - varsBindingNavigator.AddNewItem = null; - varsBindingNavigator.Anchor = AnchorStyles.Left; - varsBindingNavigator.BindingSource = varsViewBindingSource; - varsBindingNavigator.CountItem = bindingNavigatorCountItem; - varsBindingNavigator.DeleteItem = null; - varsBindingNavigator.Dock = DockStyle.None; - varsBindingNavigator.ImageScalingSize = new Size(20, 20); - varsBindingNavigator.Items.AddRange(new ToolStripItem[] { bindingNavigatorMoveFirstItem, bindingNavigatorMovePreviousItem, bindingNavigatorSeparator, bindingNavigatorPositionItem, bindingNavigatorCountItem, bindingNavigatorSeparator1, bindingNavigatorMoveNextItem, bindingNavigatorMoveLastItem, bindingNavigatorSeparator2 }); - varsBindingNavigator.Location = new Point(0, 3); - varsBindingNavigator.MoveFirstItem = bindingNavigatorMoveFirstItem; - varsBindingNavigator.MoveLastItem = bindingNavigatorMoveLastItem; - varsBindingNavigator.MoveNextItem = bindingNavigatorMoveNextItem; - varsBindingNavigator.MovePreviousItem = bindingNavigatorMovePreviousItem; - varsBindingNavigator.Name = "varsBindingNavigator"; - varsBindingNavigator.PositionItem = bindingNavigatorPositionItem; - varsBindingNavigator.Size = new Size(281, 29); - varsBindingNavigator.TabIndex = 0; - varsBindingNavigator.Text = "bindingNavigator1"; - // - // bindingNavigatorCountItem - // - bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; - bindingNavigatorCountItem.Size = new Size(55, 24); - bindingNavigatorCountItem.Text = "of {0}"; - bindingNavigatorCountItem.ToolTipText = "Total number"; - // - // bindingNavigatorMoveFirstItem - // - bindingNavigatorMoveFirstItem.DisplayStyle = ToolStripItemDisplayStyle.Image; - bindingNavigatorMoveFirstItem.Image = (Image)resources.GetObject("bindingNavigatorMoveFirstItem.Image"); - bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; - bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; - bindingNavigatorMoveFirstItem.Size = new Size(34, 24); - bindingNavigatorMoveFirstItem.Text = "First"; - // - // bindingNavigatorMovePreviousItem - // - bindingNavigatorMovePreviousItem.DisplayStyle = ToolStripItemDisplayStyle.Image; - bindingNavigatorMovePreviousItem.Image = (Image)resources.GetObject("bindingNavigatorMovePreviousItem.Image"); - bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; - bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; - bindingNavigatorMovePreviousItem.Size = new Size(34, 24); - bindingNavigatorMovePreviousItem.Text = "Previous"; - // - // bindingNavigatorSeparator - // - bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; - bindingNavigatorSeparator.Size = new Size(6, 29); - // - // bindingNavigatorPositionItem - // - bindingNavigatorPositionItem.AccessibleName = "浣嶇疆"; - bindingNavigatorPositionItem.AutoSize = false; - bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; - bindingNavigatorPositionItem.Size = new Size(50, 27); - bindingNavigatorPositionItem.Text = "0"; - bindingNavigatorPositionItem.ToolTipText = "Current"; - // - // bindingNavigatorSeparator1 - // - bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; - bindingNavigatorSeparator1.Size = new Size(6, 29); - // - // bindingNavigatorMoveNextItem - // - bindingNavigatorMoveNextItem.DisplayStyle = ToolStripItemDisplayStyle.Image; - bindingNavigatorMoveNextItem.Image = (Image)resources.GetObject("bindingNavigatorMoveNextItem.Image"); - bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; - bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; - bindingNavigatorMoveNextItem.Size = new Size(34, 24); - bindingNavigatorMoveNextItem.Text = "Next"; - // - // bindingNavigatorMoveLastItem - // - bindingNavigatorMoveLastItem.DisplayStyle = ToolStripItemDisplayStyle.Image; - bindingNavigatorMoveLastItem.Image = (Image)resources.GetObject("bindingNavigatorMoveLastItem.Image"); - bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; - bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; - bindingNavigatorMoveLastItem.Size = new Size(34, 24); - bindingNavigatorMoveLastItem.Text = "Last"; - // - // bindingNavigatorSeparator2 - // - bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; - bindingNavigatorSeparator2.Size = new Size(6, 29); - // - // label1 - // - label1.Anchor = AnchorStyles.Left; - label1.AutoSize = true; - label1.Location = new Point(284, 7); - label1.Name = "label1"; - label1.Size = new Size(73, 21); - label1.TabIndex = 1; - label1.Text = "Creator:"; - // - // comboBoxCreater - // - comboBoxCreater.AllowDrop = true; - comboBoxCreater.Anchor = AnchorStyles.Left; - comboBoxCreater.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxCreater.FormattingEnabled = true; - comboBoxCreater.Location = new Point(363, 3); - comboBoxCreater.Name = "comboBoxCreater"; - comboBoxCreater.Size = new Size(179, 29); - comboBoxCreater.Sorted = true; - comboBoxCreater.TabIndex = 2; - toolTip1.SetToolTip(comboBoxCreater, "Filter by creator"); - comboBoxCreater.SelectedIndexChanged += comboBoxCreater_SelectedIndexChanged; - // - // label2 - // - label2.Anchor = AnchorStyles.Left; - label2.AutoSize = true; - label2.Location = new Point(548, 7); - label2.Name = "label2"; - label2.Size = new Size(123, 21); - label2.TabIndex = 3; - label2.Text = "packageName:"; - // - // textBoxFilter - // - textBoxFilter.Anchor = AnchorStyles.Left; - textBoxFilter.Location = new Point(677, 3); - textBoxFilter.Name = "textBoxFilter"; - textBoxFilter.Size = new Size(75, 29); - textBoxFilter.TabIndex = 4; - toolTip1.SetToolTip(textBoxFilter, "Filter by packageName"); - textBoxFilter.TextChanged += textBoxFilter_TextChanged; - // - // checkBoxInstalled - // - checkBoxInstalled.Anchor = AnchorStyles.Left; - checkBoxInstalled.AutoSize = true; - checkBoxInstalled.Checked = true; - checkBoxInstalled.CheckState = CheckState.Indeterminate; - checkBoxInstalled.Location = new Point(3, 40); - checkBoxInstalled.Name = "checkBoxInstalled"; - checkBoxInstalled.Size = new Size(104, 25); - checkBoxInstalled.TabIndex = 5; - checkBoxInstalled.Text = "Installed"; - checkBoxInstalled.ThreeState = true; - toolTip1.SetToolTip(checkBoxInstalled, "Filter by installation status"); - checkBoxInstalled.UseVisualStyleBackColor = true; - checkBoxInstalled.CheckStateChanged += checkBoxInstalled_CheckStateChanged; - // - // buttonResetFilter - // - buttonResetFilter.Location = new Point(113, 38); - buttonResetFilter.Name = "buttonResetFilter"; - buttonResetFilter.Size = new Size(94, 29); - buttonResetFilter.TabIndex = 6; - buttonResetFilter.Text = "Reset"; - buttonResetFilter.UseVisualStyleBackColor = true; - buttonResetFilter.Click += buttonResetFilter_Click; - // - // tableLayoutPanelPreview - // - tableLayoutPanelPreview.Anchor = AnchorStyles.Left; - tableLayoutPanelPreview.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset; - tableLayoutPanelPreview.ColumnCount = 3; - tableLayoutPanelPreview.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 80F)); - tableLayoutPanelPreview.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); - tableLayoutPanelPreview.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 130F)); - tableLayoutPanelPreview.Controls.Add(pictureBoxPreview, 0, 0); - tableLayoutPanelPreview.Controls.Add(labelPreviewVarName, 1, 1); - tableLayoutPanelPreview.Controls.Add(buttonLocate, 0, 1); - tableLayoutPanelPreview.Controls.Add(panel3, 0, 2); - tableLayoutPanelPreview.Controls.Add(buttonpreviewinstall, 2, 1); - tableLayoutPanelPreview.Location = new Point(6, 62); - tableLayoutPanelPreview.Name = "tableLayoutPanelPreview"; - tableLayoutPanelPreview.RowCount = 3; - tableLayoutPanelPreview.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); - tableLayoutPanelPreview.RowStyles.Add(new RowStyle(SizeType.Absolute, 37F)); - tableLayoutPanelPreview.RowStyles.Add(new RowStyle(SizeType.Absolute, 85F)); - tableLayoutPanelPreview.Size = new Size(540, 238); - tableLayoutPanelPreview.TabIndex = 1; - tableLayoutPanelPreview.Visible = false; - // - // pictureBoxPreview - // - pictureBoxPreview.BackgroundImageLayout = ImageLayout.Stretch; - tableLayoutPanelPreview.SetColumnSpan(pictureBoxPreview, 3); - pictureBoxPreview.Dock = DockStyle.Fill; - pictureBoxPreview.Location = new Point(5, 5); - pictureBoxPreview.Name = "pictureBoxPreview"; - pictureBoxPreview.Size = new Size(530, 102); - pictureBoxPreview.SizeMode = PictureBoxSizeMode.Zoom; - pictureBoxPreview.TabIndex = 1; - pictureBoxPreview.TabStop = false; - pictureBoxPreview.Click += pictureBoxPreview_Click; - // - // labelPreviewVarName - // - labelPreviewVarName.Dock = DockStyle.Fill; - labelPreviewVarName.Font = new Font("Cambria", 10.5F, FontStyle.Regular, GraphicsUnit.Point); - labelPreviewVarName.ForeColor = SystemColors.ControlText; - labelPreviewVarName.Location = new Point(87, 112); - labelPreviewVarName.Name = "labelPreviewVarName"; - labelPreviewVarName.Size = new Size(316, 37); - labelPreviewVarName.TabIndex = 2; - labelPreviewVarName.Text = "a.a.1"; - labelPreviewVarName.TextAlign = ContentAlignment.MiddleCenter; - // - // buttonLocate - // - buttonLocate.Dock = DockStyle.Fill; - buttonLocate.ForeColor = SystemColors.ControlText; - buttonLocate.Location = new Point(5, 115); - buttonLocate.Name = "buttonLocate"; - buttonLocate.Size = new Size(74, 31); - buttonLocate.TabIndex = 0; - buttonLocate.Text = "Locate"; - toolTip1.SetToolTip(buttonLocate, "Locate the current var file in Explorer"); - buttonLocate.UseVisualStyleBackColor = true; - buttonLocate.Click += buttonLocate_Click; - // - // panel3 - // - tableLayoutPanelPreview.SetColumnSpan(panel3, 3); - panel3.Controls.Add(buttonLoad); - panel3.Controls.Add(checkBoxForMale); - panel3.Controls.Add(checkBoxIgnoreGender); - panel3.Controls.Add(groupBoxPersonOrder); - panel3.Controls.Add(checkBoxMerge); - panel3.Controls.Add(buttonClearCache); - panel3.Controls.Add(buttonAnalysis); - panel3.Dock = DockStyle.Fill; - panel3.ForeColor = SystemColors.ActiveCaption; - panel3.Location = new Point(5, 154); - panel3.Name = "panel3"; - panel3.Size = new Size(530, 79); - panel3.TabIndex = 0; - // - // buttonLoad - // - buttonLoad.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonLoad.ForeColor = Color.SeaGreen; - buttonLoad.Location = new Point(438, 34); - buttonLoad.Name = "buttonLoad"; - buttonLoad.Size = new Size(83, 40); - buttonLoad.TabIndex = 0; - buttonLoad.Text = "Load"; - toolTip1.SetToolTip(buttonLoad, "Load to VAM,Add loadscene.cs as session plugin in VAM first."); - buttonLoad.UseVisualStyleBackColor = true; - buttonLoad.Click += buttonLoad_Click; - // - // checkBoxForMale - // - checkBoxForMale.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - checkBoxForMale.ForeColor = Color.SeaGreen; - checkBoxForMale.Location = new Point(358, 31); - checkBoxForMale.Name = "checkBoxForMale"; - checkBoxForMale.Size = new Size(118, 21); - checkBoxForMale.TabIndex = 15; - checkBoxForMale.Text = "For Male"; - toolTip1.SetToolTip(checkBoxForMale, "Load to male atom."); - checkBoxForMale.UseVisualStyleBackColor = true; - // - // checkBoxIgnoreGender - // - checkBoxIgnoreGender.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - checkBoxIgnoreGender.ForeColor = Color.SeaGreen; - checkBoxIgnoreGender.Location = new Point(358, 7); - checkBoxIgnoreGender.Name = "checkBoxIgnoreGender"; - checkBoxIgnoreGender.Size = new Size(118, 21); - checkBoxIgnoreGender.TabIndex = 14; - checkBoxIgnoreGender.Text = "Ignore gender"; - toolTip1.SetToolTip(checkBoxIgnoreGender, "futa are seen as female in this preset and VAM."); - checkBoxIgnoreGender.UseVisualStyleBackColor = true; - // - // groupBoxPersonOrder - // - groupBoxPersonOrder.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder6); - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder8); - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder7); - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder5); - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder4); - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder3); - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder2); - groupBoxPersonOrder.Controls.Add(radioButtonPersonOrder1); - groupBoxPersonOrder.ForeColor = Color.SeaGreen; - groupBoxPersonOrder.Location = new Point(200, 3); - groupBoxPersonOrder.Name = "groupBoxPersonOrder"; - groupBoxPersonOrder.Size = new Size(153, 72); - groupBoxPersonOrder.TabIndex = 13; - groupBoxPersonOrder.TabStop = false; - groupBoxPersonOrder.Text = "Person Order"; - toolTip1.SetToolTip(groupBoxPersonOrder, "Person atom order in VAM"); - // - // radioButtonPersonOrder6 - // - radioButtonPersonOrder6.AutoSize = true; - radioButtonPersonOrder6.Location = new Point(44, 45); - radioButtonPersonOrder6.Name = "radioButtonPersonOrder6"; - radioButtonPersonOrder6.Size = new Size(45, 25); - radioButtonPersonOrder6.TabIndex = 13; - radioButtonPersonOrder6.Text = "6"; - radioButtonPersonOrder6.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder8 - // - radioButtonPersonOrder8.AutoSize = true; - radioButtonPersonOrder8.Location = new Point(117, 45); - radioButtonPersonOrder8.Name = "radioButtonPersonOrder8"; - radioButtonPersonOrder8.Size = new Size(45, 25); - radioButtonPersonOrder8.TabIndex = 13; - radioButtonPersonOrder8.Text = "8"; - radioButtonPersonOrder8.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder7 - // - radioButtonPersonOrder7.AutoSize = true; - radioButtonPersonOrder7.Location = new Point(82, 45); - radioButtonPersonOrder7.Name = "radioButtonPersonOrder7"; - radioButtonPersonOrder7.Size = new Size(45, 25); - radioButtonPersonOrder7.TabIndex = 13; - radioButtonPersonOrder7.Text = "7"; - radioButtonPersonOrder7.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder5 - // - radioButtonPersonOrder5.AutoSize = true; - radioButtonPersonOrder5.Location = new Point(6, 45); - radioButtonPersonOrder5.Name = "radioButtonPersonOrder5"; - radioButtonPersonOrder5.Size = new Size(45, 25); - radioButtonPersonOrder5.TabIndex = 13; - radioButtonPersonOrder5.Text = "5"; - radioButtonPersonOrder5.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder4 - // - radioButtonPersonOrder4.AutoSize = true; - radioButtonPersonOrder4.Location = new Point(117, 20); - radioButtonPersonOrder4.Name = "radioButtonPersonOrder4"; - radioButtonPersonOrder4.Size = new Size(45, 25); - radioButtonPersonOrder4.TabIndex = 13; - radioButtonPersonOrder4.Text = "4"; - radioButtonPersonOrder4.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder3 - // - radioButtonPersonOrder3.AutoSize = true; - radioButtonPersonOrder3.Location = new Point(82, 20); - radioButtonPersonOrder3.Name = "radioButtonPersonOrder3"; - radioButtonPersonOrder3.Size = new Size(45, 25); - radioButtonPersonOrder3.TabIndex = 13; - radioButtonPersonOrder3.Text = "3"; - radioButtonPersonOrder3.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder2 - // - radioButtonPersonOrder2.AutoSize = true; - radioButtonPersonOrder2.Location = new Point(44, 20); - radioButtonPersonOrder2.Name = "radioButtonPersonOrder2"; - radioButtonPersonOrder2.Size = new Size(45, 25); - radioButtonPersonOrder2.TabIndex = 13; - radioButtonPersonOrder2.Text = "2"; - radioButtonPersonOrder2.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder1 - // - radioButtonPersonOrder1.AutoSize = true; - radioButtonPersonOrder1.Checked = true; - radioButtonPersonOrder1.Location = new Point(6, 20); - radioButtonPersonOrder1.Name = "radioButtonPersonOrder1"; - radioButtonPersonOrder1.Size = new Size(45, 25); - radioButtonPersonOrder1.TabIndex = 13; - radioButtonPersonOrder1.TabStop = true; - radioButtonPersonOrder1.Text = "1"; - radioButtonPersonOrder1.UseVisualStyleBackColor = true; - // - // checkBoxMerge - // - checkBoxMerge.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - checkBoxMerge.ForeColor = Color.SeaGreen; - checkBoxMerge.Location = new Point(358, 55); - checkBoxMerge.Name = "checkBoxMerge"; - checkBoxMerge.Size = new Size(118, 21); - checkBoxMerge.TabIndex = 3; - checkBoxMerge.Text = "Merge"; - toolTip1.SetToolTip(checkBoxMerge, "Merge Load"); - checkBoxMerge.UseVisualStyleBackColor = true; - // - // buttonClearCache - // - buttonClearCache.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonClearCache.ForeColor = Color.Red; - buttonClearCache.Location = new Point(92, 34); - buttonClearCache.Name = "buttonClearCache"; - buttonClearCache.Size = new Size(102, 40); - buttonClearCache.TabIndex = 0; - buttonClearCache.Text = "Clear Cache"; - buttonClearCache.UseVisualStyleBackColor = true; - buttonClearCache.Click += buttonClearCache_Click; - // - // buttonAnalysis - // - buttonAnalysis.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonAnalysis.ForeColor = SystemColors.HotTrack; - buttonAnalysis.Location = new Point(3, 34); - buttonAnalysis.Name = "buttonAnalysis"; - buttonAnalysis.Size = new Size(83, 40); - buttonAnalysis.TabIndex = 0; - buttonAnalysis.Text = "Analysis"; - toolTip1.SetToolTip(buttonAnalysis, "Analyze the atoms in the scene and load to running VAM,Add loadscene.cs as session plugin in VAM first."); - buttonAnalysis.UseVisualStyleBackColor = true; - buttonAnalysis.Click += buttonAnalysis_Click; - // - // buttonpreviewinstall - // - buttonpreviewinstall.Dock = DockStyle.Fill; - buttonpreviewinstall.ForeColor = SystemColors.ControlText; - buttonpreviewinstall.Location = new Point(411, 115); - buttonpreviewinstall.Name = "buttonpreviewinstall"; - buttonpreviewinstall.Size = new Size(124, 31); - buttonpreviewinstall.TabIndex = 0; - buttonpreviewinstall.Text = "Install"; - toolTip1.SetToolTip(buttonpreviewinstall, "Install var and Dependencies "); - buttonpreviewinstall.UseVisualStyleBackColor = true; - buttonpreviewinstall.Click += buttonpreviewinstall_Click; - // - // listViewPreviewPics - // - listViewPreviewPics.Dock = DockStyle.Fill; - listViewPreviewPics.LargeImageList = imageListPreviewPics; - listViewPreviewPics.Location = new Point(0, 35); - listViewPreviewPics.MultiSelect = false; - listViewPreviewPics.Name = "listViewPreviewPics"; - listViewPreviewPics.Size = new Size(535, 517); - listViewPreviewPics.TabIndex = 0; - toolTip1.SetToolTip(listViewPreviewPics, "Preview of selected vars,click to display a larger image"); - listViewPreviewPics.UseCompatibleStateImageBehavior = false; - listViewPreviewPics.VirtualMode = true; - listViewPreviewPics.RetrieveVirtualItem += listViewPreviewPics_RetrieveVirtualItem; - listViewPreviewPics.Click += listViewPreviewPics_Click; - // - // imageListPreviewPics - // - imageListPreviewPics.ColorDepth = ColorDepth.Depth32Bit; - imageListPreviewPics.ImageSize = new Size(128, 128); - imageListPreviewPics.TransparentColor = Color.Transparent; - // - // flowLayoutPanel3 - // - flowLayoutPanel3.AutoScroll = true; - flowLayoutPanel3.AutoSize = true; - flowLayoutPanel3.AutoSizeMode = AutoSizeMode.GrowAndShrink; - flowLayoutPanel3.Controls.Add(toolStripPreview); - flowLayoutPanel3.Controls.Add(label4); - flowLayoutPanel3.Controls.Add(comboBoxPreviewType); - flowLayoutPanel3.Controls.Add(checkBoxPreviewTypeLoadable); - flowLayoutPanel3.Dock = DockStyle.Top; - flowLayoutPanel3.Location = new Point(0, 0); - flowLayoutPanel3.Name = "flowLayoutPanel3"; - flowLayoutPanel3.Size = new Size(535, 35); - flowLayoutPanel3.TabIndex = 10; - // - // toolStripPreview - // - toolStripPreview.Dock = DockStyle.None; - toolStripPreview.ImageScalingSize = new Size(20, 20); - toolStripPreview.Items.AddRange(new ToolStripItem[] { toolStripButtonPreviewFirst, toolStripButtonPreviewPrev, toolStripLabelPreviewItemIndex, toolStripLabelPreviewCountItem, toolStripButtonPreviewNext, toolStripButtonPreviewLast }); - toolStripPreview.Location = new Point(0, 0); - toolStripPreview.Name = "toolStripPreview"; - toolStripPreview.Size = new Size(228, 29); - toolStripPreview.TabIndex = 0; - toolStripPreview.Text = "toolStrip1"; - // - // toolStripButtonPreviewFirst - // - toolStripButtonPreviewFirst.DisplayStyle = ToolStripItemDisplayStyle.Image; - toolStripButtonPreviewFirst.Image = (Image)resources.GetObject("toolStripButtonPreviewFirst.Image"); - toolStripButtonPreviewFirst.Name = "toolStripButtonPreviewFirst"; - toolStripButtonPreviewFirst.RightToLeftAutoMirrorImage = true; - toolStripButtonPreviewFirst.Size = new Size(34, 24); - toolStripButtonPreviewFirst.Text = "First"; - toolStripButtonPreviewFirst.Click += toolStripButtonPreviewFirst_Click; - // - // toolStripButtonPreviewPrev - // - toolStripButtonPreviewPrev.DisplayStyle = ToolStripItemDisplayStyle.Image; - toolStripButtonPreviewPrev.Image = (Image)resources.GetObject("toolStripButtonPreviewPrev.Image"); - toolStripButtonPreviewPrev.Name = "toolStripButtonPreviewPrev"; - toolStripButtonPreviewPrev.RightToLeftAutoMirrorImage = true; - toolStripButtonPreviewPrev.Size = new Size(34, 24); - toolStripButtonPreviewPrev.Text = "Move to previous"; - toolStripButtonPreviewPrev.Click += toolStripButtonPreviewPrev_Click; - // - // toolStripLabelPreviewItemIndex - // - toolStripLabelPreviewItemIndex.Name = "toolStripLabelPreviewItemIndex"; - toolStripLabelPreviewItemIndex.Size = new Size(33, 24); - toolStripLabelPreviewItemIndex.Text = "{0}"; - // - // toolStripLabelPreviewCountItem - // - toolStripLabelPreviewCountItem.Name = "toolStripLabelPreviewCountItem"; - toolStripLabelPreviewCountItem.Size = new Size(41, 24); - toolStripLabelPreviewCountItem.Text = "/{0}"; - // - // toolStripButtonPreviewNext - // - toolStripButtonPreviewNext.DisplayStyle = ToolStripItemDisplayStyle.Image; - toolStripButtonPreviewNext.Image = (Image)resources.GetObject("toolStripButtonPreviewNext.Image"); - toolStripButtonPreviewNext.Name = "toolStripButtonPreviewNext"; - toolStripButtonPreviewNext.RightToLeftAutoMirrorImage = true; - toolStripButtonPreviewNext.Size = new Size(34, 24); - toolStripButtonPreviewNext.Text = "Next"; - toolStripButtonPreviewNext.Click += toolStripButtonPreviewNext_Click; - // - // toolStripButtonPreviewLast - // - toolStripButtonPreviewLast.DisplayStyle = ToolStripItemDisplayStyle.Image; - toolStripButtonPreviewLast.Image = (Image)resources.GetObject("toolStripButtonPreviewLast.Image"); - toolStripButtonPreviewLast.Name = "toolStripButtonPreviewLast"; - toolStripButtonPreviewLast.RightToLeftAutoMirrorImage = true; - toolStripButtonPreviewLast.Size = new Size(34, 24); - toolStripButtonPreviewLast.Text = "Last"; - toolStripButtonPreviewLast.Click += toolStripButtonPreviewLast_Click; - // - // label4 - // - label4.Anchor = AnchorStyles.Left; - label4.AutoSize = true; - label4.Location = new Point(231, 7); - label4.Name = "label4"; - label4.Size = new Size(117, 21); - label4.TabIndex = 1; - label4.Text = "PreviewType:"; - label4.TextAlign = ContentAlignment.MiddleCenter; - // - // comboBoxPreviewType - // - comboBoxPreviewType.Anchor = AnchorStyles.Left; - comboBoxPreviewType.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxPreviewType.FormattingEnabled = true; - comboBoxPreviewType.Items.AddRange(new object[] { "_All", "scenes", "looks", "clothing", "hairstyle", "assets", "morphs", "pose", "skin" }); - comboBoxPreviewType.Location = new Point(354, 3); - comboBoxPreviewType.Name = "comboBoxPreviewType"; - comboBoxPreviewType.Size = new Size(59, 29); - comboBoxPreviewType.TabIndex = 2; - comboBoxPreviewType.SelectedIndexChanged += toolStripComboBoxPreviewType_SelectedIndexChanged; - // - // checkBoxPreviewTypeLoadable - // - checkBoxPreviewTypeLoadable.Anchor = AnchorStyles.Left; - checkBoxPreviewTypeLoadable.AutoSize = true; - checkBoxPreviewTypeLoadable.Checked = true; - checkBoxPreviewTypeLoadable.CheckState = CheckState.Checked; - checkBoxPreviewTypeLoadable.Location = new Point(419, 5); - checkBoxPreviewTypeLoadable.Name = "checkBoxPreviewTypeLoadable"; - checkBoxPreviewTypeLoadable.Size = new Size(108, 25); - checkBoxPreviewTypeLoadable.TabIndex = 3; - checkBoxPreviewTypeLoadable.Text = "Loadable"; - toolTip1.SetToolTip(checkBoxPreviewTypeLoadable, "Filter Loadabled Scene,Looks etc"); - checkBoxPreviewTypeLoadable.UseVisualStyleBackColor = true; - checkBoxPreviewTypeLoadable.CheckedChanged += checkBoxPreviewTypeLoadable_CheckedChanged; - // - // backgroundWorkerInstall - // - backgroundWorkerInstall.WorkerReportsProgress = true; - backgroundWorkerInstall.DoWork += backgroundWorkerInstall_DoWork; - backgroundWorkerInstall.RunWorkerCompleted += backgroundWorkerInstall_RunWorkerCompleted; - // - // backgroundWorkerPreview - // - backgroundWorkerPreview.WorkerReportsProgress = true; - backgroundWorkerPreview.WorkerSupportsCancellation = true; - // - // openFileDialogInstByTXT - // - openFileDialogInstByTXT.DefaultExt = "txt"; - openFileDialogInstByTXT.FileName = "installedvars"; - openFileDialogInstByTXT.Filter = "text file|*.txt"; - // - // saveFileDialogExportInstalled - // - saveFileDialogExportInstalled.DefaultExt = "txt"; - saveFileDialogExportInstalled.FileName = "installedvars"; - saveFileDialogExportInstalled.Filter = "text file|*.txt"; - // - // varsBindingSource - // - varsBindingSource.DataMember = "vars"; - // DataSource will be set in code using EF Core - // - // dependenciesBindingSource - // - dependenciesBindingSource.DataMember = "dependencies"; - // DataSource will be set in code using EF Core - // - // installStatusBindingSource - // - installStatusBindingSource.DataMember = "installStatus"; - // DataSource will be set in code using EF Core - // - // scenesBindingSource - // - scenesBindingSource.DataMember = "scenes"; - // DataSource will be set in code using EF Core - // - // Form1 - // - AutoScaleDimensions = new SizeF(10F, 21F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1540, 829); - Controls.Add(tableLayoutPanel1); - Font = new Font("Cambria", 9F, FontStyle.Regular, GraphicsUnit.Point); - Icon = (Icon)resources.GetObject("$this.Icon"); - Name = "Form1"; - Text = "Var Manager"; - WindowState = FormWindowState.Maximized; - Load += Form1_Load; - tableLayoutPanel1.ResumeLayout(false); - panel1.ResumeLayout(false); - groupBoxSwitch.ResumeLayout(false); - groupBox1.ResumeLayout(false); - contextMenuStripPrepareSave.ResumeLayout(false); - tableLayoutPanel2.ResumeLayout(false); - tableLayoutPanel2.PerformLayout(); - splitContainer1.Panel1.ResumeLayout(false); - splitContainer1.Panel1.PerformLayout(); - splitContainer1.Panel2.ResumeLayout(false); - splitContainer1.Panel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)splitContainer1).EndInit(); - splitContainer1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)varsViewDataGridView).EndInit(); - ((System.ComponentModel.ISupportInitialize)varsViewBindingSource).EndInit(); - flowLayoutPanel2.ResumeLayout(false); - flowLayoutPanel1.ResumeLayout(false); - flowLayoutPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)varsBindingNavigator).EndInit(); - varsBindingNavigator.ResumeLayout(false); - varsBindingNavigator.PerformLayout(); - tableLayoutPanelPreview.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)pictureBoxPreview).EndInit(); - panel3.ResumeLayout(false); - groupBoxPersonOrder.ResumeLayout(false); - groupBoxPersonOrder.PerformLayout(); - flowLayoutPanel3.ResumeLayout(false); - flowLayoutPanel3.PerformLayout(); - toolStripPreview.ResumeLayout(false); - toolStripPreview.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)varsBindingSource).EndInit(); - ((System.ComponentModel.ISupportInitialize)dependenciesBindingSource).EndInit(); - ((System.ComponentModel.ISupportInitialize)installStatusBindingSource).EndInit(); - ((System.ComponentModel.ISupportInitialize)scenesBindingSource).EndInit(); - ResumeLayout(false); - } - - #endregion - - private System.Windows.Forms.Button buttonSetting; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.ListBox listBoxLog; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button buttonUpdDB; - private System.Windows.Forms.Button buttonStartVam; - private System.Windows.Forms.Button buttonFixRebuildLink; - private System.ComponentModel.BackgroundWorker backgroundWorkerInstall; - private System.Windows.Forms.ComboBox comboBoxCreater; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.SplitContainer splitContainer1; - private System.Windows.Forms.ListView listViewPreviewPics; - private System.Windows.Forms.ImageList imageListPreviewPics; - private System.Windows.Forms.Button buttonStaleVars; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; - private System.Windows.Forms.BindingNavigator varsBindingNavigator; - private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; - private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; - private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; - private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; - private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; - private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; - private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; - private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; - private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox textBoxFilter; - private System.Windows.Forms.BindingSource dependenciesBindingSource; - - private System.Windows.Forms.CheckBox checkBoxInstalled; - private System.Windows.Forms.Button buttonInstall; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanelPreview; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Button buttonpreviewinstall; - private System.Windows.Forms.PictureBox pictureBoxPreview; - private System.Windows.Forms.ToolStrip toolStripPreview; - private System.Windows.Forms.Button buttonScenesManager; - private System.Windows.Forms.BindingSource scenesBindingSource; - private System.Windows.Forms.ToolStripLabel toolStripLabelPreviewCountItem; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.ToolTip toolTip1; - private System.Windows.Forms.Button buttonFixSavesDepend; - private System.Windows.Forms.Button buttonUninstallSels; - private System.ComponentModel.BackgroundWorker backgroundWorkerPreview; - private System.Windows.Forms.Button buttonDelete; - private System.Windows.Forms.Button buttonMissingDepends; - private System.Windows.Forms.DataGridView varsViewDataGridView; - private System.Windows.Forms.BindingSource varsViewBindingSource; - private System.Windows.Forms.Button buttonMove; - private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogMove; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; - private System.Windows.Forms.Button buttonExpInsted; - private System.Windows.Forms.Button buttonInstFormTxt; - private System.Windows.Forms.OpenFileDialog openFileDialogInstByTXT; - private System.Windows.Forms.SaveFileDialog saveFileDialogExportInstalled; - private System.Windows.Forms.GroupBox groupBoxSwitch; - private System.Windows.Forms.ComboBox comboBoxPacksSwitch; - private System.Windows.Forms.Button buttonPacksDelete; - private System.Windows.Forms.Button buttonPacksAdd; - private System.Windows.Forms.Button buttonPacksRename; - private System.Windows.Forms.Button buttonLoad; - private System.Windows.Forms.CheckBox checkBoxMerge; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewFirst; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.ComboBox comboBoxPreviewType; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewPrev; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewNext; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewLast; - private System.Windows.Forms.CheckBox checkBoxPreviewTypeLoadable; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; - private System.Windows.Forms.ProgressBar progressBar1; - private System.Windows.Forms.Label labelProgress; - private System.Windows.Forms.Button buttonLocate; - private System.Windows.Forms.ToolStripLabel toolStripLabelPreviewItemIndex; - private System.Windows.Forms.Button buttonAnalysis; - private System.Windows.Forms.Button buttonResetFilter; - private System.Windows.Forms.Button buttonFixPreview; - private System.Windows.Forms.Button buttonAllMissingDepends; - private System.Windows.Forms.Button buttonHub; - private System.Windows.Forms.Button buttonClearLog; - private System.Windows.Forms.DataGridViewButtonColumn ColumnDetail; - private System.Windows.Forms.DataGridViewTextBoxColumn fsize; - private System.Windows.Forms.DataGridViewTextBoxColumn morphs; - private System.Windows.Forms.DataGridViewTextBoxColumn pose; - private System.Windows.Forms.DataGridViewTextBoxColumn skin; - private System.Windows.Forms.CheckBox checkBoxIgnoreGender; - private System.Windows.Forms.GroupBox groupBoxPersonOrder; - private System.Windows.Forms.RadioButton radioButtonPersonOrder6; - private System.Windows.Forms.RadioButton radioButtonPersonOrder8; - private System.Windows.Forms.RadioButton radioButtonPersonOrder7; - private System.Windows.Forms.RadioButton radioButtonPersonOrder5; - private System.Windows.Forms.RadioButton radioButtonPersonOrder4; - private System.Windows.Forms.RadioButton radioButtonPersonOrder3; - private System.Windows.Forms.RadioButton radioButtonPersonOrder2; - private System.Windows.Forms.RadioButton radioButtonPersonOrder1; - private System.Windows.Forms.Label labelPreviewVarName; - private System.Windows.Forms.CheckBox checkBoxForMale; - private System.Windows.Forms.ContextMenuStrip contextMenuStripPrepareSave; - private System.Windows.Forms.ToolStripMenuItem prepareFormSavesToolStripMenuItem; - private System.Windows.Forms.Button buttonFilteredMissingDepends; - private System.Windows.Forms.DataGridViewTextBoxColumn varNamedataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewCheckBoxColumn installedDataGridViewCheckBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn varPathDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn creatorNameDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn packageNameDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn versionDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn metaDateDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn varDateDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn scenesDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn looksDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn clothingDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn hairstyleDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn pluginsDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn assetsDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewCheckBoxColumn disabledDataGridViewCheckBoxColumn; - private System.Windows.Forms.Button buttonClearCache; - private System.Windows.Forms.BindingSource varsBindingSource; - private System.Windows.Forms.BindingSource installStatusBindingSource; - } -} - diff --git a/_archived/varManager/Form1.cs b/_archived/varManager/Form1.cs deleted file mode 100644 index 8afe77e..0000000 --- a/_archived/varManager/Form1.cs +++ /dev/null @@ -1,4008 +0,0 @@ -锘縰sing DgvFilterPopup; -using ICSharpCode.SharpZipLib.Zip; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; -using System.Drawing; -using System.IO; -//using System.IO.Compression; -using System.Linq; -using System.Reflection; -using System.Runtime.InteropServices; -using System.Text; -using System.Text.Json; -using System.Text.Json.Serialization; -using System.Text.RegularExpressions; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; -using varManager.Backend; -using varManager.Data; -using varManager.Models; -using varManager.Properties; -using SimpleJSON; -using static SimpleLogger; - -namespace varManager -{ - public partial class Form1 : Form - { - private record PreviewUninstallResult(List var_list, List requested, List implicated); - - private static readonly byte[] s_creatorNameUtf8 = Encoding.UTF8.GetBytes("creatorName"); - //private static ReadOnlySpan Utf8Bom => new byte[] { 0xEF, 0xBB, 0xBF }; - private static SimpleLogger simpLog = new SimpleLogger(); - private static string tidiedDirName = "___VarTidied___"; - private static string redundantDirName = "___VarRedundant___"; - private static string notComplyRuleDirName = "___VarnotComplyRule___"; - private static string previewpicsDirName = "___PreviewPics___"; - private static string staleVarsDirName = "___StaleVars___"; - private static string oldVersionVarsDirName = "___OldVersionVars___"; - private static string deleVarsDirName = "___DeletedVars___"; - - private static string addonPacksSwitch = "___AddonPacksSwitch ___"; - - private static string installLinkDirName = "___VarsLink___"; - private static string missingVarLinkDirName = "___MissingVarLink___"; - private static string tempVarLinkDirName = "___TempVarLink___"; - private InvokeAddLoglist addlog; - private readonly CancellationTokenSource backendCts = new CancellationTokenSource(); - private readonly ThreadLocal _dbContext = - new ThreadLocal(() => new VarManagerContext(), true); - private VarManagerContext dbContext => _dbContext.Value!; - public Form1() - { - InitializeComponent(); - addlog = new InvokeAddLoglist(UpdateAddLoglist); - } - - private void buttonSetting_Click(object sender, EventArgs e) - { - OpenSetting(); - } - - private static void OpenSetting() - { - using FormSettings formSettings = new FormSettings(); - formSettings.ShowDialog(); - } - - public static bool ComplyVarFile(string varfile) - { - string varfilename = Path.GetFileNameWithoutExtension(varfile); - return ComplyVarName(varfilename); - } - - public static bool ComplyVarName(string varname) - { - string[] varnamepart = varname.Split('.'); - - if (varnamepart.Length == 3) - { - //int version = 0; - if (Regex.IsMatch(varnamepart[2], "^[0-9]+$")) - //if (int.TryParse(varnamepart[2], out version)) - { - return true; - } - } - return false; - } - - private List varsForInstall = new List(); - private void TidyVars() - { - List vars = GetVarspathVars(); - List varsUsed = GetAddonpackagesVars(); - varsForInstall.Clear(); - if (File.Exists("varsForInstall.txt")) - varsForInstall.AddRange(File.ReadAllLines("varsForInstall.txt")); - foreach (var varins in varsUsed) - { - if (ComplyVarFile(varins)) - varsForInstall.Add(Path.GetFileNameWithoutExtension(varins)); - } - File.Delete("varsForInstall.txt"); - varsForInstall = varsForInstall.Distinct().ToList(); - File.WriteAllLines("varsForInstall.txt", varsForInstall); - - vars.AddRange(varsUsed); - - TidyVars(vars); - // System.Diagnostics.Process.Start(tidypath); - } - - - private void TidyVars(List vars) - { - string tidypath = Path.Combine(Settings.Default.varspath, tidiedDirName); - if (!Directory.Exists(tidypath)) - Directory.CreateDirectory(tidypath); - string redundantpath = Path.Combine(Settings.Default.varspath, redundantDirName); - if (!Directory.Exists(redundantpath)) - Directory.CreateDirectory(redundantpath); - string notComplRulepath = Path.Combine(Settings.Default.varspath, notComplyRuleDirName); - if (!Directory.Exists(notComplRulepath)) - Directory.CreateDirectory(notComplRulepath); - InvokeProgress mi = new InvokeProgress(UpdateProgress); - this.BeginInvoke(addlog, new Object[] { "Tidy Vars...", LogLevel.INFO }); - int curVarfile = 0; - foreach (string varfile in vars) - { - if (!File.Exists(varfile)) - { - this.BeginInvoke(mi, new Object[] { curVarfile, vars.Count() }); - curVarfile++; - continue; - } - if (ComplyVarFile(varfile)) - { - FileInfo pathInfo = new FileInfo(varfile); - string varfilename = Path.GetFileNameWithoutExtension(varfile); - //if (pathInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - //{ - //string errlog = $"{varfile} is a symlink,Please check and process it appropriately"; - //this.BeginInvoke(addlog, new Object[] { errlog,LogLevel.ERROR }); - //varsForInstall.Remove(varfilename); - //continue; - //} - - string[] varnamepart = varfilename.Split('.'); - string createrpath = Path.Combine(tidypath, varnamepart[0]); - if (!Directory.Exists(createrpath)) - Directory.CreateDirectory(createrpath); - string destvarfilename = Path.Combine(createrpath, Path.GetFileName(varfile)); - if (File.Exists(destvarfilename)) - { - string errlog = $"{varfile} has same filename in tidy directory,moved into the {redundantDirName} directory"; - this.BeginInvoke(addlog, new Object[] { errlog ,LogLevel.WARNING}); - string redundantfilename = Path.Combine(redundantpath, Path.GetFileName(varfile)); - - int count = 1; - - string fileNameOnly = Path.GetFileNameWithoutExtension(redundantfilename); - string extension = Path.GetExtension(redundantfilename); - string path = Path.GetDirectoryName(redundantfilename); - - while (File.Exists(redundantfilename)) - { - string tempFileName = string.Format("{0}({1})", fileNameOnly, count++); - redundantfilename = Path.Combine(path, tempFileName + extension); - } - - try - { - File.Move(varfile, redundantfilename); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"move {varfile} failed, {ex.Message}", LogLevel.ERROR }); - } - } - else - { - try - { - File.Move(varfile, destvarfilename); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"move {varfile} failed, {ex.Message}" ,LogLevel.ERROR }); - } - //OpenAsZip(destvarfilename); - } - } - else - { - string errlog = $"{varfile} not comply Var filename rule, move into {notComplyRuleDirName} directory"; - this.BeginInvoke(addlog, new Object[] { errlog, LogLevel.ERROR }); - string notComplRulefilename = Path.Combine(notComplRulepath, Path.GetFileName(varfile)); - - int count = 1; - - string fileNameOnly = Path.GetFileNameWithoutExtension(notComplRulefilename); - string extension = Path.GetExtension(notComplRulefilename); - string path = Path.GetDirectoryName(notComplRulefilename); - - while (File.Exists(notComplRulefilename)) - { - string tempFileName = string.Format("{0}({1})", fileNameOnly, count++); - notComplRulefilename = Path.Combine(path, tempFileName + extension); - } - try - { - File.Move(varfile, notComplRulefilename); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"move {varfile} failed, {ex.Message}", LogLevel.ERROR }); - } - } - this.BeginInvoke(mi, new Object[] { curVarfile, vars.Count() }); - curVarfile++; - } - } - - private static List GetVarspathVars() - { - List varspathVars = new List(); - foreach (var varins in Directory.GetFiles(Settings.Default.varspath, "*.var", SearchOption.AllDirectories) - .Where(q => q.IndexOf(tidiedDirName) == -1 - && q.IndexOf(redundantDirName) == -1 - && q.IndexOf(notComplyRuleDirName) == -1 - && q.IndexOf(staleVarsDirName) == -1 - && q.IndexOf(oldVersionVarsDirName) == -1 - && q.IndexOf(deleVarsDirName) == -1)) - { - FileInfo pathInfo = new FileInfo(varins); - if (!pathInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - { - varspathVars.Add(varins); - } - } - return varspathVars; - } - - private static bool ExistAddonpackagesVar() - { - string installlinkdir = Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName); - - bool exist = false; - foreach (var varins in Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages"), "*.var", SearchOption.AllDirectories) - .Where(q => q.IndexOf(installlinkdir) == -1 && q.IndexOf(missingVarLinkDirName) == -1 && q.IndexOf(tempVarLinkDirName) == -1)) - { - FileInfo pathInfo = new FileInfo(varins); - if (!pathInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - { - exist = true; - break; - } - } - return exist; - } - - private static List GetAddonpackagesVars() - { - string installlinkdir = Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName); - - List varsUsed = new List(); - foreach (var varins in Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages"), "*.var", SearchOption.AllDirectories) - .Where(q => q.IndexOf(installlinkdir) == -1 && q.IndexOf(missingVarLinkDirName) == -1 && q.IndexOf(tempVarLinkDirName) == -1)) - { - FileInfo pathInfo = new FileInfo(varins); - if (!pathInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - { - varsUsed.Add(varins); - } - } - return varsUsed; - } - - private List Getdependencies(string jsonstring) - { - string dependencies = ""; - List dependenciesList = new List(); - try - { - //JsonDocument jsondoc = JsonDocument.Parse(jsonstring); - // dependencies = jsondoc.RootElement.GetProperty("dependencies").GetRawText().ToString(); - dependencies = jsonstring; - Regex regexObj = new Regex(@"\x22(([^\r\n\x22\x3A\x2E]{1,60})\x2E([^\r\n\x22\x3A\x2E]{1,80})\x2E(\d+|latest))(\x22?\s*)\x3A", RegexOptions.IgnoreCase | RegexOptions.Singleline); - Match matchResults = regexObj.Match(dependencies); - while (matchResults.Success) - { - Group groupObj = matchResults.Groups[1]; - if (groupObj.Success) - { - string depstr = groupObj.Value; - if (depstr.IndexOf('/') > 0) - depstr = depstr.Substring(depstr.IndexOf('/') + 1); - dependenciesList.Add(depstr); - // match start: groupObj.Index - // match length: groupObj.Length - } - - matchResults = matchResults.NextMatch(); - } - dependenciesList = dependenciesList.Distinct().ToList(); - } - catch - { - throw; - } - return dependenciesList; - } - - private bool Varislatest(string varname) - { - var parts = varname.Split('.'); - if (parts.Length != 3) return true; - if (!int.TryParse(parts[2], out var version)) return true; - - var versions = dbContext.Vars - .Where(q => q.CreatorName == parts[0] && q.PackageName == parts[1]) - .Select(q => q.Version) - .ToList() - .Where(v => int.TryParse(v, out _)) - .Select(v => int.Parse(v)); - - if (!versions.Any()) return true; - - return version >= versions.Max(); - } - private int VarCountVersion(string varname) - { - int countversion = 0; - string[] varnamepart = varname.Split('.'); - if (varnamepart.Length == 3) - { - countversion = dbContext.Vars.Where(q => q.CreatorName == varnamepart[0] && q.PackageName == varnamepart[1]).Count(); - - } - return countversion; - } - - private List ImplicatedVar(string varname) - { - List varnames = new List(); - if (VarCountVersion(varname) <= 1) - { - if (Varislatest(varname)) - { - string latest = varname.Substring(0, varname.LastIndexOf('.')) + ".latest"; - foreach (var row in dbContext.Dependencies.Where(q => q.DependencyName == varname || q.DependencyName == latest)) - { - varnames.Add(row.VarName!); - } - } - else - { - foreach (var row in dbContext.Dependencies.Where(q => q.DependencyName == varname)) - { - varnames.Add(row.VarName!); - } - } - } - return varnames; - } - - private List DependentVars(string varname) - { - List varnames = new List(); - - if (Varislatest(varname)) - { - string latest = varname.Substring(0, varname.LastIndexOf('.')) + ".latest"; - foreach (var row in dbContext.Dependencies.Where(q => q.DependencyName == varname || q.DependencyName == latest)) - { - varnames.Add(row.VarName!); - } - } - else - { - foreach (var row in dbContext.Dependencies.Where(q => q.DependencyName == varname)) - { - varnames.Add(row.VarName!); - } - } - - return varnames; - } - private List DependentSaved(string varname) - { - List saveds = new List(); - - if (Varislatest(varname)) - { - string latest = varname.Substring(0, varname.LastIndexOf('.')) + ".latest"; - var savedDepsLatest = dbContext.SavedDependencies - .Where(q => q.DependencyName == latest) - .ToList(); - foreach (var row in savedDepsLatest) - { - saveds.Add(row.VarName!); - } - } - - var savedDeps = dbContext.SavedDependencies - .Where(q => q.DependencyName == varname) - .ToList(); - foreach (var row in savedDeps) - { - saveds.Add(row.VarName!); - } - saveds = saveds.Distinct().ToList(); - return saveds; - } - private List ImplicatedVars(List varnames) - { - List varnameexist = new List(); - List varsProccessed = new List(); - List varimplics = new List(); - foreach (string varname in varnames) - { - if (varname[varname.Length - 1] == '^') - varsProccessed.Add(varname.Substring(0, varname.Length - 1)); - else - varnameexist.Add(varname); - } - - foreach (string varname in varnameexist) - { - varimplics.AddRange(ImplicatedVar(varname)); - } - varsProccessed.AddRange(varnameexist); - varimplics = varimplics.Distinct().Except(varsProccessed).ToList(); - if (varimplics.Count() > 0) - { - foreach (string varname in varsProccessed) - { - varimplics.Add(varname + "^"); - } - return ImplicatedVars(varimplics); - } - else - { - varsProccessed = varsProccessed.Select(q => q.Trim('^')).Distinct().ToList(); - return varsProccessed; - } - } - - private void DelePreviewPics(string varname) - { - string[] typenames = { "scenes", "looks", "hairstyle", "clothing", "assets","morphs","skin","pose"}; - foreach (string typename in typenames) - { - string typepath = Path.Combine(Settings.Default.varspath, previewpicsDirName, typename, varname); - if (Directory.Exists(typepath)) - { - try - { - Directory.Delete(typepath, true); - } - catch - { - throw; - } - } - } - } - - private void UnintallVars(List varnames) - { - //FillInstalledDependencies(); - List varimplics = ImplicatedVars(varnames); - - FormUninstallVars formUninstallVars = new FormUninstallVars(); - formUninstallVars.previewpicsDirName = previewpicsDirName; - foreach (string varname in varimplics) - { - foreach (var row in dbContext.VarsView.Where(q => q.VarName == varname && q.Installed)) - { - // Convert to appropriate format for the uninstall form - // This will need to be adapted based on FormUninstallVars requirements - } - } - if (formUninstallVars.ShowDialog() == DialogResult.OK) - { - var installedvars = GetInstalledVars(); - foreach (string varname in varimplics) - { - string linkvar; - if (installedvars.TryGetValue(varname, out linkvar)) - if (File.Exists(linkvar)) - { - File.Delete(linkvar); - this.BeginInvoke(addlog, new Object[] { $"{varname} is uninstalled.", LogLevel.INFO }); - - } - } - } - } - public string getVarFilePath(string varname) - { - string varfilepath = ""; - var varRow = dbContext.Vars.FirstOrDefault(v => v.VarName == varname); - if (varRow != null) - { - varfilepath = Path.Combine(Settings.Default.varspath, varRow.VarPath!, varRow.VarName + ".var"); - } - return varfilepath; - } - - private void DeleteVars(List varnames) - { - // FillInstalledDependencies(); - List varimplics = ImplicatedVars(varnames); - - FormUninstallVars formUninstallVars = new FormUninstallVars(); - formUninstallVars.operationType = "delete"; - formUninstallVars.deleVarsDirName = deleVarsDirName; - formUninstallVars.previewpicsDirName = previewpicsDirName; - foreach (string varname in varimplics) - { - foreach (var row in dbContext.VarsView.Where(q => q.VarName == varname)) - { - // Convert to appropriate format for the uninstall form - // This will need to be adapted based on FormUninstallVars requirements - } - } - if (formUninstallVars.ShowDialog() == DialogResult.OK) - { - string delevarspath = Path.Combine(Settings.Default.varspath, deleVarsDirName); - if (!Directory.Exists(delevarspath)) - Directory.CreateDirectory(delevarspath); - - var installedvars = GetInstalledVars(); - foreach (string varname in varimplics) - { - string linkvar; - if (installedvars.TryGetValue(varname, out linkvar)) - if (File.Exists(linkvar)) - File.Delete(linkvar); - - var row = dbContext.Vars.FirstOrDefault(v => v.VarName == varname); - if (row == null) - { - this.BeginInvoke(addlog, new Object[] { $"{varname} record not found, skip delete.", LogLevel.WARNING }); - continue; - } - string operav = Path.Combine(Settings.Default.varspath, row.VarPath!, varname + ".var"); - string deletedv = Path.Combine(delevarspath, varname + ".var"); - try - { - File.Move(operav, deletedv); - CleanVar(varname); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"{operav} move failed,{ex.Message}", LogLevel.ERROR }); - } - } - } - - } - private DataTable CreateVarsViewDataTable() - { - var dataTable = new DataTable("varsView"); - - // Add columns matching the VarsView entity properties - dataTable.Columns.Add("varName", typeof(string)); - dataTable.Columns.Add("Installed", typeof(bool)); - dataTable.Columns.Add("Fsize", typeof(double)); - dataTable.Columns.Add("varPath", typeof(string)); - dataTable.Columns.Add("creatorName", typeof(string)); - dataTable.Columns.Add("packageName", typeof(string)); - dataTable.Columns.Add("version", typeof(string)); - dataTable.Columns.Add("metaDate", typeof(DateTime)); - dataTable.Columns.Add("varDate", typeof(DateTime)); - dataTable.Columns.Add("scenes", typeof(int)); - dataTable.Columns.Add("looks", typeof(int)); - dataTable.Columns.Add("clothing", typeof(int)); - dataTable.Columns.Add("hairstyle", typeof(int)); - dataTable.Columns.Add("plugins", typeof(int)); - dataTable.Columns.Add("assets", typeof(int)); - dataTable.Columns.Add("morphs", typeof(int)); - dataTable.Columns.Add("pose", typeof(int)); - dataTable.Columns.Add("skin", typeof(int)); - dataTable.Columns.Add("Disabled", typeof(bool)); - - // Fill with data from EF Core - var varsViewData = dbContext.VarsView.ToList(); - foreach (var item in varsViewData) - { - dataTable.Rows.Add( - item.VarName, - item.Installed, - item.Fsize, - item.VarPath, - item.CreatorName, - item.PackageName, - item.Version, - item.MetaDate, - item.VarDate, - item.Scenes, - item.Looks, - item.Clothing, - item.Hairstyle, - item.Plugins, - item.Assets, - item.Morphs, - item.Pose, - item.Skin, - item.Disabled - ); - } - - return dataTable; - } - - private DataSet CreateVarsDataSet() - { - var dataSet = new DataSet(); - dataSet.Tables.Add(CreateVarsViewDataTable()); - return dataSet; - } - private DgvFilterManager dgvFilterManager; - private Dictionary GetInstalledVars() - { - Dictionary installedVars = new Dictionary(); - DirectoryInfo dilink = Directory.CreateDirectory(Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName)); - foreach (string varfile in Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName), "*.var", SearchOption.AllDirectories)) - { - FileInfo fileInfo = new FileInfo(varfile); - if (fileInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - { - installedVars[Path.GetFileNameWithoutExtension(varfile)] = varfile; - } - } - foreach (string varfile in Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages"), "*.var", SearchOption.TopDirectoryOnly)) - { - FileInfo fileInfo = new FileInfo(varfile); - if (fileInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - { - installedVars[Path.GetFileNameWithoutExtension(varfile)] = varfile; - } - } - return installedVars; - } - private void UpdateVarsInstalled() - { - bool mutexAcquired = false; - try - { - // Ensure DbContext is properly initialized - if (dbContext.Database.CanConnect()) - { - // Clear existing install status data using EF Core - dbContext.InstallStatuses.RemoveRange(dbContext.InstallStatuses); - - mutex.WaitOne(); - mutexAcquired = true; - - foreach (string varfile in GetInstalledVars().Values) - { - string varName = Path.GetFileNameWithoutExtension(varfile); - if (dbContext.Vars.Any(v => v.VarName == varName)) - { - bool isdisable = File.Exists(varfile + ".disabled"); - dbContext.InstallStatuses.Add(new InstallStatus - { - VarName = varName, - Installed = true, - Disabled = isdisable - }); - } - } - - dbContext.SaveChanges(); - - InvokeUpdateVarsViewDataGridView invokeUpdateVarsViewDataGridView = new InvokeUpdateVarsViewDataGridView(UpdateVarsViewDataGridView); - this.BeginInvoke(invokeUpdateVarsViewDataGridView); - //varsViewDataGridView.Update(); - } - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"Error updating vars installed: {ex.Message}", LogLevel.ERROR }); - } - finally - { - if (mutexAcquired) - { - mutex.ReleaseMutex(); - } - } - } - - private Mutex mutex; - private System.Threading.Mutex mut = new Mutex(); - - - private async void Form1_Load(object sender, EventArgs e) - { - this.Text = "VarManager v" + Assembly.GetEntryAssembly().GetName().Version.ToString(); - UseWaitCursor = true; - Enabled = false; - if (!await EnsureBackendReadyAsync().ConfigureAwait(true)) - { - Close(); - return; - } - UseWaitCursor = false; - Enabled = true; - - if (string.IsNullOrWhiteSpace(Settings.Default.vampath) || - string.IsNullOrWhiteSpace(Settings.Default.varspath)) - { - MessageBox.Show("鍚庣閰嶇疆缂哄皯 varspath 鎴 vampath锛岃缂栬緫 config.json 鍚庨噸鍚"); - OpenSetting(); - Close(); - return; - } - - if (!File.Exists(Path.Combine(Settings.Default.vampath, "VaM.exe"))) - { - MessageBox.Show("vampath 鏃犳晥锛岃缂栬緫 config.json 鍚庨噸鍚"); - OpenSetting(); - Close(); - return; - } - mutex = new System.Threading.Mutex(); - - var (dbPath, provider) = VarManagerContext.GetDatabaseInfo(); - this.BeginInvoke(addlog, new Object[] { $"DB config: {dbPath} | Provider: {provider}", LogLevel.INFO }); - this.BeginInvoke(addlog, new Object[] { $"Backend config: varspath={Settings.Default.varspath}, vampath={Settings.Default.vampath}", LogLevel.INFO }); - - // Set the sort after data source initialization to avoid .NET 9 issues - try - { - if (varsViewBindingSource.DataSource != null) - { - varsViewBindingSource.Sort = "metaDate Desc"; - } - } - catch { /* Ignore sorting errors during initialization */ } - - backgroundWorkerInstall.RunWorkerAsync("FillDataTables"); - // - string varspath = new DirectoryInfo(Settings.Default.varspath).FullName.ToLower(); - string packpath = new DirectoryInfo(Path.Combine(Settings.Default.vampath, "AddonPackages")).FullName; - - string packsSwitchpath = new DirectoryInfo(Path.Combine(Settings.Default.vampath, addonPacksSwitch)).FullName.ToLower(); - if (varspath == packpath) - { - MessageBox.Show("Vars Path can't be {VamInstallDir}\\AddonPackages"); - OpenSetting(); - } - comboBoxPreviewType.SelectedIndex = 0; - - - - DirectoryInfo dipacksswitch = Directory.CreateDirectory(packsSwitchpath); - DirectoryInfo[] packswitchdirs = dipacksswitch.GetDirectories("*", SearchOption.TopDirectoryOnly); - List packnames = new List(); - foreach (DirectoryInfo dipack in packswitchdirs) - { - packnames.Add(dipack.Name); - } - if (packnames.IndexOf("default") == -1) - { - Directory.CreateDirectory(Path.Combine(packsSwitchpath, "default")); - packnames.Add("default"); - } - comboBoxPacksSwitch.Items.Add("default"); - foreach (string packname in packnames) - { - if (packname != "default") - comboBoxPacksSwitch.Items.Add(packname); - } - - string currentSwitch = "default"; - try - { - DirectoryInfo diswitch = new DirectoryInfo(Comm.ReparsePoint(packpath)); - if (diswitch.Exists) - { - currentSwitch = diswitch.Name; - } - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"Warning: {ex.Message}", LogLevel.INFO }); - } - - if (comboBoxPacksSwitch.Items.IndexOf(currentSwitch) >= 0) - { - comboBoxPacksSwitch.SelectedItem = currentSwitch; - } - else - { - comboBoxPacksSwitch.SelectedItem = "default"; - } - - try - { - RunBackendJob("refresh_install_status", null); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"鍒锋柊瀹夎鐘舵佸け璐: {ex.Message}", LogLevel.ERROR }); - } - comboBoxCreater.Items.Add("____ALL"); - var creators = dbContext.Vars - .GroupBy(v => v.CreatorName) - .Select(g => g.Key) - .OrderBy(c => c) - .ToList(); - foreach (var creator in creators) - { - comboBoxCreater.Items.Add(creator); - } - comboBoxCreater.SelectedIndex = 0; - // FillDataTables(); - //TimeSpan ts6 = DateTime.Now - dtstart; - //dtstart = DateTime.Now; - //MessageBox.Show($"{ts1.TotalSeconds},{ts2.TotalSeconds},{ts3.TotalSeconds},{ts4.TotalSeconds},{ts5.TotalSeconds},{ts6.TotalSeconds}"); - - // Initialize DataSource with DataSet for DgvFilterManager compatibility - var dataSet = CreateVarsDataSet(); - varsViewBindingSource.DataSource = dataSet; - varsViewBindingSource.DataMember = "varsView"; - dgvFilterManager = new DgvFilterManager(varsViewDataGridView); - RefreshVarsViewUi(); - if (ExistAddonpackagesVar()) - { - MessageBox.Show("There are unorganized var files in the current switch, please run UPD_DB first"); - buttonUpdDB.Focus(); - } - } - - private void FillDataTables() - { - this.BeginInvoke(addlog, new Object[] { $"load vars...", LogLevel.INFO }); - // EF Core automatically loads data when needed - no explicit Fill required - - this.BeginInvoke(addlog, new Object[] { $"load scenes...", LogLevel.INFO }); - // EF Core automatically loads data when needed - no explicit Fill required - - this.BeginInvoke(addlog, new Object[] { $"load dependencies...", LogLevel.INFO }); - // EF Core automatically loads data when needed - no explicit Fill required - - // Pre-load some critical data for performance - _ = dbContext.Vars.Count(); // This will initialize the connection - _ = dbContext.Scenes.Count(); - _ = dbContext.Dependencies.Count(); - } - - public delegate void InvokeUpdateVarsViewDataGridView(); - - public void UpdateVarsViewDataGridView() - { - List selectedRowList = new List(); - foreach (DataGridViewRow item in varsViewDataGridView.SelectedRows) - { - selectedRowList.Add(item.Cells[0].Value.ToString()); - } - varsViewDataGridView.SelectionChanged -= new System.EventHandler(this.varsDataGridView_SelectionChanged); - - // Refresh the data by recreating the DataSet for DgvFilterManager compatibility - var dataSet = CreateVarsDataSet(); - varsViewBindingSource.DataSource = dataSet; - varsViewBindingSource.DataMember = "varsView"; - varsViewDataGridView.Update(); - - int firstindex = int.MaxValue; - varsViewDataGridView.ClearSelection(); - foreach (DataGridViewRow row in varsViewDataGridView.Rows) - { - string varname = row.Cells["varNamedataGridViewTextBoxColumn"].Value.ToString(); - if (selectedRowList.Contains(varname)) - { - row.Selected = true; - if (row.Index < firstindex) firstindex = row.Index; - } - } - if (firstindex == int.MaxValue) firstindex = 0; - if (varsViewDataGridView.SelectedRows.Count > 0) - { - varsViewDataGridView.FirstDisplayedScrollingRowIndex = firstindex; - } - varsViewDataGridView.SelectionChanged += new System.EventHandler(this.varsDataGridView_SelectionChanged); - - mutex.WaitOne(); - UpdatePreviewPics(); - mutex.ReleaseMutex(); - tableLayoutPanelPreview.Visible = false; - } - public delegate void InvokeAddLoglist(string message, LogLevel logLevel); - - public void UpdateAddLoglist(string message, LogLevel logLevel) - { - string msg = simpLog.WriteFormattedLog(logLevel, message); - listBoxLog.Items.Add(msg); - listBoxLog.TopIndex = listBoxLog.Items.Count - 1; - } - - private async Task EnsureBackendReadyAsync() - { - try - { - await BackendSession.EnsureStartedAsync(LogBackendLine, backendCts.Token).ConfigureAwait(true); - return true; - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鍚庣鍚姩澶辫触: {ex.Message}", LogLevel.ERROR }); - MessageBox.Show($"鍚庣鍚姩澶辫触: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return false; - } - } - - private void LogBackendLine(string line) - { - LogLevel level = LogLevel.INFO; - if (line.StartsWith("error:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.ERROR; - } - BeginInvoke(addlog, new Object[] { line, level }); - } - - private BackendJobResult RunBackendJob(string kind, object? args) - { - return BackendSession.RunJob(kind, args, LogBackendLine, backendCts.Token); - } - - private Task RunBackendJobAsync(string kind, object? args) - { - return BackendSession.RunJobAsync(kind, args, LogBackendLine, backendCts.Token); - } - - private T? DeserializeResult(BackendJobResult result) - { - if (!result.Result.HasValue) - { - return default; - } - return JsonSerializer.Deserialize(result.Result.Value.GetRawText()); - } - - private void ResetDbContext() - { - if (_dbContext.IsValueCreated) - { - _dbContext.Value?.Dispose(); - } - _dbContext.Value = new VarManagerContext(); - } - - private void RefreshVarsViewUi() - { - ResetDbContext(); - UpdateVarsViewDataGridView(); - } - - private sealed class MissingDepsResult - { - [JsonPropertyName("scope")] - public string Scope { get; set; } = string.Empty; - - [JsonPropertyName("missing")] - public List Missing { get; set; } = new List(); - - [JsonPropertyName("installed")] - public List Installed { get; set; } = new List(); - - [JsonPropertyName("install_failed")] - public List InstallFailed { get; set; } = new List(); - - [JsonPropertyName("dependency_count")] - public int DependencyCount { get; set; } - } - - private sealed class DepsJobResult - { - [JsonPropertyName("missing")] - public List Missing { get; set; } = new List(); - - [JsonPropertyName("installed")] - public List Installed { get; set; } = new List(); - - [JsonPropertyName("dependency_count")] - public int DependencyCount { get; set; } - } - - private sealed class SceneAnalyzeResult - { - [JsonPropertyName("var_name")] - public string VarName { get; set; } = string.Empty; - - [JsonPropertyName("entry_name")] - public string EntryName { get; set; } = string.Empty; - - [JsonPropertyName("cache_dir")] - public string CacheDir { get; set; } = string.Empty; - - [JsonPropertyName("character_gender")] - public string CharacterGender { get; set; } = string.Empty; - } - - private void buttonClearLog_Click(object sender, EventArgs e) - { - listBoxLog.Items.Clear(); - } - - public delegate void InvokeProgress(int cur, int total); - - public void UpdateProgress(int cur, int total) - { - labelProgress.Text = string.Format("{0}/{1}", cur, total); - if (total != 0) - { - int progressvalue = (int)((float)cur * 100 / (float)total); - if (progressvalue < 0) progressvalue = 0; - if (progressvalue >100) progressvalue = 100; - - progressBar1.Value = progressvalue; - } - - } - - public delegate void InvokeShowformMissingVars(List missingvars); - - public void ShowformMissingVars(List missingvars) - { - if (missingvars.Count > 0) - { - FormMissingVars formMissingVars = new FormMissingVars(); - formMissingVars.form1 = this; - formMissingVars.MissingVars = missingvars; - formMissingVars.Show(); - } - } - private void buttonUpdDB_Click(object sender, EventArgs e) - { - string message = "Will organize vars, extract preview images,update DB. It will take some time, please be patient."; - - const string caption = "UpdateDB"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - backgroundWorkerInstall.RunWorkerAsync("UpdDB"); - } - - private void buttonStartVam_Click(object sender, EventArgs e) - { - string message = "Will start the VAM application. Do you want to continue?"; - const string caption = "Start VAM"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - - if (result == DialogResult.Yes) - { - try - { - RunBackendJob("vam_start", null); - } - catch (Exception ex) - { - MessageBox.Show($"Failed to start application. Error: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - - private void UpdDB(string destvarfilename) - { - try - { - string basename = Path.GetFileNameWithoutExtension(destvarfilename); - string curpath = Path.GetDirectoryName(destvarfilename); - curpath = Comm.MakeRelativePath(Settings.Default.varspath, curpath); - - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == basename); - if (varsrow == null) - { - using (ZipFile varzipfile = new ZipFile(destvarfilename)) - { - // Create new Var entity - varsrow = new Var - { - VarName = basename - }; - - string[] varnamepart = basename.Split('.'); - if (varnamepart.Length == 3) - { - FileInfo finfo = new FileInfo(destvarfilename); - varsrow.Filesize = finfo.Length; - varsrow.CreatorName = varnamepart[0]; - varsrow.PackageName = varnamepart[1]; - varsrow.VarDate = finfo.LastWriteTime; - int version; - if (!int.TryParse(varnamepart[2], out version)) - version = 1; - varsrow.Version = version.ToString(); - varsrow.VarPath = curpath; - //ZipFile zipFile = new ZipFile(destvarfilename); - - - var metajson = varzipfile.GetEntry("meta.json"); - - if (metajson == null) - { - string notComplRulefilename = Path.Combine(Settings.Default.varspath, notComplyRuleDirName, Path.GetFileName(destvarfilename)); - string errlog = $"{basename}, Invalid var package structure, move into {notComplyRuleDirName} directory"; - //string errorMessage = destvarfilename + " is invalid,please check"; - this.BeginInvoke(addlog, new Object[] { errlog, LogLevel.WARNING }); - File.Move(destvarfilename, notComplRulefilename); - return; - } - varsrow.MetaDate = metajson.DateTime; - int countscene = 0, countlook = 0, countclothing = 0, counthair = 0, countplugincs = 0, countplugincslist = 0, countasset = 0, countmorphs = 0, countpose = 0, countskin = 0; - var newScenes = new List(); - //foreach (var zfile in varzipfile.Entries) - //varzipfile - foreach (ZipEntry zfile in varzipfile) - { - string typename = ""; - bool isPreset = false; - try - { - if (Regex.IsMatch(zfile.Name, @"saves/scene/.*?\x2e(?:json)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "scenes"; - countscene++; - } - if (Regex.IsMatch(zfile.Name, @"saves/person/appearance/.*?\x2e(?:json|vac)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "looks"; - isPreset = zfile.Name.EndsWith(".json"); - countlook++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/(?:general|appearance)/.*?\x2e(?:json|vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "looks"; - isPreset = true; - countlook++; - } - if (Regex.IsMatch(zfile.Name, @"custom/clothing/.*?\x2e(?:vam|vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "clothing"; - isPreset = false; - countclothing++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/clothing/.*?\x2e(?:vam|vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "clothing"; - isPreset = zfile.Name.EndsWith(".vap"); - countclothing++; - } - if (Regex.IsMatch(zfile.Name, @"custom/hair/.*?\x2e(?:vam|vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "hairstyle"; - isPreset = false; - counthair++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/hair/.*?\x2e(?:vam|vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "hairstyle"; - isPreset = zfile.Name.EndsWith(".vap"); - counthair++; - } - if (Regex.IsMatch(zfile.Name, @"custom/scripts/.*?\x2e(?:cs)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - countplugincs++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/scripts/.*?\x2e(?:cs)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - countplugincs++; - } - if (Regex.IsMatch(zfile.Name, @"custom/scripts/.*?\x2e(?:cslist)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - countplugincslist++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/scripts/.*?\x2e(?:cslist)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - countplugincslist++; - } - if (Regex.IsMatch(zfile.Name, @"custom/assets/.*?\x2e(?:assetbundle)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "assets"; - countasset++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/morphs/.*?\x2e(?:vmi|vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "morphs"; - isPreset = zfile.Name.EndsWith(".vap"); - countmorphs++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/pose/.*?\x2e(?:vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "pose"; - isPreset = true; - countpose++; - } - if (Regex.IsMatch(zfile.Name, @"saves/person/pose/.*?\x2e(?:json|vac)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "pose"; - isPreset = zfile.Name.EndsWith(".json"); - countpose++; - } - if (Regex.IsMatch(zfile.Name, @"custom/atom/person/skin/.*?\x2e(?:vap)", RegexOptions.IgnoreCase | RegexOptions.Singleline)) - { - typename = "skin"; - isPreset = true; - countskin++; - } - if (typename != "") - { - int jpgcount = 0; - switch (typename) - { - case "scenes": jpgcount = countscene; break; - case "looks": jpgcount = countlook; break; - case "clothing": jpgcount = countclothing; break; - case "hairstyle": jpgcount = counthair; break; - case "assets": jpgcount = countasset; break; - case "morphs": jpgcount = countmorphs; break; - case "pose": jpgcount = countpose; break; - case "skin": jpgcount = countskin; break; - } - string jpgfile = zfile.Name.Substring(0, zfile.Name.LastIndexOf('.')) + ".jpg"; - var jpg = varzipfile.GetEntry(jpgfile); - string jpgname = ""; - if (jpg != null) - { - string namejpg = Path.GetFileNameWithoutExtension(jpg.Name).ToLower(); - - string typepath = Path.Combine(Settings.Default.varspath, previewpicsDirName, typename, Path.GetFileNameWithoutExtension(destvarfilename)); - if (!Directory.Exists(typepath)) - Directory.CreateDirectory(typepath); - jpgname = typename + jpgcount.ToString("000") + "_" + namejpg + ".jpg"; - string jpgextratname = Path.Combine(typepath, typename + jpgcount.ToString("000") + "_" + namejpg + ".jpg"); - if (!File.Exists(jpgextratname)) - { - using (var sr = varzipfile.GetInputStream(jpg)) - using (var streamWriter = File.Create(jpgextratname)) - { - sr.CopyTo(streamWriter); - } - } - } - // string ext = zfile.FullName.Substring(zfile.FullName.LastIndexOf('.')).ToLower(); - // if (ext == ".vap" || ext == ".json") - if (typename == "scenes" || typename == "looks" || typename == "clothing" || typename == "hairstyle" || typename == "morphs" || typename == "pose" || typename == "skin") - { - // Collect scenes for a single bulk insert - newScenes.Add(new Scene - { - VarName = basename, - AtomType = typename, - IsPreset = isPreset, - ScenePath = zfile.Name, - PreviewPic = jpgname - }); - } - } - - } - catch (ArgumentException ex) - { - this.BeginInvoke(addlog, new Object[] { zfile.Name + " " + ex.Message, LogLevel.ERROR }); - } - } - if (newScenes.Count > 0) - { - dbContext.Scenes.AddRange(newScenes); - } - - varsrow.Scenes = countscene; - varsrow.Looks = countlook; - varsrow.Clothing = countclothing; - varsrow.Hairstyle = counthair; - varsrow.Morphs = countmorphs; - varsrow.Pose = countpose; - varsrow.Skin = countskin; - if (countplugincslist > 0) - varsrow.Plugins = countplugincslist; - else - varsrow.Plugins = countplugincs; - varsrow.Assets = countasset; - - // Add var to context - dbContext.Vars.Add(varsrow); - - - List dependencies = new List(); - - string jsonstring; - using (var metajsonsteam = new StreamReader(varzipfile.GetInputStream(metajson))) - { - jsonstring = metajsonsteam.ReadToEnd(); - } - try - { - dependencies = Getdependencies(jsonstring); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { destvarfilename + " get dependencies failed " + ex.Message, LogLevel.ERROR }); - } - // Remove existing dependencies for this var - var existingDeps = dbContext.Dependencies.Where(d => d.VarName == basename).ToList(); - if (existingDeps.Count > 0) - { - dbContext.Dependencies.RemoveRange(existingDeps); - } - - // Add new dependencies - if (dependencies.Count > 0) - { - var newDeps = new List(dependencies.Count); - foreach (string dependencie in dependencies) - { - newDeps.Add(new Dependency - { - VarName = basename, - DependencyName = dependencie - }); - } - dbContext.Dependencies.AddRange(newDeps); - } - dbContext.SaveChanges(); - dbContext.ChangeTracker.Clear(); - } - } - } - else - { - if (varsrow.VarPath != curpath) - { - varsrow.VarPath = curpath; - dbContext.SaveChanges(); - dbContext.ChangeTracker.Clear(); - } - } - - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { destvarfilename + " " + ex.Message, LogLevel.ERROR }); - } - } - private bool UpdDB() - { - InvokeProgress mi = new InvokeProgress(UpdateProgress); - this.BeginInvoke(addlog, new Object[] { "Analyze Var files, extract preview images, save info to DB", LogLevel.INFO }); - string[] vars = Directory.GetFiles(Path.Combine(Settings.Default.varspath, tidiedDirName), "*.var", SearchOption.AllDirectories); - if (vars.Length <= 0) - { - MessageBox.Show("No VAR file found, please check if the path setting is wrong!"); - return false; - } - List existVars = new List(); - int curVarfile = 0; - foreach (string varfile in vars) - { - existVars.Add(Path.GetFileNameWithoutExtension(varfile)); - UpdDB(varfile); - curVarfile++; - this.BeginInvoke(mi, new Object[] { curVarfile, vars.Length }); - } - - List deletevars = new List(); - - - foreach (var row in dbContext.Vars) - { - if (!existVars.Contains(row.VarName)) - { - this.BeginInvoke(addlog, new Object[] { $"{row.VarName} The target VAR file is not found and the record will be deleted", LogLevel.WARNING }); - deletevars.Add(row.VarName); - } - } - deletevars = deletevars.Distinct().ToList(); - if (deletevars.Count > 0) - CleanVars(deletevars); - - return true; - } - private bool CleanVars(List deletevars) - { - try - { - this.BeginInvoke(addlog, new Object[] { $"Cleanup dependencies table...", LogLevel.INFO }); - var dependencierows = dbContext.Dependencies.Where(q => deletevars.Contains(q.VarName)).ToList(); - dbContext.Dependencies.RemoveRange(dependencierows); - dbContext.SaveChanges(); - this.BeginInvoke(addlog, new Object[] { $"Cleanup dependencies table completed.", LogLevel.INFO }); - - this.BeginInvoke(addlog, new Object[] { $"Cleanup scenes table...", LogLevel.INFO }); - var scenes = dbContext.Scenes.Where(q => deletevars.Contains(q.VarName)).ToList(); - dbContext.Scenes.RemoveRange(scenes); - dbContext.SaveChanges(); - this.BeginInvoke(addlog, new Object[] { $"Cleanup scenes table completed.", LogLevel.INFO }); - - this.BeginInvoke(addlog, new Object[] { $"Cleanup vars table...", LogLevel.INFO }); - var varrows = dbContext.Vars.Where(q => deletevars.Contains(q.VarName)).ToList(); - dbContext.Vars.RemoveRange(varrows); - dbContext.SaveChanges(); - this.BeginInvoke(addlog, new Object[] { $"Cleanup vars table completed.", LogLevel.INFO }); - - this.BeginInvoke(addlog, new Object[] { $"Cleanup PreviewPics...", LogLevel.INFO }); - foreach (string deletevar in deletevars) - DelePreviewPics(deletevar); - FixPreview(); - this.BeginInvoke(addlog, new Object[] { $"Cleanup PreviewPics completed.", LogLevel.INFO }); - - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { "delete record or preview error, " + ex.Message, LogLevel.ERROR }); - return false; - } - return true; - } - private bool CleanVar(string deletevar) - { - try - { - var dependencierows = dbContext.Dependencies.Where(q => q.VarName == deletevar).ToList(); - dbContext.Dependencies.RemoveRange(dependencierows); - dbContext.SaveChanges(); - - var scenes = dbContext.Scenes.Where(q => q.VarName == deletevar).ToList(); - dbContext.Scenes.RemoveRange(scenes); - dbContext.SaveChanges(); - - var row = dbContext.Vars.FirstOrDefault(v => v.VarName == deletevar); - if (row != null) - { - dbContext.Vars.Remove(row); - dbContext.SaveChanges(); - } - - DelePreviewPics(deletevar); - - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { deletevar + ",delete record or preview error, " + ex.Message, LogLevel.ERROR }); - } - return true; - } - - /// - /// varInstall - /// - /// - /// - /// - /// 0:faile,1:success锛2锛歩nstalled - private int VarInstall(string varName, bool bTemp = false, int operate = 1) - { - int success = 0; - if (operate >= 1) - { - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == varName); - if (varsrow != null) - { - //string[] varexist = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages"), varName + ".var"); - string linkvar = Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName, varName + ".var"); - if (bTemp) linkvar = Path.Combine(Settings.Default.vampath, "AddonPackages", tempVarLinkDirName, varName + ".var"); - if (File.Exists(linkvar + ".disabled") && operate == 1) - File.Delete(linkvar + ".disabled"); - if (File.Exists(linkvar)) - return 2; - - string destvarfile = Path.Combine(Settings.Default.varspath, varsrow.VarPath, varsrow.VarName + ".var"); - - if (!Comm.CreateSymbolicLink(linkvar, destvarfile, Comm.SYMBOLIC_LINK_FLAG.File)) - { - MessageBox.Show("Error: Unable to create symbolic link. " + - "(Error Code: " + Marshal.GetLastWin32Error() + ")"); - return 0; - } - if (operate == 2) - { - using (File.Create(linkvar + ".disabled")) { } - } - Comm.SetSymboLinkFileTime(linkvar, File.GetCreationTime(destvarfile), File.GetLastWriteTime(destvarfile)); - this.BeginInvoke(addlog, new Object[] { $"{varName} Installed", LogLevel.INFO }); - success = 1; - } - } - return success; - } - - private void backgroundWorkerInstall_DoWork(object sender, DoWorkEventArgs e) - { - mutex.WaitOne(); - try - { - string arg = (string)e.Argument; - if (arg == "FillDataTables") - { - FillDataTables(); - return; - } - if (arg == "UpdDB") - { - RunBackendJob("update_db", null); - BeginInvoke(new Action(RefreshVarsViewUi)); - return; - } - if (arg == "rebuildLink") - { - RunBackendJob("rebuild_links", new { include_missing = true }); - return; - } - if (arg == "fixPreview") - { - RunBackendJob("fix_previews", null); - BeginInvoke(new Action(() => MessageBox.Show("Fix preview finish"))); - BeginInvoke(new Action(RefreshVarsViewUi)); - return; - } - if (arg == "savesDepend") - { - var result = RunBackendJob("saves_deps", null); - var payload = DeserializeResult(result); - if (payload != null && payload.Missing.Count > 0) - { - BeginInvoke(new InvokeShowformMissingVars(ShowformMissingVars), payload.Missing); - } - RunBackendJob("rescan_packages", null); - BeginInvoke(new Action(RefreshVarsViewUi)); - return; - } - if (arg == "LogAnalysis") - { - var result = RunBackendJob("log_deps", null); - var payload = DeserializeResult(result); - if (payload != null && payload.Missing.Count > 0) - { - BeginInvoke(new InvokeShowformMissingVars(ShowformMissingVars), payload.Missing); - } - RunBackendJob("rescan_packages", null); - BeginInvoke(new Action(RefreshVarsViewUi)); - return; - } - if (arg == "MissingDepends") - { - var result = RunBackendJob("missing_deps", new { scope = "installed" }); - var payload = DeserializeResult(result); - if (payload != null && payload.Missing.Count > 0) - { - BeginInvoke(new InvokeShowformMissingVars(ShowformMissingVars), payload.Missing); - } - else - { - BeginInvoke(new Action(() => - MessageBox.Show("No missing dependencies found", "INFO", - MessageBoxButtons.OK, MessageBoxIcon.Information))); - } - RunBackendJob("rescan_packages", null); - BeginInvoke(new Action(RefreshVarsViewUi)); - return; - } - if (arg == "AllMissingDepends") - { - var result = RunBackendJob("missing_deps", new { scope = "all" }); - var payload = DeserializeResult(result); - if (payload != null && payload.Missing.Count > 0) - { - BeginInvoke(new InvokeShowformMissingVars(ShowformMissingVars), payload.Missing); - } - return; - } - if (arg == "FilteredMissingDepends") - { - var varNames = new List(); - System.Collections.IList listDatarow = varsViewBindingSource.List; - foreach (DataRowView varrowview in listDatarow) - { - varNames.Add(varrowview.Row.Field("varName")); - } - var result = RunBackendJob("missing_deps", new { scope = "filtered", var_names = varNames }); - var payload = DeserializeResult(result); - if (payload != null && payload.Missing.Count > 0) - { - BeginInvoke(new InvokeShowformMissingVars(ShowformMissingVars), payload.Missing); - } - return; - } - if (arg == "StaleVars") - { - RunBackendJob("stale_vars", null); - BeginInvoke(new Action(RefreshVarsViewUi)); - return; - } - if (arg == "OldVersionVars") - { - RunBackendJob("old_version_vars", null); - BeginInvoke(new Action(RefreshVarsViewUi)); - return; - } - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鍚庣浣滀笟澶辫触: {ex.Message}", LogLevel.ERROR }); - } - finally - { - mutex.ReleaseMutex(); - } - } - - private void backgroundWorkerInstall_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - - } - - private void buttonMissingDepends_Click(object sender, EventArgs e) - { - string message = "Analyzing dependencies from Installed Vars, if it is found in the repository it will be installed, otherwise a processing window will be opened."; - - const string caption = "MissingDepends"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - { - backgroundWorkerInstall.RunWorkerAsync("MissingDepends"); - } - } - - private void MissingDepends() - { - this.BeginInvoke(addlog, new Object[] { "Search for dependencies...", LogLevel.INFO }); - List dependencies = new List(); - foreach (var varrow in dbContext.VarsView.Where(q => q.Installed == true)) - { - var varDependencies = dbContext.Dependencies.Where(q => q.VarName == varrow.VarName).Select(q => q.DependencyName); - foreach (var dep in varDependencies) - { - if (!string.IsNullOrEmpty(dep)) - dependencies.Add(dep); - } - } - dependencies = dependencies.Distinct().ToList(); - List missingvars = new List(); - foreach (string varname in dependencies) - { - string varexistname = VarExistName(varname); - if (varexistname.EndsWith("$")) - { - varexistname = varexistname.Substring(0, varexistname.Length - 1); - missingvars.Add(varname+"$"); - this.BeginInvoke(addlog, new Object[] { varname + " missing version", LogLevel.INFO }); - } - if (varexistname != "missing") - { - VarInstall(varexistname); - //this.BeginInvoke(addlog, new Object[] { varexistname + " installed" ,LogLevel.ERROR}); - } - else - { - missingvars.Add(varname); - this.BeginInvoke(addlog, new Object[] { varname + " missing", LogLevel.INFO }); - } - } - if (missingvars.Count > 0) - { - InvokeShowformMissingVars showformMissingVars = new InvokeShowformMissingVars(ShowformMissingVars); - this.BeginInvoke(showformMissingVars, missingvars); - } - else - { - MessageBox.Show("No missing dependencies found", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - } - - private void FilteredMissingDepends() - { - this.BeginInvoke(addlog, new Object[] { "Search for dependencies...", LogLevel.INFO }); - List dependencies = new List(); - System.Collections.IList listDatarow = varsViewBindingSource.List; - - foreach (DataRowView varrowview in listDatarow) - { - dependencies.AddRange(dbContext.Dependencies.Where(q => q.VarName == varrowview.Row.Field("varName")).Select(q => q.DependencyName)); - } - - dependencies = dependencies.Distinct().ToList(); - List missingvars = new List(); - foreach (string varname in dependencies) - { - string varexistname = VarExistName(varname); - if (varexistname.EndsWith("$")) - { - varexistname = varexistname.Substring(0, varexistname.Length - 1); - missingvars.Add(varname+"$"); - this.BeginInvoke(addlog, new Object[] { varname + " missing version", LogLevel.INFO }); - } - if (varexistname != "missing") - { - //VarInstall(varexistname); - //this.BeginInvoke(addlog, new Object[] { varexistname + " installed" ,LogLevel.ERROR}); - } - else - { - missingvars.Add(varname); - this.BeginInvoke(addlog, new Object[] { varname + " missing", LogLevel.INFO }); - } - } - if (missingvars.Count > 0) - { - InvokeShowformMissingVars showformMissingVars = new InvokeShowformMissingVars(ShowformMissingVars); - this.BeginInvoke(showformMissingVars, missingvars); - } - - } - - private void buttonAllMissingDepends_Click(object sender, EventArgs e) - { - string message = "Analyzing dependencies from All organized vars, a processing window will be opened."; - - const string caption = "AllMissingDepends"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - { - backgroundWorkerInstall.RunWorkerAsync("AllMissingDepends"); - } - } - public void AllMissingDepends() - { - this.BeginInvoke(addlog, new Object[] { "Search for dependencies...", LogLevel.INFO }); - - List missingvars = MissingDependencies(); - if (missingvars.Count > 0) - { - this.BeginInvoke(addlog, new Object[] { $"Total { missingvars.Count } dependencies missing", LogLevel.INFO }); - InvokeShowformMissingVars showformMissingVars = new InvokeShowformMissingVars(ShowformMissingVars); - this.BeginInvoke(showformMissingVars, missingvars); - } - } - - public List MissingDependencies() - { - List dependencies = new List(); - - dependencies.AddRange(dbContext.Dependencies.Select(q => q.DependencyName)); - - dependencies = dependencies.Distinct().ToList(); - List missingvars = new List(); - foreach (string varname in dependencies) - { - string varexistname = VarExistName(varname); - if (varexistname.EndsWith("$")) - { - varexistname = varexistname.Substring(0, varexistname.Length - 1); - missingvars.Add(varname + "$"); - //this.BeginInvoke(addlog, new Object[] { varname + " missing version" ,LogLevel.ERROR}); - } - if (varexistname != "missing") - { - //VarInstall(varexistname); - //this.BeginInvoke(addlog, new Object[] { varexistname + " installed" ,LogLevel.ERROR}); - } - else - { - missingvars.Add(varname); - - } - } - - return missingvars; - } - - private void FixRebuildLink() - { - this.BeginInvoke(addlog, new Object[] { "Check Installed symlink", LogLevel.INFO }); - //List varfiles = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName), "*.var", SearchOption.AllDirectories).ToList(); - List varfiles = GetInstalledVars().Values.ToList(); - if (Directory.Exists(Path.Combine(Settings.Default.vampath, "AddonPackages", missingVarLinkDirName))) - varfiles.AddRange(Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages", missingVarLinkDirName), "*.var", SearchOption.AllDirectories)); - - foreach (string linkvar in varfiles) - { - try - { - FileInfo pathInfo = new FileInfo(linkvar); - if (pathInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - { - string destfilename = Comm.ReparsePoint(linkvar); - this.BeginInvoke(addlog, new Object[] { $"symlink {linkvar} rebuilding ...", LogLevel.INFO }); - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == Path.GetFileNameWithoutExtension(destfilename)); - File.Delete(linkvar); - if (varsrow != null) - { - string destvarfile = Path.Combine(Settings.Default.varspath, varsrow.VarPath, varsrow.VarName + ".var"); - Comm.CreateSymbolicLink(linkvar, destvarfile, Comm.SYMBOLIC_LINK_FLAG.File); - Comm.SetSymboLinkFileTime(linkvar, File.GetCreationTime(destvarfile), File.GetLastWriteTime(destvarfile)); - } - } - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { linkvar + " rebuild symlink failed. " + ex.Message, LogLevel.ERROR }); - } - } - - MessageBox.Show("fix finish"); - } - - private bool ReExtractedPreview(Scene scenerow) - { - bool success = false; - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == scenerow.VarName); - if (varsrow != null) - { - string destvarfile = Path.Combine(Settings.Default.varspath, varsrow.VarPath!, varsrow.VarName + ".var"); - if (File.Exists(destvarfile)) - { - //using (ZipArchive varzipfile = ZipFile.OpenRead(destvarfile)) - using (ZipFile varzipfile = new ZipFile(destvarfile)) - { - string jpgfile = scenerow.ScenePath!.Substring(0, scenerow.ScenePath.LastIndexOf('.')) + ".jpg"; - var jpg = varzipfile.GetEntry(jpgfile); - if (jpg != null) - { - string picpath = Path.Combine(Settings.Default.varspath, previewpicsDirName, scenerow.AtomType!, scenerow.VarName, scenerow.PreviewPic!); - - string jpgdirectory = Path.GetDirectoryName(picpath); - if(!Directory.Exists(jpgdirectory)) - Directory.CreateDirectory(jpgdirectory); - if (!File.Exists(picpath)) - { - using (var sr = varzipfile.GetInputStream(jpg)) - using (var streamWriter = File.Create(picpath)) - { - sr.CopyTo(streamWriter); - } - } - success = true; - } - } - } - } - return success; - } - private void FixPreview() - { - foreach (var scenerow in dbContext.Scenes.Where(q => !string.IsNullOrEmpty(q.PreviewPic))) - { - string picpath = Path.Combine(Settings.Default.varspath, previewpicsDirName, scenerow.AtomType!, scenerow.VarName, scenerow.PreviewPic!); - if (!File.Exists(picpath)) - { - if (ReExtractedPreview(scenerow)) - { - this.BeginInvoke(addlog, new Object[] { $"missing {picpath} is fixed.", LogLevel.INFO }); - } - else - { - this.BeginInvoke(addlog, new Object[] { $"{picpath} is missing and the repair failed", LogLevel.WARNING }); - } - } - } - - } - private void FixSavseDependencies() - { - List dependencies = new List(); - this.BeginInvoke(addlog, new Object[] { "Analyze the *.json files in the 'Save' directory and the *.vap files in the 'Custom' directory ", LogLevel.INFO }); - // Clear and reload saved dependencies - dbContext.SavedDependencies.RemoveRange(dbContext.SavedDependencies); - dbContext.SaveChanges(); - List savefiles = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "Saves"), "*.json", SearchOption.AllDirectories).ToList(); - savefiles.AddRange(Directory.GetFiles(Path.Combine(Settings.Default.vampath, "Custom"), "*.vap", SearchOption.AllDirectories)); - foreach (string jsonfile in savefiles) - { - FileInfo fi = new FileInfo(jsonfile); - string savepath = jsonfile.Substring(Settings.Default.vampath.Length); - if (savepath.Length > 255) savepath = savepath.Substring(savepath.Length - 255); - - this.BeginInvoke(addlog, new Object[] { $"Analyze { Path.GetFileName(jsonfile)} ...", LogLevel.INFO }); - - var rows = dbContext.SavedDependencies.Where(q => q.SavePath == savepath && q.ModiDate.HasValue && Math.Abs((q.ModiDate.Value - fi.LastWriteTime).TotalSeconds) <= 2).ToList(); - - if (rows.Any()) - { - // Dependencies already exist for this file, no need to reprocess - } - else - { - try - { - string jsonstring; - using (var metajsonsteam = new StreamReader(jsonfile)) - { - jsonstring = metajsonsteam.ReadToEnd(); - } - foreach (string dependency in Getdependencies(jsonstring)) - { - dbContext.SavedDependencies.Add(new SavedDependency - { - SavePath = savepath, - ModiDate = fi.LastWriteTime, - DependencyName = dependency - }); - } - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { jsonfile + " Get dependencies failed " + ex.Message, LogLevel.ERROR }); - } - } - } - // Save all changes - dbContext.SaveChanges(); - dependencies = dbContext.SavedDependencies.Select(q => q.DependencyName).Distinct().ToList(); - //dependencies = dependencies.Distinct().ToList(); - var dependencies2 = VarsDependencies(dependencies); - dependencies = dependencies.Concat(dependencies2).Distinct().OrderBy(q => q).ToList(); - - //List varinstalled = new List(); - //foreach (string varfile in Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName), "*.var", SearchOption.AllDirectories)) - //{ - // varinstalled.Add(Path.GetFileNameWithoutExtension(varfile)); - //} - //foreach (string varfile in Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages", missingVarLinkDirName), "*.var", SearchOption.AllDirectories)) - //{ - // varinstalled.Add(Path.GetFileNameWithoutExtension(varfile)); - //} - List varinstalled = GetInstalledVars().Keys.ToList(); - dependencies = dependencies.Except(varinstalled).ToList(); - this.BeginInvoke(addlog, new Object[] { $"{dependencies.Count()} var files will be installed", LogLevel.INFO }); - List missingvars = new List(); - foreach (string varname in dependencies) - { - string varexistname = VarExistName(varname); - if (varexistname.EndsWith("$")) - { - varexistname = varexistname.Substring(0, varexistname.Length - 1); - missingvars.Add(varname + "$"); - } - if (varexistname != "missing") - { - VarInstall(varexistname); - this.BeginInvoke(addlog, new Object[] { varexistname + " installed", LogLevel.INFO }); - } - else - { - missingvars.Add(varname); - } - } - missingvars = missingvars.Distinct().ToList(); - if (missingvars.Count > 0) - { - InvokeShowformMissingVars showformMissingVars = new InvokeShowformMissingVars(ShowformMissingVars); - this.BeginInvoke(showformMissingVars, missingvars); - } - else - MessageBox.Show("fix finish"); - } - - private void buttonFixRebuildLink_Click(object sender, EventArgs e) - { - string message = "will analyze and repair symlinks in the AddonPackages folder, if your var file repository changes location"; - - const string caption = "RebuildLink"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - backgroundWorkerInstall.RunWorkerAsync("rebuildLink"); - } - - private void buttonFixSavesDepend_Click(object sender, EventArgs e) - { - string message = "Analyzing dependencies from json files in \"Saves\" folder"; - - const string caption = "SavesDependencies"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - backgroundWorkerInstall.RunWorkerAsync("savesDepend"); - } - - private void comboBoxCreater_SelectedIndexChanged(object sender, EventArgs e) - { - FilterVars(); - } - - private void FilterVars() - { - string strFilter = "1=1"; - if (comboBoxCreater.SelectedItem != null) - if (comboBoxCreater.SelectedItem.ToString() != "____ALL") - strFilter += " AND creatorName = '" + comboBoxCreater.SelectedItem.ToString() + "'"; - if (textBoxFilter.Text.Trim() != "") - { - strFilter += " AND varName Like '%" + textBoxFilter.Text.Trim().Replace("'", "''") + "%'"; - } - if (checkBoxInstalled.CheckState == CheckState.Checked) - { - strFilter += " AND installed"; - } - if (checkBoxInstalled.CheckState == CheckState.Unchecked) - { - strFilter += " AND (NOT installed OR installed Is Null )"; - } - - this.comboBoxCreater.SelectedIndexChanged -= new System.EventHandler(this.comboBoxCreater_SelectedIndexChanged); - var creators = dbContext.Vars - .Where(v => string.IsNullOrEmpty(textBoxFilter.Text.Trim()) || v.VarName!.ToLower().Contains(textBoxFilter.Text.Trim().ToLower())) - .GroupBy(v => v.CreatorName) - .Select(g => g.Key) - .OrderBy(c => c) - .ToList(); - string curcreator = comboBoxCreater.Text; - comboBoxCreater.Items.Clear(); - comboBoxCreater.Items.Add("____ALL"); - foreach (var creator in creators) - { - comboBoxCreater.Items.Add(creator); - } - if (comboBoxCreater.Items.Contains(curcreator)) - comboBoxCreater.SelectedItem = curcreator; - else - comboBoxCreater.SelectedIndex = 0; - this.comboBoxCreater.SelectedIndexChanged += new System.EventHandler(this.comboBoxCreater_SelectedIndexChanged); - - varsViewBindingSource.Filter = strFilter; - varsViewDataGridView.Update(); - } - public string VarExistName(string varname) - { - string varrealver = "missing"; - string[] varnamepart = varname.Split('.'); - if (varnamepart.Length == 3) - { - if (varnamepart[2].ToLower() == "latest") - { - var packs = dbContext.Vars.Where(q => q.CreatorName == varnamepart[0] && q.PackageName == varnamepart[1]); - if (packs.Any()) - { - var packsList = packs.ToList(); // Execute query first - var latestPack = packsList - .Where(p => int.TryParse(p.Version, out _)) // Filter valid versions - .OrderByDescending(p => int.TryParse(p.Version, out int ver) ? ver : 0) - .FirstOrDefault(); - varrealver = latestPack?.VarName ?? "missing"; - } - } - else - { - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == varname); - if (varsrow != null) - varrealver = varname; - else - { - if (int.TryParse(varnamepart[2], out int requestedVersion)) - { - string closestver = GetClosestMatchingPackageVersion(varnamepart[0], varnamepart[1], requestedVersion); - if (closestver != "missing") - varrealver = closestver + "$"; - } - } - } - } - return varrealver; - } - public string GetClosestMatchingPackageVersion(string creatorName,string packageName,int requestVersion) - { - var packs = dbContext.Vars.Where(q => q.CreatorName == creatorName && q.PackageName == packageName) - .ToList() // Execute query first - .Where(q => int.TryParse(q.Version, out _)) // Filter only valid integer versions - .OrderBy(q => int.TryParse(q.Version, out int ver) ? ver : 0); - if (packs.Any()) - { - foreach (var pack in packs) - { - if (int.TryParse(pack.Version, out int packVersion) && packVersion >= requestVersion) - { - return pack.VarName!; - } - } - return packs.Last().VarName!; - } - return "missing"; - } - private List VarsDependencies(string varname) - { - List depens = new List(); - foreach (var depenrow in dbContext.Dependencies.Where(q => q.VarName == varname)) - depens.Add(depenrow.DependencyName!); - return depens; - - } - - private List VarsDependencies(List varnames) - { - List varnameexist = new List(); - List varsProccessed = new List(); - List vardeps = new List(); - foreach (string varname in varnames) - { - if (varname[varname.Length - 1] == '^') - varsProccessed.Add(varname.Substring(0, varname.Length - 1)); - else - { - string varexistname = VarExistName(varname); - if (varexistname.EndsWith("$")) - { - varexistname = varexistname.Substring(0, varexistname.Length - 1); - } - if (varexistname != "missing") - varnameexist.Add(varexistname); - } - } - - varnameexist = varnameexist.Distinct().Except(varsProccessed).ToList(); - foreach (string varname in varnameexist) - { - vardeps.AddRange(VarsDependencies(varname)); - } - varsProccessed.AddRange(varnameexist); - varsProccessed = varsProccessed.Distinct().ToList(); - - vardeps = vardeps.Distinct().Except(varsProccessed).ToList(); - if (vardeps.Count() > 0) - { - foreach (string varname in varsProccessed) - { - vardeps.Add(varname + "^"); - } - return VarsDependencies(vardeps); - } - else - { - varsProccessed = varsProccessed.Select(q => q.Trim('^')).Distinct().ToList(); - return varsProccessed; - } - } - - private void varsDataGridView_SelectionChanged(object sender, EventArgs e) - { - UpdatePreviewPics(); - tableLayoutPanelPreview.Visible = false; - } - - public struct Previewpic - { - public Previewpic(string varname, string atomtype, string picpath, bool installed, string scenePath, bool ispreset) - { - Varname = varname; - Atomtype = atomtype; - Picpath = picpath; - Installed = installed; - ScenePath = scenePath; - IsPreset = ispreset; - - } - public string Varname { get; } - public string Atomtype { get; } - public string Picpath { get; } - public bool Installed { get; } - public string ScenePath { get; } - public bool IsPreset { get; } - } - - private List previewpics = new List(); - - private List previewpicsfilter = new List(); - - private void UpdatePreviewPics() - { - if (IsDisposed) return; - - previewpics.Clear(); - foreach (DataGridViewRow row in varsViewDataGridView.SelectedRows) - { - string varName = row.Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - var installedCell = row.Cells["installedDataGridViewCheckBoxColumn"]; - bool installed = false; - - if (true.Equals(installedCell.Value)) - { - installed = true; - } - foreach (var scenerow in dbContext.Scenes.Where(q => q.VarName == varName)) - { - previewpics.Add(new Previewpic(varName, scenerow.AtomType!, scenerow.PreviewPic!, installed, scenerow.ScenePath!, scenerow.IsPreset)); - } - } - PreviewInitType(); - } - - private void PreviewInitType() - { - if (IsDisposed || mut == null) return; - - try - { - mut.WaitOne(); - previewpicsfilter = previewpics; - if (checkBoxPreviewTypeLoadable.CheckState == CheckState.Checked) - previewpicsfilter = previewpicsfilter.Where(q => q.IsPreset || q.Atomtype == "scenes").ToList(); - string previewtype = "all"; - if (new string[8] { "scenes", "looks", "clothing", "hairstyle", "assets", "morphs", "pose", "skin" }.Contains(comboBoxPreviewType.Text)) - previewtype = comboBoxPreviewType.Text; - if (previewtype != "all") - previewpicsfilter = previewpicsfilter.Where(q => q.Atomtype == previewtype).ToList(); - mut.ReleaseMutex(); - - if (!IsDisposed) - { - listViewPreviewPics.VirtualListSize = previewpicsfilter.Count; - listViewPreviewPics.Invalidate(); - toolStripLabelPreviewCountItem.Text = "/" + previewpicsfilter.Count.ToString(); - } - } - catch (ObjectDisposedException) - { - return; - } - catch (Exception) - { - try { mut.ReleaseMutex(); } catch { } - throw; - } - /* - toolStripComboBoxPreviewPage.SelectedIndexChanged -= new System.EventHandler(this.toolStripComboBoxPreviewPage_SelectedIndexChanged); toolStripComboBoxPreviewPage.Items.Clear(); - previewPages = (previewpicsfilter.Count + maxpicxPerpage - 1) / maxpicxPerpage; - toolStripLabelPreviewCountItem.Text = "/" + previewpicsfilter.Count.ToString(); - toolStripComboBoxPreviewPage.Items.Clear(); - if (previewPages >= 1) - { - for (int page = 0; page < previewPages; page++) - { - int min = page * maxpicxPerpage + 1; - int max = (page + 1) * maxpicxPerpage; - if (max > previewpicsfilter.Count) max = previewpicsfilter.Count; - - string strpage = min.ToString("000") + " - " + max.ToString("000"); - toolStripComboBoxPreviewPage.Items.Add(strpage); - } - toolStripComboBoxPreviewPage.SelectedIndex = 0; - //PreviewPage(); - } - else - { - imageListPreviewPics.Images.Clear(); - listViewPreviewPics.Items.Clear(); - } - toolStripComboBoxPreviewPage.SelectedIndexChanged += new System.EventHandler(this.toolStripComboBoxPreviewPage_SelectedIndexChanged); - if (previewPages >= 1) - PreviewPage(); - */ - } - - - public delegate void InvokePreviewPics(string varname, - string picpath, - bool installed, - string typename, - string scenepath, - bool ispreset); - public void PreviewPics(string varname, - string picpath, - bool installed, - string typename, - string scenepath, - bool ispreset) - { - if (varname == "clear") - { - imageListPreviewPics.Images.Clear(); - listViewPreviewPics.Items.Clear(); - } - else - { - if (string.IsNullOrWhiteSpace(picpath)) - { - imageListPreviewPics.Images.Add(Image.FromFile("vam.png")); - } - else - { - picpath = Path.Combine(Settings.Default.varspath, previewpicsDirName, typename, varname, picpath); - if (File.Exists(picpath)) - { - imageListPreviewPics.Images.Add(Image.FromFile(picpath)); - } - else - { - imageListPreviewPics.Images.Add(Image.FromFile("vam.png")); - } - } - var item = listViewPreviewPics.Items.Add(Path.GetFileNameWithoutExtension(picpath), imageListPreviewPics.Images.Count - 1); - item.SubItems.Add(varname); - item.SubItems.Add(picpath); - item.SubItems.Add(installed.ToString()); - item.SubItems.Add(typename); - item.SubItems.Add(scenepath); - item.SubItems.Add(ispreset.ToString()); - } - } - - private void listViewPreviewPics_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) - { - var curpriviewpic = previewpicsfilter[e.ItemIndex]; - string key = "vam.png"; - if (!string.IsNullOrWhiteSpace(curpriviewpic.Picpath)) - { - string picpath= Path.Combine(Settings.Default.varspath, previewpicsDirName, curpriviewpic.Atomtype, curpriviewpic.Varname, curpriviewpic.Picpath); - if (File.Exists(picpath)) - key = picpath; - else - { - this.BeginInvoke(addlog, new Object[] { $"{picpath} is missing,Please run 'fix preview'", LogLevel.WARNING }); - buttonFixPreview.Focus(); - } - - } - if (!imageListPreviewPics.Images.ContainsKey(key)) - { - imageListPreviewPics.Images.Add(key, Image.FromFile(key)); - if (imageListPreviewPics.Images.Count > 20) imageListPreviewPics.Images.RemoveAt(0); - } - string itemname = Path.GetFileNameWithoutExtension(curpriviewpic.Picpath); - if(string.IsNullOrEmpty(itemname)) - { - itemname = curpriviewpic.Atomtype + "_" + Path.GetFileNameWithoutExtension(curpriviewpic.ScenePath); - } - e.Item = new ListViewItem(itemname, imageListPreviewPics.Images.IndexOfKey(key)); - e.Item.SubItems.Add(curpriviewpic.Varname); - e.Item.SubItems.Add(key); - e.Item.SubItems.Add(curpriviewpic.Installed.ToString()); - e.Item.SubItems.Add(curpriviewpic.Atomtype); - e.Item.SubItems.Add(curpriviewpic.ScenePath); - e.Item.SubItems.Add(curpriviewpic.IsPreset.ToString()); - - } - /* - private void backgroundWorkerPreview_DoWork(object sender, DoWorkEventArgs e) - { - InvokePreviewPics previewpics = new InvokePreviewPics(PreviewPics); - int startpic = maxpicxPerpage * previewCurPage; - listViewPreviewPics.BeginInvoke(previewpics, "clear", "", true, "", "", true); - for (int i = 0; i < maxpicxPerpage; i++) - { - Thread.Sleep(5); - if (backgroundWorkerPreview.CancellationPending) - { - //Tell the Backgroundworker you are canceling and exit the for-loop - e.Cancel = true; - return; - } - mutex.Wait(); - if (previewpicsfilter.Count > startpic + i) - { - this.BeginInvoke(previewpics, - previewpicsfilter[startpic + i].Varname, - previewpicsfilter[startpic + i].Picpath, - previewpicsfilter[startpic + i].Installed, - previewpicsfilter[startpic + i].Atomtype, - previewpicsfilter[startpic + i].ScenePath, - previewpicsfilter[startpic + i].IsPreset - ); - - } - mutex.Release(); - } - } - */ - - private void toolStripComboBoxPreviewType_SelectedIndexChanged(object sender, EventArgs e) - { - PreviewInitType(); - } - /* - private void toolStripComboBoxPreviewPage_SelectedIndexChanged(object sender, EventArgs e) - { - PreviewPage(); - } - - private void PreviewPage() - { - previewCurPage = toolStripComboBoxPreviewPage.SelectedIndex; - while (backgroundWorkerPreview.IsBusy) - { - backgroundWorkerPreview.CancelAsync(); - // Keep UI messages moving, so the form remains - // responsive during the asynchronous operation. - Application.DoEvents(); - } - backgroundWorkerPreview.RunWorkerAsync(); - } - */ - private void toolStripButtonPreviewFirst_Click(object sender, EventArgs e) - { - int selectindex = 0; - listViewPreviewPics.Items[selectindex].Selected = true; - listViewPreviewPics.EnsureVisible(selectindex); - // if (toolStripComboBoxPreviewPage.SelectedIndex > 0) toolStripComboBoxPreviewPage.SelectedIndex = 0; - } - - private void toolStripButtonPreviewPrev_Click(object sender, EventArgs e) - { - int selectindex = 0; - if (listViewPreviewPics.SelectedIndices.Count >= 1) - { - int index = listViewPreviewPics.SelectedIndices[0]; - if (index > 0) selectindex = index - 1; - } - - listViewPreviewPics.Items[selectindex].Selected = true; - listViewPreviewPics.EnsureVisible(selectindex); - // if (toolStripComboBoxPreviewPage.SelectedIndex > 0) toolStripComboBoxPreviewPage.SelectedIndex--; - } - - private void toolStripButtonPreviewNext_Click(object sender, EventArgs e) - { - int selectindex = listViewPreviewPics.Items.Count-1; - if (listViewPreviewPics.SelectedIndices.Count >= 1) - { - int index = listViewPreviewPics.SelectedIndices[0]; - if (index < listViewPreviewPics.Items.Count - 1) selectindex = index + 1; - } - - listViewPreviewPics.Items[selectindex].Selected = true; - listViewPreviewPics.EnsureVisible(selectindex); - // if (toolStripComboBoxPreviewPage.SelectedIndex < toolStripComboBoxPreviewPage.Items.Count - 1) toolStripComboBoxPreviewPage.SelectedIndex++; - } - - private void toolStripButtonPreviewLast_Click(object sender, EventArgs e) - { - int selectindex = listViewPreviewPics.Items.Count - 1; - listViewPreviewPics.Items[selectindex].Selected = true; - listViewPreviewPics.EnsureVisible(selectindex); - // if (toolStripComboBoxPreviewPage.SelectedIndex < toolStripComboBoxPreviewPage.Items.Count - 1) toolStripComboBoxPreviewPage.SelectedIndex = toolStripComboBoxPreviewPage.Items.Count - 1; - - } - - private void buttonStaleVars_Click(object sender, EventArgs e) - { - /* - string message = $"Stale var means:\r\n1,The version is not the latest.\r\n2,Not depended by other var.\r\nThey will be moved to the {staleVarsDirName} directory"; - - const string caption = "StaleVars"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - */ - FormStaleVars formStaleVars = new FormStaleVars(); - if (formStaleVars.ShowDialog() == DialogResult.OK) - { - if (formStaleVars.removeOldVersion) - backgroundWorkerInstall.RunWorkerAsync("OldVersionVars"); - else - backgroundWorkerInstall.RunWorkerAsync("StaleVars"); - } - } - - void StaleVars() - { - var varsData = dbContext.Vars.ToList(); // Execute query first - var query = varsData.GroupBy(g => g.CreatorName + "." + g.PackageName) - .Select(group => new - { - Key = group.Key, - Count = group.Count(), - MaxVersion = group.Where(v => int.TryParse(v.Version, out _)) - .Select(v => int.TryParse(v.Version, out int ver) ? ver : 0) - .DefaultIfEmpty(0) - .Max(), - Vars = group.ToList() - }); - List listOldvar = new List(); - foreach (var result in query) - { - if (result.Count > 1) - { - foreach (var oldvar in result.Vars.Where(v => (int.TryParse(v.Version, out int ver) ? ver : 0) != result.MaxVersion)) - { - listOldvar.Add(oldvar.VarName!); - } - } - } - string stalepath = Path.Combine(Settings.Default.varspath, staleVarsDirName); - if (!Directory.Exists(stalepath)) - Directory.CreateDirectory(stalepath); - var installedvars = GetInstalledVars(); - foreach (var oldvar in listOldvar) - { - if (dbContext.Dependencies.Count(q => q.DependencyName == oldvar) == 0) - { - if (installedvars.ContainsKey(oldvar)) - { - File.Delete(installedvars[oldvar]); - } - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == oldvar); - if (varsrow != null) - { - string oldv = Path.Combine(Settings.Default.varspath, varsrow.VarPath!, oldvar + ".var"); - string stalev = Path.Combine(stalepath, oldvar + ".var"); - try - { - this.BeginInvoke(addlog, new Object[] { $"move {oldv} to {stalepath}.", LogLevel.INFO }); - File.Move(oldv, stalev); - CleanVar(oldvar); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"{oldv} move failed,{ex.Message}", LogLevel.ERROR }); - } - } - } - } - System.Diagnostics.Process.Start(stalepath); - } - - void OldVersionVars() - { - var varsData = dbContext.Vars.Where(q => q.Plugins <= 0 || q.Scenes > 0 || q.Looks > 0).ToList(); - var versionLastest = varsData.GroupBy(g => g.CreatorName + "." + g.PackageName) - .Select(group => new - { - Key = group.Key, - Count = group.Count(), - MaxVersion = group.Where(v => int.TryParse(v.Version, out _)) - .Select(v => int.TryParse(v.Version, out int ver) ? ver : 0) - .DefaultIfEmpty(0) - .Max(), - Vars = group.ToList() - }); - List listOldvar = new List(); - foreach (var result in versionLastest) - { - if (result.Count > 1) - { - foreach (var oldvar in result.Vars.Where(v => (int.TryParse(v.Version, out int ver) ? ver : 0) != result.MaxVersion)) - { - listOldvar.Add(oldvar.VarName!); - } - } - } - string oldversionpath = Path.Combine(Settings.Default.varspath, oldVersionVarsDirName); - if (!Directory.Exists(oldversionpath)) - Directory.CreateDirectory(oldversionpath); - var installedvars = GetInstalledVars(); - foreach (var oldvar in listOldvar) - { - if (installedvars.ContainsKey(oldvar)) - { - string basename = oldvar.Substring(0, oldvar.LastIndexOf(".")); - string varlastest = basename + "." + versionLastest.Where(q => q.Key == basename).First().MaxVersion.ToString(); - File.Delete(installedvars[oldvar]); - VarInstall(varlastest); - } - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == oldvar); - if (varsrow != null) - { - string oldv = Path.Combine(Settings.Default.varspath, varsrow.VarPath!, oldvar + ".var"); - string oldversionv = Path.Combine(oldversionpath, oldvar + ".var"); - try - { - this.BeginInvoke(addlog, new Object[] { $"move {oldv} to {oldversionpath}.", LogLevel.INFO }); - File.Move(oldv, oldversionv); - CleanVar(oldvar); - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"{oldv} move failed,{ex.Message}", LogLevel.ERROR }); - } - } - } - System.Diagnostics.Process.Start(oldversionpath); - } - - private void textBoxFilter_TextChanged(object sender, EventArgs e) - { - FilterVars(); - } - - private void checkBoxInstalled_CheckStateChanged(object sender, EventArgs e) - { - FilterVars(); - } - - private void varsViewDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (varsViewDataGridView.Columns[e.ColumnIndex].Name == "installedDataGridViewCheckBoxColumn" && e.RowIndex >= 0) - { - string varName = varsViewDataGridView.Rows[e.RowIndex].Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - bool installed = false; - var row = dbContext.InstallStatuses.FirstOrDefault(i => i.VarName == varName); - if (row != null) - { - installed = row.Installed; - } - if (installed) - { - UninstallVarWithPreview(varName); - } - else - { - string message = varName + " will be installed, are you sure?"; - string caption = "Install Var"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result == DialogResult.Yes) - { - try - { - RunBackendJob("vars_toggle_install", new { var_name = varName, include_dependencies = true, include_implicated = true }); - RefreshVarsViewUi(); - RunBackendJob("rescan_packages", null); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"瀹夎澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - } - } - if (varsViewDataGridView.Columns[e.ColumnIndex].Name == "ColumnDetail" && e.RowIndex >= 0) - { - string varName = varsViewDataGridView.Rows[e.RowIndex].Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - VarDetail(varName); - } - } - - public bool IsVarInstalled(string varName) - { - var installstatusrow = dbContext.InstallStatuses.FirstOrDefault(i => i.VarName == varName); - if (installstatusrow != null) - return installstatusrow.Installed; - else - return false; - } - private void VarDetail(string varName) - { - FormVarDetail formVarDetail = new FormVarDetail(); - formVarDetail.form1 = this; - formVarDetail.strVarName = varName; - - formVarDetail.dependencies = new Dictionary(); - foreach(var dependrow in dbContext.Dependencies.Where(q => q.VarName == varName)) - { - string existName = VarExistName(dependrow.DependencyName!); - if (existName.EndsWith("$")) - { - existName = existName.Substring(0, existName.Length - 1); - } - formVarDetail.dependencies[dependrow.DependencyName!] = existName; - } - formVarDetail.DependentVarList = DependentVars(varName); - formVarDetail.DependentJsonList = DependentSaved(varName); - if (formVarDetail.ShowDialog() == DialogResult.OK) - { - if (formVarDetail.strAction == "filter") - { - string creator = varName.Substring(0, varName.IndexOf(".")); - comboBoxCreater.Text = creator; - } - } - } - - private void buttonInstall_Click(object sender, EventArgs e) - { - List varNames = new List(); - foreach (DataGridViewRow row in varsViewDataGridView.SelectedRows) - { - string varName = row.Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - bool install = false; - var varsrow = dbContext.InstallStatuses.FirstOrDefault(i => i.VarName == varName); - if (varsrow != null) - { - if (varsrow.Installed) - { - install = true; ; - } - } - if (!install) - { - varNames.Add(varName); - } - } - if (varNames.Count <= 0) return; - int max = 500; - if (varNames.Count > max) - { - MessageBox.Show($"Please do not install more than {max} files at once"); - return; - } - string message = $"There are {varNames.Count} vars and their dependencies will be installed, are you sure?"; - string caption = "Install Var"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result == DialogResult.Yes) - { - try - { - RunBackendJob("install_vars", new { var_names = varNames, include_dependencies = true }); - RefreshVarsViewUi(); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"瀹夎澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - } - public List GetDependents(string dependName) - { - List result = new List(); - foreach (var dependrow in dbContext.Dependencies.Where(q => q.DependencyName == dependName)) - { - result.Add(dependrow.VarName!); - } - foreach (var dependrow in dbContext.SavedDependencies.Where(q => q.DependencyName == dependName)) - { - result.Add(dependrow.SavePath!); - } - return result; - - } - - private void buttonpreviewback_Click(object sender, EventArgs e) - { - tableLayoutPanelPreview.Visible = false; - } - - private void buttonScenesManager_Click(object sender, EventArgs e) - { - FormScenes formScenes = new FormScenes(); - formScenes.form1 = this; - formScenes.Show(); - } - - private void pictureBoxPreview_Click(object sender, EventArgs e) - { - tableLayoutPanelPreview.Visible = false; - } - private string curVarName = "",curEntryName=""; - private JSONClass jsonLoadScene; - private void listViewPreviewPics_Click(object sender, EventArgs e) - { - if (listViewPreviewPics.SelectedIndices.Count >= 1) - { - tableLayoutPanelPreview.Dock = DockStyle.Fill; - tableLayoutPanelPreview.Visible = true; - int index = listViewPreviewPics.SelectedIndices[0]; - toolStripLabelPreviewItemIndex.Text = index.ToString(); - var item = listViewPreviewPics.Items[index]; - if (item != null) - { - curVarName = item.SubItems[1].Text; - curEntryName = item.SubItems[5].Text; - labelPreviewVarName.Text = curVarName; - if (string.IsNullOrEmpty(item.SubItems[2].Text)) - pictureBoxPreview.Image = pictureBoxPreview.Image = Image.FromFile("vam.png"); - else - pictureBoxPreview.Image = Image.FromFile(item.SubItems[2].Text); - - if (item.SubItems[3].Text.ToLower() == "true") - { - buttonpreviewinstall.Text = "Uninstall"; - buttonpreviewinstall.ForeColor = Color.Red; - } - - else - { - buttonpreviewinstall.Text = "Install"; - buttonpreviewinstall.ForeColor = Color.DarkBlue; - } - - if (item.SubItems[4].Text.ToLower() == "scenes" || item.SubItems[6].Text.ToLower() == "true") - { - buttonLoad.Visible = true; - checkBoxMerge.Visible = true; - checkBoxMerge.Checked = false; - buttonLoad.Text = "Load " + item.SubItems[4].Text; - string rescan = "false"; - if (item.SubItems[3].Text.ToLower() == "false") - rescan = "true"; - - jsonLoadScene = new JSONClass(); - jsonLoadScene.Add("rescan", rescan); - - jsonLoadScene.Add("resources", new JSONArray()); - JSONArray resources = jsonLoadScene["resources"].AsArray; - resources.Add(new JSONClass()); - JSONClass resource = (JSONClass)resources[resources.Count - 1]; - resource.Add("type", item.SubItems[4].Text.ToLower()); - resource.Add("saveName", curVarName + ":/" + curEntryName.Replace('\\', '/')); - UpdateButtonClearCache(); - - if (item.SubItems[4].Text.ToLower() == "scenes" || item.SubItems[4].Text.ToLower() == "looks") - { - buttonAnalysis.Visible = true; - } - else - { - buttonAnalysis.Visible = false; - } - if (item.SubItems[4].Text.ToLower() == "looks" || item.SubItems[4].Text.ToLower() == "clothing" || - item.SubItems[4].Text.ToLower() == "morphs" || item.SubItems[4].Text.ToLower() == "hairstyle" || - item.SubItems[4].Text.ToLower() == "skin" || item.SubItems[4].Text.ToLower() == "pose") - { - groupBoxPersonOrder.Visible = true; - checkBoxIgnoreGender.Visible = true; - } - else - { - groupBoxPersonOrder.Visible = false; - checkBoxIgnoreGender.Visible = false; - } - if (item.SubItems[4].Text.ToLower() == "morphs" || - item.SubItems[4].Text.ToLower() == "skin" || - item.SubItems[4].Text.ToLower() == "pose") - { - checkBoxForMale.Visible = true; - } - else - { - checkBoxForMale.Visible = false; - } - } - else - { - buttonLoad.Visible = false; - checkBoxMerge.Visible = false; - buttonAnalysis.Visible = false; - } - } - } - } - - private void UpdateButtonClearCache() - { - string sceneCacheFolderName = Path.Combine(Directory.GetCurrentDirectory(), "Cache", - Comm.ValidFileName(curVarName), Comm.ValidFileName(curEntryName.Replace('\\', '_').Replace('/', '_'))); - if (Directory.Exists(sceneCacheFolderName)) - { - buttonClearCache.Visible = true; - } - else - { - buttonClearCache.Visible = false; - } - } - - private static string GetKnownFolderPath(Guid knownFolderId) - { - IntPtr pszPath = IntPtr.Zero; - try - { - int hr = SHGetKnownFolderPath(knownFolderId, 0, IntPtr.Zero, out pszPath); - if (hr >= 0) - return Marshal.PtrToStringAuto(pszPath); - throw Marshal.GetExceptionForHR(hr); - } - finally - { - if (pszPath != IntPtr.Zero) - Marshal.FreeCoTaskMem(pszPath); - } - } - - [DllImport("shell32.dll")] - static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out IntPtr pszPath); - - private void buttonLogAnalysis_Click(object sender, EventArgs e) - { - string message = "Analyzing dependencies from log file, otherwise a processing window will be opened.\r\nThis feature requires the game to be closed"; - - const string caption = "LogAnalysis"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - { - backgroundWorkerInstall.RunWorkerAsync("LogAnalysis"); - } - } - - private void LogAnalysis() - { - Guid localLowId = new Guid("A520A1A4-1780-4FF6-BD18-167343C5AF16"); - string appdataPath = GetKnownFolderPath(localLowId); - string logfile = Path.Combine(appdataPath, "MeshedVR\\VaM\\output_log.txt"); - if (File.Exists(logfile)) - { - string logstring; - using (var metajsonsteam = new StreamReader(logfile)) - { - logstring = metajsonsteam.ReadToEnd(); - } - System.Diagnostics.Process.Start(logfile); - List dependencies = new List(); - try - { - Regex regexObj = new Regex(@"Missing\s+addon\s+package\s+(?[^\x3A\x2E]{1,60}\x2E[^\x3A\x2E]{1,80}\x2E(?:\d+|latest))\s+that\s+package(?[^\x3A\x2E]{1,60}\x2E[^\x3A\x2E]{1,80}\x2E\d+)", RegexOptions.IgnoreCase | RegexOptions.Singleline); - Match matchResult = regexObj.Match(logstring); - while (matchResult.Success) - { - dependencies.Add(matchResult.Groups["depens"].Value); - matchResult = matchResult.NextMatch(); - } - } - catch (ArgumentException ex) - { - this.BeginInvoke(addlog, new Object[] { "LogAnalysis failed" + ex.Message, LogLevel.ERROR }); - } - dependencies = dependencies.Distinct().ToList(); - List missingvars = new List(); - foreach (string varname in dependencies) - { - string varexistname = VarExistName(varname); - if (varexistname.EndsWith("$")) - { - varexistname = varexistname.Substring(0, varexistname.Length - 1); - missingvars.Add(varname + "$"); - } - if (varexistname != "missing") - { - VarInstall(varexistname); - this.BeginInvoke(addlog, new Object[] { varexistname + " installed", LogLevel.INFO }); - } - else - { - missingvars.Add(varname); - } - } - if (missingvars.Count > 0) - { - InvokeShowformMissingVars showformMissingVars = new InvokeShowformMissingVars(ShowformMissingVars); - this.BeginInvoke(showformMissingVars, missingvars); - } - } - } - - private void varsViewDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e) - { - this.BeginInvoke(addlog, new Object[] { $"varsViewDataGridView_DataError, {e.Exception.Message}", LogLevel.ERROR }); - } - - private void buttonUninstallSels_Click(object sender, EventArgs e) - { - List varNames = new List(); - foreach (DataGridViewRow row in varsViewDataGridView.SelectedRows) - { - string varName = row.Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - var varsrow = dbContext.InstallStatuses.FirstOrDefault(i => i.VarName == varName); - if (varsrow != null) - { - if (varsrow.Installed) - { - varNames.Add(varName); - } - } - } - if (varNames.Count <= 0) - { - return; - } - int max = 500; - if (varNames.Count > max) - { - MessageBox.Show($"Please do not uninstall more than {max} files at once"); - return; - } - - // Step 1: Call preview_uninstall API to get the full list - BackendJobResult previewResult; - try - { - previewResult = RunBackendJob("preview_uninstall", new { var_names = varNames, include_implicated = true }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"棰勮鍗歌浇鍒楄〃澶辫触: {ex.Message}", LogLevel.ERROR }); - return; - } - - if (!previewResult.Succeeded) - { - BeginInvoke(addlog, new Object[] { "棰勮鍗歌浇鍒楄〃澶辫触", LogLevel.ERROR }); - return; - } - - var preview = DeserializeResult(previewResult); - if (preview == null || preview.var_list == null) - { - BeginInvoke(addlog, new Object[] { "鏃犳硶瑙f瀽棰勮缁撴灉", LogLevel.ERROR }); - return; - } - - // Step 2: Show preview window if there are implicated vars - if (preview.implicated.Count > 0) - { - FormUninstallVars formUninstallVars = new FormUninstallVars(); - formUninstallVars.previewpicsDirName = previewpicsDirName; - formUninstallVars.Text = "Uninstall Vars Preview"; - formUninstallVars.VarsToUninstall = preview.var_list; - - if (formUninstallVars.ShowDialog() != DialogResult.OK) - { - return; - } - } - else - { - // No implicated vars, show simple confirmation dialog - string message = $"There are {varNames.Count} vars will be uninstalled, are you sure?"; - string caption = "Uninstall Vars"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result != DialogResult.Yes) - { - return; - } - } - - // Step 3: Execute uninstall - try - { - RunBackendJob("uninstall_vars", new { var_names = varNames, include_implicated = true }); - RefreshVarsViewUi(); - RunBackendJob("rescan_packages", null); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鍗歌浇澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - - private bool UninstallVarWithPreview(string varName) - { - // Call preview_uninstall API to get the full list - BackendJobResult previewResult; - try - { - previewResult = RunBackendJob("preview_uninstall", new { var_names = new[] { varName }, include_implicated = true }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"棰勮鍗歌浇鍒楄〃澶辫触: {ex.Message}", LogLevel.ERROR }); - return false; - } - - if (!previewResult.Succeeded) - { - BeginInvoke(addlog, new Object[] { "棰勮鍗歌浇鍒楄〃澶辫触", LogLevel.ERROR }); - return false; - } - - var preview = DeserializeResult(previewResult); - if (preview == null || preview.var_list == null) - { - BeginInvoke(addlog, new Object[] { "鏃犳硶瑙f瀽棰勮缁撴灉", LogLevel.ERROR }); - return false; - } - - // Show preview window if there are implicated vars - if (preview.implicated.Count > 0) - { - FormUninstallVars formUninstallVars = new FormUninstallVars(); - formUninstallVars.previewpicsDirName = previewpicsDirName; - formUninstallVars.Text = "Uninstall Vars Preview"; - formUninstallVars.VarsToUninstall = preview.var_list; - - if (formUninstallVars.ShowDialog() != DialogResult.OK) - { - return false; - } - } - else - { - // No implicated vars, show simple confirmation dialog - string message = varName + " will be removed, are you sure?"; - string caption = "Remove Var"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result != DialogResult.Yes) - { - return false; - } - } - - // Execute uninstall - try - { - RunBackendJob("vars_toggle_install", new { var_name = varName, include_dependencies = true, include_implicated = true }); - RefreshVarsViewUi(); - RunBackendJob("rescan_packages", null); - return true; - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鍗歌浇澶辫触: {ex.Message}", LogLevel.ERROR }); - return false; - } - } - - private void buttonDelete_Click(object sender, EventArgs e) - { - List varNames = new List(); - foreach (DataGridViewRow row in varsViewDataGridView.SelectedRows) - { - string varName = row.Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - - varNames.Add(varName); - } - if (varNames.Count <= 0) return; - int max = 50; - if (varNames.Count > max) - { - MessageBox.Show($"Please do not delete more than {max} files at once"); - return; - } - string message = $"There are {varNames.Count} vars and their dependencies will be delete, are you sure?"; - string caption = "Delete Vars"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result == DialogResult.Yes) - { - try - { - RunBackendJob("delete_vars", new { var_names = varNames, include_implicated = true }); - RefreshVarsViewUi(); - RunBackendJob("rescan_packages", null); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鍒犻櫎澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - } - - private void buttonMove_Click(object sender, EventArgs e) - { - List varNames = new List(); - foreach (DataGridViewRow row in varsViewDataGridView.SelectedRows) - { - string varName = row.Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - var varsrow = dbContext.InstallStatuses.FirstOrDefault(i => i.VarName == varName); - if (varsrow != null) - { - if (varsrow.Installed) - { - varNames.Add(varName); - } - } - } - if (varNames.Count <= 0) return; - FormVarsMove fvm = new FormVarsMove(); - fvm.VarlinkDirName = installLinkDirName; - fvm.VarsToMove = varNames; - if (fvm.ShowDialog() == DialogResult.OK) - { - try - { - RunBackendJob("links_move", new { var_names = varNames, target_dir = fvm.MovetoDirName }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"绉诲姩澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - - } - - private void buttonExpInsted_Click(object sender, EventArgs e) - { - if (saveFileDialogExportInstalled.ShowDialog() == DialogResult.OK) - { - try - { - RunBackendJob("vars_export_installed", new { path = saveFileDialogExportInstalled.FileName }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"瀵煎嚭澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - } - - private void buttonInstFormTxt_Click(object sender, EventArgs e) - { - if (openFileDialogInstByTXT.ShowDialog() == DialogResult.OK) - { - try - { - RunBackendJob("vars_install_batch", new { path = openFileDialogInstByTXT.FileName }); - RunBackendJob("rescan_packages", null); - RefreshVarsViewUi(); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鎵归噺瀹夎澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - } - - private void comboBoxPacksSwitch_SelectedIndexChanged(object sender, EventArgs e) - { - - string sw = (string)comboBoxPacksSwitch.SelectedItem; - if (!string.IsNullOrEmpty(sw)) - { - buttonPacksDelete.Enabled = (sw != "default"); - varpacksSwitch(sw); - - } - else - { - buttonPacksDelete.Enabled = false; - } - } - - private void varpacksSwitch(string sw) - { - this.BeginInvoke(addlog, new Object[] { $"Point the Addonpackages symbo-link to '{sw}'", LogLevel.INFO }); - try - { - RunBackendJob("packswitch_set", new { name = sw }); - RefreshVarsViewUi(); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鍒囨崲澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - - private static void RescanPackages() - { - var vamproc = Process.GetProcessesByName("vam"); - if (vamproc.Length > 0) - { - string loadscenefile = Path.Combine(Settings.Default.vampath, "Custom\\PluginData\\feelfar\\loadscene.json"); - if (File.Exists(loadscenefile)) File.Delete(loadscenefile); - Directory.CreateDirectory(Path.Combine(Settings.Default.vampath, "Custom\\PluginData\\feelfar")); - JSONClass jc = new JSONClass(); - jc["rescan"] = "true"; - using (StreamWriter swLoad = new StreamWriter(loadscenefile)) - { - swLoad.Write(jc.ToString()); - } - } - } - - private void buttonPacksAdd_Click(object sender, EventArgs e) - { - FormSwitchAdd formSwitchAdd = new FormSwitchAdd(); - if (formSwitchAdd.ShowDialog() == DialogResult.OK) - { - try - { - RunBackendJob("packswitch_add", new { name = formSwitchAdd.SwitchName }); - if (comboBoxPacksSwitch.Items.IndexOf(formSwitchAdd.SwitchName) < 0) - { - comboBoxPacksSwitch.Items.Add(formSwitchAdd.SwitchName); - } - comboBoxPacksSwitch.SelectedItem = formSwitchAdd.SwitchName; - } - catch (Exception ex) - { - MessageBox.Show($"Switch create failed: {ex.Message}"); - } - } - } - - private void buttonPacksDelete_Click(object sender, EventArgs e) - { - string curswitch = (string)comboBoxPacksSwitch.SelectedItem; - if (!string.IsNullOrEmpty(curswitch) && curswitch != "default") - { - if (MessageBox.Show($"Will delete {curswitch} AddonPackagesSwitch, sure?", "delete switch", MessageBoxButtons.YesNo) == DialogResult.Yes) - { - try - { - RunBackendJob("packswitch_delete", new { name = curswitch }); - comboBoxPacksSwitch.Items.Remove(curswitch); - comboBoxPacksSwitch.SelectedItem = "default"; - } - catch (Exception ex) - { - MessageBox.Show($"Switch delete failed: {ex.Message}"); - } - } - } - - } - - private void buttonPacksRename_Click(object sender, EventArgs e) - { - string curswitch = (string)comboBoxPacksSwitch.SelectedItem; - if (!string.IsNullOrEmpty(curswitch) && curswitch != "default") - { - FormSwitchRename formSwitchRename = new FormSwitchRename(); - formSwitchRename.OldName = curswitch; - if (formSwitchRename.ShowDialog() == DialogResult.OK) - { - string newName = formSwitchRename.NewName; - try - { - RunBackendJob("packswitch_rename", new { old_name = curswitch, new_name = newName }); - comboBoxPacksSwitch.Items[comboBoxPacksSwitch.SelectedIndex] = newName; - comboBoxPacksSwitch.SelectedItem = newName; - } - catch (Exception ex) - { - MessageBox.Show($"Switch rename failed: {ex.Message}"); - } - } - } - } - private (string,string) SaveNameSplit(string saveName) - { - string varname = "save", entryname = saveName; - if (saveName.IndexOf(":/") > 1) - { - string[] savenamesplit = saveName.Split(new string[] { ":/" }, StringSplitOptions.RemoveEmptyEntries); - if (savenamesplit.Length >= 2) - { - varname = savenamesplit[0]; - entryname = savenamesplit[1]; - } - } - return (varname, entryname); - } - private void buttonLoad_Click(object sender, EventArgs e) - { - bool merge = false; - if (checkBoxMerge.Checked) merge = true; - bool ignoreGender = false; - if (checkBoxIgnoreGender.Checked) ignoreGender = true; - string characterGender = "unknown"; - if (checkBoxForMale.Visible) - { - if (checkBoxForMale.Checked) characterGender = "male"; - else characterGender = "female"; - } - int personOrder = 1; - foreach (RadioButton rbperson in groupBoxPersonOrder.Controls) - { - if (rbperson.Checked) - { - personOrder = int.Parse(rbperson.Text); - break; - } - } - tableLayoutPanelPreview.Visible = false; - Cursor = Cursors.WaitCursor; - try - { - LoadScene(jsonLoadScene, merge, ignoreGender, characterGender, personOrder); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"Load scene failed: {ex.Message}", LogLevel.ERROR }); - } - Cursor = Cursors.Arrow; - UpdateButtonClearCache(); - } - - public void LoadScene(JSONClass jc,bool merge, bool ignoreGender, string characterGender, int personOrder) - { - var jsonElement = JsonSerializer.Deserialize(jc.ToString()); - RunBackendJob("scene_load", new - { - json = jsonElement, - merge = merge, - ignore_gender = ignoreGender, - character_gender = characterGender, - person_order = personOrder - }); - } - - public bool FindByvarName(string varName) - { - bool inRepository = false; - if (varName.EndsWith(".var")) - varName = varName.Substring(0, varName.Length - 4); - if (dbContext.Vars.Any(v => v.VarName == varName)) - { - inRepository = true; - } - return inRepository; - } - public void GenLoadscenetxt(JSONClass jsonLS,bool merge, List dependVars,string characterGender="female", bool ignoreGender = false,int personOrder=1 ) - { - JSONClass jsonls = (JSONClass)JSONNode.Parse(jsonLS.ToString()); - List deletetempfiles = new List(); - JSONArray resources = jsonls["resources"].AsArray; - foreach (JSONClass resource in resources) - { - if (!resource.HasKey("merge")) - resource["merge"] = merge.ToString().ToLower(); - if (!resource.HasKey("characterGender")) - resource["characterGender"] = characterGender; - if (!resource.HasKey("ignoreGender")) - resource["ignoreGender"] = ignoreGender.ToString().ToLower(); - if (!resource.HasKey("personOrder")) - resource["personOrder"] = personOrder.ToString(); - if (resource.HasKey("type")) - { - if (resource["type"].Value == "scenes") - { - deletetempfiles = AddDeleteTemp(); - break; - } - } - } - - // if (jsonls["rescan"].AsBool) - //{ - //List varnames = new List(); - if (dependVars == null) - { - dependVars = new List(); - foreach (JSONClass resource in resources) - { - string saveName = resource["saveName"].Value; - dependVars.Add(saveName.Substring(0, saveName.IndexOf(":/"))); - } - } - bool rescan = false; - var installtemplist = InstallTemp(dependVars.ToArray(), ref rescan); - jsonls["rescan"] = rescan.ToString(); - foreach (var installtemp in installtemplist) - deletetempfiles.Remove(installtemp.ToLower() + ".var"); - // } - string loadscenefile = Path.Combine(Settings.Default.vampath, "Custom\\PluginData\\feelfar\\loadscene.json"); - if (File.Exists(loadscenefile)) File.Delete(loadscenefile); - Directory.CreateDirectory(Path.Combine(Settings.Default.vampath, "Custom\\PluginData\\feelfar")); - //StreamWriter sw = new StreamWriter(loadscenefile); - - - string strLS = jsonls.ToString("\t"); - using (FileStream fileStream = File.OpenWrite(loadscenefile)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strLS); - sw.Close(); - } - // jsonLS.SaveToFile(loadscenefile); - //sw.Write(jsonLS); - //sw.Close(); - if (deletetempfiles.Count > 0) - { - Thread thread = new Thread(DeleteTempThread); - thread.Start(deletetempfiles); - } - } - - public static List AddDeleteTemp() - { - DirectoryInfo templinkdirinfo = Directory.CreateDirectory(Path.Combine(Settings.Default.vampath, "AddonPackages", tempVarLinkDirName)); - - List tempfiles = new List(); - foreach (FileInfo tempfinfo in templinkdirinfo.GetFiles()) - { - if (tempfinfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - tempfiles.Add(tempfinfo.Name.ToLower()); - //tempfinfo.Delete(); - } - return tempfiles; - } - - public static void DeleteTempThread(object data) - { - List tempfiles = data as List; - string loadscenefile = Path.Combine(Settings.Default.vampath, "Custom\\PluginData\\feelfar\\loadscene.json"); - - while (true) - { - Thread.Sleep(2000); - if (File.Exists(loadscenefile)) - { - continue; - } - else - { - Thread.Sleep(20000); - foreach (string tempf in tempfiles) - { - try - { - if (File.Exists(Path.Combine(Settings.Default.vampath, "AddonPackages", tempVarLinkDirName, tempf))) - File.Delete(Path.Combine(Settings.Default.vampath, "AddonPackages", tempVarLinkDirName, tempf)); - } - catch { } - } - break; - } - } - } - - public List InstallTemp(string[] varNames,ref bool rescan) - { - rescan = false; - List varnames = new List(); - varnames.AddRange(varNames); - varnames = VarsDependencies(varnames); - varnames = varnames.Except(GetInstalledVars().Keys).ToList(); - DirectoryInfo templinkdirinfo = Directory.CreateDirectory(Path.Combine(Settings.Default.vampath, "AddonPackages", tempVarLinkDirName)); - - foreach (string varname in varnames) - { - var rows = dbContext.VarsView.Where(q => q.VarName == varname); - if (rows.Any()) - { - if (!rows.First().Installed) - if (VarInstall(varname, true) == 1) - rescan = true; - } - else - { - this.BeginInvoke(addlog, new Object[] { string.Format("missing var:{0},install failed", varname), LogLevel.INFO }); - } - } - return varnames; - } - - private void checkBoxPreviewTypeLoadable_CheckedChanged(object sender, EventArgs e) - { - PreviewInitType(); - } - - private void buttonLocate_Click(object sender, EventArgs e) - { - string varName = labelPreviewVarName.Text; - LocateVar(varName); - } - - public void LocateVar(string varName) - { - try - { - RunBackendJob("vars_locate", new { var_name = varName }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"瀹氫綅澶辫触: {ex.Message}", LogLevel.ERROR }); - } - } - - private void buttonpreviewinstall_Click(object sender, EventArgs e) - { - string varName = labelPreviewVarName.Text; - bool isInstalled = dbContext.InstallStatuses.Any(q => q.VarName == varName && q.Installed); - if (isInstalled) - { - UninstallVarWithPreview(varName); - } - else - { - string message = varName + " will install, are you sure?"; - string caption = "Install Var"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result == DialogResult.Yes) - { - try - { - RunBackendJob("vars_toggle_install", new { var_name = varName, include_dependencies = true, include_implicated = true }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"瀹夎澶辫触: {ex.Message}", LogLevel.ERROR }); - return; - } - } - } - RefreshVarsViewUi(); - try - { - RunBackendJob("rescan_packages", null); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"Rescan failed: {ex.Message}", LogLevel.ERROR }); - } - } - - private void buttonAnalysis_Click(object sender, EventArgs e) - { - string characterGender = "female"; - if (checkBoxForMale.Visible) - { - characterGender = checkBoxForMale.Checked ? "male" : "female"; - } - Analysisscene(jsonLoadScene, characterGender); - UpdateButtonClearCache(); - } - - public void Analysisscene(JSONClass jsonLS, string characterGender = "female") - { - JSONClass jsonls = (JSONClass)JSONNode.Parse(jsonLS.ToString()); - JSONArray resources = jsonls["resources"].AsArray; - string saveName = ""; - if (resources.Count > 0) - { - JSONClass resource = (JSONClass)resources[0]; - saveName = resource["saveName"].Value; - } - if (string.IsNullOrEmpty(saveName)) - { - return; - } - - BackendJobResult result; - try - { - result = RunBackendJob("scene_analyze", new - { - save_name = saveName, - character_gender = characterGender - }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"鍒嗘瀽澶辫触: {ex.Message}", LogLevel.ERROR }); - return; - } - var payload = DeserializeResult(result); - if (payload == null) - { - return; - } - - FormAnalysis formAnalysis = new FormAnalysis(); - formAnalysis.form1 = this; - formAnalysis.VarName = payload.VarName; - formAnalysis.EntryName = payload.EntryName; - formAnalysis.CharacterGender = payload.CharacterGender; - formAnalysis.ShowDialog(); - } - public static string GetCharacterGender(string character) - { - string isMale = "Female"; - character = character.ToLower(); - // If the peson atom is not "On", then we cant determine their gender it seems as GetComponentInChildren just returns null - if (character.StartsWith("male") || - character.StartsWith("lee") || - character.StartsWith("jarlee") || - character.StartsWith("julian") || - character.StartsWith("jarjulian")) - { - isMale = "Male"; - } - if (character.StartsWith("futa")) - { - isMale = "Futa"; - } - return (isMale); - } - - private static string GetAtomID(JSONNode atomitem,bool isPerson=false) - { - if (isPerson) - { - string charGender = "unknown"; - JSONArray storablesArray = atomitem["storables"].AsArray; - foreach (JSONNode storablesitem in storablesArray) - { - if (storablesitem["id"].Value == "geometry") - { - charGender = GetCharacterGender(storablesitem["character"].Value); - break; - } - } - return string.Format("({1}){0}", atomitem["id"], charGender); - } - else - return atomitem["id"].Value; - } - - public bool ReadSaveName(string saveName,string characterGender,bool analysis=false) - { - UseWaitCursor = true; - string jsonscene = ""; - List depends = new List(); - (string varName, string entryName) = SaveNameSplit(saveName); - if (varName!="save") - { - depends.Add(varName); - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == varName); - string destvarfile = Path.Combine(Settings.Default.varspath, varsrow!.VarPath!, varsrow.VarName + ".var"); - using (ZipFile varzipfile = new ZipFile(destvarfile)) - { - var entry = varzipfile.GetEntry(entryName); - var entryStream = new StreamReader(varzipfile.GetInputStream(entry)); - jsonscene = entryStream.ReadToEnd(); - } - } - else - { - string jsonfile = Path.Combine(Settings.Default.vampath, saveName); - if (File.Exists(jsonfile)) - { - using (StreamReader sr = new StreamReader(jsonfile)) - { - jsonscene = sr.ReadToEnd(); - } - } - } - - if (characterGender == "unknown") - { - characterGender = "male"; - - if (jsonscene.IndexOf("/Female/") > 0|| saveName.IndexOf("/Female/") > 0) - { - characterGender = "female"; - } - } - - depends.AddRange(Getdependencies(jsonscene)); - string sceneFolder = Path.Combine(Directory.GetCurrentDirectory(), "Cache", - Comm.ValidFileName(varName), Comm.ValidFileName(entryName.Replace('\\', '_').Replace('/', '_'))); - Directory.CreateDirectory(sceneFolder); - string dependFilename = Path.Combine(sceneFolder, "depend.txt"); - using (StreamWriter swdepend = new StreamWriter(dependFilename)) - depends.ForEach(x => swdepend.WriteLine(x)); - - string genderFilename = Path.Combine(sceneFolder, "gender.txt"); - using (StreamWriter swgender = new StreamWriter(genderFilename)) - swgender.WriteLine(characterGender); - - if (analysis) - { - jsonscene = jsonscene.Replace("\"SELF:/", "\"" + varName + ":/"); - AnalysisAtoms(jsonscene, sceneFolder,true); - } - UseWaitCursor = false; - return true; - } - private static string[] sceneBaseAtoms = { "CoreControl", "PlayerNavigationPanel", "VRController", "WindowCamera" }; - - private static void AnalysisAtoms(string jsonscene, string sceneFolder,bool isperson) - { - JSONClass jsonnode =(JSONClass) JSON.Parse(jsonscene); - if (!jsonnode.HasKey("atoms")) - { - if (isperson) - { - string atomID = GetAtomID(jsonnode, true); - string atomtypefolder = Path.Combine(sceneFolder, "atoms", "Person"); - Directory.CreateDirectory(atomtypefolder); - string atomfilename = Path.Combine(sceneFolder, "atoms", "Person", Comm.ValidFileName(atomID + ".bin")); - jsonnode.SaveToFile(atomfilename); - /*using (StreamWriter sw = new StreamWriter(atomfilename)) - { - jsonnode.SaveToStream(sw.BaseStream); - //sw.Write(jsonnode.ToString()); - }*/ - } - else - { - string atomID = GetAtomID(jsonnode, false); - string atomfilename = Path.Combine(sceneFolder, Comm.ValidFileName(atomID + ".bin")); - jsonnode.SaveToFile(atomfilename); - /* using (StreamWriter sw = new StreamWriter(atomfilename)) - { - jsonnode.SaveToStream(sw.BaseStream); - //sw.Write(jsonnode.ToString()); - }*/ - } - return; - } - JSONClass posinfo = new JSONClass(); - foreach (KeyValuePair keyvaluejson in jsonnode as JSONClass) - { - if (keyvaluejson.Key != "atoms") - { - posinfo.Add(keyvaluejson.Key, keyvaluejson.Value); - } - } - - string posinfoFilename = Path.Combine(sceneFolder, "posinfo.bin"); - posinfo.SaveToFile(posinfoFilename); - /*using (StreamWriter sw = new StreamWriter(posinfoFilename)) - { - sw.Write(posinfo.ToString()); - }*/ - - List ListAtomtype = new List(); - JSONArray atomArray = jsonnode["atoms"].AsArray; - - Dictionary> parentAtoms=new Dictionary>(); - if (atomArray.Count > 0) - { - foreach (JSONClass atomitem in atomArray) - { - string atomtype = atomitem["type"]; - if (sceneBaseAtoms.Contains(atomtype)) - { - atomtype = "(base)" + atomtype; - } - if (atomtype != "") - { - if (!ListAtomtype.Contains(atomtype)) - { - ListAtomtype.Add(atomtype); - string atomtypefolder = Path.Combine(sceneFolder, "atoms", atomtype); - Directory.CreateDirectory(atomtypefolder); - } - if (atomtype == "SubScene") - { - string subscenefolder = Path.Combine(sceneFolder, "atoms", atomtype); - AnalysisAtoms(atomitem.ToString(), subscenefolder, false); - } - else - { - string atomID = GetAtomID(atomitem, atomtype == "Person"); - if (atomitem.HasKey("parentAtom")) - { - if (!string.IsNullOrEmpty(atomitem["parentAtom"])) - { - string parentAtom = Comm.ValidFileName(atomitem["parentAtom"]); - if (parentAtoms.ContainsKey(parentAtom)) - { - parentAtoms[parentAtom].Add(Comm.ValidFileName(atomID)); - } - else - { - parentAtoms.Add(parentAtom, new List { Comm.ValidFileName(atomID) }); - } - } - } - string atomfilename = Path.Combine(sceneFolder, "atoms", atomtype, Comm.ValidFileName(atomID + ".bin")); - atomitem.SaveToFile(atomfilename); - /*using (StreamWriter sw = new StreamWriter(atomfilename)) - { - sw.Write(atomitem.ToString()); - }*/ - } - } - } - if(parentAtoms.Count > 0) - { - string parentAtomFilename = Path.Combine(sceneFolder, "parentAtom.txt"); - using(StreamWriter sw= new StreamWriter(parentAtomFilename)) - { - foreach(var pa in parentAtoms) - { - sw.WriteLine(pa.Key + "\t" + string.Join(",", pa.Value)); - } - - } - } - - } - } - - private void buttonResetFilter_Click(object sender, EventArgs e) - { - ResetFilter(); - } - - private void ResetFilter() - { - comboBoxCreater.SelectedItem = "____ALL"; - textBoxFilter.Text = ""; - dgvFilterManager.ActivateAllFilters(false); - } - - private void SwitchControl_Enter(object sender, EventArgs e) - { - if (ExistAddonpackagesVar()) - { - if (MessageBox.Show("There are unorganized var files in the current switch, please run UPD_DB first", "warning", MessageBoxButtons.OKCancel) == DialogResult.OK) - buttonUpdDB.Focus(); - } - } - - private void buttonFixPreview_Click(object sender, EventArgs e) - { - string message = "Missing preview images will be detected and re-extracted."; - - const string caption = "RebuildLink"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - backgroundWorkerInstall.RunWorkerAsync("fixPreview"); - } - - private void buttonHub_Click(object sender, EventArgs e) - { - FormHub formhub = new FormHub(); - formhub.form1 = this; - formhub.Show(); - } - public void SelectVarInList(string varname) - { - ResetFilter(); - - int firstindex = int.MaxValue; - varsViewDataGridView.ClearSelection(); - foreach (DataGridViewRow row in varsViewDataGridView.Rows) - { - string varnameinrow = row.Cells["varNamedataGridViewTextBoxColumn"].Value.ToString(); - if (varname== varnameinrow) - { - row.Selected = true; - if (row.Index < firstindex) firstindex = row.Index; - } - } - if (firstindex == int.MaxValue) firstindex = 0; - if (varsViewDataGridView.SelectedRows.Count > 0) - { - varsViewDataGridView.FirstDisplayedScrollingRowIndex = firstindex; - } - this.WindowState = FormWindowState.Normal; - //this.Activate(); - } - - private void prepareFormSavesToolStripMenuItem_Click(object sender, EventArgs e) - { - PrepareSaves prepareSaves = new PrepareSaves(); - prepareSaves.form1 = this; - prepareSaves.ShowDialog(); - } - - private void buttonFilteredMissingDepends_Click(object sender, EventArgs e) - { - int varscount= varsViewDataGridView.Rows.Count; - string message =String.Format( "Analyzing dependencies from {0} vars on the leftside of form, a processing window will be opened.",varscount); - - const string caption = "FilteredMissingDepends"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - { - backgroundWorkerInstall.RunWorkerAsync("FilteredMissingDepends"); - } - } - - private void buttonClearCache_Click(object sender, EventArgs e) - { - if (MessageBox.Show("The cache can improve the speed of secondary analysis, normally you don't need to clear it, unless you modify the scene file. This operation only clears the cache of the current scene, if you need to clear all the cache, please delete the cache directory manually.", "Clear Cache", MessageBoxButtons.YesNo) == DialogResult.Yes) - { - try - { - RunBackendJob("cache_clear", new { var_name = curVarName, entry_name = curEntryName }); - } - catch (Exception ex) - { - BeginInvoke(addlog, new Object[] { $"娓呯悊缂撳瓨澶辫触: {ex.Message}", LogLevel.ERROR }); - } - UpdateButtonClearCache(); - } - } - - protected override void OnFormClosing(FormClosingEventArgs e) - { - backendCts.Cancel(); - try - { - BackendSession.ShutdownAsync(LogBackendLine, CancellationToken.None).GetAwaiter().GetResult(); - } - catch - { - } - base.OnFormClosing(e); - } - } -} diff --git a/_archived/varManager/Form1.resx b/_archived/varManager/Form1.resx deleted file mode 100644 index eea3147..0000000 --- a/_archived/varManager/Form1.resx +++ /dev/null @@ -1,424 +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 - - - 530, 185 - - - 17, 59 - - - True - - - True - - - True - - - True - - - True - - - 665, 143 - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 - wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 - v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg - UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA - Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu - lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w - 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f - Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ - 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 - n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI - N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f - oAc0QjgAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// - h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B - twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA - kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG - WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 - 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - - - 17, 101 - - - 17, 143 - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 - wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 - v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg - UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA - Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu - lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w - 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f - Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ - 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 - n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI - N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f - oAc0QjgAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// - h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B - twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA - kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG - WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 - 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - - - 230, 101 - - - 408, 143 - - - 894, 143 - - - 17, 185 - - - 257, 185 - - - 474, 101 - - - 668, 101 - - - 935, 101 - - - 195, 143 - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6 - OgIzMzNMMzMzazMzM2szMzNrMzMzZTMzMxgAAAAAAAAAAAAAAACo9UcJpPU9WqP1Omuj9Tpro/U6a6T1 - PFyl9EEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjk - RybV4j9p1eI+a9XiPmvV4j5r1uNBPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAsLCy8lJSXlMzMz/zMzM/8zMzP/MzMz/zQ0NH9DQ0MBAAAAAAAAAACm9UIOo/Q8w6P0 - Ov+j9Dr/o/Q6/6P0Ovij9TxXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAA= - - - \ No newline at end of file diff --git a/_archived/varManager/Form2.Designer.cs b/_archived/varManager/Form2.Designer.cs deleted file mode 100644 index 54f1792..0000000 --- a/_archived/varManager/Form2.Designer.cs +++ /dev/null @@ -1,40 +0,0 @@ -锘 -namespace varManager -{ - partial class Form2 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form2"; - } - - #endregion - } -} \ No newline at end of file diff --git a/_archived/varManager/Form2.cs b/_archived/varManager/Form2.cs deleted file mode 100644 index 7a8deb8..0000000 --- a/_archived/varManager/Form2.cs +++ /dev/null @@ -1,20 +0,0 @@ -锘縰sing 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 varManager -{ - public partial class Form2 : Form - { - public Form2() - { - InitializeComponent(); - } - } -} diff --git a/_archived/varManager/FormAnalysis.Designer.cs b/_archived/varManager/FormAnalysis.Designer.cs deleted file mode 100644 index eb0a96d..0000000 --- a/_archived/varManager/FormAnalysis.Designer.cs +++ /dev/null @@ -1,449 +0,0 @@ -锘縩amespace varManager -{ - partial class FormAnalysis - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAnalysis)); - this.listBoxAtom = new System.Windows.Forms.ListBox(); - this.buttonLoadLook = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.labelSceneName = new System.Windows.Forms.Label(); - this.buttonExit = new System.Windows.Forms.Button(); - this.listBoxPerson = new System.Windows.Forms.ListBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.checkBoxIgnoreGender = new System.Windows.Forms.CheckBox(); - this.tabControl1 = new System.Windows.Forms.TabControl(); - this.tabPage1 = new System.Windows.Forms.TabPage(); - this.checkBoxMorphs = new System.Windows.Forms.CheckBox(); - this.buttonLoadPose = new System.Windows.Forms.Button(); - this.buttonLoadAnimation = new System.Windows.Forms.Button(); - this.buttonLoadPlugin = new System.Windows.Forms.Button(); - this.checkBoxHair = new System.Windows.Forms.CheckBox(); - this.checkBoxClothing = new System.Windows.Forms.CheckBox(); - this.checkBoxGlute = new System.Windows.Forms.CheckBox(); - this.checkBoxSkin = new System.Windows.Forms.CheckBox(); - this.checkBoxBreast = new System.Windows.Forms.CheckBox(); - this.tabPage2 = new System.Windows.Forms.TabPage(); - this.buttonAddAsSubscene = new System.Windows.Forms.Button(); - this.buttonAddToScene = new System.Windows.Forms.Button(); - this.buttonLoadScene = new System.Windows.Forms.Button(); - this.triStateTreeViewAtoms = new nsThreeStateTreeview.TriStateTreeView(); - this.labelMessage = new System.Windows.Forms.Label(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.timer1 = new System.Windows.Forms.Timer(this.components); - this.groupBox1.SuspendLayout(); - this.tabControl1.SuspendLayout(); - this.tabPage1.SuspendLayout(); - this.tabPage2.SuspendLayout(); - this.SuspendLayout(); - // - // listBoxAtom - // - this.listBoxAtom.FormattingEnabled = true; - this.listBoxAtom.ItemHeight = 17; - this.listBoxAtom.Location = new System.Drawing.Point(6, 6); - this.listBoxAtom.Name = "listBoxAtom"; - this.listBoxAtom.Size = new System.Drawing.Size(226, 361); - this.listBoxAtom.TabIndex = 0; - this.toolTip1.SetToolTip(this.listBoxAtom, "List of Persons in current scene"); - this.listBoxAtom.SelectedIndexChanged += new System.EventHandler(this.listBoxAtom_SelectedIndexChanged); - // - // buttonLoadLook - // - this.buttonLoadLook.Enabled = false; - this.buttonLoadLook.Location = new System.Drawing.Point(371, 204); - this.buttonLoadLook.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonLoadLook.Name = "buttonLoadLook"; - this.buttonLoadLook.Size = new System.Drawing.Size(118, 35); - this.buttonLoadLook.TabIndex = 4; - this.buttonLoadLook.Text = "Load Look"; - this.toolTip1.SetToolTip(this.buttonLoadLook, "Load presets for person in running scene "); - this.buttonLoadLook.UseVisualStyleBackColor = true; - this.buttonLoadLook.Click += new System.EventHandler(this.buttonLoadLook_Click); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(13, 15); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(83, 17); - this.label1.TabIndex = 6; - this.label1.Text = "sceneName:"; - // - // labelSceneName - // - this.labelSceneName.Location = new System.Drawing.Point(102, 15); - this.labelSceneName.Name = "labelSceneName"; - this.labelSceneName.Size = new System.Drawing.Size(421, 52); - this.labelSceneName.TabIndex = 7; - this.labelSceneName.Text = "label2"; - // - // buttonExit - // - this.buttonExit.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonExit.Location = new System.Drawing.Point(386, 489); - this.buttonExit.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonExit.Name = "buttonExit"; - this.buttonExit.Size = new System.Drawing.Size(118, 35); - this.buttonExit.TabIndex = 4; - this.buttonExit.Text = "Cancel"; - this.buttonExit.UseVisualStyleBackColor = true; - // - // listBoxPerson - // - this.listBoxPerson.Font = new System.Drawing.Font("Cambria", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.listBoxPerson.FormattingEnabled = true; - this.listBoxPerson.ItemHeight = 23; - this.listBoxPerson.Items.AddRange(new object[] { - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9"}); - this.listBoxPerson.Location = new System.Drawing.Point(6, 24); - this.listBoxPerson.Name = "listBoxPerson"; - this.listBoxPerson.Size = new System.Drawing.Size(112, 165); - this.listBoxPerson.TabIndex = 9; - this.toolTip1.SetToolTip(this.listBoxPerson, "Person order in running scene"); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.listBoxPerson); - this.groupBox1.Location = new System.Drawing.Point(240, 164); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(124, 203); - this.groupBox1.TabIndex = 10; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Person Order"; - // - // checkBoxIgnoreGender - // - this.checkBoxIgnoreGender.AutoSize = true; - this.checkBoxIgnoreGender.Location = new System.Drawing.Point(371, 176); - this.checkBoxIgnoreGender.Name = "checkBoxIgnoreGender"; - this.checkBoxIgnoreGender.Size = new System.Drawing.Size(117, 21); - this.checkBoxIgnoreGender.TabIndex = 8; - this.checkBoxIgnoreGender.Text = "Ignore gender"; - this.checkBoxIgnoreGender.UseVisualStyleBackColor = true; - // - // tabControl1 - // - this.tabControl1.Controls.Add(this.tabPage1); - this.tabControl1.Controls.Add(this.tabPage2); - this.tabControl1.Location = new System.Drawing.Point(12, 70); - this.tabControl1.Name = "tabControl1"; - this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(515, 412); - this.tabControl1.TabIndex = 11; - this.toolTip1.SetToolTip(this.tabControl1, "List of Atoms in current scene"); - // - // tabPage1 - // - this.tabPage1.Controls.Add(this.listBoxAtom); - this.tabPage1.Controls.Add(this.groupBox1); - this.tabPage1.Controls.Add(this.checkBoxMorphs); - this.tabPage1.Controls.Add(this.buttonLoadPose); - this.tabPage1.Controls.Add(this.buttonLoadAnimation); - this.tabPage1.Controls.Add(this.buttonLoadPlugin); - this.tabPage1.Controls.Add(this.buttonLoadLook); - this.tabPage1.Controls.Add(this.checkBoxHair); - this.tabPage1.Controls.Add(this.checkBoxIgnoreGender); - this.tabPage1.Controls.Add(this.checkBoxClothing); - this.tabPage1.Controls.Add(this.checkBoxGlute); - this.tabPage1.Controls.Add(this.checkBoxSkin); - this.tabPage1.Controls.Add(this.checkBoxBreast); - this.tabPage1.Location = new System.Drawing.Point(4, 26); - this.tabPage1.Name = "tabPage1"; - this.tabPage1.Padding = new System.Windows.Forms.Padding(3); - this.tabPage1.Size = new System.Drawing.Size(507, 382); - this.tabPage1.TabIndex = 0; - this.tabPage1.Text = "Person List"; - this.tabPage1.UseVisualStyleBackColor = true; - // - // checkBoxMorphs - // - this.checkBoxMorphs.AutoSize = true; - this.checkBoxMorphs.Checked = global::varManager.Properties.Settings.Default.presetMorphs; - this.checkBoxMorphs.CheckState = System.Windows.Forms.CheckState.Checked; - this.checkBoxMorphs.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::varManager.Properties.Settings.Default, "presetMorphs", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.checkBoxMorphs.Location = new System.Drawing.Point(254, 10); - this.checkBoxMorphs.Name = "checkBoxMorphs"; - this.checkBoxMorphs.Size = new System.Drawing.Size(78, 21); - this.checkBoxMorphs.TabIndex = 8; - this.checkBoxMorphs.Text = "Morphs"; - this.toolTip1.SetToolTip(this.checkBoxMorphs, "Morph Preset"); - this.checkBoxMorphs.UseVisualStyleBackColor = true; - // - // buttonLoadPose - // - this.buttonLoadPose.Location = new System.Drawing.Point(371, 247); - this.buttonLoadPose.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonLoadPose.Name = "buttonLoadPose"; - this.buttonLoadPose.Size = new System.Drawing.Size(118, 35); - this.buttonLoadPose.TabIndex = 4; - this.buttonLoadPose.Text = "Load Pose"; - this.toolTip1.SetToolTip(this.buttonLoadPose, "Load pose for person in running scene "); - this.buttonLoadPose.UseVisualStyleBackColor = true; - this.buttonLoadPose.Click += new System.EventHandler(this.buttonLoadPose_Click); - // - // buttonLoadAnimation - // - this.buttonLoadAnimation.Enabled = false; - this.buttonLoadAnimation.Location = new System.Drawing.Point(371, 290); - this.buttonLoadAnimation.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonLoadAnimation.Name = "buttonLoadAnimation"; - this.buttonLoadAnimation.Size = new System.Drawing.Size(118, 35); - this.buttonLoadAnimation.TabIndex = 4; - this.buttonLoadAnimation.Text = "Load Animation"; - this.toolTip1.SetToolTip(this.buttonLoadAnimation, "Load animtion for person in running scene "); - this.buttonLoadAnimation.UseVisualStyleBackColor = true; - this.buttonLoadAnimation.Click += new System.EventHandler(this.buttonLoadAnimation_Click); - // - // buttonLoadPlugin - // - this.buttonLoadPlugin.Enabled = false; - this.buttonLoadPlugin.Location = new System.Drawing.Point(370, 332); - this.buttonLoadPlugin.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonLoadPlugin.Name = "buttonLoadPlugin"; - this.buttonLoadPlugin.Size = new System.Drawing.Size(118, 35); - this.buttonLoadPlugin.TabIndex = 4; - this.buttonLoadPlugin.Text = "Load Plugin"; - this.toolTip1.SetToolTip(this.buttonLoadPlugin, "Load plugin preset for person in running scene "); - this.buttonLoadPlugin.UseVisualStyleBackColor = true; - this.buttonLoadPlugin.Click += new System.EventHandler(this.buttonLoadPlugin_Click); - // - // checkBoxHair - // - this.checkBoxHair.AutoSize = true; - this.checkBoxHair.Checked = global::varManager.Properties.Settings.Default.presetHair; - this.checkBoxHair.CheckState = System.Windows.Forms.CheckState.Checked; - this.checkBoxHair.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::varManager.Properties.Settings.Default, "presetHair", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.checkBoxHair.Location = new System.Drawing.Point(254, 52); - this.checkBoxHair.Name = "checkBoxHair"; - this.checkBoxHair.Size = new System.Drawing.Size(57, 21); - this.checkBoxHair.TabIndex = 8; - this.checkBoxHair.Text = "Hair"; - this.toolTip1.SetToolTip(this.checkBoxHair, "HairStyle Preset"); - this.checkBoxHair.UseVisualStyleBackColor = true; - // - // checkBoxClothing - // - this.checkBoxClothing.AutoSize = true; - this.checkBoxClothing.Checked = global::varManager.Properties.Settings.Default.presetClothing; - this.checkBoxClothing.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::varManager.Properties.Settings.Default, "presetClothing", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.checkBoxClothing.Location = new System.Drawing.Point(254, 94); - this.checkBoxClothing.Name = "checkBoxClothing"; - this.checkBoxClothing.Size = new System.Drawing.Size(82, 21); - this.checkBoxClothing.TabIndex = 8; - this.checkBoxClothing.Text = "Clothing"; - this.toolTip1.SetToolTip(this.checkBoxClothing, "Clothing Preset"); - this.checkBoxClothing.UseVisualStyleBackColor = true; - // - // checkBoxGlute - // - this.checkBoxGlute.AutoSize = true; - this.checkBoxGlute.Checked = global::varManager.Properties.Settings.Default.presetGlute; - this.checkBoxGlute.CheckState = System.Windows.Forms.CheckState.Checked; - this.checkBoxGlute.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::varManager.Properties.Settings.Default, "presetGlute", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.checkBoxGlute.Location = new System.Drawing.Point(361, 94); - this.checkBoxGlute.Name = "checkBoxGlute"; - this.checkBoxGlute.Size = new System.Drawing.Size(111, 21); - this.checkBoxGlute.TabIndex = 8; - this.checkBoxGlute.Text = "GlutePhysics"; - this.toolTip1.SetToolTip(this.checkBoxGlute, "Glute Physics Preset"); - this.checkBoxGlute.UseVisualStyleBackColor = true; - // - // checkBoxSkin - // - this.checkBoxSkin.AutoSize = true; - this.checkBoxSkin.Checked = global::varManager.Properties.Settings.Default.presetSkin; - this.checkBoxSkin.CheckState = System.Windows.Forms.CheckState.Checked; - this.checkBoxSkin.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::varManager.Properties.Settings.Default, "presetSkin", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.checkBoxSkin.Location = new System.Drawing.Point(362, 10); - this.checkBoxSkin.Name = "checkBoxSkin"; - this.checkBoxSkin.Size = new System.Drawing.Size(57, 21); - this.checkBoxSkin.TabIndex = 8; - this.checkBoxSkin.Text = "Skin"; - this.toolTip1.SetToolTip(this.checkBoxSkin, "Skin Preset"); - this.checkBoxSkin.UseVisualStyleBackColor = true; - // - // checkBoxBreast - // - this.checkBoxBreast.AutoSize = true; - this.checkBoxBreast.Checked = global::varManager.Properties.Settings.Default.presetBreast; - this.checkBoxBreast.CheckState = System.Windows.Forms.CheckState.Checked; - this.checkBoxBreast.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::varManager.Properties.Settings.Default, "presetBreast", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.checkBoxBreast.Location = new System.Drawing.Point(362, 52); - this.checkBoxBreast.Name = "checkBoxBreast"; - this.checkBoxBreast.Size = new System.Drawing.Size(118, 21); - this.checkBoxBreast.TabIndex = 8; - this.checkBoxBreast.Text = "BreastPhysics"; - this.toolTip1.SetToolTip(this.checkBoxBreast, "Breast Physics Preset"); - this.checkBoxBreast.UseVisualStyleBackColor = true; - // - // tabPage2 - // - this.tabPage2.Controls.Add(this.buttonAddAsSubscene); - this.tabPage2.Controls.Add(this.buttonAddToScene); - this.tabPage2.Controls.Add(this.buttonLoadScene); - this.tabPage2.Controls.Add(this.triStateTreeViewAtoms); - this.tabPage2.Location = new System.Drawing.Point(4, 26); - this.tabPage2.Name = "tabPage2"; - this.tabPage2.Padding = new System.Windows.Forms.Padding(3); - this.tabPage2.Size = new System.Drawing.Size(507, 382); - this.tabPage2.TabIndex = 1; - this.tabPage2.Text = "Atom List"; - this.tabPage2.UseVisualStyleBackColor = true; - // - // buttonAddAsSubscene - // - this.buttonAddAsSubscene.Location = new System.Drawing.Point(340, 264); - this.buttonAddAsSubscene.Name = "buttonAddAsSubscene"; - this.buttonAddAsSubscene.Size = new System.Drawing.Size(118, 50); - this.buttonAddAsSubscene.TabIndex = 1; - this.buttonAddAsSubscene.Text = "Add as SubScene"; - this.toolTip1.SetToolTip(this.buttonAddAsSubscene, "Selected atoms aggregate into subscene and add to running scene"); - this.buttonAddAsSubscene.UseVisualStyleBackColor = true; - this.buttonAddAsSubscene.Click += new System.EventHandler(this.buttonAddAsSubscene_Click); - // - // buttonAddToScene - // - this.buttonAddToScene.Location = new System.Drawing.Point(340, 182); - this.buttonAddToScene.Name = "buttonAddToScene"; - this.buttonAddToScene.Size = new System.Drawing.Size(118, 50); - this.buttonAddToScene.TabIndex = 1; - this.buttonAddToScene.Text = "Add to Scene"; - this.toolTip1.SetToolTip(this.buttonAddToScene, "Selected atoms add to running scene"); - this.buttonAddToScene.UseVisualStyleBackColor = true; - this.buttonAddToScene.Click += new System.EventHandler(this.buttonAddToScene_Click); - // - // buttonLoadScene - // - this.buttonLoadScene.Location = new System.Drawing.Point(340, 100); - this.buttonLoadScene.Name = "buttonLoadScene"; - this.buttonLoadScene.Size = new System.Drawing.Size(118, 50); - this.buttonLoadScene.TabIndex = 1; - this.buttonLoadScene.Text = "Load Scene"; - this.toolTip1.SetToolTip(this.buttonLoadScene, "Selected atoms loaded as a new scene"); - this.buttonLoadScene.UseVisualStyleBackColor = true; - this.buttonLoadScene.Click += new System.EventHandler(this.buttonLoadScene_Click); - // - // triStateTreeViewAtoms - // - this.triStateTreeViewAtoms.Location = new System.Drawing.Point(6, 6); - this.triStateTreeViewAtoms.Name = "triStateTreeViewAtoms"; - this.triStateTreeViewAtoms.Size = new System.Drawing.Size(293, 370); - this.triStateTreeViewAtoms.TabIndex = 0; - this.triStateTreeViewAtoms.TriStateStyleProperty = nsThreeStateTreeview.TriStateTreeView.TriStateStyles.Standard; - this.triStateTreeViewAtoms.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.triStateTreeViewAtoms_AfterCheck); - // - // labelMessage - // - this.labelMessage.BackColor = System.Drawing.Color.Transparent; - this.labelMessage.ForeColor = System.Drawing.Color.OrangeRed; - this.labelMessage.Location = new System.Drawing.Point(16, 481); - this.labelMessage.Name = "labelMessage"; - this.labelMessage.Size = new System.Drawing.Size(364, 55); - this.labelMessage.TabIndex = 2; - this.labelMessage.Text = "labelMessage"; - this.labelMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelMessage.Visible = false; - // - // timer1 - // - this.timer1.Interval = 2000; - this.timer1.Tick += new System.EventHandler(this.timer1_Tick); - // - // FormAnalysis - // - this.AcceptButton = this.buttonLoadLook; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonExit; - this.ClientSize = new System.Drawing.Size(541, 534); - this.ControlBox = false; - this.Controls.Add(this.labelMessage); - this.Controls.Add(this.tabControl1); - this.Controls.Add(this.labelSceneName); - this.Controls.Add(this.label1); - this.Controls.Add(this.buttonExit); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); - this.Name = "FormAnalysis"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Analysis"; - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormAnalysis_FormClosed); - this.Load += new System.EventHandler(this.FormAnalysis_Load); - this.groupBox1.ResumeLayout(false); - this.tabControl1.ResumeLayout(false); - this.tabPage1.ResumeLayout(false); - this.tabPage1.PerformLayout(); - this.tabPage2.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.ListBox listBoxAtom; - private System.Windows.Forms.Button buttonLoadLook; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label labelSceneName; - private System.Windows.Forms.CheckBox checkBoxMorphs; - private System.Windows.Forms.CheckBox checkBoxHair; - private System.Windows.Forms.CheckBox checkBoxClothing; - private System.Windows.Forms.CheckBox checkBoxSkin; - private System.Windows.Forms.CheckBox checkBoxBreast; - private System.Windows.Forms.CheckBox checkBoxGlute; - private System.Windows.Forms.Button buttonExit; - private System.Windows.Forms.ListBox listBoxPerson; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.CheckBox checkBoxIgnoreGender; - private System.Windows.Forms.TabControl tabControl1; - private System.Windows.Forms.TabPage tabPage1; - private System.Windows.Forms.TabPage tabPage2; - private nsThreeStateTreeview.TriStateTreeView triStateTreeViewAtoms; - private System.Windows.Forms.Button buttonLoadScene; - private System.Windows.Forms.Button buttonLoadPlugin; - private System.Windows.Forms.Button buttonLoadAnimation; - private System.Windows.Forms.Button buttonLoadPose; - private System.Windows.Forms.Button buttonAddToScene; - private System.Windows.Forms.Button buttonAddAsSubscene; - private System.Windows.Forms.ToolTip toolTip1; - private System.Windows.Forms.Label labelMessage; - private System.Windows.Forms.Timer timer1; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormAnalysis.cs b/_archived/varManager/FormAnalysis.cs deleted file mode 100644 index c79288d..0000000 --- a/_archived/varManager/FormAnalysis.cs +++ /dev/null @@ -1,1242 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; -using SimpleJSON; -using System.Text.Json; -using System.Text.Json.Serialization; -using varManager.Backend; -using varManager.Properties; -using static SimpleLogger; - -namespace varManager -{ - public partial class FormAnalysis : Form - { - private string varName; - private string entryName; - private List listJsonPerson; - JSONClass jsonCoreControl; - - private int personOrder = 0; - private bool ignoreGender = false; - private string characterGender; - public Form1 form1; - public string VarName { get => varName; set => varName = value; } - public string EntryName { get => entryName; set => entryName = value; } - public bool IgnoreGender { get => ignoreGender; set => ignoreGender = value; } - public int PersonOrder { get => personOrder; set => personOrder = value; } - public string CharacterGender { get => characterGender; set => characterGender = value; } - - public List saveNames; - private List atomnodes; - private string[] poseControlIDs = { "hipControl", "pelvisControl", "chestControl", "headControl", "rHandControl", "lHandControl", "rFootControl", "lFootControl", "neckControl", "eyeTargetControl", "rNippleControl", "lNippleControl", "rElbowControl", "lElbowControl", "rKneeControl", "lKneeControl", "rToeControl", "lToeControl", "abdomenControl", "abdomen2Control", "rThighControl", "lThighControl", "rArmControl", "lArmControl", "rShoulderControl", "lShoulderControl" }; - private string[] poseObjectIDs = { "hip", "pelvis", "rThigh", "rShin", "rFoot", "rToe", "lThigh", "lShin", "lFoot", "lToe", "LGlute", "RGlute", "abdomen", "abdomen2", "chest", "lPectoral", "rPectoral", "rCollar", "rShldr", "rForeArm", "rHand", "lCollar", "lShldr", "lForeArm", "lHand", "neck", "head"}; - private Dictionary> parentAtoms; - private readonly string[] sceneBaseAtoms = { "CoreControl", "PlayerNavigationPanel", "VRController", "WindowCamera" }; - public FormAnalysis() - { - InitializeComponent(); - listJsonPerson = new List(); - parentAtoms = new Dictionary>(); - } - - private void LogBackendLine(string line) - { - if (form1 == null) - { - return; - } - LogLevel level = LogLevel.INFO; - if (line.StartsWith("error:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.ERROR; - } - form1.BeginInvoke(new Form1.InvokeAddLoglist(form1.UpdateAddLoglist), new object[] { line, level }); - } - - private BackendJobResult RunBackendJob(string kind, object? args) - { - return BackendSession.RunJob(kind, args, LogBackendLine, CancellationToken.None); - } - public static string GetCharacterGender(string character) - { - string isMale = "Female"; - character= character.ToLower(); - // If the peson atom is not "On", then we cant determine their gender it seems as GetComponentInChildren just returns null - if (character.StartsWith("male") || - character.StartsWith("lee") || - character.StartsWith("jarlee") || - character.StartsWith("julian") || - character.StartsWith("jarjulian")) - { - isMale = "Male"; - } - if (character.StartsWith("futa")) - { - isMale = "Futa"; - } - return (isMale); - } - - private void FormAnalysis_Load(object sender, EventArgs e) - { - labelSceneName.Text = varName + ":/" + entryName; - AnalsisJson(); - if (listBoxAtom.Items.Count > 0) - { - listBoxAtom.SelectedIndex = 0; - } - PersonOrder = 0; - listBoxPerson.SelectedIndex = 0; - triStateTreeViewAtoms.ExpandAll(); - //foreach (TreeNode tn in triStateTreeViewAtoms.Nodes) - //{ - // tn.Expand(); - //} - } - /*private void DisplayTreeView(JSONClass root, string rootName) - { - treeView1.BeginUpdate(); - try - { - treeView1.Nodes.Clear(); - var tNode = treeView1.Nodes[treeView1.Nodes.Add(new TreeNode(rootName))]; - tNode.Tag = root; - - AddNode(root, tNode); - - treeView1.ExpandAll(); - } - finally - { - treeView1.EndUpdate(); - } - } - - private void AddNode(JSONClass token, TreeNode inTreeNode) - { - if (token == null) - return; - if (token is jso) - { - var childNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(token.ToString()))]; - childNode.Tag = token; - } - else if (token is JObject) - { - var obj = (JObject)token; - foreach (var property in obj.Properties()) - { - var childNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(property.Name))]; - childNode.Tag = property; - AddNode(property.Value, childNode); - } - } - else if (token is JArray) - { - var array = (JArray)token; - for (int i = 0; i < array.Count; i++) - { - var childNode = inTreeNode.Nodes[inTreeNode.Nodes.Add(new TreeNode(i.ToString()))]; - childNode.Tag = array[i]; - AddNode(array[i], childNode); - } - } - else - { - Debug.WriteLine(string.Format("{0} not implemented", token.Type)); // JConstructor, JRaw - } - }*/ - private void AnalsisJson() - { - triStateTreeViewAtoms.Nodes.Clear(); - TreeNode treenodeCur = triStateTreeViewAtoms.Nodes.Add(varName + ":/" + entryName); - string sceneFoldername = Path.Combine(Directory.GetCurrentDirectory(), "Cache", - Comm.ValidFileName(varName), Comm.ValidFileName(entryName.Replace('\\', '_').Replace('/', '_'))); - jsonCoreControl = new JSONClass(); - atomnodes = new List(); - GetAtoms(sceneFoldername, treenodeCur); - string parentAtomFilename = Path.Combine(sceneFoldername, "parentAtom.txt"); - if (File.Exists(parentAtomFilename)) - { - using (StreamReader sr = new StreamReader(parentAtomFilename)) - { - while (!sr.EndOfStream) { - string strParent= sr.ReadLine(); - string[] splitParent= strParent.Split('\t'); - if(splitParent.Length == 2) - { - List childs= splitParent[1].Split(',').ToList(); - childs = childs.Select(child => child += ".bin").ToList(); - parentAtoms.Add(splitParent[0]+".bin",childs); - } - } - - } - } - if (!entryName.ToLower().Contains("/scene/")) - { - tabControl1.TabPages.RemoveAt(tabControl1.TabPages.Count - 1); - } - - } - private void GetAtoms(string sceneFoldername,TreeNode treenodeCur ) - { - if (Directory.Exists(Path.Combine(sceneFoldername, "atoms"))) - { - foreach (string atomfolder in Directory.GetDirectories(Path.Combine(sceneFoldername, "atoms"), "*", SearchOption.TopDirectoryOnly).OrderBy(x=>Path.GetFileName(x))) - { - string atomtype = atomfolder.Substring(atomfolder.LastIndexOf("\\") + 1); - TreeNode subtreenode = treenodeCur.Nodes.Add(atomtype); - if (atomtype == "SubScene") - { - GetAtoms(atomfolder, subtreenode); - } - - foreach (string atomjson in Directory.GetFiles(atomfolder, "*.bin", SearchOption.TopDirectoryOnly)) - { - - atomnodes.Add(subtreenode.Nodes.Add(Path.GetFileName(atomjson))); - if (atomtype == "(base)CoreControl") - { - jsonCoreControl=(JSONClass)JSONNode.LoadFromFile(atomjson); - } - if (atomtype == "Person") - { - JSONClass atomitem = (JSONClass)JSONNode.LoadFromFile(atomjson); - listJsonPerson.Add(atomitem); - listBoxAtom.Items.Add(Path.GetFileNameWithoutExtension(atomjson)); - } - } - } - } - } - - private static string GetAtomID(JSONNode atomitem) - { - string charGender = "unknown"; - JSONArray storablesArray = atomitem["storables"].AsArray; - foreach (JSONNode storablesitem in storablesArray) - { - if (storablesitem["id"].Value == "geometry") - { - charGender = GetCharacterGender(storablesitem["character"].Value); - break; - } - } - return string.Format("{0}({1})", atomitem["id"], charGender); - - } - - private void listBoxAtom_SelectedIndexChanged(object sender, EventArgs e) - { - if (listBoxAtom.SelectedItem != null) - { - buttonLoadLook.Enabled = true; - if (listBoxAtom.SelectedItem.ToString().Contains("(Female)")) - { - checkBoxGlute.Visible = true; - checkBoxBreast.Visible = true; - checkBoxIgnoreGender.Enabled = true; - } - else - { - checkBoxGlute.Visible = false; - checkBoxBreast.Visible = false; - //if (listBoxAtom.SelectedItem.ToString().Contains("(Futa)")) - checkBoxIgnoreGender.Enabled = true; - //else - // checkBoxIgnoreGender.Enabled = false; - } - JSONArray storablesArray = listJsonPerson[listBoxAtom.SelectedIndex]["storables"].AsArray; - buttonLoadPose.Enabled = false; - if ( entryName.EndsWith(".json")) - buttonLoadPose.Enabled = true ; - buttonLoadPlugin.Enabled = false; - buttonLoadAnimation.Enabled = false; - - bool foundAnime=false,foundPlugin=false; - foreach (JSONClass storablesitem in storablesArray) - { - if (foundAnime && foundPlugin) break; - if (storablesitem["id"].Value.EndsWith ( "Animation") ) - { - buttonLoadAnimation.Enabled = true; - foundAnime = true; - } - if (storablesitem["id"].Value== "PluginManager") - { - foundPlugin=true; - if (storablesitem.HasKey("plugins")) - { - if (((JSONClass)storablesitem["plugins"]).Count > 0) - { - buttonLoadPlugin.Enabled = true; - } - } - } - } - } - else - { - buttonLoadLook.Enabled= false; - } - } - - private void buttonLoadLook_Click(object sender, EventArgs e) - { - if (listBoxAtom.SelectedIndex >= 0 && listBoxAtom.SelectedIndex < listJsonPerson.Count) - { - if (checkBoxMorphs.Checked || checkBoxHair.Checked || - checkBoxClothing.Checked || checkBoxSkin.Checked || - checkBoxBreast.Checked || checkBoxGlute.Checked) - - { - GetPersonOrder(); - string atomName = listBoxAtom.SelectedItem.ToString(); - try - { - RunBackendJob("scene_preset_look", new - { - var_name = varName, - entry_name = entryName, - atom_name = atomName, - morphs = checkBoxMorphs.Checked, - hair = checkBoxHair.Checked, - clothing = checkBoxClothing.Checked, - skin = checkBoxSkin.Checked, - breast = checkBoxBreast.Checked, - glute = checkBoxGlute.Checked, - ignore_gender = ignoreGender, - person_order = PersonOrder - }); - } - catch (Exception ex) - { - MessageBox.Show($"Load Look failed: {ex.Message}"); - return; - } - labelMessage.Text = "Load Look Preset completed!"; - labelMessage.Visible = true; - timer1.Enabled = true; - } - else - { - MessageBox.Show("Please select at least one preset"); - checkBoxMorphs.Select(); - return; - } - } - else - { - MessageBox.Show("Please select a character"); - listBoxAtom.Select(); - return; - } - } - - private void GetPersonOrder() - { - PersonOrder = 0; - if (listBoxPerson.SelectedIndex > 0) - PersonOrder = listBoxPerson.SelectedIndex; - ignoreGender = false; - if (checkBoxIgnoreGender.Enabled && checkBoxIgnoreGender.Checked) - ignoreGender = true; - } - - private void SavePluginPreset(JSONClass atomitem) - { - JSONClass jsonPlugin = new JSONClass(); - jsonPlugin.Add("setUnlistedParamsToDefault", "true"); - jsonPlugin.Add("storables", new JSONArray()); - List pluginid = new List(); - JSONArray storablesArray = atomitem["storables"].AsArray; - foreach (JSONClass storablesitem in storablesArray) - { - if (storablesitem["id"].Value == "PluginManager") - { - JSONArray jsonPluginStorablesArray = jsonPlugin["storables"].AsArray; - jsonPluginStorablesArray.Add(storablesitem); - if (storablesitem.HasKey("plugins")) - { - pluginid.AddRange(((JSONClass)storablesitem["plugins"]).Keys); - } - } - } - foreach (JSONClass storablesitem in storablesArray) - { - foreach (string tempid in pluginid) - { - if (storablesitem["id"].Value.StartsWith(tempid)) - { - jsonPlugin["storables"].Add(storablesitem); - } - } - } - SavePluginPresetFile(jsonPlugin); - } - private void SavePosePreset(JSONClass atomitem) - { - JSONClass jsonPose = new JSONClass(); - jsonPose.Add("setUnlistedParamsToDefault", "true"); - jsonPose.Add("storables", new JSONArray()); - JSONArray storablesArray = atomitem["storables"].AsArray; - - foreach (JSONClass storablesitem in storablesArray) - { - if (storablesitem["id"].Value == "geometry") - { - JSONClass jsonMorphsGeometry= new JSONClass(); - jsonMorphsGeometry.Add("id", "geometry"); - jsonMorphsGeometry.Add("morphs", storablesitem["morphs"]); - jsonPose["storables"].Add(jsonMorphsGeometry); - - } - if (poseControlIDs.Contains( storablesitem["id"].Value) || poseObjectIDs.Contains(storablesitem["id"].Value)) - { - jsonPose["storables"].Add(storablesitem); - } - } - - SavePosePresetFile(jsonPose); - } - private string animationStorableIdToControlId(string id) - { - switch (id) - { - case "eyeTargetControlAnimation": - case "lNippleControlAnimation": - case "rNippleControlAnimation": - return id.Replace("Animation", ""); - - default: - return id.Replace("Animation", "Control"); - } - } - private JSONClass FindMotionAnimationMasterData() - { - foreach (JSONNode storable in jsonCoreControl["storables"].AsArray) - { - if (string.Equals(storable["id"], "MotionAnimationMaster")) - { - return storable.AsObject; - } - } - throw new Exception("Selected mocap file does not contain MotionAnimationMaster data!"); - } - - private void SaveAnimationPreset(JSONClass atomitem) - { - JSONClass jsonAnimation = new JSONClass(); - jsonAnimation.Add("setUnlistedParamsToDefault", "true"); - jsonAnimation.Add("storables", new JSONArray()); - JSONArray storablesArray = atomitem["storables"].AsArray; - List animationControlIds = new List(); - foreach (JSONClass storablesitem in storablesArray) - { - if (storablesitem["id"].Value.EndsWith("Animation") ) - { - jsonAnimation["storables"].Add(storablesitem); - animationControlIds.Add(animationStorableIdToControlId(storablesitem["id"].Value)); - } - } - foreach (JSONClass storablesitem in storablesArray) - { - if (animationControlIds.Contains(storablesitem["id"].Value)) - { - jsonAnimation["storables"].Add(storablesitem); - } - } - jsonAnimation.Add("motionAnimationMaster", FindMotionAnimationMasterData()); - SaveAnimationPresetFile(jsonAnimation); - } - private void SavePreset(JSONClass atomitem, - bool morphs = false,bool hair = false, - bool clothing = false, bool skin = false, - bool breast = false, bool glute = false) - { - JSONClass jsonPreset = new JSONClass(); - JSONClass jsonMorphs = new JSONClass(); - JSONClass jsonBreast = new JSONClass(); - JSONClass jsonGlute = new JSONClass(); - JSONClass jsonSkin = new JSONClass(); - JSONClass jsonHair = new JSONClass(); - JSONClass jsonClothing = new JSONClass(); - - - jsonPreset.Add("setUnlistedParamsToDefault", "false"); - jsonMorphs.Add("setUnlistedParamsToDefault", "true"); - jsonBreast.Add("setUnlistedParamsToDefault", "true"); - jsonGlute.Add("setUnlistedParamsToDefault", "true"); - jsonSkin.Add("setUnlistedParamsToDefault", "true"); - jsonHair.Add("setUnlistedParamsToDefault", "true"); - jsonClothing.Add("setUnlistedParamsToDefault", "true"); - - - jsonPreset.Add("storables", new JSONArray()); - jsonMorphs.Add("storables", new JSONArray()); - jsonBreast.Add("storables", new JSONArray()); - jsonGlute.Add("storables", new JSONArray()); - jsonSkin.Add("storables", new JSONArray()); - jsonHair.Add("storables", new JSONArray()); - jsonClothing.Add("storables", new JSONArray()); - - - JSONArray storablesArray = atomitem["storables"].AsArray; - string[] skinid = { "skin", "textures", "teeth", "tongue", "mouth", "FemaleEyelashes", "MaleEyelashes", "lacrimals" , "sclera" , "irises" }; - string[] breastid = { "BreastControl", "BreastPhysicsMesh" }; - string[] gluteid = { "GluteControl", "LowerPhysicsMesh" }; - List hairid=new List(); - List clothingid=new List(); - - - foreach (JSONClass storablesitem in storablesArray) - { - if (storablesitem["id"].Value == "geometry") - { - JSONArray jsonPresetStorablesArray = jsonPreset["storables"].AsArray; - JSONArray jsonMorphsStorablesArray = jsonMorphs["storables"].AsArray; - JSONArray jsonBreastStorablesArray = jsonBreast["storables"].AsArray; - JSONArray jsonGluteStorablesArray = jsonGlute["storables"].AsArray; - JSONArray jsonSkinStorablesArray = jsonSkin["storables"].AsArray; - JSONArray jsonHairStorablesArray = jsonHair["storables"].AsArray; - JSONArray jsonClothingStorablesArray = jsonClothing["storables"].AsArray; - - //jnsstorablesArray.Add(storablesitem); - jsonPresetStorablesArray.Add(new JSONClass()); - jsonMorphsStorablesArray.Add(new JSONClass()); - jsonBreastStorablesArray.Add(new JSONClass()); - jsonGluteStorablesArray.Add(new JSONClass()); - jsonSkinStorablesArray.Add(new JSONClass()); - jsonHairStorablesArray.Add(new JSONClass()); - jsonClothingStorablesArray.Add(new JSONClass()); - - JSONClass jsonPresetGeometry = (JSONClass)jsonPresetStorablesArray[jsonPresetStorablesArray.Count - 1]; - JSONClass jsonMorphsGeometry = (JSONClass)jsonMorphsStorablesArray[jsonMorphsStorablesArray.Count - 1]; - JSONClass jsonBreastGeometry = (JSONClass)jsonBreastStorablesArray[jsonBreastStorablesArray.Count - 1]; - JSONClass jsonGluteGeometry = (JSONClass)jsonGluteStorablesArray[jsonGluteStorablesArray.Count - 1]; - JSONClass jsonSkinGeometry = (JSONClass)jsonSkinStorablesArray[jsonSkinStorablesArray.Count - 1]; - JSONClass jsonHairGeometry = (JSONClass)jsonHairStorablesArray[jsonHairStorablesArray.Count - 1]; - JSONClass jsonClothingGeometry = (JSONClass)jsonClothingStorablesArray[jsonClothingStorablesArray.Count - 1]; - - jsonPresetGeometry.Add("id", "geometry"); - jsonMorphsGeometry.Add("id", "geometry"); - jsonBreastGeometry.Add("id", "geometry"); - jsonSkinGeometry.Add("id", "geometry"); - jsonHairGeometry.Add("id", "geometry"); - jsonClothingGeometry.Add("id", "geometry"); - - if (storablesitem.HasKey("useFemaleMorphsOnMale")) - jsonMorphsGeometry.Add("useFemaleMorphsOnMale", storablesitem["useFemaleMorphsOnMale"].Value); - if (skin) jsonPresetGeometry.Add("character", storablesitem["character"].Value); - CharacterGender = GetCharacterGender(storablesitem["character"].Value); - jsonSkinGeometry.Add("character", storablesitem["character"]); - - jsonMorphsGeometry.Add("morphs",storablesitem["morphs"]); - if (clothing) - { - jsonPresetGeometry.Add("clothing", storablesitem["clothing"]); - jsonClothingGeometry.Add("clothing", storablesitem["clothing"]); - } - if (hair) - { - jsonPresetGeometry.Add("hair", storablesitem["hair"]); - jsonHairGeometry.Add("hair", storablesitem["hair"]); - } - if (storablesitem.HasKey("useAuxBreastColliders")) - jsonBreastGeometry.Add("useAuxBreastColliders", storablesitem["useAuxBreastColliders"]); - - - if (jsonPresetGeometry.HasKey("clothing")) - { - JSONArray temparray = jsonPresetGeometry["clothing"].AsArray; - foreach (JSONClass tempid in temparray) - { - clothingid.Add(tempid["internalId"].Value); - } - } - if (jsonPresetGeometry.HasKey("hair")) - { - JSONArray temparray = jsonPresetGeometry["hair"].AsArray; - foreach(JSONClass tempid in temparray) - { - hairid.Add(tempid["internalId"].Value); - } - } - - if (jsonClothingGeometry.HasKey("clothing")) - { - JSONArray temparray = jsonClothingGeometry["clothing"].AsArray; - foreach (JSONClass tempid in temparray) - { - clothingid.Add(tempid["internalId"].Value); - } - } - if (jsonHairGeometry.HasKey("hair")) - { - JSONArray temparray = jsonHairGeometry["hair"].AsArray; - foreach (JSONClass tempid in temparray) - { - hairid.Add(tempid["internalId"].Value); - } - } - break; - } - } - - foreach (JSONClass storablesitem in storablesArray) - { - //if(storablesitem["id"].Value == "AutoExpressions") - //{ - // jns["storables"].Add(storablesitem); - //} - if (clothing) - { - foreach (string tempid in clothingid) - { - if (storablesitem["id"].Value.StartsWith(tempid)) - { - jsonPreset["storables"].Add(storablesitem); - } - } - } - - foreach (string tempid in clothingid) - { - if (storablesitem["id"].Value.StartsWith(tempid)) - { - jsonClothing["storables"].Add(storablesitem); - } - } - - if (hair) - { - foreach (string tempid in hairid) - { - if (storablesitem["id"].Value.StartsWith(tempid)) - { - jsonPreset["storables"].Add(storablesitem); - } - } - } - - foreach (string tempid in hairid) - { - if (storablesitem["id"].Value.StartsWith(tempid)) - { - jsonHair["storables"].Add(storablesitem); - } - } - - if (skin) - { - if (skinid.Contains(storablesitem["id"].Value)) - { - jsonPreset["storables"].Add(storablesitem); - } - } - - if (skinid.Contains(storablesitem["id"].Value)) - { - jsonSkin["storables"].Add(storablesitem); - } - - //if (breast) - //{ - if (breastid.Contains(storablesitem["id"].Value)) - { - // jsonPreset["storables"].Add(storablesitem); - jsonBreast["storables"].Add(storablesitem); - } - //} - // if (glute) - // { - if (gluteid.Contains(storablesitem["id"].Value)) - { - // jsonPreset["storables"].Add(storablesitem); - jsonGlute["storables"].Add(storablesitem); - } - // } - - } - - if (skin) SaveDefaultEyeColorFile(); - if (clothing) SaveClothNakedFile(); - if (hair) SaveHairBaldFile(); - if (morphs) SaveMorphPresetFile(jsonMorphs); - if (breast) SaveBreastPresetFile(jsonBreast); - if (glute) SaveGlutePresetFile(jsonGlute); - //if (clothing) SaveClothingPresetFile(jsonClothing); - //if (hair) SaveHairPresetFile(jsonHair); - //if (skin) SaveSkinPresetFile(jsonSkin); - - if (clothing|| hair|| skin) SaveAppearancePresetFile(jsonPreset); - - - } - private void SaveDefaultEyeColorFile() - { - string eyecolorDefault = "{ \"setUnlistedParamsToDefault\": \"false\", \"storables\": [{ \"id\": \"irises\", \"hideMaterial\": \"false\", \"renderQueue\": \"1999\", \"Specular Texture Offset\": \"0\", \"Specular Intensity\": \"1\", \"Gloss\": \"2\", \"Specular Fresnel\": \"0\", \"Gloss Texture Offset\": \"0\", \"Global Illumination Filter\": \"0\", \"Diffuse Texture Offset\": \"0\", \"Diffuse Bumpiness\": \"1\", \"Specular Bumpiness\": \"1\", \"customTexture1TileX\": \"1\", \"customTexture1TileY\": \"1\", \"customTexture1OffsetX\": \"0\", \"customTexture1OffsetY\": \"0\", \"customTexture2TileX\": \"1\", \"customTexture2TileY\": \"1\", \"customTexture2OffsetX\": \"0\", \"customTexture2OffsetY\": \"0\", \"customTexture3TileX\": \"1\", \"customTexture3TileY\": \"1\", \"customTexture3OffsetX\": \"0\", \"customTexture3OffsetY\": \"0\", \"customTexture4TileX\": \"1\", \"customTexture4TileY\": \"1\", \"customTexture4OffsetX\": \"0\", \"customTexture4OffsetY\": \"0\", \"Irises\": \"Color 1\", \"customTexture_MainTex\": \"\", \"customTexture_SpecTex\": \"\", \"customTexture_GlossTex\": \"\", \"customTexture_BumpMap\": \"\", \"Diffuse Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" }, \"Specular Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" }, \"Subsurface Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" } }, { \"id\": \"sclera\", \"hideMaterial\": \"false\", \"renderQueue\": \"1999\", \"Specular Texture Offset\": \"0\", \"Specular Intensity\": \"0.5\", \"Gloss\": \"5\", \"Specular Fresnel\": \"0\", \"Gloss Texture Offset\": \"0.2\", \"Global Illumination Filter\": \"0\", \"Diffuse Texture Offset\": \"0\", \"Diffuse Bumpiness\": \"0.3\", \"Specular Bumpiness\": \"0.05\", \"customTexture1TileX\": \"1\", \"customTexture1TileY\": \"1\", \"customTexture1OffsetX\": \"0\", \"customTexture1OffsetY\": \"0\", \"customTexture2TileX\": \"1\", \"customTexture2TileY\": \"1\", \"customTexture2OffsetX\": \"0\", \"customTexture2OffsetY\": \"0\", \"customTexture3TileX\": \"1\", \"customTexture3TileY\": \"1\", \"customTexture3OffsetX\": \"0\", \"customTexture3OffsetY\": \"0\", \"customTexture4TileX\": \"1\", \"customTexture4TileY\": \"1\", \"customTexture4OffsetX\": \"0\", \"customTexture4OffsetY\": \"0\", \"Sclera\": \"Sclera 1\", \"customTexture_MainTex\": \"\", \"customTexture_SpecTex\": \"\", \"customTexture_GlossTex\": \"\", \"customTexture_BumpMap\": \"\", \"Diffuse Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" }, \"Specular Color\": { \"h\": \"0.5584416\", \"s\": \"0.3019608\", \"v\": \"1\" }, \"Subsurface Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" } }, { \"id\": \"lacrimals\", \"hideMaterial\": \"false\", \"renderQueue\": \"1999\", \"Specular Texture Offset\": \"0\", \"Specular Intensity\": \"1\", \"Gloss\": \"6.5\", \"Specular Fresnel\": \"0.5\", \"Global Illumination Filter\": \"0\", \"Diffuse Texture Offset\": \"0\", \"customTexture1TileX\": \"1\", \"customTexture1TileY\": \"1\", \"customTexture1OffsetX\": \"0\", \"customTexture1OffsetY\": \"0\", \"customTexture2TileX\": \"1\", \"customTexture2TileY\": \"1\", \"customTexture2OffsetX\": \"0\", \"customTexture2OffsetY\": \"0\", \"customTexture_MainTex\": \"\", \"customTexture_SpecTex\": \"\", \"Diffuse Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" }, \"Specular Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" }, \"Subsurface Color\": { \"h\": \"0\", \"s\": \"0\", \"v\": \"1\" } } ] } "; - string saveName = "Custom\\Atom\\Person\\Appearance\\Preset_eyeDefault.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(eyecolorDefault); - sw.Close(); - } - string type = "looks"; - AddPresetResouce(type, saveName); - } - - private void AddPresetResouce(string type,string saveName ) - { - JSONClass jc = new JSONClass(); - jc["type"] = type; - jc["saveName"] = saveName.Replace('\\', '/'); - if (string.IsNullOrEmpty(CharacterGender)) - CharacterGender = "unknown"; - jc["characterGender"] = CharacterGender.ToLower(); - jc["ignoreGender"] = IgnoreGender.ToString().ToLower(); - jc["personOrder"] = (PersonOrder + 1).ToString(); - saveNames.Add(jc); - } - - private void SaveClothNakedFile() - { - string colthNakedDefault = "{ \"setUnlistedParamsToDefault\" : \"true\", \"storables\" : [ { \"id\" : \"geometry\", \"clothing\" : [ ] } ] }"; - string saveName = "Custom\\Atom\\Person\\Clothing\\Preset_ClothNaked.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(colthNakedDefault); - sw.Close(); - } - AddPresetResouce("clothing", saveName.Replace('\\', '/')); - } - private void SaveHairBaldFile() - { - string hairBaldDefault = "{ \"setUnlistedParamsToDefault\" : \"true\", \"storables\" : [ { \"id\" : \"geometry\", \"hair\" : [ ] } ] }"; - string saveName = "Custom\\Atom\\Person\\Hair\\Preset_HairBald.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(hairBaldDefault); - sw.Close(); - } - AddPresetResouce("hairstyle", saveName.Replace('\\', '/')); - } - private void SaveAppearancePresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\Appearance\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - AddPresetResouce("looks", saveName.Replace('\\', '/')); - } - private void SaveMorphPresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\Morphs\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - AddPresetResouce("morphs", saveName.Replace('\\', '/')); - } - private void SaveClothingPresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\Clothing\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - AddPresetResouce("clothing", saveName.Replace('\\', '/')); - } - private void SaveHairPresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\Hair\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - AddPresetResouce("hairstyle", saveName.Replace('\\', '/')); - } - private void SaveSkinPresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\Skin\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - AddPresetResouce("skin", saveName.Replace('\\', '/')); - } - - private void SaveBreastPresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\BreastPhysics\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - AddPresetResouce("breast", saveName.Replace('\\', '/')); - } - - private void SaveGlutePresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\GlutePhysics\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - - AddPresetResouce("glute", saveName.Replace('\\', '/')); - } - private void SavePluginPresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\Plugins\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - - AddPresetResouce("plugin", saveName.Replace('\\', '/')); - } - private void SavePosePresetFile(JSONClass jsonPreset) - { - string strJns = jsonPreset.ToString(); - strJns = strJns.Replace("\"SELF:/", "\"" + varName + ":/"); - string saveName = "Custom\\Atom\\Person\\Pose\\Preset_temp.vap"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - fileStream.SetLength(0); - StreamWriter sw = new StreamWriter(fileStream); - sw.Write(strJns); - sw.Close(); - } - AddPresetResouce("pose", saveName.Replace('\\', '/')); - } - private void SaveAnimationPresetFile(JSONClass jsonPreset) - { - string saveName = "Custom\\Atom\\Person\\AnimationPresets\\Preset_temp.bin"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - jsonPreset.SaveToFile(aFileName); - AddPresetResouce("animation", saveName.Replace('\\', '/')); - } - private void FormAnalysis_FormClosed(object sender, FormClosedEventArgs e) - { - Settings.Default.Save(); - } - - private void buttonLoadScene_Click(object sender, EventArgs e) - { - /* - string sceneFoldername = Path.Combine(Directory.GetCurrentDirectory(), "Cache", - Comm.ValidFileName(varName), Comm.ValidFileName(entryName.Replace('\\', '_').Replace('/', '_'))); - - JSONClass jsonScene = (JSONClass)JSONNode.LoadFromFile(Path.Combine(sceneFoldername, "posinfo.bin")); - JSONArray jsonAtoms=new JSONArray(); - - foreach (TreeNode tn in atomnodes) - { - string atomtype = tn.Parent.Text; - if (atomtype.StartsWith("(base)")) atomtype = atomtype.Substring(6); - if (sceneBaseAtoms.Contains(atomtype)) - { - if (tn.Nodes.Count == 0) - { - string path = tn.FullPath; - path = path.Substring(path.IndexOf('\\') + 1); - path = Path.Combine(sceneFoldername, "atoms", path); - jsonAtoms.Add(JSONNode.LoadFromFile(path)); - } - - tn.Checked = true; - } - - } - //CheckedTreeViewNodes(triStateTreeViewAtoms.Nodes, jsonAtoms, sceneFoldername); - - jsonScene.Add("atoms", jsonAtoms); - string saveName = "Saves\\scene\\loadscene_temp.json"; - string aFileName = Path.Combine(Settings.Default.vampath, saveName); - //jsonScene.SaveToFile(aFileName); - using(StreamWriter sw = new StreamWriter(aFileName, false)) - { - sw.Write(jsonScene.ToString("\t")); - } - */ - foreach (TreeNode tn in atomnodes) - { - string atomtype = tn.Parent.Text; - if (atomtype.StartsWith("(base)")) atomtype = atomtype.Substring(6); - if (sceneBaseAtoms.Contains(atomtype)) - { - tn.Checked = true; - } - } - GetPersonOrder(); - List atomPaths = CollectCheckedAtomPaths(); - try - { - RunBackendJob("scene_preset_scene", new - { - var_name = varName, - entry_name = entryName, - atom_paths = atomPaths, - ignore_gender = ignoreGender, - person_order = PersonOrder - }); - } - catch (Exception ex) - { - MessageBox.Show($"Load Scene failed: {ex.Message}"); - return; - } - labelMessage.Text = "Load Scene completed!"; - labelMessage.Visible = true; - timer1.Enabled = true; - } - - public void GenLoadscenetxt() - { - string sceneFoldername = Path.Combine(Directory.GetCurrentDirectory(), "Cache", - Comm.ValidFileName(varName), Comm.ValidFileName(entryName.Replace('\\', '_').Replace('/', '_'))); - string dependfFilename = Path.Combine(sceneFoldername, "depend.txt"); - List depends = new List(); - using (StreamReader sr = new StreamReader(dependfFilename)) - { - string depend; - while ((depend = sr.ReadLine()) != null) - { - depends.Add(depend); - } - } - - JSONClass jsonls =new JSONClass(); - jsonls["resources"] = new JSONArray(); - foreach (JSONClass jc in saveNames) - { - jsonls["resources"].Add(jc); - } - - form1.GenLoadscenetxt(jsonls, false, depends); - } - - public void CheckedTreeViewNodes(TreeNodeCollection node, JSONArray jsonAtoms,string sceneFoldername) - { - foreach (TreeNode n in node) - { - if (n.Checked) - { - if (n.Nodes.Count==0) - { - string path = n.FullPath; - path=path.Substring(path.IndexOf('\\') + 1); - path=Path.Combine(sceneFoldername,"atoms", path); - jsonAtoms.Add(JSONNode.LoadFromFile(path)); - } - } - CheckedTreeViewNodes(n.Nodes,jsonAtoms, sceneFoldername); - } - } - public void CheckedTreeViewNodes(TreeNodeCollection node, string sceneFoldername,bool atomSubscene=false) - { - string pathPlugindata = Path.Combine(Settings.Default.vampath, "Custom\\PluginData\\feelfar"); - - Directory.CreateDirectory(pathPlugindata); - foreach (TreeNode n in node) - { - if (n.Checked) - { - if (n.Nodes.Count == 0) - { - string path = n.FullPath; - path = path.Substring(path.IndexOf('\\') + 1); - path = Path.Combine(sceneFoldername, "atoms", path); - - string pathPlugindataAtom = Path.Combine(pathPlugindata, n.Text); - File.Copy(path, pathPlugindataAtom, true); - string type = atomSubscene ? "atomSubscene" : "atom"; - string saveName = pathPlugindataAtom.Replace('\\', '/'); - AddPresetResouce(type, saveName); - } - } - CheckedTreeViewNodes(n.Nodes, sceneFoldername, atomSubscene); - } - } - - private List CollectCheckedAtomPaths() - { - string sceneFoldername = Path.Combine(Directory.GetCurrentDirectory(), "Cache", - Comm.ValidFileName(varName), Comm.ValidFileName(entryName.Replace('\\', '_').Replace('/', '_'))); - List paths = new List(); - CollectCheckedAtomPaths(triStateTreeViewAtoms.Nodes, sceneFoldername, paths); - return paths.Distinct().ToList(); - } - - private void CollectCheckedAtomPaths(TreeNodeCollection nodes, string sceneFoldername, List paths) - { - foreach (TreeNode n in nodes) - { - if (n.Checked && n.Nodes.Count == 0) - { - string path = n.FullPath; - int splitIndex = path.IndexOf('\\'); - if (splitIndex >= 0) - { - path = path.Substring(splitIndex + 1); - } - string fullPath = Path.Combine(sceneFoldername, "atoms", path); - paths.Add(fullPath); - } - CollectCheckedAtomPaths(n.Nodes, sceneFoldername, paths); - } - } - private void buttonClearCache_Click(object sender, EventArgs e) - { - } - - private void buttonLoadPlugin_Click(object sender, EventArgs e) - { - if (listBoxAtom.SelectedIndex >= 0 && listBoxAtom.SelectedIndex < listJsonPerson.Count) - { - GetPersonOrder(); - string atomName = listBoxAtom.SelectedItem.ToString(); - try - { - RunBackendJob("scene_preset_plugin", new - { - var_name = varName, - entry_name = entryName, - atom_name = atomName, - ignore_gender = ignoreGender, - person_order = PersonOrder - }); - labelMessage.Text = "Load Plugin completed!"; - labelMessage.Visible = true; - timer1.Enabled = true; - } - catch (Exception ex) - { - MessageBox.Show($"Load Plugin failed: {ex.Message}"); - } - } - else - { - MessageBox.Show("Please select a character"); - listBoxAtom.Select(); - return; - } - } - private void buttonLoadPose_Click(object sender, EventArgs e) - { - if (listBoxAtom.SelectedIndex >= 0 && listBoxAtom.SelectedIndex < listJsonPerson.Count) - { - GetPersonOrder(); - string atomName = listBoxAtom.SelectedItem.ToString(); - try - { - RunBackendJob("scene_preset_pose", new - { - var_name = varName, - entry_name = entryName, - atom_name = atomName, - ignore_gender = ignoreGender, - person_order = PersonOrder - }); - labelMessage.Text = "Load Pose completed!"; - labelMessage.Visible = true; - timer1.Enabled = true; - } - catch (Exception ex) - { - MessageBox.Show($"Load Pose failed: {ex.Message}"); - } - } - else - { - MessageBox.Show("Please select a character"); - listBoxAtom.Select(); - return; - } - } - private void buttonLoadAnimation_Click(object sender, EventArgs e) - { - if (listBoxAtom.SelectedIndex >= 0 && listBoxAtom.SelectedIndex < listJsonPerson.Count) - { - GetPersonOrder(); - string atomName = listBoxAtom.SelectedItem.ToString(); - try - { - RunBackendJob("scene_preset_animation", new - { - var_name = varName, - entry_name = entryName, - atom_name = atomName, - ignore_gender = ignoreGender, - person_order = PersonOrder - }); - labelMessage.Text = "Load Animation completed!"; - labelMessage.Visible = true; - timer1.Enabled = true; - } - catch (Exception ex) - { - MessageBox.Show($"Load Animation failed: {ex.Message}"); - } - } - else - { - MessageBox.Show("Please select a character"); - listBoxAtom.Select(); - return; - } - - } - - private void triStateTreeViewAtoms_AfterSelect(object sender, TreeViewEventArgs e) - { - - } - - private void triStateTreeViewAtoms_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Node.Checked) - { - if (parentAtoms.ContainsKey(e.Node.Text)) - { - foreach (string child in parentAtoms[e.Node.Text]) - { - var tn = atomnodes.Where(x => x.Text == child).First(); - if (!tn.Checked) - tn.Checked = true; - } - - } - } - - } - - private void buttonAddToScene_Click(object sender, EventArgs e) - { - saveNames = new List(); - AddToScene(); - } - - private void AddToScene(bool asSubScene=false) - { - GetPersonOrder(); - List atomPaths = CollectCheckedAtomPaths(); - string jobKind = asSubScene ? "scene_add_subscene" : "scene_add_atoms"; - try - { - RunBackendJob(jobKind, new - { - var_name = varName, - entry_name = entryName, - atom_paths = atomPaths, - ignore_gender = ignoreGender, - person_order = PersonOrder - }); - } - catch (Exception ex) - { - MessageBox.Show($"Add atoms failed: {ex.Message}"); - return; - } - labelMessage.Text = "Add Selected Atoms to Scene completed!"; - labelMessage.Visible = true; - timer1.Enabled = true; - } - - private void buttonAddAsSubscene_Click(object sender, EventArgs e) - { - saveNames = new List(); - AddToScene(true); - } - - private void timer1_Tick(object sender, EventArgs e) - { - labelMessage.Visible = false; - timer1.Enabled = false; - } - } - -} diff --git a/_archived/varManager/FormAnalysis.resx b/_archived/varManager/FormAnalysis.resx deleted file mode 100644 index b552389..0000000 --- a/_archived/varManager/FormAnalysis.resx +++ /dev/null @@ -1,293 +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 - - - 17, 17 - - - 135, 17 - - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6 - OgIzMzNMMzMzazMzM2szMzNrMzMzZTMzMxgAAAAAAAAAAAAAAACo9UcJpPU9WqP1Omuj9Tpro/U6a6T1 - PFyl9EEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjk - RybV4j9p1eI+a9XiPmvV4j5r1uNBPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAsLCy8lJSXlMzMz/zMzM/8zMzP/MzMz/zQ0NH9DQ0MBAAAAAAAAAACm9UIOo/Q8w6P0 - Ov+j9Dr/o/Q6/6P0Ovij9TxXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAA= - - - \ No newline at end of file diff --git a/_archived/varManager/FormHub.Designer.cs b/_archived/varManager/FormHub.Designer.cs deleted file mode 100644 index 455e06f..0000000 --- a/_archived/varManager/FormHub.Designer.cs +++ /dev/null @@ -1,679 +0,0 @@ -锘縩amespace varManager -{ - partial class FormHub - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormHub)); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.listBoxLog = new System.Windows.Forms.ListBox(); - this.panel3 = new System.Windows.Forms.Panel(); - this.buttonNextPage = new System.Windows.Forms.Button(); - this.buttonPrevPage = new System.Windows.Forms.Button(); - this.buttonEmptySearch = new System.Windows.Forms.Button(); - this.buttonLastPage = new System.Windows.Forms.Button(); - this.buttonFirstPage = new System.Windows.Forms.Button(); - this.buttonClose = new System.Windows.Forms.Button(); - this.buttonScanHubUpdate = new System.Windows.Forms.Button(); - this.buttonScanHub = new System.Windows.Forms.Button(); - this.textBoxSearch = new System.Windows.Forms.TextBox(); - this.buttonRefresh = new System.Windows.Forms.Button(); - this.buttonClearFilters = new System.Windows.Forms.Button(); - this.comboBoxPages = new System.Windows.Forms.ComboBox(); - this.comboBoxSecSort = new System.Windows.Forms.ComboBox(); - this.comboBoxPriSort = new System.Windows.Forms.ComboBox(); - this.comboBoxTags = new System.Windows.Forms.ComboBox(); - this.comboBoxCreator = new System.Windows.Forms.ComboBox(); - this.comboBoxCategory = new System.Windows.Forms.ComboBox(); - this.comboBoxPayType = new System.Windows.Forms.ComboBox(); - this.comboBoxHosted = new System.Windows.Forms.ComboBox(); - this.labelTotal = new System.Windows.Forms.Label(); - this.label7 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.flowLayoutPanelHubItems = new System.Windows.Forms.FlowLayoutPanel(); - this.listViewDownList = new System.Windows.Forms.ListView(); - this.columnHeaderPackageName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeaderDownUrl = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.panel1 = new System.Windows.Forms.Panel(); - this.button1 = new System.Windows.Forms.Button(); - this.buttonCopytoClip = new System.Windows.Forms.Button(); - this.buttonDownloadAll = new System.Windows.Forms.Button(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.tableLayoutPanel1.SuspendLayout(); - this.panel3.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); - this.splitContainer1.Panel1.SuspendLayout(); - this.splitContainer1.Panel2.SuspendLayout(); - this.splitContainer1.SuspendLayout(); - this.panel1.SuspendLayout(); - this.SuspendLayout(); - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 223F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.Controls.Add(this.listBoxLog, 1, 1); - this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.splitContainer1, 1, 0); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 2; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 180F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1024, 751); - this.tableLayoutPanel1.TabIndex = 0; - this.tableLayoutPanel1.UseWaitCursor = true; - // - // listBoxLog - // - this.listBoxLog.Dock = System.Windows.Forms.DockStyle.Fill; - this.listBoxLog.FormattingEnabled = true; - this.listBoxLog.ItemHeight = 14; - this.listBoxLog.Location = new System.Drawing.Point(226, 574); - this.listBoxLog.Name = "listBoxLog"; - this.listBoxLog.Size = new System.Drawing.Size(795, 174); - this.listBoxLog.TabIndex = 3; - this.listBoxLog.UseWaitCursor = true; - // - // panel3 - // - this.panel3.BackColor = System.Drawing.Color.DarkSlateGray; - this.panel3.Controls.Add(this.buttonNextPage); - this.panel3.Controls.Add(this.buttonPrevPage); - this.panel3.Controls.Add(this.buttonEmptySearch); - this.panel3.Controls.Add(this.buttonLastPage); - this.panel3.Controls.Add(this.buttonFirstPage); - this.panel3.Controls.Add(this.buttonClose); - this.panel3.Controls.Add(this.buttonScanHubUpdate); - this.panel3.Controls.Add(this.buttonScanHub); - this.panel3.Controls.Add(this.textBoxSearch); - this.panel3.Controls.Add(this.buttonRefresh); - this.panel3.Controls.Add(this.buttonClearFilters); - this.panel3.Controls.Add(this.comboBoxPages); - this.panel3.Controls.Add(this.comboBoxSecSort); - this.panel3.Controls.Add(this.comboBoxPriSort); - this.panel3.Controls.Add(this.comboBoxTags); - this.panel3.Controls.Add(this.comboBoxCreator); - this.panel3.Controls.Add(this.comboBoxCategory); - this.panel3.Controls.Add(this.comboBoxPayType); - this.panel3.Controls.Add(this.comboBoxHosted); - this.panel3.Controls.Add(this.labelTotal); - this.panel3.Controls.Add(this.label7); - this.panel3.Controls.Add(this.label6); - this.panel3.Controls.Add(this.label5); - this.panel3.Controls.Add(this.label4); - this.panel3.Controls.Add(this.label3); - this.panel3.Controls.Add(this.label2); - this.panel3.Controls.Add(this.label1); - this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel3.Location = new System.Drawing.Point(3, 3); - this.panel3.Name = "panel3"; - this.tableLayoutPanel1.SetRowSpan(this.panel3, 2); - this.panel3.Size = new System.Drawing.Size(217, 745); - this.panel3.TabIndex = 5; - this.panel3.UseWaitCursor = true; - // - // buttonNextPage - // - this.buttonNextPage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonNextPage.BackColor = System.Drawing.SystemColors.ButtonFace; - this.buttonNextPage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonNextPage.Location = new System.Drawing.Point(154, 650); - this.buttonNextPage.Name = "buttonNextPage"; - this.buttonNextPage.Size = new System.Drawing.Size(24, 23); - this.buttonNextPage.TabIndex = 15; - this.buttonNextPage.Text = "鈻"; - this.buttonNextPage.UseVisualStyleBackColor = false; - this.buttonNextPage.UseWaitCursor = true; - this.buttonNextPage.Click += new System.EventHandler(this.buttonNextPage_Click); - // - // buttonPrevPage - // - this.buttonPrevPage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonPrevPage.BackColor = System.Drawing.SystemColors.ButtonFace; - this.buttonPrevPage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonPrevPage.Location = new System.Drawing.Point(42, 650); - this.buttonPrevPage.Name = "buttonPrevPage"; - this.buttonPrevPage.Size = new System.Drawing.Size(24, 23); - this.buttonPrevPage.TabIndex = 13; - this.buttonPrevPage.Text = "鈼"; - this.buttonPrevPage.UseVisualStyleBackColor = false; - this.buttonPrevPage.UseWaitCursor = true; - this.buttonPrevPage.Click += new System.EventHandler(this.buttonPrevPage_Click); - // - // buttonEmptySearch - // - this.buttonEmptySearch.BackColor = System.Drawing.SystemColors.ButtonFace; - this.buttonEmptySearch.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonEmptySearch.Location = new System.Drawing.Point(184, 327); - this.buttonEmptySearch.Name = "buttonEmptySearch"; - this.buttonEmptySearch.Size = new System.Drawing.Size(24, 25); - this.buttonEmptySearch.TabIndex = 4; - this.buttonEmptySearch.Text = "鉁"; - this.buttonEmptySearch.UseVisualStyleBackColor = false; - this.buttonEmptySearch.UseWaitCursor = true; - this.buttonEmptySearch.Click += new System.EventHandler(this.buttonEmptySearch_Click); - // - // buttonLastPage - // - this.buttonLastPage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonLastPage.BackColor = System.Drawing.SystemColors.ButtonFace; - this.buttonLastPage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonLastPage.Location = new System.Drawing.Point(177, 650); - this.buttonLastPage.Name = "buttonLastPage"; - this.buttonLastPage.Size = new System.Drawing.Size(33, 23); - this.buttonLastPage.TabIndex = 16; - this.buttonLastPage.Text = "鈻秥"; - this.buttonLastPage.UseVisualStyleBackColor = false; - this.buttonLastPage.UseWaitCursor = true; - this.buttonLastPage.Click += new System.EventHandler(this.buttonLastPage_Click); - // - // buttonFirstPage - // - this.buttonFirstPage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonFirstPage.BackColor = System.Drawing.SystemColors.ButtonFace; - this.buttonFirstPage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonFirstPage.Location = new System.Drawing.Point(10, 650); - this.buttonFirstPage.Name = "buttonFirstPage"; - this.buttonFirstPage.Size = new System.Drawing.Size(33, 23); - this.buttonFirstPage.TabIndex = 12; - this.buttonFirstPage.Text = "|鈼"; - this.buttonFirstPage.UseVisualStyleBackColor = false; - this.buttonFirstPage.UseWaitCursor = true; - this.buttonFirstPage.Click += new System.EventHandler(this.buttonFirstPage_Click); - // - // buttonClose - // - this.buttonClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonClose.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.buttonClose.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.buttonClose.ForeColor = System.Drawing.SystemColors.HighlightText; - this.buttonClose.Location = new System.Drawing.Point(9, 703); - this.buttonClose.Name = "buttonClose"; - this.buttonClose.Size = new System.Drawing.Size(199, 33); - this.buttonClose.TabIndex = 17; - this.buttonClose.Text = "Close"; - this.buttonClose.UseVisualStyleBackColor = false; - this.buttonClose.UseWaitCursor = true; - this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click); - // - // buttonScanHubUpdate - // - this.buttonScanHubUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonScanHubUpdate.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.buttonScanHubUpdate.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.buttonScanHubUpdate.ForeColor = System.Drawing.SystemColors.HighlightText; - this.buttonScanHubUpdate.Location = new System.Drawing.Point(10, 584); - this.buttonScanHubUpdate.Name = "buttonScanHubUpdate"; - this.buttonScanHubUpdate.Size = new System.Drawing.Size(199, 40); - this.buttonScanHubUpdate.TabIndex = 11; - this.buttonScanHubUpdate.Text = "Scan Hub For\r\nPackages With Updates\r\n"; - this.toolTip1.SetToolTip(this.buttonScanHubUpdate, "Scan Hub For Packages With Updates"); - this.buttonScanHubUpdate.UseVisualStyleBackColor = false; - this.buttonScanHubUpdate.UseWaitCursor = true; - this.buttonScanHubUpdate.Click += new System.EventHandler(this.buttonScanHubUpdate_Click); - // - // buttonScanHub - // - this.buttonScanHub.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonScanHub.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.buttonScanHub.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.buttonScanHub.ForeColor = System.Drawing.SystemColors.HighlightText; - this.buttonScanHub.Location = new System.Drawing.Point(9, 538); - this.buttonScanHub.Name = "buttonScanHub"; - this.buttonScanHub.Size = new System.Drawing.Size(199, 40); - this.buttonScanHub.TabIndex = 10; - this.buttonScanHub.Text = "Scan Hub For\r\nMissing Referenced Packages"; - this.toolTip1.SetToolTip(this.buttonScanHub, "Scan hub for missing Depends from All organized vars"); - this.buttonScanHub.UseVisualStyleBackColor = false; - this.buttonScanHub.UseWaitCursor = true; - this.buttonScanHub.Click += new System.EventHandler(this.buttonScanHub_Click); - // - // textBoxSearch - // - this.textBoxSearch.ForeColor = System.Drawing.SystemColors.GrayText; - this.textBoxSearch.Location = new System.Drawing.Point(9, 327); - this.textBoxSearch.Name = "textBoxSearch"; - this.textBoxSearch.Size = new System.Drawing.Size(174, 22); - this.textBoxSearch.TabIndex = 7; - this.textBoxSearch.Text = "Search..."; - this.textBoxSearch.UseWaitCursor = true; - this.textBoxSearch.Enter += new System.EventHandler(this.textBoxSearch_Enter); - this.textBoxSearch.Leave += new System.EventHandler(this.textBoxSearch_Leave); - // - // buttonRefresh - // - this.buttonRefresh.Location = new System.Drawing.Point(10, 3); - this.buttonRefresh.Name = "buttonRefresh"; - this.buttonRefresh.Size = new System.Drawing.Size(121, 29); - this.buttonRefresh.TabIndex = 0; - this.buttonRefresh.Text = "Refresh"; - this.buttonRefresh.UseVisualStyleBackColor = true; - this.buttonRefresh.UseWaitCursor = true; - this.buttonRefresh.Click += new System.EventHandler(this.buttonRefresh_Click); - // - // buttonClearFilters - // - this.buttonClearFilters.Location = new System.Drawing.Point(9, 88); - this.buttonClearFilters.Name = "buttonClearFilters"; - this.buttonClearFilters.Size = new System.Drawing.Size(199, 33); - this.buttonClearFilters.TabIndex = 2; - this.buttonClearFilters.Text = "Clear Filters"; - this.buttonClearFilters.UseVisualStyleBackColor = true; - this.buttonClearFilters.UseWaitCursor = true; - this.buttonClearFilters.Click += new System.EventHandler(this.buttonClearFilters_Click); - // - // comboBoxPages - // - this.comboBoxPages.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.comboBoxPages.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxPages.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxPages.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxPages.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxPages.FormattingEnabled = true; - this.comboBoxPages.Location = new System.Drawing.Point(65, 651); - this.comboBoxPages.Name = "comboBoxPages"; - this.comboBoxPages.Size = new System.Drawing.Size(91, 22); - this.comboBoxPages.TabIndex = 14; - this.comboBoxPages.UseWaitCursor = true; - // - // comboBoxSecSort - // - this.comboBoxSecSort.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxSecSort.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxSecSort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxSecSort.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxSecSort.FormattingEnabled = true; - this.comboBoxSecSort.Location = new System.Drawing.Point(9, 431); - this.comboBoxSecSort.Name = "comboBoxSecSort"; - this.comboBoxSecSort.Size = new System.Drawing.Size(199, 22); - this.comboBoxSecSort.TabIndex = 9; - this.comboBoxSecSort.UseWaitCursor = true; - // - // comboBoxPriSort - // - this.comboBoxPriSort.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxPriSort.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxPriSort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxPriSort.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxPriSort.FormattingEnabled = true; - this.comboBoxPriSort.Location = new System.Drawing.Point(9, 380); - this.comboBoxPriSort.Name = "comboBoxPriSort"; - this.comboBoxPriSort.Size = new System.Drawing.Size(199, 22); - this.comboBoxPriSort.TabIndex = 8; - this.comboBoxPriSort.UseWaitCursor = true; - // - // comboBoxTags - // - this.comboBoxTags.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxTags.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxTags.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxTags.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxTags.FormattingEnabled = true; - this.comboBoxTags.Location = new System.Drawing.Point(9, 299); - this.comboBoxTags.Name = "comboBoxTags"; - this.comboBoxTags.Size = new System.Drawing.Size(199, 22); - this.comboBoxTags.TabIndex = 6; - this.comboBoxTags.UseWaitCursor = true; - // - // comboBoxCreator - // - this.comboBoxCreator.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxCreator.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxCreator.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.comboBoxCreator.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxCreator.FormattingEnabled = true; - this.comboBoxCreator.Location = new System.Drawing.Point(9, 249); - this.comboBoxCreator.Name = "comboBoxCreator"; - this.comboBoxCreator.Size = new System.Drawing.Size(199, 22); - this.comboBoxCreator.TabIndex = 5; - this.comboBoxCreator.UseWaitCursor = true; - // - // comboBoxCategory - // - this.comboBoxCategory.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxCategory.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxCategory.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxCategory.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxCategory.FormattingEnabled = true; - this.comboBoxCategory.Location = new System.Drawing.Point(9, 199); - this.comboBoxCategory.Name = "comboBoxCategory"; - this.comboBoxCategory.Size = new System.Drawing.Size(199, 22); - this.comboBoxCategory.TabIndex = 4; - this.comboBoxCategory.UseWaitCursor = true; - // - // comboBoxPayType - // - this.comboBoxPayType.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxPayType.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxPayType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxPayType.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxPayType.FormattingEnabled = true; - this.comboBoxPayType.Location = new System.Drawing.Point(9, 149); - this.comboBoxPayType.Name = "comboBoxPayType"; - this.comboBoxPayType.Size = new System.Drawing.Size(199, 22); - this.comboBoxPayType.TabIndex = 3; - this.comboBoxPayType.UseWaitCursor = true; - // - // comboBoxHosted - // - this.comboBoxHosted.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.comboBoxHosted.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; - this.comboBoxHosted.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxHosted.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.comboBoxHosted.FormattingEnabled = true; - this.comboBoxHosted.Location = new System.Drawing.Point(9, 60); - this.comboBoxHosted.Name = "comboBoxHosted"; - this.comboBoxHosted.Size = new System.Drawing.Size(199, 22); - this.comboBoxHosted.TabIndex = 1; - this.comboBoxHosted.UseWaitCursor = true; - // - // labelTotal - // - this.labelTotal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelTotal.BackColor = System.Drawing.Color.LightSlateGray; - this.labelTotal.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.labelTotal.Location = new System.Drawing.Point(11, 629); - this.labelTotal.Name = "labelTotal"; - this.labelTotal.Size = new System.Drawing.Size(199, 21); - this.labelTotal.TabIndex = 0; - this.labelTotal.Text = "Total: 0"; - this.labelTotal.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelTotal.UseWaitCursor = true; - // - // label7 - // - this.label7.BackColor = System.Drawing.Color.LightSlateGray; - this.label7.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.label7.Location = new System.Drawing.Point(9, 405); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(199, 24); - this.label7.TabIndex = 0; - this.label7.Text = "Secondary Sort"; - this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label7.UseWaitCursor = true; - // - // label6 - // - this.label6.BackColor = System.Drawing.Color.LightSlateGray; - this.label6.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.label6.Location = new System.Drawing.Point(9, 354); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(199, 24); - this.label6.TabIndex = 0; - this.label6.Text = "Primary Sort"; - this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label6.UseWaitCursor = true; - // - // label5 - // - this.label5.BackColor = System.Drawing.Color.LightSlateGray; - this.label5.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.label5.Location = new System.Drawing.Point(9, 274); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(199, 24); - this.label5.TabIndex = 0; - this.label5.Text = "Tags"; - this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label5.UseWaitCursor = true; - // - // label4 - // - this.label4.BackColor = System.Drawing.Color.LightSlateGray; - this.label4.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.label4.Location = new System.Drawing.Point(9, 224); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(199, 24); - this.label4.TabIndex = 0; - this.label4.Text = "Creator"; - this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label4.UseWaitCursor = true; - // - // label3 - // - this.label3.BackColor = System.Drawing.Color.LightSlateGray; - this.label3.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.label3.Location = new System.Drawing.Point(9, 174); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(199, 24); - this.label3.TabIndex = 0; - this.label3.Text = "Category"; - this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label3.UseWaitCursor = true; - // - // label2 - // - this.label2.BackColor = System.Drawing.Color.LightSlateGray; - this.label2.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.label2.Location = new System.Drawing.Point(9, 124); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(199, 24); - this.label2.TabIndex = 0; - this.label2.Text = "Pay Type"; - this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label2.UseWaitCursor = true; - // - // label1 - // - this.label1.BackColor = System.Drawing.Color.LightSlateGray; - this.label1.ForeColor = System.Drawing.SystemColors.ButtonHighlight; - this.label1.Location = new System.Drawing.Point(9, 35); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(199, 24); - this.label1.TabIndex = 0; - this.label1.Text = "Hosted Option"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label1.UseWaitCursor = true; - // - // splitContainer1 - // - this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer1.Location = new System.Drawing.Point(226, 3); - this.splitContainer1.Name = "splitContainer1"; - // - // splitContainer1.Panel1 - // - this.splitContainer1.Panel1.Controls.Add(this.flowLayoutPanelHubItems); - this.splitContainer1.Panel1.UseWaitCursor = true; - // - // splitContainer1.Panel2 - // - this.splitContainer1.Panel2.Controls.Add(this.listViewDownList); - this.splitContainer1.Panel2.Controls.Add(this.panel1); - this.splitContainer1.Panel2.UseWaitCursor = true; - this.splitContainer1.Size = new System.Drawing.Size(795, 565); - this.splitContainer1.SplitterDistance = 265; - this.splitContainer1.TabIndex = 7; - this.splitContainer1.UseWaitCursor = true; - // - // flowLayoutPanelHubItems - // - this.flowLayoutPanelHubItems.AutoScroll = true; - this.flowLayoutPanelHubItems.Dock = System.Windows.Forms.DockStyle.Fill; - this.flowLayoutPanelHubItems.Location = new System.Drawing.Point(0, 0); - this.flowLayoutPanelHubItems.Name = "flowLayoutPanelHubItems"; - this.flowLayoutPanelHubItems.Size = new System.Drawing.Size(261, 561); - this.flowLayoutPanelHubItems.TabIndex = 6; - this.flowLayoutPanelHubItems.UseWaitCursor = true; - this.flowLayoutPanelHubItems.MouseEnter += new System.EventHandler(this.HideDownLoadList); - // - // listViewDownList - // - this.listViewDownList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeaderPackageName, - this.columnHeaderDownUrl}); - this.listViewDownList.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewDownList.HideSelection = false; - this.listViewDownList.Location = new System.Drawing.Point(0, 0); - this.listViewDownList.Name = "listViewDownList"; - this.listViewDownList.Size = new System.Drawing.Size(522, 514); - this.listViewDownList.TabIndex = 4; - this.toolTip1.SetToolTip(this.listViewDownList, "download link list"); - this.listViewDownList.UseCompatibleStateImageBehavior = false; - this.listViewDownList.UseWaitCursor = true; - this.listViewDownList.View = System.Windows.Forms.View.Details; - this.listViewDownList.MouseEnter += new System.EventHandler(this.DownList_MouseEnter); - // - // columnHeaderPackageName - // - this.columnHeaderPackageName.Text = "Name"; - this.columnHeaderPackageName.Width = 120; - // - // columnHeaderDownUrl - // - this.columnHeaderDownUrl.Text = "Url"; - this.columnHeaderDownUrl.Width = 400; - // - // panel1 - // - this.panel1.Controls.Add(this.button1); - this.panel1.Controls.Add(this.buttonCopytoClip); - this.panel1.Controls.Add(this.buttonDownloadAll); - this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.panel1.Location = new System.Drawing.Point(0, 514); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(522, 47); - this.panel1.TabIndex = 2; - this.panel1.UseWaitCursor = true; - // - // button1 - // - this.button1.Location = new System.Drawing.Point(139, 4); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(82, 40); - this.button1.TabIndex = 2; - this.button1.Text = "Clear"; - this.button1.UseVisualStyleBackColor = true; - this.button1.UseWaitCursor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // buttonCopytoClip - // - this.buttonCopytoClip.Location = new System.Drawing.Point(3, 4); - this.buttonCopytoClip.Name = "buttonCopytoClip"; - this.buttonCopytoClip.Size = new System.Drawing.Size(130, 40); - this.buttonCopytoClip.TabIndex = 0; - this.buttonCopytoClip.Text = "Copy to clipboard"; - this.buttonCopytoClip.UseVisualStyleBackColor = true; - this.buttonCopytoClip.UseWaitCursor = true; - this.buttonCopytoClip.Click += new System.EventHandler(this.buttonCopytoClip_Click); - // - // buttonDownloadAll - // - this.buttonDownloadAll.Location = new System.Drawing.Point(250, 4); - this.buttonDownloadAll.Name = "buttonDownloadAll"; - this.buttonDownloadAll.Size = new System.Drawing.Size(100, 40); - this.buttonDownloadAll.TabIndex = 0; - this.buttonDownloadAll.Text = "Download All"; - - this.buttonDownloadAll.UseVisualStyleBackColor = true; - this.buttonDownloadAll.UseWaitCursor = true; - this.buttonDownloadAll.Click += new System.EventHandler(this.buttonDownloadAll_Click); - // - // FormHub - // - this.AcceptButton = this.buttonClose; - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1024, 751); - this.Controls.Add(this.tableLayoutPanel1); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "FormHub"; - this.Text = "Hub Browse"; - this.UseWaitCursor = true; - this.WindowState = System.Windows.Forms.FormWindowState.Maximized; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormHub_FormClosing); - this.Load += new System.EventHandler(this.FormHub_Load); - this.tableLayoutPanel1.ResumeLayout(false); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.splitContainer1.Panel1.ResumeLayout(false); - this.splitContainer1.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); - this.splitContainer1.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.Button buttonScanHub; - private System.Windows.Forms.ListBox listBoxLog; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Button buttonFirstPage; - private System.Windows.Forms.Button buttonClose; - private System.Windows.Forms.Button buttonScanHubUpdate; - private System.Windows.Forms.TextBox textBoxSearch; - private System.Windows.Forms.Button buttonClearFilters; - private System.Windows.Forms.ComboBox comboBoxSecSort; - private System.Windows.Forms.ComboBox comboBoxPriSort; - private System.Windows.Forms.ComboBox comboBoxTags; - private System.Windows.Forms.ComboBox comboBoxCreator; - private System.Windows.Forms.ComboBox comboBoxCategory; - private System.Windows.Forms.ComboBox comboBoxPayType; - private System.Windows.Forms.ComboBox comboBoxHosted; - private System.Windows.Forms.Label labelTotal; - private System.Windows.Forms.Label label7; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanelHubItems; - private System.Windows.Forms.Button buttonNextPage; - private System.Windows.Forms.Button buttonPrevPage; - private System.Windows.Forms.Button buttonEmptySearch; - private System.Windows.Forms.Button buttonRefresh; - private System.Windows.Forms.Button buttonLastPage; - private System.Windows.Forms.ComboBox comboBoxPages; - private System.Windows.Forms.SplitContainer splitContainer1; - private System.Windows.Forms.Button buttonCopytoClip; - private System.Windows.Forms.Button buttonDownloadAll; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.ListView listViewDownList; - private System.Windows.Forms.ColumnHeader columnHeaderPackageName; - private System.Windows.Forms.ColumnHeader columnHeaderDownUrl; - private System.Windows.Forms.ToolTip toolTip1; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormHub.cs b/_archived/varManager/FormHub.cs deleted file mode 100644 index 3b41615..0000000 --- a/_archived/varManager/FormHub.cs +++ /dev/null @@ -1,1118 +0,0 @@ -锘縰sing SimpleJSON; -using System; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Net.Http; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Text.Json; -using System.Text.Json.Serialization; -using System.Windows.Forms; -using varManager.Backend; -using varManager.Properties; -using static SimpleLogger; - -namespace varManager -{ - public partial class FormHub : Form - { - private static SimpleLogger simpLog = new SimpleLogger(); - public Form1 form1; - private static HttpClient httpClient; - private static CancellationToken cancellationToken; - private List listPayType, listLocation, listSort, listTags, listCategory, listCreator; - private bool downlistHide = true; - Dictionary downloadUrls = new Dictionary(); - private readonly Dictionary downloadUrlsByUrl = new Dictionary(StringComparer.OrdinalIgnoreCase); - private bool refreshInProgress; - private bool refreshQueued; - private bool refreshQueuedGenePages; - private string? lastQuerySignature; - private const int intPerPage = 48; - private InvokeAddLoglist addlog; - static string vam_download_exe = "vam_downloader.exe"; - static string vam_download_path = Path.Combine(".\\plugin\\", vam_download_exe); - static string vam_download_save_path = Path.Combine(Settings.Default.vampath, "AddonPackages"); - - private void LogBackendLine(string line) - { - if (string.IsNullOrWhiteSpace(line)) - { - return; - } - string msg = line.Trim(); - LogLevel level = LogLevel.INFO; - if (msg.StartsWith("error:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.ERROR; - msg = msg.Substring("error:".Length).TrimStart(); - } - else if (msg.StartsWith("debug:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.DEBUG; - msg = msg.Substring("debug:".Length).TrimStart(); - } - BeginInvoke(addlog, new Object[] { msg, level }); - } - - private void LogDebug(string message) - { - LogBackendLine($"debug: {message}"); - } - - private static bool IsVersionedVarName(string name) - { - if (string.IsNullOrWhiteSpace(name)) - { - return false; - } - string[] parts = name.Split('.'); - if (parts.Length < 3) - { - return false; - } - return int.TryParse(parts[parts.Length - 1], out _); - } - - private void AddDownloadUrl(string varName, string url) - { - if (string.IsNullOrWhiteSpace(varName) || string.IsNullOrWhiteSpace(url)) - { - return; - } - if (downloadUrls.TryGetValue(varName, out var existingUrl) && - !string.Equals(existingUrl, url, StringComparison.OrdinalIgnoreCase)) - { - downloadUrlsByUrl.Remove(existingUrl); - } - if (downloadUrlsByUrl.TryGetValue(url, out var existingName)) - { - if (string.Equals(existingName, varName, StringComparison.OrdinalIgnoreCase)) - { - downloadUrls[varName] = url; - return; - } - bool existingVersioned = IsVersionedVarName(existingName); - bool newVersioned = IsVersionedVarName(varName); - if (newVersioned && !existingVersioned) - { - downloadUrls.Remove(existingName); - downloadUrls[varName] = url; - downloadUrlsByUrl[url] = varName; - } - return; - } - downloadUrls[varName] = url; - downloadUrlsByUrl[url] = varName; - } - - private void NormalizeDownloadUrls() - { - var source = downloadUrls; - downloadUrls = new Dictionary(); - downloadUrlsByUrl.Clear(); - foreach (var kvp in source) - { - AddDownloadUrl(kvp.Key, kvp.Value); - } - } - - private static string? NormalizeFilter(string? value) - { - if (string.IsNullOrWhiteSpace(value)) - { - return null; - } - string trimmed = value.Trim(); - if (trimmed.Equals("All", StringComparison.OrdinalIgnoreCase)) - { - return null; - } - return trimmed; - } - - private static string BuildQuerySignature( - int perpage, - string? location, - string? paytype, - string? category, - string? username, - string? tags, - string? search, - string? sort, - int page) - { - return string.Join("|", perpage, - location ?? string.Empty, - paytype ?? string.Empty, - category ?? string.Empty, - username ?? string.Empty, - tags ?? string.Empty, - search ?? string.Empty, - sort ?? string.Empty, - page); - } - - private static string TrimForLog(string value, int maxLength) - { - if (string.IsNullOrEmpty(value)) - { - return string.Empty; - } - if (value.Length <= maxLength) - { - return value; - } - return value.Substring(0, maxLength) + "..."; - } - - private Task RunBackendJobAsync(string kind, object? args) - { - return BackendSession.RunJobAsync(kind, args, LogBackendLine, CancellationToken.None); - } - - private BackendJobResult RunBackendJob(string kind, object? args) - { - return BackendSession.RunJob(kind, args, LogBackendLine, CancellationToken.None); - } - - private T? DeserializeResult(BackendJobResult result) - { - if (!result.Result.HasValue) - { - return default; - } - return JsonSerializer.Deserialize(result.Result.Value.GetRawText()); - } - - private sealed class HubDownloadList - { - [JsonPropertyName("download_urls")] - public Dictionary DownloadUrls { get; set; } = new Dictionary(); - - [JsonPropertyName("download_urls_no_version")] - public Dictionary DownloadUrlsNoVersion { get; set; } = new Dictionary(); - } - - public FormHub() - { - InitializeComponent(); - addlog = new InvokeAddLoglist(UpdateAddLoglist); - httpClient = new HttpClient(); - cancellationToken = new CancellationToken(); - } - private void buttonScanHub_Click(object sender, EventArgs e) - { - string message = "Scan hub for missing Depends from All organized vars. A download link list that will be generated. You must be logged in at hub.virtamate.com before you can download these links, It is recommended to use Chrono for Chrome to download."; - - const string caption = "AllMissingDepends"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - { - AllMissingDepends(); - } - } - public delegate void InvokeAddLoglist(string message, LogLevel logLevel); - - public void UpdateAddLoglist(string message, LogLevel logLevel) - { - string msg = simpLog.WriteFormattedLog(logLevel, message); - listBoxLog.Items.Add(msg); - listBoxLog.TopIndex = listBoxLog.Items.Count - 1; - } - private async void AllMissingDepends() - { - this.BeginInvoke(addlog, new Object[] { "Search for dependencies...", LogLevel.INFO }); - try - { - var result = await RunBackendJobAsync("hub_missing_scan", null); - var payload = DeserializeResult(result); - downloadUrls = payload?.DownloadUrls ?? new Dictionary(); - if (payload != null) - { - foreach (var kvp in payload.DownloadUrlsNoVersion) - { - if (!downloadUrls.ContainsKey(kvp.Key)) - { - downloadUrls[kvp.Key] = kvp.Value; - } - } - } - NormalizeDownloadUrls(); - if (form1 != null) - { - downloadUrls = downloadUrls - .Where(kvp => !form1.FindByvarName(kvp.Key)) - .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - NormalizeDownloadUrls(); - } - - if (downloadUrls.Count > 0) - { - this.BeginInvoke(addlog, new Object[] { $"Total {downloadUrls.Count} download links found", LogLevel.INFO }); - ShowDownList(); - DrawDownloadListView(); - } - else - { - this.BeginInvoke(addlog, new Object[] { "No download link found", LogLevel.INFO }); - } - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"Hub scan failed: {ex.Message}", LogLevel.ERROR }); - } - } - - private void DrawDownloadListView() - { - listViewDownList.Items.Clear(); - foreach (var varname in downloadUrls.Keys) - { - ListViewItem downloaditem = new ListViewItem(); - downloaditem.Text = varname; - downloaditem.SubItems.Add(downloadUrls[varname]); - listViewDownList.Items.Add(downloaditem); - } - } - - private static async Task FindPackages(string packages) - { - string url = "https://hub.virtamate.com/citizenx/api.php"; - JSONClass jns = new JSONClass(); - jns.Add("source", "VaM"); - jns.Add("action", "findPackages"); - jns.Add("packages", packages); - var data = new StringContent(jns.ToString(), Encoding.UTF8, "application/json"); - - using (var client = new HttpClient()) - { - var response = await client.PostAsync(url, data); - string reponse = response.Content.ReadAsStringAsync().Result; - return reponse; - } - } - - private async void FormHub_Load(object sender, EventArgs e) - { - this.Enabled = false; - this.UseWaitCursor = true; - if(!await GetInfoListAsync()) - { - MessageBox.Show("Error getting HUB information!"); - this.Close(); - return; - } - comboBoxHosted.Items.Add("All"); - foreach (string item in listLocation) - { - comboBoxHosted.Items.Add(item); - } - - comboBoxPayType.Items.Add("All"); - foreach (string item in listPayType) - { - comboBoxPayType.Items.Add(item); - } - - - comboBoxCategory.Items.Add("All"); - foreach (string item in listCategory) - { - comboBoxCategory.Items.Add(item); - } - - comboBoxCreator.Items.Add("All"); - foreach (string item in listCreator) - { - comboBoxCreator.Items.Add(item); - } - - comboBoxTags.Items.Add("All"); - foreach (string item in listTags) - { - comboBoxTags.Items.Add(item); - } - foreach (string item in listSort) - { - comboBoxPriSort.Items.Add(item); - } - comboBoxSecSort.Items.Add(""); - foreach (string item in listSort) - { - comboBoxSecSort.Items.Add(item); - } - downlistHide = true; - splitContainer1.SplitterDistance = splitContainer1.Size.Width - 80; - List items = new List(); - - for (int i = 0; i < intPerPage; i++) - { - HubItem item = new HubItem(); - item.LogSink = LogBackendLine; - item.ClickFilter += Item_ClickFilter; - item.GenLinkList += Item_GenLinkList; - item.RetPackageName += Item_RetPackageName; - - - flowLayoutPanelHubItems.Controls.Add(item); - items.Add(item); - } - ClearFilter(); - this.UseWaitCursor = false; - this.Enabled = true; - await GenerateHabItemsAsync(force: true); - EnableFilterEvent(); - - } - - private void Item_RetPackageName(object sender, PackageNameEventArgs e) - { - form1.SelectVarInList(e.PackageName); - form1.Activate(); - //form1.LocateVar(e.PackageName); - } - - private void Item_GenLinkList(object sender, DownloadLinkListEventArgs e) - { - foreach (var kvp in e.DownloadLinks) - { - string varname = kvp.Key; - string url = kvp.Value; - var exitname = form1.VarExistName(varname); - if (exitname == "missing"|| exitname.EndsWith("$")) - { - AddDownloadUrl(varname, url); - } - } - DrawDownloadListView(); - } - - private void DisableFilterEvent() - { - comboBoxHosted.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxPayType.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxCategory.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxCreator.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxTags.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxPriSort.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxSecSort.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxPages.SelectedIndexChanged -= ComboBoxSelectedChanged; - textBoxSearch.TextChanged -= ComboBoxSelectedChanged; - } - - private void EnableFilterEvent() - { - comboBoxHosted.SelectedIndexChanged += ComboBoxSelectedChanged; - comboBoxPayType.SelectedIndexChanged += ComboBoxSelectedChanged; - comboBoxCategory.SelectedIndexChanged += ComboBoxSelectedChanged; - comboBoxCreator.SelectedIndexChanged += ComboBoxSelectedChanged; - comboBoxTags.SelectedIndexChanged += ComboBoxSelectedChanged; - comboBoxPriSort.SelectedIndexChanged += ComboBoxSelectedChanged; - comboBoxSecSort.SelectedIndexChanged += ComboBoxSelectedChanged; - comboBoxPages.SelectedIndexChanged += ComboBoxSelectedChanged; - textBoxSearch.TextChanged += ComboBoxSelectedChanged; - } - - private void ClearFilter() - { - // if (comboBoxHosted.Items.Contains("Hub And Dependencies")) - // comboBoxHosted.SelectedItem = "Hub And Dependencies"; - // else - comboBoxHosted.SelectedIndex = 0; - - if (comboBoxPayType.Items.Contains("Free")) - comboBoxPayType.SelectedItem = "Free"; - else - comboBoxPayType.SelectedIndex = 0; - - comboBoxCategory.SelectedIndex = 0; - comboBoxCreator.SelectedIndex = 0; - comboBoxTags.SelectedIndex = 0; - comboBoxPriSort.SelectedIndex = 0; - comboBoxSecSort.SelectedIndex = 0; - - textBoxSearch.Text = "Search..."; - textBoxSearch.ForeColor = SystemColors.GrayText; - - } - - private void Item_ClickFilter(object sender, HubItemFilterEventArgs e) - { - DisableFilterEvent(); - - HubItem hubItem = sender as HubItem; - if (e.FilterType == "category") - { - ClearFilter(); - comboBoxPayType.Text = e.PayType; - comboBoxCategory.Text = e.Category; - } - else if (e.FilterType == "creator") - { - ClearFilter(); - comboBoxCreator.Text = e.Creator; - } - EnableFilterEvent(); - _ = GenerateHabItemsAsync(); - } - - private void ComboBoxSelectedChanged(object sender, EventArgs e) - { - - if (comboBoxPages == sender) - { - _ = GenerateHabItemsAsync(false); - } - else - { - _ = GenerateHabItemsAsync(); - } - } - - private async Task GenerateHabItemsAsync(bool genePages = true, bool force = false) - { - if (refreshInProgress) - { - refreshQueued = true; - refreshQueuedGenePages = refreshQueuedGenePages || genePages; - return; - } - refreshInProgress = true; - string location = comboBoxHosted.Text, paytype = comboBoxPayType.Text, - category = comboBoxCategory.Text, username = comboBoxCreator.Text, - tags = comboBoxTags.Text, search = textBoxSearch.Text; - if(search == "Search...") - { - search = ""; - } - string? locationFilter = NormalizeFilter(location); - string? paytypeFilter = NormalizeFilter(paytype); - string? categoryFilter = NormalizeFilter(category); - string? usernameFilter = NormalizeFilter(username); - string? tagsFilter = NormalizeFilter(tags); - string? searchFilter = string.IsNullOrWhiteSpace(search) ? null : search.Trim(); - string sort = comboBoxPriSort.Text; - if (!string.IsNullOrEmpty(comboBoxSecSort.Text)) - sort = sort + "," + comboBoxSecSort.Text; - int page = 1; - if (comboBoxPages.Items.Count > 0) - { - if (comboBoxPages.SelectedIndex >= 0) - page = comboBoxPages.SelectedIndex + 1; - } - string signature = BuildQuerySignature(intPerPage, locationFilter, paytypeFilter, categoryFilter, - usernameFilter, tagsFilter, searchFilter, sort, page); - try - { - if (!force && signature == lastQuerySignature) - { - return; - } - LogDebug($"hub_resources request perpage={intPerPage} location='{locationFilter ?? ""}' paytype='{paytypeFilter ?? ""}' category='{categoryFilter ?? ""}' username='{usernameFilter ?? ""}' tags='{tagsFilter ?? ""}' search='{searchFilter ?? ""}' sort='{sort}' page={page}"); - string response = await GetResourcesAsync(intPerPage, locationFilter, paytypeFilter, categoryFilter, usernameFilter, tagsFilter, searchFilter, sort, page); - if (string.IsNullOrEmpty(response)) - { - LogBackendLine("error: hub_resources returned empty response"); - return; - } - LogDebug($"hub_resources raw length={response.Length}"); - LogDebug($"hub_resources raw preview={TrimForLog(response, 200)}"); - RefreshResource(response, genePages); - lastQuerySignature = signature; - } - catch (Exception ex) - { - LogBackendLine($"error: GenerateHabItemsAsync failed: {ex.Message}"); - } - finally - { - refreshInProgress = false; - if (refreshQueued) - { - bool queuedGenePages = refreshQueuedGenePages; - refreshQueued = false; - refreshQueuedGenePages = false; - await GenerateHabItemsAsync(queuedGenePages); - } - } - } - - private async Task GetInfoListAsync() - { - try - { - var result = await RunBackendJobAsync("hub_info", null); - if (!result.Succeeded) - { - LogBackendLine($"error: hub_info job failed status={result.Job.Status} error={result.Job.Error ?? "unknown"}"); - } - if (!result.Result.HasValue) - { - LogBackendLine("error: hub_info returned no result"); - return false; - } - string raw = result.Result.Value.GetRawText(); - LogDebug($"hub_info raw length={raw.Length}"); - LogDebug($"hub_info raw preview={TrimForLog(raw, 200)}"); - JSONNode jsonResult = JSON.Parse(raw); - - if (jsonResult == null) - { - LogBackendLine("error: Failed to parse hub_info JSON response"); - return false; - } - - JSONArray jArray = jsonResult["category"] as JSONArray; - listPayType = new List(); - if (jArray != null) - { - foreach (var item in jArray.Childs) - { - listPayType.Add(item.Value); - } - } - - jArray = jsonResult["location"] as JSONArray; - listLocation = new List(); - if (jArray != null) - { - foreach (var item in jArray.Childs) - { - listLocation.Add(item.Value); - } - } - - jArray = jsonResult["type"] as JSONArray; - listCategory = new List(); - if (jArray != null) - { - foreach (var item in jArray.Childs) - { - listCategory.Add(item.Value); - } - } - - jArray = jsonResult["sort"] as JSONArray; - listSort = new List(); - if (jArray != null) - { - foreach (var item in jArray.Childs) - { - listSort.Add(item.Value); - } - } - - JSONClass jClass = jsonResult["tags"] as JSONClass; - listTags = new List(); - if (jClass != null) - { - foreach (var item in jClass.Keys) - { - listTags.Add(item); - } - } - - jClass = jsonResult["users"] as JSONClass; - listCreator = new List(); - if (jClass != null) - { - foreach (var item in jClass.Keys) - { - listCreator.Add(item); - } - } - LogDebug($"hub_info counts location={listLocation.Count} paytype={listPayType.Count} category={listCategory.Count} sort={listSort.Count} tags={listTags.Count} users={listCreator.Count}"); - return true; - } - catch (Exception ex) - { - LogBackendLine($"error: GetInfoListAsync failed: {ex.Message}"); - return false; - } - } - - private void buttonFirstPage_Click(object sender, EventArgs e) - { - if (comboBoxPages.SelectedIndex > 0) comboBoxPages.SelectedIndex = 0; - } - - private void buttonPrevPage_Click(object sender, EventArgs e) - { - if (comboBoxPages.SelectedIndex > 0) comboBoxPages.SelectedIndex--; - } - - private void buttonNextPage_Click(object sender, EventArgs e) - { - if (comboBoxPages.SelectedIndex < comboBoxPages.Items.Count - 1) comboBoxPages.SelectedIndex++; - } - - private void buttonLastPage_Click(object sender, EventArgs e) - { - if (comboBoxPages.SelectedIndex < comboBoxPages.Items.Count - 1) comboBoxPages.SelectedIndex = comboBoxPages.Items.Count - 1; - } - - private void buttonRefresh_Click(object sender, EventArgs e) - { - _ = GenerateHabItemsAsync(force: true); - } - - private async Task GetResourcesAsync(int perpage = intPerPage, - string? location = null, string? paytype = null, - string? category = null, string? username = null, string? tags = null, string? search = null, - string sort = "Latest Update", - int page = 1) - { - var result = await RunBackendJobAsync("hub_resources", new - { - perpage = perpage, - location = location, - paytype = paytype, - category = category, - username = username, - tags = tags, - search = search, - sort = sort, - page = page - }); - if (!result.Succeeded) - { - LogBackendLine($"error: hub_resources job failed status={result.Job.Status} error={result.Job.Error ?? "unknown"}"); - } - return result.Result.HasValue ? result.Result.Value.GetRawText() : string.Empty; - } - - public delegate void InvokeRefreshResource(string response, bool rebuildPages); - - private void buttonClearFilters_Click(object sender, EventArgs e) - { - DisableFilterEvent(); - ClearFilter(); - EnableFilterEvent(); - _ = GenerateHabItemsAsync(force: true); - } - - private void buttonEmptySearch_Click(object sender, EventArgs e) - { - textBoxSearch.Text = "Search..."; - textBoxSearch.ForeColor = SystemColors.GrayText; - } - - private void buttonScanHubUpdate_Click(object sender, EventArgs e) - { - string message = "Scan Hub For Packages With Updates.A download link list that will be generated. You must be logged in at hub.virtamate.com before you can download these links, It is recommended to use Chrono for Chrome to download."; - - const string caption = "AllMissingDepends"; - var result = MessageBox.Show(message, caption, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button1); - if (result == DialogResult.Yes) - { - UpdatAllPackages(); - } - } - struct PackVerDownID - { - public int ver; - public string downloadid; - - public PackVerDownID(int ver, string downloadid) - { - this.ver = ver; - this.downloadid = downloadid; - } - } - private async void UpdatAllPackages() - { - this.BeginInvoke(addlog, new Object[] { "Search for upgradable vars...", LogLevel.INFO }); - try - { - var result = await RunBackendJobAsync("hub_updates_scan", null); - var payload = DeserializeResult(result); - downloadUrls = payload?.DownloadUrls ?? new Dictionary(); - if (payload != null) - { - foreach (var kvp in payload.DownloadUrlsNoVersion) - { - if (!downloadUrls.ContainsKey(kvp.Key)) - { - downloadUrls[kvp.Key] = kvp.Value; - } - } - } - NormalizeDownloadUrls(); - if (form1 != null) - { - downloadUrls = downloadUrls - .Where(kvp => !form1.FindByvarName(kvp.Key)) - .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - NormalizeDownloadUrls(); - } - if (downloadUrls.Count > 0) - { - this.BeginInvoke(addlog, new Object[] { $"Total {downloadUrls.Count} updatable download links found", LogLevel.INFO }); - ShowDownList(); - DrawDownloadListView(); - } - else - { - this.BeginInvoke(addlog, new Object[] { "No download link found", LogLevel.WARNING }); - } - } - catch (Exception ex) - { - this.BeginInvoke(addlog, new Object[] { $"Hub update scan failed: {ex.Message}", LogLevel.ERROR }); - } - } - - - - private static async Task GetHubPackages() - { - string url = "https://s3cdn.virtamate.com/data/packages.json"; - - using (var client = new HttpClient()) - { - var response = await client.GetAsync(url); - string reponse = response.Content.ReadAsStringAsync().Result; - return reponse; - } - } - - private void ShowDownList() - { - if (downlistHide) - { - int splitterDistance = splitContainer1.Size.Width - 500; - if (splitterDistance < 80) splitterDistance = 80; - splitContainer1.SplitterDistance = splitterDistance; - downlistHide = false; - } - } - - private void HideDownLoadList(object sender, EventArgs e) - { - if (!downlistHide) - { - splitContainer1.SplitterDistance = splitContainer1.Size.Width - 80; - downlistHide = true; - } - } - - private void textBoxSearch_Enter(object sender, EventArgs e) - { - if(textBoxSearch.Text=="Search...") - { - textBoxSearch.Text = ""; - } - textBoxSearch.ForeColor = SystemColors.WindowText; - } - - private void textBoxSearch_Leave(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(textBoxSearch.Text)||textBoxSearch.Text == "Search...") - { - textBoxSearch.Text = "Search..."; - textBoxSearch.ForeColor = SystemColors.GrayText; - } - } - - private void DownList_MouseEnter(object sender, EventArgs e) - { - ShowDownList(); - } - - private void buttonCopytoClip_Click(object sender, EventArgs e) - { - if (downloadUrls.Count > 0) - { - Clipboard.SetText(string.Join("\r\n", downloadUrls.Values)); - MessageBox.Show("Copied to clipboard, you can paste to chrono for chrome(edge) to download"); - } - } - - // Assuming downloadUrls is a member of FormHub, populated elsewhere - // private Dictionary downloadUrls = new Dictionary(); - // Add the new button click event handler - private async void buttonDownloadAll_Click(object sender, EventArgs e) - { - // 1. Collect all unique download URLs from the downloadUrls dictionary - HashSet allUrlsToDownload = new HashSet(); - if (downloadUrls != null) // Ensure downloadUrls is not null - { - foreach (var url in downloadUrls.Values) - { - if (!string.IsNullOrEmpty(url) && url != "null") - { - allUrlsToDownload.Add(url); - } - } - } - // 2. Check if there are any URLs - if (allUrlsToDownload.Count == 0) - { - MessageBox.Show("No download links available. Please ensure data has been loaded and contains download links.", - "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - try - { - this.buttonDownloadAll.Enabled = false; - this.buttonCopytoClip.Enabled = false; - this.button1.Enabled = false; // Assuming button1 is the Clear button - await RunBackendJobAsync("hub_download_all", new { urls = allUrlsToDownload.ToList() }); - MessageBox.Show($"All {allUrlsToDownload.Count} items have been queued for download.\n" + - "Download process complete.", - "Download All Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - MessageBox.Show($"An error occurred during the Download All process: {ex.Message}", - "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - // Re-enable buttons - this.buttonDownloadAll.Enabled = true; - this.buttonCopytoClip.Enabled = true; - this.button1.Enabled = true; - } - } - - private void button1_Click(object sender, EventArgs e) - { - downloadUrls.Clear(); - downloadUrlsByUrl.Clear(); - DrawDownloadListView(); - } - - private void buttonClose_Click(object sender, EventArgs e) - { - this.Close(); - } - - private void FormHub_FormClosing(object sender, FormClosingEventArgs e) - { - if (listViewDownList.Items.Count > 0) - { - if (MessageBox.Show("Download list data will be lost, confirm exit?", "Warning", - MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.No) - { - e.Cancel = true; - } - } - } - - public void RefreshResource(string response, bool rebuildPages = true) - { - try - { - if (string.IsNullOrEmpty(response)) - { - LogBackendLine("error: RefreshResource received empty response"); - return; - } - - JSONNode jsonResult = JSON.Parse(response); - if (jsonResult == null) - { - LogBackendLine("error: Failed to parse hub_resources JSON response"); - return; - } - - JSONClass pagination = jsonResult["pagination"] as JSONClass; - if (pagination == null) - { - LogBackendLine("error: hub_resources response missing pagination field"); - return; - } - - int totalFound = 0; - if (pagination["total_found"] != null) - { - int.TryParse(pagination["total_found"].Value, out totalFound); - } - labelTotal.Text = $"Total: {totalFound}"; - - int totalPages = 0; - if (pagination["total_pages"] != null) - { - int.TryParse(pagination["total_pages"].Value, out totalPages); - } - - int curPage = 1; - if (pagination["page"] != null) - { - int.TryParse(pagination["page"].Value, out curPage); - } - - if (rebuildPages) - { - if (curPage > totalPages) curPage = totalPages; - if (curPage < 1) curPage = 1; - comboBoxPages.SelectedIndexChanged -= ComboBoxSelectedChanged; - comboBoxPages.Items.Clear(); - for (int i = 0; i < totalPages; i++) - { - comboBoxPages.Items.Add($"{i + 1 } of {totalPages}"); - } - if (comboBoxPages.Items.Count > 0) - comboBoxPages.SelectedIndex = curPage - 1; - comboBoxPages.SelectedIndexChanged += ComboBoxSelectedChanged; - } - - var resources = jsonResult["resources"]?.AsArray; - LogDebug($"hub_resources pagination total_found={totalFound} total_pages={totalPages} page={curPage} resources={(resources != null ? resources.Count : 0)}"); - if (resources == null) - { - LogBackendLine("error: hub_resources response missing resources field"); - // Hide all items if no resources - for (int index = 0; index < intPerPage; index++) - { - HubItem hubItem = (HubItem)flowLayoutPanelHubItems.Controls[index]; - hubItem.Visible = false; - } - return; - } - - for (int index = 0; index < intPerPage; index++) - { - HubItem hubItem = (HubItem)flowLayoutPanelHubItems.Controls[index]; - if (resources.Count > index) - { - hubItem.Visible = true; - JSONClass resource = resources[index] as JSONClass; - if (resource == null) - { - hubItem.Visible = false; - continue; - } - hubItem.SetResource(resource); - string inRepository = "Unknown Status"; - if (resource.HasKey("hubFiles")) - { - var hubfiles = resource["hubFiles"]?.AsArray; - if (hubfiles != null && hubfiles.Count > 0) - { - int inrepons = -1; - //JSONClass hubfile = hubfiles[0] as JSONClass; - foreach (JSONClass hubfile in hubfiles) - { - if (hubfile == null || hubfile["filename"] == null) continue; - string filename = hubfile["filename"].Value; - if (filename.EndsWith(".var")) - filename = filename.Substring(0, filename.Length - 4); - hubItem.PackageName = filename; - //int splitindex = filename.LastIndexOf('.'); - string[] filenameparts = filename.Split(('.')); - if (filenameparts.Length >= 2) - { - string hubpackageName = filenameparts[0] + "." + filenameparts[1]; - int hubversion = 1; - if (filenameparts.Length >= 3) - int.TryParse(filenameparts[2], out hubversion); - string varlastname = form1.VarExistName(hubpackageName + ".latest"); - if (varlastname != "missing") - { - int lastversion = int.Parse(varlastname.Substring(filename.LastIndexOf('.') + 1)); - if (lastversion >= hubversion) - { - if (inrepons < 0) - { - inRepository = "In Repository"; - inrepons = 0; - } - } - else - { - if (inrepons < 1) - { - inRepository = $"{lastversion} Upgrade to {hubversion}"; - inrepons = 1; - } - } - - } - else - { - inRepository = "Generate Download List"; - break; - } - } - } - } - } - else - { - if (resource.HasKey("download_url")) - { - inRepository = "Go To Download"; - } - } - hubItem.InRepository = inRepository; - hubItem.RefreshItem(); - } - else - hubItem.Visible = false; - } - } - catch (Exception ex) - { - LogBackendLine($"error: RefreshResource failed: {ex.Message}\n{ex.StackTrace}"); - } - } - private void ResponseTask(Task responseTask) - { - try - { - InvokeRefreshResource refreshResource = new InvokeRefreshResource(RefreshResource); - string response = responseTask.Result; - this.BeginInvoke(refreshResource, new Object[] { response, true }); - } - catch (Exception) { } - } - - private static async Task GetResponse(string url, StringContent data) - { - //using (var client = new HttpClient()) - //{ - string strresponse = ""; - httpClient.Timeout = TimeSpan.FromSeconds(60); - try - { - var response = await httpClient.PostAsync(url, data, cancellationToken); - - strresponse = response.Content.ReadAsStringAsync().Result; - } - catch - { - - } - return strresponse; - //} - } - - private static async Task GetInfo() - { - string url = "https://hub.virtamate.com/citizenx/api.php"; - - JSONClass jns = new JSONClass(); - jns.Add("source", "VaM"); - jns.Add("action", "getInfo"); - var data = new StringContent(jns.ToString(), Encoding.UTF8, "application/json"); - return await GetResponse(url, data); - } - - private void buttonExit_Click(object sender, EventArgs e) - { - this.Close(); - } - } -} diff --git a/_archived/varManager/FormHub.resx b/_archived/varManager/FormHub.resx deleted file mode 100644 index dc6897e..0000000 --- a/_archived/varManager/FormHub.resx +++ /dev/null @@ -1,411 +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 - - - 17, 17 - - - - - AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA - AAAAAADlAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADyAAAA8gAAAPIAAADlAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0BA - QP8hISH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP+/v7//UVFR/wAAAP8AAAD/AAAA/xYWFv8TExP/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAA - APIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/g4OD/0pKSv8AAAD/AAAA/wAAAP+ioqL/eXl5/wAA - AP8AAAD/AAAA/xMTE/8SEhL/AAAA/wAAAP8AAAD/DAwM/yQkJP8AAAD/AAAA/xcXF/8lJSX/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3p6ev9oaGj/AAAA/wAA - AP8AAAD/UVFR/5mZmf8AAAD/AAAA/wAAAP+YmJj//////w8PD/8AAAD/AAAA/3h4eP+ZmZn/AAAA/zMz - M/9nZ2f/19fX/1tbW/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP9FRUX/jIyM/wAAAP8AAAD/AAAA/19fX/97e3v/AAAA/wAAAP8XFxf/gICA/xsbG/+lpaX/CQkJ/wAA - AP9gYGD/ERER/wAAAP/d3d3/VlZW/wAAAP/R0dH/b29v/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/xYWFv8SEhL/TExM/3h4eP8AAAD/AAAA/wAAAP8sLCz/jIyM/wAAAP8AAAD/HBwc/5eX - l/8AAAD/GBgY/0xMTP8AAAD/Xl5e/wgICP8AAAD/xMTE/76+vv8AAAD/AAAA/5+fn/9AQED/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - APIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+np6f/6+vr/+rq6v+/v7//n5+f/4uLi/9nZ2f/j4+P/9nZ - 2f86Ojr/BQUF/wICAv93d3f/DQ0N/wAAAP87Ozv/HBwc/0NDQ/8XFxf/AAAA/3Z2dv/MzMz/Kioq/wAA - AP8AAAD/iIiI/w4ODv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD/wMDA/8+Pj7/eHh4/xoa - Gv8zMzP/MzMz/1RUVP/CwsL/Z2dn/w0NDf8AAAD/Z2dn/y8vL/8AAAD/ERER/2xsbP9CQkL/CgoK/wAA - AP9dXV3/JCQk/3Z2dv8SEhL/AAAA/0RERP+Dg4P/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/HR0d/1ZWVv8AAAD/AAAA/wAAAP8AAAD/i4uL/wAAAP8AAAD/AAAA/1hYWP9hYWH/AAAA/wAA - AP9eXl7/0tLS/wAAAP8AAAD/i4uL/xMTE/8KCgr/qqqq/w8PD/8AAAD/tLS0/wsLC/8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/ygoKP9ZWVn/AAAA/wAAAP8AAAD/AAAA/62trf8ZGRn/AAAA/wAA - AP8QEBD/fn5+/wQEBP8AAAD/HBwc/6ysrP8AAAD/AAAA/4iIiP87Ozv/AAAA/yYmJv9oaGj/c3Nz/5iY - mP8FBQX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8lJSX/a2tr/wAAAP8AAAD/AAAA/wAA - AP+ampr/FBQU/wAAAP8AAAD/AAAA/wwMDP8HBwf/AAAA/wAAAP8QEBD/AAAA/wAAAP+cnJz/JCQk/wAA - AP8AAAD/AQEB/0FBQf8GBgb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/IiIi/4aG - hv8AAAD/AAAA/wAAAP8AAAD/eHh4/05OTv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/oKCg/yQkJP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/yUlJf+4uLj/AAAA/wAAAP8AAAD/AAAA/46Ojv9RUVH/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/5+fn/8rKyv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/Hh4e/wAAAP8AAAD/AAAA/wAAAP92dnb/S0tL/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wsLC//h4eH/FxcX/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/XV1d/6qqqv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8MDAz/ICAg/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/0NDQ/9wcHD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAA - APIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - APIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xYW - Fv8eHh7/Ghoa/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8VDAj/Fg0I/wMC - Af8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8FAgb/Hgkd/xgIGP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Gwkb/yAKIP8QBRD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wQCBP8FAgT/BgMG/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/woKCv/7+/v/+vr6//n5+f9KSkr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8mFw///4lC//iBPP/CZzT/AQAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQD/yjWe//U6 - /P/7Pvr/XRhd/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/NBEy//4//f/uOfL/8zzy/xkI - GP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Epav+jNZ3/rjun/zETLv8AAADyAAAA8gAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8pKSn/4uLi////////////y8vL/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/FSAo/9RyOf//izv//5hH/0IhE/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/RhYG//9Igv/1Nv///zj///8+//8KAwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Is - af/wOuz//zf///8///9wHXD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xkLGf/DP7j/wz23/542 - lv8DAgL/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EBAT/oaGh/5GRkf/y8vL///////// - //9FRUX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJ/xIpN/9wTDb//44+//2COv/0gT//CAQD/wAA - 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 - AP8AAADyAAAA8gAAAP8ZGRn/Ly8v/y0tLf8ZGRn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/HR0d/ysrK/8qKir/Gxsb/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/y8Z - Df84HA7/LRgN/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkDCf8xDjH/MQ4w/w8F - D/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8xDzD/LQst/zsRO/8HAgf/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAA - APIAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAPIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPIAAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - APIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAADyAAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADlAAAA8gAA - APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA - APIAAADlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - - - \ No newline at end of file diff --git a/_archived/varManager/FormMissingVars.Designer.cs b/_archived/varManager/FormMissingVars.Designer.cs deleted file mode 100644 index 1f99088..0000000 --- a/_archived/varManager/FormMissingVars.Designer.cs +++ /dev/null @@ -1,771 +0,0 @@ -锘 -namespace varManager -{ - partial class FormMissingVars - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing) - { - if (components != null) - { - components.Dispose(); - } - dbContext?.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); - 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(FormMissingVars)); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); - this.varsBindingSource = new System.Windows.Forms.BindingSource(this.components); - this.panel2 = new System.Windows.Forms.Panel(); - this.textBoxFilter = new System.Windows.Forms.TextBox(); - this.comboBoxCreater = new System.Windows.Forms.ComboBox(); - this.label2 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.varsDataGridView = new System.Windows.Forms.DataGridView(); - this.dataGridViewMissingVars = new System.Windows.Forms.DataGridView(); - this.ColumnVarname = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.ColumnLinkto = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.ColumnUnLink = new System.Windows.Forms.DataGridViewButtonColumn(); - this.ColumnGoogle = new System.Windows.Forms.DataGridViewButtonColumn(); - this.ColumnDownload = new System.Windows.Forms.DataGridViewButtonColumn(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.panel1 = new System.Windows.Forms.Panel(); - this.buttonSaveTxt = new System.Windows.Forms.Button(); - this.buttonLoadTxt = new System.Windows.Forms.Button(); - this.buttonLinkto = new System.Windows.Forms.Button(); - this.textBoxLinkVar = new System.Windows.Forms.TextBox(); - this.textBoxMissingVar = new System.Windows.Forms.TextBox(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.buttonOK = new System.Windows.Forms.Button(); - this.toolStrip1 = new System.Windows.Forms.ToolStrip(); - this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); - this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); - this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); - this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); - this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); - this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripComboBoxIgnoreVersion = new System.Windows.Forms.ToolStripComboBox(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripButtonFetchDownload = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripButtonDownloadAll = new System.Windows.Forms.ToolStripButton(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.dataGridViewDependent = new System.Windows.Forms.DataGridView(); - this.ColumnDependentName = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.ColumnLocate = new System.Windows.Forms.DataGridViewButtonColumn(); - this.openFileDialogLoadTXT = new System.Windows.Forms.OpenFileDialog(); - this.saveFileDialogSaveTxt = new System.Windows.Forms.SaveFileDialog(); - this.panel3 = new System.Windows.Forms.Panel(); - this.dataGridViewTextBoxColumnvarName = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.varDate = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.ColumnLocateExistVar = new System.Windows.Forms.DataGridViewButtonColumn(); - ((System.ComponentModel.ISupportInitialize)(this.varsBindingSource)).BeginInit(); - this.panel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.varsDataGridView)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewMissingVars)).BeginInit(); - this.tableLayoutPanel1.SuspendLayout(); - this.panel1.SuspendLayout(); - this.toolStrip1.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox3.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependent)).BeginInit(); - this.panel3.SuspendLayout(); - this.SuspendLayout(); - // - // varsBindingSource - // - this.varsBindingSource.DataMember = "vars"; - // - // - this.panel2.Controls.Add(this.groupBox2); - this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel2.Location = new System.Drawing.Point(667, 3); - this.panel2.Name = "panel2"; - this.tableLayoutPanel1.SetRowSpan(this.panel2, 2); - this.panel2.Size = new System.Drawing.Size(658, 270); - this.panel2.TabIndex = 4; - // - // textBoxFilter - // - this.textBoxFilter.Location = new System.Drawing.Point(334, 7); - this.textBoxFilter.Name = "textBoxFilter"; - this.textBoxFilter.Size = new System.Drawing.Size(196, 25); - this.textBoxFilter.TabIndex = 7; - this.textBoxFilter.TextChanged += new System.EventHandler(this.textBoxFilter_TextChanged); - // - // comboBoxCreater - // - this.comboBoxCreater.AllowDrop = true; - this.comboBoxCreater.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxCreater.FormattingEnabled = true; - this.comboBoxCreater.Location = new System.Drawing.Point(92, 8); - this.comboBoxCreater.Name = "comboBoxCreater"; - this.comboBoxCreater.Size = new System.Drawing.Size(153, 23); - this.comboBoxCreater.TabIndex = 6; - this.comboBoxCreater.SelectedIndexChanged += new System.EventHandler(this.comboBoxCreater_SelectedIndexChanged); - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(265, 12); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(63, 15); - this.label2.TabIndex = 0; - this.label2.Text = "Filter:"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(15, 12); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(71, 15); - this.label1.TabIndex = 0; - this.label1.Text = "Creator:"; - // - // varsDataGridView - // - this.varsDataGridView.AllowUserToAddRows = false; - this.varsDataGridView.AllowUserToDeleteRows = false; - this.varsDataGridView.AutoGenerateColumns = false; - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.varsDataGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; - this.varsDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.varsDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.dataGridViewTextBoxColumnvarName, - this.varDate, - this.ColumnLocateExistVar}); - this.varsDataGridView.DataSource = this.varsBindingSource; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle2.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.varsDataGridView.DefaultCellStyle = dataGridViewCellStyle2; - this.varsDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; - this.varsDataGridView.Location = new System.Drawing.Point(3, 62); - this.varsDataGridView.MultiSelect = false; - this.varsDataGridView.Name = "varsDataGridView"; - this.varsDataGridView.ReadOnly = true; - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle3.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.varsDataGridView.RowHeadersDefaultCellStyle = dataGridViewCellStyle3; - this.varsDataGridView.RowHeadersWidth = 51; - this.varsDataGridView.RowTemplate.Height = 27; - this.varsDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.varsDataGridView.Size = new System.Drawing.Size(652, 205); - this.varsDataGridView.TabIndex = 3; - this.varsDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.varsDataGridView_CellContentClick); - this.varsDataGridView.SelectionChanged += new System.EventHandler(this.varsDataGridView_SelectionChanged); - // - // dataGridViewMissingVars - // - this.dataGridViewMissingVars.AllowUserToAddRows = false; - this.dataGridViewMissingVars.AllowUserToDeleteRows = false; - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle4.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dataGridViewMissingVars.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4; - this.dataGridViewMissingVars.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewMissingVars.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.ColumnVarname, - this.ColumnLinkto, - this.ColumnUnLink, - this.ColumnGoogle, - this.ColumnDownload}); - dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dataGridViewMissingVars.DefaultCellStyle = dataGridViewCellStyle5; - this.dataGridViewMissingVars.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewMissingVars.Location = new System.Drawing.Point(3, 21); - this.dataGridViewMissingVars.MultiSelect = false; - this.dataGridViewMissingVars.Name = "dataGridViewMissingVars"; - this.dataGridViewMissingVars.ReadOnly = true; - dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle6.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dataGridViewMissingVars.RowHeadersDefaultCellStyle = dataGridViewCellStyle6; - this.dataGridViewMissingVars.RowHeadersWidth = 51; - this.dataGridViewMissingVars.RowTemplate.Height = 27; - this.dataGridViewMissingVars.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewMissingVars.Size = new System.Drawing.Size(652, 454); - this.dataGridViewMissingVars.TabIndex = 0; - this.dataGridViewMissingVars.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewMissingVars_CellContentClick); - this.dataGridViewMissingVars.RowEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewMissingVars_RowEnter); - this.dataGridViewMissingVars.SelectionChanged += new System.EventHandler(this.dataGridViewMissingVars_SelectionChanged); - // - // ColumnVarname - // - this.ColumnVarname.HeaderText = "Varname"; - this.ColumnVarname.MinimumWidth = 6; - this.ColumnVarname.Name = "ColumnVarname"; - this.ColumnVarname.ReadOnly = true; - this.ColumnVarname.Width = 180; - // - // ColumnLinkto - // - this.ColumnLinkto.HeaderText = "Linkto"; - this.ColumnLinkto.MinimumWidth = 6; - this.ColumnLinkto.Name = "ColumnLinkto"; - this.ColumnLinkto.ReadOnly = true; - this.ColumnLinkto.Width = 180; - // - // ColumnUnLink - // - this.ColumnUnLink.HeaderText = "UnLink"; - this.ColumnUnLink.MinimumWidth = 6; - this.ColumnUnLink.Name = "ColumnUnLink"; - this.ColumnUnLink.ReadOnly = true; - this.ColumnUnLink.Width = 125; - // - // ColumnGoogle - // - this.ColumnGoogle.HeaderText = "Google"; - this.ColumnGoogle.MinimumWidth = 6; - this.ColumnGoogle.Name = "ColumnGoogle"; - this.ColumnGoogle.ReadOnly = true; - this.ColumnGoogle.Width = 125; - // - // ColumnDownload Download from vam hub - // - this.ColumnDownload.HeaderText = "Download"; - this.ColumnDownload.MinimumWidth = 6; - this.ColumnDownload.Name = "ColumnDownload"; - this.ColumnDownload.ReadOnly = true; - this.ColumnDownload.Width = 125; - this.ColumnDownload.UseColumnTextForButtonValue = false; - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 3); - this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 0); - this.tableLayoutPanel1.Controls.Add(this.toolStrip1, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.groupBox3, 1, 2); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 4; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1328, 569); - this.tableLayoutPanel1.TabIndex = 0; - // - // panel1 - // - this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2); - this.panel1.Controls.Add(this.buttonSaveTxt); - this.panel1.Controls.Add(this.buttonLoadTxt); - this.panel1.Controls.Add(this.buttonLinkto); - this.panel1.Controls.Add(this.textBoxLinkVar); - this.panel1.Controls.Add(this.textBoxMissingVar); - this.panel1.Controls.Add(this.buttonCancel); - this.panel1.Controls.Add(this.buttonOK); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(3, 521); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(1322, 45); - this.panel1.TabIndex = 1; - // - // buttonSaveTxt - // - this.buttonSaveTxt.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.buttonSaveTxt.ForeColor = System.Drawing.Color.DarkGreen; - this.buttonSaveTxt.Location = new System.Drawing.Point(667, 9); - this.buttonSaveTxt.Name = "buttonSaveTxt"; - this.buttonSaveTxt.Size = new System.Drawing.Size(117, 28); - this.buttonSaveTxt.TabIndex = 9; - this.buttonSaveTxt.Text = "SaveTXT"; - this.buttonSaveTxt.UseVisualStyleBackColor = true; - this.buttonSaveTxt.Click += new System.EventHandler(this.buttonSaveTxt_Click); - // - // buttonLoadTxt - // - this.buttonLoadTxt.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.buttonLoadTxt.ForeColor = System.Drawing.Color.Sienna; - this.buttonLoadTxt.Location = new System.Drawing.Point(790, 9); - this.buttonLoadTxt.Name = "buttonLoadTxt"; - this.buttonLoadTxt.Size = new System.Drawing.Size(117, 28); - this.buttonLoadTxt.TabIndex = 10; - this.buttonLoadTxt.Text = "LoadTXT"; - this.buttonLoadTxt.UseVisualStyleBackColor = true; - this.buttonLoadTxt.Click += new System.EventHandler(this.buttonLoadTxt_Click); - // - // buttonLinkto - // - this.buttonLinkto.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.buttonLinkto.ForeColor = System.Drawing.Color.Crimson; - this.buttonLinkto.Location = new System.Drawing.Point(275, 9); - this.buttonLinkto.Name = "buttonLinkto"; - this.buttonLinkto.Size = new System.Drawing.Size(117, 28); - this.buttonLinkto.TabIndex = 6; - this.buttonLinkto.Text = "Linkto"; - this.buttonLinkto.UseVisualStyleBackColor = true; - this.buttonLinkto.Click += new System.EventHandler(this.buttonLinkto_Click); - // - // textBoxLinkVar - // - this.textBoxLinkVar.Location = new System.Drawing.Point(404, 11); - this.textBoxLinkVar.Name = "textBoxLinkVar"; - this.textBoxLinkVar.ReadOnly = true; - this.textBoxLinkVar.Size = new System.Drawing.Size(257, 25); - this.textBoxLinkVar.TabIndex = 5; - // - // textBoxMissingVar - // - this.textBoxMissingVar.Location = new System.Drawing.Point(10, 11); - this.textBoxMissingVar.Name = "textBoxMissingVar"; - this.textBoxMissingVar.ReadOnly = true; - this.textBoxMissingVar.Size = new System.Drawing.Size(257, 25); - this.textBoxMissingVar.TabIndex = 5; - // - // buttonCancel - // - this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(1193, 9); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(117, 28); - this.buttonCancel.TabIndex = 4; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); - // - // buttonOK - // - this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.buttonOK.Location = new System.Drawing.Point(1063, 9); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(117, 28); - this.buttonOK.TabIndex = 3; - this.buttonOK.Text = "OK"; - this.buttonOK.UseVisualStyleBackColor = true; - this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); - // - // toolStrip1 - // - this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); - this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.bindingNavigatorMoveFirstItem, - this.bindingNavigatorMovePreviousItem, - this.bindingNavigatorPositionItem, - this.bindingNavigatorCountItem, - this.bindingNavigatorMoveNextItem, - this.bindingNavigatorMoveLastItem, - this.toolStripSeparator1, - this.toolStripComboBoxIgnoreVersion, - this.toolStripSeparator2, - this.toolStripSeparator3, - this.toolStripButtonFetchDownload, - this.toolStripSeparator4, - this.toolStripButtonDownloadAll - }); - this.toolStrip1.Location = new System.Drawing.Point(0, 0); - this.toolStrip1.Name = "toolStrip1"; - this.toolStrip1.Size = new System.Drawing.Size(664, 28); - this.toolStrip1.TabIndex = 5; - this.toolStrip1.Text = "toolStrip1"; - // - // bindingNavigatorMoveFirstItem - // - this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); - this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; - this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; - this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(29, 25); - this.bindingNavigatorMoveFirstItem.Text = "First"; - this.bindingNavigatorMoveFirstItem.Click += new System.EventHandler(this.bindingNavigatorMoveFirstItem_Click); - // - // bindingNavigatorMovePreviousItem - // - this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); - this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; - this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; - this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(29, 25); - this.bindingNavigatorMovePreviousItem.Text = "Previous"; - this.bindingNavigatorMovePreviousItem.Click += new System.EventHandler(this.bindingNavigatorMovePreviousItem_Click); - // - // bindingNavigatorPositionItem - // - this.bindingNavigatorPositionItem.AccessibleName = "浣嶇疆"; - this.bindingNavigatorPositionItem.AutoSize = false; - this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; - this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 27); - this.bindingNavigatorPositionItem.Text = "0"; - this.bindingNavigatorPositionItem.ToolTipText = "Current"; - // - // bindingNavigatorCountItem - // - this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; - this.bindingNavigatorCountItem.Size = new System.Drawing.Size(38, 25); - this.bindingNavigatorCountItem.Text = "/ {0}"; - this.bindingNavigatorCountItem.ToolTipText = "Total number"; - // - // bindingNavigatorMoveNextItem - // - this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); - this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; - this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; - this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(29, 25); - this.bindingNavigatorMoveNextItem.Text = "Next"; - this.bindingNavigatorMoveNextItem.Click += new System.EventHandler(this.bindingNavigatorMoveNextItem_Click); - // - // bindingNavigatorMoveLastItem - // - this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); - this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; - this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; - this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(29, 25); - this.bindingNavigatorMoveLastItem.Text = "Last"; - this.bindingNavigatorMoveLastItem.Click += new System.EventHandler(this.bindingNavigatorMoveLastItem_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(6, 28); - // - // toolStripComboBoxIgnoreVersion - // - this.toolStripComboBoxIgnoreVersion.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.toolStripComboBoxIgnoreVersion.Items.AddRange(new object[] { - "Ignore missing version", - "All missing vars"}); - this.toolStripComboBoxIgnoreVersion.Name = "toolStripComboBoxIgnoreVersion"; - this.toolStripComboBoxIgnoreVersion.Size = new System.Drawing.Size(200, 28); - this.toolStripComboBoxIgnoreVersion.SelectedIndexChanged += new System.EventHandler(this.toolStripComboBoxIgnoreVersion_SelectedIndexChanged); - // - // toolStripSeparator2 - // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(6, 28); - - // - // toolStripButtonFillDownloadText - // - this.toolStripButtonFetchDownload.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; // 璁剧疆鎸夐挳闈犲彸 - this.toolStripButtonFetchDownload.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButtonFetchDownload.Name = "toolStripButtonFetchDownload"; - this.toolStripButtonFetchDownload.Size = new System.Drawing.Size(200, 24); - this.toolStripButtonFetchDownload.Text = "Fetch Download"; - this.toolStripButtonFetchDownload.ToolTipText = "Fetch Download From Hub Before Downloading"; - this.toolStripButtonFetchDownload.BackColor = Color.Aquamarine; - this.toolStripButtonFetchDownload.Click += new System.EventHandler(this.toolStripButtonFillDownloadText_Click); - - // - // toolStripButtonDownloadAll (This will be generated by the designer) - // - this.toolStripButtonDownloadAll.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.toolStripButtonDownloadAll.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButtonDownloadAll.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonDownloadAll.Image"))); // Or remove if no image - this.toolStripButtonDownloadAll.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonDownloadAll.Name = "toolStripButtonDownloadAll"; - this.toolStripButtonDownloadAll.Size = new System.Drawing.Size(95, 24); // Example size - this.toolStripButtonDownloadAll.Text = "Download All"; - this.toolStripButtonDownloadAll.ToolTipText = "Download All After Fetching"; - this.toolStripButtonDownloadAll.BackColor = System.Drawing.Color.LightSkyBlue; // Optional - this.toolStripButtonDownloadAll.Click += new System.EventHandler(this.toolStripButtonDownloadAll_Click); // Add this line in Form.cs or double click in designer - - - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.dataGridViewMissingVars); - this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox1.Location = new System.Drawing.Point(3, 37); - this.groupBox1.Name = "groupBox1"; - this.tableLayoutPanel1.SetRowSpan(this.groupBox1, 2); - this.groupBox1.Size = new System.Drawing.Size(658, 478); - this.groupBox1.TabIndex = 6; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Missing Vars"; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.varsDataGridView); - this.groupBox2.Controls.Add(this.panel3); - this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox2.Location = new System.Drawing.Point(0, 0); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(658, 270); - this.groupBox2.TabIndex = 7; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Exist Vars"; - // - // groupBox3 - // - this.groupBox3.Controls.Add(this.dataGridViewDependent); - this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox3.Location = new System.Drawing.Point(667, 279); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(658, 236); - this.groupBox3.TabIndex = 8; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Dependents"; - // - // dataGridViewDependent - // - this.dataGridViewDependent.AllowUserToAddRows = false; - this.dataGridViewDependent.AllowUserToDeleteRows = false; - dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle7.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dataGridViewDependent.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle7; - this.dataGridViewDependent.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewDependent.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.ColumnDependentName, - this.ColumnLocate}); - dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle8.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dataGridViewDependent.DefaultCellStyle = dataGridViewCellStyle8; - this.dataGridViewDependent.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewDependent.Location = new System.Drawing.Point(3, 21); - this.dataGridViewDependent.MultiSelect = false; - this.dataGridViewDependent.Name = "dataGridViewDependent"; - this.dataGridViewDependent.ReadOnly = true; - dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle9.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dataGridViewDependent.RowHeadersDefaultCellStyle = dataGridViewCellStyle9; - this.dataGridViewDependent.RowHeadersWidth = 51; - this.dataGridViewDependent.RowTemplate.Height = 27; - this.dataGridViewDependent.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewDependent.Size = new System.Drawing.Size(652, 212); - this.dataGridViewDependent.TabIndex = 4; - this.dataGridViewDependent.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewDependent_CellContentClick); - // - // ColumnDependentName - // - this.ColumnDependentName.HeaderText = "DependentName"; - this.ColumnDependentName.MinimumWidth = 6; - this.ColumnDependentName.Name = "ColumnDependentName"; - this.ColumnDependentName.ReadOnly = true; - this.ColumnDependentName.Width = 200; - // - // ColumnLocate - // - this.ColumnLocate.HeaderText = "Locate"; - this.ColumnLocate.MinimumWidth = 6; - this.ColumnLocate.Name = "ColumnLocate"; - this.ColumnLocate.ReadOnly = true; - this.ColumnLocate.Width = 125; - // - // openFileDialogLoadTXT - // - this.openFileDialogLoadTXT.DefaultExt = "txt"; - this.openFileDialogLoadTXT.FileName = "missingvarlinks"; - this.openFileDialogLoadTXT.Filter = "text file|*.txt"; - // - // saveFileDialogSaveTxt - // - this.saveFileDialogSaveTxt.DefaultExt = "txt"; - this.saveFileDialogSaveTxt.FileName = "missingvarlinks"; - this.saveFileDialogSaveTxt.Filter = "text file|*.txt"; - // - // panel3 - // - this.panel3.Controls.Add(this.label1); - this.panel3.Controls.Add(this.textBoxFilter); - this.panel3.Controls.Add(this.label2); - this.panel3.Controls.Add(this.comboBoxCreater); - this.panel3.Dock = System.Windows.Forms.DockStyle.Top; - this.panel3.Location = new System.Drawing.Point(3, 21); - this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(652, 41); - this.panel3.TabIndex = 8; - // - // dataGridViewTextBoxColumnvarName - // - this.dataGridViewTextBoxColumnvarName.DataPropertyName = "varName"; - this.dataGridViewTextBoxColumnvarName.HeaderText = "varName"; - this.dataGridViewTextBoxColumnvarName.MinimumWidth = 6; - this.dataGridViewTextBoxColumnvarName.Name = "dataGridViewTextBoxColumnvarName"; - this.dataGridViewTextBoxColumnvarName.ReadOnly = true; - this.dataGridViewTextBoxColumnvarName.Width = 200; - // - // varDate - // - this.varDate.DataPropertyName = "varDate"; - this.varDate.HeaderText = "varDate"; - this.varDate.MinimumWidth = 6; - this.varDate.Name = "varDate"; - this.varDate.ReadOnly = true; - this.varDate.Width = 125; - // - // ColumnLocateExistVar - // - this.ColumnLocateExistVar.DataPropertyName = "varDate"; - this.ColumnLocateExistVar.HeaderText = "Locate"; - this.ColumnLocateExistVar.MinimumWidth = 6; - this.ColumnLocateExistVar.Name = "ColumnLocateExistVar"; - this.ColumnLocateExistVar.ReadOnly = true; - this.ColumnLocateExistVar.Text = "Locate"; - this.ColumnLocateExistVar.UseColumnTextForButtonValue = true; - this.ColumnLocateExistVar.Width = 125; - // - // FormMissingVars - // - this.AcceptButton = this.buttonOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(1328, 569); - this.ControlBox = false; - this.Controls.Add(this.tableLayoutPanel1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "FormMissingVars"; - this.Text = "FormMissingVars"; - this.WindowState = System.Windows.Forms.FormWindowState.Maximized; - this.Load += new System.EventHandler(this.FormMissingVars_Load); - ((System.ComponentModel.ISupportInitialize)(this.varsBindingSource)).EndInit(); - this.panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.varsDataGridView)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewMissingVars)).EndInit(); - this.tableLayoutPanel1.ResumeLayout(false); - this.tableLayoutPanel1.PerformLayout(); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.toolStrip1.ResumeLayout(false); - this.toolStrip1.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox3.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependent)).EndInit(); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - private System.Windows.Forms.BindingSource varsBindingSource; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.TextBox textBoxFilter; - private System.Windows.Forms.ComboBox comboBoxCreater; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.DataGridView varsDataGridView; - private System.Windows.Forms.DataGridView dataGridViewMissingVars; - private System.Windows.Forms.DataGridViewTextBoxColumn ColumnVarname; - private System.Windows.Forms.DataGridViewTextBoxColumn ColumnLinkto; - private System.Windows.Forms.DataGridViewButtonColumn ColumnUnLink; - private System.Windows.Forms.DataGridViewButtonColumn ColumnGoogle; - private System.Windows.Forms.DataGridViewButtonColumn ColumnDownload; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button buttonLinkto; - private System.Windows.Forms.TextBox textBoxLinkVar; - private System.Windows.Forms.TextBox textBoxMissingVar; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.Button buttonOK; - private System.Windows.Forms.ToolStrip toolStrip1; - private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; - private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; - private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; - private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; - private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; - private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; - private System.Windows.Forms.Button buttonSaveTxt; - private System.Windows.Forms.Button buttonLoadTxt; - private System.Windows.Forms.OpenFileDialog openFileDialogLoadTXT; - private System.Windows.Forms.SaveFileDialog saveFileDialogSaveTxt; - private System.Windows.Forms.ToolStripComboBox toolStripComboBoxIgnoreVersion; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; - private System.Windows.Forms.ToolStripButton toolStripButtonFetchDownload; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; - private System.Windows.Forms.ToolStripButton toolStripButtonDownloadAll; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.GroupBox groupBox3; - private System.Windows.Forms.DataGridView dataGridViewDependent; - private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDependentName; - private System.Windows.Forms.DataGridViewButtonColumn ColumnLocate; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumnvarName; - private System.Windows.Forms.DataGridViewTextBoxColumn varDate; - private System.Windows.Forms.DataGridViewButtonColumn ColumnLocateExistVar; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormMissingVars.cs b/_archived/varManager/FormMissingVars.cs deleted file mode 100644 index 14cf66f..0000000 --- a/_archived/varManager/FormMissingVars.cs +++ /dev/null @@ -1,598 +0,0 @@ -锘縰sing SimpleJSON; -using System; -using System.Collections.Generic; -using System.Data; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Net.Http; -using System.Text; -using System.Text.RegularExpressions; -using System.Text.Json; -using System.Text.Json.Serialization; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; -using varManager.Backend; -using varManager.Properties; -using varManager.Data; -using varManager.Models; -using static SimpleLogger; - -namespace varManager -{ - public partial class FormMissingVars : Form - { - private static string missingVarLinkDirName = "___MissingVarLink___"; - private List missingVars; - public Form1 form1; - private VarManagerContext dbContext; - Dictionary downloadUrls = new Dictionary(); - Dictionary downloadUrlsNoVersion = new Dictionary(); - - static string vam_download_exe = "vam_downloader.exe"; - static string vam_download_path = Path.Combine(".\\plugin\\", vam_download_exe); - static string vam_download_save_path = Path.Combine(Settings.Default.vampath, "AddonPackages"); - - private void LogBackendLine(string line) - { - if (form1 == null) - { - return; - } - LogLevel level = LogLevel.INFO; - if (line.StartsWith("error:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.ERROR; - } - form1.BeginInvoke(new Form1.InvokeAddLoglist(form1.UpdateAddLoglist), new object[] { line, level }); - } - - private Task RunBackendJobAsync(string kind, object? args) - { - return BackendSession.RunJobAsync(kind, args, LogBackendLine, CancellationToken.None); - } - - private T? DeserializeResult(BackendJobResult result) - { - if (!result.Result.HasValue) - { - return default; - } - return JsonSerializer.Deserialize(result.Result.Value.GetRawText()); - } - - private sealed class HubDownloadList - { - [JsonPropertyName("download_urls")] - public Dictionary DownloadUrls { get; set; } = new Dictionary(); - - [JsonPropertyName("download_urls_no_version")] - public Dictionary DownloadUrlsNoVersion { get; set; } = new Dictionary(); - } - - public FormMissingVars() - { - InitializeComponent(); - dbContext = new VarManagerContext(); - } - - public List MissingVars { get => missingVars; set => missingVars = value; } - public static string MissingVarLinkDirName { get => missingVarLinkDirName; set => missingVarLinkDirName = value; } - - private void FormMissingVars_Load(object sender, EventArgs e) - { - Directory.CreateDirectory(Path.Combine(Settings.Default.vampath, "AddonPackages", missingVarLinkDirName)); - // Load data using EF Core instead of TableAdapter - toolStripComboBoxIgnoreVersion.SelectedIndex = 0; - FillMissVarGridView(); - } - - // Assuming these are class members, populated by FillColumnDownloadText - // Dictionary downloadUrls = new Dictionary(); - // Dictionary downloadUrlsNoVersion = new Dictionary(); - // string vam_download_path = "path_to_your_downloader.exe"; // Make sure this is set - // string vam_download_save_path = "path_to_save_downloads"; // Make sure this is set - private async void toolStripButtonDownloadAll_Click(object sender, EventArgs e) - { - // 1. Collect all unique download URLs - HashSet allUrlsToDownload = new HashSet(); - foreach (var url in downloadUrls.Values) - { - if (!string.IsNullOrEmpty(url) && url != "null") - { - allUrlsToDownload.Add(url); - } - } - foreach (var url in downloadUrlsNoVersion.Values) - { - if (!string.IsNullOrEmpty(url) && url != "null") - { - // It's possible some URLs are already in downloadUrls, HashSet handles duplicates - allUrlsToDownload.Add(url); - } - } - // 2. Check if there are any URLs - if (allUrlsToDownload.Count == 0) - { - MessageBox.Show("No download links found. Please click 'Fetch Download' try to fetch download var links.", - "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - try - { - await RunBackendJobAsync("hub_download_all", new { urls = allUrlsToDownload.ToList() }); - MessageBox.Show($"All {allUrlsToDownload.Count} items have been queued for download.\n" + - "Download process complete. Please click the 'UPD_DB' button to update the database after downloads finish.", - "Download All Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - MessageBox.Show($"An error occurred during the Download All process: {ex.Message}", - "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void toolStripButtonFillDownloadText_Click(object sender, EventArgs e) - { - // It's good practice to disable UI elements that shouldn't be clicked during an async operation - this.toolStripButtonFetchDownload.Enabled = false; - this.toolStripButtonDownloadAll.Enabled = false; - try - { - FillColumnDownloadText(); - } - catch (Exception ex) - { - MessageBox.Show($"Error fetching download info: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - this.toolStripButtonFetchDownload.Enabled = true; - this.toolStripButtonDownloadAll.Enabled = true; - } - } - - private async void FillColumnDownloadText() - { - var result = await RunBackendJobAsync("hub_find_packages", new { packages = missingVars }); - var payload = DeserializeResult(result); - downloadUrls = payload?.DownloadUrls ?? new Dictionary(); - downloadUrlsNoVersion = payload?.DownloadUrlsNoVersion ?? new Dictionary(); - - if (form1 != null) - { - downloadUrls = downloadUrls - .Where(kvp => !form1.FindByvarName(kvp.Key)) - .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - downloadUrlsNoVersion = downloadUrlsNoVersion - .Where(kvp => !form1.FindByvarName(kvp.Key)) - .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - } - - foreach (DataGridViewRow row in dataGridViewMissingVars.Rows) - { - string rowVarName = row.Cells["ColumnVarName"].Value.ToString(); - if (downloadUrls.ContainsKey(rowVarName)) - { - row.Cells["ColumnDownload"].Value = rowVarName; - row.Cells["ColumnDownload"].Style.SelectionBackColor = Color.LightGreen; - row.Cells["ColumnDownload"].Style.BackColor = Color.SkyBlue; - } - else if (downloadUrlsNoVersion.ContainsKey(rowVarName.Substring(0, rowVarName.LastIndexOf('.')))) - { - row.Cells["ColumnDownload"].Value = rowVarName; - row.Cells["ColumnDownload"].Style.SelectionBackColor = Color.Orange; - row.Cells["ColumnDownload"].Style.BackColor = Color.Yellow; - } - else - { - row.Cells["ColumnDownload"].Value = ""; - } - } - MessageBox.Show("Fetch Download From Hub Complete!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - private static async Task FindPackages(string packages) - { - string url = "https://hub.virtamate.com/citizenx/api.php"; - JSONClass jns = new JSONClass(); - jns.Add("source", "VaM"); - jns.Add("action", "findPackages"); - jns.Add("packages", packages); - var data = new StringContent(jns.ToString(), Encoding.UTF8, "application/json"); - - using (var client = new HttpClient()) - { - var response = await client.PostAsync(url, data); - string reponse = response.Content.ReadAsStringAsync().Result; - return reponse; - } - } - - private void FillMissVarGridView() - { - if (missingVars != null) - { - dataGridViewMissingVars.Rows.Clear(); - foreach (string missingvar in missingVars) - { - string missingvarname = missingvar; - if(missingvarname.EndsWith("$")) - { - if (toolStripComboBoxIgnoreVersion.SelectedIndex == 1) - { - missingvarname = missingvarname.Substring(0, missingvarname.Length - 1); - } - else - continue; - } - if (missingvarname.LastIndexOf('/') > 1) - missingvarname = missingvarname.Substring(missingvarname.LastIndexOf('/') + 1); - string searchPattern = missingvarname + ".var"; - if (missingvarname.IndexOf(".latest") > 0) - searchPattern = missingvarname.Substring(0, missingvarname.LastIndexOf('.') + 1) + "*.var"; - var files = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages", missingVarLinkDirName), searchPattern, SearchOption.AllDirectories).OrderByDescending(q => Path.GetFileNameWithoutExtension(q)).ToArray(); - if (files.Length == 0) - dataGridViewMissingVars.Rows.Add(new string[] { missingvarname, "", "UnLink", "Google", "" }); - else - { - string destfilename = Path.GetFileNameWithoutExtension(Comm.ReparsePoint(files[0])); - dataGridViewMissingVars.Rows.Add(new string[] { missingvarname, destfilename, "UnLink", "Google", "" }); - } - - } - bindingNavigatorCountItem.Text = "/" + dataGridViewMissingVars.Rows.Count; - } - } - - private void textBoxFilter_TextChanged(object sender, EventArgs e) - { - FilterVars(); - } - - private void FilterVars() - { - string strFilter = "1=1"; - if (comboBoxCreater.SelectedItem != null) - if (comboBoxCreater.SelectedItem.ToString() != "____ALL") - strFilter += " AND creatorName = '" + comboBoxCreater.SelectedItem.ToString() + "'"; - if (textBoxFilter.Text.Trim() != "") - { - strFilter += " AND varName Like '%" + Regex.Replace(Regex.Replace(textBoxFilter.Text.Trim(), @"[\x5B\x5D]", "[$0]", RegexOptions.Multiline), @"[\x27]", @"\x27\x27", RegexOptions.Multiline) + "*'"; - } - - this.comboBoxCreater.SelectedIndexChanged -= new System.EventHandler(this.comboBoxCreater_SelectedIndexChanged); - var creators = dbContext.Vars.GroupBy(g => g.CreatorName); - if (textBoxFilter.Text.Trim() != "") - creators = dbContext.Vars.Where(q => q.VarName.ToLower().IndexOf(textBoxFilter.Text.Trim().ToLower()) >= 0).GroupBy(g => g.CreatorName); - string curcreator = comboBoxCreater.Text; - comboBoxCreater.Items.Clear(); - comboBoxCreater.Items.Add("____ALL"); - foreach (var creator in creators) - { - comboBoxCreater.Items.Add(creator.Key); - } - if (comboBoxCreater.Items.Contains(curcreator)) - comboBoxCreater.SelectedItem = curcreator; - else - comboBoxCreater.SelectedIndex = 0; - this.comboBoxCreater.SelectedIndexChanged += new System.EventHandler(this.comboBoxCreater_SelectedIndexChanged); - - varsBindingSource.Filter = strFilter; - varsDataGridView.Update(); - } - - private void comboBoxCreater_SelectedIndexChanged(object sender, EventArgs e) - { - FilterVars(); - } - - private void varsDataGridView_SelectionChanged(object sender, EventArgs e) - { - if (varsDataGridView.SelectedRows.Count > 0) - textBoxLinkVar.Text = varsDataGridView.SelectedRows[0].Cells[0].Value.ToString(); - } - - private void dataGridViewMissingVars_SelectionChanged(object sender, EventArgs e) - { - if (dataGridViewMissingVars.SelectedRows.Count > 0) - { - string missingVarName = dataGridViewMissingVars.SelectedRows[0].Cells[0].Value.ToString(); - string missingvarnamepart = missingVarName.Split('.')[1]; - textBoxMissingVar.Text = missingVarName; - textBoxFilter.Text = missingvarnamepart; - - List depends = form1.GetDependents(missingVarName); - dataGridViewDependent.Rows.Clear(); - foreach (string depend in depends) - { - dataGridViewDependent.Rows.Add(depend, "locate"); - } - } - } - - private void buttonLinkto_Click(object sender, EventArgs e) - { - string missingvar = textBoxMissingVar.Text; - string linkvar = textBoxLinkVar.Text; - foreach (DataGridViewRow row in dataGridViewMissingVars.Rows) - { - if (row.Cells[0].Value.ToString() == missingvar) - { - row.Cells[1].Value = linkvar; - break; - } - } - } - - private async void dataGridViewMissingVars_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (e.ColumnIndex == 2) - { - dataGridViewMissingVars.Rows[e.RowIndex].Cells[1].Value = ""; - } - if (e.ColumnIndex == 3) - { - string varname = dataGridViewMissingVars.Rows[e.RowIndex].Cells[0].Value.ToString().Replace(".latest", ".1"); - string url = "https://www.google.com/search?q=" + varname + " var"; - try - { - await RunBackendJobAsync("open_url", new { url = url }); - } - catch (Exception ex) - { - MessageBox.Show("An error occurred trying to open url: " + ex.Message); - } - } - if (e.ColumnIndex == 4) - { - string varname = dataGridViewMissingVars.Rows[e.RowIndex].Cells[0].Value.ToString(); - string varnameNoVersion = varname.Substring(0, varname.LastIndexOf('.')); - if (downloadUrls.TryGetValue(varname, out var var_url)) - { - try - { - await RunBackendJobAsync("hub_download_all", new { urls = new List { var_url } }); - } - catch (Exception ex) - { - MessageBox.Show($"Download {varname} failed: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - else if (downloadUrlsNoVersion.TryGetValue(varnameNoVersion, out var var_noversion_url)) - { - try - { - await RunBackendJobAsync("hub_download_all", new { urls = new List { var_noversion_url } }); - } - catch (Exception ex) - { - MessageBox.Show($"Download {varnameNoVersion} failed: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - else - { - // For Debug - // var allUrls = string.Join("\n", downloadUrls.Select(kvp => $"Key: {kvp.Key}, Value: {kvp.Value}")); - // var allUrlsNoVersion = string.Join("\n", downloadUrlsNoVersion.Select(kvp => $"Key: {kvp.Key}, Value: {kvp.Value}")); - // MessageBox.Show("Download URLs:\n" + allUrls + "\n" + allUrlsNoVersion); - MessageBox.Show("No download url found for " + varname); - } - } - } - - private async void buttonOK_Click(object sender, EventArgs e) - { - var links = new List(); - foreach (DataGridViewRow row in dataGridViewMissingVars.Rows) - { - string missingvarname = row.Cells[0].Value.ToString(); - string destvarname = row.Cells[1].Value.ToString(); - if (!string.IsNullOrEmpty(missingvarname) && !string.IsNullOrEmpty(destvarname)) - { - links.Add(new { missing_var = missingvarname, dest_var = destvarname }); - } - } - - try - { - await RunBackendJobAsync("links_missing_create", new { links = links }); - } - catch (Exception ex) - { - MessageBox.Show($"Create link failed: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - - this.Close(); - } - - private void Createlink() - { - foreach (DataGridViewRow row in dataGridViewMissingVars.Rows) - { - string missingvarname = row.Cells[0].Value.ToString(); - string destvarname = row.Cells[1].Value.ToString(); - string searchPattern = missingvarname + ".var"; - if (missingvarname.IndexOf(".latest") > 0) - searchPattern = missingvarname.Substring(0, missingvarname.LastIndexOf('.') + 1) + "*.var"; - var files = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "AddonPackages", missingVarLinkDirName), searchPattern, SearchOption.AllDirectories).OrderByDescending(q => Path.GetFileNameWithoutExtension(q)).ToArray(); - if (files.Length > 0) - { - File.Delete(files[0]); - if (File.Exists(files[0] + ".disabled")) - File.Delete(files[0] + ".disabled"); - } - - if (!string.IsNullOrEmpty(destvarname)) - { - var varsrow = dbContext.Vars.FirstOrDefault(v => v.VarName == destvarname); - if (missingvarname.Substring(missingvarname.LastIndexOf('.')) == ".latest") - { - missingvarname = missingvarname.Substring(0, missingvarname.LastIndexOf('.')) + destvarname.Substring(destvarname.LastIndexOf('.')); - } - if (varsrow != null) - { - string missingvar = Path.Combine(Settings.Default.vampath, "AddonPackages", missingVarLinkDirName, missingvarname + ".var"); - string destvarfile = Path.Combine(Settings.Default.varspath, varsrow.VarPath!, varsrow.VarName + ".var"); - Comm.CreateSymbolicLink(missingvar, destvarfile, Comm.SYMBOLIC_LINK_FLAG.File); - Comm.SetSymboLinkFileTime(missingvar, File.GetCreationTime(destvarfile), File.GetLastWriteTime(destvarfile)); - //File.SetCreationTime(missingvar, File.GetCreationTime(destvarfile)); - //File.SetLastWriteTime(missingvar, File.GetLastWriteTime(destvarfile)); - } - } - } - } - - private void buttonCancel_Click(object sender, EventArgs e) - { - this.Close(); - } - - private void dataGridViewMissingVars_RowEnter(object sender, DataGridViewCellEventArgs e) - { - bindingNavigatorPositionItem.Text = (e.RowIndex + 1).ToString(); - } - - private void bindingNavigatorMoveNextItem_Click(object sender, EventArgs e) - { - int nRow = dataGridViewMissingVars.CurrentCell.RowIndex; - if (nRow < dataGridViewMissingVars.RowCount - 1) - { - dataGridViewMissingVars.CurrentCell = dataGridViewMissingVars.Rows[++nRow].Cells[0]; - } - } - - private void bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e) - { - int nRow = dataGridViewMissingVars.CurrentCell.RowIndex; - if (nRow > 0) - { - dataGridViewMissingVars.CurrentCell = dataGridViewMissingVars.Rows[--nRow].Cells[0]; - } - } - - private void bindingNavigatorMoveLastItem_Click(object sender, EventArgs e) - { - int nRow = dataGridViewMissingVars.CurrentCell.RowIndex; - if (nRow < dataGridViewMissingVars.RowCount - 1) - { - dataGridViewMissingVars.CurrentCell = dataGridViewMissingVars.Rows[dataGridViewMissingVars.RowCount - 1].Cells[0]; - } - } - - private void bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e) - { - int nRow = dataGridViewMissingVars.CurrentCell.RowIndex; - if (nRow > 0) - { - dataGridViewMissingVars.CurrentCell = dataGridViewMissingVars.Rows[0].Cells[0]; - } - } - - private void buttonSave_Click(object sender, EventArgs e) - { - if (saveFileDialogSaveTxt.ShowDialog() == DialogResult.OK) - { - try - { - BackendSession.RunJob("vars_export_installed", new { path = saveFileDialogSaveTxt.FileName }, LogBackendLine, CancellationToken.None); - } - catch (Exception ex) - { - MessageBox.Show($"Export failed: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - private void buttonSaveTxt_Click(object sender, EventArgs e) - { - if (saveFileDialogSaveTxt.ShowDialog() == DialogResult.OK) - { - List varlinktoList = new List(); - foreach (DataGridViewRow row in dataGridViewMissingVars.Rows) - { - string missingvarname = row.Cells[0].Value.ToString(); - string destvarname = row.Cells[1].Value.ToString(); - if (!string.IsNullOrEmpty(destvarname)) - { - varlinktoList.Add($"{missingvarname}|{destvarname}"); - } - } - - File.WriteAllLines(saveFileDialogSaveTxt.FileName, varlinktoList.ToArray()); - } - } - private void buttonLoadTxt_Click(object sender, EventArgs e) - { - if (openFileDialogLoadTXT.ShowDialog() == DialogResult.OK) - { - Dictionary varlinktoDict = new Dictionary(); - foreach (string varlinkto in File.ReadAllLines(openFileDialogLoadTXT.FileName)) - { - string[] varlinktos = varlinkto.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); - if (varlinktos.Length == 2) - { - varlinktoDict[varlinktos[0]] = varlinktos[1]; - } - } - foreach (DataGridViewRow row in dataGridViewMissingVars.Rows) - { - string missingvarname = row.Cells[0].Value.ToString(); - if (varlinktoDict.ContainsKey(missingvarname)) - { - row.Cells[1].Value = varlinktoDict[missingvarname]; - } - } - } - - } - - private void toolStripComboBoxIgnoreVersion_SelectedIndexChanged(object sender, EventArgs e) - { - FillMissVarGridView(); - } - - private void dataGridViewDependent_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (dataGridViewDependent.Columns[e.ColumnIndex].Name == "ColumnLocate" && e.RowIndex >= 0) - { - string dependentName = dataGridViewDependent.Rows[e.RowIndex].Cells["ColumnDependentName"].Value.ToString(); - if (dependentName.StartsWith("\\")) - { - dependentName = dependentName.Substring(1); - try - { - BackendSession.RunJob("vars_locate", new { path = dependentName.Replace('/', '\\') }, LogBackendLine, CancellationToken.None); - } - catch (Exception ex) - { - MessageBox.Show($"Locate failed: {ex.Message}"); - } - } - else - { - if (Form1.ComplyVarName(dependentName)) - { - form1.LocateVar(dependentName); - form1.SelectVarInList(dependentName); - form1.Activate(); - } - } - - } - } - - private void varsDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (varsDataGridView.Columns[e.ColumnIndex].Name == "ColumnLocateExistVar" && e.RowIndex >= 0) - { - string varName = varsDataGridView.Rows[e.RowIndex].Cells["dataGridViewTextBoxColumnvarName"].Value.ToString(); - form1.LocateVar(varName); - form1.SelectVarInList(varName); - - form1.Activate(); - } - } - } -} diff --git a/_archived/varManager/FormMissingVars.resx b/_archived/varManager/FormMissingVars.resx deleted file mode 100644 index 1d2fe91..0000000 --- a/_archived/varManager/FormMissingVars.resx +++ /dev/null @@ -1,366 +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 - - - 220, 17 - - - True - - - True - - - 819, 17 - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 - wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 - v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg - UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA - Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu - lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w - 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f - Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ - 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 - n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI - N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f - oAc0QjgAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS - cQAAEnEB89x6jgAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// - h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B - twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA - kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG - WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 - 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - - - True - - - True - - - True - - - True - - - True - - - True - - - 17, 59 - - - 257, 55 - - - 141 - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6 - OgIzMzNMMzMzazMzM2szMzNrMzMzZTMzMxgAAAAAAAAAAAAAAACo9UcJpPU9WqP1Omuj9Tpro/U6a6T1 - PFyl9EEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjk - RybV4j9p1eI+a9XiPmvV4j5r1uNBPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAsLCy8lJSXlMzMz/zMzM/8zMzP/MzMz/zQ0NH9DQ0MBAAAAAAAAAACm9UIOo/Q8w6P0 - Ov+j9Dr/o/Q6/6P0Ovij9TxXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAA= - - - \ No newline at end of file diff --git a/_archived/varManager/FormScenes.Designer.cs b/_archived/varManager/FormScenes.Designer.cs deleted file mode 100644 index 11c5944..0000000 --- a/_archived/varManager/FormScenes.Designer.cs +++ /dev/null @@ -1,1023 +0,0 @@ -锘 -namespace varManager -{ - partial class FormScenes - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing) - { - if (components != null) - { - components.Dispose(); - } - dbContext?.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormScenes)); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.panel5 = new System.Windows.Forms.Panel(); - this.buttonRemoveHide = new System.Windows.Forms.Button(); - this.buttonAddHide = new System.Windows.Forms.Button(); - this.panel6 = new System.Windows.Forms.Panel(); - this.buttonAddFav = new System.Windows.Forms.Button(); - this.buttonRemoveFav = new System.Windows.Forms.Button(); - this.listViewHide = new DragNDrop.DragAndDropListView(); - this.imageListScenes = new System.Windows.Forms.ImageList(this.components); - this.listViewNormal = new DragNDrop.DragAndDropListView(); - this.listViewFav = new DragNDrop.DragAndDropListView(); - this.panel3 = new System.Windows.Forms.Panel(); - this.buttonNormal = new System.Windows.Forms.Button(); - this.labelNormal = new System.Windows.Forms.Label(); - this.panel4 = new System.Windows.Forms.Panel(); - this.buttonFav = new System.Windows.Forms.Button(); - this.labelFav = new System.Windows.Forms.Label(); - this.panel7 = new System.Windows.Forms.Panel(); - this.buttonHide = new System.Windows.Forms.Button(); - this.labelHide = new System.Windows.Forms.Label(); - this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.radioButtonCategory4 = new System.Windows.Forms.RadioButton(); - this.radioButtonCategory6 = new System.Windows.Forms.RadioButton(); - this.radioButtonCategory2 = new System.Windows.Forms.RadioButton(); - this.radioButtonCategory7 = new System.Windows.Forms.RadioButton(); - this.radioButtonCategory3 = new System.Windows.Forms.RadioButton(); - this.radioButtonCategory5 = new System.Windows.Forms.RadioButton(); - this.radioButtonCategory1 = new System.Windows.Forms.RadioButton(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.chklistLocation = new System.Windows.Forms.CheckedListBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.checkedListBoxHideFav = new System.Windows.Forms.CheckedListBox(); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.textBoxFilter = new System.Windows.Forms.TextBox(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.comboBoxCreator = new System.Windows.Forms.ComboBox(); - this.groupBox6 = new System.Windows.Forms.GroupBox(); - this.comboBoxOrderBy = new System.Windows.Forms.ComboBox(); - this.buttonResetFilter = new System.Windows.Forms.Button(); - this.buttonLoadscene = new System.Windows.Forms.Button(); - this.panelImage = new System.Windows.Forms.Panel(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); - this.labelPreviewVarName = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.checkBoxForMale = new System.Windows.Forms.CheckBox(); - this.checkBoxIgnoreGender = new System.Windows.Forms.CheckBox(); - this.groupBoxPersonOrder = new System.Windows.Forms.GroupBox(); - this.radioButtonPersonOrder6 = new System.Windows.Forms.RadioButton(); - this.radioButtonPersonOrder8 = new System.Windows.Forms.RadioButton(); - this.radioButtonPersonOrder7 = new System.Windows.Forms.RadioButton(); - this.radioButtonPersonOrder5 = new System.Windows.Forms.RadioButton(); - this.radioButtonPersonOrder4 = new System.Windows.Forms.RadioButton(); - this.radioButtonPersonOrder3 = new System.Windows.Forms.RadioButton(); - this.radioButtonPersonOrder2 = new System.Windows.Forms.RadioButton(); - this.radioButtonPersonOrder1 = new System.Windows.Forms.RadioButton(); - this.checkBoxMerge = new System.Windows.Forms.CheckBox(); - this.buttonClearCache = new System.Windows.Forms.Button(); - this.buttonAnalysis = new System.Windows.Forms.Button(); - this.pictureBoxPreview = new System.Windows.Forms.PictureBox(); - this.panel1 = new System.Windows.Forms.Panel(); - this.buttonFilterByCreator = new System.Windows.Forms.Button(); - this.buttonLocate = new System.Windows.Forms.Button(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.progressBar1 = new System.Windows.Forms.ProgressBar(); - this.backgroundWorkerGenerate = new System.ComponentModel.BackgroundWorker(); - // DataSet components removed - using EF Core - this.tableLayoutPanel1.SuspendLayout(); - this.panel5.SuspendLayout(); - this.panel6.SuspendLayout(); - this.panel3.SuspendLayout(); - this.panel4.SuspendLayout(); - this.panel7.SuspendLayout(); - this.flowLayoutPanel1.SuspendLayout(); - this.groupBox3.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox4.SuspendLayout(); - this.groupBox5.SuspendLayout(); - this.groupBox6.SuspendLayout(); - this.panelImage.SuspendLayout(); - this.tableLayoutPanel2.SuspendLayout(); - this.panel2.SuspendLayout(); - this.groupBoxPersonOrder.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).BeginInit(); - this.panel1.SuspendLayout(); - // DataSet init removed - this.SuspendLayout(); - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 6; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 232F)); - this.tableLayoutPanel1.Controls.Add(this.panel5, 1, 1); - this.tableLayoutPanel1.Controls.Add(this.panel6, 3, 1); - this.tableLayoutPanel1.Controls.Add(this.listViewHide, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.listViewNormal, 2, 1); - this.tableLayoutPanel1.Controls.Add(this.listViewFav, 4, 1); - this.tableLayoutPanel1.Controls.Add(this.panel3, 2, 0); - this.tableLayoutPanel1.Controls.Add(this.panel4, 4, 0); - this.tableLayoutPanel1.Controls.Add(this.panel7, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 5, 0); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 36); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 2; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1324, 636); - this.tableLayoutPanel1.TabIndex = 0; - // - // panel5 - // - this.panel5.AutoScroll = true; - this.panel5.Controls.Add(this.buttonRemoveHide); - this.panel5.Controls.Add(this.buttonAddHide); - this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel5.Location = new System.Drawing.Point(330, 43); - this.panel5.Name = "panel5"; - this.panel5.Size = new System.Drawing.Size(49, 590); - this.panel5.TabIndex = 4; - // - // buttonRemoveHide - // - this.buttonRemoveHide.Anchor = System.Windows.Forms.AnchorStyles.None; - this.buttonRemoveHide.Location = new System.Drawing.Point(-1, 388); - this.buttonRemoveHide.Name = "buttonRemoveHide"; - this.buttonRemoveHide.Size = new System.Drawing.Size(50, 36); - this.buttonRemoveHide.TabIndex = 1; - this.buttonRemoveHide.Text = ">>"; - this.toolTip1.SetToolTip(this.buttonRemoveHide, "Selected items in the Hide list will be moved to the Normal list"); - this.buttonRemoveHide.UseVisualStyleBackColor = true; - this.buttonRemoveHide.Click += new System.EventHandler(this.buttonRemoveHide_Click); - // - // buttonAddHide - // - this.buttonAddHide.Anchor = System.Windows.Forms.AnchorStyles.None; - this.buttonAddHide.Location = new System.Drawing.Point(-1, 147); - this.buttonAddHide.Name = "buttonAddHide"; - this.buttonAddHide.Size = new System.Drawing.Size(50, 36); - this.buttonAddHide.TabIndex = 0; - this.buttonAddHide.Text = "<<"; - this.toolTip1.SetToolTip(this.buttonAddHide, "Selected items in the normal list will be moved to the Hide list"); - this.buttonAddHide.UseVisualStyleBackColor = true; - this.buttonAddHide.Click += new System.EventHandler(this.buttonAddHide_Click); - // - // panel6 - // - this.panel6.Controls.Add(this.buttonAddFav); - this.panel6.Controls.Add(this.buttonRemoveFav); - this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel6.Location = new System.Drawing.Point(712, 43); - this.panel6.Name = "panel6"; - this.panel6.Size = new System.Drawing.Size(49, 590); - this.panel6.TabIndex = 5; - // - // buttonAddFav - // - this.buttonAddFav.Anchor = System.Windows.Forms.AnchorStyles.None; - this.buttonAddFav.Location = new System.Drawing.Point(-1, 147); - this.buttonAddFav.Name = "buttonAddFav"; - this.buttonAddFav.Size = new System.Drawing.Size(50, 36); - this.buttonAddFav.TabIndex = 0; - this.buttonAddFav.Text = ">>"; - this.toolTip1.SetToolTip(this.buttonAddFav, "Selected items in the normal list will be moved to the Fav list"); - this.buttonAddFav.UseVisualStyleBackColor = true; - this.buttonAddFav.Click += new System.EventHandler(this.buttonAddFav_Click); - // - // buttonRemoveFav - // - this.buttonRemoveFav.Anchor = System.Windows.Forms.AnchorStyles.None; - this.buttonRemoveFav.Location = new System.Drawing.Point(-1, 388); - this.buttonRemoveFav.Name = "buttonRemoveFav"; - this.buttonRemoveFav.Size = new System.Drawing.Size(50, 36); - this.buttonRemoveFav.TabIndex = 1; - this.buttonRemoveFav.Text = "<<"; - this.toolTip1.SetToolTip(this.buttonRemoveFav, "Selected items in the Fav list will be moved to the Normal list"); - this.buttonRemoveFav.UseVisualStyleBackColor = true; - this.buttonRemoveFav.Click += new System.EventHandler(this.buttonRemoveFav_Click); - // - // listViewHide - // - this.listViewHide.AllowDrop = true; - this.listViewHide.AllowReorder = true; - this.listViewHide.AllowSelfDrop = false; - this.listViewHide.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewHide.HideSelection = false; - this.listViewHide.LargeImageList = this.imageListScenes; - this.listViewHide.LineColor = System.Drawing.Color.Red; - this.listViewHide.Location = new System.Drawing.Point(3, 43); - this.listViewHide.Name = "listViewHide"; - this.listViewHide.Size = new System.Drawing.Size(321, 590); - this.listViewHide.TabIndex = 7; - this.toolTip1.SetToolTip(this.listViewHide, "Normal list,Multiple selections available,double click wite"); - this.listViewHide.UseCompatibleStateImageBehavior = false; - this.listViewHide.VirtualMode = true; - this.listViewHide.ListViewDragDrop += new DragNDrop.DragAndDropListView.DragDropHandle(this.listViewHide_ListViewDragDrop); - this.listViewHide.ItemActivate += new System.EventHandler(this.listView_ItemActivate); - this.listViewHide.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.listViewHide_RetrieveVirtualItem); - // - // imageListScenes - // - this.imageListScenes.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; - this.imageListScenes.ImageSize = new System.Drawing.Size(128, 128); - this.imageListScenes.TransparentColor = System.Drawing.Color.Transparent; - // - // listViewNormal - // - this.listViewNormal.AllowDrop = true; - this.listViewNormal.AllowReorder = true; - this.listViewNormal.AllowSelfDrop = false; - this.listViewNormal.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewNormal.HideSelection = false; - this.listViewNormal.LargeImageList = this.imageListScenes; - this.listViewNormal.LineColor = System.Drawing.Color.Red; - this.listViewNormal.Location = new System.Drawing.Point(385, 43); - this.listViewNormal.Name = "listViewNormal"; - this.listViewNormal.Size = new System.Drawing.Size(321, 590); - this.listViewNormal.TabIndex = 7; - this.listViewNormal.UseCompatibleStateImageBehavior = false; - this.listViewNormal.VirtualMode = true; - this.listViewNormal.ListViewDragDrop += new DragNDrop.DragAndDropListView.DragDropHandle(this.listViewNormal_ListViewDragDrop); - this.listViewNormal.ItemActivate += new System.EventHandler(this.listView_ItemActivate); - this.listViewNormal.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.listViewNormal_RetrieveVirtualItem); - // - // listViewFav - // - this.listViewFav.AllowDrop = true; - this.listViewFav.AllowReorder = true; - this.listViewFav.AllowSelfDrop = false; - this.listViewFav.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewFav.HideSelection = false; - this.listViewFav.LargeImageList = this.imageListScenes; - this.listViewFav.LineColor = System.Drawing.Color.Red; - this.listViewFav.Location = new System.Drawing.Point(767, 43); - this.listViewFav.Name = "listViewFav"; - this.listViewFav.Size = new System.Drawing.Size(321, 590); - this.listViewFav.TabIndex = 7; - this.listViewFav.UseCompatibleStateImageBehavior = false; - this.listViewFav.VirtualMode = true; - this.listViewFav.ListViewDragDrop += new DragNDrop.DragAndDropListView.DragDropHandle(this.listViewFav_ListViewDragDrop); - this.listViewFav.ItemActivate += new System.EventHandler(this.listView_ItemActivate); - this.listViewFav.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.listViewFav_RetrieveVirtualItem); - // - // panel3 - // - this.panel3.Controls.Add(this.buttonNormal); - this.panel3.Controls.Add(this.labelNormal); - this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel3.Location = new System.Drawing.Point(385, 3); - this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(321, 34); - this.panel3.TabIndex = 10; - // - // buttonNormal - // - this.buttonNormal.Anchor = System.Windows.Forms.AnchorStyles.None; - this.buttonNormal.Location = new System.Drawing.Point(94, 5); - this.buttonNormal.Name = "buttonNormal"; - this.buttonNormal.Size = new System.Drawing.Size(91, 26); - this.buttonNormal.TabIndex = 0; - this.buttonNormal.Text = "鈼Normal鈻"; - this.buttonNormal.UseVisualStyleBackColor = true; - this.buttonNormal.Click += new System.EventHandler(this.buttonNormal_Click); - // - // labelNormal - // - this.labelNormal.Anchor = System.Windows.Forms.AnchorStyles.None; - this.labelNormal.AutoSize = true; - this.labelNormal.Location = new System.Drawing.Point(191, 10); - this.labelNormal.Name = "labelNormal"; - this.labelNormal.Size = new System.Drawing.Size(16, 17); - this.labelNormal.TabIndex = 6; - this.labelNormal.Text = "0"; - // - // panel4 - // - this.panel4.Controls.Add(this.buttonFav); - this.panel4.Controls.Add(this.labelFav); - this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel4.Location = new System.Drawing.Point(767, 3); - this.panel4.Name = "panel4"; - this.panel4.Size = new System.Drawing.Size(321, 34); - this.panel4.TabIndex = 10; - // - // buttonFav - // - this.buttonFav.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.buttonFav.Location = new System.Drawing.Point(227, 5); - this.buttonFav.Name = "buttonFav"; - this.buttonFav.Size = new System.Drawing.Size(91, 26); - this.buttonFav.TabIndex = 0; - this.buttonFav.Text = "鈼Fav鈻"; - this.buttonFav.UseVisualStyleBackColor = true; - this.buttonFav.Click += new System.EventHandler(this.buttonFav_Click); - // - // labelFav - // - this.labelFav.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.labelFav.AutoSize = true; - this.labelFav.Location = new System.Drawing.Point(180, 10); - this.labelFav.Name = "labelFav"; - this.labelFav.Size = new System.Drawing.Size(16, 17); - this.labelFav.TabIndex = 6; - this.labelFav.Text = "0"; - // - // panel7 - // - this.panel7.Controls.Add(this.buttonHide); - this.panel7.Controls.Add(this.labelHide); - this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel7.Location = new System.Drawing.Point(3, 3); - this.panel7.Name = "panel7"; - this.panel7.Size = new System.Drawing.Size(321, 34); - this.panel7.TabIndex = 10; - // - // buttonHide - // - this.buttonHide.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.buttonHide.Location = new System.Drawing.Point(3, 5); - this.buttonHide.Name = "buttonHide"; - this.buttonHide.Size = new System.Drawing.Size(91, 26); - this.buttonHide.TabIndex = 0; - this.buttonHide.Text = "鈼Hide鈻"; - this.buttonHide.UseVisualStyleBackColor = true; - this.buttonHide.Click += new System.EventHandler(this.buttonHide_Click); - // - // labelHide - // - this.labelHide.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.labelHide.AutoSize = true; - this.labelHide.Location = new System.Drawing.Point(100, 10); - this.labelHide.Name = "labelHide"; - this.labelHide.Size = new System.Drawing.Size(16, 17); - this.labelHide.TabIndex = 6; - this.labelHide.Text = "0"; - // - // flowLayoutPanel1 - // - this.flowLayoutPanel1.Controls.Add(this.groupBox3); - this.flowLayoutPanel1.Controls.Add(this.groupBox1); - this.flowLayoutPanel1.Controls.Add(this.groupBox2); - this.flowLayoutPanel1.Controls.Add(this.groupBox4); - this.flowLayoutPanel1.Controls.Add(this.groupBox5); - this.flowLayoutPanel1.Controls.Add(this.groupBox6); - this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.flowLayoutPanel1.Location = new System.Drawing.Point(1094, 3); - this.flowLayoutPanel1.Name = "flowLayoutPanel1"; - this.tableLayoutPanel1.SetRowSpan(this.flowLayoutPanel1, 2); - this.flowLayoutPanel1.Size = new System.Drawing.Size(227, 630); - this.flowLayoutPanel1.TabIndex = 8; - // - // groupBox3 - // - this.groupBox3.Controls.Add(this.radioButtonCategory4); - this.groupBox3.Controls.Add(this.radioButtonCategory6); - this.groupBox3.Controls.Add(this.radioButtonCategory2); - this.groupBox3.Controls.Add(this.radioButtonCategory7); - this.groupBox3.Controls.Add(this.radioButtonCategory3); - this.groupBox3.Controls.Add(this.radioButtonCategory5); - this.groupBox3.Controls.Add(this.radioButtonCategory1); - this.groupBox3.Location = new System.Drawing.Point(3, 3); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(170, 128); - this.groupBox3.TabIndex = 0; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Category"; - // - // radioButtonCategory4 - // - this.radioButtonCategory4.AutoSize = true; - this.radioButtonCategory4.Location = new System.Drawing.Point(7, 102); - this.radioButtonCategory4.Name = "radioButtonCategory4"; - this.radioButtonCategory4.Size = new System.Drawing.Size(84, 21); - this.radioButtonCategory4.TabIndex = 2; - this.radioButtonCategory4.Text = "hairstyle"; - this.radioButtonCategory4.UseVisualStyleBackColor = true; - this.radioButtonCategory4.CheckedChanged += new System.EventHandler(this.radioButtonCategory_CheckedChanged); - // - // radioButtonCategory6 - // - this.radioButtonCategory6.AutoSize = true; - this.radioButtonCategory6.Location = new System.Drawing.Point(93, 50); - this.radioButtonCategory6.Name = "radioButtonCategory6"; - this.radioButtonCategory6.Size = new System.Drawing.Size(55, 21); - this.radioButtonCategory6.TabIndex = 2; - this.radioButtonCategory6.Text = "skin"; - this.radioButtonCategory6.UseVisualStyleBackColor = true; - this.radioButtonCategory6.CheckedChanged += new System.EventHandler(this.radioButtonCategory_CheckedChanged); - // - // radioButtonCategory2 - // - this.radioButtonCategory2.AutoSize = true; - this.radioButtonCategory2.Location = new System.Drawing.Point(7, 50); - this.radioButtonCategory2.Name = "radioButtonCategory2"; - this.radioButtonCategory2.Size = new System.Drawing.Size(63, 21); - this.radioButtonCategory2.TabIndex = 2; - this.radioButtonCategory2.Text = "looks"; - this.radioButtonCategory2.UseVisualStyleBackColor = true; - this.radioButtonCategory2.CheckedChanged += new System.EventHandler(this.radioButtonCategory_CheckedChanged); - // - // radioButtonCategory7 - // - this.radioButtonCategory7.AutoSize = true; - this.radioButtonCategory7.Location = new System.Drawing.Point(93, 76); - this.radioButtonCategory7.Name = "radioButtonCategory7"; - this.radioButtonCategory7.Size = new System.Drawing.Size(58, 21); - this.radioButtonCategory7.TabIndex = 1; - this.radioButtonCategory7.Text = "pose"; - this.radioButtonCategory7.UseVisualStyleBackColor = true; - this.radioButtonCategory7.CheckedChanged += new System.EventHandler(this.radioButtonCategory_CheckedChanged); - // - // radioButtonCategory3 - // - this.radioButtonCategory3.AutoSize = true; - this.radioButtonCategory3.Location = new System.Drawing.Point(7, 76); - this.radioButtonCategory3.Name = "radioButtonCategory3"; - this.radioButtonCategory3.Size = new System.Drawing.Size(80, 21); - this.radioButtonCategory3.TabIndex = 1; - this.radioButtonCategory3.Text = "clothing"; - this.radioButtonCategory3.UseVisualStyleBackColor = true; - this.radioButtonCategory3.CheckedChanged += new System.EventHandler(this.radioButtonCategory_CheckedChanged); - // - // radioButtonCategory5 - // - this.radioButtonCategory5.AutoSize = true; - this.radioButtonCategory5.Location = new System.Drawing.Point(93, 24); - this.radioButtonCategory5.Name = "radioButtonCategory5"; - this.radioButtonCategory5.Size = new System.Drawing.Size(77, 21); - this.radioButtonCategory5.TabIndex = 1; - this.radioButtonCategory5.Text = "morphs"; - this.radioButtonCategory5.UseVisualStyleBackColor = true; - this.radioButtonCategory5.CheckedChanged += new System.EventHandler(this.radioButtonCategory_CheckedChanged); - // - // radioButtonCategory1 - // - this.radioButtonCategory1.AutoSize = true; - this.radioButtonCategory1.Checked = true; - this.radioButtonCategory1.Location = new System.Drawing.Point(7, 24); - this.radioButtonCategory1.Name = "radioButtonCategory1"; - this.radioButtonCategory1.Size = new System.Drawing.Size(70, 21); - this.radioButtonCategory1.TabIndex = 1; - this.radioButtonCategory1.TabStop = true; - this.radioButtonCategory1.Text = "scenes"; - this.radioButtonCategory1.UseVisualStyleBackColor = true; - this.radioButtonCategory1.CheckedChanged += new System.EventHandler(this.radioButtonCategory_CheckedChanged); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.chklistLocation); - this.groupBox1.Location = new System.Drawing.Point(3, 137); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(170, 117); - this.groupBox1.TabIndex = 0; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "location"; - // - // chklistLocation - // - this.chklistLocation.CheckOnClick = true; - this.chklistLocation.FormattingEnabled = true; - this.chklistLocation.Items.AddRange(new object[] { - "installed", - "not Installed", - "missingLink", - "Save"}); - this.chklistLocation.Location = new System.Drawing.Point(14, 22); - this.chklistLocation.Name = "chklistLocation"; - this.chklistLocation.Size = new System.Drawing.Size(147, 84); - this.chklistLocation.TabIndex = 0; - this.chklistLocation.SelectedIndexChanged += new System.EventHandler(this.chklistLocation_SelectedIndexChanged); - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.checkedListBoxHideFav); - this.groupBox2.Location = new System.Drawing.Point(3, 260); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(170, 91); - this.groupBox2.TabIndex = 0; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "hideFav"; - // - // checkedListBoxHideFav - // - this.checkedListBoxHideFav.CheckOnClick = true; - this.checkedListBoxHideFav.FormattingEnabled = true; - this.checkedListBoxHideFav.Items.AddRange(new object[] { - "Hide", - "Normal", - "Fav"}); - this.checkedListBoxHideFav.Location = new System.Drawing.Point(11, 19); - this.checkedListBoxHideFav.Name = "checkedListBoxHideFav"; - this.checkedListBoxHideFav.Size = new System.Drawing.Size(150, 64); - this.checkedListBoxHideFav.TabIndex = 0; - this.checkedListBoxHideFav.SelectedIndexChanged += new System.EventHandler(this.checkedListBoxHideFav_SelectedIndexChanged); - // - // groupBox4 - // - this.groupBox4.Controls.Add(this.textBoxFilter); - this.groupBox4.Location = new System.Drawing.Point(3, 357); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Size = new System.Drawing.Size(170, 57); - this.groupBox4.TabIndex = 0; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "Name Filter"; - // - // textBoxFilter - // - this.textBoxFilter.Location = new System.Drawing.Point(11, 20); - this.textBoxFilter.Name = "textBoxFilter"; - this.textBoxFilter.Size = new System.Drawing.Size(150, 25); - this.textBoxFilter.TabIndex = 0; - this.toolTip1.SetToolTip(this.textBoxFilter, "Filter by var name or scene name."); - this.textBoxFilter.TextChanged += new System.EventHandler(this.textBoxFilter_TextChanged); - // - // groupBox5 - // - this.groupBox5.Controls.Add(this.comboBoxCreator); - this.groupBox5.Location = new System.Drawing.Point(3, 420); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.Size = new System.Drawing.Size(170, 59); - this.groupBox5.TabIndex = 0; - this.groupBox5.TabStop = false; - this.groupBox5.Text = "Creator"; - // - // comboBoxCreator - // - this.comboBoxCreator.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxCreator.FormattingEnabled = true; - this.comboBoxCreator.Location = new System.Drawing.Point(11, 19); - this.comboBoxCreator.Name = "comboBoxCreator"; - this.comboBoxCreator.Size = new System.Drawing.Size(150, 25); - this.comboBoxCreator.TabIndex = 0; - this.comboBoxCreator.SelectedIndexChanged += new System.EventHandler(this.comboBoxCreator_SelectedIndexChanged); - // - // groupBox6 - // - this.groupBox6.Controls.Add(this.comboBoxOrderBy); - this.groupBox6.Controls.Add(this.buttonResetFilter); - this.groupBox6.Location = new System.Drawing.Point(3, 485); - this.groupBox6.Name = "groupBox6"; - this.groupBox6.Size = new System.Drawing.Size(170, 91); - this.groupBox6.TabIndex = 0; - this.groupBox6.TabStop = false; - this.groupBox6.Text = "OrderBy"; - // - // comboBoxOrderBy - // - this.comboBoxOrderBy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxOrderBy.FormattingEnabled = true; - this.comboBoxOrderBy.Items.AddRange(new object[] { - "New To Old", - "Old To New", - "VarName", - "SceneName"}); - this.comboBoxOrderBy.Location = new System.Drawing.Point(11, 19); - this.comboBoxOrderBy.Name = "comboBoxOrderBy"; - this.comboBoxOrderBy.Size = new System.Drawing.Size(150, 25); - this.comboBoxOrderBy.TabIndex = 0; - this.comboBoxOrderBy.SelectedIndexChanged += new System.EventHandler(this.comboBoxOrderBy_SelectedIndexChanged); - // - // buttonResetFilter - // - this.buttonResetFilter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonResetFilter.Location = new System.Drawing.Point(60, 53); - this.buttonResetFilter.Name = "buttonResetFilter"; - this.buttonResetFilter.Size = new System.Drawing.Size(101, 32); - this.buttonResetFilter.TabIndex = 1; - this.buttonResetFilter.Text = "Reset Filter"; - this.buttonResetFilter.UseVisualStyleBackColor = true; - this.buttonResetFilter.Click += new System.EventHandler(this.buttonResetFilter_Click); - // - // buttonLoadscene - // - this.buttonLoadscene.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonLoadscene.ForeColor = System.Drawing.Color.SeaGreen; - this.buttonLoadscene.Location = new System.Drawing.Point(382, 89); - this.buttonLoadscene.Name = "buttonLoadscene"; - this.buttonLoadscene.Size = new System.Drawing.Size(118, 30); - this.buttonLoadscene.TabIndex = 1; - this.buttonLoadscene.Text = "Load Scene"; - this.toolTip1.SetToolTip(this.buttonLoadscene, "Load to VAM,Add loadscene.cs as session plugin in VAM first."); - this.buttonLoadscene.UseVisualStyleBackColor = true; - this.buttonLoadscene.Click += new System.EventHandler(this.buttonLoadscene_Click); - // - // panelImage - // - this.panelImage.Anchor = System.Windows.Forms.AnchorStyles.None; - this.panelImage.Controls.Add(this.tableLayoutPanel2); - this.panelImage.Location = new System.Drawing.Point(154, 144); - this.panelImage.Name = "panelImage"; - this.panelImage.Size = new System.Drawing.Size(515, 341); - this.panelImage.TabIndex = 1; - this.panelImage.Visible = false; - // - // tableLayoutPanel2 - // - this.tableLayoutPanel2.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset; - this.tableLayoutPanel2.ColumnCount = 2; - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80F)); - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel2.Controls.Add(this.labelPreviewVarName, 1, 0); - this.tableLayoutPanel2.Controls.Add(this.panel2, 0, 1); - this.tableLayoutPanel2.Controls.Add(this.pictureBoxPreview, 0, 2); - this.tableLayoutPanel2.Controls.Add(this.panel1, 0, 0); - this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - this.tableLayoutPanel2.RowCount = 3; - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 75F)); - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 130F)); - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel2.Size = new System.Drawing.Size(515, 341); - this.tableLayoutPanel2.TabIndex = 0; - // - // labelPreviewVarName - // - this.labelPreviewVarName.AutoEllipsis = true; - this.labelPreviewVarName.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelPreviewVarName.Font = new System.Drawing.Font("Cambria", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelPreviewVarName.Location = new System.Drawing.Point(87, 2); - this.labelPreviewVarName.Name = "labelPreviewVarName"; - this.labelPreviewVarName.Padding = new System.Windows.Forms.Padding(50, 0, 0, 0); - this.labelPreviewVarName.Size = new System.Drawing.Size(423, 75); - this.labelPreviewVarName.TabIndex = 0; - this.labelPreviewVarName.Text = "label4"; - this.labelPreviewVarName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // panel2 - // - this.tableLayoutPanel2.SetColumnSpan(this.panel2, 2); - this.panel2.Controls.Add(this.checkBoxForMale); - this.panel2.Controls.Add(this.checkBoxIgnoreGender); - this.panel2.Controls.Add(this.groupBoxPersonOrder); - this.panel2.Controls.Add(this.checkBoxMerge); - this.panel2.Controls.Add(this.buttonClearCache); - this.panel2.Controls.Add(this.buttonAnalysis); - this.panel2.Controls.Add(this.buttonLoadscene); - this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel2.Location = new System.Drawing.Point(5, 82); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(505, 124); - this.panel2.TabIndex = 3; - // - // checkBoxForMale - // - this.checkBoxForMale.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.checkBoxForMale.ForeColor = System.Drawing.Color.SeaGreen; - this.checkBoxForMale.Location = new System.Drawing.Point(382, 39); - this.checkBoxForMale.Name = "checkBoxForMale"; - this.checkBoxForMale.Size = new System.Drawing.Size(118, 21); - this.checkBoxForMale.TabIndex = 12; - this.checkBoxForMale.Text = "For Male"; - this.toolTip1.SetToolTip(this.checkBoxForMale, "Load to male atom."); - this.checkBoxForMale.UseVisualStyleBackColor = true; - // - // checkBoxIgnoreGender - // - this.checkBoxIgnoreGender.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.checkBoxIgnoreGender.ForeColor = System.Drawing.Color.SeaGreen; - this.checkBoxIgnoreGender.Location = new System.Drawing.Point(382, 13); - this.checkBoxIgnoreGender.Name = "checkBoxIgnoreGender"; - this.checkBoxIgnoreGender.Size = new System.Drawing.Size(118, 21); - this.checkBoxIgnoreGender.TabIndex = 12; - this.checkBoxIgnoreGender.Text = "Ignore gender"; - this.toolTip1.SetToolTip(this.checkBoxIgnoreGender, "futa are seen as female in this preset and VAM."); - this.checkBoxIgnoreGender.UseVisualStyleBackColor = true; - // - // groupBoxPersonOrder - // - this.groupBoxPersonOrder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder6); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder8); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder7); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder5); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder4); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder3); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder2); - this.groupBoxPersonOrder.Controls.Add(this.radioButtonPersonOrder1); - this.groupBoxPersonOrder.ForeColor = System.Drawing.Color.SeaGreen; - this.groupBoxPersonOrder.Location = new System.Drawing.Point(262, 4); - this.groupBoxPersonOrder.Name = "groupBoxPersonOrder"; - this.groupBoxPersonOrder.Size = new System.Drawing.Size(114, 115); - this.groupBoxPersonOrder.TabIndex = 11; - this.groupBoxPersonOrder.TabStop = false; - this.groupBoxPersonOrder.Text = "Person Order"; - this.toolTip1.SetToolTip(this.groupBoxPersonOrder, "Person atom order in VAM"); - // - // radioButtonPersonOrder6 - // - this.radioButtonPersonOrder6.AutoSize = true; - this.radioButtonPersonOrder6.Location = new System.Drawing.Point(49, 68); - this.radioButtonPersonOrder6.Name = "radioButtonPersonOrder6"; - this.radioButtonPersonOrder6.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder6.TabIndex = 13; - this.radioButtonPersonOrder6.Text = "6"; - this.radioButtonPersonOrder6.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder8 - // - this.radioButtonPersonOrder8.AutoSize = true; - this.radioButtonPersonOrder8.Location = new System.Drawing.Point(49, 92); - this.radioButtonPersonOrder8.Name = "radioButtonPersonOrder8"; - this.radioButtonPersonOrder8.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder8.TabIndex = 13; - this.radioButtonPersonOrder8.Text = "8"; - this.radioButtonPersonOrder8.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder7 - // - this.radioButtonPersonOrder7.AutoSize = true; - this.radioButtonPersonOrder7.Location = new System.Drawing.Point(6, 92); - this.radioButtonPersonOrder7.Name = "radioButtonPersonOrder7"; - this.radioButtonPersonOrder7.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder7.TabIndex = 13; - this.radioButtonPersonOrder7.Text = "7"; - this.radioButtonPersonOrder7.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder5 - // - this.radioButtonPersonOrder5.AutoSize = true; - this.radioButtonPersonOrder5.Location = new System.Drawing.Point(6, 68); - this.radioButtonPersonOrder5.Name = "radioButtonPersonOrder5"; - this.radioButtonPersonOrder5.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder5.TabIndex = 13; - this.radioButtonPersonOrder5.Text = "5"; - this.radioButtonPersonOrder5.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder4 - // - this.radioButtonPersonOrder4.AutoSize = true; - this.radioButtonPersonOrder4.Location = new System.Drawing.Point(49, 44); - this.radioButtonPersonOrder4.Name = "radioButtonPersonOrder4"; - this.radioButtonPersonOrder4.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder4.TabIndex = 13; - this.radioButtonPersonOrder4.Text = "4"; - this.radioButtonPersonOrder4.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder3 - // - this.radioButtonPersonOrder3.AutoSize = true; - this.radioButtonPersonOrder3.Location = new System.Drawing.Point(6, 44); - this.radioButtonPersonOrder3.Name = "radioButtonPersonOrder3"; - this.radioButtonPersonOrder3.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder3.TabIndex = 13; - this.radioButtonPersonOrder3.Text = "3"; - this.radioButtonPersonOrder3.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder2 - // - this.radioButtonPersonOrder2.AutoSize = true; - this.radioButtonPersonOrder2.Location = new System.Drawing.Point(49, 20); - this.radioButtonPersonOrder2.Name = "radioButtonPersonOrder2"; - this.radioButtonPersonOrder2.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder2.TabIndex = 13; - this.radioButtonPersonOrder2.Text = "2"; - this.radioButtonPersonOrder2.UseVisualStyleBackColor = true; - // - // radioButtonPersonOrder1 - // - this.radioButtonPersonOrder1.AutoSize = true; - this.radioButtonPersonOrder1.Checked = true; - this.radioButtonPersonOrder1.Location = new System.Drawing.Point(6, 20); - this.radioButtonPersonOrder1.Name = "radioButtonPersonOrder1"; - this.radioButtonPersonOrder1.Size = new System.Drawing.Size(37, 21); - this.radioButtonPersonOrder1.TabIndex = 13; - this.radioButtonPersonOrder1.TabStop = true; - this.radioButtonPersonOrder1.Text = "1"; - this.radioButtonPersonOrder1.UseVisualStyleBackColor = true; - // - // checkBoxMerge - // - this.checkBoxMerge.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.checkBoxMerge.ForeColor = System.Drawing.Color.SeaGreen; - this.checkBoxMerge.Location = new System.Drawing.Point(382, 66); - this.checkBoxMerge.Name = "checkBoxMerge"; - this.checkBoxMerge.Size = new System.Drawing.Size(118, 21); - this.checkBoxMerge.TabIndex = 0; - this.checkBoxMerge.Text = "Merge"; - this.toolTip1.SetToolTip(this.checkBoxMerge, "Merge Load"); - this.checkBoxMerge.UseVisualStyleBackColor = true; - // - // buttonClearCache - // - this.buttonClearCache.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonClearCache.ForeColor = System.Drawing.Color.Red; - this.buttonClearCache.Location = new System.Drawing.Point(3, 87); - this.buttonClearCache.Name = "buttonClearCache"; - this.buttonClearCache.Size = new System.Drawing.Size(92, 30); - this.buttonClearCache.TabIndex = 1; - this.buttonClearCache.Text = "Clear Cache"; - this.buttonClearCache.UseVisualStyleBackColor = true; - this.buttonClearCache.Click += new System.EventHandler(this.buttonClearCache_Click); - // - // buttonAnalysis - // - this.buttonAnalysis.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonAnalysis.ForeColor = System.Drawing.SystemColors.HotTrack; - this.buttonAnalysis.Location = new System.Drawing.Point(3, 43); - this.buttonAnalysis.Name = "buttonAnalysis"; - this.buttonAnalysis.Size = new System.Drawing.Size(92, 30); - this.buttonAnalysis.TabIndex = 1; - this.buttonAnalysis.Text = "Analysis"; - this.toolTip1.SetToolTip(this.buttonAnalysis, "Analyze the atoms in the scene and load to running VAM,Add loadscene.cs as sessio" + - "n plugin in VAM first."); - this.buttonAnalysis.UseVisualStyleBackColor = true; - this.buttonAnalysis.Click += new System.EventHandler(this.buttonAnalysis_Click); - // - // pictureBoxPreview - // - this.tableLayoutPanel2.SetColumnSpan(this.pictureBoxPreview, 2); - this.pictureBoxPreview.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBoxPreview.Location = new System.Drawing.Point(5, 214); - this.pictureBoxPreview.Name = "pictureBoxPreview"; - this.pictureBoxPreview.Size = new System.Drawing.Size(505, 122); - this.pictureBoxPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBoxPreview.TabIndex = 1; - this.pictureBoxPreview.TabStop = false; - this.pictureBoxPreview.Click += new System.EventHandler(this.pictureBoxPreview_Click); - // - // panel1 - // - this.panel1.Controls.Add(this.buttonFilterByCreator); - this.panel1.Controls.Add(this.buttonLocate); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(5, 5); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(74, 69); - this.panel1.TabIndex = 4; - // - // buttonFilterByCreator - // - this.buttonFilterByCreator.Dock = System.Windows.Forms.DockStyle.Top; - this.buttonFilterByCreator.Location = new System.Drawing.Point(0, 0); - this.buttonFilterByCreator.Name = "buttonFilterByCreator"; - this.buttonFilterByCreator.Size = new System.Drawing.Size(74, 42); - this.buttonFilterByCreator.TabIndex = 2; - this.buttonFilterByCreator.Text = "FilterBy Creator"; - this.toolTip1.SetToolTip(this.buttonFilterByCreator, "Filter By Creator"); - this.buttonFilterByCreator.UseVisualStyleBackColor = true; - this.buttonFilterByCreator.Click += new System.EventHandler(this.buttonFilterByCreator_Click); - // - // buttonLocate - // - this.buttonLocate.Dock = System.Windows.Forms.DockStyle.Bottom; - this.buttonLocate.Location = new System.Drawing.Point(0, 44); - this.buttonLocate.Name = "buttonLocate"; - this.buttonLocate.Size = new System.Drawing.Size(74, 25); - this.buttonLocate.TabIndex = 2; - this.buttonLocate.Text = "Locate"; - this.toolTip1.SetToolTip(this.buttonLocate, "Locate the current var file in Explorer"); - this.buttonLocate.UseVisualStyleBackColor = true; - this.buttonLocate.Click += new System.EventHandler(this.buttonLocate_Click); - // - // progressBar1 - // - this.progressBar1.Dock = System.Windows.Forms.DockStyle.Top; - this.progressBar1.Location = new System.Drawing.Point(0, 0); - this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(1324, 36); - this.progressBar1.TabIndex = 9; - // - // backgroundWorkerGenerate - // - this.backgroundWorkerGenerate.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorkerGenerate_DoWork); - this.backgroundWorkerGenerate.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorkerGenerate_RunWorkerCompleted); - // - // FormScenes - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1324, 672); - this.Controls.Add(this.panelImage); - this.Controls.Add(this.tableLayoutPanel1); - this.Controls.Add(this.progressBar1); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "FormScenes"; - this.Text = "Hide & Fav"; - this.WindowState = System.Windows.Forms.FormWindowState.Maximized; - this.Load += new System.EventHandler(this.FormScenes_Load); - this.tableLayoutPanel1.ResumeLayout(false); - this.panel5.ResumeLayout(false); - this.panel6.ResumeLayout(false); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.panel4.ResumeLayout(false); - this.panel4.PerformLayout(); - this.panel7.ResumeLayout(false); - this.panel7.PerformLayout(); - this.flowLayoutPanel1.ResumeLayout(false); - this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - this.groupBox5.ResumeLayout(false); - this.groupBox6.ResumeLayout(false); - this.panelImage.ResumeLayout(false); - this.tableLayoutPanel2.ResumeLayout(false); - this.panel2.ResumeLayout(false); - this.groupBoxPersonOrder.ResumeLayout(false); - this.groupBoxPersonOrder.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).EndInit(); - this.panel1.ResumeLayout(false); - // DataSet init removed - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.Panel panel5; - private System.Windows.Forms.Panel panel6; - private System.Windows.Forms.Button buttonRemoveHide; - private System.Windows.Forms.Button buttonAddHide; - private System.Windows.Forms.Button buttonAddFav; - private System.Windows.Forms.Button buttonRemoveFav; - private DragNDrop.DragAndDropListView listViewHide; - private DragNDrop.DragAndDropListView listViewNormal; - private DragNDrop.DragAndDropListView listViewFav; - private System.Windows.Forms.ImageList imageListScenes; - private System.Windows.Forms.Panel panelImage; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; - private System.Windows.Forms.PictureBox pictureBoxPreview; - private System.Windows.Forms.ToolTip toolTip1; - private System.Windows.Forms.ProgressBar progressBar1; - private System.Windows.Forms.Button buttonLoadscene; - private System.ComponentModel.BackgroundWorker backgroundWorkerGenerate; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Label labelPreviewVarName; - private System.Windows.Forms.CheckBox checkBoxMerge; - private System.Windows.Forms.Button buttonLocate; - private System.Windows.Forms.Button buttonNormal; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Label labelNormal; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.Button buttonFav; - private System.Windows.Forms.Label labelFav; - private System.Windows.Forms.Panel panel7; - private System.Windows.Forms.Button buttonHide; - private System.Windows.Forms.Label labelHide; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; - private System.Windows.Forms.GroupBox groupBox3; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.CheckedListBox chklistLocation; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.CheckedListBox checkedListBoxHideFav; - private System.Windows.Forms.GroupBox groupBox4; - private System.Windows.Forms.TextBox textBoxFilter; - private System.Windows.Forms.GroupBox groupBox5; - private System.Windows.Forms.ComboBox comboBoxCreator; - private System.Windows.Forms.GroupBox groupBox6; - private System.Windows.Forms.ComboBox comboBoxOrderBy; - private System.Windows.Forms.RadioButton radioButtonCategory4; - private System.Windows.Forms.RadioButton radioButtonCategory6; - private System.Windows.Forms.RadioButton radioButtonCategory2; - private System.Windows.Forms.RadioButton radioButtonCategory7; - private System.Windows.Forms.RadioButton radioButtonCategory3; - private System.Windows.Forms.RadioButton radioButtonCategory5; - private System.Windows.Forms.RadioButton radioButtonCategory1; - private System.Windows.Forms.Button buttonAnalysis; - private System.Windows.Forms.Button buttonResetFilter; - private System.Windows.Forms.Button buttonFilterByCreator; - private System.Windows.Forms.GroupBox groupBoxPersonOrder; - private System.Windows.Forms.CheckBox checkBoxIgnoreGender; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.RadioButton radioButtonPersonOrder6; - private System.Windows.Forms.RadioButton radioButtonPersonOrder8; - private System.Windows.Forms.RadioButton radioButtonPersonOrder7; - private System.Windows.Forms.RadioButton radioButtonPersonOrder5; - private System.Windows.Forms.RadioButton radioButtonPersonOrder4; - private System.Windows.Forms.RadioButton radioButtonPersonOrder3; - private System.Windows.Forms.RadioButton radioButtonPersonOrder2; - private System.Windows.Forms.RadioButton radioButtonPersonOrder1; - private System.Windows.Forms.CheckBox checkBoxForMale; - private System.Windows.Forms.Button buttonClearCache; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormScenes.cs b/_archived/varManager/FormScenes.cs deleted file mode 100644 index 2d0ad0a..0000000 --- a/_archived/varManager/FormScenes.cs +++ /dev/null @@ -1,1275 +0,0 @@ -锘縰sing SimpleJSON; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Threading; -using System.Windows.Forms; -using System.Threading.Tasks; -using varManager.Backend; -using varManager.Properties; -using varManager.Data; -using varManager.Models; -using static DragNDrop.DragAndDropListView; -using static SimpleLogger; - -namespace varManager -{ - public partial class FormScenes : Form - { - private static string previewpicsDirName = "___PreviewPics___"; - //private static string installLinkDirName = "___VarsLink___"; - private static string missingLinkDirName = "___MissingVarLink___"; - // private static int maxitemPerpage = 100; - private string strCategory = "scenes"; - private string strOrderBy = "_"; - public FormScenes() - { - InitializeComponent(); - } - public Form1 form1; - private VarManagerContext dbContext; - /* - public struct InstalledScene - { - public InstalledScene(string location, string atomtype, string varname, string destvarname, DateTime installdate, string scenepath, string picpath, int hidefav) - { - Location = location; - Atomtype = atomtype; - Varname = varname; - Destvarname = destvarname; - Installdate = installdate; - Scenepath = scenepath; - Picpath = picpath; - Hidefav = hidefav; - } - public string Location { get; } - public string Atomtype { get; } - public string Varname { get; } - public string Destvarname { get; } - public DateTime Installdate { get; } - public string Scenepath { get; } - public string Picpath { get; } - public int Hidefav { get; set; } - } - - private List listInstalledScene = new List(); - private List listFilterScene1 = new List(); - private List listFilterScene2 = new List(); - private List listFilterScene3 = new List(); - private List listFilterCreatorScene = new List(); - private List listFilterPageScene = new List(); - */ - // EF Core scene filtering lists - private List listFilterScene1 = new List(); - private List listFilterScene2 = new List(); - private List listFilterScene3 = new List(); - private List listFilterCreatorScene = new List(); - private List listFilterCreatorSceneHide = new List(); - private List listFilterCreatorSceneNormal = new List(); - private List listFilterCreatorSceneFav = new List(); - - private void LogBackendLine(string line) - { - if (form1 == null) - { - return; - } - LogLevel level = LogLevel.INFO; - if (line.StartsWith("error:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.ERROR; - } - form1.BeginInvoke(new Form1.InvokeAddLoglist(form1.UpdateAddLoglist), new object[] { line, level }); - } - - private Task RunBackendJobAsync(string kind, object? args) - { - return BackendSession.RunJobAsync(kind, args, LogBackendLine, CancellationToken.None); - } - - private BackendJobResult RunBackendJob(string kind, object? args) - { - return BackendSession.RunJob(kind, args, LogBackendLine, CancellationToken.None); - } - - private void RunSceneHideJob(string kind, string varName, string scene) - { - string? varNameArg = string.IsNullOrWhiteSpace(varName) || varName.StartsWith("(save)", StringComparison.OrdinalIgnoreCase) - ? null - : varName; - try - { - RunBackendJob(kind, new { var_name = varNameArg, scene_path = scene }); - } - catch (Exception ex) - { - LogBackendLine($"scene hide/fav failed: {ex.Message}"); - } - } - private void FormScenes_Load(object sender, EventArgs e) - { - dbContext = new VarManagerContext(); - panelImage.Dock = DockStyle.Fill; - comboBoxOrderBy.SelectedIndex = 0; - progressBar1.Visible = true; - chklistLocation.SetItemChecked(0,true); - chklistLocation.SetItemChecked(1, true); - chklistLocation.SetItemChecked(3, true); - checkedListBoxHideFav.SetItemChecked(0,true); - checkedListBoxHideFav.SetItemChecked(1, true); - checkedListBoxHideFav.SetItemChecked(2, true); - - //backgroundWorkerGenerate.RunWorkerAsync(); - AllInstalledVars(); - //UpdateFileHidefav(); - FilterVars(); - } - public delegate void InvokeProgressBarSetValue(int value); - public void ProgressBarSetValue(int value) - { - progressBar1.Value = value; - } - private void AllInstalledVars() - { - //DirectoryInfo dirinfoInstalled = new DirectoryInfo(Path.Combine(Settings.Default.vampath, "AddonPackages", installLinkDirName)); - - //IOrderedEnumerable fileinfos = dirinfoInstalled.GetFileSystemInfos("*.var").OrderBy(f => f.CreationTime); - //progressBar1.Dock = DockStyle.Top; - //progressBar1.Visible = true; - int i = 0; - // Load data using EF Core - // Vars will be loaded on-demand from dbContext - - Dictionary dictHideFav = new Dictionary(); - DirectoryInfo dirPrefs = new DirectoryInfo(Path.Combine(Settings.Default.vampath, "AddonPackagesFilePrefs")); - foreach (var hidefav in dirPrefs.GetFiles("*.vap.fav", SearchOption.AllDirectories)) - { - string fullname = hidefav.FullName; - fullname = fullname.Substring(fullname.IndexOf("AddonPackagesFilePrefs\\") + 23); - fullname = fullname.Substring(0, fullname.Length - 4); - string varname = fullname.Substring(0, fullname.IndexOf("\\")); - string scenepath = fullname.Substring(fullname.IndexOf("\\") + 1).Replace("\\", "/"); - dictHideFav[varname + ":" + scenepath] = 1; - } - foreach (var hidefav in dirPrefs.GetFiles("*.json.fav", SearchOption.AllDirectories)) - { - string fullname = hidefav.FullName; - fullname = fullname.Substring(fullname.IndexOf("AddonPackagesFilePrefs\\") + 23); - fullname = fullname.Substring(0, fullname.Length - 4); - string varname = fullname.Substring(0, fullname.IndexOf("\\")); - string scenepath = fullname.Substring(fullname.IndexOf("\\") + 1).Replace("\\", "/"); - dictHideFav[varname + ":" + scenepath] = 1; - } - foreach (var hidefav in dirPrefs.GetFiles("*.vap.hide", SearchOption.AllDirectories)) - { - string fullname = hidefav.FullName; - fullname = fullname.Substring(fullname.IndexOf("AddonPackagesFilePrefs\\") + 23); - fullname = fullname.Substring(0, fullname.Length - 5); - string varname = fullname.Substring(0, fullname.IndexOf("\\")); - string scenepath = fullname.Substring(fullname.IndexOf("\\") + 1).Replace("\\", "/"); - dictHideFav[varname + ":" + scenepath] = -1; - } - foreach (var hidefav in dirPrefs.GetFiles("*.json.hide", SearchOption.AllDirectories)) - { - string fullname = hidefav.FullName; - fullname = fullname.Substring(fullname.IndexOf("AddonPackagesFilePrefs\\") + 23); - fullname = fullname.Substring(0, fullname.Length - 5); - string varname = fullname.Substring(0, fullname.IndexOf("\\")); - string scenepath = fullname.Substring(fullname.IndexOf("\\") + 1).Replace("\\", "/"); - dictHideFav[varname + ":" + scenepath] = -1; - } - - // InstallStatus data loaded on-demand from EF Core - - // Load scenes from EF Core - var scenes = dbContext.Scenes.Where(s => s.IsLoadable).ToList(); - //InvokeProgressBarSetValue progressBarSetValue = new InvokeProgressBarSetValue(ProgressBarSetValue); - //this.BeginInvoke(progressBarSetValue, 5 ); - progressBar1.Value = 5; - foreach (var varscene in scenes) - { - int hidefav = 0; - if (dictHideFav.ContainsKey(varscene.VarName + ":" + varscene.ScenePath)) - hidefav = dictHideFav[varscene.VarName + ":" + varscene.ScenePath]; - // if (hidefavrows.Count() > 0) - // hidefav= hidefavrows.First().hidefav; - var varrow = dbContext.Vars.FirstOrDefault(v => v.VarName == varscene.VarName); - - bool installed = false; - var installedrow = dbContext.InstallStatuses.FirstOrDefault(i => i.VarName == varscene.VarName); - - if (installedrow != null && installedrow.Installed) - installed = true; - // Create a temporary scene view object for UI binding - var sceneView = new { - Location = installed ? "installed" : "not Installed", - VarName = varscene.VarName, - AtomType = varscene.AtomType, - IsPreset = varscene.IsPreset, - ScenePath = varscene.ScenePath, - PreviewPic = varscene.PreviewPic, - Installed = installed, - CreatorName = varrow.CreatorName, - PackageName = varrow.PackageName, - VarPath = varrow.VarPath, - Filesize = varrow.Filesize, - MetaDate = varrow.MetaDate, - VarDate = varrow.VarDate, - HideFav = hidefav - }; - // Add to collection for UI (will be handled by EF Core data binding) - progressBar1.Value = 5 + (i * 55 / scenes.Count); - - i++; - } - // EF Core automatically tracks changes - no AcceptChanges needed - DirectoryInfo dirinfoMissinglink = new DirectoryInfo(Path.Combine(Settings.Default.vampath, "AddonPackages", missingLinkDirName)); - if (dirinfoMissinglink.Exists) - { - i = 0; - IOrderedEnumerable misslinks = dirinfoMissinglink.GetFileSystemInfos("*.var").OrderBy(f => f.CreationTime); - foreach (FileSystemInfo fileinfo in misslinks) - { - string varName = Path.GetFileNameWithoutExtension(fileinfo.Name); - string destfilename = varName; - if (fileinfo.Attributes.HasFlag(FileAttributes.ReparsePoint)) - { - destfilename = Comm.ReparsePoint(fileinfo.FullName); - destfilename = Path.GetFileNameWithoutExtension(destfilename); - } - - var scenesForVar = dbContext.Scenes.Where(s => s.VarName == destfilename).ToList(); - foreach (var varscene in scenesForVar) - { - int hidefav = 0; - if (dictHideFav.ContainsKey(varName + ":" + varscene.ScenePath)) - hidefav = dictHideFav[varName + ":" + varscene.ScenePath]; - - //if (hidefavrows.Count() > 0) - // hidefav = hidefavrows.First().hidefav; - var varrow = dbContext.Vars.FirstOrDefault(v => v.VarName == varscene.VarName); - - // Create missing link scene view object - var missingSceneView = new { - Location = "missingLink", - VarName = varscene.VarName, - AtomType = varscene.AtomType, - IsPreset = varscene.IsPreset, - ScenePath = varscene.ScenePath, - PreviewPic = varscene.PreviewPic, - Installed = true, - CreatorName = varrow.CreatorName, - PackageName = varrow.PackageName, - VarPath = varrow.VarPath, - Filesize = varrow.Filesize, - MetaDate = varrow.MetaDate, - VarDate = varrow.VarDate, - HideFav = hidefav - }; - //listInstalledScene.Add(new InstalledScene("VarsLink", varscene.atomType, varscene.varName, varscene.varName, varscene.metaDate, varscene.scenePath, varscene.previewPic, 0)); - - } - progressBar1.Value = 60 + (i * 20 / misslinks.Count()); - //this.BeginInvoke(progressBarSetValue, 60 + (i * 20 / misslinks.Count())); - i++; - } - } - // EF Core automatically tracks changes - no AcceptChanges needed - - List savescenes=new List(); - foreach(SaveScene ss in SaveScenes("scenes", "Saves\\scene", "*.json")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("looks", "Saves\\Person\\full", "*.json")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("looks", "Saves\\Person\\appearance", "*.json")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("looks", "Custom\\Atom\\Person\\Appearance", "*.vap")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("pose", "Saves\\Person\\pose", "*.json")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("pose", "Custom\\Atom\\Person\\Pose", "*.vap")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("clothing", "Custom\\Atom\\Person\\Clothing", "*.vap")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("clothing", "Custom\\Clothing", "*.vap")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("hairstyle", "Custom\\Atom\\Person\\Hair", "*.vap")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("hairstyle", "Custom\\Hair", "*.vap")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("morphs", "Custom\\Atom\\Person\\Morphs", "*.vap")) - { - savescenes.Add(ss); - } - foreach (SaveScene ss in SaveScenes("skin", "Custom\\Atom\\Person\\Skin", "*.vap")) - { - savescenes.Add(ss); - } - i = 0; - foreach (var savescene in savescenes) - { - // Create save scene view object - var saveSceneView = new { - Location = "Save", - VarName = "(save).", - AtomType = savescene.strType, - IsPreset = true, - ScenePath = savescene.strPath, - PreviewPic = savescene.strPreviewPic, - Installed = true, - CreatorName = "(save)", - PackageName = "_", - VarPath = "_", - Filesize = savescene.filesize, - MetaDate = savescene.fdate, - VarDate = savescene.fdate, - HideFav = savescene.hidefav - }; - progressBar1.Value = 80 + (i * 20 / savescenes.Count()); - //this.BeginInvoke(progressBarSetValue, 80 + (i * 20 / savescenes.Count())); - i++; - } - // EF Core automatically tracks changes - no AcceptChanges needed - progressBar1.Visible = false; - } - - private static List SaveScenes(string strType,string strPath,string searchPattern) - { - List savescenes = new List(); - DirectoryInfo dirinfoscenes = new DirectoryInfo(Path.Combine(Settings.Default.vampath, strPath)); - if (dirinfoscenes.Exists) - { - IOrderedEnumerable scenes = dirinfoscenes.GetFiles(searchPattern).OrderBy(f => f.CreationTime); - foreach (FileInfo fileinfo in scenes) - { - string path = strPath + fileinfo.FullName.Replace(dirinfoscenes.FullName, ""); - - string strPreviewPic = fileinfo.FullName.Substring(0, fileinfo.FullName.LastIndexOf('.')) + ".jpg"; - if (!File.Exists(strPreviewPic)) - strPreviewPic = ""; - int hidefav = 0; - if (File.Exists(fileinfo.FullName + ".hide")) - hidefav = -1; - if (File.Exists(fileinfo.FullName + ".fav")) - hidefav = 1; - var saveScene = new SaveScene(); - saveScene.strType = strType; - saveScene.strName = Path.GetFileNameWithoutExtension(path); - saveScene.strPath = path; - saveScene.filesize = fileinfo.Length; - saveScene.fdate = fileinfo.LastWriteTime; - saveScene.strPreviewPic = strPreviewPic; - saveScene.hidefav = hidefav; - savescenes.Add(saveScene); - } - } - - return savescenes; - } - - struct SaveScene - { - public string strType; - public string strName; - public string strPath; - public string strPreviewPic; - public long filesize; - public DateTime fdate; - public int hidefav; - } - private void comboBoxCategory_SelectedIndexChanged(object sender, EventArgs e) - { - FilterVars(); - } - /* - private void UpdateFileHidefav() - { - for (int i = 0; i < listInstalledScene.Count; i++) - { - var InstalledScene = listInstalledScene[i]; - InstalledScene.Hidefav = GetHideFav(listInstalledScene[i].Varname, listInstalledScene[i].Scenepath); - listInstalledScene[i] = InstalledScene; - } - //strOrderBy = ""; - // FilterVars(); - } - */ - - private void FilterVars(int filterAt = 10) - { - if (filterAt >= 10) - { - // TODO: Replace with EF Core ScenesView query - if (!string.IsNullOrEmpty(strCategory)) - listFilterScene1 = dbContext.ScenesView.Where(q => q.AtomType == strCategory).Select(q => (dynamic)q).ToList(); - - List locations = new List(); - foreach (var locationitem in chklistLocation.CheckedItems) - { - locations.Add(locationitem.ToString()); - } - listFilterScene1 = listFilterScene1.Where(q => locations.IndexOf(q.Location) >= 0).ToList(); - } - if (filterAt >= 9) - { - List hideFavs = new List(); - if (checkedListBoxHideFav.GetItemChecked(0)) hideFavs.Add(-1); - if (checkedListBoxHideFav.GetItemChecked(1)) hideFavs.Add(0); - if (checkedListBoxHideFav.GetItemChecked(2)) hideFavs.Add(1); - listFilterScene2 = listFilterScene1.Where(q => hideFavs.IndexOf(q.HideFav) >= 0).ToList(); - - } - if (filterAt >= 8) - { - if (!string.IsNullOrWhiteSpace(textBoxFilter.Text)) - { - string filtertext = textBoxFilter.Text.Trim().ToLower(); - listFilterScene3 = listFilterScene2.Where(q => q.VarName.ToLower().IndexOf(filtertext) >= 0 || - Path.GetFileNameWithoutExtension(q.ScenePath).ToLower().IndexOf(filtertext) >= 0).ToList(); - } - else - listFilterScene3 = listFilterScene2; - } - comboBoxCreator.SelectedIndexChanged -= new System.EventHandler(comboBoxCreator_SelectedIndexChanged); - string creatorname = comboBoxCreator.Text; - var Creators = listFilterScene3.Select(q => q.CreatorName).Distinct().OrderBy(o => o).ToArray(); - comboBoxCreator.Items.Clear(); - comboBoxCreator.Items.Add("____ALL"); - comboBoxCreator.Items.AddRange(Creators); - if (!string.IsNullOrEmpty(creatorname) && creatorname != "____ALL") - { - if (comboBoxCreator.Items.Contains(creatorname)) - { - comboBoxCreator.SelectedItem = creatorname; - listFilterCreatorScene = listFilterScene3.Where(q => q.VarName.StartsWith(creatorname + ".")).ToList(); - } - } - else - { - comboBoxCreator.SelectedIndex = 0; - listFilterCreatorScene = listFilterScene3.ToList(); - } - comboBoxCreator.SelectedIndexChanged += new System.EventHandler(comboBoxCreator_SelectedIndexChanged); - FilterVarsCreator(); - } - - private void FilterVarsCreator() - { - string creatorname = comboBoxCreator.Text; - - if (!string.IsNullOrEmpty(creatorname) && creatorname != "____ALL") - { - listFilterCreatorScene = listFilterScene3.Where(q => q.VarName.StartsWith(creatorname+".")).ToList(); - } - else - { - listFilterCreatorScene = listFilterScene3.ToList(); - } - strOrderBy = "none"; - /* - if (pages > 0) - toolStripComboBoxScenePage.SelectedIndex = 0; - else - { - imageListScenes.Images.Clear(); - listSceneItem.Clear(); - listViewHide.Items.Clear(); - listViewNormal.Items.Clear(); - listViewFav.Items.Clear(); - } - toolStripComboBoxScenePage.SelectedIndexChanged += new System.EventHandler(toolStripComboBoxScenePage_SelectedIndexChanged); - */ - GenerateItems(); - } - - private void toolStripComboBoxScenePage_SelectedIndexChanged(object sender, EventArgs e) - { - GenerateItems(); - } - - private List listSceneItem = new List(); - - private string GetPreviewPicPath(string atomType, string varName, string picName) - { - - string fullpicname = Path.Combine(Settings.Default.varspath, previewpicsDirName, atomType, varName, picName); - if (File.Exists(fullpicname)) - return fullpicname; - else - return ""; - } - private int GetHideFav(string varName, string scenepath) - { - string pathhide = Path.Combine(Settings.Default.vampath, "AddonPackagesFilePrefs", varName, scenepath + ".hide"); - string pathfav = Path.Combine(Settings.Default.vampath, "AddonPackagesFilePrefs", varName, scenepath + ".fav"); - - if (string.IsNullOrEmpty(varName)) - { - pathhide = Path.Combine(Settings.Default.vampath, scenepath + ".hide"); - pathfav = Path.Combine(Settings.Default.vampath, scenepath + ".fav"); - - } - if (File.Exists(pathhide)) - { - return -1; - } - if (File.Exists(pathfav)) - { - return 1; - } - return 0; - } - - private void UpdateHidefav(string varName, string scenepath) - { - // TODO: Update with EF Core ScenesView if needed - // For now, this is handled by the file system operations in SetHideFav - // The UI will be refreshed through GenerateItems() - } - private void GenerateItems() - { - panelImage.Visible = false; - if (comboBoxOrderBy.Text != strOrderBy) - { - strOrderBy = comboBoxOrderBy.Text; - switch (strOrderBy) - { - case "New To Old": - listFilterCreatorScene = listFilterCreatorScene.OrderByDescending(q => q.VarDate).ToList(); - break; - case "Old To New": - listFilterCreatorScene = listFilterCreatorScene.OrderBy(q => q.VarDate).ToList(); - break; - case "VarName": - listFilterCreatorScene = listFilterCreatorScene.OrderBy(q => q.VarName).ToList(); - break; - case "SceneName": - listFilterCreatorScene = listFilterCreatorScene.OrderBy(q => Path.GetFileNameWithoutExtension(q.ScenePath)).ToList(); - break; - } - } - listFilterCreatorSceneHide = listFilterCreatorScene.Where(q => q.HideFav == -1).ToList(); - listViewHide.VirtualListSize = listFilterCreatorSceneHide.Count; - listFilterCreatorSceneNormal = listFilterCreatorScene.Where(q => q.HideFav == 0).ToList(); - listViewNormal.VirtualListSize = listFilterCreatorSceneNormal.Count; - listFilterCreatorSceneFav = listFilterCreatorScene.Where(q => q.HideFav == 1).ToList(); - listViewFav.VirtualListSize = listFilterCreatorSceneFav.Count; - labelHide.Text = listFilterCreatorSceneHide.Count.ToString(); - labelNormal.Text = listFilterCreatorSceneNormal.Count.ToString(); - labelFav.Text = listFilterCreatorSceneFav.Count.ToString(); - listViewHide.Invalidate(); - listViewNormal.Invalidate(); - listViewFav.Invalidate(); - /* - int startpic = maxitemPerpage * toolStripComboBoxScenePage.SelectedIndex; - imageListScenes.Images.Clear(); - listSceneItem.Clear(); - for (int i = 0; i < maxitemPerpage; i++) - { - int cur = startpic + i; - if (cur >= listFilterCreatorScene.Count()) break; - string scenePath = listFilterCreatorScene[cur].scenePath; - string sceneName = listFilterCreatorScene[cur].varName+ " - " + Path.GetFileNameWithoutExtension(scenePath); - //Image previwPic = Image.FromHbitmap(Properties.Resources.icoVarManager.ToBitmap().GetHbitmap()); - //Image previwPic = Image.FromFile("vam.png"); - string picpath = GetPreviewPicPath(listFilterCreatorScene[cur].atomType, listFilterCreatorScene[cur].varName, listFilterCreatorScene[cur].previewPic); - if (string.IsNullOrEmpty(picpath)) - { - picpath = "vam.png"; - //previwPic = Image.FromFile(picpath); - } - imageListScenes.Images.Add(Image.FromFile(picpath)); - ListViewItem item = new ListViewItem(sceneName, i); - item.SubItems.Add(listFilterCreatorScene[cur].varName); - item.SubItems.Add(listFilterCreatorScene[cur].scenePath); - item.SubItems.Add(picpath); - item.SubItems.Add(listFilterCreatorScene[cur].varDate.ToString()); - item.SubItems.Add(listFilterCreatorScene[cur].hidefav.ToString()); - item.SubItems.Add(listFilterCreatorScene[cur].atomType.ToString()); - item.SubItems.Add(listFilterCreatorScene[cur].location.ToString()); - listSceneItem.Add(item); - } - FillItems(); - */ - } - /* - private void FillItems() - { - int hideIndex = 0; - for (hideIndex = 0; hideIndex < listViewHide.Items.Count; hideIndex++) - { - var rect = listViewHide.GetItemRect(hideIndex); - if (rect.Bottom + rect.Height >= listViewHide.Height) - break; - } - int nomalIndex = 0; - for (nomalIndex = 0; nomalIndex < listViewNormal.Items.Count; nomalIndex++) - { - var rect = listViewNormal.GetItemRect(nomalIndex); - if (rect.Bottom + rect.Height >= listViewNormal.Height) - break; - } - int favIndex = 0; - for (favIndex = 0; favIndex < listViewFav.Items.Count; favIndex++) - { - var rect = listViewFav.GetItemRect(favIndex); - if (rect.Bottom + rect.Height >= listViewFav.Height) - break; - } - while (backgroundWorkerFillListView.IsBusy) - { - backgroundWorkerFillListView.CancelAsync(); - // Keep UI messages moving, so the form remains - // responsive during the asynchronous operation. - Application.DoEvents(); - } - backgroundWorkerFillListView.RunWorkerAsync(new int[] { hideIndex, nomalIndex, favIndex }); - - } - - private void backgroundWorkerFillListView_DoWork(object sender, DoWorkEventArgs e) - { - InvokeFillListView fillListView = new InvokeFillListView(FillListView); - int[] index = (int[])e.Argument; - this.BeginInvoke(fillListView, new Object[] { index[0], index[1], index[2] }); - - } - - public delegate void InvokeFillListView(ref int hideIndex, ref int nomalIndex, ref int favIndex); - public void FillListView(ref int hideIndex, ref int nomalIndex, ref int favIndex) - { - listViewHide.Items.Clear(); - listViewNormal.Items.Clear(); - listViewFav.Items.Clear(); - int countHide = 0, countNormal = 0, countFav = 0; - - // List locations = new List(); - // foreach (var locationitem in chklistLocation.CheckedItems) - // { - // locations.Add(locationitem.ToString()); - // } - // Note: This section needs to be refactored to use EF Core ScenesView properly - // List sceneviewarray = dbContext.ScenesView.Where(q => locations.Contains(q.Location)).ToList(); - - foreach (var item in listSceneItem) - { - Thread.Sleep(1); - - switch (int.Parse(item.SubItems[5].Text)) - { - case -1: listViewHide.Items.Add(item); countHide++; break; - case 0: listViewNormal.Items.Add(item); countNormal++; break; - case 1: listViewFav.Items.Add(item); countFav++; break; - } - } - labelHide.Text = countHide.ToString(); - labelNormal.Text = countNormal.ToString(); - labelFav.Text = countFav.ToString(); - if (hideIndex >= listViewHide.Items.Count) - hideIndex = listViewHide.Items.Count - 1; - if (hideIndex >= 0) listViewHide.EnsureVisible(hideIndex); - if (nomalIndex >= listViewNormal.Items.Count) - nomalIndex = listViewNormal.Items.Count - 1; - if (nomalIndex >= 0) listViewNormal.EnsureVisible(nomalIndex); - if (favIndex >= listViewFav.Items.Count) - favIndex = listViewFav.Items.Count - 1; - if (favIndex >= 0) listViewFav.EnsureVisible(favIndex); - } - */ - - private void pictureBoxPreview_Click(object sender, EventArgs e) - { - panelImage.Visible = false; - } - - - private void buttonAddHide_Click(object sender, EventArgs e) - { - if (listViewNormal.SelectedIndices.Count > 0) - { - foreach (int itemindex in listViewNormal.SelectedIndices) - { - string varName = listFilterCreatorSceneNormal[itemindex].VarName; - string scene = listFilterCreatorSceneNormal[itemindex].ScenePath; - RunSceneHideJob("scene_hide", varName, scene); - UpdateHidefav(varName, scene); - } - //UpdateFileHidefav(); - //FilterVars(); - GenerateItems(); - } - } - - private static void SetHideFav(string varName, string scene,int hidefav) - { - string scenepath = Path.GetDirectoryName(scene); - string scenename = Path.GetFileName(scene); - string pathhide = Path.Combine(Settings.Default.vampath, "AddonPackagesFilePrefs", varName, scenepath, scenename + ".hide"); - string pathfav = Path.Combine(Settings.Default.vampath, "AddonPackagesFilePrefs", varName, scenepath, scenename + ".fav"); - if (string.IsNullOrEmpty(varName)) - { - pathhide = Path.Combine(Settings.Default.vampath, scenepath, scenename + ".hide"); - pathfav = Path.Combine(Settings.Default.vampath, scenepath, scenename + ".fav"); - - } - switch (hidefav) - { - case -1: - if (File.Exists(pathfav)) - File.Delete(pathfav); - if (!File.Exists(pathhide)) - { - Directory.CreateDirectory(Path.GetDirectoryName(pathhide)); - using (File.Create(pathhide)) { } - } - break; - case 0: - if (File.Exists(pathfav)) - File.Delete(pathfav); - if (File.Exists(pathhide)) - File.Delete(pathhide); - break; - case 1: - if (File.Exists(pathhide)) - File.Delete(pathhide); - if (!File.Exists(pathfav)) - { - Directory.CreateDirectory(Path.GetDirectoryName(pathfav)); - using (File.Create(pathfav)) { } - } - break; - } - - } - - private void buttonAddFav_Click(object sender, EventArgs e) - { - if (listViewNormal.SelectedIndices.Count > 0) - { - foreach (int itemindex in listViewNormal.SelectedIndices) - { - string varName = listFilterCreatorSceneNormal[itemindex].VarName; - string scene = listFilterCreatorSceneNormal[itemindex].ScenePath; - RunSceneHideJob("scene_fav", varName, scene); - UpdateHidefav(varName, scene); - } - //UpdateFileHidefav(); - GenerateItems(); - } - } - - private void buttonRemoveHide_Click(object sender, EventArgs e) - { - if (listViewHide.SelectedIndices.Count > 0) - { - foreach (int itemindex in listViewHide.SelectedIndices) - { - string varName = listFilterCreatorSceneHide[itemindex].VarName; - string scene = listFilterCreatorSceneHide[itemindex].ScenePath; - RunSceneHideJob("scene_unhide", varName, scene); - UpdateHidefav(varName, scene); - } - //UpdateFileHidefav(); - GenerateItems(); - } - } - - private void buttonRemoveFav_Click(object sender, EventArgs e) - { - if (listViewFav.SelectedIndices.Count > 0) - { - foreach (int itemindex in listViewFav.SelectedIndices) - { - string varName = listFilterCreatorSceneFav[itemindex].VarName; - string scene = listFilterCreatorSceneFav[itemindex].ScenePath; - RunSceneHideJob("scene_unfav", varName, scene); - UpdateHidefav(varName, scene); - } - //UpdateFileHidefav(); - GenerateItems(); - } - } - private string curVarName = "", curEntryName = ""; - private JSONClass jsonLoadScene; - - private void listView_ItemActivate(object sender, EventArgs e) - { - ListView listView=(ListView)sender; - if (listView.SelectedIndices.Count == 1) - { - panelImage.Parent = listView; - int index = listView.SelectedIndices[0]; - var item = listView.Items[index]; - if (item != null) - { - curVarName = item.SubItems[1].Text; - curEntryName = item.SubItems[2].Text; - string varname = ""; - if (!string.IsNullOrEmpty(curVarName) && curVarName != "(save).") - { - varname = item.SubItems[1].Text + ":/"; - } - jsonLoadScene = new JSONClass(); - jsonLoadScene.Add("rescan", item.SubItems[7].Text == "not Installed" ? "true" : "false"); - - jsonLoadScene.Add("resources", new JSONArray()); - JSONArray resources = jsonLoadScene["resources"].AsArray; - resources.Add(new JSONClass()); - JSONClass resource = (JSONClass)resources[resources.Count - 1]; - resource.Add("type", item.SubItems[6].Text); - resource.Add("saveName", varname + curEntryName.Replace('\\', '/')); - UpdateButtonClearCache(); - if (!string.IsNullOrEmpty(item.SubItems[3].Text)) - { - labelPreviewVarName.Text = item.Text; - checkBoxMerge.Checked = false; - buttonLoadscene.Text = "Load " + item.SubItems[6].Text; - pictureBoxPreview.Image = Image.FromFile(item.SubItems[3].Text); - - panelImage.Visible = true; - radioButtonPersonOrder1.Checked = true; - if (item.SubItems[6].Text.ToLower() == "scenes" || item.SubItems[6].Text.ToLower() == "looks") - { - buttonAnalysis.Visible = true; - } - else - { - buttonAnalysis.Visible = false; - } - if (item.SubItems[6].Text.ToLower() == "looks" || item.SubItems[6].Text.ToLower() == "clothing" || - item.SubItems[6].Text.ToLower() == "morphs" || item.SubItems[6].Text.ToLower() == "hairstyle" || - item.SubItems[6].Text.ToLower() == "skin" || item.SubItems[6].Text.ToLower() == "pose") - { - groupBoxPersonOrder.Visible = true; - checkBoxIgnoreGender.Visible = true; - } - else - { - groupBoxPersonOrder.Visible = false; - checkBoxIgnoreGender.Visible = false; - } - if (item.SubItems[6].Text.ToLower() == "morphs" || - item.SubItems[6].Text.ToLower() == "skin" || - item.SubItems[6].Text.ToLower() == "pose") - { - checkBoxForMale.Visible = true; - } - else - { - checkBoxForMale.Visible = false; - } - } - } - } - } - - private void UpdateButtonClearCache() - { - string sceneCacheFolderName = Path.Combine(Directory.GetCurrentDirectory(), "Cache", - Comm.ValidFileName(curVarName == "(save)." ? "save" : curVarName), Comm.ValidFileName(curEntryName.Replace('\\', '_').Replace('/', '_'))); - if (Directory.Exists(sceneCacheFolderName)) - { - buttonClearCache.Visible = true; - } - else - { - buttonClearCache.Visible = false; - } - } - - private void toolStripComboBoxHideFav_SelectedIndexChanged(object sender, EventArgs e) - { - FilterVars(9); - } - - private void toolStripComboBoxOrderBy_SelectedIndexChanged(object sender, EventArgs e) - { - if (listFilterCreatorScene != null) - { - if (listFilterCreatorScene.Count() > 0) - GenerateItems(); - } - } - - private void listViewNormal_ListViewDragDrop(object sender, DragEventArgs e) - { - DragItemData data = (DragItemData)e.Data.GetData(typeof(DragItemData).ToString()); - List listfilter = listFilterCreatorSceneNormal; - if (data.ListView == listViewHide) - { - listfilter = listFilterCreatorSceneHide; - } - if (data.ListView == listViewFav) - { - listfilter = listFilterCreatorSceneFav; - } - foreach (int itemindex in data.ListView.SelectedIndices) - { - string varName = listfilter[itemindex].VarName; - string scene = listfilter[itemindex].ScenePath; - RunSceneHideJob("scene_unhide", varName, scene); - UpdateHidefav(varName, scene); - } - GenerateItems(); - } - - private void listViewHide_ListViewDragDrop(object sender, DragEventArgs e) - { - DragItemData data = (DragItemData)e.Data.GetData(typeof(DragItemData).ToString()); - List listfilter = listFilterCreatorSceneNormal; - if (data.ListView == listViewHide) - { - listfilter = listFilterCreatorSceneHide; - } - if (data.ListView == listViewFav) - { - listfilter = listFilterCreatorSceneFav; - } - foreach (int itemindex in data.ListView.SelectedIndices) - { - string varName = listfilter[itemindex].VarName; - string scene = listfilter[itemindex].ScenePath; - RunSceneHideJob("scene_hide", varName, scene); - UpdateHidefav(varName, scene); - } - GenerateItems(); - } - - private void listViewFav_ListViewDragDrop(object sender, DragEventArgs e) - { - DragItemData data = (DragItemData)e.Data.GetData(typeof(DragItemData).ToString()); - List listfilter = listFilterCreatorSceneNormal; - if (data.ListView == listViewHide) - { - listfilter = listFilterCreatorSceneHide; - } - if (data.ListView == listViewFav) - { - listfilter = listFilterCreatorSceneFav; - } - foreach (int itemindex in data.ListView.SelectedIndices) - { - string varName = listfilter[itemindex].VarName; - string scene = listfilter[itemindex].ScenePath; - RunSceneHideJob("scene_fav", varName, scene); - UpdateHidefav(varName, scene); - } - GenerateItems(); - } - - private void buttonLoadscene_Click(object sender, EventArgs e) - { - bool merge = false; - if (checkBoxMerge.Checked) merge = true; - bool ignoreGender = false; - if(checkBoxIgnoreGender.Checked) ignoreGender = true; - string characterGender = "unknown"; - if (checkBoxForMale.Visible) - { - if (checkBoxForMale.Checked) characterGender = "male"; - else characterGender = "female"; - } - int personOrder = 1; - foreach (RadioButton rbperson in groupBoxPersonOrder.Controls) - { - if (rbperson.Checked) - { - personOrder = int.Parse(rbperson.Text); - break; - } - } - panelImage.Visible = false; - Cursor = Cursors.WaitCursor; - - JSONArray resources = jsonLoadScene["resources"].AsArray; - string saveName = ""; - - if (resources.Count > 0) - { - JSONClass resource = (JSONClass)resources[0]; - saveName = resource["saveName"].Value; - } - - try - { - form1.LoadScene(jsonLoadScene, merge, ignoreGender, characterGender, personOrder); - } - catch (Exception ex) - { - LogBackendLine($"load scene failed: {ex.Message}"); - } - Cursor = Cursors.Arrow; - UpdateButtonClearCache(); - } - - private void chklistLocation_SelectedIndexChanged(object sender, EventArgs e) - { - FilterVars(); - //FillItems(); - } - - private void backgroundWorkerGenerate_DoWork(object sender, DoWorkEventArgs e) - { - AllInstalledVars(); - } - - private void backgroundWorkerGenerate_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - //progressBar1.Visible = false; - } - - private void checkedListBoxHideFav_SelectedIndexChanged(object sender, EventArgs e) - { - FilterVars(9); - } - - private void textBoxFilter_TextChanged(object sender, EventArgs e) - { - FilterVars(8); - } - - private void comboBoxCreator_SelectedIndexChanged(object sender, EventArgs e) - { - FilterVarsCreator(); - } - - private void buttonLocate_Click(object sender, EventArgs e) - { - - JSONArray resources = jsonLoadScene["resources"].AsArray; - JSONClass resource = (JSONClass)resources[resources.Count - 1]; - string varName = resource["saveName"]; - - if (varName.IndexOf(":/") > 0) - { - varName = varName.Substring(0, varName.IndexOf(":/")); - form1.LocateVar(varName); - form1.SelectVarInList(varName); - form1.Activate(); - } - else - { - try - { - RunBackendJob("vars_locate", new { path = varName.Replace('/', '\\') }); - } - catch (Exception ex) - { - LogBackendLine($"locate failed: {ex.Message}"); - } - } - } - - int layoutPanelWidthMode = 0; - private void buttonFav_Click(object sender, EventArgs e) - { - if (layoutPanelWidthMode == 3) - { - tableLayoutPanel1.ColumnStyles[0].Width = 33; - tableLayoutPanel1.ColumnStyles[2].Width = 33; - tableLayoutPanel1.ColumnStyles[4].Width = 33; - layoutPanelWidthMode = 0; - buttonFav.Text = "鈼Fav鈻"; - } - else - { - tableLayoutPanel1.ColumnStyles[0].Width = 10; - tableLayoutPanel1.ColumnStyles[2].Width = 10; - tableLayoutPanel1.ColumnStyles[4].Width = 80; - layoutPanelWidthMode = 3; - buttonFav.Text = "鈻禙av鈼"; - } - } - - private void buttonNormal_Click(object sender, EventArgs e) - { - if (layoutPanelWidthMode == 2) - { - tableLayoutPanel1.ColumnStyles[0].Width = 33; - tableLayoutPanel1.ColumnStyles[2].Width = 33; - tableLayoutPanel1.ColumnStyles[4].Width = 33; - layoutPanelWidthMode = 0; - buttonNormal.Text = "鈼Normal鈻"; - } - else - { - tableLayoutPanel1.ColumnStyles[0].Width = 10; - tableLayoutPanel1.ColumnStyles[2].Width = 80; - tableLayoutPanel1.ColumnStyles[4].Width = 10; - layoutPanelWidthMode = 2; - buttonNormal.Text = "鈻禢ormal鈼"; - } - } - - private void buttonHide_Click(object sender, EventArgs e) - { - if (layoutPanelWidthMode == 1) - { - tableLayoutPanel1.ColumnStyles[0].Width = 33; - tableLayoutPanel1.ColumnStyles[2].Width = 33; - tableLayoutPanel1.ColumnStyles[4].Width = 33; - layoutPanelWidthMode = 0; - buttonHide.Text = "鈼Hide鈻"; - } - else - { - tableLayoutPanel1.ColumnStyles[0].Width = 80; - tableLayoutPanel1.ColumnStyles[2].Width = 10; - tableLayoutPanel1.ColumnStyles[4].Width = 10; - layoutPanelWidthMode = 1; - buttonHide.Text = "鈻禜ide鈼"; - } - } - - private void listViewHide_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) - { - var curpriviewscene = listFilterCreatorSceneHide[e.ItemIndex]; - RetrieveVirtualItem(e, curpriviewscene); - } - - - private void listViewNormal_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) - { - - var curpriviewscene = listFilterCreatorSceneNormal[e.ItemIndex]; - RetrieveVirtualItem(e, curpriviewscene); - } - - private void listViewFav_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) - { - var curpriviewscene = listFilterCreatorSceneFav[e.ItemIndex]; - RetrieveVirtualItem(e, curpriviewscene); - } - - private void RetrieveVirtualItem(RetrieveVirtualItemEventArgs e, dynamic curpriviewscene) // TODO: Replace with ScenesView - { - string key = "vam.png"; - if (!string.IsNullOrWhiteSpace(curpriviewscene.PreviewPic)) - { - string picpath = Path.Combine(Settings.Default.varspath, previewpicsDirName, curpriviewscene.AtomType, curpriviewscene.VarName, curpriviewscene.PreviewPic); - if (File.Exists(picpath)) key = picpath; - } - if (!imageListScenes.Images.ContainsKey(key)) - { - imageListScenes.Images.Add(key, Image.FromFile(key)); - if (imageListScenes.Images.Count > 40) imageListScenes.Images.RemoveAt(0); - } - - - string scenePath = curpriviewscene.ScenePath; - string sceneName = curpriviewscene.VarName + " - " + Path.GetFileNameWithoutExtension(scenePath); - - e.Item = new ListViewItem(sceneName, imageListScenes.Images.IndexOfKey(key)); - e.Item.SubItems.Add(curpriviewscene.VarName); - e.Item.SubItems.Add(curpriviewscene.ScenePath); - e.Item.SubItems.Add(key); - e.Item.SubItems.Add(curpriviewscene.VarDate.ToString()); - e.Item.SubItems.Add(curpriviewscene.HideFav.ToString()); - e.Item.SubItems.Add(curpriviewscene.AtomType.ToString()); - e.Item.SubItems.Add(curpriviewscene.Location.ToString()); - } - - - private void comboBoxOrderBy_SelectedIndexChanged(object sender, EventArgs e) - { - if (listFilterCreatorScene != null&& listFilterCreatorScene.Count() > 0) - { - GenerateItems(); - } - } - - private void radioButtonCategory_CheckedChanged(object sender, EventArgs e) - { - RadioButton rb = sender as RadioButton; - if (rb == null) - { - //MessageBox.Show("Sender is not a RadioButton"); - return; - } - if (strCategory != rb.Text) - { - strCategory = rb.Text; - FilterVars(); - } - } - - private void buttonAnalysis_Click(object sender, EventArgs e) - { - try - { - form1.Analysisscene(jsonLoadScene); - } - catch (Exception ex) - { - LogBackendLine($"analysis failed: {ex.Message}"); - } - UpdateButtonClearCache(); - } - - private void buttonResetFilter_Click(object sender, EventArgs e) - { - textBoxFilter.Text = ""; - comboBoxCreator.SelectedItem = "____ALL"; - comboBoxOrderBy.SelectedItem = "New To Old"; - } - - private void buttonClearCache_Click(object sender, EventArgs e) - { - if (MessageBox.Show("The cache can improve the speed of secondary analysis, normally you don't need to clear it, unless you modify the scene file. This operation only clears the cache of the current scene, if you need to clear all the cache, please delete the cache directory manually.", "Clear Cache", MessageBoxButtons.YesNo) == DialogResult.Yes) - { - try - { - RunBackendJob("cache_clear", new { var_name = curVarName, entry_name = curEntryName }); - } - catch (Exception ex) - { - LogBackendLine($"cache clear failed: {ex.Message}"); - } - UpdateButtonClearCache(); - } - } - - private void buttonFilterByCreator_Click(object sender, EventArgs e) - { - JSONArray resources = jsonLoadScene["resources"].AsArray; - JSONClass resource = (JSONClass)resources[resources.Count - 1]; - string varName = resource["saveName"]; - if (varName.IndexOf(":/") > 0) - { - varName = varName.Substring(0, varName.IndexOf(":/")); - string[] varnamepart = varName.Split('.'); - - if (varnamepart.Length == 3) - { - comboBoxCreator.SelectedItem = varnamepart[0]; - textBoxFilter.Text = ""; - panelImage.Visible = false; - } - } - } - } -} diff --git a/_archived/varManager/FormScenes.resx b/_archived/varManager/FormScenes.resx deleted file mode 100644 index 8ffb2ae..0000000 --- a/_archived/varManager/FormScenes.resx +++ /dev/null @@ -1,299 +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 - - - 603, 17 - - - 425, 17 - - - 448, 59 - - - 120 - - - - - AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAO5KPETtRTd+7UU3fe1FN33tRTd87kk7MgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiSTsN7EY4a+5EN33tRTd97UU3fe1F - N23sSDkPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKhQ - QS6lSTh8pUg3faVIN32lSDd+pko5RwAAAAAAAAAAAAAAAO5JO23tRTf/7UU3/+1FN//tRTf/7Uc4se5M - PQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMD+6IzA/umcwP7pnHH9S90im0/dop - tP/aKbT/3jCe/94wnv3THtK/zA/umcwP7pnMD+6ZzA/umcwP7pnMD+6ZzA/uMwAAAAAAAAAAAAAAAAAA - AAAAAAAAq1RDCKZLOqqlSDf/pUg3/6VIN/+lSDf/pko5cwAAAAAAAAAAAAAAAO5NPxntRzjO7UU3/+1F - N//tRTf/7UY39O5HOU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMD+7/zA/u/8wP - 7v/MD+7/zA/u/8wP7v/MD+7/zhTl/8wP7v/MD+7/zA/u/8wP7v/MD+7/zA/u/8wP7v/MD+7/zA/uRAAA - AAAAAAAAAAAAAAAAAAAAAAAAqE48R6VJOPKlSDf/pUg3/6VIN/+lSTjTpkw7HAAAAAAAAAAAAAAAAAAA - AADuSTtp7UU3++1FN//tRTf/7UU3/+5GOLbuSzwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADMD+7/zA/u/6dNPF+lSTj6qUg3/9hAW//MD+7/zA/u/8wP7v/VIcn+7Uc5ZgAAAAAAAAAAzA/ud8wP - 7v/MD+7dAAAAAAAAAAAAAAAAAAAAAAAAAACpUUMKpko5sKVIN/+lSDf/pUg3/6VIN/ymSjlwAAAAAAAA - AAAAAAAAAAAAAAAAAADuTT8W7Ug5yu1FN//tRTf/7UU3/+1GN/buRzlSAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADMD+7/zA/u/6ZKOcelSDf/pEg3/79CW//MD+7/zA/u/8wP7v/kOXj/7Uc4zO5J - OxcAAAAAzA/u3cwP7v/MD+5mAAAAAAAAAAAAAAAAAAAAAAAAAACnTTxMpUk49KVIN/+lSDf/pUg3/6VJ - OM+nTDsZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7kk7Y+1GN/rtRTf/7UU3/+1FN//uRji77ko8DgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMD+7/zA/u/6VJOPulSDf/pUg3/61BW//MD+7/zA/u/9Uh - yP/tRTf/7UY3/O5HOWzMD+5EzA/u/8wP7u7MD+4RAAAAAAAAAAAAAAAAAAAAAKpTQgymSjm1pUg3/6VI - N/+lSDf/pUg3+6ZLOWoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7k5AE+5GOMXtRTf/7UU3/+1F - N//tRjf47kc5WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMD+7/zA/u/6VIN/+lSDf/pUg3/6pC - XPXMD+7/zA/u/+I2hf/tRTf/7UU3/+1GONDOE+ezzA/u/8wP7ogAAAAAAAAAAAAAAAAAAAAAAAAAAKdN - PFGlSTj2pUg3/6VIN/+lSDf/pUk4yqdMOxYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO5J - O17tRjf57UU3/+1FN//tRTf/7Uc4wO5LPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMD+7/zA/u/6VI - N/+lSDf/pUg3/6xBZr3MD+7/zxfh9O1FN//tRTf/7UU3/+k/W/zMD+7/zA/u/8wP7iIAAAAAAAAAAAAA - AAAAAAAAqlNBDqZKObqlSDf/pUg3/6VIN/+lSDf7pko5ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAO5PQRDuRznA7UU3/+1FN//tRTf/7UY3+e5HOV4AAAAAAAAAAAAAAAAAAAAAAAAAAKhP - PxrMD+7/zA/u/6VIN/+lSDf/pUg39LQ6iGPMD+7/0RvZte1HOPLtRTf/7UU3/94wnv/MD+7/zRLpwwAA - AAAAAAAAAAAAAAAAAAAAAAAAp008V6VJOPilSDf/pUg3/6VIN/+lSTjGp048EwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuSTtY7UU3+O1FN//tRTf/7UU3/+1HOMXuSzwTAAAAAAAA - AAAAAAAAAAAAAKdMO3HMD+7/zA/u/6VIN/+lSDf/pUg4r8Uf1CrMD+7/zRHrnO1IOajtRTf/7UU3/9op - tP/MD+7/zRLq9swP7iIAAAAAAAAAAAAAAACpUEEQpko5wKVIN/+lSDf/pUg3/6VIN/mmSjleAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuT0EO7Ug5u+1FN//tRTf/7UU3/+1G - N/ruSDljAAAAAAAAAAAAAAAAqE8/HaZKOdTMD+7/zA/u/6VIN/+lSDfypko5RswP7iLMD+7/zA/ume1L - PUDtRjjv7UU3/+1FN//THdL/zA/u/84T6MQAAAAAAAAAAAAAAACnTDtdpUk4+aVIN/+lSDf/pUg3/6VJ - OMGmSjsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7ko8Uu1F - N/btRTf/7UU3/+1FN//uRjjK7ko7FgAAAAAAAAAApkw7d6VIN/3MD+7/zA/u/6VIN/+lSTipp04+CMwP - 7iLMD+7/zA/uzM0R64vtSTqi7UU3/+1FN//pP1v/zA/u/8wP7v/OFecSAAAAAKlQQBKmSjnEpUg3/6VI - N/+lSDf/pUg3+KZKOVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA71BBDO1IObbtRTf/7UU3/+1FN//tRTf77kc5aQAAAACpUD4gpkk42KVIN//MD+7/zA/u/6VI - N/CmSzpAAAAAAMwP7iLMD+7/zA/u/8wP7v/TINKW7UY47e1FN//tRTf/0x3S/8wP7v/UIM5uAAAAAKdM - O2OlSDf6pUg3/6VIN/+lSDf/pUg4vKdMPA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAO5KPE3uRTf07UU3/+1FN//tRTf/7Uc4zu5LPRimTTt8pUg3/qVI - N//MD+7/zA/u/6VJOKOnSz0GAAAAAMwP7iLMD+7/zA/u/8wP7v/NEut67kg6ne1FN//tRTf/2im0/8wP - 7v/bK661q1FAFaZKOcmlSDf/pUg3/6VIN/+lSDf2pko5UwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO5RQwruRzmw7UU3/+1FN//tRTf/7kU3/N1I - OZKlSjjZpUg3/6VIN//MD+7/zA/u/6ZLOjsAAAAAAAAAAMwP7iLMD+7/zA/u/8wP7u7MD+4z7kw9Nu1G - OOrtRTf/0x3S/8wP7v/iNozou0s6j6RIN/ulSDf/pUg3/6VIN/+lSTi2p049DAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuSzxH7Uc48u1F - N//tRTf/7kU3/+NGN/quSDf+pEg3/6VIN//MD+7/zA/u/6dNPgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA7lZIBO1JOpfpP1v/zA/u/8wP7v/sQkr+z0Y3+qVIN/+lSDf/pUg3/6VIN/WmSjlNAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADtUkQI7kc5q+1FN//tRTf/7UU3/+5FN//JRzf/pUk3/6VIN//MD+7/zA/u/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAO5LPTHSHdT6zA/u/9UhyP/uRTf/5kU3/7RIN/+kSDf/pUg3/6ZK - OLGnTz0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA7ko8Qu1GOPDtRTf/7UU3/+5FN//jRjf/sEg3/6RIN//MD+7/zA/u/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzA/uM8wQ7s3MD+7/zA/u/+c8av/tRTf/7kU3/9BH - N/+mSDf/pUg386ZLOkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FREB+1JOqXtRjf/7UU3/+1FN//uRTf/ykY3/6VJ - OOfMD+7/zA/u/8wP7pnMD+6ZzA/umcwP7pnMD+6ZzA/umcwP7pnMD+7MzA/u/8wP7v/MEOzx5Dp96+1F - N//tRTf/7kU3/+dFN/+1SDf/pEk4q6dLPQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO1LPD3tRjjw7UU3/+1F - N//uRTf/40U3/7lJOZLMD+7/zA/u/8wP7v/MD+7/zA/u/8wP7v/MD+7/zA/u/8wP7v/MD+7/zA/uzMwP - 7ojvXE8C7Uk6i+1FN//tRTf/7UU3/+5FN//URjfyqUs6QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOtP - QAXsRjhr7UU3ke1FN5HtRTeR7UU3iuRIOSUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA60o8IuxHOIntRTeR7UU3ke1FN5HqRjdu10o6BwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6 - OgIzMzNMMzMzazMzM2szMzNrMzMzZTMzMxgAAAAAAAAAAAAAAACo9UcJpPU9WqP1Omuj9Tpro/U6a6T1 - PFyl9EEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjk - RybV4j9p1eI+a9XiPmvV4j5r1uNBPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAsLCy8lJSXlMzMz/zMzM/8zMzP/MzMz/zQ0NH9DQ0MBAAAAAAAAAACm9UIOo/Q8w6P0 - Ov+j9Dr/o/Q6/6P0Ovij9TxXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAA= - - - \ No newline at end of file diff --git a/_archived/varManager/FormSettings.Designer.cs b/_archived/varManager/FormSettings.Designer.cs deleted file mode 100644 index e8c7ba4..0000000 --- a/_archived/varManager/FormSettings.Designer.cs +++ /dev/null @@ -1,224 +0,0 @@ -锘 -namespace varManager -{ - partial class FormSettings - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.Windows.Forms.Label label3; - this.label1 = new System.Windows.Forms.Label(); - this.textBoxVarspath = new System.Windows.Forms.TextBox(); - this.buttonVarspath = new System.Windows.Forms.Button(); - this.buttonSave = new System.Windows.Forms.Button(); - this.folderBrowserDialogVars = new System.Windows.Forms.FolderBrowserDialog(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.label2 = new System.Windows.Forms.Label(); - this.textBoxVamPath = new System.Windows.Forms.TextBox(); - this.buttonVamPath = new System.Windows.Forms.Button(); - this.folderBrowserDialogVam = new System.Windows.Forms.FolderBrowserDialog(); - this.labelExec = new System.Windows.Forms.Label(); - this.textBoxExec = new System.Windows.Forms.TextBox(); - this.buttonExec = new System.Windows.Forms.Button(); - this.openFileDialogExec = new System.Windows.Forms.OpenFileDialog(); - label3 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // label3 - // - label3.AutoSize = true; - label3.ForeColor = System.Drawing.Color.Crimson; - label3.Location = new System.Drawing.Point(105, 254); - label3.Name = "label3"; - label3.Size = new System.Drawing.Size(495, 51); - label3.TabIndex = 5; - label3.Text = "This is a repository for the original var files.\r\nNote that that it is NOT {vamIn" + - "stallDir} \\AddonPackages directory\r\nIt is recommended to have the same partition" + - " as the VAM installation directory"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(80, 218); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(70, 17); - this.label1.TabIndex = 0; - this.label1.Text = "vars path:"; - // - // textBoxVarspath - // - this.textBoxVarspath.Location = new System.Drawing.Point(173, 212); - this.textBoxVarspath.Name = "textBoxVarspath"; - this.textBoxVarspath.Size = new System.Drawing.Size(574, 25); - this.textBoxVarspath.TabIndex = 2; - this.textBoxVarspath.Text = "d:\\vars"; - // - // buttonVarspath - // - this.buttonVarspath.Location = new System.Drawing.Point(753, 211); - this.buttonVarspath.Name = "buttonVarspath"; - this.buttonVarspath.Size = new System.Drawing.Size(35, 29); - this.buttonVarspath.TabIndex = 3; - this.buttonVarspath.Text = ".."; - this.buttonVarspath.UseVisualStyleBackColor = true; - this.buttonVarspath.Click += new System.EventHandler(this.buttonVarspath_Click); - // - // labelExec - // - this.labelExec.AutoSize = true; - this.labelExec.Location = new System.Drawing.Point(32, 154); - this.labelExec.Name = "labelExec"; - this.labelExec.Size = new System.Drawing.Size(118, 17); - this.labelExec.TabIndex = 6; - this.labelExec.Text = "defaultVamExec:"; - // - // textBoxExec - // - this.textBoxExec.Location = new System.Drawing.Point(173, 148); - this.textBoxExec.Name = "textBoxExec"; - this.textBoxExec.Size = new System.Drawing.Size(574, 25); - this.textBoxExec.TabIndex = 7; - this.textBoxExec.Text = "VaM (Desktop Mode).bat"; - // - // buttonExec - // - this.buttonExec.Location = new System.Drawing.Point(753, 148); - this.buttonExec.Name = "buttonExec"; - this.buttonExec.Size = new System.Drawing.Size(35, 29); - this.buttonExec.TabIndex = 8; - this.buttonExec.Text = ".."; - this.buttonExec.UseVisualStyleBackColor = true; - this.buttonExec.Click += new System.EventHandler(this.buttonExec_Click); - // - // buttonSave - // - this.buttonSave.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonSave.Location = new System.Drawing.Point(597, 470); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 26); - this.buttonSave.TabIndex = 4; - this.buttonSave.Text = "Save"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.buttonSave_Click); - // - // folderBrowserDialogVars - // - this.folderBrowserDialogVars.Description = global::varManager.Properties.Settings.Default.varspath; - this.folderBrowserDialogVars.SelectedPath = global::varManager.Properties.Settings.Default.varspath; - // - // buttonCancel - // - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(713, 470); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 26); - this.buttonCancel.TabIndex = 5; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(24, 90); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(114, 17); - this.label2.TabIndex = 0; - this.label2.Text = "VAM Install path:"; - // - // textBoxVamPath - // - this.textBoxVamPath.Location = new System.Drawing.Point(173, 86); - this.textBoxVamPath.Name = "textBoxVamPath"; - this.textBoxVamPath.Size = new System.Drawing.Size(574, 25); - this.textBoxVamPath.TabIndex = 0; - this.textBoxVamPath.Text = "d:\\Virt_a_mate"; - // - // buttonVamPath - // - this.buttonVamPath.Location = new System.Drawing.Point(753, 85); - this.buttonVamPath.Name = "buttonVamPath"; - this.buttonVamPath.Size = new System.Drawing.Size(35, 29); - this.buttonVamPath.TabIndex = 1; - this.buttonVamPath.Text = ".."; - this.buttonVamPath.UseVisualStyleBackColor = true; - this.buttonVamPath.Click += new System.EventHandler(this.buttonVamPath_Click); - // - // folderBrowserDialogVam - // - this.folderBrowserDialogVam.Description = global::varManager.Properties.Settings.Default.varspath; - this.folderBrowserDialogVam.SelectedPath = global::varManager.Properties.Settings.Default.varspath; - this.folderBrowserDialogVam.ShowNewFolderButton = false; - // - // FormSettings - // - this.AcceptButton = this.buttonSave; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(800, 510); - this.ControlBox = false; - this.Controls.Add(this.buttonExec); - this.Controls.Add(this.textBoxExec); - this.Controls.Add(this.labelExec); - this.Controls.Add(label3); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.buttonVamPath); - this.Controls.Add(this.textBoxVamPath); - this.Controls.Add(this.buttonVarspath); - this.Controls.Add(this.label2); - this.Controls.Add(this.textBoxVarspath); - this.Controls.Add(this.label1); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "FormSettings"; - this.Text = "Settings"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormSettings_FormClosing); - this.Load += new System.EventHandler(this.FormSettings_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox textBoxVarspath; - private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogVars; - private System.Windows.Forms.Button buttonVarspath; - private System.Windows.Forms.Button buttonSave; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox textBoxVamPath; - private System.Windows.Forms.Button buttonVamPath; - private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogVam; - private System.Windows.Forms.Label labelExec; - private System.Windows.Forms.TextBox textBoxExec; - private System.Windows.Forms.Button buttonExec; - private System.Windows.Forms.OpenFileDialog openFileDialogExec; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormSettings.cs b/_archived/varManager/FormSettings.cs deleted file mode 100644 index 731e148..0000000 --- a/_archived/varManager/FormSettings.cs +++ /dev/null @@ -1,83 +0,0 @@ -锘縰sing System; -using System.IO; -using System.Threading; -using System.Windows.Forms; -using varManager.Backend; -using varManager.Properties; - -namespace varManager -{ - public partial class FormSettings : Form - { - public FormSettings() - { - InitializeComponent(); - } - - private void buttonVarspath_Click(object sender, EventArgs e) - { - folderBrowserDialogVars.SelectedPath = textBoxVarspath.Text; - folderBrowserDialogVars.ShowDialog(); - textBoxVarspath.Text = folderBrowserDialogVars.SelectedPath; - } - - private void buttonVamPath_Click(object sender, EventArgs e) - { - folderBrowserDialogVam.SelectedPath = textBoxVamPath.Text; - folderBrowserDialogVam.ShowDialog(); - textBoxVamPath.Text = folderBrowserDialogVam.SelectedPath; - } - - private void buttonExec_Click(object sender, EventArgs e) - { - openFileDialogExec.InitialDirectory = Path.GetDirectoryName(textBoxExec.Text); - openFileDialogExec.FileName = Path.GetFileName(textBoxExec.Text); - if (openFileDialogExec.ShowDialog() == DialogResult.OK) - { - textBoxExec.Text = Path.GetFileName(openFileDialogExec.FileName); // 鍙幏鍙栨枃浠跺悕 - } - } - - private async void FormSettings_Load(object sender, EventArgs e) - { - try - { - await BackendSession.EnsureStartedAsync(null, CancellationToken.None).ConfigureAwait(true); - } - catch - { - } - - var cfg = BackendSession.Config; - textBoxVarspath.Text = cfg?.Varspath ?? Properties.Settings.Default.varspath; - textBoxVamPath.Text = cfg?.Vampath ?? Properties.Settings.Default.vampath; - textBoxExec.Text = cfg?.VamExec ?? Properties.Settings.Default.defaultVamExec; - - SetReadOnlyUi(); - } - - private void SetReadOnlyUi() - { - textBoxVarspath.ReadOnly = true; - textBoxVamPath.ReadOnly = true; - textBoxExec.ReadOnly = true; - buttonVarspath.Enabled = false; - buttonVamPath.Enabled = false; - buttonExec.Enabled = false; - buttonSave.Text = "Close"; - } - - private void buttonSave_Click(object sender, EventArgs e) - { - MessageBox.Show("閰嶇疆鐢卞悗绔鐞嗭紝璇风紪杈 config.json 鍚庨噸鍚"); - this.DialogResult = DialogResult.OK; - this.Close(); - } - - private void FormSettings_FormClosing(object sender, FormClosingEventArgs e) - { - if (this.DialogResult == DialogResult.None) - e.Cancel = true; - } - } -} diff --git a/_archived/varManager/FormSettings.resx b/_archived/varManager/FormSettings.resx deleted file mode 100644 index 20c94ca..0000000 --- a/_archived/varManager/FormSettings.resx +++ /dev/null @@ -1,129 +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 - - - False - - - 17, 17 - - - 405, 21 - - \ No newline at end of file diff --git a/_archived/varManager/FormStaleVars.Designer.cs b/_archived/varManager/FormStaleVars.Designer.cs deleted file mode 100644 index 6c531bd..0000000 --- a/_archived/varManager/FormStaleVars.Designer.cs +++ /dev/null @@ -1,166 +0,0 @@ -锘縩amespace varManager -{ - partial class FormStaleVars - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.label1 = new System.Windows.Forms.Label(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.checkBoxRemoveOldVersion = new System.Windows.Forms.CheckBox(); - this.label3 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.buttonOk = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.label4 = new System.Windows.Forms.Label(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoEllipsis = true; - this.label1.Location = new System.Drawing.Point(49, 46); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(487, 72); - this.label1.TabIndex = 0; - this.label1.Text = "Stale var means:\r\n1,The version is not the latest.\r\n2,Not depended by other var."; - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.checkBoxRemoveOldVersion); - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.ForeColor = System.Drawing.Color.Red; - this.groupBox1.Location = new System.Drawing.Point(12, 138); - this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.groupBox1.Size = new System.Drawing.Size(607, 180); - this.groupBox1.TabIndex = 1; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Follow-up Step"; - // - // checkBoxRemoveOldVersion - // - this.checkBoxRemoveOldVersion.AutoSize = true; - this.checkBoxRemoveOldVersion.Location = new System.Drawing.Point(11, 29); - this.checkBoxRemoveOldVersion.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.checkBoxRemoveOldVersion.Name = "checkBoxRemoveOldVersion"; - this.checkBoxRemoveOldVersion.Size = new System.Drawing.Size(185, 22); - this.checkBoxRemoveOldVersion.TabIndex = 3; - this.checkBoxRemoveOldVersion.Text = "Remove Old Version Vars"; - this.checkBoxRemoveOldVersion.UseVisualStyleBackColor = true; - // - // label3 - // - this.label3.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label3.Location = new System.Drawing.Point(7, 94); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(595, 65); - this.label3.TabIndex = 2; - this.label3.Text = "The following packages will be moved to \"___OldVersionVars___\" directory\r\n1. Not " + - "pure plug-in packages\r\n2. Not the latest version\r\n"; - // - // label2 - // - this.label2.AutoEllipsis = true; - this.label2.Location = new System.Drawing.Point(31, 61); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(448, 26); - this.label2.TabIndex = 1; - this.label2.Text = "Warning: This operation may cause a dependency error"; - // - // buttonOk - // - this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOk.Location = new System.Drawing.Point(374, 340); - this.buttonOk.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonOk.Name = "buttonOk"; - this.buttonOk.Size = new System.Drawing.Size(75, 28); - this.buttonOk.TabIndex = 3; - this.buttonOk.Text = "OK"; - this.buttonOk.UseVisualStyleBackColor = true; - this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click); - // - // buttonCancel - // - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(539, 340); - this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 28); - this.buttonCancel.TabIndex = 3; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.ForeColor = System.Drawing.Color.Red; - this.label4.Location = new System.Drawing.Point(19, 11); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(341, 18); - this.label4.TabIndex = 4; - this.label4.Text = "鈼 Will moved stale vars to \"___StaleVars___\" directory"; - // - // FormStaleVars - // - this.AcceptButton = this.buttonOk; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(639, 388); - this.ControlBox = false; - this.Controls.Add(this.label4); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonOk); - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.label1); - this.Font = new System.Drawing.Font("Calibri", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.Name = "FormStaleVars"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "StaleVars"; - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.CheckBox checkBoxRemoveOldVersion; - private System.Windows.Forms.Button buttonOk; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.Label label4; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormStaleVars.cs b/_archived/varManager/FormStaleVars.cs deleted file mode 100644 index 3d070e9..0000000 --- a/_archived/varManager/FormStaleVars.cs +++ /dev/null @@ -1,27 +0,0 @@ -锘縰sing 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 varManager -{ - public partial class FormStaleVars : Form - { - public bool removeOldVersion; - public FormStaleVars() - { - InitializeComponent(); - removeOldVersion = false; - } - - private void buttonOk_Click(object sender, EventArgs e) - { - removeOldVersion = checkBoxRemoveOldVersion.Checked; - } - } -} diff --git a/_archived/varManager/FormStaleVars.resx b/_archived/varManager/FormStaleVars.resx deleted file mode 100644 index 1af7de1..0000000 --- a/_archived/varManager/FormStaleVars.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/_archived/varManager/FormSwitchAdd.Designer.cs b/_archived/varManager/FormSwitchAdd.Designer.cs deleted file mode 100644 index d35a706..0000000 --- a/_archived/varManager/FormSwitchAdd.Designer.cs +++ /dev/null @@ -1,93 +0,0 @@ -锘 -namespace varManager -{ - partial class FormSwitchAdd - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.textBoxSwitchName = new System.Windows.Forms.TextBox(); - this.buttonOK = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // textBoxSwitchName - // - this.textBoxSwitchName.Location = new System.Drawing.Point(12, 14); - this.textBoxSwitchName.Name = "textBoxSwitchName"; - this.textBoxSwitchName.Size = new System.Drawing.Size(246, 25); - this.textBoxSwitchName.TabIndex = 0; - // - // buttonOK - // - this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Location = new System.Drawing.Point(90, 66); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(75, 26); - this.buttonOK.TabIndex = 1; - this.buttonOK.Text = "OK"; - this.buttonOK.UseVisualStyleBackColor = true; - this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); - // - // buttonCancel - // - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(185, 66); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 26); - this.buttonCancel.TabIndex = 2; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - // - // FormSwitchAdd - // - this.AcceptButton = this.buttonOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(272, 113); - this.ControlBox = false; - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonOK); - this.Controls.Add(this.textBoxSwitchName); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.Name = "FormSwitchAdd"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Add AddonPackages Switch"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormSwitchAdd_FormClosing); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox textBoxSwitchName; - private System.Windows.Forms.Button buttonOK; - private System.Windows.Forms.Button buttonCancel; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormSwitchAdd.cs b/_archived/varManager/FormSwitchAdd.cs deleted file mode 100644 index 5816dd9..0000000 --- a/_archived/varManager/FormSwitchAdd.cs +++ /dev/null @@ -1,34 +0,0 @@ -锘縰sing System; -using System.Windows.Forms; - -namespace varManager -{ - public partial class FormSwitchAdd : Form - { - private string switchName; - - public string SwitchName { get => switchName; set => switchName = value; } - - public FormSwitchAdd() - { - InitializeComponent(); - } - - private void FormSwitchAdd_FormClosing(object sender, FormClosingEventArgs e) - { - if (this.DialogResult == DialogResult.None) - e.Cancel = true; - } - - private void buttonOK_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(textBoxSwitchName.Text.Trim())) - this.DialogResult = DialogResult.None; - else - { - SwitchName = textBoxSwitchName.Text; - this.DialogResult = DialogResult.OK; - } - } - } -} diff --git a/_archived/varManager/FormSwitchAdd.resx b/_archived/varManager/FormSwitchAdd.resx deleted file mode 100644 index 1af7de1..0000000 --- a/_archived/varManager/FormSwitchAdd.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/_archived/varManager/FormSwitchRename.Designer.cs b/_archived/varManager/FormSwitchRename.Designer.cs deleted file mode 100644 index dc5c87c..0000000 --- a/_archived/varManager/FormSwitchRename.Designer.cs +++ /dev/null @@ -1,119 +0,0 @@ -锘 -namespace varManager -{ - partial class FormSwitchRename - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.textBoxSwitchNewName = new System.Windows.Forms.TextBox(); - this.buttonOK = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.textBoxSwitchOldName = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // textBoxSwitchNewName - // - this.textBoxSwitchNewName.Location = new System.Drawing.Point(11, 76); - this.textBoxSwitchNewName.Name = "textBoxSwitchNewName"; - this.textBoxSwitchNewName.Size = new System.Drawing.Size(246, 25); - this.textBoxSwitchNewName.TabIndex = 0; - // - // buttonOK - // - this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Location = new System.Drawing.Point(85, 111); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(75, 26); - this.buttonOK.TabIndex = 1; - this.buttonOK.Text = "OK"; - this.buttonOK.UseVisualStyleBackColor = true; - this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); - // - // buttonCancel - // - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(185, 111); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 26); - this.buttonCancel.TabIndex = 2; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - // - // textBoxSwitchOldName - // - this.textBoxSwitchOldName.Location = new System.Drawing.Point(11, 14); - this.textBoxSwitchOldName.Name = "textBoxSwitchOldName"; - this.textBoxSwitchOldName.ReadOnly = true; - this.textBoxSwitchOldName.Size = new System.Drawing.Size(246, 25); - this.textBoxSwitchOldName.TabIndex = 3; - this.textBoxSwitchOldName.TabStop = false; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Cambria", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.Location = new System.Drawing.Point(114, 45); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(31, 22); - this.label1.TabIndex = 4; - this.label1.Text = "to:"; - // - // FormSwitchRename - // - this.AcceptButton = this.buttonOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(277, 150); - this.ControlBox = false; - this.Controls.Add(this.label1); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonOK); - this.Controls.Add(this.textBoxSwitchOldName); - this.Controls.Add(this.textBoxSwitchNewName); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.Name = "FormSwitchRename"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Rename AddonPackages Switch"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormSwitchAdd_FormClosing); - this.Load += new System.EventHandler(this.FormSwitchRename_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox textBoxSwitchNewName; - private System.Windows.Forms.Button buttonOK; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.TextBox textBoxSwitchOldName; - private System.Windows.Forms.Label label1; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormSwitchRename.cs b/_archived/varManager/FormSwitchRename.cs deleted file mode 100644 index acc9cd1..0000000 --- a/_archived/varManager/FormSwitchRename.cs +++ /dev/null @@ -1,45 +0,0 @@ -锘縰sing System; -using System.Windows.Forms; - -namespace varManager -{ - public partial class FormSwitchRename : Form - { - private string newName; - - public string NewName { get => newName; set => newName = value; } - private string oldName; - - public string OldName { get => oldName; set => oldName = value; } - public FormSwitchRename() - { - InitializeComponent(); - } - - private void FormSwitchAdd_FormClosing(object sender, FormClosingEventArgs e) - { - if (this.DialogResult == DialogResult.None) - e.Cancel = true; - } - - private void buttonOK_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(textBoxSwitchNewName.Text.Trim())) - this.DialogResult = DialogResult.None; - else if (textBoxSwitchNewName.Text.ToLower() == textBoxSwitchOldName.Text.ToLower()) - { - this.DialogResult = DialogResult.None; - } - else - { - NewName = textBoxSwitchNewName.Text; - this.DialogResult = DialogResult.OK; - } - } - - private void FormSwitchRename_Load(object sender, EventArgs e) - { - textBoxSwitchOldName.Text = oldName; - } - } -} diff --git a/_archived/varManager/FormSwitchRename.resx b/_archived/varManager/FormSwitchRename.resx deleted file mode 100644 index 1af7de1..0000000 --- a/_archived/varManager/FormSwitchRename.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/_archived/varManager/FormUninstallVars.Designer.cs b/_archived/varManager/FormUninstallVars.Designer.cs deleted file mode 100644 index 57f4463..0000000 --- a/_archived/varManager/FormUninstallVars.Designer.cs +++ /dev/null @@ -1,617 +0,0 @@ -锘 -namespace varManager -{ - partial class FormUninstallVars - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing) - { - if (components != null) - { - components.Dispose(); - } - dbContext?.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.panel1 = new System.Windows.Forms.Panel(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.labelWarning = new System.Windows.Forms.Label(); - this.buttonOK = new System.Windows.Forms.Button(); - this.dataGridViewVars = new System.Windows.Forms.DataGridView(); - this.varNameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.metaDateColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.sizeColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.scenesDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.looksDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.clothingDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.hairstyleDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.pluginsDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.assetsDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.panel2 = new System.Windows.Forms.Panel(); - this.tableLayoutPanelPreview = new System.Windows.Forms.TableLayoutPanel(); - this.pictureBoxPreview = new System.Windows.Forms.PictureBox(); - this.panel3 = new System.Windows.Forms.Panel(); - this.labelPreviewVarName = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.buttonpreviewback = new System.Windows.Forms.Button(); - this.listViewPreviewPics = new System.Windows.Forms.ListView(); - this.imageListPreviewPics = new System.Windows.Forms.ImageList(this.components); - this.toolStripPreview = new System.Windows.Forms.ToolStrip(); - this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); - this.toolStripComboBoxPreviewType = new System.Windows.Forms.ToolStripComboBox(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripButtonPreviewFirst = new System.Windows.Forms.ToolStripButton(); - this.toolStripButtonPreviewPrev = new System.Windows.Forms.ToolStripButton(); - this.toolStripComboBoxPreviewPage = new System.Windows.Forms.ToolStripComboBox(); - this.toolStripLabelPreviewCountItem = new System.Windows.Forms.ToolStripLabel(); - this.toolStripButtonPreviewNext = new System.Windows.Forms.ToolStripButton(); - this.toolStripButtonPreviewLast = new System.Windows.Forms.ToolStripButton(); - this.dataGridView1 = new System.Windows.Forms.DataGridView(); - this.iDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.varNameDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.dependencyDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.dependenciesBindingSource = new System.Windows.Forms.BindingSource(this.components); - this.backgroundWorkerPreview = new System.ComponentModel.BackgroundWorker(); - this.tableLayoutPanel1.SuspendLayout(); - this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewVars)).BeginInit(); - this.panel2.SuspendLayout(); - this.tableLayoutPanelPreview.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).BeginInit(); - this.panel3.SuspendLayout(); - this.toolStripPreview.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.dependenciesBindingSource)).BeginInit(); - this.SuspendLayout(); - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 2); - this.tableLayoutPanel1.Controls.Add(this.dataGridViewVars, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 0); - this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 0, 1); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 3; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 57F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 23F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1185, 546); - this.tableLayoutPanel1.TabIndex = 0; - // - // panel1 - // - this.panel1.AutoScroll = true; - this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2); - this.panel1.Controls.Add(this.buttonCancel); - this.panel1.Controls.Add(this.labelWarning); - this.panel1.Controls.Add(this.buttonOK); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(2, 490); - this.panel1.Margin = new System.Windows.Forms.Padding(2); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(1181, 54); - this.panel1.TabIndex = 0; - // - // buttonCancel - // - this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(1080, 10); - this.buttonCancel.Margin = new System.Windows.Forms.Padding(2); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(74, 25); - this.buttonCancel.TabIndex = 2; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - // - // labelWarning - // - this.labelWarning.AutoSize = true; - this.labelWarning.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.labelWarning.ForeColor = System.Drawing.Color.Crimson; - this.labelWarning.Location = new System.Drawing.Point(24, 14); - this.labelWarning.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.labelWarning.Name = "labelWarning"; - this.labelWarning.Size = new System.Drawing.Size(439, 15); - this.labelWarning.TabIndex = 1; - this.labelWarning.Text = "Warning: The above VAR list will be uninstalled!"; - // - // buttonOK - // - this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.buttonOK.ForeColor = System.Drawing.Color.Crimson; - this.buttonOK.Location = new System.Drawing.Point(970, 10); - this.buttonOK.Margin = new System.Windows.Forms.Padding(2); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(74, 25); - this.buttonOK.TabIndex = 0; - this.buttonOK.Text = "Sure!"; - this.buttonOK.UseVisualStyleBackColor = true; - // - // dataGridViewVars - // - this.dataGridViewVars.AllowUserToAddRows = false; - this.dataGridViewVars.AllowUserToDeleteRows = false; - this.dataGridViewVars.AutoGenerateColumns = false; - this.dataGridViewVars.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewVars.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.varNameDataGridViewTextBoxColumn, - this.metaDateColumn, - this.sizeColumn, - this.scenesDataGridViewTextBoxColumn, - this.looksDataGridViewTextBoxColumn, - this.clothingDataGridViewTextBoxColumn, - this.hairstyleDataGridViewTextBoxColumn, - this.pluginsDataGridViewTextBoxColumn, - this.assetsDataGridViewTextBoxColumn}); - this.dataGridViewVars.DataMember = "varsView"; - this.dataGridViewVars.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewVars.Location = new System.Drawing.Point(2, 2); - this.dataGridViewVars.Margin = new System.Windows.Forms.Padding(2); - this.dataGridViewVars.Name = "dataGridViewVars"; - this.dataGridViewVars.ReadOnly = true; - this.dataGridViewVars.RowHeadersWidth = 40; - this.dataGridViewVars.RowTemplate.Height = 27; - this.dataGridViewVars.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewVars.Size = new System.Drawing.Size(588, 240); - this.dataGridViewVars.TabIndex = 1; - this.dataGridViewVars.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.dataGridViewVars_DataError); - this.dataGridViewVars.SelectionChanged += new System.EventHandler(this.dataGridViewVars_SelectionChanged); - // - // varNameDataGridViewTextBoxColumn - // - this.varNameDataGridViewTextBoxColumn.DataPropertyName = "varName"; - this.varNameDataGridViewTextBoxColumn.HeaderText = "varName"; - this.varNameDataGridViewTextBoxColumn.MinimumWidth = 6; - this.varNameDataGridViewTextBoxColumn.Name = "varNameDataGridViewTextBoxColumn"; - this.varNameDataGridViewTextBoxColumn.ReadOnly = true; - this.varNameDataGridViewTextBoxColumn.Width = 125; - // - // metaDateColumn - // - this.metaDateColumn.DataPropertyName = "metaDate"; - this.metaDateColumn.HeaderText = "metaDate"; - this.metaDateColumn.MinimumWidth = 6; - this.metaDateColumn.Name = "metaDateColumn"; - this.metaDateColumn.ReadOnly = true; - this.metaDateColumn.Width = 80; - // - // sizeColumn - // - this.sizeColumn.DataPropertyName = "size"; - dataGridViewCellStyle2.Format = "N2"; - dataGridViewCellStyle2.NullValue = null; - this.sizeColumn.DefaultCellStyle = dataGridViewCellStyle2; - this.sizeColumn.HeaderText = "fsize(MB)"; - this.sizeColumn.MinimumWidth = 6; - this.sizeColumn.Name = "sizeColumn"; - this.sizeColumn.ReadOnly = true; - this.sizeColumn.Width = 80; - // - // scenesDataGridViewTextBoxColumn - // - this.scenesDataGridViewTextBoxColumn.DataPropertyName = "scenes"; - this.scenesDataGridViewTextBoxColumn.HeaderText = "scenes"; - this.scenesDataGridViewTextBoxColumn.MinimumWidth = 6; - this.scenesDataGridViewTextBoxColumn.Name = "scenesDataGridViewTextBoxColumn"; - this.scenesDataGridViewTextBoxColumn.ReadOnly = true; - this.scenesDataGridViewTextBoxColumn.Width = 40; - // - // looksDataGridViewTextBoxColumn - // - this.looksDataGridViewTextBoxColumn.DataPropertyName = "looks"; - this.looksDataGridViewTextBoxColumn.HeaderText = "looks"; - this.looksDataGridViewTextBoxColumn.MinimumWidth = 6; - this.looksDataGridViewTextBoxColumn.Name = "looksDataGridViewTextBoxColumn"; - this.looksDataGridViewTextBoxColumn.ReadOnly = true; - this.looksDataGridViewTextBoxColumn.Width = 40; - // - // clothingDataGridViewTextBoxColumn - // - this.clothingDataGridViewTextBoxColumn.DataPropertyName = "clothing"; - this.clothingDataGridViewTextBoxColumn.HeaderText = "clothing"; - this.clothingDataGridViewTextBoxColumn.MinimumWidth = 6; - this.clothingDataGridViewTextBoxColumn.Name = "clothingDataGridViewTextBoxColumn"; - this.clothingDataGridViewTextBoxColumn.ReadOnly = true; - this.clothingDataGridViewTextBoxColumn.Width = 40; - // - // hairstyleDataGridViewTextBoxColumn - // - this.hairstyleDataGridViewTextBoxColumn.DataPropertyName = "hairstyle"; - this.hairstyleDataGridViewTextBoxColumn.HeaderText = "hairstyle"; - this.hairstyleDataGridViewTextBoxColumn.MinimumWidth = 6; - this.hairstyleDataGridViewTextBoxColumn.Name = "hairstyleDataGridViewTextBoxColumn"; - this.hairstyleDataGridViewTextBoxColumn.ReadOnly = true; - this.hairstyleDataGridViewTextBoxColumn.Width = 40; - // - // pluginsDataGridViewTextBoxColumn - // - this.pluginsDataGridViewTextBoxColumn.DataPropertyName = "plugins"; - this.pluginsDataGridViewTextBoxColumn.HeaderText = "plugins"; - this.pluginsDataGridViewTextBoxColumn.MinimumWidth = 6; - this.pluginsDataGridViewTextBoxColumn.Name = "pluginsDataGridViewTextBoxColumn"; - this.pluginsDataGridViewTextBoxColumn.ReadOnly = true; - this.pluginsDataGridViewTextBoxColumn.Width = 40; - // - // assetsDataGridViewTextBoxColumn - // - this.assetsDataGridViewTextBoxColumn.DataPropertyName = "assets"; - this.assetsDataGridViewTextBoxColumn.HeaderText = "assets"; - this.assetsDataGridViewTextBoxColumn.MinimumWidth = 6; - this.assetsDataGridViewTextBoxColumn.Name = "assetsDataGridViewTextBoxColumn"; - this.assetsDataGridViewTextBoxColumn.ReadOnly = true; - this.assetsDataGridViewTextBoxColumn.Width = 40; - // - // - // panel2 - // - this.panel2.Controls.Add(this.tableLayoutPanelPreview); - this.panel2.Controls.Add(this.listViewPreviewPics); - this.panel2.Controls.Add(this.toolStripPreview); - this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel2.Location = new System.Drawing.Point(594, 2); - this.panel2.Margin = new System.Windows.Forms.Padding(2); - this.panel2.Name = "panel2"; - this.tableLayoutPanel1.SetRowSpan(this.panel2, 2); - this.panel2.Size = new System.Drawing.Size(589, 484); - this.panel2.TabIndex = 2; - // - // tableLayoutPanelPreview - // - this.tableLayoutPanelPreview.ColumnCount = 1; - this.tableLayoutPanelPreview.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanelPreview.Controls.Add(this.pictureBoxPreview, 0, 0); - this.tableLayoutPanelPreview.Controls.Add(this.panel3, 0, 1); - this.tableLayoutPanelPreview.Location = new System.Drawing.Point(30, 184); - this.tableLayoutPanelPreview.Margin = new System.Windows.Forms.Padding(2); - this.tableLayoutPanelPreview.Name = "tableLayoutPanelPreview"; - this.tableLayoutPanelPreview.RowCount = 2; - this.tableLayoutPanelPreview.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanelPreview.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F)); - this.tableLayoutPanelPreview.Size = new System.Drawing.Size(336, 138); - this.tableLayoutPanelPreview.TabIndex = 5; - this.tableLayoutPanelPreview.Visible = false; - // - // pictureBoxPreview - // - this.pictureBoxPreview.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBoxPreview.Location = new System.Drawing.Point(2, 2); - this.pictureBoxPreview.Margin = new System.Windows.Forms.Padding(2); - this.pictureBoxPreview.Name = "pictureBoxPreview"; - this.pictureBoxPreview.Size = new System.Drawing.Size(332, 89); - this.pictureBoxPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.pictureBoxPreview.TabIndex = 1; - this.pictureBoxPreview.TabStop = false; - this.pictureBoxPreview.Click += new System.EventHandler(this.pictureBoxPreview_Click); - // - // panel3 - // - this.panel3.Controls.Add(this.labelPreviewVarName); - this.panel3.Controls.Add(this.label3); - this.panel3.Controls.Add(this.buttonpreviewback); - this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel3.Location = new System.Drawing.Point(2, 95); - this.panel3.Margin = new System.Windows.Forms.Padding(2); - this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(332, 41); - this.panel3.TabIndex = 0; - // - // labelPreviewVarName - // - this.labelPreviewVarName.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.labelPreviewVarName.AutoSize = true; - this.labelPreviewVarName.Location = new System.Drawing.Point(81, 11); - this.labelPreviewVarName.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.labelPreviewVarName.Name = "labelPreviewVarName"; - this.labelPreviewVarName.Size = new System.Drawing.Size(36, 17); - this.labelPreviewVarName.TabIndex = 2; - this.labelPreviewVarName.Text = "a.a.1"; - // - // label3 - // - this.label3.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(3, 11); - this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(69, 17); - this.label3.TabIndex = 1; - this.label3.Text = "VarName:"; - // - // buttonpreviewback - // - this.buttonpreviewback.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.buttonpreviewback.Location = new System.Drawing.Point(243, 11); - this.buttonpreviewback.Margin = new System.Windows.Forms.Padding(2); - this.buttonpreviewback.Name = "buttonpreviewback"; - this.buttonpreviewback.Size = new System.Drawing.Size(74, 25); - this.buttonpreviewback.TabIndex = 0; - this.buttonpreviewback.Text = "return"; - this.buttonpreviewback.UseVisualStyleBackColor = true; - this.buttonpreviewback.Click += new System.EventHandler(this.buttonpreviewback_Click); - // - // listViewPreviewPics - // - this.listViewPreviewPics.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewPreviewPics.HideSelection = false; - this.listViewPreviewPics.LargeImageList = this.imageListPreviewPics; - this.listViewPreviewPics.Location = new System.Drawing.Point(0, 31); - this.listViewPreviewPics.Margin = new System.Windows.Forms.Padding(2); - this.listViewPreviewPics.MultiSelect = false; - this.listViewPreviewPics.Name = "listViewPreviewPics"; - this.listViewPreviewPics.Size = new System.Drawing.Size(589, 453); - this.listViewPreviewPics.SmallImageList = this.imageListPreviewPics; - this.listViewPreviewPics.TabIndex = 4; - this.listViewPreviewPics.UseCompatibleStateImageBehavior = false; - this.listViewPreviewPics.Click += new System.EventHandler(this.listViewPreviewPics_Click); - // - // imageListPreviewPics - // - this.imageListPreviewPics.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; - this.imageListPreviewPics.ImageSize = new System.Drawing.Size(128, 128); - this.imageListPreviewPics.TransparentColor = System.Drawing.Color.Transparent; - // - // toolStripPreview - // - this.toolStripPreview.ImageScalingSize = new System.Drawing.Size(20, 20); - this.toolStripPreview.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripLabel1, - this.toolStripComboBoxPreviewType, - this.toolStripSeparator1, - this.toolStripButtonPreviewFirst, - this.toolStripButtonPreviewPrev, - this.toolStripComboBoxPreviewPage, - this.toolStripLabelPreviewCountItem, - this.toolStripButtonPreviewNext, - this.toolStripButtonPreviewLast}); - this.toolStripPreview.Location = new System.Drawing.Point(0, 0); - this.toolStripPreview.Name = "toolStripPreview"; - this.toolStripPreview.Size = new System.Drawing.Size(589, 31); - this.toolStripPreview.TabIndex = 3; - this.toolStripPreview.Text = "toolStrip1"; - // - // toolStripLabel1 - // - this.toolStripLabel1.Name = "toolStripLabel1"; - this.toolStripLabel1.Size = new System.Drawing.Size(106, 25); - this.toolStripLabel1.Text = "PreviewType:"; - // - // toolStripComboBoxPreviewType - // - this.toolStripComboBoxPreviewType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.toolStripComboBoxPreviewType.Items.AddRange(new object[] { - "_All", - "scenes", - "looks", - "clothing", - "hairstyle", - "assets"}); - this.toolStripComboBoxPreviewType.Name = "toolStripComboBoxPreviewType"; - this.toolStripComboBoxPreviewType.Size = new System.Drawing.Size(122, 28); - this.toolStripComboBoxPreviewType.SelectedIndexChanged += new System.EventHandler(this.toolStripComboBoxPreviewType_SelectedIndexChanged); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(6, 28); - // - // toolStripButtonPreviewFirst - // - this.toolStripButtonPreviewFirst.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButtonPreviewFirst.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonPreviewFirst.Name = "toolStripButtonPreviewFirst"; - this.toolStripButtonPreviewFirst.Size = new System.Drawing.Size(29, 25); - this.toolStripButtonPreviewFirst.Text = "|<"; - this.toolStripButtonPreviewFirst.Click += new System.EventHandler(this.toolStripButtonPreviewFirst_Click); - // - // toolStripButtonPreviewPrev - // - this.toolStripButtonPreviewPrev.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButtonPreviewPrev.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonPreviewPrev.Name = "toolStripButtonPreviewPrev"; - this.toolStripButtonPreviewPrev.Size = new System.Drawing.Size(29, 25); - this.toolStripButtonPreviewPrev.Text = "<"; - this.toolStripButtonPreviewPrev.Click += new System.EventHandler(this.toolStripButtonPreviewPrev_Click); - // - // toolStripComboBoxPreviewPage - // - this.toolStripComboBoxPreviewPage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.toolStripComboBoxPreviewPage.Name = "toolStripComboBoxPreviewPage"; - this.toolStripComboBoxPreviewPage.Size = new System.Drawing.Size(122, 28); - this.toolStripComboBoxPreviewPage.SelectedIndexChanged += new System.EventHandler(this.toolStripComboBoxPreviewPage_SelectedIndexChanged); - // - // toolStripLabelPreviewCountItem - // - this.toolStripLabelPreviewCountItem.Name = "toolStripLabelPreviewCountItem"; - this.toolStripLabelPreviewCountItem.Size = new System.Drawing.Size(34, 25); - this.toolStripLabelPreviewCountItem.Text = "/{0}"; - // - // toolStripButtonPreviewNext - // - this.toolStripButtonPreviewNext.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButtonPreviewNext.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonPreviewNext.Name = "toolStripButtonPreviewNext"; - this.toolStripButtonPreviewNext.Size = new System.Drawing.Size(29, 25); - this.toolStripButtonPreviewNext.Text = ">"; - this.toolStripButtonPreviewNext.Click += new System.EventHandler(this.toolStripButtonPreviewNext_Click); - // - // toolStripButtonPreviewLast - // - this.toolStripButtonPreviewLast.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButtonPreviewLast.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonPreviewLast.Name = "toolStripButtonPreviewLast"; - this.toolStripButtonPreviewLast.Size = new System.Drawing.Size(29, 25); - this.toolStripButtonPreviewLast.Text = ">|"; - this.toolStripButtonPreviewLast.Click += new System.EventHandler(this.toolStripButtonPreviewLast_Click); - // - // dataGridView1 - // - this.dataGridView1.AllowUserToAddRows = false; - this.dataGridView1.AllowUserToDeleteRows = false; - this.dataGridView1.AutoGenerateColumns = false; - this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.iDDataGridViewTextBoxColumn, - this.varNameDataGridViewTextBoxColumn1, - this.dependencyDataGridViewTextBoxColumn}); - this.dataGridView1.DataSource = this.dependenciesBindingSource; - this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridView1.Location = new System.Drawing.Point(2, 246); - this.dataGridView1.Margin = new System.Windows.Forms.Padding(2); - this.dataGridView1.MultiSelect = false; - this.dataGridView1.Name = "dataGridView1"; - this.dataGridView1.ReadOnly = true; - this.dataGridView1.RowHeadersWidth = 40; - this.dataGridView1.RowTemplate.Height = 27; - this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridView1.Size = new System.Drawing.Size(588, 240); - this.dataGridView1.TabIndex = 1; - // - // iDDataGridViewTextBoxColumn - // - this.iDDataGridViewTextBoxColumn.DataPropertyName = "ID"; - this.iDDataGridViewTextBoxColumn.HeaderText = "ID"; - this.iDDataGridViewTextBoxColumn.MinimumWidth = 6; - this.iDDataGridViewTextBoxColumn.Name = "iDDataGridViewTextBoxColumn"; - this.iDDataGridViewTextBoxColumn.ReadOnly = true; - this.iDDataGridViewTextBoxColumn.Visible = false; - this.iDDataGridViewTextBoxColumn.Width = 125; - // - // varNameDataGridViewTextBoxColumn1 - // - this.varNameDataGridViewTextBoxColumn1.DataPropertyName = "VarName"; - this.varNameDataGridViewTextBoxColumn1.HeaderText = "varName"; - this.varNameDataGridViewTextBoxColumn1.MinimumWidth = 6; - this.varNameDataGridViewTextBoxColumn1.Name = "varNameDataGridViewTextBoxColumn1"; - this.varNameDataGridViewTextBoxColumn1.ReadOnly = true; - this.varNameDataGridViewTextBoxColumn1.Width = 125; - // - // dependencyDataGridViewTextBoxColumn - // - this.dependencyDataGridViewTextBoxColumn.DataPropertyName = "DependencyName"; - this.dependencyDataGridViewTextBoxColumn.HeaderText = "dependency"; - this.dependencyDataGridViewTextBoxColumn.MinimumWidth = 6; - this.dependencyDataGridViewTextBoxColumn.Name = "dependencyDataGridViewTextBoxColumn"; - this.dependencyDataGridViewTextBoxColumn.ReadOnly = true; - this.dependencyDataGridViewTextBoxColumn.Width = 150; - // - // dependenciesBindingSource - // - this.dependenciesBindingSource.DataMember = "dependencies"; - // - // - // backgroundWorkerPreview - // - this.backgroundWorkerPreview.WorkerSupportsCancellation = true; - this.backgroundWorkerPreview.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorkerPreview_DoWork); - // - // FormUninstallVars - // - this.AcceptButton = this.buttonOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(1185, 546); - this.ControlBox = false; - this.Controls.Add(this.tableLayoutPanel1); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Margin = new System.Windows.Forms.Padding(2); - this.Name = "FormUninstallVars"; - this.Text = "Uninstall"; - this.WindowState = System.Windows.Forms.FormWindowState.Maximized; - this.Load += new System.EventHandler(this.FormUninstallVars_Load); - this.tableLayoutPanel1.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewVars)).EndInit(); - // DataSet EndInit removed - this.panel2.ResumeLayout(false); - this.panel2.PerformLayout(); - this.tableLayoutPanelPreview.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).EndInit(); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.toolStripPreview.ResumeLayout(false); - this.toolStripPreview.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.dependenciesBindingSource)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.DataGridView dataGridViewVars; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.Label labelWarning; - private System.Windows.Forms.Button buttonOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.ToolStrip toolStripPreview; - private System.Windows.Forms.ToolStripLabel toolStripLabel1; - private System.Windows.Forms.ToolStripComboBox toolStripComboBoxPreviewType; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ListView listViewPreviewPics; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanelPreview; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Label labelPreviewVarName; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button buttonpreviewback; - private System.Windows.Forms.PictureBox pictureBoxPreview; - private System.Windows.Forms.ImageList imageListPreviewPics; - private System.Windows.Forms.DataGridView dataGridView1; - private System.Windows.Forms.BindingSource dependenciesBindingSource; - private System.Windows.Forms.DataGridViewTextBoxColumn iDDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn varNameDataGridViewTextBoxColumn1; - private System.Windows.Forms.DataGridViewTextBoxColumn dependencyDataGridViewTextBoxColumn; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewFirst; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewPrev; - private System.Windows.Forms.ToolStripComboBox toolStripComboBoxPreviewPage; - private System.Windows.Forms.ToolStripLabel toolStripLabelPreviewCountItem; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewNext; - private System.Windows.Forms.ToolStripButton toolStripButtonPreviewLast; - private System.ComponentModel.BackgroundWorker backgroundWorkerPreview; - private System.Windows.Forms.DataGridViewTextBoxColumn varNameDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn metaDateColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn sizeColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn scenesDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn looksDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn clothingDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn hairstyleDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn pluginsDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn assetsDataGridViewTextBoxColumn; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormUninstallVars.cs b/_archived/varManager/FormUninstallVars.cs deleted file mode 100644 index c6d3c83..0000000 --- a/_archived/varManager/FormUninstallVars.cs +++ /dev/null @@ -1,297 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Threading; -using System.Windows.Forms; -using varManager.Properties; -using varManager.Data; -using varManager.Models; - -namespace varManager -{ - public partial class FormUninstallVars : Form - { - public string operationType; - public string previewpicsDirName; - public string deleVarsDirName; - private VarManagerContext dbContext; - public List VarsToUninstall { get; set; } = new List(); - - public FormUninstallVars() - { - InitializeComponent(); - dbContext = new VarManagerContext(); - } - - private void FormUninstallVars_Load(object sender, EventArgs e) - { - // Load data using EF Core instead of TableAdapter - switch (operationType) - { - case "delete": - this.Text = "Delete Vars"; - labelWarning.Text = $"Warning: The above VAR list will be Move to {deleVarsDirName} !"; - break; - } - - // Load vars to uninstall into the grid - if (VarsToUninstall != null && VarsToUninstall.Count > 0) - { - // Remove duplicates from the list first - var uniqueVars = VarsToUninstall.Distinct().ToList(); - - var varsData = uniqueVars.Select(varName => - dbContext.VarsView.FirstOrDefault(v => v.VarName == varName) - ).Where(v => v != null).ToList(); - - dataGridViewVars.DataSource = varsData; - } - - // Hide ID and VarName columns in dependencies grid to avoid confusion - if (dataGridView1.Columns.Contains("iDDataGridViewTextBoxColumn")) - { - dataGridView1.Columns["iDDataGridViewTextBoxColumn"].Visible = false; - } - if (dataGridView1.Columns.Contains("varNameDataGridViewTextBoxColumn1")) - { - dataGridView1.Columns["varNameDataGridViewTextBoxColumn1"].Visible = false; - } - - toolStripComboBoxPreviewType.SelectedIndex = 0; - } - - - private void dataGridViewVars_SelectionChanged(object sender, EventArgs e) - { - // Get selected var names for dependency filtering - List selectedVarNames = new List(); - foreach (DataGridViewRow row in dataGridViewVars.SelectedRows) - { - string varName = row.Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - selectedVarNames.Add(varName); - } - - // Update dependencies display using EF Core - var dependencies = dbContext.Dependencies.Where(d => selectedVarNames.Contains(d.VarName)).ToList(); - dependenciesBindingSource.DataSource = dependencies; - - UpdatePreviewPics(); - tableLayoutPanelPreview.Visible = false; - } - public struct Previewpic - { - public Previewpic(string varname, string pretype, string picpath) - { - Varname = varname; - Pretype = pretype; - Picpath = picpath; - } - public string Varname { get; } - public string Pretype { get; } - public string Picpath { get; } - } - - private List previewpics = new List(); - - private List previewpicsfilter = new List(); - private void UpdatePreviewPics() - { - previewpics.Clear(); - foreach (DataGridViewRow row in dataGridViewVars.SelectedRows) - { - string varName = row.Cells["varNameDataGridViewTextBoxColumn"].Value.ToString(); - string[] typenames = new string[5] { "scenes", "looks", "clothing", "hairstyle", "assets" }; - foreach (string typename in typenames) - { - string typepath = Path.Combine(Settings.Default.varspath, previewpicsDirName, typename, varName); - if (Directory.Exists(typepath)) - { - foreach (string jpgfile in Directory.GetFiles(typepath, "*.jpg", SearchOption.AllDirectories)) - { - previewpics.Add(new Previewpic(varName, typename, jpgfile)); - } - } - } - } - PreviewInitType(); - } - private static int maxpicxPerpage = 100; - private int previewPages = 0, previewCurPage = -1; - private System.Threading.Mutex mut = new Mutex(); - private void PreviewInitType() - { - /* - previewpicsfilter = previewpics; - string previewtype = "all"; - if (new string[5] { "scenes", "looks", "clothing", "hairstyle", "assets" }.Contains(toolStripComboBoxPreviewType.Text)) - previewtype = toolStripComboBoxPreviewType.Text; - - if (previewtype != "all") - previewpicsfilter = previewpics.Where(q => q.Pretype == previewtype).ToList(); - - imageListPreviewPics.Images.Clear(); - listViewPreviewPics.Items.Clear(); - for (int i = 0; i < previewpicsfilter.Count; i++) - { - imageListPreviewPics.Images.Add(Image.FromFile(previewpicsfilter[i].Picpath)); - var item = listViewPreviewPics.Items.Add(Path.GetFileNameWithoutExtension(previewpicsfilter[i].Picpath), imageListPreviewPics.Images.Count - 1); - item.SubItems.Add(previewpicsfilter[i].Varname); - item.SubItems.Add(previewpicsfilter[i].Picpath); - }*/ - mut.WaitOne(); - previewpicsfilter = previewpics; - string previewtype = "all"; - if (new string[5] { "scenes", "looks", "clothing", "hairstyle", "assets" }.Contains(toolStripComboBoxPreviewType.Text)) - previewtype = toolStripComboBoxPreviewType.Text; - if (previewtype != "all") - previewpicsfilter = previewpics.Where(q => q.Pretype == previewtype).ToList(); - mut.ReleaseMutex(); - toolStripComboBoxPreviewPage.SelectedIndexChanged -= new System.EventHandler(this.toolStripComboBoxPreviewPage_SelectedIndexChanged); toolStripComboBoxPreviewPage.Items.Clear(); - previewPages = (previewpicsfilter.Count + maxpicxPerpage - 1) / maxpicxPerpage; - toolStripLabelPreviewCountItem.Text = "/" + previewpicsfilter.Count.ToString(); - toolStripComboBoxPreviewPage.Items.Clear(); - if (previewPages >= 1) - { - for (int page = 0; page < previewPages; page++) - { - int min = page * maxpicxPerpage + 1; - int max = (page + 1) * maxpicxPerpage; - if (max > previewpicsfilter.Count) max = previewpicsfilter.Count; - - string strpage = min.ToString("000") + " - " + max.ToString("000"); - toolStripComboBoxPreviewPage.Items.Add(strpage); - } - toolStripComboBoxPreviewPage.SelectedIndex = 0; - //PreviewPage(); - } - else - { - imageListPreviewPics.Images.Clear(); - listViewPreviewPics.Items.Clear(); - } - toolStripComboBoxPreviewPage.SelectedIndexChanged += new System.EventHandler(this.toolStripComboBoxPreviewPage_SelectedIndexChanged); - if (previewPages >= 1) - PreviewPage(); - } - private void PreviewPage() - { - previewCurPage = toolStripComboBoxPreviewPage.SelectedIndex; - while (backgroundWorkerPreview.IsBusy) - { - backgroundWorkerPreview.CancelAsync(); - // Keep UI messages moving, so the form remains - // responsive during the asynchronous operation. - Application.DoEvents(); - } - backgroundWorkerPreview.RunWorkerAsync(); - } - - private void toolStripComboBoxPreviewType_SelectedIndexChanged(object sender, EventArgs e) - { - PreviewInitType(); - } - - private void listViewPreviewPics_Click(object sender, EventArgs e) - { - if (listViewPreviewPics.SelectedIndices.Count >= 1) - { - int index = listViewPreviewPics.SelectedIndices[0]; - var item = listViewPreviewPics.Items[index]; - if (item != null) - { - labelPreviewVarName.Text = item.SubItems[1].Text; - pictureBoxPreview.Image = Image.FromFile(item.SubItems[2].Text); - - tableLayoutPanelPreview.Dock = DockStyle.Fill; - tableLayoutPanelPreview.Visible = true; - } - } - } - - private void pictureBoxPreview_Click(object sender, EventArgs e) - { - tableLayoutPanelPreview.Visible = false; - } - - private void buttonpreviewback_Click(object sender, EventArgs e) - { - tableLayoutPanelPreview.Visible = false; - } - public delegate void InvokePreviewPics(string varname, string picpath); - public void PreviewPics(string varname, string picpath) - { - if (varname == "clear") - { - imageListPreviewPics.Images.Clear(); - listViewPreviewPics.Items.Clear(); - } - else - { - imageListPreviewPics.Images.Add(Image.FromFile(picpath)); - var item = listViewPreviewPics.Items.Add(Path.GetFileNameWithoutExtension(picpath), imageListPreviewPics.Images.Count - 1); - item.SubItems.Add(varname); - item.SubItems.Add(picpath); - } - } - private void backgroundWorkerPreview_DoWork(object sender, DoWorkEventArgs e) - { - InvokePreviewPics previewpics = new InvokePreviewPics(PreviewPics); - int startpic = maxpicxPerpage * previewCurPage; - listViewPreviewPics.BeginInvoke(previewpics, new Object[] { "clear", "" }); - for (int i = 0; i < maxpicxPerpage; i++) - { - Thread.Sleep(5); - if (backgroundWorkerPreview.CancellationPending) - { - //Tell the Backgroundworker you are canceling and exit the for-loop - e.Cancel = true; - return; - } - mut.WaitOne(); - if (previewpicsfilter.Count > startpic + i) - { - this.BeginInvoke(previewpics, new Object[] { previewpicsfilter[startpic + i].Varname, - previewpicsfilter[startpic + i].Picpath }); - - } - mut.ReleaseMutex(); - } - } - - private void toolStripComboBoxPreviewPage_SelectedIndexChanged(object sender, EventArgs e) - { - PreviewPage(); - } - - private void toolStripButtonPreviewFirst_Click(object sender, EventArgs e) - { - if (toolStripComboBoxPreviewPage.SelectedIndex > 0) toolStripComboBoxPreviewPage.SelectedIndex = 0; - } - - private void toolStripButtonPreviewPrev_Click(object sender, EventArgs e) - { - if (toolStripComboBoxPreviewPage.SelectedIndex > 0) toolStripComboBoxPreviewPage.SelectedIndex--; - } - - private void toolStripButtonPreviewNext_Click(object sender, EventArgs e) - { - if (toolStripComboBoxPreviewPage.SelectedIndex < toolStripComboBoxPreviewPage.Items.Count - 1) toolStripComboBoxPreviewPage.SelectedIndex++; - } - - private void dataGridViewVars_DataError(object sender, DataGridViewDataErrorEventArgs e) - { - ; - //e.Exception.Message - } - - private void toolStripButtonPreviewLast_Click(object sender, EventArgs e) - { - if (toolStripComboBoxPreviewPage.SelectedIndex < toolStripComboBoxPreviewPage.Items.Count - 1) toolStripComboBoxPreviewPage.SelectedIndex = toolStripComboBoxPreviewPage.Items.Count - 1; - - } - } -} diff --git a/_archived/varManager/FormUninstallVars.resx b/_archived/varManager/FormUninstallVars.resx deleted file mode 100644 index e03ff20..0000000 --- a/_archived/varManager/FormUninstallVars.resx +++ /dev/null @@ -1,150 +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 - - - True - - - True - - - 398, 17 - - - 220, 17 - - - 611, 17 - - - True - - - True - - - 611, 17 - - - 495, 59 - - - 125 - - \ No newline at end of file diff --git a/_archived/varManager/FormVarDetail.Designer.cs b/_archived/varManager/FormVarDetail.Designer.cs deleted file mode 100644 index 4501fde..0000000 --- a/_archived/varManager/FormVarDetail.Designer.cs +++ /dev/null @@ -1,294 +0,0 @@ -锘縩amespace varManager -{ - partial class FormVarDetail - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.label1 = new System.Windows.Forms.Label(); - this.textBoxVarName = new System.Windows.Forms.TextBox(); - this.buttonLocate = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.dataGridViewDependency = new System.Windows.Forms.DataGridView(); - this.ColumnAction1 = new System.Windows.Forms.DataGridViewButtonColumn(); - this.ColumnDependName = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.dataGridViewDependentVar = new System.Windows.Forms.DataGridView(); - this.ColumnAction2 = new System.Windows.Forms.DataGridViewButtonColumn(); - this.ColumnDependentVar = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.dataGridViewDependentSaved = new System.Windows.Forms.DataGridView(); - this.ColumnAction3 = new System.Windows.Forms.DataGridViewButtonColumn(); - this.ColumnDependentSaved = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.buttonFilter = new System.Windows.Forms.Button(); - this.buttonOK = new System.Windows.Forms.Button(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.groupBox1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependency)).BeginInit(); - this.groupBox2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependentVar)).BeginInit(); - this.groupBox3.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependentSaved)).BeginInit(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(13, 23); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(69, 17); - this.label1.TabIndex = 3; - this.label1.Text = "VarName:"; - // - // textBoxVarName - // - this.textBoxVarName.Location = new System.Drawing.Point(90, 17); - this.textBoxVarName.Name = "textBoxVarName"; - this.textBoxVarName.ReadOnly = true; - this.textBoxVarName.Size = new System.Drawing.Size(315, 25); - this.textBoxVarName.TabIndex = 4; - // - // buttonLocate - // - this.buttonLocate.Location = new System.Drawing.Point(434, 5); - this.buttonLocate.Name = "buttonLocate"; - this.buttonLocate.Size = new System.Drawing.Size(84, 52); - this.buttonLocate.TabIndex = 5; - this.buttonLocate.Text = "Locate"; - this.buttonLocate.UseVisualStyleBackColor = true; - this.buttonLocate.Click += new System.EventHandler(this.buttonLocate_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.dataGridViewDependency); - this.groupBox1.Location = new System.Drawing.Point(16, 63); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(321, 526); - this.groupBox1.TabIndex = 6; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Dependency Vars"; - // - // dataGridViewDependency - // - this.dataGridViewDependency.AllowUserToAddRows = false; - this.dataGridViewDependency.AllowUserToDeleteRows = false; - this.dataGridViewDependency.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewDependency.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.ColumnAction1, - this.ColumnDependName}); - this.dataGridViewDependency.Location = new System.Drawing.Point(6, 27); - this.dataGridViewDependency.Name = "dataGridViewDependency"; - this.dataGridViewDependency.ReadOnly = true; - this.dataGridViewDependency.RowHeadersWidth = 10; - this.dataGridViewDependency.RowTemplate.Height = 27; - this.dataGridViewDependency.Size = new System.Drawing.Size(309, 492); - this.dataGridViewDependency.TabIndex = 0; - this.toolTip1.SetToolTip(this.dataGridViewDependency, "Yellow:Missing but an another version exists\r\nRed:Missing"); - this.dataGridViewDependency.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewDependency_CellContentClick); - // - // ColumnAction1 - // - this.ColumnAction1.HeaderText = "Action"; - this.ColumnAction1.MinimumWidth = 6; - this.ColumnAction1.Name = "ColumnAction1"; - this.ColumnAction1.ReadOnly = true; - this.ColumnAction1.Text = "Locate"; - this.ColumnAction1.Width = 60; - // - // ColumnDependName - // - this.ColumnDependName.HeaderText = "DependName"; - this.ColumnDependName.MinimumWidth = 6; - this.ColumnDependName.Name = "ColumnDependName"; - this.ColumnDependName.ReadOnly = true; - this.ColumnDependName.Width = 230; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.dataGridViewDependentVar); - this.groupBox2.Location = new System.Drawing.Point(354, 63); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(321, 526); - this.groupBox2.TabIndex = 6; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Dependent Vars"; - // - // dataGridViewDependentVar - // - this.dataGridViewDependentVar.AllowUserToAddRows = false; - this.dataGridViewDependentVar.AllowUserToDeleteRows = false; - this.dataGridViewDependentVar.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewDependentVar.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.ColumnAction2, - this.ColumnDependentVar}); - this.dataGridViewDependentVar.Location = new System.Drawing.Point(6, 27); - this.dataGridViewDependentVar.Name = "dataGridViewDependentVar"; - this.dataGridViewDependentVar.ReadOnly = true; - this.dataGridViewDependentVar.RowHeadersWidth = 10; - this.dataGridViewDependentVar.RowTemplate.Height = 27; - this.dataGridViewDependentVar.Size = new System.Drawing.Size(309, 492); - this.dataGridViewDependentVar.TabIndex = 1; - this.toolTip1.SetToolTip(this.dataGridViewDependentVar, "Green:Installed"); - this.dataGridViewDependentVar.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewDependentVar_CellContentClick); - // - // ColumnAction2 - // - this.ColumnAction2.HeaderText = "Action"; - this.ColumnAction2.MinimumWidth = 6; - this.ColumnAction2.Name = "ColumnAction2"; - this.ColumnAction2.ReadOnly = true; - this.ColumnAction2.Text = "Locate"; - this.ColumnAction2.Width = 60; - // - // ColumnDependentVar - // - this.ColumnDependentVar.HeaderText = "DependentVar"; - this.ColumnDependentVar.MinimumWidth = 6; - this.ColumnDependentVar.Name = "ColumnDependentVar"; - this.ColumnDependentVar.ReadOnly = true; - this.ColumnDependentVar.Width = 230; - // - // groupBox3 - // - this.groupBox3.Controls.Add(this.dataGridViewDependentSaved); - this.groupBox3.Location = new System.Drawing.Point(693, 63); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(321, 526); - this.groupBox3.TabIndex = 6; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Dependent saved Json&&vap"; - // - // dataGridViewDependentSaved - // - this.dataGridViewDependentSaved.AllowUserToAddRows = false; - this.dataGridViewDependentSaved.AllowUserToDeleteRows = false; - this.dataGridViewDependentSaved.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewDependentSaved.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.ColumnAction3, - this.ColumnDependentSaved}); - this.dataGridViewDependentSaved.Location = new System.Drawing.Point(6, 27); - this.dataGridViewDependentSaved.Name = "dataGridViewDependentSaved"; - this.dataGridViewDependentSaved.ReadOnly = true; - this.dataGridViewDependentSaved.RowHeadersWidth = 10; - this.dataGridViewDependentSaved.RowTemplate.Height = 27; - this.dataGridViewDependentSaved.Size = new System.Drawing.Size(309, 492); - this.dataGridViewDependentSaved.TabIndex = 2; - this.toolTip1.SetToolTip(this.dataGridViewDependentSaved, "Json&vap under Save&Custom folder"); - this.dataGridViewDependentSaved.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewDependentSaved_CellContentClick); - // - // ColumnAction3 - // - this.ColumnAction3.HeaderText = "Action"; - this.ColumnAction3.MinimumWidth = 6; - this.ColumnAction3.Name = "ColumnAction3"; - this.ColumnAction3.ReadOnly = true; - this.ColumnAction3.Text = "Locate"; - this.ColumnAction3.Width = 60; - // - // ColumnDependentSaved - // - this.ColumnDependentSaved.HeaderText = "Dependent saved"; - this.ColumnDependentSaved.MinimumWidth = 6; - this.ColumnDependentSaved.Name = "ColumnDependentSaved"; - this.ColumnDependentSaved.ReadOnly = true; - this.ColumnDependentSaved.Width = 230; - // - // buttonFilter - // - this.buttonFilter.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonFilter.Location = new System.Drawing.Point(528, 5); - this.buttonFilter.Name = "buttonFilter"; - this.buttonFilter.Size = new System.Drawing.Size(84, 52); - this.buttonFilter.TabIndex = 5; - this.buttonFilter.Text = "FilterBy Creator"; - this.buttonFilter.UseVisualStyleBackColor = true; - this.buttonFilter.Click += new System.EventHandler(this.buttonFilter_Click); - // - // buttonOK - // - this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Location = new System.Drawing.Point(920, 603); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(94, 41); - this.buttonOK.TabIndex = 7; - this.buttonOK.Text = "OK"; - this.buttonOK.UseVisualStyleBackColor = true; - // - // FormVarDetail - // - this.AcceptButton = this.buttonOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1026, 657); - this.ControlBox = false; - this.Controls.Add(this.buttonOK); - this.Controls.Add(this.groupBox3); - this.Controls.Add(this.groupBox2); - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.buttonFilter); - this.Controls.Add(this.buttonLocate); - this.Controls.Add(this.textBoxVarName); - this.Controls.Add(this.label1); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.Name = "FormVarDetail"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "FormVarDetail"; - this.Load += new System.EventHandler(this.FormVarDetail_Load); - this.groupBox1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependency)).EndInit(); - this.groupBox2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependentVar)).EndInit(); - this.groupBox3.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDependentSaved)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox textBoxVarName; - private System.Windows.Forms.Button buttonLocate; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.GroupBox groupBox3; - private System.Windows.Forms.Button buttonFilter; - private System.Windows.Forms.DataGridView dataGridViewDependency; - private System.Windows.Forms.Button buttonOK; - private System.Windows.Forms.DataGridView dataGridViewDependentVar; - private System.Windows.Forms.DataGridView dataGridViewDependentSaved; - private System.Windows.Forms.DataGridViewButtonColumn ColumnAction1; - private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDependName; - private System.Windows.Forms.DataGridViewButtonColumn ColumnAction2; - private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDependentVar; - private System.Windows.Forms.DataGridViewButtonColumn ColumnAction3; - private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDependentSaved; - private System.Windows.Forms.ToolTip toolTip1; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormVarDetail.cs b/_archived/varManager/FormVarDetail.cs deleted file mode 100644 index daa968e..0000000 --- a/_archived/varManager/FormVarDetail.cs +++ /dev/null @@ -1,201 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.Threading; -using varManager.Backend; -using static SimpleLogger; -using varManager.Properties; - -namespace varManager -{ - public partial class FormVarDetail : Form - { - public string strVarName; - public Form1 form1; - public string strAction; - public Dictionary dependencies; - public List DependentVarList; - public List DependentJsonList; - private Size _layoutClientSize; - - private void LogBackendLine(string line) - { - if (form1 == null) - { - return; - } - LogLevel level = LogLevel.INFO; - if (line.StartsWith("error:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.ERROR; - } - form1.BeginInvoke(new Form1.InvokeAddLoglist(form1.UpdateAddLoglist), new object[] { line, level }); - } - - private BackendJobResult RunBackendJob(string kind, object? args) - { - return BackendSession.RunJob(kind, args, LogBackendLine, CancellationToken.None); - } - public FormVarDetail() - { - InitializeComponent(); - _layoutClientSize = ClientSize; - AutoScroll = true; - AutoScrollMinSize = _layoutClientSize; - } - - private void FormVarDetail_Load(object sender, EventArgs e) - { - textBoxVarName.Text = strVarName; - - foreach (var dep in dependencies) - { - if (dep.Value == "missing") - dataGridViewDependency.Rows.Add("search", dep.Key); - else - dataGridViewDependency.Rows.Add("locate", dep.Key); - } - foreach (DataGridViewRow deprow in dataGridViewDependency.Rows) - { - - string dependName = (string)deprow.Cells["ColumnDependName"].Value; - string dependVar = dependencies[dependName]; - if (dependVar == "missing") - { - deprow.DefaultCellStyle.BackColor = Color.Red; - } - else if (!dependName.ToLower().EndsWith("latest")) - { - if (dependName.ToLower() != dependVar.ToLower()) - deprow.DefaultCellStyle.BackColor = Color.Yellow; - } - - } - foreach (string dependentvar in DependentVarList) - { - dataGridViewDependentVar.Rows.Add("locate", dependentvar); - } - foreach (DataGridViewRow deprow in dataGridViewDependentVar.Rows) - { - - string dependentVar = (string)deprow.Cells["ColumnDependentVar"].Value; - - if (form1.IsVarInstalled(dependentVar)) - { - deprow.DefaultCellStyle.BackColor = Color.Green; - } - - } - foreach (string dependentsaved in DependentJsonList) - { - dataGridViewDependentSaved.Rows.Add("locate", dependentsaved); - } - - FitToWorkingArea(); - } - - private void FitToWorkingArea() - { - var workingArea = Screen.FromControl(this).WorkingArea; - var nonClientSize = new Size(Width - ClientSize.Width, Height - ClientSize.Height); - var maxClientWidth = workingArea.Width - nonClientSize.Width; - var maxClientHeight = workingArea.Height - nonClientSize.Height; - var targetClientWidth = Math.Min(_layoutClientSize.Width, maxClientWidth); - var targetClientHeight = Math.Min(_layoutClientSize.Height, maxClientHeight); - if (targetClientWidth < _layoutClientSize.Width || targetClientHeight < _layoutClientSize.Height) - { - ClientSize = new Size( - Math.Max(200, targetClientWidth), - Math.Max(200, targetClientHeight)); - } - - var bounds = Bounds; - var x = Math.Max(workingArea.Left, Math.Min(bounds.Left, workingArea.Right - bounds.Width)); - var y = Math.Max(workingArea.Top, Math.Min(bounds.Top, workingArea.Bottom - bounds.Height)); - Location = new Point(x, y); - } - - private void buttonLocate_Click(object sender, EventArgs e) - { - try - { - RunBackendJob("vars_locate", new { var_name = strVarName }); - } - catch (Exception ex) - { - MessageBox.Show($"Locate failed: {ex.Message}"); - } - } - - private void buttonFilter_Click(object sender, EventArgs e) - { - strAction = "filter"; - DialogResult = DialogResult.OK; - this.Close(); - } - - private void dataGridViewDependency_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (dataGridViewDependency.Columns[e.ColumnIndex].Name == "ColumnAction1" && e.RowIndex >= 0) - { - string dependName = dataGridViewDependency.Rows[e.RowIndex].Cells["ColumnDependName"].Value.ToString(); - string dependVar = dependencies[dependName]; - if (dependVar == "missing") - { - string varname = dependName.Replace(".latest", ".1"); - try - { - RunBackendJob("open_url", new { url = "https://www.google.com/search?q=" + varname + " var" }); - } - catch (Exception ex) - { - MessageBox.Show($"Open url failed: {ex.Message}"); - } - } - else - { - form1.SelectVarInList(dependVar); - form1.Activate(); - } - } - } - - private void dataGridViewDependentVar_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (dataGridViewDependentVar.Columns[e.ColumnIndex].Name == "ColumnAction2" && e.RowIndex >= 0) - { - string varName = dataGridViewDependentVar.Rows[e.RowIndex].Cells["ColumnDependentVar"].Value.ToString(); - - form1.SelectVarInList(varName); - form1.Activate(); - } - } - - private void dataGridViewDependentSaved_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (dataGridViewDependentSaved.Columns[e.ColumnIndex].Name == "ColumnAction3" && e.RowIndex >= 0) - { - string saved = dataGridViewDependentSaved.Rows[e.RowIndex].Cells["ColumnDependentSaved"].Value.ToString(); - if(saved.StartsWith("\\")) - saved = saved.Substring(1); - - try - { - RunBackendJob("vars_locate", new { path = saved.Replace('/', '\\') }); - } - catch (Exception ex) - { - MessageBox.Show($"Locate failed: {ex.Message}"); - } - - } - } - } -} diff --git a/_archived/varManager/FormVarDetail.resx b/_archived/varManager/FormVarDetail.resx deleted file mode 100644 index 86e5b60..0000000 --- a/_archived/varManager/FormVarDetail.resx +++ /dev/null @@ -1,141 +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 - - - True - - - True - - - 17, 17 - - - True - - - True - - - True - - - True - - \ No newline at end of file diff --git a/_archived/varManager/FormVarsMove.Designer.cs b/_archived/varManager/FormVarsMove.Designer.cs deleted file mode 100644 index c234037..0000000 --- a/_archived/varManager/FormVarsMove.Designer.cs +++ /dev/null @@ -1,185 +0,0 @@ -锘 -namespace varManager -{ - partial class FormVarsMove - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.label1 = new System.Windows.Forms.Label(); - this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); - this.labelTided = new System.Windows.Forms.Label(); - this.textBoxMoveto = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.panel1 = new System.Windows.Forms.Panel(); - this.buttonCancle = new System.Windows.Forms.Button(); - this.buttonOK = new System.Windows.Forms.Button(); - this.listView1 = new System.Windows.Forms.ListView(); - this.flowLayoutPanel1.SuspendLayout(); - this.panel1.SuspendLayout(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::varManager.Properties.Settings.Default, "vampath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.label1.Font = new System.Drawing.Font("Calibri", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.Location = new System.Drawing.Point(3, 0); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(100, 18); - this.label1.TabIndex = 3; - this.label1.Text = global::varManager.Properties.Settings.Default.vampath; - // - // flowLayoutPanel1 - // - this.flowLayoutPanel1.AutoSize = true; - this.flowLayoutPanel1.Controls.Add(this.label1); - this.flowLayoutPanel1.Controls.Add(this.labelTided); - this.flowLayoutPanel1.Controls.Add(this.textBoxMoveto); - this.flowLayoutPanel1.Controls.Add(this.label3); - this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 397); - this.flowLayoutPanel1.Name = "flowLayoutPanel1"; - this.flowLayoutPanel1.Size = new System.Drawing.Size(824, 32); - this.flowLayoutPanel1.TabIndex = 1; - // - // labelTided - // - this.labelTided.AutoSize = true; - this.labelTided.Font = new System.Drawing.Font("Calibri", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelTided.Location = new System.Drawing.Point(109, 0); - this.labelTided.Name = "labelTided"; - this.labelTided.Size = new System.Drawing.Size(209, 18); - this.labelTided.TabIndex = 2; - this.labelTided.Text = "\\AddonPackages\\___VarsLink__\\"; - // - // textBoxMoveto - // - this.textBoxMoveto.BackColor = System.Drawing.Color.Yellow; - this.textBoxMoveto.Font = new System.Drawing.Font("Calibri", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.textBoxMoveto.Location = new System.Drawing.Point(324, 3); - this.textBoxMoveto.Name = "textBoxMoveto"; - this.textBoxMoveto.Size = new System.Drawing.Size(240, 26); - this.textBoxMoveto.TabIndex = 0; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Font = new System.Drawing.Font("Calibri", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label3.Location = new System.Drawing.Point(570, 0); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(14, 18); - this.label3.TabIndex = 1; - this.label3.Text = "\\"; - // - // panel1 - // - this.panel1.Controls.Add(this.buttonCancle); - this.panel1.Controls.Add(this.buttonOK); - this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.panel1.Location = new System.Drawing.Point(0, 429); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(824, 39); - this.panel1.TabIndex = 2; - // - // buttonCancle - // - this.buttonCancle.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancle.Location = new System.Drawing.Point(705, 8); - this.buttonCancle.Name = "buttonCancle"; - this.buttonCancle.Size = new System.Drawing.Size(75, 25); - this.buttonCancle.TabIndex = 1; - this.buttonCancle.Text = "Cancle"; - this.buttonCancle.UseVisualStyleBackColor = true; - // - // buttonOK - // - this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Location = new System.Drawing.Point(582, 8); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(75, 25); - this.buttonOK.TabIndex = 0; - this.buttonOK.Text = "OK"; - this.buttonOK.UseVisualStyleBackColor = true; - this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); - // - // listView1 - // - this.listView1.BackColor = System.Drawing.SystemColors.ControlDark; - this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; - this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.listView1.HideSelection = false; - this.listView1.Location = new System.Drawing.Point(0, 0); - this.listView1.MultiSelect = false; - this.listView1.Name = "listView1"; - this.listView1.Size = new System.Drawing.Size(824, 397); - this.listView1.TabIndex = 3; - this.listView1.TabStop = false; - this.listView1.UseCompatibleStateImageBehavior = false; - this.listView1.View = System.Windows.Forms.View.List; - // - // FormVarsMove - // - this.AcceptButton = this.buttonOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancle; - this.ClientSize = new System.Drawing.Size(824, 468); - this.ControlBox = false; - this.Controls.Add(this.listView1); - this.Controls.Add(this.flowLayoutPanel1); - this.Controls.Add(this.panel1); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "FormVarsMove"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Move selected Varlinks To ..."; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormVarsMove_FormClosing); - this.Load += new System.EventHandler(this.FormVarsMove_Load); - this.flowLayoutPanel1.ResumeLayout(false); - this.flowLayoutPanel1.PerformLayout(); - this.panel1.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; - private System.Windows.Forms.Label labelTided; - private System.Windows.Forms.TextBox textBoxMoveto; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button buttonCancle; - private System.Windows.Forms.Button buttonOK; - private System.Windows.Forms.ListView listView1; - } -} \ No newline at end of file diff --git a/_archived/varManager/FormVarsMove.cs b/_archived/varManager/FormVarsMove.cs deleted file mode 100644 index 3475816..0000000 --- a/_archived/varManager/FormVarsMove.cs +++ /dev/null @@ -1,44 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace varManager -{ - - public partial class FormVarsMove : Form - { - private string varlinkDirName; - private string movetoDirName; - private List varsToMove; - public FormVarsMove() - { - InitializeComponent(); - } - - public string VarlinkDirName { get => varlinkDirName; set => varlinkDirName = value; } - public string MovetoDirName { get => movetoDirName; set => movetoDirName = value; } - public List VarsToMove { get => varsToMove; set => varsToMove = value; } - - private void FormVarsMove_Load(object sender, EventArgs e) - { - labelTided.Text = "\\AddonPackages\\" + varlinkDirName + "\\"; - foreach (string var in varsToMove) - listView1.Items.Add(var); - } - - private void buttonOK_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(textBoxMoveto.Text.Trim())) - this.DialogResult = DialogResult.None; - else - movetoDirName = textBoxMoveto.Text; - - } - - private void FormVarsMove_FormClosing(object sender, FormClosingEventArgs e) - { - if (this.DialogResult == DialogResult.None) - e.Cancel = true; - } - } -} diff --git a/_archived/varManager/FormVarsMove.resx b/_archived/varManager/FormVarsMove.resx deleted file mode 100644 index 1af7de1..0000000 --- a/_archived/varManager/FormVarsMove.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/_archived/varManager/HubItem.Designer.cs b/_archived/varManager/HubItem.Designer.cs deleted file mode 100644 index 975b0e9..0000000 --- a/_archived/varManager/HubItem.Designer.cs +++ /dev/null @@ -1,311 +0,0 @@ -锘縩amespace varManager -{ - partial class HubItem - { - /// - /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 娓呯悊鎵鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆 - /// - /// 濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓 true锛涘惁鍒欎负 false銆 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 缁勪欢璁捐鍣ㄧ敓鎴愮殑浠g爜 - - /// - /// 璁捐鍣ㄦ敮鎸佹墍闇鐨勬柟娉 - 涓嶈淇敼 - /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广 - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.buttonType = new System.Windows.Forms.Button(); - this.labelTitle = new System.Windows.Forms.Label(); - this.buttonUser = new System.Windows.Forms.Button(); - this.labelVersion = new System.Windows.Forms.Label(); - this.labelTagLine = new System.Windows.Forms.Label(); - this.labelRatingCount = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.labelDownloads = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.labelLastUpdated = new System.Windows.Forms.Label(); - this.picRating5 = new System.Windows.Forms.PictureBox(); - this.picRating4 = new System.Windows.Forms.PictureBox(); - this.picRating3 = new System.Windows.Forms.PictureBox(); - this.picRating2 = new System.Windows.Forms.PictureBox(); - this.picRating1 = new System.Windows.Forms.PictureBox(); - this.pictureBoxUser = new System.Windows.Forms.PictureBox(); - this.pictureBoxImage = new System.Windows.Forms.PictureBox(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.buttonInRepository = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.picRating5)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating4)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating3)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating2)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxUser)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxImage)).BeginInit(); - this.SuspendLayout(); - // - // buttonType - // - this.buttonType.Location = new System.Drawing.Point(0, 0); - this.buttonType.Name = "buttonType"; - this.buttonType.Size = new System.Drawing.Size(116, 26); - this.buttonType.TabIndex = 1; - this.buttonType.Text = "Free Scene"; - this.buttonType.UseVisualStyleBackColor = true; - this.buttonType.Click += new System.EventHandler(this.buttonType_Click); - // - // labelTitle - // - this.labelTitle.Font = new System.Drawing.Font("Cambria", 10.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelTitle.ForeColor = System.Drawing.SystemColors.MenuHighlight; - this.labelTitle.Location = new System.Drawing.Point(122, 4); - this.labelTitle.Name = "labelTitle"; - this.labelTitle.Size = new System.Drawing.Size(258, 21); - this.labelTitle.TabIndex = 2; - this.labelTitle.Text = "Title"; - // - // buttonUser - // - this.buttonUser.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.buttonUser.AutoSize = true; - this.buttonUser.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.buttonUser.Location = new System.Drawing.Point(121, 178); - this.buttonUser.Name = "buttonUser"; - this.buttonUser.Size = new System.Drawing.Size(53, 24); - this.buttonUser.TabIndex = 1; - this.buttonUser.Text = "Feelfar"; - this.buttonUser.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.buttonUser.UseVisualStyleBackColor = true; - this.buttonUser.Click += new System.EventHandler(this.buttonUser_Click); - // - // labelVersion - // - this.labelVersion.ForeColor = System.Drawing.SystemColors.HighlightText; - this.labelVersion.Location = new System.Drawing.Point(180, 28); - this.labelVersion.Name = "labelVersion"; - this.labelVersion.Size = new System.Drawing.Size(181, 14); - this.labelVersion.TabIndex = 3; - this.labelVersion.Text = "Version"; - // - // labelTagLine - // - this.labelTagLine.ForeColor = System.Drawing.SystemColors.HighlightText; - this.labelTagLine.Location = new System.Drawing.Point(180, 51); - this.labelTagLine.Name = "labelTagLine"; - this.labelTagLine.Size = new System.Drawing.Size(181, 14); - this.labelTagLine.TabIndex = 3; - this.labelTagLine.Text = "Tag_line"; - // - // labelRatingCount - // - this.labelRatingCount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.labelRatingCount.ForeColor = System.Drawing.SystemColors.HighlightText; - this.labelRatingCount.Location = new System.Drawing.Point(284, 76); - this.labelRatingCount.Name = "labelRatingCount"; - this.labelRatingCount.Size = new System.Drawing.Size(89, 17); - this.labelRatingCount.TabIndex = 3; - this.labelRatingCount.Text = "999 Ratings"; - this.labelRatingCount.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.ForeColor = System.Drawing.SystemColors.HighlightText; - this.label1.Location = new System.Drawing.Point(180, 103); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(70, 14); - this.label1.TabIndex = 3; - this.label1.Text = "DownLoads:"; - // - // labelDownloads - // - this.labelDownloads.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.labelDownloads.ForeColor = System.Drawing.SystemColors.HighlightText; - this.labelDownloads.Location = new System.Drawing.Point(285, 102); - this.labelDownloads.Name = "labelDownloads"; - this.labelDownloads.Size = new System.Drawing.Size(88, 17); - this.labelDownloads.TabIndex = 3; - this.labelDownloads.Text = "999999"; - this.labelDownloads.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.ForeColor = System.Drawing.SystemColors.HighlightText; - this.label3.Location = new System.Drawing.Point(180, 126); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(76, 14); - this.label3.TabIndex = 3; - this.label3.Text = "LastUpdated:"; - // - // labelLastUpdated - // - this.labelLastUpdated.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.labelLastUpdated.ForeColor = System.Drawing.SystemColors.HighlightText; - this.labelLastUpdated.Location = new System.Drawing.Point(285, 123); - this.labelLastUpdated.Name = "labelLastUpdated"; - this.labelLastUpdated.Size = new System.Drawing.Size(88, 17); - this.labelLastUpdated.TabIndex = 3; - this.labelLastUpdated.Text = "Jul 14,2021"; - this.labelLastUpdated.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // picRating5 - // - this.picRating5.Image = global::varManager.Properties.Resources.starEmpty; - this.picRating5.Location = new System.Drawing.Point(270, 74); - this.picRating5.Name = "picRating5"; - this.picRating5.Size = new System.Drawing.Size(20, 20); - this.picRating5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.picRating5.TabIndex = 8; - this.picRating5.TabStop = false; - // - // picRating4 - // - this.picRating4.Image = global::varManager.Properties.Resources.starOneQuarter; - this.picRating4.Location = new System.Drawing.Point(248, 74); - this.picRating4.Name = "picRating4"; - this.picRating4.Size = new System.Drawing.Size(20, 20); - this.picRating4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.picRating4.TabIndex = 8; - this.picRating4.TabStop = false; - // - // picRating3 - // - this.picRating3.Image = global::varManager.Properties.Resources.starHalf; - this.picRating3.Location = new System.Drawing.Point(226, 74); - this.picRating3.Name = "picRating3"; - this.picRating3.Size = new System.Drawing.Size(20, 20); - this.picRating3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.picRating3.TabIndex = 8; - this.picRating3.TabStop = false; - // - // picRating2 - // - this.picRating2.Image = global::varManager.Properties.Resources.starTriQuarter; - this.picRating2.Location = new System.Drawing.Point(205, 74); - this.picRating2.Name = "picRating2"; - this.picRating2.Size = new System.Drawing.Size(20, 20); - this.picRating2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.picRating2.TabIndex = 8; - this.picRating2.TabStop = false; - // - // picRating1 - // - this.picRating1.Image = global::varManager.Properties.Resources.starFull; - this.picRating1.Location = new System.Drawing.Point(183, 74); - this.picRating1.Name = "picRating1"; - this.picRating1.Size = new System.Drawing.Size(20, 20); - this.picRating1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.picRating1.TabIndex = 8; - this.picRating1.TabStop = false; - // - // pictureBoxUser - // - this.pictureBoxUser.Location = new System.Drawing.Point(173, 145); - this.pictureBoxUser.Name = "pictureBoxUser"; - this.pictureBoxUser.Size = new System.Drawing.Size(55, 56); - this.pictureBoxUser.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBoxUser.TabIndex = 7; - this.pictureBoxUser.TabStop = false; - this.pictureBoxUser.Click += new System.EventHandler(this.pictureBoxUser_Click); - // - // pictureBoxImage - // - this.pictureBoxImage.Location = new System.Drawing.Point(0, 28); - this.pictureBoxImage.Name = "pictureBoxImage"; - this.pictureBoxImage.Size = new System.Drawing.Size(174, 173); - this.pictureBoxImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBoxImage.TabIndex = 0; - this.pictureBoxImage.TabStop = false; - this.toolTip1.SetToolTip(this.pictureBoxImage, "Click to view details with browser"); - this.pictureBoxImage.Click += new System.EventHandler(this.pictureBoxImage_Click); - // - // buttonInRepository - // - this.buttonInRepository.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonInRepository.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.buttonInRepository.BackColor = System.Drawing.Color.MediumOrchid; - this.buttonInRepository.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonInRepository.Location = new System.Drawing.Point(226, 177); - this.buttonInRepository.Name = "buttonInRepository"; - this.buttonInRepository.Size = new System.Drawing.Size(147, 26); - this.buttonInRepository.TabIndex = 1; - this.buttonInRepository.Text = "In Repository"; - this.buttonInRepository.UseVisualStyleBackColor = false; - this.buttonInRepository.Click += new System.EventHandler(this.buttonInRepository_Click); - // - // HubItem - // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.Controls.Add(this.picRating5); - this.Controls.Add(this.picRating4); - this.Controls.Add(this.picRating3); - this.Controls.Add(this.picRating2); - this.Controls.Add(this.picRating1); - this.Controls.Add(this.pictureBoxUser); - this.Controls.Add(this.labelTagLine); - this.Controls.Add(this.labelRatingCount); - this.Controls.Add(this.labelLastUpdated); - this.Controls.Add(this.labelDownloads); - this.Controls.Add(this.label3); - this.Controls.Add(this.label1); - this.Controls.Add(this.labelVersion); - this.Controls.Add(this.labelTitle); - this.Controls.Add(this.buttonInRepository); - this.Controls.Add(this.buttonUser); - this.Controls.Add(this.buttonType); - this.Controls.Add(this.pictureBoxImage); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Name = "HubItem"; - this.Size = new System.Drawing.Size(373, 202); - this.Load += new System.EventHandler(this.HubItem_Load); - ((System.ComponentModel.ISupportInitialize)(this.picRating5)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating4)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating3)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.picRating1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxUser)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxImage)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.PictureBox pictureBoxImage; - private System.Windows.Forms.Button buttonType; - private System.Windows.Forms.Label labelTitle; - private System.Windows.Forms.Button buttonUser; - private System.Windows.Forms.Label labelVersion; - private System.Windows.Forms.Label labelTagLine; - private System.Windows.Forms.Label labelRatingCount; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label labelDownloads; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label labelLastUpdated; - private System.Windows.Forms.PictureBox pictureBoxUser; - private System.Windows.Forms.PictureBox picRating1; - private System.Windows.Forms.PictureBox picRating2; - private System.Windows.Forms.PictureBox picRating3; - private System.Windows.Forms.PictureBox picRating4; - private System.Windows.Forms.PictureBox picRating5; - private System.Windows.Forms.ToolTip toolTip1; - private System.Windows.Forms.Button buttonInRepository; - } -} diff --git a/_archived/varManager/HubItem.cs b/_archived/varManager/HubItem.cs deleted file mode 100644 index 75055e3..0000000 --- a/_archived/varManager/HubItem.cs +++ /dev/null @@ -1,420 +0,0 @@ -锘縰sing SimpleJSON; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Globalization; -using System.Linq; -using System.Net.Http; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.Text.Json; -using System.Text.Json.Serialization; -using System.Threading; -using varManager.Backend; - -namespace varManager -{ - - public partial class HubItem : UserControl - { - private JSONClass resource; - private string paytype, category, title, version, tagLine, imageUrl, creatorName, creatorIcon, resource_id,download_url,packageName; - private double ratingAvg; - private int ratingCount,downloads; - private DateTime lastUpdated; - private string inRepository = ""; - - public string InRepository { get => inRepository; set => inRepository = value; } - public string PackageName { get => packageName; set => packageName = value; } - public Action? LogSink { get; set; } - - private void LogBackendLine(string line) - { - LogSink?.Invoke(line); - } - - private void LogDebug(string message) - { - LogBackendLine($"debug: {message}"); - } - - private T? DeserializeResult(BackendJobResult result) - { - if (!result.Result.HasValue) - { - return default; - } - return JsonSerializer.Deserialize(result.Result.Value.GetRawText()); - } - - private int ParseInt(JSONClass json, string key, int defaultValue = 0) - { - string raw = json[key].Value; - if (string.IsNullOrWhiteSpace(raw) || raw.Equals("null", StringComparison.OrdinalIgnoreCase)) - { - LogDebug($"HubItem parse int empty key={key} resource_id='{resource_id}' title='{title}'"); - return defaultValue; - } - if (int.TryParse(raw, NumberStyles.Integer, CultureInfo.InvariantCulture, out int value)) - { - return value; - } - LogDebug($"HubItem parse int failed key={key} value='{raw}' resource_id='{resource_id}' title='{title}'"); - return defaultValue; - } - - private long ParseLong(JSONClass json, string key, long defaultValue = 0) - { - string raw = json[key].Value; - if (string.IsNullOrWhiteSpace(raw) || raw.Equals("null", StringComparison.OrdinalIgnoreCase)) - { - LogDebug($"HubItem parse long empty key={key} resource_id='{resource_id}' title='{title}'"); - return defaultValue; - } - if (long.TryParse(raw, NumberStyles.Integer, CultureInfo.InvariantCulture, out long value)) - { - return value; - } - LogDebug($"HubItem parse long failed key={key} value='{raw}' resource_id='{resource_id}' title='{title}'"); - return defaultValue; - } - - private double ParseDouble(JSONClass json, string key, double defaultValue = 0) - { - string raw = json[key].Value; - if (string.IsNullOrWhiteSpace(raw) || raw.Equals("null", StringComparison.OrdinalIgnoreCase)) - { - LogDebug($"HubItem parse double empty key={key} resource_id='{resource_id}' title='{title}'"); - return defaultValue; - } - if (double.TryParse(raw, NumberStyles.Float, CultureInfo.InvariantCulture, out double value)) - { - return value; - } - LogDebug($"HubItem parse double failed key={key} value='{raw}' resource_id='{resource_id}' title='{title}'"); - return defaultValue; - } - - private sealed class HubDownloadList - { - [JsonPropertyName("download_urls")] - public Dictionary DownloadUrls { get; set; } = new Dictionary(); - - [JsonPropertyName("download_urls_no_version")] - public Dictionary DownloadUrlsNoVersion { get; set; } = new Dictionary(); - } - - public HubItem() - { - InitializeComponent(); - } - - private void HubItem_Load(object sender, EventArgs e) - { - RefreshItem(); - } - private bool GetResourceDetail() - { - try - { - var result = BackendSession.RunJob("hub_resource_detail", new { resource_id = resource_id }, LogBackendLine, CancellationToken.None); - if (!result.Succeeded) - { - LogBackendLine($"error: hub_resource_detail job failed status={result.Job.Status} error={result.Job.Error ?? "unknown"}"); - } - var payload = DeserializeResult(result); - if (payload == null) - { - LogDebug($"hub_resource_detail result empty resource_id='{resource_id}'"); - return false; - } - LogDebug($"hub_resource_detail resource_id='{resource_id}' urls={payload.DownloadUrls.Count} urls_no_version={payload.DownloadUrlsNoVersion.Count}"); - Dictionary varDownloadUrl = new Dictionary(); - foreach (var kvp in payload.DownloadUrls) - { - if (!string.IsNullOrEmpty(kvp.Value)) - { - varDownloadUrl[kvp.Key] = kvp.Value; - } - } - foreach (var kvp in payload.DownloadUrlsNoVersion) - { - if (!string.IsNullOrEmpty(kvp.Value) && !varDownloadUrl.ContainsKey(kvp.Key)) - { - varDownloadUrl[kvp.Key] = kvp.Value; - } - } - RaiseGenLinkListFilterEvent(varDownloadUrl); - return true; - } - catch (Exception ex) - { - LogBackendLine($"error: GetResourceDetail failed: {ex.Message}"); - return false; - } - } - private static async Task GetResourceDetail(string resourceid) - { - string url = "https://hub.virtamate.com/citizenx/api.php"; - - JSONClass jns = new JSONClass(); - jns.Add("source", "VaM"); - jns.Add("action", "getResourceDetail"); - jns.Add("latest_image", "Y"); - jns.Add("resource_id", resourceid); - - var data = new StringContent(jns.ToString(), Encoding.UTF8, "application/json"); - return await GetResponse(url, data); - } - private static async Task GetResponse(string url, StringContent data) - { - //using (var client = new HttpClient()) - //{ - string strresponse = ""; - HttpClient httpClient = new HttpClient(); - httpClient.Timeout = TimeSpan.FromSeconds(60); - try - { - var response = await httpClient.PostAsync(url, data); - - strresponse = response.Content.ReadAsStringAsync().Result; - } - catch - { - - } - return strresponse; - //} - } - private void buttonInRepository_Click(object sender, EventArgs e) - { - if (buttonInRepository.Text.Contains("Generate Download List")|| buttonInRepository.Text.Contains("Upgrade to")) - { - GetResourceDetail(); - } - if (buttonInRepository.Text.Contains("In Repository")) - { - RaisePackageNameEvent(packageName); - } - if (buttonInRepository.Text.StartsWith("Go To ")) - { - if (!string.IsNullOrEmpty(download_url)) - { - try - { - BackendSession.RunJob("open_url", new { url = download_url }, LogBackendLine, CancellationToken.None); - } - catch (Exception ex) - { - MessageBox.Show($"Open url failed: {ex.Message}"); - } - } - } - } - void RaiseGenLinkListFilterEvent(Dictionary varDownloadUrl) - { - DownloadLinkListEventArgs newEventArgs = - new DownloadLinkListEventArgs(); - newEventArgs.DownloadLinks = varDownloadUrl; - if (GenLinkList != null) - GenLinkList(this, newEventArgs); - } - - public delegate void GenLinkListHandle(object sender, DownloadLinkListEventArgs e); - //Event name - public event GenLinkListHandle GenLinkList; - - public delegate void ClickFilterHandle(object sender, HubItemFilterEventArgs e); - //Event name - public event ClickFilterHandle ClickFilter; - - public delegate void RetPackageNameHandle(object sender, PackageNameEventArgs e); - //Event name - public event RetPackageNameHandle RetPackageName; - public void RefreshItem() - { - buttonType.Text = $"{paytype} {category}"; - labelTitle.Text = title; - labelVersion.Text = version; - labelTagLine.Text = tagLine; - PictureBox[] ratingCtls = { picRating1, picRating2, picRating3, picRating4, picRating5 }; - double rating = ratingAvg + 1; - foreach (PictureBox rctl in ratingCtls) - { - toolTip1.SetToolTip(rctl, $"{ratingAvg}/5"); - rating--; - if (rating < 0.125) - { - rctl.Image = global::varManager.Properties.Resources.starEmpty; - continue; - } - if (rating < 0.375) - { - rctl.Image = global::varManager.Properties.Resources.starOneQuarter; - continue; - } - if (rating < 0.625) - { - rctl.Image = global::varManager.Properties.Resources.starHalf; - continue; - } - if (rating < 0.875) - { - rctl.Image = global::varManager.Properties.Resources.starTriQuarter; - continue; - } - rctl.Image = global::varManager.Properties.Resources.starFull; - } - labelRatingCount.Text = $"{ratingCount} ratings"; - labelDownloads.Text = $"{downloads}"; - labelLastUpdated.Text = $"{lastUpdated.ToString("MMM d,yyyy", CultureInfo.CreateSpecificCulture("en-US"))}"; - try - { - if (!string.IsNullOrEmpty(imageUrl)) - pictureBoxImage.LoadAsync(imageUrl); - } - catch - { - - } - try - { - if (!string.IsNullOrEmpty(creatorIcon)) - pictureBoxUser.LoadAsync(creatorIcon); - } - catch - { - - } - buttonUser.Text = creatorName; - buttonInRepository.Text = inRepository; - switch (inRepository) - { - case "In Repository": - buttonInRepository.BackColor = Color.DarkCyan; - toolTip1.SetToolTip(buttonInRepository, "You already own this package, click to locate it in the main window"); - break; - case "Go To Download": - buttonInRepository.BackColor = Color.MediumOrchid; - toolTip1.SetToolTip(buttonInRepository, "Clicking will open the download page with your browser"); - break; - default: - buttonInRepository.BackColor = Color.SteelBlue; - if (buttonInRepository.Text.Contains("Generate Download List") || buttonInRepository.Text.Contains("Upgrade to")) - { - toolTip1.SetToolTip(buttonInRepository, "A list of downloads will be generated"); - } - break; - - - } - - } - - private void pictureBoxImage_Click(object sender, EventArgs e) - { - // Construct the URL to open based on the resource_id - string urlToOpen = $"https://hub.virtamate.com/resources/{resource_id}/"; - try - { - BackendSession.RunJob("open_url", new { url = urlToOpen }, LogBackendLine, CancellationToken.None); - } - catch (Exception ex) - { - MessageBox.Show( - $"An unexpected error occurred while trying to open the link: {ex.Message}\nLink: {urlToOpen}", - "Open Link Error", - MessageBoxButtons.OK, - MessageBoxIcon.Error - ); - } - } - - void RaiseClickFilterEvent(string filterType,string payType,string category,string creator) - { - HubItemFilterEventArgs newEventArgs = - new HubItemFilterEventArgs(); - newEventArgs.FilterType = filterType; - newEventArgs.PayType = payType; - newEventArgs.Category = category; - newEventArgs.Creator = creator; - if (ClickFilter!=null) - ClickFilter(this,newEventArgs); - } - - void RaisePackageNameEvent(string packageName) - { - PackageNameEventArgs newEventArgs = new PackageNameEventArgs(); - newEventArgs.PackageName = packageName; - if (RetPackageName != null) - RetPackageName(this, newEventArgs); - } - - private void buttonType_Click(object sender, EventArgs e) - { - RaiseClickFilterEvent("category", paytype, category, creatorName); - } - - private void buttonUser_Click(object sender, EventArgs e) - { - RaiseClickFilterEvent("creator", paytype, category, creatorName); - } - - private void pictureBoxUser_Click(object sender, EventArgs e) - { - RaiseClickFilterEvent("creator", paytype, category, creatorName); - } - - - public void SetResource(JSONClass json) - { - this.resource = json; - this.resource_id = resource["resource_id"].Value; - this.title = resource["title"].Value; - this.paytype = resource["category"].Value; - this.category = resource["type"].Value; - this.version = resource["version_string"].Value; - this.tagLine = resource["tag_line"].Value; - this.imageUrl = resource["image_url"].Value; - this.creatorIcon = resource["icon_url"].Value; - this.creatorName = resource["username"].Value; - this.download_url = resource["download_url"].Value; - this.ratingAvg = ParseDouble(resource, "rating_avg"); - this.ratingCount = ParseInt(resource, "rating_count"); - this.downloads = ParseInt(resource, "download_count"); - long unixTimeStamp = ParseLong(resource, "last_update"); - DateTime dt1 = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); - this.lastUpdated = dt1.AddSeconds(unixTimeStamp).ToLocalTime(); - } - } - public class HubItemFilterEventArgs : EventArgs - { - private string filterType,payType,category,creator; - public string FilterType { get => filterType; set => filterType = value; } - public string PayType { get => payType; set => payType = value; } - public string Category { get => category; set => category = value; } - public string Creator { get => creator; set => creator = value; } - } - public class DownloadLinkListEventArgs : EventArgs - { - private Dictionary downloadLinks; - - public Dictionary DownloadLinks { get => downloadLinks; set => downloadLinks = value; } - } - - public class GotoDownloadEventArgs : EventArgs - { - private string gotoDownload; - - public string GotoDownload { get => gotoDownload; set => gotoDownload = value; } - } - public class PackageNameEventArgs : EventArgs - { - private string packageName; - - public string PackageName { get => packageName; set => packageName = value; } - } -} diff --git a/_archived/varManager/HubItem.resx b/_archived/varManager/HubItem.resx deleted file mode 100644 index df8339b..0000000 --- a/_archived/varManager/HubItem.resx +++ /dev/null @@ -1,123 +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 - - - 17, 17 - - \ No newline at end of file diff --git a/_archived/varManager/Migrations/20250807184700_Initial.Designer.cs b/_archived/varManager/Migrations/20250807184700_Initial.Designer.cs deleted file mode 100644 index a9bc946..0000000 --- a/_archived/varManager/Migrations/20250807184700_Initial.Designer.cs +++ /dev/null @@ -1,251 +0,0 @@ -锘// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using varManager.Data; - -#nullable disable - -namespace varManager.Migrations -{ - [DbContext(typeof(VarManagerContext))] - [Migration("20250807184700_Initial")] - partial class Initial - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "9.0.8"); - - modelBuilder.Entity("varManager.Models.Dependency", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DependencyName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("dependency"); - - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.HasKey("ID"); - - b.ToTable("dependencies", (string)null); - }); - - modelBuilder.Entity("varManager.Models.HideFav", b => - { - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.Property("Fav") - .HasColumnType("INTEGER") - .HasColumnName("fav"); - - b.Property("Hide") - .HasColumnType("INTEGER") - .HasColumnName("hide"); - - b.Property("ID") - .HasColumnType("INTEGER"); - - b.HasKey("VarName"); - - b.ToTable("HideFav", (string)null); - }); - - modelBuilder.Entity("varManager.Models.InstallStatus", b => - { - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.Property("Disabled") - .HasColumnType("INTEGER") - .HasColumnName("disabled"); - - b.Property("Installed") - .HasColumnType("INTEGER") - .HasColumnName("installed"); - - b.HasKey("VarName"); - - b.ToTable("installStatus", (string)null); - }); - - modelBuilder.Entity("varManager.Models.SavedDependency", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DependencyName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("dependency"); - - b.Property("ModiDate") - .HasColumnType("TEXT"); - - b.Property("SavePath") - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.HasKey("ID"); - - b.ToTable("savedepens", (string)null); - }); - - modelBuilder.Entity("varManager.Models.Scene", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AtomType") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("atomType"); - - b.Property("IsLoadable") - .HasColumnType("INTEGER") - .HasColumnName("isLoadable"); - - b.Property("IsPreset") - .HasColumnType("INTEGER") - .HasColumnName("isPreset"); - - b.Property("PreviewPic") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("previewPic"); - - b.Property("ScenePath") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("scenePath"); - - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.HasKey("ID"); - - b.ToTable("scenes", (string)null); - }); - - modelBuilder.Entity("varManager.Models.Var", b => - { - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.Property("Appearance") - .HasColumnType("INTEGER") - .HasColumnName("appearance"); - - b.Property("Asset") - .HasColumnType("INTEGER") - .HasColumnName("asset"); - - b.Property("Cloth") - .HasColumnType("INTEGER") - .HasColumnName("cloth"); - - b.Property("CreatorName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("creatorName"); - - b.Property("DependencyCnt") - .HasColumnType("INTEGER") - .HasColumnName("dependencyCnt"); - - b.Property("Description") - .HasColumnType("TEXT") - .HasColumnName("description"); - - b.Property("Hair") - .HasColumnType("INTEGER") - .HasColumnName("hair"); - - b.Property("Look") - .HasColumnType("INTEGER") - .HasColumnName("look"); - - b.Property("MetaDate") - .HasColumnType("TEXT") - .HasColumnName("metaDate"); - - b.Property("Morph") - .HasColumnType("INTEGER") - .HasColumnName("morph"); - - b.Property("PackageName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("packageName"); - - b.Property("Plugin") - .HasColumnType("INTEGER") - .HasColumnName("plugin"); - - b.Property("Pose") - .HasColumnType("INTEGER") - .HasColumnName("pose"); - - b.Property("Scene") - .HasColumnType("INTEGER") - .HasColumnName("scene"); - - b.Property("Script") - .HasColumnType("INTEGER") - .HasColumnName("script"); - - b.Property("Skin") - .HasColumnType("INTEGER") - .HasColumnName("skin"); - - b.Property("SubScene") - .HasColumnType("INTEGER") - .HasColumnName("subScene"); - - b.Property("Texture") - .HasColumnType("INTEGER") - .HasColumnName("texture"); - - b.Property("VarDate") - .HasColumnType("TEXT") - .HasColumnName("varDate"); - - b.Property("Version") - .HasMaxLength(50) - .HasColumnType("TEXT") - .HasColumnName("version"); - - b.HasKey("VarName"); - - b.ToTable("vars", (string)null); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/_archived/varManager/Migrations/20250807184700_Initial.cs b/_archived/varManager/Migrations/20250807184700_Initial.cs deleted file mode 100644 index dac16e7..0000000 --- a/_archived/varManager/Migrations/20250807184700_Initial.cs +++ /dev/null @@ -1,143 +0,0 @@ -锘縰sing System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace varManager.Migrations -{ - /// - public partial class Initial : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "dependencies", - columns: table => new - { - ID = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - varName = table.Column(type: "TEXT", maxLength: 255, nullable: true), - dependency = table.Column(type: "TEXT", maxLength: 255, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_dependencies", x => x.ID); - }); - - migrationBuilder.CreateTable( - name: "HideFav", - columns: table => new - { - varName = table.Column(type: "TEXT", maxLength: 255, nullable: false), - ID = table.Column(type: "INTEGER", nullable: false), - hide = table.Column(type: "INTEGER", nullable: false), - fav = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_HideFav", x => x.varName); - }); - - migrationBuilder.CreateTable( - name: "installStatus", - columns: table => new - { - varName = table.Column(type: "TEXT", maxLength: 255, nullable: false), - installed = table.Column(type: "INTEGER", nullable: false), - disabled = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_installStatus", x => x.varName); - }); - - migrationBuilder.CreateTable( - name: "savedepens", - columns: table => new - { - ID = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - varName = table.Column(type: "TEXT", maxLength: 255, nullable: true), - dependency = table.Column(type: "TEXT", maxLength: 255, nullable: true), - SavePath = table.Column(type: "TEXT", maxLength: 500, nullable: true), - ModiDate = table.Column(type: "TEXT", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_savedepens", x => x.ID); - }); - - migrationBuilder.CreateTable( - name: "scenes", - columns: table => new - { - ID = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - varName = table.Column(type: "TEXT", maxLength: 255, nullable: true), - atomType = table.Column(type: "TEXT", maxLength: 255, nullable: true), - previewPic = table.Column(type: "TEXT", maxLength: 255, nullable: true), - scenePath = table.Column(type: "TEXT", maxLength: 255, nullable: true), - isPreset = table.Column(type: "INTEGER", nullable: false), - isLoadable = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_scenes", x => x.ID); - }); - - migrationBuilder.CreateTable( - name: "vars", - columns: table => new - { - varName = table.Column(type: "TEXT", maxLength: 255, nullable: false), - creatorName = table.Column(type: "TEXT", maxLength: 255, nullable: true), - packageName = table.Column(type: "TEXT", maxLength: 255, nullable: true), - metaDate = table.Column(type: "TEXT", nullable: true), - varDate = table.Column(type: "TEXT", nullable: true), - version = table.Column(type: "TEXT", maxLength: 50, nullable: true), - description = table.Column(type: "TEXT", nullable: true), - morph = table.Column(type: "INTEGER", nullable: true), - cloth = table.Column(type: "INTEGER", nullable: true), - hair = table.Column(type: "INTEGER", nullable: true), - skin = table.Column(type: "INTEGER", nullable: true), - pose = table.Column(type: "INTEGER", nullable: true), - scene = table.Column(type: "INTEGER", nullable: true), - script = table.Column(type: "INTEGER", nullable: true), - plugin = table.Column(type: "INTEGER", nullable: true), - asset = table.Column(type: "INTEGER", nullable: true), - texture = table.Column(type: "INTEGER", nullable: true), - look = table.Column(type: "INTEGER", nullable: true), - subScene = table.Column(type: "INTEGER", nullable: true), - appearance = table.Column(type: "INTEGER", nullable: true), - dependencyCnt = table.Column(type: "INTEGER", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_vars", x => x.varName); - }); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "dependencies"); - - migrationBuilder.DropTable( - name: "HideFav"); - - migrationBuilder.DropTable( - name: "installStatus"); - - migrationBuilder.DropTable( - name: "savedepens"); - - migrationBuilder.DropTable( - name: "scenes"); - - migrationBuilder.DropTable( - name: "vars"); - } - } -} diff --git a/_archived/varManager/Migrations/VarManagerContextModelSnapshot.cs b/_archived/varManager/Migrations/VarManagerContextModelSnapshot.cs deleted file mode 100644 index 54d6ccd..0000000 --- a/_archived/varManager/Migrations/VarManagerContextModelSnapshot.cs +++ /dev/null @@ -1,248 +0,0 @@ -锘// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using varManager.Data; - -#nullable disable - -namespace varManager.Migrations -{ - [DbContext(typeof(VarManagerContext))] - partial class VarManagerContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "9.0.8"); - - modelBuilder.Entity("varManager.Models.Dependency", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DependencyName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("dependency"); - - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.HasKey("ID"); - - b.ToTable("dependencies", (string)null); - }); - - modelBuilder.Entity("varManager.Models.HideFav", b => - { - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.Property("Fav") - .HasColumnType("INTEGER") - .HasColumnName("fav"); - - b.Property("Hide") - .HasColumnType("INTEGER") - .HasColumnName("hide"); - - b.Property("ID") - .HasColumnType("INTEGER"); - - b.HasKey("VarName"); - - b.ToTable("HideFav", (string)null); - }); - - modelBuilder.Entity("varManager.Models.InstallStatus", b => - { - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.Property("Disabled") - .HasColumnType("INTEGER") - .HasColumnName("disabled"); - - b.Property("Installed") - .HasColumnType("INTEGER") - .HasColumnName("installed"); - - b.HasKey("VarName"); - - b.ToTable("installStatus", (string)null); - }); - - modelBuilder.Entity("varManager.Models.SavedDependency", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DependencyName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("dependency"); - - b.Property("ModiDate") - .HasColumnType("TEXT"); - - b.Property("SavePath") - .HasMaxLength(500) - .HasColumnType("TEXT"); - - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.HasKey("ID"); - - b.ToTable("savedepens", (string)null); - }); - - modelBuilder.Entity("varManager.Models.Scene", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AtomType") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("atomType"); - - b.Property("IsLoadable") - .HasColumnType("INTEGER") - .HasColumnName("isLoadable"); - - b.Property("IsPreset") - .HasColumnType("INTEGER") - .HasColumnName("isPreset"); - - b.Property("PreviewPic") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("previewPic"); - - b.Property("ScenePath") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("scenePath"); - - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.HasKey("ID"); - - b.ToTable("scenes", (string)null); - }); - - modelBuilder.Entity("varManager.Models.Var", b => - { - b.Property("VarName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("varName"); - - b.Property("Appearance") - .HasColumnType("INTEGER") - .HasColumnName("appearance"); - - b.Property("Asset") - .HasColumnType("INTEGER") - .HasColumnName("asset"); - - b.Property("Cloth") - .HasColumnType("INTEGER") - .HasColumnName("cloth"); - - b.Property("CreatorName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("creatorName"); - - b.Property("DependencyCnt") - .HasColumnType("INTEGER") - .HasColumnName("dependencyCnt"); - - b.Property("Description") - .HasColumnType("TEXT") - .HasColumnName("description"); - - b.Property("Hair") - .HasColumnType("INTEGER") - .HasColumnName("hair"); - - b.Property("Look") - .HasColumnType("INTEGER") - .HasColumnName("look"); - - b.Property("MetaDate") - .HasColumnType("TEXT") - .HasColumnName("metaDate"); - - b.Property("Morph") - .HasColumnType("INTEGER") - .HasColumnName("morph"); - - b.Property("PackageName") - .HasMaxLength(255) - .HasColumnType("TEXT") - .HasColumnName("packageName"); - - b.Property("Plugin") - .HasColumnType("INTEGER") - .HasColumnName("plugin"); - - b.Property("Pose") - .HasColumnType("INTEGER") - .HasColumnName("pose"); - - b.Property("Scene") - .HasColumnType("INTEGER") - .HasColumnName("scene"); - - b.Property("Script") - .HasColumnType("INTEGER") - .HasColumnName("script"); - - b.Property("Skin") - .HasColumnType("INTEGER") - .HasColumnName("skin"); - - b.Property("SubScene") - .HasColumnType("INTEGER") - .HasColumnName("subScene"); - - b.Property("Texture") - .HasColumnType("INTEGER") - .HasColumnName("texture"); - - b.Property("VarDate") - .HasColumnType("TEXT") - .HasColumnName("varDate"); - - b.Property("Version") - .HasMaxLength(50) - .HasColumnType("TEXT") - .HasColumnName("version"); - - b.HasKey("VarName"); - - b.ToTable("vars", (string)null); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/_archived/varManager/Models/Dependency.cs b/_archived/varManager/Models/Dependency.cs deleted file mode 100644 index f94e305..0000000 --- a/_archived/varManager/Models/Dependency.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace varManager.Models -{ - public class Dependency - { - [Key] - public int ID { get; set; } - - [StringLength(255)] - public string? VarName { get; set; } - - [StringLength(255)] - public string? DependencyName { get; set; } - } -} \ No newline at end of file diff --git a/_archived/varManager/Models/HideFav.cs b/_archived/varManager/Models/HideFav.cs deleted file mode 100644 index 3e3cb3d..0000000 --- a/_archived/varManager/Models/HideFav.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace varManager.Models -{ - public class HideFav - { - [Key] - public int ID { get; set; } - - [StringLength(255)] - public string? VarName { get; set; } - - public bool Hide { get; set; } - - public bool Fav { get; set; } - } -} \ No newline at end of file diff --git a/_archived/varManager/Models/InstallStatus.cs b/_archived/varManager/Models/InstallStatus.cs deleted file mode 100644 index aa8538e..0000000 --- a/_archived/varManager/Models/InstallStatus.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace varManager.Models -{ - public class InstallStatus - { - [Key] - [StringLength(255)] - public string VarName { get; set; } = string.Empty; - - public bool Installed { get; set; } - - public bool Disabled { get; set; } - } -} \ No newline at end of file diff --git a/_archived/varManager/Models/SavedDependency.cs b/_archived/varManager/Models/SavedDependency.cs deleted file mode 100644 index 1e0d40e..0000000 --- a/_archived/varManager/Models/SavedDependency.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace varManager.Models -{ - public class SavedDependency - { - [Key] - public int ID { get; set; } - - [StringLength(255)] - public string? VarName { get; set; } - - [StringLength(255)] - public string? DependencyName { get; set; } - - [StringLength(500)] - public string? SavePath { get; set; } - - public DateTime? ModiDate { get; set; } - } -} \ No newline at end of file diff --git a/_archived/varManager/Models/Scene.cs b/_archived/varManager/Models/Scene.cs deleted file mode 100644 index cd5e760..0000000 --- a/_archived/varManager/Models/Scene.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace varManager.Models -{ - public class Scene - { - [Key] - public int ID { get; set; } - - [StringLength(255)] - public string? VarName { get; set; } - - [StringLength(255)] - public string? AtomType { get; set; } - - [StringLength(255)] - public string? PreviewPic { get; set; } - - [StringLength(255)] - public string? ScenePath { get; set; } - - public bool IsPreset { get; set; } - - public bool IsLoadable { get; set; } - } -} \ No newline at end of file diff --git a/_archived/varManager/Models/ScenesView.cs b/_archived/varManager/Models/ScenesView.cs deleted file mode 100644 index 71b35fc..0000000 --- a/_archived/varManager/Models/ScenesView.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace varManager.Models -{ - public class ScenesView - { - public string? VarName { get; set; } - public string? AtomType { get; set; } - public bool IsPreset { get; set; } - public string? ScenePath { get; set; } - public string? PreviewPic { get; set; } - public string? CreatorName { get; set; } - public string? PackageName { get; set; } - public DateTime? MetaDate { get; set; } - public string? Version { get; set; } - public bool Installed { get; set; } - public bool Disabled { get; set; } - public bool Hide { get; set; } - public bool Fav { get; set; } - } -} \ No newline at end of file diff --git a/_archived/varManager/Models/Var.cs b/_archived/varManager/Models/Var.cs deleted file mode 100644 index d2d4f4f..0000000 --- a/_archived/varManager/Models/Var.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace varManager.Models -{ - public class Var - { - [Key] - [StringLength(255)] - public string VarName { get; set; } = string.Empty; - - [StringLength(255)] - public string? CreatorName { get; set; } - - [StringLength(255)] - public string? PackageName { get; set; } - - public DateTime? MetaDate { get; set; } - - public DateTime? VarDate { get; set; } - - [StringLength(50)] - public string? Version { get; set; } - - public string? Description { get; set; } - - // Map to existing database columns - public int? Morph { get; set; } - public int? Cloth { get; set; } - public int? Hair { get; set; } - public int? Skin { get; set; } - public int? Pose { get; set; } - public int? Scene { get; set; } - public int? Script { get; set; } - public int? Plugin { get; set; } - public int? Asset { get; set; } - public int? Texture { get; set; } - public int? Look { get; set; } - public int? SubScene { get; set; } - public int? Appearance { get; set; } - public int? DependencyCnt { get; set; } - public double? Fsize { get; set; } - - // Compatibility properties for existing code (not mapped to database) - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public string? VarPath { get => ""; set { } } // Not available in existing schema - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public long? Filesize { get => Fsize.HasValue ? (long?)(Fsize.Value * 1024 * 1024) : null; set { } } - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public int? Scenes { get => Scene; set => Scene = value; } - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public int? Looks { get => Look; set => Look = value; } - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public int? Clothing { get => Cloth; set => Cloth = value; } - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public int? Hairstyle { get => Hair; set => Hair = value; } - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public int? Plugins { get => Plugin; set => Plugin = value; } - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public int? Assets { get => Asset; set => Asset = value; } - - [System.ComponentModel.DataAnnotations.Schema.NotMapped] - public int? Morphs { get => Morph; set => Morph = value; } - } -} \ No newline at end of file diff --git a/_archived/varManager/PrepareSaves.Designer.cs b/_archived/varManager/PrepareSaves.Designer.cs deleted file mode 100644 index d1820df..0000000 --- a/_archived/varManager/PrepareSaves.Designer.cs +++ /dev/null @@ -1,222 +0,0 @@ -锘縩amespace varManager -{ - partial class PrepareSaves - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.groupBoxSaves = new System.Windows.Forms.GroupBox(); - this.treeViewSaves = new nsThreeStateTreeview.TriStateTreeView(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.buttonVarCopyToClip = new System.Windows.Forms.Button(); - this.listBoxVars = new System.Windows.Forms.ListBox(); - this.buttonAnalysis = new System.Windows.Forms.Button(); - this.progressBar1 = new System.Windows.Forms.ProgressBar(); - this.labelProgress = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.textBoxOutputFolder = new System.Windows.Forms.TextBox(); - this.buttonOutputFolder = new System.Windows.Forms.Button(); - this.buttonOutput = new System.Windows.Forms.Button(); - this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); - this.buttonExit = new System.Windows.Forms.Button(); - this.groupBoxSaves.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.SuspendLayout(); - // - // groupBoxSaves - // - this.groupBoxSaves.Controls.Add(this.treeViewSaves); - this.groupBoxSaves.Location = new System.Drawing.Point(13, 14); - this.groupBoxSaves.Name = "groupBoxSaves"; - this.groupBoxSaves.Size = new System.Drawing.Size(542, 639); - this.groupBoxSaves.TabIndex = 0; - this.groupBoxSaves.TabStop = false; - this.groupBoxSaves.Text = "Saves"; - // - // treeViewSaves - // - this.treeViewSaves.Dock = System.Windows.Forms.DockStyle.Fill; - this.treeViewSaves.FullRowSelect = true; - this.treeViewSaves.Location = new System.Drawing.Point(3, 21); - this.treeViewSaves.Name = "treeViewSaves"; - this.treeViewSaves.Size = new System.Drawing.Size(536, 615); - this.treeViewSaves.TabIndex = 0; - this.treeViewSaves.TriStateStyleProperty = nsThreeStateTreeview.TriStateTreeView.TriStateStyles.Standard; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.buttonVarCopyToClip); - this.groupBox2.Controls.Add(this.listBoxVars); - this.groupBox2.Location = new System.Drawing.Point(561, 14); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(587, 639); - this.groupBox2.TabIndex = 1; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "dependency files"; - // - // buttonVarCopyToClip - // - this.buttonVarCopyToClip.Location = new System.Drawing.Point(453, -3); - this.buttonVarCopyToClip.Name = "buttonVarCopyToClip"; - this.buttonVarCopyToClip.Size = new System.Drawing.Size(128, 29); - this.buttonVarCopyToClip.TabIndex = 1; - this.buttonVarCopyToClip.Text = "CopyToClipboard"; - this.buttonVarCopyToClip.UseVisualStyleBackColor = true; - this.buttonVarCopyToClip.Click += new System.EventHandler(this.buttonVarCopyToClip_Click); - // - // listBoxVars - // - this.listBoxVars.Dock = System.Windows.Forms.DockStyle.Fill; - this.listBoxVars.FormattingEnabled = true; - this.listBoxVars.HorizontalScrollbar = true; - this.listBoxVars.ItemHeight = 17; - this.listBoxVars.Location = new System.Drawing.Point(3, 21); - this.listBoxVars.Name = "listBoxVars"; - this.listBoxVars.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; - this.listBoxVars.Size = new System.Drawing.Size(581, 615); - this.listBoxVars.TabIndex = 0; - // - // buttonAnalysis - // - this.buttonAnalysis.Location = new System.Drawing.Point(387, 691); - this.buttonAnalysis.Name = "buttonAnalysis"; - this.buttonAnalysis.Size = new System.Drawing.Size(168, 35); - this.buttonAnalysis.TabIndex = 2; - this.buttonAnalysis.Text = "Step1: Analysis"; - this.buttonAnalysis.UseVisualStyleBackColor = true; - this.buttonAnalysis.Click += new System.EventHandler(this.buttonAnalysis_Click); - // - // progressBar1 - // - this.progressBar1.Location = new System.Drawing.Point(107, 656); - this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(445, 26); - this.progressBar1.TabIndex = 3; - // - // labelProgress - // - this.labelProgress.AutoSize = true; - this.labelProgress.Location = new System.Drawing.Point(22, 661); - this.labelProgress.Name = "labelProgress"; - this.labelProgress.Size = new System.Drawing.Size(79, 17); - this.labelProgress.TabIndex = 4; - this.labelProgress.Text = "9999/9999"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(561, 661); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(99, 17); - this.label1.TabIndex = 5; - this.label1.Text = "Output Folder:"; - // - // textBoxOutputFolder - // - this.textBoxOutputFolder.Location = new System.Drawing.Point(682, 657); - this.textBoxOutputFolder.Name = "textBoxOutputFolder"; - this.textBoxOutputFolder.Size = new System.Drawing.Size(429, 25); - this.textBoxOutputFolder.TabIndex = 6; - // - // buttonOutputFolder - // - this.buttonOutputFolder.Location = new System.Drawing.Point(1106, 657); - this.buttonOutputFolder.Name = "buttonOutputFolder"; - this.buttonOutputFolder.Size = new System.Drawing.Size(39, 25); - this.buttonOutputFolder.TabIndex = 7; - this.buttonOutputFolder.Text = ".."; - this.buttonOutputFolder.UseVisualStyleBackColor = true; - this.buttonOutputFolder.Click += new System.EventHandler(this.buttonOutputFolder_Click); - // - // buttonOutput - // - this.buttonOutput.Location = new System.Drawing.Point(682, 691); - this.buttonOutput.Name = "buttonOutput"; - this.buttonOutput.Size = new System.Drawing.Size(190, 35); - this.buttonOutput.TabIndex = 2; - this.buttonOutput.Text = "Step2: Output"; - this.buttonOutput.UseVisualStyleBackColor = true; - this.buttonOutput.Click += new System.EventHandler(this.buttonOutput_Click); - // - // buttonExit - // - this.buttonExit.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonExit.Location = new System.Drawing.Point(1048, 691); - this.buttonExit.Name = "buttonExit"; - this.buttonExit.Size = new System.Drawing.Size(100, 35); - this.buttonExit.TabIndex = 2; - this.buttonExit.Text = "Exit"; - this.buttonExit.UseVisualStyleBackColor = true; - // - // PrepareSaves - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonExit; - this.ClientSize = new System.Drawing.Size(1160, 732); - this.ControlBox = false; - this.Controls.Add(this.buttonOutputFolder); - this.Controls.Add(this.textBoxOutputFolder); - this.Controls.Add(this.label1); - this.Controls.Add(this.labelProgress); - this.Controls.Add(this.progressBar1); - this.Controls.Add(this.buttonExit); - this.Controls.Add(this.buttonOutput); - this.Controls.Add(this.buttonAnalysis); - this.Controls.Add(this.groupBox2); - this.Controls.Add(this.groupBoxSaves); - this.Font = new System.Drawing.Font("Cambria", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.Name = "PrepareSaves"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "PrepareSaves"; - this.Load += new System.EventHandler(this.PrepareSaves_Load); - this.groupBoxSaves.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBoxSaves; - private nsThreeStateTreeview.TriStateTreeView treeViewSaves; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.ListBox listBoxVars; - private System.Windows.Forms.Button buttonAnalysis; - private System.Windows.Forms.ProgressBar progressBar1; - private System.Windows.Forms.Label labelProgress; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox textBoxOutputFolder; - private System.Windows.Forms.Button buttonOutputFolder; - private System.Windows.Forms.Button buttonOutput; - private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; - private System.Windows.Forms.Button buttonVarCopyToClip; - private System.Windows.Forms.Button buttonExit; - } -} \ No newline at end of file diff --git a/_archived/varManager/PrepareSaves.cs b/_archived/varManager/PrepareSaves.cs deleted file mode 100644 index 3813d08..0000000 --- a/_archived/varManager/PrepareSaves.cs +++ /dev/null @@ -1,273 +0,0 @@ -锘縰sing ICSharpCode.SharpZipLib.Zip; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.Text.Json; -using System.Text.Json.Serialization; -using System.Threading; -using varManager.Backend; -using static SimpleLogger; -using varManager.Properties; - -namespace varManager -{ - public partial class PrepareSaves : Form - { - public Form1 form1; - public PrepareSaves() - { - InitializeComponent(); - treeViewSaves.Nodes.Add("nodeScenes", "[Scenes]: ./Saves/scene"); - treeViewSaves.Nodes.Add("NodeAppearances", "[Appearance]: ./Saves/Person/appearance"); - treeViewSaves.Nodes.Add("NodePresets", "[Apperance Presets]: ./Custom/Atom/Person/Appearance"); - } - - private void LogBackendLine(string line) - { - if (form1 == null) - { - return; - } - LogLevel level = LogLevel.INFO; - if (line.StartsWith("error:", StringComparison.OrdinalIgnoreCase)) - { - level = LogLevel.ERROR; - } - form1.BeginInvoke(new Form1.InvokeAddLoglist(form1.UpdateAddLoglist), new object[] { line, level }); - } - - private Task RunBackendJobAsync(string kind, object? args) - { - return BackendSession.RunJobAsync(kind, args, LogBackendLine, CancellationToken.None); - } - - private T? DeserializeResult(BackendJobResult result) - { - if (!result.Result.HasValue) - { - return default; - } - return JsonSerializer.Deserialize(result.Result.Value.GetRawText()); - } - - private sealed class DepsJobResult - { - [JsonPropertyName("missing")] - public List Missing { get; set; } = new List(); - - [JsonPropertyName("installed")] - public List Installed { get; set; } = new List(); - - [JsonPropertyName("dependency_count")] - public int DependencyCount { get; set; } - } - - private void PrepareSaves_Load(object sender, EventArgs e) - { - List scenefiles = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "Saves\\scene"), "*.json", SearchOption.AllDirectories).ToList(); - foreach (string scenefile in scenefiles) - { - int pathLength = Path.Combine(Settings.Default.vampath, "Saves\\scene").Length; - string scenefilename ="."+ scenefile.Substring(pathLength); - treeViewSaves.Nodes["nodeScenes"].Nodes.Add(scenefile,scenefilename); - } - treeViewSaves.Nodes["nodeScenes"].Checked = true; - List appearancefiles = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "Saves\\Person\\appearance"), "*.json", SearchOption.AllDirectories).ToList(); - foreach (string appearancefile in appearancefiles) - { - int pathLength = Path.Combine(Settings.Default.vampath, "Saves\\Person\\appearance").Length; - string appearancefilename = "." + appearancefile.Substring(pathLength); - treeViewSaves.Nodes["NodeAppearances"].Nodes.Add(appearancefile, appearancefilename); - } - treeViewSaves.Nodes["NodeAppearances"].Checked = true; - List presetfiles = Directory.GetFiles(Path.Combine(Settings.Default.vampath, "Custom\\Atom\\Person\\Appearance"), "*.vap", SearchOption.AllDirectories).ToList(); - foreach (string presetfile in presetfiles) - { - int pathLength = Path.Combine(Settings.Default.vampath, "Custom\\Atom\\Person\\Appearance").Length; - string presetfilename = "." + presetfile.Substring(pathLength); - treeViewSaves.Nodes["NodePresets"].Nodes.Add(presetfile, presetfilename); - } - treeViewSaves.Nodes["NodePresets"].Checked = true; - } - - private async void buttonAnalysis_Click(object sender, EventArgs e) - { - listBoxVars.Items.Clear(); - try - { - var result = await RunBackendJobAsync("saves_deps", null); - var payload = DeserializeResult(result); - if (payload != null) - { - foreach (var missing in payload.Missing) - { - listBoxVars.Items.Add(missing); - } - } - } - catch (Exception ex) - { - MessageBox.Show($"Analysis failed: {ex.Message}"); - } - } - - private void dependFiles(ref List jsonfiles, ref List jsonfilesOK,bool progress=false) - { - int totlajsonfiles = jsonfiles.Count; - labelProgress.Text = String.Format("{0}/{1}", 0, totlajsonfiles); - - List varfiles = new List(); - List customfiles = new List(); - int intCur = 0; - Regex regexObjVar = new Regex(@"[\x22](?(?[^\r\n\x22\x3A\x2E]+?\x2e[^\r\n\x22\x3A\x2E]+?\x2e(?:\d+?|latest))\x3A[^\r\n\x22\x3A]+?)[\x22]", RegexOptions.IgnoreCase | RegexOptions.Singleline); - Regex regexObjCustom = new Regex(@"[\x22](?Custom\x2F.*?)[\x22]", RegexOptions.IgnoreCase | RegexOptions.Singleline); - foreach (string jsonfile in jsonfiles) - { - try - { - string jsonstring = ReadJsonfile(jsonfile); - - Match matchResultVars = regexObjVar.Match(jsonstring); - while (matchResultVars.Success) - { - // matched text: matchResults.Value - // match start: matchResults.Index - // match length: matchResults.Length - varfiles.Add(matchResultVars.Groups["filepath"].Value); - matchResultVars = matchResultVars.NextMatch(); - } - - Match matchResultCustom = regexObjCustom.Match(jsonstring); - while (matchResultCustom.Success) - { - // matched text: matchResults.Value - // match start: matchResults.Index - // match length: matchResults.Length - customfiles.Add(matchResultCustom.Groups["customfile"].Value); - matchResultCustom = matchResultCustom.NextMatch(); - } - } - catch (Exception) - { - } - intCur++; - if (progress) - { - progressBar1.Value = intCur * 100 / totlajsonfiles; - labelProgress.Text = String.Format("{0}/{1}", intCur, totlajsonfiles); - } - } - varfiles = varfiles.Distinct().ToList(); - //varfiles.Sort(); - customfiles = customfiles.Distinct().ToList(); - //customfiles.Sort(); - if (!progress) - { - jsonfilesOK.AddRange(jsonfiles); - } - jsonfiles.Clear(); - - foreach (var varfile in varfiles) - { - if(varfile.ToLower().EndsWith(".vap")|| varfile.ToLower().EndsWith(".json")) - jsonfiles.Add(varfile); - else - jsonfilesOK.Add(varfile); - } - - foreach (var customfile in customfiles) - { - if (customfile.ToLower().EndsWith(".vap") || customfile.ToLower().EndsWith(".json")) - jsonfiles.Add(customfile); - else - jsonfilesOK.Add(customfile); - } - if (jsonfiles.Count > 0) - dependFiles(ref jsonfiles, ref jsonfilesOK); - jsonfilesOK = jsonfilesOK.Distinct().ToList(); - jsonfilesOK.Sort(); - foreach (var jsonfile in jsonfilesOK) - { - listBoxVars.Items.Add(jsonfile); - } - - } - - private string ReadJsonfile(string jsonfile) - { - string jsonstring=""; - if (jsonfile.IndexOf(":/") > 1) - { - string varName = jsonfile.Substring(0, jsonfile.IndexOf(":/")); - varName= form1.VarExistName(varName); - if (varName.EndsWith("$")) - { - varName = varName.Substring(0, varName.Length - 1); - } - string entryname = jsonfile.Substring(jsonfile.IndexOf(":/") + 2).Trim(); - - string destvarfile = form1.getVarFilePath(varName); - if (!string.IsNullOrEmpty(destvarfile)) - { - if (File.Exists(destvarfile)) - { - using (ZipFile varzipfile = new ZipFile(destvarfile)) - { - var entry = varzipfile.GetEntry(entryname); - var entryStream = new StreamReader(varzipfile.GetInputStream(entry)); - jsonstring = entryStream.ReadToEnd(); - } - } - } - } - else - { - jsonfile = Path.Combine(Settings.Default.vampath, jsonfile); - if (File.Exists(jsonfile)) - { - using (StreamReader sr = new StreamReader(jsonfile)) - { - jsonstring = sr.ReadToEnd(); - } - } - } - - return jsonstring; - } - - private void buttonOutputFolder_Click(object sender, EventArgs e) - { - folderBrowserDialog1.SelectedPath = textBoxOutputFolder.Text; - folderBrowserDialog1.ShowDialog(); - textBoxOutputFolder.Text = folderBrowserDialog1.SelectedPath; - } - - private void buttonOutput_Click(object sender, EventArgs e) - { - if(! Directory.Exists(textBoxOutputFolder.Text)) - { - MessageBox.Show("Please select an exist output directory"); - return; - } - if (Directory.GetFiles(textBoxOutputFolder.Text, "*.*", SearchOption.AllDirectories).ToList().Count() > 0) - { - MessageBox.Show("The output directory must be empty"); - return; - } - } - private void buttonVarCopyToClip_Click(object sender, EventArgs e) - { - string s1 = ""; - foreach (object item in listBoxVars.Items) s1 += item.ToString() + "\r\n"; - Clipboard.SetText(s1); - } - } -} diff --git a/_archived/varManager/PrepareSaves.resx b/_archived/varManager/PrepareSaves.resx deleted file mode 100644 index 69f943d..0000000 --- a/_archived/varManager/PrepareSaves.resx +++ /dev/null @@ -1,123 +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 - - - 17, 17 - - \ No newline at end of file diff --git a/_archived/varManager/Program.cs b/_archived/varManager/Program.cs deleted file mode 100644 index d5e175b..0000000 --- a/_archived/varManager/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ -锘縰sing System; -using System.Windows.Forms; -using varManager.Data; - -namespace varManager -{ - static class Program - { - /// - /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广 - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - VarManagerContext.EnsureCreatedOnce(); - Application.Run(new Form1()); - } - } -} diff --git a/_archived/varManager/Properties/AssemblyInfo.cs b/_archived/varManager/Properties/AssemblyInfo.cs deleted file mode 100644 index 6e00163..0000000 --- a/_archived/varManager/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -锘縰sing System.Resources; -using System.Reflection; -using System.Runtime.InteropServices; - -// 鏈夊叧绋嬪簭闆嗙殑涓鑸俊鎭敱浠ヤ笅 -// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у煎彲淇敼 -// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭 -[assembly: AssemblyTitle("varManager")] -[assembly: AssemblyDescription("vars Manager For VirtAMate")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("feelfar")] -[assembly: AssemblyProduct("varManager")] -[assembly: AssemblyCopyright("Copyright 漏 2021")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 灏 ComVisible 璁剧疆涓 false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷 -//瀵 COM 缁勪欢涓嶅彲瑙併傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷 -//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规ц缃负 true銆 -[assembly: ComVisible(false)] - -// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID -[assembly: Guid("ea2a1b27-ca81-4dbf-8e10-97a0243b6184")] - -// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓肩粍鎴: -// -// 涓荤増鏈 -// 娆$増鏈 -// 鐢熸垚鍙 -// 淇鍙 -// -//鍙互鎸囧畾鎵鏈夎繖浜涘硷紝涔熷彲浠ヤ娇鐢ㄢ滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊 -//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.4.13")] -[assembly: AssemblyFileVersion("1.0.4.13")] -[assembly: NeutralResourcesLanguage("en")] diff --git a/_archived/varManager/Properties/Resources.Designer.cs b/_archived/varManager/Properties/Resources.Designer.cs deleted file mode 100644 index 62aadb0..0000000 --- a/_archived/varManager/Properties/Resources.Designer.cs +++ /dev/null @@ -1,143 +0,0 @@ -锘//------------------------------------------------------------------------------ -// -// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆 -// 杩愯鏃剁増鏈:4.0.30319.42000 -// -// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋 -// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便 -// -//------------------------------------------------------------------------------ - -namespace varManager.Properties { - using System; - - - /// - /// 涓涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈 - /// - // 姝ょ被鏄敱 StronglyTypedResourceBuilder - // 绫婚氳繃绫讳技浜 ResGen 鎴 Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆 - // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈 .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛 ResGen - // (浠 /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// 杩斿洖姝ょ被浣跨敤鐨勭紦瀛樼殑 ResourceManager 瀹炰緥銆 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("varManager.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 閲嶅啓褰撳墠绾跨▼鐨 CurrentUICulture 灞炴э紝瀵 - /// 浣跨敤姝ゅ己绫诲瀷璧勬簮绫荤殑鎵鏈夎祫婧愭煡鎵炬墽琛岄噸鍐欍 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Bitmap hub { - get { - object obj = ResourceManager.GetObject("hub", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 鏌ユ壘绫讳技浜 (鍥炬爣) 鐨 System.Drawing.Icon 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Icon icoVarManager { - get { - object obj = ResourceManager.GetObject("icoVarManager", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Bitmap starEmpty { - get { - object obj = ResourceManager.GetObject("starEmpty", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Bitmap starFull { - get { - object obj = ResourceManager.GetObject("starFull", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Bitmap starHalf { - get { - object obj = ResourceManager.GetObject("starHalf", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Bitmap starOneQuarter { - get { - object obj = ResourceManager.GetObject("starOneQuarter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Bitmap starTriQuarter { - get { - object obj = ResourceManager.GetObject("starTriQuarter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆 - /// - internal static System.Drawing.Bitmap vam_logo_hub { - get { - object obj = ResourceManager.GetObject("vam_logo_hub", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/_archived/varManager/Properties/Resources.resx b/_archived/varManager/Properties/Resources.resx deleted file mode 100644 index 783f0a4..0000000 --- a/_archived/varManager/Properties/Resources.resx +++ /dev/null @@ -1,145 +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 - - - - ..\Resources\starEmpty.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\hub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\starOneQuarter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\starHalf.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\starTriQuarter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\icoVarManager.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\starFull.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\vam_logo_hub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/_archived/varManager/Properties/Settings.Designer.cs b/_archived/varManager/Properties/Settings.Designer.cs deleted file mode 100644 index 29e359a..0000000 --- a/_archived/varManager/Properties/Settings.Designer.cs +++ /dev/null @@ -1,144 +0,0 @@ -锘//------------------------------------------------------------------------------ -// -// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆 -// 杩愯鏃剁増鏈:4.0.30319.42000 -// -// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋 -// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便 -// -//------------------------------------------------------------------------------ - -namespace varManager.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("d:\\vars")] - public string varspath { - get { - return ((string)(this["varspath"])); - } - set { - this["varspath"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("d:\\virt_a_mate")] - public string vampath { - get { - return ((string)(this["vampath"])); - } - set { - this["vampath"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("VaM (Desktop Mode).bat")] - public string defaultVamExec { - get { - return ((string)(this["defaultVamExec"])); - } - set { - this["defaultVamExec"] = value; - } - } - - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] - [global::System.Configuration.DefaultSettingValueAttribute("Data Source=|DataDirectory|\\varManager.db")] - public string varManagerConnectionString { - get { - return ((string)(this["varManagerConnectionString"])); - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool presetMorphs { - get { - return ((bool)(this["presetMorphs"])); - } - set { - this["presetMorphs"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool presetHair { - get { - return ((bool)(this["presetHair"])); - } - set { - this["presetHair"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool presetClothing { - get { - return ((bool)(this["presetClothing"])); - } - set { - this["presetClothing"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool presetSkin { - get { - return ((bool)(this["presetSkin"])); - } - set { - this["presetSkin"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool presetBreast { - get { - return ((bool)(this["presetBreast"])); - } - set { - this["presetBreast"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool presetGlute { - get { - return ((bool)(this["presetGlute"])); - } - set { - this["presetGlute"] = value; - } - } - } -} diff --git a/_archived/varManager/Properties/Settings.settings b/_archived/varManager/Properties/Settings.settings deleted file mode 100644 index 06a2761..0000000 --- a/_archived/varManager/Properties/Settings.settings +++ /dev/null @@ -1,38 +0,0 @@ -锘 - - - - - d:\vars - - - d:\virt_a_mate - - - <?xml version="1.0" encoding="utf-16"?> -<SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <ConnectionString>Data Source=|DataDirectory|\varManager.db</ConnectionString> - <ProviderName>Microsoft.Data.Sqlite</ProviderName> -</SerializableConnectionString> - Data Source=|DataDirectory|\varManager.db - - - True - - - True - - - False - - - True - - - True - - - False - - - \ No newline at end of file diff --git a/_archived/varManager/Resources/IconHub.ico b/_archived/varManager/Resources/IconHub.ico deleted file mode 100644 index 5d06b9f2857b39f0b5d3395e3e7999ba6bcc3a38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45451 zcmeHQ2V4`$_n!>`f|LYoh=qWPSiy=FB49<4^YlDC1oTw&lwubJvRJ^5oLDFdo((IW z*bpR96!ApE*^r{)4iE(uM5G8w{xgB)x2_3AY2KgtFnKfc-n{pHZ`JR%LyWA^>Ijs5h#!!DKZ6<{ARP;Z)WQ z%>g()gwV$Z;XMI(w3^Td>rl`75JDdtETRL@{VV`mZLBA#x6x?>)v8aLXgM8elUh`Q z#BO=`LR4EZeS$eS_n^ybSfM+OojMkPKmAlI=0Z$B#ciVP3IH_XP{!`KhR+9}P530s zu`|}%zkP1CsB3a3{`*Xq&9AyUKAzJjCUVX{?Yi7cqHm<1?do<=St)r4DzgMu3+ z8%zG|YM{VZ7WR7a=w+ZP=)Bc6hIfBZdoXO5_S(?kUk$+0c7GOlnZ#LwXWH}r^^6Gp z1kP*TiZ6FCdV*!#_jMcH|{@C(TfwziW> z-aXHZi`dk~<$2VK6DzcTQhuPaLogF$#Tj)@jgKGir8t{~9h^ZAJ7qF$*!k<%ug54k zZ^2Dn#sg-z(HU{BKr`v~IA9;M*8k9G_urGlx@soHjRQ}gJ}uNb!={bA*bTqn8t_Im z;?4_Jjl?|91i=fw+z$9I1I}$Ga7E(gVwiiU-z@Kf9lQwtZkzw{Lbj2 z2N=H6->r-a9I*T8Lylb$g9SEq96_Ulwf%piGr;a~JK&*s&2l^ZU1zxs{(jn`<=r+o zIN1Hqt_!%G_8U1ou*xj^^xnk%WVZ#Oey$>3#2caTa#U2*#fujMl22WVj9j5_blFD} zxT)oL$7n#!#)+N^j}5)GJE1n8tbx#$w)Yii*U|D2#DEW6yA?9xduX2DCHHtqXNJAZ zPqVmkp``EHPeqIEb*812(BUCg--E8kBN8#++u^?p6b;uql#RT9|NbiR3z$AWP_^QIJyG2iex!r4M5u@QK}1I#x4h>ssPRL+4)K~oqzs^bE1xO ztvO3cMYQqCv3~vf9TiH>rE`zWun3aPF>h#s{9qA+acwn?0*y zPv}gqmt%FkF8YBX8PWN%Q?IxR(b?xiU$46YL$lKriAj)?m65@Ie(loZP94_wGz+fS zQ5bnsiI!yS=Sx>Bd#exn7p$Df-z^+QOVVOWo4SMkk!w*ClNN>_v!MA@#IiuoeqFST zvr2q{;gR>daXp>`oufAuiFjNRD~hrEJZhtP($TwT3ARrj~lRFJZrO)@+}SsSn@$E8a;|{MhiQT ze(}e5LSctPT{EE8DRG|V?yGTEI%lAI$=jS1ELIa7%kmQG_z0o62`wz(c=^W)`bH@X=Dcxwl6?h6#PeM8n(?ii&SCs^Fl8xszi-776TZS)YHIPFhA2orKsgs#uI zW&%Y{_Fwkg{jLR~_tUOCOii7gqiZ{${J!~1dZ{G{=)L}}L-D6V^;md%t(ctK@7|IH zu`_OkfKUcLDARsT{)@bhy+`RdTH|JPPT;b0(IsiHVQ^K0{|^x&W@NI_pa+Za5tx_- z#*L49VfvRnFJbr*4C*%r0oui>+`#Kz{y&UYNK`4<3=9V*mWWS3%j?)_^$@-%%|j1N z?y~0K^<7Y8u2f_rFmy}5BpF%qX`Iqdr2}mm)qWm*^~|KrDD z#h=D)lXme27tfTZ@_e9<7k`5lG!HiDKPu+jxy2C85 z2}c5%{Gy_j_OzgnFN1l1S*?cklt`x!T1jUD108aDMkgv~S1CFP#1e z0>-G096EIGgHZ0M2<-lDi)ksvXI3oJDoDL#men(?)65;C(_-m{c67&u3k~4ODtl;{ z{qkb2mzQZo%1eDPZ|+>ZsZ*w84Gl9jaea|!ReX}cX>W1(?%lg9;iWf5>9NK5ppHiN ziA##3I$?|v?S8hiOI*Ualyyt^@Zog(z7yi!^W544y*mrFFb!p!o>31k#>9jqSJ<@0 z`)oJV+-K-O8=@Uaei*p{#J#KQA+xh%2DXvPzk+HFdewsDw(Ty8py%e>l zn3fLudxB}jOo#mBK@}ZO(b&0L@Mo#1lcS@f4|0o(iwjTl{Rf{A96jk^z3TXW-V2Q- zX_;;DUmv#z9M!3q%^EG6M@GuwL6_gAJ)a3UeRqyB*^4>014As{GH?dJ?b)=*TnnHN zm_uCebMJ#*Z^z0>AvDjbt}_{g=Ri&l1m=XETzpwv6R zJsc5#8te|?4Xww3uj<-!CP1w00dA)EI;#E%4rIZkan_dS%pEttQ8j?0a^MIv8mdcE z<;cCVTscCPmd(x0!PKc!!OuVc41S&WD{ygf0q$$pf=wGYf}=-{f{1ew;9Ar*kR%X* z$B!R_ms!~$FE0T7W!Qw7mF#UF|(GMSY- zcb(!7JE*E6?RD0VDJv85mA=55ocI&Ieop_x^3o`h;$9gj`SFn>Pm>o<+43}aev@&& z`aJ4VR8l-&h*zE8; zX8%!2_y_$(ej@)7Rj8uMRg_spb*rdZ73D&T;)I5k@DGzx9Ck-_Y5J0)`&2f}9GI)` zQ{ii!>O{Fut-eQfuDnO}@$muv{{A2+Fz~Z`)!VmjSKptOm6cViYb~@!pfv*DR|KRd z=mvqTAtN#Wr&$IUHdPB~XjBbM$=7LR4fxW#GHGa#8ASPWzB(mgSbh0~UJOI3zU+@- zYH%!}pa%KUKdOEVYopF!sJD^Nrz6GihDM%#MZ|!^4>^1l)UK|sB9D(@G<9`!+b0hn zykmgqYvNbN09pCcf7JTF)Chd3<5F}|7}WS8uMjTyhmz74d;%Q7ChcF+u4F#!UCjn) z|00-D6G-|0*kAHLXG{4~qg6i?Hsnk1tqBn-8_tcOB$9372p~%k$3;WX%JG9l0>>k| z@M$x%pkcEv)Mo}W7iLKT9J-XkVM_&I5@sc6oWg>c4RiH41&vLJBx9U{#wKW75)u+3 z9h;!%=jhov@!Xu~+Dcm^&>Dg7KLWDHDQ!pz`3Nt(L_!nRU|ppuVMLv#LQ_$}RI2NA zObLk)bp{QiDU<3dNSrLM!a(BH^3n>q4pmE^_!0J`!f?#+dA+h)jh8OvLcBym;J--d zUXQO(kE{%3;dO+si|!2@X)2$pkeJFhaB2Gq-R``TaRmD&)n3trZ3;SqW!*!zU{8YkF=f)y7t@^5w~B-`kngOImiA?ORo?HceH_qcQnZogR^3Cw3MZ%4S7=`ZrLrM6CbPt#YqxH(d8<377avaZ%DMcb zSo`&uHy_vC6KiihpbC;-9rNerUbb@C6VJTP@V=Eu$Cs2oe8qF?ywlWZ6URJ78P=22 z-&tLmB=8%pN!vQVGdTB;)iiFh^N!cfY`Rv$08p`c%wGMt*jN+UE7ymle&~rhBmr9iH8*^>2p_D4n~7wdjUxg?;cHmm}|g z4Vba%m)I4Y9=SBWU%9QoZxX{hVTL+pC>q$)N5OxQDjtz;y{~NimFVbS-oAM=BP}gW zl(})Ef@E6KJ~-p+H)rRwaOzu0sO2~~?aTnAz7ietx7sLt_ADH}Wv)2!N=q*+_&C^- zT5c7`<4R1`9WZl_(Nv6mom((Q^f1pVjw`N+lF)Tnw2>znAh|Sqyl&tpRsEfk;Zaa_l$5^BDjTV^gbTBjL?9ak7#24nL>kcUv3WX7e zOg(c2VO{mYe0|!mua@jzY?`&1l{D4@B&d$k+4CZ_uh?Cm{_qhC6n1>_Yp`>(xy#b*NZd8)CB*o4x|&;jK~7Q)F8 zr*GdL$L+8;eK5O3BVi2v_Fva%yMwJ9)1F7KIeq{BRLHVZHH_8D&;gIT(^D+~TXhp> z6a&oP$lBruI6pDGufmEiYl|=7>|=Njhn4Lt#st7#vWcTj11a6b8?qfYOgGQy%9|GNscBXoH-3P9%qzd3GI8`Bad_9m`F8{& ziBXYYn)BktCuiH*zIXb&f62P*zT)93eLx1oc^1tp6nfL;NH%NYHUN%04n-O#cd)<# zSm@XvRmSf#hZUXkT5wWf((X;1cMK2)rv=);DYu4jB5pf4=c3Jc02I3ee8YPUI*U!iVV+l9>E~e5<28ZLjt8RTxzghJ9fIm&;-JnqgMgYQ7(ZpO7>W8YfI`;I7yZ;{i=W%l z6jo~jr7lCI`dD<%%U!|c5ph9)L1VAbJ2rX=jRWSp1Vu?ko>2kV?mrjji1W@H06Hh$ zJbzQWGb)CiVWaks?x-YCSXAZ?Li=-HighI!g1-vir0`C;>U!h}3}A3aGxtad%B9SQf z>Dge>g=c-rQnH)^LfgBu!N`TnCUWkE8qwI8l?83GI7Sm}{aIVfrZC43Ozd|@59`V6 zO2=s<)Kv`2ob^CJ!dxis%EZEU#3SAuI&L21Ll3C9tO@50qJC);fMKr%B}cfXg-*}? zB?dito^+0qbxg@2vs~+K5`$}yzdu*=#pqsPYIJ=0Nge%s4MPPi%+r$C3h|7!Yj96GK2PURnjl(XX?M`>Q9-)bi>{8Hv9N&A5e^n*_odAN4~t?@b4M&} z_vPNhpVFV*UXRW8GUBvd{?FU^9Fq#$6>&Xp%@TVY<1v@z2d{tf^eI!^?@(r}Bq{&O zTeHv-8v9yOS&6u-#}${K{JM#b@a`^qb#U_;mGfJHjls%y4(mkkl_XYddiso8K_Hj` z76d(r_ACCh%KS72jadN0NAq8JPLFWtbyUZ3Dn5pe>qkBiO?#A=ym-3$c>{ho8pq%E zWt!9Lk9k8*D*fEnQ56fjb#aA6@4DAP+fzt|Ih-IkHE!GAdC7s7b&@VmRGG^FJ$D5; zxgJT57(8_-KM26{q2jKfa@WY@h!u83gTeiXH7R+?BTgZ+>Tn}ve#q;+PBe1W6R?D~ zlnt~xA1qH!%1iDPfvhTEyPvt)&-pRJ!6^oI;D{Oct)so3q(c5r3U-V{U4ep4>1h1- zOgqOgB{FHivH1)~8-(FeGX^`X(P z{R-i=$g8k?{L7pik!I4_M<=G0AMsesz-M_069NZ2Rlqg|Z@p`UX(x4zRn*h&+RD4S z*z=KGag5n-JAj)wuViOJ-&2BvqjCheOG47%n|Xh$fE=NhP$!uX zbz`EGSS$5x;^$deS&7va?Y9#-*x401joomLdpqnfjdf!tAI^0@9Thc#t8{UKSMof! zgAN7xo`(Igg2(xt_r!B^9(08qi$3=!CWriP;&r$uI8^G%>eS}UxpSWevj;>KT)A-J zU%>{&HR}e3Gr+7icZcG>8zYSe4co(V9F8A2n(Xk)FCUzKuzX!)-jmm9(W`=jf(>cT z>JM(defRDsI9E+HCMjTLkL9-|a8jgrkD+~(b$)klNI(!^4WRb`Js5waq^F-5Hf-3b z>(|FfRNO`{F1?U6LC0%TnRwZ~0pO1rF^4ZIavt|_d<^IP!#U}XgyC(Bx7u0!-rF?A z>aOsiapBG-6~DRY+q4IN?Cb+v`<0$N zQmn(j8W$J0#HGa1O)1&TWk12`SbHqh;FwrACvMhz8$Xr-%`t#yV<=dXWXaYd`-kiD9Ra2zdr12i9?z(PATMf(wjVQ)>iTBhVUwuZaM>4`spZ2D1QW zNejye6Am+aP~G4O>NSR02y;vGn~EnNVsvcC095&o^iplLmZR2WW-UXECMv3*Y8Snln@JQ1Q0<|7{VV z#*-TF=G^wkHWd#Q@3(p1y8lz-NsTvk`&0SfTBqu#)~Wibc$<3rQ}KLjo$4>OPSxMi z{D(7k7sn|THGcuLg!;la!Y9N-ej-_-jiBGV|1Qoh z)#C#=1MIVX0c~^CM)-(i3BL(S@Q6A=<+Zo8?T_%LrKDE-h;XCrO>A?*4Tt+go_5rettTJ__$zs4TC&CHs$Xlh1=S zo%aZT<@qVEy`}r_w`*7Rwv%_wCw#AIJAbeKlg9$G&i7>B|BL=3pWxS&WZvsheJA@* zY;P*1_G#(+Kf(*YEG5lU?6T@qf2nn9pXTw~X^2b$b!pn@Z)$QQPZMhbxYo{r;cu zkBXOQr&4)x)b`ryvV2F!!uNXptIc0BU!L#Kf5-p2|BdN8iXHWQN{%}!Q}^eFs#ERA zsyDXpE!qF3@V%w_-&DT0ME{%8_m<{=Q~OT!AFiaTelAa(j~eQHN7X~bNgQ9KU(in?LR7`7&P`g z=$7DnmH%kXkB}OJW~w_POii7juW0R0bFP0uwr!f)Z?e6r7&OOzfP6P5V`4%A_;G6~m437g zHK31|wbEMSApIyfjFa@E;E=+&O2Y=fv?-;!Rn)ACa;qrZIEW9sODXIwrLen{q7QZA zkgp3VA5t?&3n1k}T1)!;KV`9DC-}_>_>X5>Q)>j8G6HbSgvQtr4LEkH>zEAL- zu>Tipq?^GH$FK1L;$*{&#+h}ES7XZ6dpkhfp#*mHe9qO?waK1Opl1N^KLV2D5mDc5 zK#qM=Vke&2Ae%(|5d8}L)%^*bO-&mEKlOQRL)XbMYQU`Vxdg7LUM6#!0j_2Y!Tu zSWAQEPosFFjLHZP;>p4)tF5{4lh?!`yo5gp4|&ZC!i?H#%4ENqV*f$*WUXHzFd`lq z6VWb@l4Y9;KU!}E632l& zKGEKk_{p|VnOM_~u*h1oj$~xvB-#)q>ujq1pRkFpQv??BHH+Z4bo>Y(S}%$+88f*| z_$RBax#N#8)wTwPz%P%I{c6npN1pv}ZEwY2d8bLNQR6O;M{cjJ+}QgM*?vRgNB0olD}IEX^8BsAo?lVpT;Do*o5?E6!Vb5C zTT40r$ihst$-(YeU+hSpyzdeE5v^~$sq$o9xB5xd(_ZI@T1YOll^Edw?;r#1S+Qyp$SeXkth;|bupq`0N{TphVzg9pHRYI z=s)rstD*{3RJn>WtEg@jHLIdrNKxFR@s!T)BE^*wXEaZX4KoL3;{W;JELdqxwMGD* zlhO4>2y;VSC(*SEuhlRVfO0ksXqSq=Rt(U#)Ng-(f4R?!>pQ+gx~hE2uPp|I@Ab7& zn>?YnzV@m2iS?}$xW0G$gdeq0YJ3R!Z}p$hL;XH9dXGx}4m7e)$dbzqWuJJLg}y~c ze5aQDPK#`lTy7})Kg#5HQbZd;iC8q0ee}+h&`r>q-lI08{hHp3%6kvmkoE~( zHGPv0#e|R}mm4bngl>7?#3S1zmmAtXfrCnsO>!pq-)f(%vp(fk`<36jYKZs~u_VWz z+(wjT(dM*IUK`t(*MC`llWoHogf^x9`r1a=i0wr9Lf+Q3m5DxxevR#hvj4TVW!WeD zRG0F%*siiK9e*P|b+Jd5`BvLi_R+l$F<$>#>W6fFZG!gEJ&-gGUxCH(YwiAj>?eI} z0Dns1YB0D2jM=~$=`@3x3$vsEKJh4kYuQTCI<~5Wo>Q=3X2VQ8r{K_GrIAv7_a`b0 z)SrCJ)l^2Z^7_~1Tv}UyVjN0Pq!ZyGXl?z8?`g{#S0g<&^(W5(MfR!xv!J&Ag#Tph z1a5-XWS{6SYkq2d`V)Gnv@ZC`u_kPyHX_#rKiMwP57DY~`4`VikWR!W_an+gf1)px vHI}#k5wcVo5)y*8y8vc3wJ)k8`?X}$7ah_Kn$R;(zCt~-GL&alJ}>=0A=}t% diff --git a/_archived/varManager/Resources/hub.ico b/_archived/varManager/Resources/hub.ico deleted file mode 100644 index e126b10318bcff737f2418b38abe9331d61b395b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16958 zcmeHO3rtjJ7M@`SW`+@%0R=|H9iAcz)&~qT0}Kox6{(S3F`z4G>qe_~#hUm`5bIX$ zf?79OMWgjy>svq&*H(AcWV6+1G`lfwVm6v>x2tQ{;A#bgZ~t@0d!5TX7-=WAGM8ND z-ZSUF=X~e&|NQ47kx1E3PL72A)=QGC5=pp3B1vK=BS~u5Np$`QQ%fXt+8tl9>$ZM+ z5_a_SlYHM_ZNSI94}brR0iXYEwci*2zWDEtG2qqw&&kO_Oiav=*{)v2fByV=l$4Z+ z@P~(oBP=XTM0dWkB=8<5fKqc zNJtRwe;}KA75|DAD=>HNT#?Qc58JkF6VdAH>p@3INQgjRwrrWeH+Jk;%$YL>H*em= z^y$+Do*%#lUd3NfP=LC+I+4DWm6ceza-~2czt+^$ASx;f2M!#7N~Pkyn>lkPv|259 zef#!pOr1KFyS{$?IulREV6a4-C;pgXvrAwD0C@6@-V>X*XHp$D&1H}g6TC!vbu3Wi-!Jr(bbIOz{xNzYDXA2%P<@Tsiqc|)S^9vR% zfYoY6U|=9en=xYsR}0Awe4WhC&j;1lKH}!bdBy*{PSMfPLf-N;`lMK}zb`8*!>n1e z1RBNujT<+Fd*Y`#g6whl@L{1&o;r03YPDM6vwx@^T0LjvYG&olYmv zH5v`7tE(ZG%Q+gw|IwpIh3_fWDK7|9VqzjUrz~E)7&LEC4ta>x8J}12(|kRD{(J|y z+qZAWz<~orbeiuK3WY!;oA9`H?ARe%3rM9>A#n%VASMihoTU%QlaBkeV(P3TePIsC=MvNHY@EmtzJp9h9 z_-XzgI&`Rm-c-jYPMqjKccwGdw>x+42y>w`p6@~PDt=db(R@aA+|~E?bgBz_z1|~U z`*9v#zY_ekwyCPB@)o9-dG0I0@1bvA21j3cefWL*pA-Xqjh~u}N1ii=sN@k#m?7MFg#;-~$%J$v?G z^XAQHYinbIYzOrJAk`WvHGn~x&6ekS_&~55MdqyXVgKwG5Z2QH|bXz!VF3y-w;)~p7 zXcR)9$*unyvGI&}I(H2pG_ zXmHNbfG@Hd@T>T@?Ri|{r@ctpr=^}0;ir4*W$*{}c6wr={ho}B448~2NSI&ctoGrz zc}%e^d^wNR0hZ_XW2i3t*~!GiV>1 zlRa!04%=kD(9j^*ps=t|cpmxQXfz@%Ee(q2eLIp76|4k4W-;)g5f7^~ zA(wG=2MShy9#{*|#`dxCW-%fZFZQxGCH#)7frP&-yiAZ06EqZOSq!(Bk726*7Xn=- zm9c#JCzm%5SWQ&QY<)wL|8Bx;miG<#+|mdw%LCpo?(mnEmZGt-k@NkSF=Iqy$jAKA z)zu~REa*KC^1Xe}o|kpJoQ={rkDTCB=drKg(e$s2|NAe5{l2)6>(1KBoPcFtq~Mkk4vC7EV+oL+K~O znbdTA$9i~A3ML>(?%2aw6urn60}PKT#Dp-F7H63co6Sd2l{8PJ6Uoy0YdL-{Z&*DD z3DBTaU&8p0;DV(Ek%6{es=Z$9+5vxNW+vx*%6;lJ_2B33}iLVmKMPV^o|3~4}8DACokRW zwJKn90luqY3!F73e3Qo}`J9Oe^?#A~J;!}ab-=>Jurye&^1e+ z(EB?)-QDLXT@W&c1S2I~9Shu>BH9F)Cq^MJ1)|%No>%3Mx zmnYzNCI2<2`|x|P|M42ffY1Lv|5FUOt*5W?_rCb|#lJ89efjUJfBiEC`g88{G2h?+ O|D7#wd`Ew^!2bbjxZ8UG diff --git a/_archived/varManager/Resources/hub.png b/_archived/varManager/Resources/hub.png deleted file mode 100644 index 0bbfc405c01725eea4ba2e73a5517ab03ac086be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4127 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 diff --git a/_archived/varManager/Resources/star.psd b/_archived/varManager/Resources/star.psd deleted file mode 100644 index c071d2ce3db9f6ceaefafd4d6601e6a9bf55c476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106490 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

r;vW)BCq)^ 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 Kx}5*h!T$id+ll%B diff --git a/_archived/varManager/Resources/starEmpty.png b/_archived/varManager/Resources/starEmpty.png deleted file mode 100644 index 3fbcd4bc7e293268bf129de30c4a925e8c2f0ed7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5181 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 XC^GR^HUa+wguz@kyE#ZU?K<=y=^*{> diff --git a/_archived/varManager/Resources/starFull.png b/_archived/varManager/Resources/starFull.png deleted file mode 100644 index e42adecd0edd1ac0b971c10de34a40de359790b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5159 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 diff --git a/_archived/varManager/Resources/starTriQuarter.png b/_archived/varManager/Resources/starTriQuarter.png deleted file mode 100644 index 8a667da7a4c9317126b3aaa12128586f142f4dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6634 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 diff --git a/_archived/varManager/SimpleJSON/JSON.cs b/_archived/varManager/SimpleJSON/JSON.cs deleted file mode 100644 index 8af87f9..0000000 --- a/_archived/varManager/SimpleJSON/JSON.cs +++ /dev/null @@ -1,14 +0,0 @@ -锘縰sing System; - -namespace SimpleJSON -{ - // Token: 0x02000CCD RID: 3277 - public static class JSON - { - // Token: 0x060062FB RID: 25339 RVA: 0x0024B7DB File Offset: 0x00249BDB - public static JSONNode Parse(string aJSON) - { - return JSONNode.Parse(aJSON); - } - } -} diff --git a/_archived/varManager/SimpleJSON/JSONArray.cs b/_archived/varManager/SimpleJSON/JSONArray.cs deleted file mode 100644 index f5830ac..0000000 --- a/_archived/varManager/SimpleJSON/JSONArray.cs +++ /dev/null @@ -1,173 +0,0 @@ -锘縰sing System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Text; - -namespace SimpleJSON -{ - // Token: 0x02000CC9 RID: 3273 - public class JSONArray : JSONNode, IEnumerable - { - // Token: 0x17000E8F RID: 3727 - public override JSONNode this[int aIndex] - { - get - { - if (aIndex < 0 || aIndex >= this.m_List.Count) - { - return new JSONLazyCreator(this); - } - return this.m_List[aIndex]; - } - set - { - if (aIndex < 0 || aIndex >= this.m_List.Count) - { - this.m_List.Add(value); - } - else - { - this.m_List[aIndex] = value; - } - } - } - - // Token: 0x17000E90 RID: 3728 - public override JSONNode this[string aKey] - { - get - { - return new JSONLazyCreator(this); - } - set - { - this.m_List.Add(value); - } - } - - // Token: 0x17000E91 RID: 3729 - // (get) Token: 0x060062BA RID: 25274 RVA: 0x0024A356 File Offset: 0x00248756 - public override int Count - { - get - { - return this.m_List.Count; - } - } - - // Token: 0x060062BB RID: 25275 RVA: 0x0024A363 File Offset: 0x00248763 - public override void Add(string aKey, JSONNode aItem) - { - this.m_List.Add(aItem); - } - - // Token: 0x060062BC RID: 25276 RVA: 0x0024A374 File Offset: 0x00248774 - public override JSONNode Remove(int aIndex) - { - if (aIndex < 0 || aIndex >= this.m_List.Count) - { - return null; - } - JSONNode result = this.m_List[aIndex]; - this.m_List.RemoveAt(aIndex); - return result; - } - - // Token: 0x060062BD RID: 25277 RVA: 0x0024A3B5 File Offset: 0x002487B5 - public override JSONNode Remove(JSONNode aNode) - { - this.m_List.Remove(aNode); - return aNode; - } - - // Token: 0x17000E92 RID: 3730 - // (get) Token: 0x060062BE RID: 25278 RVA: 0x0024A3C8 File Offset: 0x002487C8 - public override IEnumerable Childs - { - get - { - foreach (JSONNode N in this.m_List) - { - yield return N; - } - yield break; - } - } - - // Token: 0x060062BF RID: 25279 RVA: 0x0024A3EC File Offset: 0x002487EC - public IEnumerator GetEnumerator() - { - foreach (JSONNode N in this.m_List) - { - yield return N; - } - yield break; - } - - // Token: 0x060062C0 RID: 25280 RVA: 0x0024A408 File Offset: 0x00248808 - public override string ToString() - { - string text = "[ "; - foreach (JSONNode jsonnode in this.m_List) - { - if (text.Length > 2) - { - text += ", "; - } - text += jsonnode.ToString(); - } - text += " ]"; - return text; - } - - // Token: 0x060062C1 RID: 25281 RVA: 0x0024A498 File Offset: 0x00248898 - public override string ToString(string aPrefix) - { - string text = "[ "; - foreach (JSONNode jsonnode in this.m_List) - { - if (text.Length > 3) - { - text += ", "; - } - text = text + "\n" + aPrefix + " "; - text += jsonnode.ToString(aPrefix + " "); - } - text = text + "\n" + aPrefix + "]"; - return text; - } - - // Token: 0x060062C2 RID: 25282 RVA: 0x0024A548 File Offset: 0x00248948 - public override void ToString(string aPrefix, StringBuilder sb) - { - sb.Append("[ "); - bool flag = true; - foreach (JSONNode jsonnode in this.m_List) - { - if (!flag) - { - sb.Append(", "); - } - flag = false; - sb.Append("\n" + aPrefix + " "); - jsonnode.ToString(aPrefix + " ", sb); - } - sb.Append("\n" + aPrefix + "]"); - } - - // Token: 0x060062C3 RID: 25283 RVA: 0x0024A600 File Offset: 0x00248A00 - public override void Serialize(BinaryWriter aWriter) - { - aWriter.Write((byte)1); - aWriter.Write(this.m_List.Count); - for (int i = 0; i < this.m_List.Count; i++) - { - this.m_List[i].Serialize(aWriter); - } - } - - // Token: 0x040051CE RID: 20942 - private List m_List = new List(); - } -} diff --git a/_archived/varManager/SimpleJSON/JSONBinaryTag.cs b/_archived/varManager/SimpleJSON/JSONBinaryTag.cs deleted file mode 100644 index 611148f..0000000 --- a/_archived/varManager/SimpleJSON/JSONBinaryTag.cs +++ /dev/null @@ -1,23 +0,0 @@ -锘縰sing System; - -namespace SimpleJSON -{ - // Token: 0x02000CC7 RID: 3271 - public enum JSONBinaryTag - { - // Token: 0x040051C7 RID: 20935 - Array = 1, - // Token: 0x040051C8 RID: 20936 - Class, - // Token: 0x040051C9 RID: 20937 - Value, - // Token: 0x040051CA RID: 20938 - IntValue, - // Token: 0x040051CB RID: 20939 - DoubleValue, - // Token: 0x040051CC RID: 20940 - BoolValue, - // Token: 0x040051CD RID: 20941 - FloatValue - } -} diff --git a/_archived/varManager/SimpleJSON/JSONClass.cs b/_archived/varManager/SimpleJSON/JSONClass.cs deleted file mode 100644 index 245b997..0000000 --- a/_archived/varManager/SimpleJSON/JSONClass.cs +++ /dev/null @@ -1,259 +0,0 @@ -锘縰sing System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; - -namespace SimpleJSON -{ - // Token: 0x02000CCA RID: 3274 - public class JSONClass : JSONNode, IEnumerable - { - // Token: 0x17000E93 RID: 3731 - public override JSONNode this[string aKey] - { - get - { - if (this.m_Dict.ContainsKey(aKey)) - { - return this.m_Dict[aKey]; - } - return new JSONLazyCreator(this, aKey); - } - set - { - if (this.m_Dict.ContainsKey(aKey)) - { - this.m_Dict[aKey] = value; - } - else - { - this.m_Dict.Add(aKey, value); - } - } - } - - // Token: 0x17000E94 RID: 3732 - public override JSONNode this[int aIndex] - { - get - { - if (aIndex < 0 || aIndex >= this.m_Dict.Count) - { - return null; - } - return this.m_Dict.ElementAt(aIndex).Value; - } - set - { - if (aIndex < 0 || aIndex >= this.m_Dict.Count) - { - return; - } - string key = this.m_Dict.ElementAt(aIndex).Key; - this.m_Dict[key] = value; - } - } - - // Token: 0x17000E95 RID: 3733 - // (get) Token: 0x060062C9 RID: 25289 RVA: 0x0024AA20 File Offset: 0x00248E20 - public override int Count - { - get - { - return this.m_Dict.Count; - } - } - - // Token: 0x060062CA RID: 25290 RVA: 0x0024AA2D File Offset: 0x00248E2D - public bool HasKey(string aKey) - { - return this.m_Dict.ContainsKey(aKey); - } - - // Token: 0x060062CB RID: 25291 RVA: 0x0024AA3C File Offset: 0x00248E3C - public override void Add(string aKey, JSONNode aItem) - { - if (!string.IsNullOrEmpty(aKey)) - { - if (this.m_Dict.ContainsKey(aKey)) - { - this.m_Dict[aKey] = aItem; - } - else - { - this.m_Dict.Add(aKey, aItem); - } - } - else - { - this.m_Dict.Add(Guid.NewGuid().ToString(), aItem); - } - } - - // Token: 0x060062CC RID: 25292 RVA: 0x0024AAA8 File Offset: 0x00248EA8 - public override JSONNode Remove(string aKey) - { - if (!this.m_Dict.ContainsKey(aKey)) - { - return null; - } - JSONNode result = this.m_Dict[aKey]; - this.m_Dict.Remove(aKey); - return result; - } - - // Token: 0x060062CD RID: 25293 RVA: 0x0024AAE4 File Offset: 0x00248EE4 - public override JSONNode Remove(int aIndex) - { - if (aIndex < 0 || aIndex >= this.m_Dict.Count) - { - return null; - } - KeyValuePair keyValuePair = this.m_Dict.ElementAt(aIndex); - this.m_Dict.Remove(keyValuePair.Key); - return keyValuePair.Value; - } - - // Token: 0x060062CE RID: 25294 RVA: 0x0024AB34 File Offset: 0x00248F34 - public override JSONNode Remove(JSONNode aNode) - { - JSONNode result; - try - { - KeyValuePair keyValuePair = (from k in this.m_Dict - where k.Value == aNode - select k).First>(); - this.m_Dict.Remove(keyValuePair.Key); - result = aNode; - } - catch - { - result = null; - } - return result; - } - - // Token: 0x17000E96 RID: 3734 - // (get) Token: 0x060062CF RID: 25295 RVA: 0x0024ABA4 File Offset: 0x00248FA4 - public IEnumerable Keys - { - get - { - foreach (KeyValuePair N in this.m_Dict) - { - yield return N.Key; - } - yield break; - } - } - - // Token: 0x17000E97 RID: 3735 - // (get) Token: 0x060062D0 RID: 25296 RVA: 0x0024ABC8 File Offset: 0x00248FC8 - public override IEnumerable Childs - { - get - { - foreach (KeyValuePair N in this.m_Dict) - { - yield return N.Value; - } - yield break; - } - } - - // Token: 0x060062D1 RID: 25297 RVA: 0x0024ABEC File Offset: 0x00248FEC - public IEnumerator GetEnumerator() - { - foreach (KeyValuePair N in this.m_Dict) - { - yield return N; - } - yield break; - } - - // Token: 0x060062D2 RID: 25298 RVA: 0x0024AC08 File Offset: 0x00249008 - public override string ToString() - { - string text = "{"; - foreach (KeyValuePair keyValuePair in this.m_Dict) - { - if (text.Length > 2) - { - text += ", "; - } - string text2 = text; - text = string.Concat(new string[] - { - text2, - "\"", - JSONNode.Escape(keyValuePair.Key), - "\":", - keyValuePair.Value.ToString() - }); - } - text += "}"; - return text; - } - - // Token: 0x060062D3 RID: 25299 RVA: 0x0024ACC8 File Offset: 0x002490C8 - public override string ToString(string aPrefix) - { - string text = "{ "; - foreach (KeyValuePair keyValuePair in this.m_Dict) - { - if (text.Length > 3) - { - text += ", "; - } - text = text + "\n" + aPrefix + " "; - string text2 = text; - text = string.Concat(new string[] - { - text2, - "\"", - JSONNode.Escape(keyValuePair.Key), - "\" : ", - keyValuePair.Value.ToString(aPrefix + " ") - }); - } - text = text + "\n" + aPrefix + "}"; - return text; - } - - // Token: 0x060062D4 RID: 25300 RVA: 0x0024ADAC File Offset: 0x002491AC - public override void ToString(string aPrefix, StringBuilder sb) - { - bool flag = true; - sb.Append("{ "); - foreach (KeyValuePair keyValuePair in this.m_Dict) - { - if (!flag) - { - sb.Append(", "); - } - flag = false; - sb.Append("\n" + aPrefix + " "); - sb.Append("\"" + JSONNode.Escape(keyValuePair.Key) + "\" : "); - keyValuePair.Value.ToString(aPrefix + " ", sb); - } - sb.Append("\n" + aPrefix + "}"); - } - - // Token: 0x060062D5 RID: 25301 RVA: 0x0024AE8C File Offset: 0x0024928C - public override void Serialize(BinaryWriter aWriter) - { - aWriter.Write((byte)2); - aWriter.Write(this.m_Dict.Count); - foreach (string text in this.m_Dict.Keys) - { - aWriter.Write(text); - this.m_Dict[text].Serialize(aWriter); - } - } - - // Token: 0x040051CF RID: 20943 - private Dictionary m_Dict = new Dictionary(); - } -} diff --git a/_archived/varManager/SimpleJSON/JSONData.cs b/_archived/varManager/SimpleJSON/JSONData.cs deleted file mode 100644 index 4f4944d..0000000 --- a/_archived/varManager/SimpleJSON/JSONData.cs +++ /dev/null @@ -1,112 +0,0 @@ -锘縰sing System; -using System.IO; -using System.Text; - -namespace SimpleJSON -{ - // Token: 0x02000CCB RID: 3275 - public class JSONData : JSONNode - { - // Token: 0x060062D6 RID: 25302 RVA: 0x0024B3A7 File Offset: 0x002497A7 - public JSONData(string aData) - { - this.m_Data = aData; - } - - // Token: 0x060062D7 RID: 25303 RVA: 0x0024B3B6 File Offset: 0x002497B6 - public JSONData(float aData) - { - this.AsFloat = aData; - } - - // Token: 0x060062D8 RID: 25304 RVA: 0x0024B3C5 File Offset: 0x002497C5 - public JSONData(double aData) - { - this.AsDouble = aData; - } - - // Token: 0x060062D9 RID: 25305 RVA: 0x0024B3D4 File Offset: 0x002497D4 - public JSONData(bool aData) - { - this.AsBool = aData; - } - - // Token: 0x060062DA RID: 25306 RVA: 0x0024B3E3 File Offset: 0x002497E3 - public JSONData(int aData) - { - this.AsInt = aData; - } - - // Token: 0x17000E98 RID: 3736 - // (get) Token: 0x060062DB RID: 25307 RVA: 0x0024B3F2 File Offset: 0x002497F2 - // (set) Token: 0x060062DC RID: 25308 RVA: 0x0024B3FA File Offset: 0x002497FA - public override string Value - { - get - { - return this.m_Data; - } - set - { - this.m_Data = value; - } - } - - // Token: 0x060062DD RID: 25309 RVA: 0x0024B403 File Offset: 0x00249803 - public override string ToString() - { - return "\"" + JSONNode.Escape(this.m_Data) + "\""; - } - - // Token: 0x060062DE RID: 25310 RVA: 0x0024B41F File Offset: 0x0024981F - public override string ToString(string aPrefix) - { - return "\"" + JSONNode.Escape(this.m_Data) + "\""; - } - - // Token: 0x060062DF RID: 25311 RVA: 0x0024B43B File Offset: 0x0024983B - public override void ToString(string aPrefix, StringBuilder sb) - { - sb.Append("\"" + JSONNode.Escape(this.m_Data) + "\""); - } - - // Token: 0x060062E0 RID: 25312 RVA: 0x0024B460 File Offset: 0x00249860 - public override void Serialize(BinaryWriter aWriter) - { - JSONData jsondata = new JSONData(string.Empty); - jsondata.AsInt = this.AsInt; - if (jsondata.m_Data == this.m_Data) - { - aWriter.Write((byte)4); - aWriter.Write(this.AsInt); - return; - } - jsondata.AsFloat = this.AsFloat; - if (jsondata.m_Data == this.m_Data) - { - aWriter.Write((byte)7); - aWriter.Write(this.AsFloat); - return; - } - jsondata.AsDouble = this.AsDouble; - if (jsondata.m_Data == this.m_Data) - { - aWriter.Write((byte)5); - aWriter.Write(this.AsDouble); - return; - } - jsondata.AsBool = this.AsBool; - if (jsondata.m_Data == this.m_Data) - { - aWriter.Write((byte)6); - aWriter.Write(this.AsBool); - return; - } - aWriter.Write((byte)3); - aWriter.Write(this.m_Data); - } - - // Token: 0x040051D0 RID: 20944 - private string m_Data; - } -} diff --git a/_archived/varManager/SimpleJSON/JSONLazyCreator.cs b/_archived/varManager/SimpleJSON/JSONLazyCreator.cs deleted file mode 100644 index 470bffb..0000000 --- a/_archived/varManager/SimpleJSON/JSONLazyCreator.cs +++ /dev/null @@ -1,236 +0,0 @@ -锘縰sing System; -using System.Text; - -namespace SimpleJSON -{ - // Token: 0x02000CCC RID: 3276 - internal class JSONLazyCreator : JSONNode - { - // Token: 0x060062E1 RID: 25313 RVA: 0x0024B563 File Offset: 0x00249963 - public JSONLazyCreator(JSONNode aNode) - { - this.m_Node = aNode; - this.m_Key = null; - } - - // Token: 0x060062E2 RID: 25314 RVA: 0x0024B579 File Offset: 0x00249979 - public JSONLazyCreator(JSONNode aNode, string aKey) - { - this.m_Node = aNode; - this.m_Key = aKey; - } - - // Token: 0x060062E3 RID: 25315 RVA: 0x0024B58F File Offset: 0x0024998F - private void Set(JSONNode aVal) - { - if (this.m_Key == null) - { - this.m_Node.Add(aVal); - } - else - { - this.m_Node.Add(this.m_Key, aVal); - } - this.m_Node = null; - } - - // Token: 0x17000E99 RID: 3737 - public override JSONNode this[int aIndex] - { - get - { - return new JSONLazyCreator(this); - } - set - { - this.Set(new JSONArray - { - value - }); - } - } - - // Token: 0x17000E9A RID: 3738 - public override JSONNode this[string aKey] - { - get - { - return new JSONLazyCreator(this, aKey); - } - set - { - this.Set(new JSONClass - { - { - aKey, - value - } - }); - } - } - - // Token: 0x060062E8 RID: 25320 RVA: 0x0024B620 File Offset: 0x00249A20 - public override void Add(JSONNode aItem) - { - this.Set(new JSONArray - { - aItem - }); - } - - // Token: 0x060062E9 RID: 25321 RVA: 0x0024B644 File Offset: 0x00249A44 - public override void Add(string aKey, JSONNode aItem) - { - this.Set(new JSONClass - { - { - aKey, - aItem - } - }); - } - - // Token: 0x060062EA RID: 25322 RVA: 0x0024B666 File Offset: 0x00249A66 - public static bool operator ==(JSONLazyCreator a, object b) - { - return b == null || object.ReferenceEquals(a, b); - } - - // Token: 0x060062EB RID: 25323 RVA: 0x0024B677 File Offset: 0x00249A77 - public static bool operator !=(JSONLazyCreator a, object b) - { - return !(a == b); - } - - // Token: 0x060062EC RID: 25324 RVA: 0x0024B683 File Offset: 0x00249A83 - public override bool Equals(object obj) - { - return obj == null || object.ReferenceEquals(this, obj); - } - - // Token: 0x060062ED RID: 25325 RVA: 0x0024B694 File Offset: 0x00249A94 - public override int GetHashCode() - { - return base.GetHashCode(); - } - - // Token: 0x060062EE RID: 25326 RVA: 0x0024B69C File Offset: 0x00249A9C - public override string ToString() - { - return string.Empty; - } - - // Token: 0x060062EF RID: 25327 RVA: 0x0024B6A3 File Offset: 0x00249AA3 - public override string ToString(string aPrefix) - { - return string.Empty; - } - - // Token: 0x060062F0 RID: 25328 RVA: 0x0024B6AA File Offset: 0x00249AAA - public override void ToString(string aPrefix, StringBuilder sb) - { - } - - // Token: 0x17000E9B RID: 3739 - // (get) Token: 0x060062F1 RID: 25329 RVA: 0x0024B6AC File Offset: 0x00249AAC - // (set) Token: 0x060062F2 RID: 25330 RVA: 0x0024B6C8 File Offset: 0x00249AC8 - public override int AsInt - { - get - { - JSONData aVal = new JSONData(0); - this.Set(aVal); - return 0; - } - set - { - JSONData aVal = new JSONData(value); - this.Set(aVal); - } - } - - // Token: 0x17000E9C RID: 3740 - // (get) Token: 0x060062F3 RID: 25331 RVA: 0x0024B6E4 File Offset: 0x00249AE4 - // (set) Token: 0x060062F4 RID: 25332 RVA: 0x0024B708 File Offset: 0x00249B08 - public override float AsFloat - { - get - { - JSONData aVal = new JSONData(0f); - this.Set(aVal); - return 0f; - } - set - { - JSONData aVal = new JSONData(value); - this.Set(aVal); - } - } - - // Token: 0x17000E9D RID: 3741 - // (get) Token: 0x060062F5 RID: 25333 RVA: 0x0024B724 File Offset: 0x00249B24 - // (set) Token: 0x060062F6 RID: 25334 RVA: 0x0024B750 File Offset: 0x00249B50 - public override double AsDouble - { - get - { - JSONData aVal = new JSONData(0.0); - this.Set(aVal); - return 0.0; - } - set - { - JSONData aVal = new JSONData(value); - this.Set(aVal); - } - } - - // Token: 0x17000E9E RID: 3742 - // (get) Token: 0x060062F7 RID: 25335 RVA: 0x0024B76C File Offset: 0x00249B6C - // (set) Token: 0x060062F8 RID: 25336 RVA: 0x0024B788 File Offset: 0x00249B88 - public override bool AsBool - { - get - { - JSONData aVal = new JSONData(false); - this.Set(aVal); - return false; - } - set - { - JSONData aVal = new JSONData(value); - this.Set(aVal); - } - } - - // Token: 0x17000E9F RID: 3743 - // (get) Token: 0x060062F9 RID: 25337 RVA: 0x0024B7A4 File Offset: 0x00249BA4 - public override JSONArray AsArray - { - get - { - JSONArray jsonarray = new JSONArray(); - this.Set(jsonarray); - return jsonarray; - } - } - - // Token: 0x17000EA0 RID: 3744 - // (get) Token: 0x060062FA RID: 25338 RVA: 0x0024B7C0 File Offset: 0x00249BC0 - public override JSONClass AsObject - { - get - { - JSONClass jsonclass = new JSONClass(); - this.Set(jsonclass); - return jsonclass; - } - } - - // Token: 0x040051D1 RID: 20945 - private JSONNode m_Node; - - // Token: 0x040051D2 RID: 20946 - private string m_Key; - } -} diff --git a/_archived/varManager/SimpleJSON/JSONNode.cs b/_archived/varManager/SimpleJSON/JSONNode.cs deleted file mode 100644 index 50c53f7..0000000 --- a/_archived/varManager/SimpleJSON/JSONNode.cs +++ /dev/null @@ -1,695 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Text; - -namespace SimpleJSON -{ - // Token: 0x02000CC8 RID: 3272 - public class JSONNode - { - // Token: 0x06006284 RID: 25220 RVA: 0x002495C2 File Offset: 0x002479C2 - public virtual void Add(string aKey, JSONNode aItem) - { - } - - // Token: 0x17000E83 RID: 3715 - public virtual JSONNode this[int aIndex] - { - get - { - return null; - } - set - { - } - } - - // Token: 0x17000E84 RID: 3716 - public virtual JSONNode this[string aKey] - { - get - { - return null; - } - set - { - } - } - - // Token: 0x17000E85 RID: 3717 - // (get) Token: 0x06006289 RID: 25225 RVA: 0x002495CE File Offset: 0x002479CE - // (set) Token: 0x0600628A RID: 25226 RVA: 0x002495D5 File Offset: 0x002479D5 - public virtual string Value - { - get - { - return string.Empty; - } - set - { - } - } - - // Token: 0x17000E86 RID: 3718 - // (get) Token: 0x0600628B RID: 25227 RVA: 0x002495D7 File Offset: 0x002479D7 - public virtual int Count - { - get - { - return 0; - } - } - - // Token: 0x0600628C RID: 25228 RVA: 0x002495DA File Offset: 0x002479DA - public virtual void Add(JSONNode aItem) - { - this.Add(string.Empty, aItem); - } - - // Token: 0x0600628D RID: 25229 RVA: 0x002495E8 File Offset: 0x002479E8 - public virtual JSONNode Remove(string aKey) - { - return null; - } - - // Token: 0x0600628E RID: 25230 RVA: 0x002495EB File Offset: 0x002479EB - public virtual JSONNode Remove(int aIndex) - { - return null; - } - - // Token: 0x0600628F RID: 25231 RVA: 0x002495EE File Offset: 0x002479EE - public virtual JSONNode Remove(JSONNode aNode) - { - return aNode; - } - - // Token: 0x17000E87 RID: 3719 - // (get) Token: 0x06006290 RID: 25232 RVA: 0x002495F4 File Offset: 0x002479F4 - public virtual IEnumerable Childs - { - get - { - yield break; - } - } - - // Token: 0x17000E88 RID: 3720 - // (get) Token: 0x06006291 RID: 25233 RVA: 0x00249610 File Offset: 0x00247A10 - public IEnumerable DeepChilds - { - get - { - foreach (JSONNode C in this.Childs) - { - foreach (JSONNode D in C.DeepChilds) - { - yield return D; - } - } - yield break; - } - } - - // Token: 0x06006292 RID: 25234 RVA: 0x00249633 File Offset: 0x00247A33 - public override string ToString() - { - return "JSONNode"; - } - - // Token: 0x06006293 RID: 25235 RVA: 0x0024963A File Offset: 0x00247A3A - public virtual string ToString(string aPrefix) - { - return "JSONNode"; - } - - // Token: 0x06006294 RID: 25236 RVA: 0x00249641 File Offset: 0x00247A41 - public virtual void ToString(string aPrefix, StringBuilder sb) - { - } - - // Token: 0x17000E89 RID: 3721 - // (get) Token: 0x06006295 RID: 25237 RVA: 0x00249644 File Offset: 0x00247A44 - // (set) Token: 0x06006296 RID: 25238 RVA: 0x00249668 File Offset: 0x00247A68 - public virtual int AsInt - { - get - { - int result = 0; - if (int.TryParse(this.Value, out result)) - { - return result; - } - return 0; - } - set - { - this.Value = value.ToString(); - } - } - - // Token: 0x17000E8A RID: 3722 - // (get) Token: 0x06006297 RID: 25239 RVA: 0x00249680 File Offset: 0x00247A80 - // (set) Token: 0x06006298 RID: 25240 RVA: 0x002496AC File Offset: 0x00247AAC - public virtual float AsFloat - { - get - { - float result = 0f; - if (float.TryParse(this.Value, out result)) - { - return result; - } - return 0f; - } - set - { - this.Value = value.ToString(); - } - } - - // Token: 0x17000E8B RID: 3723 - // (get) Token: 0x06006299 RID: 25241 RVA: 0x002496C4 File Offset: 0x00247AC4 - // (set) Token: 0x0600629A RID: 25242 RVA: 0x002496F8 File Offset: 0x00247AF8 - public virtual double AsDouble - { - get - { - double result = 0.0; - if (double.TryParse(this.Value, out result)) - { - return result; - } - return 0.0; - } - set - { - this.Value = value.ToString(); - } - } - - // Token: 0x17000E8C RID: 3724 - // (get) Token: 0x0600629B RID: 25243 RVA: 0x00249710 File Offset: 0x00247B10 - // (set) Token: 0x0600629C RID: 25244 RVA: 0x00249741 File Offset: 0x00247B41 - public virtual bool AsBool - { - get - { - bool result = false; - if (bool.TryParse(this.Value, out result)) - { - return result; - } - return !string.IsNullOrEmpty(this.Value); - } - set - { - this.Value = ((!value) ? "false" : "true"); - } - } - - // Token: 0x17000E8D RID: 3725 - // (get) Token: 0x0600629D RID: 25245 RVA: 0x0024975E File Offset: 0x00247B5E - public virtual JSONArray AsArray - { - get - { - return this as JSONArray; - } - } - - // Token: 0x17000E8E RID: 3726 - // (get) Token: 0x0600629E RID: 25246 RVA: 0x00249766 File Offset: 0x00247B66 - public virtual JSONClass AsObject - { - get - { - return this as JSONClass; - } - } - - // Token: 0x0600629F RID: 25247 RVA: 0x0024976E File Offset: 0x00247B6E - public static implicit operator JSONNode(string s) - { - return new JSONData(s); - } - - // Token: 0x060062A0 RID: 25248 RVA: 0x00249776 File Offset: 0x00247B76 - public static implicit operator string(JSONNode d) - { - return (!(d == null)) ? d.Value : null; - } - - // Token: 0x060062A1 RID: 25249 RVA: 0x00249790 File Offset: 0x00247B90 - public static bool operator ==(JSONNode a, object b) - { - return (b == null && a is JSONLazyCreator) || object.ReferenceEquals(a, b); - } - - // Token: 0x060062A2 RID: 25250 RVA: 0x002497AC File Offset: 0x00247BAC - public static bool operator !=(JSONNode a, object b) - { - return !(a == b); - } - - // Token: 0x060062A3 RID: 25251 RVA: 0x002497B8 File Offset: 0x00247BB8 - public override bool Equals(object obj) - { - return object.ReferenceEquals(this, obj); - } - - // Token: 0x060062A4 RID: 25252 RVA: 0x002497C1 File Offset: 0x00247BC1 - public override int GetHashCode() - { - return base.GetHashCode(); - } - - // Token: 0x060062A5 RID: 25253 RVA: 0x002497CC File Offset: 0x00247BCC - internal static string Escape(string aText) - { - string text = string.Empty; - if (aText != null) - { - foreach (char c in aText) - { - switch (c) - { - case '\b': - text += "\\b"; - break; - case '\t': - text += "\\t"; - break; - case '\n': - text += "\\n"; - break; - default: - if (c != '"') - { - if (c != '\\') - { - text += c; - } - else - { - text += "\\\\"; - } - } - else - { - text += "\\\""; - } - break; - case '\f': - text += "\\f"; - break; - case '\r': - text += "\\r"; - break; - } - } - } - return text; - } - - // Token: 0x060062A6 RID: 25254 RVA: 0x002498C8 File Offset: 0x00247CC8 - public static JSONNode Parse(string aJSON) - { - Stack stack = new Stack(); - JSONNode jsonnode = null; - int i = 0; - bool flag = false; - string text = string.Empty; - string text2 = string.Empty; - bool flag2 = false; - while (i < aJSON.Length) - { - char c = aJSON[i]; - switch (c) - { - case '\t': - goto IL_342; - case '\n': - case '\r': - break; - default: - switch (c) - { - case '[': - if (flag2) - { - text += aJSON[i]; - goto IL_47F; - } - stack.Push(new JSONArray()); - if (jsonnode != null) - { - text2 = text2.Trim(); - if (jsonnode is JSONArray) - { - jsonnode.Add(stack.Peek()); - } - else if (text2 != string.Empty) - { - jsonnode.Add(text2, stack.Peek()); - } - } - text2 = string.Empty; - text = string.Empty; - flag = false; - jsonnode = stack.Peek(); - goto IL_47F; - case '\\': - i++; - if (flag2) - { - char c2 = aJSON[i]; - switch (c2) - { - case 'r': - text += '\r'; - break; - default: - if (c2 != 'b') - { - if (c2 != 'f') - { - if (c2 != 'n') - { - text += c2; - } - else - { - text += '\n'; - } - } - else - { - text += '\f'; - } - } - else - { - text += '\b'; - } - break; - case 't': - text += '\t'; - break; - case 'u': - { - string s = aJSON.Substring(i + 1, 4); - text += (char)int.Parse(s, NumberStyles.AllowHexSpecifier); - i += 4; - break; - } - } - } - goto IL_47F; - case ']': - break; - default: - switch (c) - { - case ' ': - goto IL_342; - default: - switch (c) - { - case '{': - if (flag2) - { - text += aJSON[i]; - goto IL_47F; - } - stack.Push(new JSONClass()); - if (jsonnode != null) - { - text2 = text2.Trim(); - if (jsonnode is JSONArray) - { - jsonnode.Add(stack.Peek()); - } - else if (text2 != string.Empty) - { - jsonnode.Add(text2, stack.Peek()); - } - } - text2 = string.Empty; - text = string.Empty; - flag = false; - jsonnode = stack.Peek(); - goto IL_47F; - default: - if (c != ',') - { - if (c != ':') - { - text += aJSON[i]; - flag = true; - goto IL_47F; - } - if (flag2) - { - text += aJSON[i]; - goto IL_47F; - } - text2 = text; - text = string.Empty; - flag = false; - goto IL_47F; - } - else - { - if (flag2) - { - text += aJSON[i]; - goto IL_47F; - } - if (flag) - { - if (jsonnode is JSONArray) - { - jsonnode.Add(text); - } - else if (text2 != string.Empty) - { - jsonnode.Add(text2, text); - } - } - text2 = string.Empty; - text = string.Empty; - flag = false; - goto IL_47F; - } - break; - case '}': - break; - } - break; - case '"': - flag2 ^= true; - flag = true; - goto IL_47F; - } - break; - } - if (flag2) - { - text += aJSON[i]; - } - else - { - if (stack.Count == 0) - { - throw new Exception("JSON Parse: Too many closing brackets"); - } - stack.Pop(); - if (flag) - { - text2 = text2.Trim(); - if (jsonnode is JSONArray) - { - jsonnode.Add(text); - } - else if (text2 != string.Empty) - { - jsonnode.Add(text2, text); - } - } - text2 = string.Empty; - text = string.Empty; - flag = false; - if (stack.Count > 0) - { - jsonnode = stack.Peek(); - } - } - break; - } - IL_47F: - i++; - continue; - IL_342: - if (flag2) - { - text += aJSON[i]; - } - goto IL_47F; - } - if (flag2) - { - throw new Exception("JSON Parse: Quotation marks seems to be messed up."); - } - return jsonnode; - } - - // Token: 0x060062A7 RID: 25255 RVA: 0x00249D77 File Offset: 0x00248177 - public virtual void Serialize(BinaryWriter aWriter) - { - } - - // Token: 0x060062A8 RID: 25256 RVA: 0x00249D7C File Offset: 0x0024817C - public void SaveToStream(Stream aData) - { - BinaryWriter aWriter = new BinaryWriter(aData); - this.Serialize(aWriter); - } - - // Token: 0x060062A9 RID: 25257 RVA: 0x00249D97 File Offset: 0x00248197 - public void SaveToCompressedStream(Stream aData) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - - // Token: 0x060062AA RID: 25258 RVA: 0x00249DA3 File Offset: 0x002481A3 - public void SaveToCompressedFile(string aFileName) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - - // Token: 0x060062AB RID: 25259 RVA: 0x00249DAF File Offset: 0x002481AF - public string SaveToCompressedBase64() - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - - // Token: 0x060062AC RID: 25260 RVA: 0x00249DBC File Offset: 0x002481BC - public void SaveToFile(string aFileName) - { - Directory.CreateDirectory(new FileInfo(aFileName).Directory.FullName); - using (FileStream fileStream = File.OpenWrite(aFileName)) - { - this.SaveToStream(fileStream); - } - } - - // Token: 0x060062AD RID: 25261 RVA: 0x00249E10 File Offset: 0x00248210 - public string SaveToBase64() - { - string result; - using (MemoryStream memoryStream = new MemoryStream()) - { - this.SaveToStream(memoryStream); - memoryStream.Position = 0L; - result = Convert.ToBase64String(memoryStream.ToArray()); - } - return result; - } - - // Token: 0x060062AE RID: 25262 RVA: 0x00249E64 File Offset: 0x00248264 - public static JSONNode Deserialize(BinaryReader aReader) - { - JSONBinaryTag jsonbinaryTag = (JSONBinaryTag)aReader.ReadByte(); - switch (jsonbinaryTag) - { - case JSONBinaryTag.Array: - { - int num = aReader.ReadInt32(); - JSONArray jsonarray = new JSONArray(); - for (int i = 0; i < num; i++) - { - jsonarray.Add(JSONNode.Deserialize(aReader)); - } - return jsonarray; - } - case JSONBinaryTag.Class: - { - int num2 = aReader.ReadInt32(); - JSONClass jsonclass = new JSONClass(); - for (int j = 0; j < num2; j++) - { - string aKey = aReader.ReadString(); - JSONNode aItem = JSONNode.Deserialize(aReader); - jsonclass.Add(aKey, aItem); - } - return jsonclass; - } - case JSONBinaryTag.Value: - return new JSONData(aReader.ReadString()); - case JSONBinaryTag.IntValue: - return new JSONData(aReader.ReadInt32()); - case JSONBinaryTag.DoubleValue: - return new JSONData(aReader.ReadDouble()); - case JSONBinaryTag.BoolValue: - return new JSONData(aReader.ReadBoolean()); - case JSONBinaryTag.FloatValue: - return new JSONData(aReader.ReadSingle()); - default: - throw new Exception("Error deserializing JSON. Unknown tag: " + jsonbinaryTag); - } - } - - // Token: 0x060062AF RID: 25263 RVA: 0x00249F63 File Offset: 0x00248363 - public static JSONNode LoadFromCompressedFile(string aFileName) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - - // Token: 0x060062B0 RID: 25264 RVA: 0x00249F6F File Offset: 0x0024836F - public static JSONNode LoadFromCompressedStream(Stream aData) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - - // Token: 0x060062B1 RID: 25265 RVA: 0x00249F7B File Offset: 0x0024837B - public static JSONNode LoadFromCompressedBase64(string aBase64) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - - // Token: 0x060062B2 RID: 25266 RVA: 0x00249F88 File Offset: 0x00248388 - public static JSONNode LoadFromStream(Stream aData) - { - JSONNode result; - using (BinaryReader binaryReader = new BinaryReader(aData)) - { - result = JSONNode.Deserialize(binaryReader); - } - return result; - } - - // Token: 0x060062B3 RID: 25267 RVA: 0x00249FC8 File Offset: 0x002483C8 - public static JSONNode LoadFromFile(string aFileName) - { - JSONNode result; - using (FileStream fileStream = File.OpenRead(aFileName)) - { - result = JSONNode.LoadFromStream(fileStream); - } - return result; - } - - // Token: 0x060062B4 RID: 25268 RVA: 0x0024A008 File Offset: 0x00248408 - public static JSONNode LoadFromBase64(string aBase64) - { - byte[] buffer = Convert.FromBase64String(aBase64); - return JSONNode.LoadFromStream(new MemoryStream(buffer) - { - Position = 0L - }); - } - } -} diff --git a/_archived/varManager/SimpleLogger.cs b/_archived/varManager/SimpleLogger.cs deleted file mode 100644 index 42362fc..0000000 --- a/_archived/varManager/SimpleLogger.cs +++ /dev/null @@ -1,167 +0,0 @@ -锘/* -MIT License - -Copyright (c) 2016 Heiswayi Nrird - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -public class SimpleLogger -{ - private const string FILE_EXT = ".log"; - private readonly object fileLock = new object(); - private readonly string datetimeFormat; - private readonly string logFilename; - - ///

- /// Initiate an instance of SimpleLogger class constructor. - /// If log file does not exist, it will be created automatically. - /// - public SimpleLogger() - { - datetimeFormat = "yyyy-MM-dd HH:mm:ss.fff"; - logFilename = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + FILE_EXT; - - // Log file header line - string logHeader = logFilename + " is created."; - if (!System.IO.File.Exists(logFilename)) - { - WriteLine(System.DateTime.Now.ToString(datetimeFormat) + " " + logHeader); - } - } - - /// - /// Log a DEBUG message - /// - /// Message - public void Debug(string text) - { - WriteFormattedLog(LogLevel.DEBUG, text); - } - - /// - /// Log an ERROR message - /// - /// Message - public void Error(string text) - { - WriteFormattedLog(LogLevel.ERROR, text); - } - - /// - /// Log a FATAL ERROR message - /// - /// Message - public void Fatal(string text) - { - WriteFormattedLog(LogLevel.FATAL, text); - } - - /// - /// Log an INFO message - /// - /// Message - public void Info(string text) - { - WriteFormattedLog(LogLevel.INFO, text); - } - - /// - /// Log a TRACE message - /// - /// Message - public void Trace(string text) - { - WriteFormattedLog(LogLevel.TRACE, text); - } - - /// - /// Log a WARNING message - /// - /// Message - public void Warning(string text) - { - WriteFormattedLog(LogLevel.WARNING, text); - } - - private void WriteLine(string text, bool append = false) - { - try - { - if (string.IsNullOrEmpty(text)) - { - return; - } - lock (fileLock) - { - using (System.IO.StreamWriter writer = new System.IO.StreamWriter(logFilename, append, System.Text.Encoding.UTF8)) - { - writer.WriteLine(text); - } - } - } - catch - { - throw; - } - } - - public string WriteFormattedLog(LogLevel level, string text) - { - string pretext; - switch (level) - { - case LogLevel.TRACE: - pretext = System.DateTime.Now.ToString(datetimeFormat) + " [TRACE] "; - break; - case LogLevel.INFO: - pretext = System.DateTime.Now.ToString(datetimeFormat) + " [INFO] "; - break; - case LogLevel.DEBUG: - pretext = System.DateTime.Now.ToString(datetimeFormat) + " [DEBUG] "; - break; - case LogLevel.WARNING: - pretext = System.DateTime.Now.ToString(datetimeFormat) + " [WARNING] "; - break; - case LogLevel.ERROR: - pretext = System.DateTime.Now.ToString(datetimeFormat) + " [ERROR] "; - break; - case LogLevel.FATAL: - pretext = System.DateTime.Now.ToString(datetimeFormat) + " [FATAL] "; - break; - default: - pretext = ""; - break; - } - - WriteLine(pretext + text, true); - return pretext + text; - } - - [System.Flags] - public enum LogLevel - { - TRACE, - INFO, - DEBUG, - WARNING, - ERROR, - FATAL - } -} \ No newline at end of file diff --git a/_archived/varManager/ThreeStateTreeview.cs b/_archived/varManager/ThreeStateTreeview.cs deleted file mode 100644 index c013bcf..0000000 --- a/_archived/varManager/ThreeStateTreeview.cs +++ /dev/null @@ -1,279 +0,0 @@ -锘縰sing System; -using System.Drawing; -using System.Windows.Forms; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; - - -namespace nsThreeStateTreeview { - - // - // A Tri-State TreeView designed for on-demand populating of the tree - // - // - // 'Mixed' nodes retain their checked state, meaning they can be checked or unchecked according to their current state - // Tree can be navigated by keyboard (cursor keys & space) - // No need to do anything special in calling code - // - public class TriStateTreeView : System.Windows.Forms.TreeView - { - // - // CheckedState is an enum of all allowable nodes states - // - public enum CheckedState : int { UnInitialised = -1, UnChecked, Checked, Mixed }; - - // - // IgnoreClickAction is used to ingore messages generated by setting the node.Checked flag in code - // Do not set e.Cancel = true in OnBeforeCheck otherwise the Checked state will be lost - // - int IgnoreClickAction = 0; - // - - // TriStateStyles is an enum of all allowable tree styles - // All styles check children when parent is checked - // Installer automatically checks parent if all children are checked, and unchecks parent if at least one child is unchecked - // Standard never changes the checked status of a parent - // - public enum TriStateStyles : int { Standard = 0, Installer }; - - // Create a private member for the tree style, and allow it to be set on the property sheer - private TriStateStyles TriStateStyle = TriStateStyles.Standard; - - [System.ComponentModel.Category("Tri-State Tree View")] - [System.ComponentModel.DisplayName("Style")] - [System.ComponentModel.Description("Style of the Tri-State Tree View")] - public TriStateStyles TriStateStyleProperty - { - get { return TriStateStyle; } - set { TriStateStyle = value; } - } - - // - // Constructor. Create and populate an image list - // - public TriStateTreeView() : base() - { - StateImageList = new System.Windows.Forms.ImageList(); - - // populate the image list, using images from the System.Windows.Forms.CheckBoxRenderer class - for (int i = 0; i < 3; i++) - { - // Create a bitmap which holds the relevent check box style - // see http://msdn.microsoft.com/en-us/library/ms404307.aspx and http://msdn.microsoft.com/en-us/library/system.windows.forms.checkboxrenderer.aspx - - System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(16, 16); - System.Drawing.Graphics chkGraphics = System.Drawing.Graphics.FromImage(bmp); - switch (i) - { - // 0,1 - offset the checkbox slightly so it positions in the correct place - case 0: - System.Windows.Forms.CheckBoxRenderer.DrawCheckBox(chkGraphics, new System.Drawing.Point(0, 1), System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal); - break; - case 1: - System.Windows.Forms.CheckBoxRenderer.DrawCheckBox(chkGraphics, new System.Drawing.Point(0, 1), System.Windows.Forms.VisualStyles.CheckBoxState.CheckedNormal); - break; - case 2: - System.Windows.Forms.CheckBoxRenderer.DrawCheckBox(chkGraphics, new System.Drawing.Point(0, 1), System.Windows.Forms.VisualStyles.CheckBoxState.MixedNormal); - break; - } - - StateImageList.Images.Add(bmp); - } - } - - // - // Called once before window displayed. Disables default Checkbox functionality and ensures all nodes display an 'unchecked' image. - // - protected override void OnCreateControl() - { - base.OnCreateControl(); - CheckBoxes = false; // Disable default CheckBox functionality if it's been enabled - - // Give every node an initial 'unchecked' image - IgnoreClickAction++; // we're making changes to the tree, ignore any other change requests - UpdateChildState(this.Nodes, (int)CheckedState.UnChecked, false, true); - IgnoreClickAction--; - } - - // - // Called after a node is checked. Forces all children to inherit current state, and notifies parents they may need to become 'mixed' - // - protected override void OnAfterCheck(System.Windows.Forms.TreeViewEventArgs e) - { - base.OnAfterCheck(e); - - if (IgnoreClickAction > 0) - { - return; - } - - IgnoreClickAction++; // we're making changes to the tree, ignore any other change requests - - // the checked state has already been changed, we just need to update the state index - - // node is either ticked or unticked. ignore mixed state, as the node is still only ticked or unticked regardless of state of children - System.Windows.Forms.TreeNode tn = e.Node; - tn.StateImageIndex = tn.Checked ? (int)CheckedState.Checked : (int)CheckedState.UnChecked; - - // force all children to inherit the same state as the current node - UpdateChildState(e.Node.Nodes, e.Node.StateImageIndex, e.Node.Checked, false); - - // populate state up the tree, possibly resulting in parents with mixed state - UpdateParentState(e.Node.Parent); - - IgnoreClickAction--; - } - - // - // Called after a node is expanded. Ensures any new nodes display an 'unchecked' image - // - protected override void OnAfterExpand(System.Windows.Forms.TreeViewEventArgs e) - { - // If any child node is new, give it the same check state as the current node - // So if current node is ticked, child nodes will also be ticked - base.OnAfterExpand(e); - - IgnoreClickAction++; // we're making changes to the tree, ignore any other change requests - UpdateChildState(e.Node.Nodes, e.Node.StateImageIndex, e.Node.Checked, true); - IgnoreClickAction--; - } - - // - // Helper function to replace child state with that of the parent - // - protected void UpdateChildState(System.Windows.Forms.TreeNodeCollection Nodes, int StateImageIndex, bool Checked, bool ChangeUninitialisedNodesOnly) - { - foreach (System.Windows.Forms.TreeNode tnChild in Nodes) - { - if (!ChangeUninitialisedNodesOnly || tnChild.StateImageIndex == -1) - { - tnChild.StateImageIndex = StateImageIndex; - tnChild.Checked = Checked; // override 'checked' state of child with that of parent - - if (tnChild.Nodes.Count > 0) - { - UpdateChildState(tnChild.Nodes, StateImageIndex, Checked, ChangeUninitialisedNodesOnly); - } - } - } - } - - // - // Helper function to notify parent it may need to use 'mixed' state - // - protected void UpdateParentState(System.Windows.Forms.TreeNode tn) - { - // Node needs to check all of it's children to see if any of them are ticked or mixed - if (tn == null) - return; - - int OrigStateImageIndex = tn.StateImageIndex; - - int UnCheckedNodes = 0, CheckedNodes = 0, MixedNodes = 0; - - // The parent needs to know how many of it's children are Checked or Mixed - foreach (System.Windows.Forms.TreeNode tnChild in tn.Nodes) - { - if (tnChild.StateImageIndex == (int)CheckedState.Checked) - CheckedNodes++; - else if (tnChild.StateImageIndex == (int)CheckedState.Mixed) - { - MixedNodes++; - break; - } - else - UnCheckedNodes++; - } - - if (TriStateStyle == TriStateStyles.Installer) - { - // In Installer mode, if all child nodes are checked then parent is checked - // If at least one child is unchecked, then parent is unchecked - if (MixedNodes == 0) - { - if (UnCheckedNodes == 0) - { - // all children are checked, so parent must be checked - tn.Checked = true; - } - else - { - // at least one child is unchecked, so parent must be unchecked - tn.Checked = false; - } - } - } - - // Determine the parent's new Image State - if (MixedNodes > 0) - { - // at least one child is mixed, so parent must be mixed - tn.StateImageIndex = (int)CheckedState.Mixed; - } - else if (CheckedNodes > 0 && UnCheckedNodes == 0) - { - // all children are checked - if (tn.Checked) - tn.StateImageIndex = (int)CheckedState.Checked; - else - tn.StateImageIndex = (int)CheckedState.Mixed; - } - else if (CheckedNodes > 0) - { - // some children are checked, the rest are unchecked - tn.StateImageIndex = (int)CheckedState.Mixed; - } - else - { - // all children are unchecked - if (tn.Checked) - tn.StateImageIndex = (int)CheckedState.Mixed; - else - tn.StateImageIndex = (int)CheckedState.UnChecked; - } - - if (OrigStateImageIndex != tn.StateImageIndex && tn.Parent != null) - { - // Parent's state has changed, notify the parent's parent - UpdateParentState(tn.Parent); - } - } - - // - // Called on keypress. Used to change node state when Space key is pressed - // Invokes OnAfterCheck to do the real work - // - protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e) - { - base.OnKeyDown(e); - - // is the keypress a space? If not, discard it - if (e.KeyCode == System.Windows.Forms.Keys.Space) - { - // toggle the node's checked status. This will then fire OnAfterCheck - SelectedNode.Checked = !SelectedNode.Checked; - } - } - - // - // Called when node is clicked by the mouse. Does nothing unless the image was clicked - // Invokes OnAfterCheck to do the real work - // - protected override void OnNodeMouseClick(System.Windows.Forms.TreeNodeMouseClickEventArgs e) - { - base.OnNodeMouseClick(e); - - // is the click on the checkbox? If not, discard it - System.Windows.Forms.TreeViewHitTestInfo info = HitTest(e.X, e.Y); - if (info == null || info.Location != System.Windows.Forms.TreeViewHitTestLocations.StateImage) - { - return; - } - - // toggle the node's checked status. This will then fire OnAfterCheck - System.Windows.Forms.TreeNode tn = e.Node; - tn.Checked = !tn.Checked; - } - } -} diff --git a/_archived/varManager/VarManager.ico b/_archived/varManager/VarManager.ico deleted file mode 100644 index f2b26eab57cc53f4d6b734aa7574b37e78f885b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9662 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 diff --git a/_archived/varManager/app.manifest b/_archived/varManager/app.manifest deleted file mode 100644 index 603d39f..0000000 --- a/_archived/varManager/app.manifest +++ /dev/null @@ -1,78 +0,0 @@ -锘 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/_archived/varManager/icoVarManager.ico b/_archived/varManager/icoVarManager.ico deleted file mode 100644 index 11819c1644463d3f1f13894405e005a0eed42298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9662 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 diff --git a/_archived/varManager/meta.json b/_archived/varManager/meta.json deleted file mode 100644 index 921553e..0000000 --- a/_archived/varManager/meta.json +++ /dev/null @@ -1,456 +0,0 @@ -{ - "licenseType" : "CC BY", - "creatorName" : "Ruthven2000", - "packageName" : "LittleRed", - "standardReferenceVersionOption" : "Latest", - "scriptReferenceVersionOption" : "Exact", - "description" : "", - "credits" : "", - "instructions" : "", - "promotionalLink" : "", - "programVersion" : "1.20.77.9", - "contentList" : [ - "Saves/scene/Current/RedHood", - "Custom/Sounds/DarkGift.mp3", - "Custom/Sounds/Horror/werewolf/Howls/Howl01.wav", - "Custom/Sounds/Horror/werewolf/Low Growls/untitled.wav", - "Custom/Sounds/Horror/werewolf/Low Growls/growl02.wav", - "Custom/Sounds/Horror/werewolf/Low Growls/growl03.wav", - "Custom/Sounds/Horror/werewolf/Low Growls/growl04.wav", - "Custom/Sounds/Horror/werewolf/Low Growls/growl05.wav", - "Custom/Sounds/Horror/werewolf/Low Growls/growl06.wav", - "Custom/Sounds/Horror/werewolf/Low Growls/growl07.wav", - "Custom/Sounds/BDSM/clothrip.wav", - "Custom/Sounds/BDSM/Gasps/Gasp15.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp14.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp13.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp12.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp11.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp10.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp7.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp8.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp9.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp6.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp5.mp3", - "Custom/Sounds/BDSM/Gasps/Gasp4.mp3", - "Custom/Scripts/MeshedVR/FloatParamRandomizer.cs", - "Custom/Clothing/Female/Ruthven2000/Gipsydressopen/Gipsydressopen.vam", - "Custom/Clothing/Female/Ruthven2000/Gipsydressopen/Gipsydressopen.jpg", - "Custom/Clothing/Female/Ruthven2000/Gipsydressopen/Gipsydressopen.vaj", - "Custom/Clothing/Female/Ruthven2000/Gipsydressopen/Gipsydressopen.vab", - "Custom/Atom/Person/Morphs/female_genitalia/!Custom/Gens Young.vmi", - "Custom/Atom/Person/Morphs/female_genitalia/!Custom/Gens Young.vmb", - "Custom/Atom/Person/Textures/Cassie/CassieTorsoN.png", - "Custom/Images/fullmoon.jpg", - "Custom/Atom/Person/Morphs/male/_Alien_Face/PHMNoseHag.vmi", - "Custom/Atom/Person/Morphs/male/_Alien_Face/PHMNoseHag.vmb", - "Custom/Atom/Person/Morphs/male/Face_Reloaded-Lite/Forehead back.vmi", - "Custom/Atom/Person/Morphs/male/Face_Reloaded-Lite/Forehead back.vmb", - "Custom/Atom/Person/Morphs/male/Mouth_Reloaded-Lite/Mouth big X.vmi", - "Custom/Atom/Person/Morphs/male/Mouth_Reloaded-Lite/Mouth big X.vmb", - "Custom/Atom/Person/Morphs/female/AUTO/Face flat.vmi", - "Custom/Atom/Person/Morphs/female/AUTO/Face flat.vmb", - "Custom/Atom/Person/Morphs/female/Body Diversity/Face Weight Gaunt.vmi", - "Custom/Atom/Person/Morphs/female/Body Diversity/Face Weight Gaunt.vmb", - "Custom/Atom/Person/Textures/JackarooFreeGenNormals.png", - "Custom/Sounds/Horror/werewolf/Howls/Howl02.wav", - "Custom/Clothing/Female/Ruthven2000/GypsyDressDown/GypsyDressDown.vam", - "Custom/Clothing/Female/Ruthven2000/GypsyDressDown/GypsyDressDown.jpg", - "Custom/Clothing/Female/Ruthven2000/GypsyDressDown/GypsyDressDown.vaj", - "Custom/Clothing/Female/Ruthven2000/GypsyDressDown/GypsyDressDown.vab", - "Custom/Clothing/Female/Ruthven2000/GypsyDressDown/Dress 4.png", - "Custom/Clothing/Female/Ruthven2000/GypsyDressDown/Dressalpha.png", - "Custom/Clothing/Female/Ruthven2000/GypsyDressDown/Dress 2.png" - ], - "dependencies" : { - "via5.Synergy.1" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "AcidBubbles.Timeline.217" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - } - }, - "bvctr.SoundRandomizer.1" : { - "licenseType" : "CC BY-NC", - "dependencies" : { - } - }, - "YameteOuji.YameteOuji_Shoes_MidHeelA.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "cotyounoyume.ExpressionBlushingAndTears.10" : { - "licenseType" : "CC BY-NC-SA", - "dependencies" : { - } - }, - "Skippy.Skippys_CumClothing.latest" : { - "licenseType" : "CC BY-NC", - "dependencies" : { - } - }, - "SupaRioAmateur.Sub_Demi_Eyes.1" : { - "licenseType" : "CC BY-NC-SA", - "dependencies" : { - } - }, - "noheadnoleg.t014_wearable_tattoo_eye.latest" : { - "licenseType" : "PC", - "dependencies" : { - } - }, - "NoStage3.Hair_Long_Side_2_Bangs_3.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "Spacedog.Import_Reloaded_Lite.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "Xstatic.Denise.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - "Roac.Slayer_hair.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "kemenate.Morphs.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - } - } - }, - "Dragontales.She's_Alive.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - "via5.Synergy.1" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "MacGruber.Life.10" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - } - }, - "Dragontales.RealGaze.1" : { - "licenseType" : "Questionable", - "dependencies" : { - } - } - } - }, - "Alter3go.Skin_A1_3.latest" : { - "licenseType" : "CC BY-NC-ND", - "dependencies" : { - } - }, - "Alter3go.Body_Freckles.latest" : { - "licenseType" : "CC BY-NC-ND", - "dependencies" : { - } - }, - "JoyBoy.Old_Big_Tree.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "xstatic.Xstatic_particle_pack_#8_Fog.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "hazmhox.rocksandplants101.1" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - "MeshedVR.3PointLightSetup.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - "NoStage3.Hair_Long_Upswept_Top_Bun.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - } - } - }, - "kemenate.Morphs.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "MeshedVR.PresetsPack.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - } - } - }, - "Damarmau.Forest.1" : { - "licenseType" : "CC BY", - "dependencies" : { - "MacGruber.PostMagic.3" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - } - }, - "BooMoon.BooMoon_Lut_Pack.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "xstatic.Xstatic_particle_pack_#8_Fog.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "MR.Trees.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "hazmhox.rocksandplants101.1" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - "MeshedVR.3PointLightSetup.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - "NoStage3.Hair_Long_Upswept_Top_Bun.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - } - } - }, - "kemenate.Morphs.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "MeshedVR.PresetsPack.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - } - } - }, - "NoStage3.UnityAssetVamifier.20" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "MR.Campfire.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "hazmhox.vamafx.2" : { - "licenseType" : "CC BY-NC-SA", - "dependencies" : { - } - } - } - }, - "MR.Trees.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "NoStage3.UnityAssetVamifier.20" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "AcidBubbles.ImprovedPoV.1" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - } - }, - "Hunting-Succubus.Male&Futa_Enhanced_Eyes.latest" : { - "licenseType" : "PC EA", - "dependencies" : { - } - }, - "kemenate.Male_Body_Hair.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "kemenate.Male_Hairstyles.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "kemenate.Male_Beard.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "WeebU.My_morphs.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "MacGruber.Life.10" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - } - }, - "Vamtastic.Penis_Grip_V3.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "kemenate.Morphs.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "Spacedog.Wet_Bits.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "MacGruber.Life.13" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - } - }, - "Romolas.Eye_Saccades.2" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "VaMChan.Hair_Headband_Hairstyles.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "kemenate.Clothing.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "JayJayWon.BJSFX.1" : { - "licenseType" : "CC BY-NC-SA", - "dependencies" : { - } - }, - "AshAuryn.Sexpressions.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "geesp0t.EasyMoan.10" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - "AshAuryn.Sexpressions.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "TenStrip.Expressions.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - } - } - }, - "KdollMASTA.KDoll_Mk10.1" : { - "licenseType" : "CC BY-NC", - "dependencies" : { - "cotyounoyume.ExpressionBlushingAndTearsFullVer.3" : { - "missing" : "true", - "licenseType" : "MISSING", - "dependencies" : { - } - }, - "MeshedVR.3PointLightSetup.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - "NoStage3.Hair_Long_Upswept_Top_Bun.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - } - } - }, - "LFE.AutoPupil0.8" : { - "missing" : "true", - "licenseType" : "MISSING", - "dependencies" : { - } - }, - "Hunting-Succubus.FemaleBodySmootherTessellation.1" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "Hunting-Succubus.Enhanced_Eyes.latest" : { - "licenseType" : "PC", - "dependencies" : { - } - }, - "Roac.Arty_alt_hairs.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - } - }, - "KdollMASTA.KDoll_Mk2.latest" : { - "missing" : "true", - "licenseType" : "MISSING", - "dependencies" : { - } - }, - "KdollMASTA.K_Doll_Mk_5.2" : { - "missing" : "true", - "licenseType" : "MISSING", - "dependencies" : { - } - }, - "kemenate.Morphs.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "TenStrip.Morphs.latest" : { - "licenseType" : "FC", - "dependencies" : { - } - }, - "VamXFan.Neutral-Environment-Color.latest" : { - "licenseType" : "CC BY", - "dependencies" : { - "Blazedust.Script_ColorScale.1" : { - "licenseType" : "CC BY", - "dependencies" : { - } - } - } - }, - "MacGruber.PostMagic.3" : { - "licenseType" : "CC BY-SA", - "dependencies" : { - } - } - } - } - }, - "customOptions" : { - "preloadMorphs" : "false" - }, - "hadReferenceIssues" : "true", - "referenceIssues" : [ - { - "reference" : "Saves/scene/Current/RedHood/Gasp15.mp3|Gasp14.mp3|Gasp13.mp3|Gasp12.mp3|Gasp11.mp3|Gasp10.mp3|Gasp7.mp3|Gasp8.mp3|Gasp9.mp3|Gasp6.mp3|Gasp5.mp3|Gasp4.mp3", - "issue" : "BROKEN: References local relative file Gasp15.mp3|Gasp14.mp3|Gasp13.mp3|Gasp12.mp3|Gasp11.mp3|Gasp10.mp3|Gasp7.mp3|Gasp8.mp3|Gasp9.mp3|Gasp6.mp3|Gasp5.mp3|Gasp4.mp3 not included in package. File is missing" - } - ] -} \ No newline at end of file diff --git a/_archived/varManager/vam.png b/_archived/varManager/vam.png deleted file mode 100644 index 5e9b20b14acfae25c11099769b75cb41454d087e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19715 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 RTL)4JfTh_rQ=&0C>R%R5!Q}t| diff --git a/_archived/varManager/varManager.csproj b/_archived/varManager/varManager.csproj deleted file mode 100644 index 5938af0..0000000 --- a/_archived/varManager/varManager.csproj +++ /dev/null @@ -1,305 +0,0 @@ -锘 - - - WinExe - net9.0-windows - false - true - enable - enable - varManager - varManager - 512 - true - true - false - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 2 - 1.0.0.%2a - false - true - Relative - false - true - false - false - WFO1000 - - FolderProfile - - - x64 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - true - - - x64 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - false - - - - - - - - - - - - - - - - - - - - - - - - PreserveNewest - - - - - - - - - - - Form - - - Form1.cs - - - Form - - - FormAnalysis.cs - - - Form - - - FormHub.cs - - - Form - - - FormMissingVars.cs - - - Form - - - FormScenes.cs - - - Form - - - FormSettings.cs - - - Form - - - FormStaleVars.cs - - - Form - - - FormSwitchRename.cs - - - Form - - - FormSwitchAdd.cs - - - Form - - - FormUninstallVars.cs - - - Form - - - FormVarDetail.cs - - - Form - - - FormVarsMove.cs - - - UserControl - - - HubItem.cs - - - Form - - - PrepareSaves.cs - - - - - - - - - - - - - Component - - - Form1.cs - - - FormAnalysis.cs - - - FormHub.cs - - - FormMissingVars.cs - - - FormScenes.cs - - - FormSettings.cs - - - FormStaleVars.cs - - - FormSwitchRename.cs - - - FormSwitchAdd.cs - - - FormUninstallVars.cs - - - FormVarDetail.cs - - - FormVarsMove.cs - - - HubItem.cs - - - PrepareSaves.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - - - {4b9be5fd-303e-4270-9c4d-fa3bde6c34eb} - DgvFilterPopup - - - {c7e21f05-c166-4dcc-8429-ec8a4c1a67b6} - DragNDrop - - - - diff --git a/_archived/varManager/varManager.mdb b/_archived/varManager/varManager.mdb deleted file mode 100644 index 0c911132d8ab1079d057c4dc40ab5cde3ecb4429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413696 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 From b34ac37fd476ba59da2435f51e7059d2dabb7ebf Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:03:58 +0800 Subject: [PATCH 02/11] improve update_db --- varManager_backend/src/jobs/packswitch.rs | 55 +++++++-- varManager_backend/src/jobs/update_db.rs | 112 ++++++++++++++++-- .../lib/features/home/home_page.dart | 101 +++++++++++++++- varmanager_flutter/lib/l10n/app_en.arb | 23 ++++ .../lib/l10n/app_localizations.dart | 36 ++++++ .../lib/l10n/app_localizations_en.dart | 24 ++++ .../lib/l10n/app_localizations_zh.dart | 24 ++++ varmanager_flutter/lib/l10n/app_zh.arb | 6 + 8 files changed, 360 insertions(+), 21 deletions(-) diff --git a/varManager_backend/src/jobs/packswitch.rs b/varManager_backend/src/jobs/packswitch.rs index fd585db..cff6d69 100644 --- a/varManager_backend/src/jobs/packswitch.rs +++ b/varManager_backend/src/jobs/packswitch.rs @@ -7,7 +7,7 @@ use crate::infra::{system_ops, winfs}; use serde::{Deserialize, Serialize}; use serde_json::Value; use std::fs; -use std::path::Path; +use std::path::{Path, PathBuf}; use sqlx::SqlitePool; #[derive(Deserialize)] @@ -26,6 +26,19 @@ struct PackSwitchResult { name: String, } +#[derive(Serialize)] +struct PackSwitchSetResult { + status: String, + name: String, + #[serde(skip_serializing_if = "Option::is_none")] + addon_path: Option, +} + +enum PackSwitchSetOutcome { + Switched, + UpdateDbRequired { addon_path: PathBuf }, +} + pub async fn run_packswitch_add_job( state: AppState, reporter: JobReporter, @@ -77,11 +90,20 @@ pub async fn run_packswitch_set_job( tokio::task::spawn_blocking(move || { let args = args.ok_or_else(|| "packswitch_set args required".to_string())?; let args: PackSwitchArgs = serde_json::from_value(args).map_err(|err| err.to_string())?; - set_switch_blocking(&state, &reporter, &args.name)?; - reporter.set_result( - serde_json::to_value(PackSwitchResult { name: args.name }) - .map_err(|err| err.to_string())?, - ); + let outcome = set_switch_blocking(&state, &reporter, &args.name)?; + let result = match outcome { + PackSwitchSetOutcome::Switched => PackSwitchSetResult { + status: "switched".to_string(), + name: args.name, + addon_path: None, + }, + PackSwitchSetOutcome::UpdateDbRequired { addon_path } => PackSwitchSetResult { + status: "update_db_required".to_string(), + name: args.name, + addon_path: Some(addon_path.display().to_string()), + }, + }; + reporter.set_result(serde_json::to_value(result).map_err(|err| err.to_string())?); Ok(()) }) .await @@ -170,7 +192,11 @@ fn rename_switch_blocking( Ok(()) } -fn set_switch_blocking(state: &AppState, reporter: &JobReporter, name: &str) -> Result<(), String> { +fn set_switch_blocking( + state: &AppState, + reporter: &JobReporter, + name: &str, +) -> Result { let (_, vampath) = config_paths(state)?; let vampath = vampath.ok_or_else(|| "vampath is required in config.json".to_string())?; let switch_root = addon_switch_root(&vampath); @@ -179,15 +205,24 @@ fn set_switch_blocking(state: &AppState, reporter: &JobReporter, name: &str) -> let addon_path = addon_packages_dir(&vampath); if addon_path.exists() { + let meta = fs::symlink_metadata(&addon_path).map_err(|err| err.to_string())?; + if !meta.file_type().is_symlink() { + reporter.log(format!( + "AddonPackages is not a symlink: {}", + addon_path.display() + )); + return Ok(PackSwitchSetOutcome::UpdateDbRequired { + addon_path, + }); + } if let Ok(current_target) = winfs::read_link_target(&addon_path) { let cur = current_target.to_string_lossy().to_ascii_lowercase(); let want = target.to_string_lossy().to_ascii_lowercase(); if cur == want { - return Ok(()); + return Ok(PackSwitchSetOutcome::Switched); } } - let meta = fs::symlink_metadata(&addon_path).map_err(|err| err.to_string())?; if meta.file_type().is_symlink() { if fs::remove_file(&addon_path).is_err() { fs::remove_dir_all(&addon_path).map_err(|err| err.to_string())?; @@ -203,7 +238,7 @@ fn set_switch_blocking(state: &AppState, reporter: &JobReporter, name: &str) -> let _ = handle.block_on(refresh_install_status(pool, &vampath)); let _ = system_ops::rescan_packages(state); reporter.log(format!("switch to {}", name)); - Ok(()) + Ok(PackSwitchSetOutcome::Switched) } async fn refresh_install_status(pool: &SqlitePool, vampath: &Path) -> Result { diff --git a/varManager_backend/src/jobs/update_db.rs b/varManager_backend/src/jobs/update_db.rs index 5c370cd..5da496f 100644 --- a/varManager_backend/src/jobs/update_db.rs +++ b/varManager_backend/src/jobs/update_db.rs @@ -10,7 +10,9 @@ use crate::app::AppState; use crate::infra::{system_ops, winfs}; use chrono::{DateTime, Local}; use regex::Regex; -use std::collections::HashSet; +use serde::Serialize; +use std::cmp::Ordering; +use std::collections::{HashMap, HashSet}; use std::fs::{self, File}; use std::io::{BufReader, Read}; use std::path::{Path, PathBuf}; @@ -32,6 +34,61 @@ const MISSING_LINK_DIR: &str = "___MissingVarLink___"; const TEMP_LINK_DIR: &str = "___TempVarLink___"; const VARS_FOR_INSTALL_FILE: &str = "varsForInstall.txt"; +#[derive(Default)] +struct MoveCounter { + counts: HashMap<(PathBuf, PathBuf), u64>, +} + +impl MoveCounter { + fn add(&mut self, from: &Path, to: &Path, count: u64) { + if count == 0 { + return; + } + let key = (from.to_path_buf(), to.to_path_buf()); + *self.counts.entry(key).or_insert(0) += count; + } + + fn to_summary(&self) -> Vec { + let mut items: Vec = self + .counts + .iter() + .map(|((from, to), count)| MoveSummary { + from: from.display().to_string(), + to: to.display().to_string(), + count: *count, + }) + .collect(); + items.sort_by(|a, b| { + let from_cmp = a.from.cmp(&b.from); + if from_cmp == Ordering::Equal { + a.to.cmp(&b.to) + } else { + from_cmp + } + }); + items + } +} + +#[derive(Default)] +struct TidyStats { + scanned: usize, + moves: MoveCounter, +} + +#[derive(Serialize)] +struct MoveSummary { + from: String, + to: String, + count: u64, +} + +#[derive(Serialize)] +struct UpdateDbSummary { + scanned: usize, + moves: Vec, +} + pub async fn run_update_db_job(state: AppState, reporter: JobReporter) -> Result<(), String> { tokio::task::spawn_blocking(move || { update_db_blocking(&state, &reporter) @@ -43,6 +100,8 @@ pub async fn run_update_db_job(state: AppState, reporter: JobReporter) -> Result fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), String> { let overall_start = std::time::Instant::now(); let (varspath, vampath) = config_paths(state)?; + let tidied_dir = varspath.join(TIDIED_DIR); + let not_comply_dir = varspath.join(NOT_COMPLY_DIR); reporter.log(format!("UpdateDB started: varspath={}", varspath.display())); reporter.progress(1); @@ -50,6 +109,7 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St Some(vampath) => collect_addonpackages_vars(vampath), None => Vec::new(), }; + let addon_root = vampath.as_ref().map(|vampath| vampath.join("AddonPackages")); let mut vars_for_install = load_vars_for_install(); for varfile in &addon_vars { @@ -66,9 +126,10 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St save_vars_for_install(&vars_for_install)?; reporter.log("Phase 1/5: Tidying VAR files...".to_string()); - tidy_vars( + let mut tidy_stats = tidy_vars( &varspath, if vampath.is_some() { Some(&addon_vars) } else { None }, + addon_root.as_deref(), reporter, )?; reporter.progress(10); @@ -78,7 +139,6 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St let db_path = crate::infra::db::default_path(); reporter.log(format!("DB ready: {}", db_path.display())); - let tidied_dir = varspath.join(TIDIED_DIR); let var_files = collect_var_files( &tidied_dir, &[ @@ -92,6 +152,11 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St ); if var_files.is_empty() { reporter.log("No VAR files found under tidied directory".to_string()); + let summary = UpdateDbSummary { + scanned: tidy_stats.scanned, + moves: tidy_stats.moves.to_summary(), + }; + reporter.set_result(serde_json::to_value(summary).map_err(|err| err.to_string())?); reporter.progress(100); return Ok(()); } @@ -109,7 +174,8 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St let vampath_async = vampath.clone(); let dependency_regex = dependency_regex.clone(); let var_files = var_files.clone(); - handle.block_on(async move { + let invalid_to_not_comply = handle.block_on(async move { + let mut invalid_moves = 0u64; let mut exist_vars: HashSet = HashSet::new(); let mut tx = pool_for_tx.begin().await.map_err(|err| err.to_string())?; let total_vars = var_files.len(); @@ -147,11 +213,13 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St Err(ProcessError::NotComply(err)) => { reporter_async.log(err); move_to_not_comply(&varspath_async, var_file, &reporter_async)?; + invalid_moves += 1; continue; } Err(ProcessError::InvalidPackage(err)) => { reporter_async.log(err); move_to_not_comply(&varspath_async, var_file, &reporter_async)?; + invalid_moves += 1; continue; } Err(ProcessError::Io(err)) => return Err(err), @@ -179,9 +247,13 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St cleanup_missing_vars(&mut tx, &exist_vars, &varspath_async, &reporter_async).await?; reporter_async.log("Phase 3/5: Committing database changes...".to_string()); tx.commit().await.map_err(|err| err.to_string())?; - Ok::<(), String>(()) + Ok::(invalid_moves) })?; + tidy_stats + .moves + .add(&tidied_dir, ¬_comply_dir, invalid_to_not_comply); + reporter.progress(90); if !vars_for_install.is_empty() { @@ -242,6 +314,12 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St reporter.log("vampath not set; skip UpdateVarsInstalled/RescanPackages".to_string()); } + let summary = UpdateDbSummary { + scanned: tidy_stats.scanned, + moves: tidy_stats.moves.to_summary(), + }; + reporter.set_result(serde_json::to_value(summary).map_err(|err| err.to_string())?); + reporter.progress(100); let total_elapsed = overall_start.elapsed(); reporter.log(format!( @@ -318,8 +396,10 @@ fn collect_hide_fav_records( fn tidy_vars( varspath: &Path, addon_vars: Option<&[PathBuf]>, + addon_root: Option<&Path>, reporter: &JobReporter, -) -> Result<(), String> { +) -> Result { + let mut stats = TidyStats::default(); let tidied_path = varspath.join(TIDIED_DIR); let redundant_path = varspath.join(REDUNDANT_DIR); let not_comply_path = varspath.join(NOT_COMPLY_DIR); @@ -347,6 +427,7 @@ fn tidy_vars( } let total = vars.len(); + stats.scanned = total; let start_time = std::time::Instant::now(); for (idx, varfile) in vars.into_iter().enumerate() { @@ -356,7 +437,13 @@ fn tidy_vars( if fs_util::is_symlink(&varfile) { continue; } + let source_root: &Path = match addon_root { + Some(root) if varfile.starts_with(root) => root, + _ => varspath, + }; + if !comply_var_file(&varfile) { + stats.moves.add(source_root, ¬_comply_path, 1); move_to_not_comply(varspath, &varfile, reporter)?; continue; } @@ -367,6 +454,7 @@ fn tidy_vars( .unwrap_or_default(); let parts: Vec<&str> = varname.split('.').collect(); if parts.len() != 3 { + stats.moves.add(source_root, ¬_comply_path, 1); move_to_not_comply(varspath, &varfile, reporter)?; continue; } @@ -379,6 +467,7 @@ fn tidy_vars( let dest = creator_path.join(&filename); if dest.exists() { let redundant_dest = unique_path(&redundant_path, &filename); + stats.moves.add(source_root, &redundant_path, 1); reporter.log(format!( "{} has same filename in tidy dir, moved to {}", varfile.display(), @@ -386,6 +475,7 @@ fn tidy_vars( )); move_file(&varfile, &redundant_dest)?; } else { + stats.moves.add(source_root, &tidied_path, 1); move_file(&varfile, &dest)?; } @@ -403,7 +493,7 @@ fn tidy_vars( } } reporter.log(format!("TidyVars completed: {} files processed", total)); - Ok(()) + Ok(stats) } fn collect_var_files(root: &Path, exclude_dirs: &[&str], follow_links: bool) -> Vec { @@ -689,7 +779,9 @@ fn process_var_file( let file = File::open(var_file).map_err(|err| ProcessError::Io(err.to_string()))?; let reader = BufReader::new(file); - let mut zip = ZipArchive::new(reader).map_err(|err| ProcessError::Io(err.to_string()))?; + let mut zip = ZipArchive::new(reader).map_err(|err| { + ProcessError::InvalidPackage(format!("zip open failed: {}", err)) + })?; let meta_json = read_meta_json(&mut zip).map_err(ProcessError::InvalidPackage)?; let meta_date = meta_json.meta_date; @@ -700,7 +792,9 @@ fn process_var_file( for i in 0..zip.len() { let entry_name = { - let entry = zip.by_index(i).map_err(|err| ProcessError::Io(err.to_string()))?; + let entry = zip.by_index(i).map_err(|err| { + ProcessError::InvalidPackage(format!("zip entry read failed: {}", err)) + })?; if entry.is_dir() { continue; } diff --git a/varmanager_flutter/lib/features/home/home_page.dart b/varmanager_flutter/lib/features/home/home_page.dart index 9cf0af1..e75d20d 100644 --- a/varmanager_flutter/lib/features/home/home_page.dart +++ b/varmanager_flutter/lib/features/home/home_page.dart @@ -727,8 +727,9 @@ class _HomePageState extends ConsumerState { onPressed: isBusy ? null : () async { - await _runJob('update_db'); + final result = await _runJob('update_db'); ref.invalidate(varsListProvider); + await _showUpdateDbSummary(result); }, icon: const Icon(Icons.sync), label: Text(l10n.updateDbLabel), @@ -1222,6 +1223,84 @@ class _HomePageState extends ConsumerState { return result == true; } + Future _confirmUpdateDbRequired(String addonPath) async { + final path = addonPath.isEmpty ? 'AddonPackages' : addonPath; + final result = await showDialog( + context: context, + builder: (context) { + final l10n = context.l10n; + return AlertDialog( + title: Text(l10n.updateDbRequiredTitle), + content: Text(l10n.updateDbRequiredMessage(path)), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, false), + child: Text(l10n.commonCancel), + ), + FilledButton( + onPressed: () => Navigator.pop(context, true), + child: Text(l10n.updateDbLabel), + ), + ], + ); + }, + ); + return result == true; + } + + Future _showUpdateDbSummary(JobResult result) async { + if (result.job.isFailed) return; + final payloadRaw = result.result; + if (payloadRaw is! Map) return; + final payload = Map.from(payloadRaw); + final l10n = context.l10n; + final scanned = (payload['scanned'] as num?)?.toInt() ?? 0; + final movesRaw = payload['moves']; + final moveLines = []; + if (movesRaw is List) { + for (final item in movesRaw) { + if (item is! Map) continue; + final count = (item['count'] as num?)?.toInt() ?? 0; + if (count <= 0) continue; + final from = item['from']?.toString() ?? ''; + final to = item['to']?.toString() ?? ''; + moveLines.add(l10n.updateDbSummaryMoveLine(count, from, to)); + } + } + if (!mounted) return; + await showDialog( + context: context, + builder: (context) { + final content = []; + if (scanned > 0) { + content.add(Text(l10n.updateDbSummaryScanned(scanned))); + } + if (moveLines.isEmpty) { + content.add(Text(l10n.updateDbSummaryEmpty)); + } else { + content.add(const SizedBox(height: 8)); + content.addAll(moveLines.map((line) => Text(line))); + } + return AlertDialog( + title: Text(l10n.updateDbSummaryTitle), + content: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: content, + ), + ), + actions: [ + FilledButton( + onPressed: () => Navigator.pop(context), + child: Text(l10n.commonOk), + ), + ], + ); + }, + ); + } + Future> _fetchFilteredVarNames(VarsQueryParams query) async { final client = ref.read(backendClientProvider); const perPage = 200; @@ -1469,7 +1548,25 @@ class _HomePageState extends ConsumerState { ); } }); - await _runJob('packswitch_set', args: {'name': name}); + final result = await _runJob('packswitch_set', args: {'name': name}); + final payloadRaw = result.result; + final payload = payloadRaw is Map + ? Map.from(payloadRaw) + : null; + final status = payload?['status']?.toString(); + if (status == 'update_db_required') { + await _loadPackSwitches(); + if (!mounted) return; + final addonPath = payload?['addon_path']?.toString() ?? ''; + final confirmed = await _confirmUpdateDbRequired(addonPath); + if (confirmed) { + final updateResult = await _runJob('update_db'); + ref.invalidate(varsListProvider); + await _showUpdateDbSummary(updateResult); + await _loadPackSwitches(); + } + return; + } await _loadPackSwitches(); } diff --git a/varmanager_flutter/lib/l10n/app_en.arb b/varmanager_flutter/lib/l10n/app_en.arb index 15eb44b..419b87b 100644 --- a/varmanager_flutter/lib/l10n/app_en.arb +++ b/varmanager_flutter/lib/l10n/app_en.arb @@ -149,6 +149,12 @@ "actionGroupMaintenanceTooltip": "Cleanup and maintenance jobs.", "updateDbLabel": "Update DB", "updateDbTooltip": "Scan vars, extract previews, and update the database.", + "updateDbRequiredTitle": "Update DB required", + "updateDbRequiredMessage": "AddonPackages at {path} is not a symlink. Run Update DB before switching packs.", + "updateDbSummaryTitle": "Update DB completed", + "updateDbSummaryScanned": "Scanned {count} packages.", + "updateDbSummaryEmpty": "No packages moved.", + "updateDbSummaryMoveLine": "{count} from {from} to {to}", "startVamLabel": "Start VaM", "startVamTooltip": "Launch the VaM application.", "prepareSavesLabel": "Prepare Saves", @@ -561,6 +567,23 @@ "count": {} } }, + "@updateDbRequiredMessage": { + "placeholders": { + "path": {} + } + }, + "@updateDbSummaryScanned": { + "placeholders": { + "count": {} + } + }, + "@updateDbSummaryMoveLine": { + "placeholders": { + "count": {}, + "from": {}, + "to": {} + } + }, "@installVarConfirm": { "placeholders": { "varName": {} diff --git a/varmanager_flutter/lib/l10n/app_localizations.dart b/varmanager_flutter/lib/l10n/app_localizations.dart index 4ae9026..04d8a66 100644 --- a/varmanager_flutter/lib/l10n/app_localizations.dart +++ b/varmanager_flutter/lib/l10n/app_localizations.dart @@ -992,6 +992,42 @@ abstract class AppLocalizations { /// **'Scan vars, extract previews, and update the database.'** String get updateDbTooltip; + /// No description provided for @updateDbRequiredTitle. + /// + /// In en, this message translates to: + /// **'Update DB required'** + String get updateDbRequiredTitle; + + /// No description provided for @updateDbRequiredMessage. + /// + /// In en, this message translates to: + /// **'AddonPackages at {path} is not a symlink. Run Update DB before switching packs.'** + String updateDbRequiredMessage(Object path); + + /// No description provided for @updateDbSummaryTitle. + /// + /// In en, this message translates to: + /// **'Update DB completed'** + String get updateDbSummaryTitle; + + /// No description provided for @updateDbSummaryScanned. + /// + /// In en, this message translates to: + /// **'Scanned {count} packages.'** + String updateDbSummaryScanned(Object count); + + /// No description provided for @updateDbSummaryEmpty. + /// + /// In en, this message translates to: + /// **'No packages moved.'** + String get updateDbSummaryEmpty; + + /// No description provided for @updateDbSummaryMoveLine. + /// + /// In en, this message translates to: + /// **'{count} from {from} to {to}'** + String updateDbSummaryMoveLine(Object count, Object from, Object to); + /// No description provided for @startVamLabel. /// /// In en, this message translates to: diff --git a/varmanager_flutter/lib/l10n/app_localizations_en.dart b/varmanager_flutter/lib/l10n/app_localizations_en.dart index d1763e7..75108dc 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_en.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_en.dart @@ -476,6 +476,30 @@ class AppLocalizationsEn extends AppLocalizations { String get updateDbTooltip => 'Scan vars, extract previews, and update the database.'; + @override + String get updateDbRequiredTitle => 'Update DB required'; + + @override + String updateDbRequiredMessage(Object path) { + return 'AddonPackages at $path is not a symlink. Run Update DB before switching packs.'; + } + + @override + String get updateDbSummaryTitle => 'Update DB completed'; + + @override + String updateDbSummaryScanned(Object count) { + return 'Scanned $count packages.'; + } + + @override + String get updateDbSummaryEmpty => 'No packages moved.'; + + @override + String updateDbSummaryMoveLine(Object count, Object from, Object to) { + return '$count from $from to $to'; + } + @override String get startVamLabel => 'Start VaM'; diff --git a/varmanager_flutter/lib/l10n/app_localizations_zh.dart b/varmanager_flutter/lib/l10n/app_localizations_zh.dart index 453e76f..e4bd95e 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_zh.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_zh.dart @@ -471,6 +471,30 @@ class AppLocalizationsZh extends AppLocalizations { @override String get updateDbTooltip => '鎵弿 Vars銆佹彁鍙栭瑙堝苟鏇存柊鏁版嵁搴撱'; + @override + String get updateDbRequiredTitle => '闇瑕佹洿鏂版暟鎹簱'; + + @override + String updateDbRequiredMessage(Object path) { + return '妫娴嬪埌 AddonPackages 涓嶆槸绗﹀彿閾炬帴锛$path锛夈傝鍏堟墽琛屾洿鏂版暟鎹簱銆'; + } + + @override + String get updateDbSummaryTitle => '鏇存柊鏁版嵁搴撳畬鎴'; + + @override + String updateDbSummaryScanned(Object count) { + return '鎵弿鍒 $count 涓寘銆'; + } + + @override + String get updateDbSummaryEmpty => '娌℃湁闇瑕佺Щ鍔ㄧ殑鍖呫'; + + @override + String updateDbSummaryMoveLine(Object count, Object from, Object to) { + return '$count 浠 $from 绉诲姩鍒 $to'; + } + @override String get startVamLabel => '鍚姩 VaM'; diff --git a/varmanager_flutter/lib/l10n/app_zh.arb b/varmanager_flutter/lib/l10n/app_zh.arb index 44f2c73..6f08c05 100644 --- a/varmanager_flutter/lib/l10n/app_zh.arb +++ b/varmanager_flutter/lib/l10n/app_zh.arb @@ -149,6 +149,12 @@ "actionGroupMaintenanceTooltip": "娓呯悊涓庣淮鎶や换鍔°", "updateDbLabel": "鏇存柊鏁版嵁搴", "updateDbTooltip": "鎵弿 Vars銆佹彁鍙栭瑙堝苟鏇存柊鏁版嵁搴撱", + "updateDbRequiredTitle": "闇瑕佹洿鏂版暟鎹簱", + "updateDbRequiredMessage": "妫娴嬪埌 AddonPackages 涓嶆槸绗﹀彿閾炬帴锛坽path}锛夈傝鍏堟墽琛屾洿鏂版暟鎹簱銆", + "updateDbSummaryTitle": "鏇存柊鏁版嵁搴撳畬鎴", + "updateDbSummaryScanned": "鎵弿鍒 {count} 涓寘銆", + "updateDbSummaryEmpty": "娌℃湁闇瑕佺Щ鍔ㄧ殑鍖呫", + "updateDbSummaryMoveLine": "{count} 浠 {from} 绉诲姩鍒 {to}", "startVamLabel": "鍚姩 VaM", "startVamTooltip": "鍚姩 VaM 搴旂敤銆", "prepareSavesLabel": "鍑嗗瀛樻。", From 65d0704c7b61d54cdc41b4d3269d99a98df7a004 Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:06:18 +0800 Subject: [PATCH 03/11] bump version 2.0.1 --- VERSION | 2 +- varManager_backend/Cargo.lock | 2 +- varManager_backend/Cargo.toml | 2 +- varmanager_flutter/pubspec.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index 227cea2..10bf840 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.0 +2.0.1 \ No newline at end of file diff --git a/varManager_backend/Cargo.lock b/varManager_backend/Cargo.lock index 6701661..f1237d5 100644 --- a/varManager_backend/Cargo.lock +++ b/varManager_backend/Cargo.lock @@ -3522,7 +3522,7 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "varManager_backend" -version = "2.0.0" +version = "2.0.1" dependencies = [ "axum", "bytes", diff --git a/varManager_backend/Cargo.toml b/varManager_backend/Cargo.toml index ced6bd1..40ceb08 100644 --- a/varManager_backend/Cargo.toml +++ b/varManager_backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "varManager_backend" -version = "2.0.0" +version = "2.0.1" edition = "2021" [dependencies] diff --git a/varmanager_flutter/pubspec.yaml b/varmanager_flutter/pubspec.yaml index 84bf043..b5aad11 100644 --- a/varmanager_flutter/pubspec.yaml +++ b/varmanager_flutter/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 2.0.0+0 +version: 2.0.1+0 environment: sdk: ^3.10.4 From 453575ab72bafb401bc782b37c5ce0dafd42a396 Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:44:09 +0800 Subject: [PATCH 04/11] fix update db var package number --- varManager_backend/src/jobs/update_db.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/varManager_backend/src/jobs/update_db.rs b/varManager_backend/src/jobs/update_db.rs index 5da496f..8f95edd 100644 --- a/varManager_backend/src/jobs/update_db.rs +++ b/varManager_backend/src/jobs/update_db.rs @@ -426,6 +426,12 @@ fn tidy_vars( reporter.log("vampath not set; skip AddonPackages scan".to_string()); } + let mut seen = HashSet::new(); + vars.retain(|path| { + let key = path_dedupe_key(path); + seen.insert(key) + }); + let total = vars.len(); stats.scanned = total; let start_time = std::time::Instant::now(); @@ -496,6 +502,11 @@ fn tidy_vars( Ok(stats) } +fn path_dedupe_key(path: &Path) -> String { + let canonical = path.canonicalize().unwrap_or_else(|_| path.to_path_buf()); + canonical.to_string_lossy().to_ascii_lowercase() +} + fn collect_var_files(root: &Path, exclude_dirs: &[&str], follow_links: bool) -> Vec { if !root.exists() { return Vec::new(); From 19acd5f32e1e8d35777ebde7798d9ef76d0ad08d Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:59:09 +0800 Subject: [PATCH 05/11] add var size in flutter --- .../lib/features/home/home_page.dart | 19 ++++++++++++++++--- .../features/var_detail/var_detail_page.dart | 19 ++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/varmanager_flutter/lib/features/home/home_page.dart b/varmanager_flutter/lib/features/home/home_page.dart index e75d20d..0916a8f 100644 --- a/varmanager_flutter/lib/features/home/home_page.dart +++ b/varmanager_flutter/lib/features/home/home_page.dart @@ -1011,9 +1011,16 @@ class _HomePageState extends ConsumerState { ref.read(focusedVarProvider.notifier).setFocused(item.varName); }, title: Text(item.varName), - subtitle: Text( - '${item.creatorName ?? '-'} - ${item.packageName ?? '-'} - v${item.version ?? '-'}', - ), + subtitle: Text(() { + final sizeLabel = _formatSizeLabel(item.fsize); + final parts = [ + item.creatorName ?? '-', + item.packageName ?? '-', + 'v${item.version ?? '-'}', + if (sizeLabel.isNotEmpty) sizeLabel, + ]; + return parts.join(' - '); + }()), trailing: Wrap( spacing: 8, children: [ @@ -1584,6 +1591,12 @@ class _HomePageState extends ConsumerState { return value.toString(); } + String _formatSizeLabel(double? sizeMb) { + if (sizeMb == null || sizeMb <= 0) return ''; + final precision = sizeMb >= 10 ? 0 : 1; + return '${sizeMb.toStringAsFixed(precision)} MB'; + } + String _formatInt(int? value) { if (value == null) return ''; return value.toString(); diff --git a/varmanager_flutter/lib/features/var_detail/var_detail_page.dart b/varmanager_flutter/lib/features/var_detail/var_detail_page.dart index df3e9c6..2b75c64 100644 --- a/varmanager_flutter/lib/features/var_detail/var_detail_page.dart +++ b/varmanager_flutter/lib/features/var_detail/var_detail_page.dart @@ -64,6 +64,12 @@ class VarDetailPage extends ConsumerWidget { ); } + String _formatSizeLabel(double? sizeMb) { + if (sizeMb == null || sizeMb <= 0) return ''; + final precision = sizeMb >= 10 ? 0 : 1; + return '${sizeMb.toStringAsFixed(precision)} MB'; + } + @override Widget build(BuildContext context, WidgetRef ref) { final l10n = context.l10n; @@ -89,9 +95,16 @@ class VarDetailPage extends ConsumerWidget { Card( child: ListTile( title: Text(detail.varInfo.varName), - subtitle: Text( - '${detail.varInfo.creatorName ?? '-'} - ${detail.varInfo.packageName ?? '-'} - v${detail.varInfo.version ?? '-'}', - ), + subtitle: Text(() { + final sizeLabel = _formatSizeLabel(detail.varInfo.fsize); + final parts = [ + detail.varInfo.creatorName ?? '-', + detail.varInfo.packageName ?? '-', + 'v${detail.varInfo.version ?? '-'}', + if (sizeLabel.isNotEmpty) sizeLabel, + ]; + return parts.join(' - '); + }()), trailing: Wrap( spacing: 8, children: [ From 907c6408eaf1adf765ca0990aa40749b86cad2e6 Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:59:40 +0800 Subject: [PATCH 06/11] move package head err to VarnotComplyRule --- varManager_backend/src/jobs/update_db.rs | 37 ++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/varManager_backend/src/jobs/update_db.rs b/varManager_backend/src/jobs/update_db.rs index 8f95edd..b94c5e5 100644 --- a/varManager_backend/src/jobs/update_db.rs +++ b/varManager_backend/src/jobs/update_db.rs @@ -48,6 +48,10 @@ impl MoveCounter { *self.counts.entry(key).or_insert(0) += count; } + fn total(&self) -> u64 { + self.counts.values().copied().sum() + } + fn to_summary(&self) -> Vec { let mut items: Vec = self .counts @@ -151,12 +155,13 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St false, ); if var_files.is_empty() { - reporter.log("No VAR files found under tidied directory".to_string()); + reporter.log("No VAR files found under tidied directory".to_string()); let summary = UpdateDbSummary { scanned: tidy_stats.scanned, moves: tidy_stats.moves.to_summary(), }; reporter.set_result(serde_json::to_value(summary).map_err(|err| err.to_string())?); + log_update_db_summary(&tidy_stats, reporter); reporter.progress(100); return Ok(()); } @@ -222,7 +227,15 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St invalid_moves += 1; continue; } - Err(ProcessError::Io(err)) => return Err(err), + Err(ProcessError::Io(err)) => { + if is_zip_error(&err) { + reporter_async.log(err); + move_to_not_comply(&varspath_async, var_file, &reporter_async)?; + invalid_moves += 1; + continue; + } + return Err(err); + } } let progress = 10 + ((idx + 1) * 80 / total_vars) as u8; @@ -319,6 +332,7 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St moves: tidy_stats.moves.to_summary(), }; reporter.set_result(serde_json::to_value(summary).map_err(|err| err.to_string())?); + log_update_db_summary(&tidy_stats, reporter); reporter.progress(100); let total_elapsed = overall_start.elapsed(); @@ -331,6 +345,20 @@ fn update_db_blocking(state: &AppState, reporter: &JobReporter) -> Result<(), St Ok(()) } +fn log_update_db_summary(stats: &TidyStats, reporter: &JobReporter) { + let total_moved = stats.moves.total(); + reporter.log(format!( + "UpdateDB summary: scanned={}, moved={}", + stats.scanned, total_moved + )); + for item in stats.moves.to_summary() { + reporter.log(format!( + "Moved {} from {} to {}", + item.count, item.from, item.to + )); + } +} + fn config_paths(state: &AppState) -> Result<(PathBuf, Option), String> { let cfg = state .config @@ -752,6 +780,11 @@ enum ProcessError { Io(String), } +fn is_zip_error(err: &str) -> bool { + let msg = err.to_ascii_lowercase(); + msg.contains("zip") || msg.contains("eocd") || msg.contains("archive") +} + fn process_var_file( dependency_regex: &Regex, varspath: &Path, From 8f485804a9a4daafb9a2709f3e1ea7a94a96160c Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:22:06 +0800 Subject: [PATCH 07/11] add update db status and job log auto scroll --- varManager_backend/src/jobs/update_db.rs | 14 ++++++++++-- .../lib/widgets/job_log_panel.dart | 22 +++++++++---------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/varManager_backend/src/jobs/update_db.rs b/varManager_backend/src/jobs/update_db.rs index b94c5e5..3c8d4bb 100644 --- a/varManager_backend/src/jobs/update_db.rs +++ b/varManager_backend/src/jobs/update_db.rs @@ -352,13 +352,23 @@ fn log_update_db_summary(stats: &TidyStats, reporter: &JobReporter) { stats.scanned, total_moved )); for item in stats.moves.to_summary() { + let status = move_status_label(&item.to); reporter.log(format!( - "Moved {} from {} to {}", - item.count, item.from, item.to + "{}: Move {} from {} to {}", + status, item.count, item.from, item.to )); } } +fn move_status_label(dest: &str) -> &'static str { + let dest_lc = dest.to_ascii_lowercase(); + if dest_lc.ends_with(&NOT_COMPLY_DIR.to_ascii_lowercase()) { + "Invalid" + } else { + "Succeed" + } +} + fn config_paths(state: &AppState) -> Result<(PathBuf, Option), String> { let cfg = state .config diff --git a/varmanager_flutter/lib/widgets/job_log_panel.dart b/varmanager_flutter/lib/widgets/job_log_panel.dart index c55928a..f64aa91 100644 --- a/varmanager_flutter/lib/widgets/job_log_panel.dart +++ b/varmanager_flutter/lib/widgets/job_log_panel.dart @@ -24,23 +24,23 @@ class _JobLogPanelState extends ConsumerState { } void _scrollToBottom() { - if (_scrollController.hasClients) { - WidgetsBinding.instance.addPostFrameCallback((_) { - if (_scrollController.hasClients) { - _scrollController.animateTo( - _scrollController.position.maxScrollExtent, - duration: const Duration(milliseconds: 200), - curve: Curves.easeOut, - ); - } - }); - } + WidgetsBinding.instance.addPostFrameCallback((_) { + if (!_scrollController.hasClients) return; + _scrollController.animateTo( + _scrollController.position.maxScrollExtent, + duration: const Duration(milliseconds: 200), + curve: Curves.easeOut, + ); + }); } void _toggleExpanded() { setState(() { _isExpanded = !_isExpanded; }); + if (_isExpanded) { + _scrollToBottom(); + } } IconButton _buildToggleButton() { From a2104e930542853cd864ed0658b6a0649ab4b83f Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:23:17 +0800 Subject: [PATCH 08/11] add tour warning --- .../features/bootstrap/bootstrap_gate.dart | 20 ++++++++++++++++++- varmanager_flutter/lib/l10n/app_en.arb | 2 ++ .../lib/l10n/app_localizations.dart | 12 +++++++++++ .../lib/l10n/app_localizations_en.dart | 8 ++++++++ .../lib/l10n/app_localizations_zh.dart | 8 ++++++++ varmanager_flutter/lib/l10n/app_zh.arb | 2 ++ 6 files changed, 51 insertions(+), 1 deletion(-) diff --git a/varmanager_flutter/lib/features/bootstrap/bootstrap_gate.dart b/varmanager_flutter/lib/features/bootstrap/bootstrap_gate.dart index edaf707..b7aab26 100644 --- a/varmanager_flutter/lib/features/bootstrap/bootstrap_gate.dart +++ b/varmanager_flutter/lib/features/bootstrap/bootstrap_gate.dart @@ -311,6 +311,21 @@ class _BootstrapTourCoachState extends ConsumerState { final onBack = hasPreviousBootstrapStep(step) ? () => _handleBack() : null; + final InlineSpan? messageSpan = step == BootstrapStep.tourHome + ? TextSpan( + children: [ + TextSpan(text: l10n.bootstrapTourHomeBodyIntro), + const TextSpan(text: '\n'), + TextSpan( + text: l10n.bootstrapTourHomeBodyWarning, + style: const TextStyle( + color: Colors.red, + fontWeight: FontWeight.w700, + ), + ), + ], + ) + : null; return TargetFocus( identify: step.name, keyTarget: keyTarget, @@ -338,6 +353,7 @@ class _BootstrapTourCoachState extends ConsumerState { child: _CoachBubble( title: data.title, message: data.body, + messageSpan: messageSpan, onBack: onBack, onNext: _handleNext, onSkip: _handleSkip, @@ -461,6 +477,7 @@ class _CoachBubble extends StatelessWidget { const _CoachBubble({ required this.title, required this.message, + this.messageSpan, required this.onNext, required this.onSkip, required this.nextLabel, @@ -471,6 +488,7 @@ class _CoachBubble extends StatelessWidget { final String title; final String message; + final InlineSpan? messageSpan; final VoidCallback onNext; final VoidCallback onSkip; final VoidCallback? onBack; @@ -492,7 +510,7 @@ class _CoachBubble extends StatelessWidget { children: [ Text(title, style: const TextStyle(fontWeight: FontWeight.w700)), const SizedBox(height: 8), - Text(message), + messageSpan == null ? Text(message) : Text.rich(messageSpan!), const SizedBox(height: 12), Row( children: [ diff --git a/varmanager_flutter/lib/l10n/app_en.arb b/varmanager_flutter/lib/l10n/app_en.arb index 419b87b..711808a 100644 --- a/varmanager_flutter/lib/l10n/app_en.arb +++ b/varmanager_flutter/lib/l10n/app_en.arb @@ -796,6 +796,8 @@ "bootstrapCheckStatusPending": "Pending", "bootstrapTourHomeTitle": "Home: Filters + PackSwitch", "bootstrapTourHomeBody": "Update DB to index new VARs, then use advanced filters, batch actions, and the PackSwitch sidebar to manage installs. (If you are a new varManager user, please note that performing this operation will permanently change the *.var package organization structure within Varspath.)", + "bootstrapTourHomeBodyIntro": "Update DB to index new VARs, then use advanced filters, batch actions, and the PackSwitch sidebar to manage installs.", + "bootstrapTourHomeBodyWarning": "(If you are a new varManager user, please note that performing this operation will permanently change the *.var package organization structure within Varspath.)", "bootstrapTourScenesTitle": "Scenes: 3-column board", "bootstrapTourScenesBody": "Scenes are split into Hide/Normal/Fav; drag cards to organize, filter by location, and clear cache when needed.", "bootstrapTourHubTagsTitle": "Hub: Tags + quick filters", diff --git a/varmanager_flutter/lib/l10n/app_localizations.dart b/varmanager_flutter/lib/l10n/app_localizations.dart index 04d8a66..abd39d3 100644 --- a/varmanager_flutter/lib/l10n/app_localizations.dart +++ b/varmanager_flutter/lib/l10n/app_localizations.dart @@ -3121,6 +3121,18 @@ abstract class AppLocalizations { /// **'Update DB to index new VARs, then use advanced filters, batch actions, and the PackSwitch sidebar to manage installs. (If you are a new varManager user, please note that performing this operation will permanently change the *.var package organization structure within Varspath.)'** String get bootstrapTourHomeBody; + /// No description provided for @bootstrapTourHomeBodyIntro. + /// + /// In en, this message translates to: + /// **'Update DB to index new VARs, then use advanced filters, batch actions, and the PackSwitch sidebar to manage installs.'** + String get bootstrapTourHomeBodyIntro; + + /// No description provided for @bootstrapTourHomeBodyWarning. + /// + /// In en, this message translates to: + /// **'(If you are a new varManager user, please note that performing this operation will permanently change the *.var package organization structure within Varspath.)'** + String get bootstrapTourHomeBodyWarning; + /// No description provided for @bootstrapTourScenesTitle. /// /// In en, this message translates to: diff --git a/varmanager_flutter/lib/l10n/app_localizations_en.dart b/varmanager_flutter/lib/l10n/app_localizations_en.dart index 75108dc..88b7c02 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_en.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_en.dart @@ -1682,6 +1682,14 @@ class AppLocalizationsEn extends AppLocalizations { String get bootstrapTourHomeBody => 'Update DB to index new VARs, then use advanced filters, batch actions, and the PackSwitch sidebar to manage installs. (If you are a new varManager user, please note that performing this operation will permanently change the *.var package organization structure within Varspath.)'; + @override + String get bootstrapTourHomeBodyIntro => + 'Update DB to index new VARs, then use advanced filters, batch actions, and the PackSwitch sidebar to manage installs.'; + + @override + String get bootstrapTourHomeBodyWarning => + '(If you are a new varManager user, please note that performing this operation will permanently change the *.var package organization structure within Varspath.)'; + @override String get bootstrapTourScenesTitle => 'Scenes: 3-column board'; diff --git a/varmanager_flutter/lib/l10n/app_localizations_zh.dart b/varmanager_flutter/lib/l10n/app_localizations_zh.dart index e4bd95e..cb6d7ce 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_zh.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_zh.dart @@ -1641,6 +1641,14 @@ class AppLocalizationsZh extends AppLocalizations { String get bootstrapTourHomeBody => '鏇存柊鏁版嵁搴撳悗锛屼娇鐢ㄩ珮绾х瓫閫夊拰鎵归噺鎿嶄綔绠$悊 VAR锛屽彸渚 PackSwitch 蹇熷垏鎹㈤厤缃(濡傛灉浣犳槸varManager鏂扮敤鎴, 璇锋敞鎰忔墽琛屾鎿嶄綔浼氭案涔呮敼鍙榲arspath鍐呯殑*.var鍖呯粍缁囩粨鏋)'; + @override + String get bootstrapTourHomeBodyIntro => + '鏇存柊鏁版嵁搴撳悗锛屼娇鐢ㄩ珮绾х瓫閫夊拰鎵归噺鎿嶄綔绠$悊 VAR锛屽彸渚 PackSwitch 蹇熷垏鎹㈤厤缃'; + + @override + String get bootstrapTourHomeBodyWarning => + '锛堣娉ㄦ剰鎵ц姝ゆ搷浣滀細姘镐箙鏀瑰彉varspath鍐呯殑*.var鍖呯粍缁囩粨鏋勶級'; + @override String get bootstrapTourScenesTitle => 'Scenes锛氫笁鍒楁嫋鎷'; diff --git a/varmanager_flutter/lib/l10n/app_zh.arb b/varmanager_flutter/lib/l10n/app_zh.arb index 6f08c05..eac788c 100644 --- a/varmanager_flutter/lib/l10n/app_zh.arb +++ b/varmanager_flutter/lib/l10n/app_zh.arb @@ -504,6 +504,8 @@ "bootstrapCheckStatusPending": "绛夊緟", "bootstrapTourHomeTitle": "涓婚〉锛氱瓫閫 + PackSwitch", "bootstrapTourHomeBody": "鏇存柊鏁版嵁搴撳悗锛屼娇鐢ㄩ珮绾х瓫閫夊拰鎵归噺鎿嶄綔绠$悊 VAR锛屽彸渚 PackSwitch 蹇熷垏鎹㈤厤缃(濡傛灉浣犳槸varManager鏂扮敤鎴, 璇锋敞鎰忔墽琛屾鎿嶄綔浼氭案涔呮敼鍙榲arspath鍐呯殑*.var鍖呯粍缁囩粨鏋)", + "bootstrapTourHomeBodyIntro": "鏇存柊鏁版嵁搴撳悗锛屼娇鐢ㄩ珮绾х瓫閫夊拰鎵归噺鎿嶄綔绠$悊 VAR锛屽彸渚 PackSwitch 蹇熷垏鎹㈤厤缃", + "bootstrapTourHomeBodyWarning": "锛堣娉ㄦ剰鎵ц姝ゆ搷浣滀細姘镐箙鏀瑰彉varspath鍐呯殑*.var鍖呯粍缁囩粨鏋勶級", "bootstrapTourScenesTitle": "Scenes锛氫笁鍒楁嫋鎷", "bootstrapTourScenesBody": "Hide/Normal/Fav 涓夊垪鎷栨嫿鏁寸悊锛屾敮鎸佷綅缃瓫閫夊拰娓呯悊缂撳瓨銆", "bootstrapTourHubTagsTitle": "Hub锛氭爣绛句笌蹇嵎绛涢", From 47c93fce6e05a15c1c350cbc33b48e729ecc8aab Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:25:55 +0800 Subject: [PATCH 09/11] improve update db result status --- varManager_backend/src/jobs/update_db.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/varManager_backend/src/jobs/update_db.rs b/varManager_backend/src/jobs/update_db.rs index 3c8d4bb..f2c1f79 100644 --- a/varManager_backend/src/jobs/update_db.rs +++ b/varManager_backend/src/jobs/update_db.rs @@ -352,7 +352,7 @@ fn log_update_db_summary(stats: &TidyStats, reporter: &JobReporter) { stats.scanned, total_moved )); for item in stats.moves.to_summary() { - let status = move_status_label(&item.to); + let status = move_prefix_label(&item.to); reporter.log(format!( "{}: Move {} from {} to {}", status, item.count, item.from, item.to @@ -360,13 +360,21 @@ fn log_update_db_summary(stats: &TidyStats, reporter: &JobReporter) { } } -fn move_status_label(dest: &str) -> &'static str { - let dest_lc = dest.to_ascii_lowercase(); - if dest_lc.ends_with(&NOT_COMPLY_DIR.to_ascii_lowercase()) { - "Invalid" - } else { - "Succeed" +fn move_prefix_label(dest: &str) -> &'static str { + let leaf = std::path::Path::new(dest) + .file_name() + .and_then(|s| s.to_str()) + .unwrap_or(""); + if leaf.eq_ignore_ascii_case(NOT_COMPLY_DIR) { + return "Invalid"; + } + if leaf.eq_ignore_ascii_case(REDUNDANT_DIR) { + return "Redundant"; + } + if leaf.eq_ignore_ascii_case(TIDIED_DIR) { + return "Succeed"; } + "Succeed" } fn config_paths(state: &AppState) -> Result<(PathBuf, Option), String> { From fe5ca43f892dd147d49db47c6a0197489e18e345 Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:41:47 +0800 Subject: [PATCH 10/11] improve update db result status ui --- .../lib/features/home/home_page.dart | 16 +++++++++- varmanager_flutter/lib/l10n/app_en.arb | 12 ++++++++ .../lib/l10n/app_localizations.dart | 29 +++++++++++++++++++ .../lib/l10n/app_localizations_en.dart | 19 ++++++++++++ .../lib/l10n/app_localizations_zh.dart | 19 ++++++++++++ varmanager_flutter/lib/l10n/app_zh.arb | 4 +++ 6 files changed, 98 insertions(+), 1 deletion(-) diff --git a/varmanager_flutter/lib/features/home/home_page.dart b/varmanager_flutter/lib/features/home/home_page.dart index 0916a8f..0d2fdae 100644 --- a/varmanager_flutter/lib/features/home/home_page.dart +++ b/varmanager_flutter/lib/features/home/home_page.dart @@ -9,6 +9,7 @@ import '../../core/models/job_models.dart'; import '../../core/models/var_models.dart'; import '../../core/utils/debounce.dart'; import '../../widgets/lazy_dropdown_field.dart'; +import '../../l10n/app_localizations.dart'; import '../../l10n/l10n.dart'; import '../bootstrap/bootstrap_keys.dart'; import '../missing_vars/missing_vars_page.dart'; @@ -1271,7 +1272,8 @@ class _HomePageState extends ConsumerState { if (count <= 0) continue; final from = item['from']?.toString() ?? ''; final to = item['to']?.toString() ?? ''; - moveLines.add(l10n.updateDbSummaryMoveLine(count, from, to)); + final status = _moveStatusLabel(to, l10n); + moveLines.add(l10n.updateDbSummaryMoveLineStatus(status, count, from, to)); } } if (!mounted) return; @@ -1597,6 +1599,18 @@ class _HomePageState extends ConsumerState { return '${sizeMb.toStringAsFixed(precision)} MB'; } + String _moveStatusLabel(String dest, AppLocalizations l10n) { + final normalized = dest.replaceAll('\\', '/').replaceAll(RegExp(r'/+$'), ''); + final leaf = normalized.isEmpty ? '' : normalized.split('/').last.toLowerCase(); + if (leaf == '___varnotcomplyrule___') { + return l10n.updateDbSummaryStatusInvalid; + } + if (leaf == '___varredundant___') { + return l10n.updateDbSummaryStatusRedundant; + } + return l10n.updateDbSummaryStatusSucceed; + } + String _formatInt(int? value) { if (value == null) return ''; return value.toString(); diff --git a/varmanager_flutter/lib/l10n/app_en.arb b/varmanager_flutter/lib/l10n/app_en.arb index 711808a..6f67a44 100644 --- a/varmanager_flutter/lib/l10n/app_en.arb +++ b/varmanager_flutter/lib/l10n/app_en.arb @@ -155,6 +155,10 @@ "updateDbSummaryScanned": "Scanned {count} packages.", "updateDbSummaryEmpty": "No packages moved.", "updateDbSummaryMoveLine": "{count} from {from} to {to}", + "updateDbSummaryMoveLineStatus": "{status}: Move {count} from {from} to {to}", + "updateDbSummaryStatusSucceed": "Succeed", + "updateDbSummaryStatusInvalid": "Invalid", + "updateDbSummaryStatusRedundant": "Redundant", "startVamLabel": "Start VaM", "startVamTooltip": "Launch the VaM application.", "prepareSavesLabel": "Prepare Saves", @@ -584,6 +588,14 @@ "to": {} } }, + "@updateDbSummaryMoveLineStatus": { + "placeholders": { + "status": {}, + "count": {}, + "from": {}, + "to": {} + } + }, "@installVarConfirm": { "placeholders": { "varName": {} diff --git a/varmanager_flutter/lib/l10n/app_localizations.dart b/varmanager_flutter/lib/l10n/app_localizations.dart index abd39d3..e35e2b6 100644 --- a/varmanager_flutter/lib/l10n/app_localizations.dart +++ b/varmanager_flutter/lib/l10n/app_localizations.dart @@ -1028,6 +1028,35 @@ abstract class AppLocalizations { /// **'{count} from {from} to {to}'** String updateDbSummaryMoveLine(Object count, Object from, Object to); + /// No description provided for @updateDbSummaryMoveLineStatus. + /// + /// In en, this message translates to: + /// **'{status}: Move {count} from {from} to {to}'** + String updateDbSummaryMoveLineStatus( + Object status, + Object count, + Object from, + Object to, + ); + + /// No description provided for @updateDbSummaryStatusSucceed. + /// + /// In en, this message translates to: + /// **'Succeed'** + String get updateDbSummaryStatusSucceed; + + /// No description provided for @updateDbSummaryStatusInvalid. + /// + /// In en, this message translates to: + /// **'Invalid'** + String get updateDbSummaryStatusInvalid; + + /// No description provided for @updateDbSummaryStatusRedundant. + /// + /// In en, this message translates to: + /// **'Redundant'** + String get updateDbSummaryStatusRedundant; + /// No description provided for @startVamLabel. /// /// In en, this message translates to: diff --git a/varmanager_flutter/lib/l10n/app_localizations_en.dart b/varmanager_flutter/lib/l10n/app_localizations_en.dart index 88b7c02..baf1023 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_en.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_en.dart @@ -500,6 +500,25 @@ class AppLocalizationsEn extends AppLocalizations { return '$count from $from to $to'; } + @override + String updateDbSummaryMoveLineStatus( + Object status, + Object count, + Object from, + Object to, + ) { + return '$status: Move $count from $from to $to'; + } + + @override + String get updateDbSummaryStatusSucceed => 'Succeed'; + + @override + String get updateDbSummaryStatusInvalid => 'Invalid'; + + @override + String get updateDbSummaryStatusRedundant => 'Redundant'; + @override String get startVamLabel => 'Start VaM'; diff --git a/varmanager_flutter/lib/l10n/app_localizations_zh.dart b/varmanager_flutter/lib/l10n/app_localizations_zh.dart index cb6d7ce..f33c369 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_zh.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_zh.dart @@ -495,6 +495,25 @@ class AppLocalizationsZh extends AppLocalizations { return '$count 浠 $from 绉诲姩鍒 $to'; } + @override + String updateDbSummaryMoveLineStatus( + Object status, + Object count, + Object from, + Object to, + ) { + return '$status锛氱Щ鍔 $count 涓紝浠 $from 鍒 $to'; + } + + @override + String get updateDbSummaryStatusSucceed => '鎴愬姛'; + + @override + String get updateDbSummaryStatusInvalid => '涓嶅悎瑙'; + + @override + String get updateDbSummaryStatusRedundant => '鍐椾綑'; + @override String get startVamLabel => '鍚姩 VaM'; diff --git a/varmanager_flutter/lib/l10n/app_zh.arb b/varmanager_flutter/lib/l10n/app_zh.arb index eac788c..3c4a500 100644 --- a/varmanager_flutter/lib/l10n/app_zh.arb +++ b/varmanager_flutter/lib/l10n/app_zh.arb @@ -155,6 +155,10 @@ "updateDbSummaryScanned": "鎵弿鍒 {count} 涓寘銆", "updateDbSummaryEmpty": "娌℃湁闇瑕佺Щ鍔ㄧ殑鍖呫", "updateDbSummaryMoveLine": "{count} 浠 {from} 绉诲姩鍒 {to}", + "updateDbSummaryMoveLineStatus": "{status}锛氱Щ鍔 {count} 涓紝浠 {from} 鍒 {to}", + "updateDbSummaryStatusSucceed": "鎴愬姛", + "updateDbSummaryStatusInvalid": "涓嶅悎瑙", + "updateDbSummaryStatusRedundant": "鍐椾綑", "startVamLabel": "鍚姩 VaM", "startVamTooltip": "鍚姩 VaM 搴旂敤銆", "prepareSavesLabel": "鍑嗗瀛樻。", From d9b5d9eb7274e25ff659a822287255841c2e14fc Mon Sep 17 00:00:00 2001 From: bustesoul <32890006+bustesoul@users.noreply.github.com> Date: Wed, 14 Jan 2026 01:07:03 +0800 Subject: [PATCH 11/11] improve packswitch check --- varManager_backend/src/jobs/packswitch.rs | 62 ++++++++++++++++++- varmanager_flutter/lib/l10n/app_en.arb | 2 +- .../lib/l10n/app_localizations_en.dart | 2 +- .../lib/l10n/app_localizations_zh.dart | 2 +- varmanager_flutter/lib/l10n/app_zh.arb | 2 +- 5 files changed, 65 insertions(+), 5 deletions(-) diff --git a/varManager_backend/src/jobs/packswitch.rs b/varManager_backend/src/jobs/packswitch.rs index cff6d69..0d9a933 100644 --- a/varManager_backend/src/jobs/packswitch.rs +++ b/varManager_backend/src/jobs/packswitch.rs @@ -1,14 +1,19 @@ use crate::infra::db::{upsert_install_status, var_exists_conn}; use crate::infra::fs_util; use crate::jobs::job_channel::JobReporter; -use crate::infra::paths::{addon_packages_dir, addon_switch_root, config_paths}; +use crate::infra::paths::{ + addon_packages_dir, addon_switch_root, config_paths, INSTALL_LINK_DIR, MISSING_LINK_DIR, + TEMP_LINK_DIR, +}; use crate::app::AppState; use crate::infra::{system_ops, winfs}; use serde::{Deserialize, Serialize}; use serde_json::Value; +use std::collections::HashSet; use std::fs; use std::path::{Path, PathBuf}; use sqlx::SqlitePool; +use walkdir::WalkDir; #[derive(Deserialize)] struct PackSwitchArgs { @@ -223,6 +228,14 @@ fn set_switch_blocking( } } + if addon_packages_has_real_vars(&addon_path) { + reporter.log(format!( + "AddonPackages has real var files; update DB required: {}", + addon_path.display() + )); + return Ok(PackSwitchSetOutcome::UpdateDbRequired { addon_path }); + } + if meta.file_type().is_symlink() { if fs::remove_file(&addon_path).is_err() { fs::remove_dir_all(&addon_path).map_err(|err| err.to_string())?; @@ -241,6 +254,53 @@ fn set_switch_blocking( Ok(PackSwitchSetOutcome::Switched) } +fn addon_packages_has_real_vars(addon_path: &Path) -> bool { + let scan_root = resolve_addon_scan_root(addon_path); + if !scan_root.exists() { + return false; + } + let exclude: HashSet = [INSTALL_LINK_DIR, MISSING_LINK_DIR, TEMP_LINK_DIR] + .iter() + .map(|name| name.to_string()) + .collect(); + let walker = WalkDir::new(&scan_root).follow_links(false).into_iter(); + for entry in walker.filter_entry(|entry| { + if entry.file_type().is_dir() { + if let Some(name) = entry.file_name().to_str() { + return !exclude.contains(name); + } + } + true + }) { + let entry = match entry { + Ok(entry) => entry, + Err(_) => continue, + }; + if entry.file_type().is_file() { + if let Some(ext) = entry.path().extension() { + if ext.eq_ignore_ascii_case("var") { + return true; + } + } + } + } + false +} + +fn resolve_addon_scan_root(addon_path: &Path) -> PathBuf { + if fs_util::is_symlink(addon_path) { + if let Ok(target) = winfs::read_link_target(addon_path) { + if target.is_absolute() { + return target; + } + if let Some(parent) = addon_path.parent() { + return parent.join(target); + } + } + } + addon_path.to_path_buf() +} + async fn refresh_install_status(pool: &SqlitePool, vampath: &Path) -> Result { sqlx::query("DELETE FROM installStatus") .execute(pool) diff --git a/varmanager_flutter/lib/l10n/app_en.arb b/varmanager_flutter/lib/l10n/app_en.arb index 6f67a44..e2eac51 100644 --- a/varmanager_flutter/lib/l10n/app_en.arb +++ b/varmanager_flutter/lib/l10n/app_en.arb @@ -150,7 +150,7 @@ "updateDbLabel": "Update DB", "updateDbTooltip": "Scan vars, extract previews, and update the database.", "updateDbRequiredTitle": "Update DB required", - "updateDbRequiredMessage": "AddonPackages at {path} is not a symlink. Run Update DB before switching packs.", + "updateDbRequiredMessage": "AddonPackages at {path} contains real .var files or is not a symlink. Run Update DB before switching packs.", "updateDbSummaryTitle": "Update DB completed", "updateDbSummaryScanned": "Scanned {count} packages.", "updateDbSummaryEmpty": "No packages moved.", diff --git a/varmanager_flutter/lib/l10n/app_localizations_en.dart b/varmanager_flutter/lib/l10n/app_localizations_en.dart index baf1023..45a7b5c 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_en.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_en.dart @@ -481,7 +481,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String updateDbRequiredMessage(Object path) { - return 'AddonPackages at $path is not a symlink. Run Update DB before switching packs.'; + return 'AddonPackages at $path contains real .var files or is not a symlink. Run Update DB before switching packs.'; } @override diff --git a/varmanager_flutter/lib/l10n/app_localizations_zh.dart b/varmanager_flutter/lib/l10n/app_localizations_zh.dart index f33c369..6ac9a4b 100644 --- a/varmanager_flutter/lib/l10n/app_localizations_zh.dart +++ b/varmanager_flutter/lib/l10n/app_localizations_zh.dart @@ -476,7 +476,7 @@ class AppLocalizationsZh extends AppLocalizations { @override String updateDbRequiredMessage(Object path) { - return '妫娴嬪埌 AddonPackages 涓嶆槸绗﹀彿閾炬帴锛$path锛夈傝鍏堟墽琛屾洿鏂版暟鎹簱銆'; + return '妫娴嬪埌 AddonPackages 鍖呭惈瀹為檯 .var 鏂囦欢鎴栦笉鏄鍙烽摼鎺ワ紙$path锛夈傝鍏堟墽琛屾洿鏂版暟鎹簱銆'; } @override diff --git a/varmanager_flutter/lib/l10n/app_zh.arb b/varmanager_flutter/lib/l10n/app_zh.arb index 3c4a500..a8f9e22 100644 --- a/varmanager_flutter/lib/l10n/app_zh.arb +++ b/varmanager_flutter/lib/l10n/app_zh.arb @@ -150,7 +150,7 @@ "updateDbLabel": "鏇存柊鏁版嵁搴", "updateDbTooltip": "鎵弿 Vars銆佹彁鍙栭瑙堝苟鏇存柊鏁版嵁搴撱", "updateDbRequiredTitle": "闇瑕佹洿鏂版暟鎹簱", - "updateDbRequiredMessage": "妫娴嬪埌 AddonPackages 涓嶆槸绗﹀彿閾炬帴锛坽path}锛夈傝鍏堟墽琛屾洿鏂版暟鎹簱銆", + "updateDbRequiredMessage": "妫娴嬪埌 AddonPackages 鍖呭惈瀹為檯 .var 鏂囦欢鎴栦笉鏄鍙烽摼鎺ワ紙{path}锛夈傝鍏堟墽琛屾洿鏂版暟鎹簱銆", "updateDbSummaryTitle": "鏇存柊鏁版嵁搴撳畬鎴", "updateDbSummaryScanned": "鎵弿鍒 {count} 涓寘銆", "updateDbSummaryEmpty": "娌℃湁闇瑕佺Щ鍔ㄧ殑鍖呫",