mirror of
https://github.com/kwsch/NHSE.git
synced 2026-09-30 05:46:40 -05:00
Add Sort Items Option (#391)
* Add designer handling for Sort button * Update tab indexes for buttons after Sort * Add context menu and toolstrip menu objects for Sort menu * Add context/toolstrip menu handlers * Add default click handlers for sort options * Initialize context/toolstrip menu objects * Add missing logic * Fix Sort button location * Expand size of navigation panel for sort button: * Remove ellipses from sort button caption * Implement alphabetical sort * Implement sort by item type (ItemKind) * Add check for item count in SetEditorItems * Remove sort by new (item data not present) * Sort by alphabetical before sorting by type
This commit is contained in:
57
NHSE.WinForms/Controls/ItemGridEditor.Designer.cs
generated
57
NHSE.WinForms/Controls/ItemGridEditor.Designer.cs
generated
@@ -1,4 +1,4 @@
|
||||
namespace NHSE.WinForms
|
||||
namespace NHSE.WinForms
|
||||
{
|
||||
partial class ItemGridEditor
|
||||
{
|
||||
@@ -39,6 +39,10 @@ private void InitializeComponent()
|
||||
this.Menu_Set = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.Menu_Delete = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.B_Clear = new System.Windows.Forms.Button();
|
||||
this.B_Sort = new System.Windows.Forms.Button();
|
||||
this.CM_Sort = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.B_SortAlpha = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.B_SortType = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.CM_Remove = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.B_ClearAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.B_ClearClothing = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -51,6 +55,7 @@ private void InitializeComponent()
|
||||
this.HoverTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.B_ClearDive = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.CM_Hand.SuspendLayout();
|
||||
this.CM_Sort.SuspendLayout();
|
||||
this.CM_Remove.SuspendLayout();
|
||||
this.FLP_Controls.SuspendLayout();
|
||||
this.PAN_Navigation.SuspendLayout();
|
||||
@@ -165,6 +170,44 @@ private void InitializeComponent()
|
||||
this.B_Clear.Text = "Clear";
|
||||
this.B_Clear.UseVisualStyleBackColor = true;
|
||||
this.B_Clear.Click += new System.EventHandler(this.B_Clear_Click);
|
||||
//
|
||||
// B_Sort
|
||||
//
|
||||
this.B_Sort.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_Sort.ContextMenuStrip = this.CM_Sort;
|
||||
this.B_Sort.Location = new System.Drawing.Point(4, 197);
|
||||
this.B_Sort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.B_Sort.Name = "B_Sort";
|
||||
this.B_Sort.Size = new System.Drawing.Size(85, 36);
|
||||
this.B_Sort.TabIndex = 8;
|
||||
this.B_Sort.Text = "Sort";
|
||||
this.B_Sort.UseVisualStyleBackColor = true;
|
||||
this.B_Sort.Click += new System.EventHandler(this.B_Sort_Click);
|
||||
//
|
||||
// CM_Sort
|
||||
//
|
||||
this.CM_Sort.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||
this.CM_Sort.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.B_SortAlpha,
|
||||
this.B_SortType});
|
||||
this.CM_Sort.Name = "CM_Sort";
|
||||
this.CM_Sort.ShowImageMargin = false;
|
||||
this.CM_Sort.Size = new System.Drawing.Size(186, 200);
|
||||
//
|
||||
// B_SortAlpha
|
||||
//
|
||||
this.B_SortAlpha.Name = "B_SortAlpha";
|
||||
this.B_SortAlpha.Size = new System.Drawing.Size(185, 24);
|
||||
this.B_SortAlpha.Text = "Alphabetical";
|
||||
this.B_SortAlpha.Click += new System.EventHandler(this.B_SortAlpha_Click);
|
||||
//
|
||||
// B_SortType
|
||||
//
|
||||
this.B_SortType.Name = "B_SortType";
|
||||
this.B_SortType.Size = new System.Drawing.Size(185, 24);
|
||||
this.B_SortType.Text = "Type";
|
||||
this.B_SortType.Click += new System.EventHandler(this.B_SortType_Click);
|
||||
//
|
||||
// CM_Remove
|
||||
//
|
||||
@@ -233,7 +276,7 @@ private void InitializeComponent()
|
||||
this.FLP_Controls.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.FLP_Controls.Name = "FLP_Controls";
|
||||
this.FLP_Controls.Size = new System.Drawing.Size(321, 242);
|
||||
this.FLP_Controls.TabIndex = 8;
|
||||
this.FLP_Controls.TabIndex = 9;
|
||||
//
|
||||
// PAN_Navigation
|
||||
//
|
||||
@@ -241,11 +284,12 @@ private void InitializeComponent()
|
||||
this.PAN_Navigation.Controls.Add(this.L_Page);
|
||||
this.PAN_Navigation.Controls.Add(this.B_Down);
|
||||
this.PAN_Navigation.Controls.Add(this.B_Clear);
|
||||
this.PAN_Navigation.Controls.Add(this.B_Sort);
|
||||
this.PAN_Navigation.Location = new System.Drawing.Point(217, 30);
|
||||
this.PAN_Navigation.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.PAN_Navigation.Name = "PAN_Navigation";
|
||||
this.PAN_Navigation.Size = new System.Drawing.Size(93, 175);
|
||||
this.PAN_Navigation.TabIndex = 9;
|
||||
this.PAN_Navigation.Size = new System.Drawing.Size(93, 235);
|
||||
this.PAN_Navigation.TabIndex = 10;
|
||||
//
|
||||
// HoverTip
|
||||
//
|
||||
@@ -267,6 +311,7 @@ private void InitializeComponent()
|
||||
this.Name = "ItemGridEditor";
|
||||
this.Size = new System.Drawing.Size(321, 242);
|
||||
this.CM_Hand.ResumeLayout(false);
|
||||
this.CM_Sort.ResumeLayout(false);
|
||||
this.CM_Remove.ResumeLayout(false);
|
||||
this.FLP_Controls.ResumeLayout(false);
|
||||
this.PAN_Navigation.ResumeLayout(false);
|
||||
@@ -286,6 +331,10 @@ private void InitializeComponent()
|
||||
private System.Windows.Forms.ToolStripMenuItem Menu_Set;
|
||||
private System.Windows.Forms.ToolStripMenuItem Menu_Delete;
|
||||
private System.Windows.Forms.Button B_Clear;
|
||||
private System.Windows.Forms.Button B_Sort;
|
||||
private System.Windows.Forms.ContextMenuStrip CM_Sort;
|
||||
private System.Windows.Forms.ToolStripMenuItem B_SortAlpha;
|
||||
private System.Windows.Forms.ToolStripMenuItem B_SortType;
|
||||
private System.Windows.Forms.FlowLayoutPanel FLP_Controls;
|
||||
private System.Windows.Forms.Panel PAN_Navigation;
|
||||
private System.Windows.Forms.ToolTip HoverTip;
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.VisualStyles;
|
||||
using NHSE.Core;
|
||||
using NHSE.Sprites;
|
||||
|
||||
@@ -244,6 +247,50 @@ private void ClearItemIf(Func<Item, bool> criteria)
|
||||
System.Media.SystemSounds.Asterisk.Play();
|
||||
}
|
||||
|
||||
private void B_Sort_Click(object sender, EventArgs e) => ShowContextMenuBelow(CM_Sort, B_Sort);
|
||||
private void B_SortAlpha_Click(object sender, EventArgs e) {
|
||||
IEnumerable<Item> sortedItems = Items.Where(item => item.ItemId != Item.NONE).OrderBy(item => GetItemText(item).ToLower());
|
||||
IList<Item> sortedItemsCopy = new List<Item>(); // to prevent object reference issues
|
||||
|
||||
foreach(Item item in sortedItems) {
|
||||
Item itemCopy = new Item();
|
||||
itemCopy.CopyFrom(item);
|
||||
sortedItemsCopy.Add(itemCopy);
|
||||
}
|
||||
|
||||
SetEditorItems(sortedItemsCopy);
|
||||
}
|
||||
private void B_SortType_Click(object sender, EventArgs e) {
|
||||
IEnumerable<Item> sortedItems = Items.Where(item => item.ItemId != Item.NONE).OrderBy(item => GetItemText(item).ToLower()).OrderBy(item => ItemInfo.GetItemKind(item));
|
||||
IList<Item> sortedItemsCopy = new List<Item>(); // to prevent object reference issues
|
||||
|
||||
foreach(Item item in sortedItems) {
|
||||
Item itemCopy = new Item();
|
||||
itemCopy.CopyFrom(item);
|
||||
sortedItemsCopy.Add(itemCopy);
|
||||
}
|
||||
|
||||
SetEditorItems(sortedItemsCopy);
|
||||
}
|
||||
private void SetEditorItems(IList<Item> items) {
|
||||
if (items.Count > Items.Count)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < Items.Count; i++) {
|
||||
if (i < items.Count) {
|
||||
GetItem(i).CopyFrom(items[i]);
|
||||
}
|
||||
else {
|
||||
GetItem(i).CopyFrom(Item.NO_ITEM);
|
||||
}
|
||||
ItemUpdated();
|
||||
}
|
||||
|
||||
LoadItems();
|
||||
Editor.LoadItem(Item.NO_ITEM);
|
||||
System.Media.SystemSounds.Asterisk.Play();
|
||||
}
|
||||
|
||||
private void B_ClearAll_Click(object sender, EventArgs e) => ClearItemIf(_ => true);
|
||||
private void B_ClearClothing_Click(object sender, EventArgs e) => ClearItemIf(z => ItemInfo.GetItemKind(z).IsClothing());
|
||||
private void B_ClearCrafting_Click(object sender, EventArgs e) => ClearItemIf(z => ItemInfo.GetItemKind(z).IsCrafting());
|
||||
|
||||
Reference in New Issue
Block a user