diff --git a/BizHawk.MultiClient/tools/Cheats/CheatList.cs b/BizHawk.MultiClient/tools/Cheats/CheatList.cs index e6f9409d51..a679595e91 100644 --- a/BizHawk.MultiClient/tools/Cheats/CheatList.cs +++ b/BizHawk.MultiClient/tools/Cheats/CheatList.cs @@ -262,6 +262,171 @@ namespace BizHawk.MultiClient get { return _currentFileName; } } + public void Sort(string column, bool reverse) + { + switch (column) + { + case NewCheatForm.NAME: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.Name) + .ThenBy(x => x.Address ?? 0) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.Name) + .ThenBy(x => x.Address ?? 0) + .ToList(); + } + break; + case NewCheatForm.ADDRESS: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.Address ?? 0) + .ThenBy(x => x.Name) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.Address ?? 0) + .ThenBy(x => x.Name) + .ToList(); + } + break; + case NewCheatForm.VALUE: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.Value ?? 0) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.Value ?? 0) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + break; + case NewCheatForm.COMPARE: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.Compare ?? 0) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.Compare ?? 0) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + break; + case NewCheatForm.ON: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.Enabled) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.Enabled) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + break; + case NewCheatForm.DOMAIN: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.Domain) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.Domain) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + break; + case NewCheatForm.SIZE: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => ((int)x.Size)) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => ((int)x.Size)) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + break; + case NewCheatForm.ENDIAN: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.BigEndian) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.BigEndian) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + break; + case NewCheatForm.TYPE: + if (reverse) + { + _cheatList = _cheatList + .OrderByDescending(x => x.Type) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + else + { + _cheatList = _cheatList + .OrderBy(x => x.Type) + .ThenBy(x => x.Name) + .ThenBy(x => x.Address.Value) + .ToList(); + } + break; + } + } + #region privates private string GenerateDefaultFilename() diff --git a/BizHawk.MultiClient/tools/Cheats/NewCheatForm.Designer.cs b/BizHawk.MultiClient/tools/Cheats/NewCheatForm.Designer.cs index 383f1068dd..de176fc8a6 100644 --- a/BizHawk.MultiClient/tools/Cheats/NewCheatForm.Designer.cs +++ b/BizHawk.MultiClient/tools/Cheats/NewCheatForm.Designer.cs @@ -110,8 +110,9 @@ // CheatListView // this.CheatListView.AllowColumnReorder = true; - this.CheatListView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); + this.CheatListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.CheatListView.AutoArrange = false; this.CheatListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.CheatName, @@ -133,6 +134,7 @@ this.CheatListView.TabIndex = 1; this.CheatListView.UseCompatibleStateImageBehavior = false; this.CheatListView.View = System.Windows.Forms.View.Details; + this.CheatListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.CheatListView_ColumnClick); this.CheatListView.ColumnReordered += new System.Windows.Forms.ColumnReorderedEventHandler(this.CheatListView_ColumnReordered); this.CheatListView.SelectedIndexChanged += new System.EventHandler(this.CheatListView_SelectedIndexChanged); this.CheatListView.Click += new System.EventHandler(this.CheatListView_Click); @@ -715,7 +717,8 @@ // // CheatGroupBox // - this.CheatGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CheatGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); this.CheatGroupBox.Controls.Add(this.CheatEditor); this.CheatGroupBox.Location = new System.Drawing.Point(432, 66); this.CheatGroupBox.Name = "CheatGroupBox"; diff --git a/BizHawk.MultiClient/tools/Cheats/NewCheatForm.cs b/BizHawk.MultiClient/tools/Cheats/NewCheatForm.cs index 674f9b3205..1dc742882e 100644 --- a/BizHawk.MultiClient/tools/Cheats/NewCheatForm.cs +++ b/BizHawk.MultiClient/tools/Cheats/NewCheatForm.cs @@ -801,7 +801,7 @@ namespace BizHawk.MultiClient #endregion - #region ListView Events + #region ListView and Dialog Events private void CheatListView_Click(object sender, EventArgs e) { @@ -844,6 +844,21 @@ namespace BizHawk.MultiClient DoSelectedIndexChange(); } + private void CheatListView_ColumnClick(object sender, ColumnClickEventArgs e) + { + var column = CheatListView.Columns[e.Column]; + if (column.Name != _sortedColumn) + { + _sortReverse = false; + } + + Global.CheatList2.Sort(column.Name, _sortReverse); + + _sortedColumn = column.Name; + _sortReverse ^= true; + UpdateListView(); + } + private void NewCheatForm_DragDrop(object sender, DragEventArgs e) { string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);