some Lua documentation related cleanup and support column sorting on Description in Lua Functions list

This commit is contained in:
adelikat 2014-01-25 20:27:51 +00:00
parent 10e203e981
commit 06c0417f96
5 changed files with 77 additions and 53 deletions

View File

@ -161,6 +161,5 @@ namespace BizHawk.Client.Common
(value & 0x000000FF00000000UL) >> 8 | (value & 0x0000FF0000000000UL) >> 24 | (value & 0x000000FF00000000UL) >> 8 | (value & 0x0000FF0000000000UL) >> 24 |
(value & 0x00FF000000000000UL) >> 40 | (value & 0xFF00000000000000UL) >> 56; (value & 0x00FF000000000000UL) >> 40 | (value & 0xFF00000000000000UL) >> 56;
} }
} }
} }

View File

@ -1,23 +1,29 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text; using System.Text;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
public interface ILuaDocumentation public interface ILuaDocumentation
{ {
void Add(string method_lib, string method_name, System.Reflection.MethodInfo method, string description); void Add(string methodLib, string methodName, MethodInfo method, string description);
} }
public class LuaDocumentation : ILuaDocumentation public class LuaDocumentation : ILuaDocumentation
{ {
public List<LibraryFunction> FunctionList = new List<LibraryFunction>(); public List<LibraryFunction> FunctionList { get; set; }
public void Add(string method_lib, string method_name, System.Reflection.MethodInfo method, string description) public LuaDocumentation()
{
FunctionList = new List<LibraryFunction>();
}
public void Add(string methodLib, string methodName, MethodInfo method, string description)
{ {
FunctionList.Add( FunctionList.Add(
new LibraryFunction(method_lib, method_name, method, description) new LibraryFunction(methodLib, methodName, method, description)
); );
} }
@ -36,32 +42,36 @@ namespace BizHawk.Client.Common
return FunctionList.Select(x => x.Library); return FunctionList.Select(x => x.Library);
} }
public List<string> GetFunctionsByLibrary(string library) public IEnumerable<string> GetFunctionsByLibrary(string library)
{ {
return (from t in FunctionList where t.Library == library select t.Name).ToList(); return FunctionList
.Where(func => func.Library == library)
.Select(func => func.Name);
} }
public class LibraryFunction public class LibraryFunction
{ {
public LibraryFunction(string method_lib, string method_name, System.Reflection.MethodInfo method, string description) public LibraryFunction(string methodLib, string methodName, MethodInfo method, string description)
{ {
Library = method_lib; Library = methodLib;
Name = method_name; Name = methodName;
var info = method.GetParameters(); var info = method.GetParameters();
Parameters = new List<string>();
foreach (var p in info) foreach (var p in info)
{ {
Parameters.Add(p.ToString()); Parameters.Add(p.ToString());
} }
return_type = method.ReturnType.ToString(); this._returnType = method.ReturnType.ToString();
Description = description; Description = description;
} }
public string Library = String.Empty; public string Library { get; set; }
public string Name = String.Empty; public string Name { get; set; }
public List<string> Parameters = new List<string>(); public List<string> Parameters { get; set; }
public string return_type = String.Empty; private readonly string _returnType = String.Empty;
public string Description { get; set; } public string Description { get; set; }
@ -71,9 +81,15 @@ namespace BizHawk.Client.Common
{ {
var list = new StringBuilder(); var list = new StringBuilder();
list.Append('('); list.Append('(');
for (int i = 0; i < Parameters.Count; i++) for (var i = 0; i < Parameters.Count; i++)
{ {
var param = Parameters[i].Replace("System", "").Replace("Object", "").Replace(" ", "").Replace(".", "").Replace("LuaInterface", ""); var param = Parameters[i]
.Replace("System", String.Empty)
.Replace("Object", String.Empty)
.Replace(" ", String.Empty)
.Replace(".", String.Empty)
.Replace("LuaInterface", String.Empty);
list.Append(param); list.Append(param);
if (i < Parameters.Count - 1) if (i < Parameters.Count - 1)
{ {
@ -82,6 +98,7 @@ namespace BizHawk.Client.Common
} }
list.Append(')'); list.Append(')');
return list.ToString(); return list.ToString();
} }
} }
@ -90,7 +107,11 @@ namespace BizHawk.Client.Common
{ {
get get
{ {
return return_type.Replace("System.", "").Replace("LuaInterface.", "").ToLower().Trim(); return _returnType
.Replace("System.", String.Empty)
.Replace("LuaInterface.", String.Empty)
.ToLower()
.Trim();
} }
} }
} }

View File

@ -48,7 +48,7 @@
this.OK.TabIndex = 0; this.OK.TabIndex = 0;
this.OK.Text = "&Ok"; this.OK.Text = "&Ok";
this.OK.UseVisualStyleBackColor = true; this.OK.UseVisualStyleBackColor = true;
this.OK.Click += new System.EventHandler(this.OK_Click); this.OK.Click += new System.EventHandler(this.Ok_Click);
// //
// FunctionView // FunctionView
// //
@ -70,7 +70,6 @@
this.FunctionView.UseCompatibleStateImageBehavior = false; this.FunctionView.UseCompatibleStateImageBehavior = false;
this.FunctionView.View = System.Windows.Forms.View.Details; this.FunctionView.View = System.Windows.Forms.View.Details;
this.FunctionView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.FunctionView_ColumnClick); this.FunctionView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.FunctionView_ColumnClick);
this.FunctionView.SelectedIndexChanged += new System.EventHandler(this.FunctionView_SelectedIndexChanged);
this.FunctionView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FunctionView_KeyDown); this.FunctionView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FunctionView_KeyDown);
// //
// LibraryReturn // LibraryReturn

View File

@ -1,9 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Windows.Forms;
using System.Text; using System.Text;
using System.Windows.Forms;
using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
@ -24,13 +22,13 @@ namespace BizHawk.Client.EmuHawk
private void PopulateListView() private void PopulateListView()
{ {
FunctionView.Items.Clear(); FunctionView.Items.Clear();
foreach (var l in GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList) foreach (var libraryFunction in GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList)
{ {
ListViewItem item = new ListViewItem {Text = l.ReturnType}; var item = new ListViewItem { Text = libraryFunction.ReturnType };
item.SubItems.Add(l.Library + "."); item.SubItems.Add(libraryFunction.Library + ".");
item.SubItems.Add(l.Name); item.SubItems.Add(libraryFunction.Name);
item.SubItems.Add(l.ParameterList); item.SubItems.Add(libraryFunction.ParameterList);
item.SubItems.Add(l.Description); item.SubItems.Add(libraryFunction.Description);
FunctionView.Items.Add(item); FunctionView.Items.Add(item);
} }
} }
@ -42,42 +40,49 @@ namespace BizHawk.Client.EmuHawk
{ {
switch (column) switch (column)
{ {
case 0: //Return case 0: // Return
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.ReturnType).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.ReturnType).ToList();
break; break;
case 1: //Library case 1: // Library
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.Library).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.Library).ToList();
break; break;
case 2: //Name case 2: // Name
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.Name).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.Name).ToList();
break; break;
case 3: //Parameters case 3: // Parameters
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.ParameterList).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.ParameterList).ToList();
break; break;
case 4: // Description
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderByDescending(x => x.Description).ToList();
break;
} }
} }
else else
{ {
switch (column) switch (column)
{ {
case 0: //Return case 0: // Return
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.ReturnType).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.ReturnType).ToList();
break; break;
case 1: //Library case 1: // Library
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.Library).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.Library).ToList();
break; break;
case 2: //Name case 2: // Name
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.Name).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.Name).ToList();
break; break;
case 3: //Parameters case 3: // Parameters
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.ParameterList).ToList(); GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.ParameterList).ToList();
break; break;
case 4: // Description
GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList.OrderBy(x => x.Description).ToList();
break;
} }
} }
PopulateListView(); PopulateListView();
} }
private void OK_Click(object sender, EventArgs e) private void Ok_Click(object sender, EventArgs e)
{ {
Close(); Close();
} }
@ -94,13 +99,18 @@ namespace BizHawk.Client.EmuHawk
public int Column public int Column
{ {
get { return _column; } get
{
return _column;
}
set set
{ {
if (_column == value) if (_column == value)
{ {
_desc ^= true; _desc ^= true;
} }
_column = value; _column = value;
} }
} }
@ -111,30 +121,25 @@ namespace BizHawk.Client.EmuHawk
} }
} }
private void FunctionView_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void FunctionView_KeyDown(object sender, KeyEventArgs e) private void FunctionView_KeyDown(object sender, KeyEventArgs e)
{ {
if (e.KeyCode == Keys.C && e.Control && !e.Alt && !e.Shift) //Copy if (e.KeyCode == Keys.C && e.Control && !e.Alt && !e.Shift) // Copy
{ {
ListView.SelectedIndexCollection indexes = FunctionView.SelectedIndices; var indexes = FunctionView.SelectedIndices;
if (indexes.Count > 0) if (indexes.Count > 0)
{ {
StringBuilder sb = new StringBuilder(); var sb = new StringBuilder();
foreach (int index in indexes) foreach (int index in indexes)
{ {
var library_function = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList[index]; var libraryFunction = GlobalWin.Tools.LuaConsole.LuaImp.Docs.FunctionList[index];
sb.Append(library_function.Library).Append('.').Append(library_function.Name).Append("()\n"); sb.Append(libraryFunction.Library).Append('.').Append(libraryFunction.Name).Append("()\n");
} }
if (sb.Length > 0) if (sb.Length > 0)
{ {
Clipboard.SetDataObject((sb.ToString())); Clipboard.SetDataObject(sb.ToString());
} }
} }
} }

View File

@ -729,7 +729,7 @@ namespace BizHawk.Client.EmuHawk
string currentword = CurrentWord(); string currentword = CurrentWord();
if (IsLibraryWord(currentword)) if (IsLibraryWord(currentword))
{ {
List<string> libfunctions = GlobalWin.Tools.LuaConsole.LuaImp.Docs.GetFunctionsByLibrary(currentword); List<string> libfunctions = GlobalWin.Tools.LuaConsole.LuaImp.Docs.GetFunctionsByLibrary(currentword).ToList();
// Position autocomplete box near the cursor's current position // Position autocomplete box near the cursor's current position
int x = LuaText.GetPositionFromCharIndex(LuaText.SelectionStart).X + LuaText.Location.X + 5; int x = LuaText.GetPositionFromCharIndex(LuaText.SelectionStart).X + LuaText.Location.X + 5;
@ -845,7 +845,7 @@ namespace BizHawk.Client.EmuHawk
String fileName = words[0]; String fileName = words[0];
if (IsLibraryWord(fileName)) if (IsLibraryWord(fileName))
{ {
List<string> libfunctions = GlobalWin.Tools.LuaConsole.LuaImp.Docs.GetFunctionsByLibrary(fileName); List<string> libfunctions = GlobalWin.Tools.LuaConsole.LuaImp.Docs.GetFunctionsByLibrary(fileName).ToList();
foreach (String libfunction in libfunctions) foreach (String libfunction in libfunctions)
{ {
if (libfunction.StartsWith(words[1])) if (libfunction.StartsWith(words[1]))