Author: mkrueger
Date: 2008-02-07 12:34:55 -0500 (Thu, 07 Feb 2008)
New Revision: 95163
Added:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
Log:
* MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs,
MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs,
MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs,
MonoDevelop.AssemblyBrowser.mdp,
MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs,
MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs,
MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs,
MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs: Worked
on assembly browser.
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
2008-02-07 17:33:53 UTC (rev 95162)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
2008-02-07 17:34:55 UTC (rev 95163)
@@ -1,5 +1,24 @@
2008-02-07 Mike Krüger <[EMAIL PROTECTED]>
+ * MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs,
+ MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs,
+ MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs,
+ MonoDevelop.AssemblyBrowser.mdp,
+ MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs,
+ MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs,
+ MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs,
+ MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs: Worked on
+ assembly browser.
+
+2008-02-07 Mike Krüger <[EMAIL PROTECTED]>
+
* MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs: Changed pane
positioning.
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -52,13 +52,13 @@
treeView = new MonoDevelopTreeView (new NodeBuilder[] {
new ErrorNodeBuilder (),
new AssemblyNodeBuilder (),
+ new ModuleReferenceNodeBuilder (),
new ModuleDefinitionNodeBuilder (),
new ReferenceFolderNodeBuilder (this),
- new ModuleReferenceNodeBuilder (),
new ResourceFolderNodeBuilder (),
new ResourceNodeBuilder (),
new NamespaceBuilder (),
- new DomTypeNodeBuilder (),
+ new DomTypeNodeBuilder (this),
new DomMethodNodeBuilder (),
new DomFieldNodeBuilder (),
new DomEventNodeBuilder (),
@@ -69,23 +69,24 @@
scrolledwindow2.Add (treeView);
scrolledwindow2.ShowAll ();
- disassemblerTextview.ModifyFont
(Pango.FontDescription.FromString ("Monospace 10"));
- disassemblerTextview.ModifyBase (Gtk.StateType.Normal, new
Gdk.Color (255, 255, 220));
+ this.descriptionLabel.ModifyFont
(Pango.FontDescription.FromString ("Sans 9"));
+ this.disassemblerLabel.ModifyFont
(Pango.FontDescription.FromString ("Monospace 10"));
+ this.disassemblerLabel.ModifyBg (Gtk.StateType.Normal, new
Gdk.Color (255, 255, 220));
this.vpaned1.ExposeEvent += VPaneExpose;
this.hpaned1.ExposeEvent += HPaneExpose;
treeView.Tree.CursorChanged += delegate {
ITreeNavigator nav = treeView.GetSelectedNode
();
+
if (nav != null) {
-
System.Console.WriteLine(nav.TypeNodeBuilder);
IAssemblyBrowserNodeBuilder builder =
nav.TypeNodeBuilder as IAssemblyBrowserNodeBuilder;
-
+ System.Console.WriteLine("builder:" +
nav.TypeNodeBuilder);
if (builder != null) {
- this.label2.Markup
= builder.GetDescription (nav.DataItem);
-
this.disassemblerTextview.Buffer.Text = builder.GetDisassembly (nav.DataItem);
+ this.descriptionLabel.Markup
= builder.GetDescription (nav);
+ this.disassemblerLabel.Markup =
builder.GetDisassembly (nav);
} else {
- this.label2.Markup =
this.disassemblerTextview.Buffer.Text = "";
+ this.descriptionLabel.Markup =
this.disassemblerLabel.Markup = "";
}
}
};
@@ -93,7 +94,7 @@
int oldSize = -1;
void VPaneExpose (object sender, Gtk.ExposeEventArgs args)
{
- int size = this.vpaned1.Allocation.Height - 80;
+ int size = this.vpaned1.Allocation.Height - 96;
if (size == oldSize)
return;
this.vpaned1.Position = oldSize = size;
@@ -105,7 +106,7 @@
if (size == oldSize2)
return;
oldSize2 = size;
- this.hpaned1.Position = this.hpaned1.Allocation.Width -
250;
+ this.hpaned1.Position = Math.Min (350,
this.Allocation.Width * 2 / 3);
}
public void AddReference (string fileName)
{
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,16 +27,19 @@
//
using System;
+using System.Text;
using Mono.Cecil;
+using MonoDevelop.Core;
using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Dom.Output;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.Gui.Pads;
namespace MonoDevelop.AssemblyBrowser
{
- public class AssemblyNodeBuilder : TypeNodeBuilder
+ public class AssemblyNodeBuilder : TypeNodeBuilder,
IAssemblyBrowserNodeBuilder
{
public override Type NodeDataType {
get { return typeof(AssemblyDefinition); }
@@ -70,5 +73,58 @@
return assemblyDefinition.Modules.Count > 0;
}
+ #region IAssemblyBrowserNodeBuilder
+ static void PrintAssemblyHeader (StringBuilder result,
AssemblyDefinition assemblyDefinition)
+ {
+ result.Append ("<span font_family=\"monospace\">");
+
+ result.Append
(AmbienceService.Default.SingleLineComment (
+ String.Format (GettextCatalog.GetString
("Assembly <b>{0}</b>, Version {1}"),
+
assemblyDefinition.Name.Name,
+
assemblyDefinition.Name.Version)));
+ result.Append ("</span>");
+ result.AppendLine ();
+ }
+
+ static string GetTypeString (AssemblyKind kind)
+ {
+ switch (kind) {
+ case AssemblyKind.Console:
+ return GettextCatalog.GetString ("Console
application");
+ case AssemblyKind.Dll:
+ return GettextCatalog.GetString ("Library");
+ case AssemblyKind.Windows:
+ return GettextCatalog.GetString ("Application");
+ }
+ return GettextCatalog.GetString ("Unknown");
+ }
+
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
+ {
+ AssemblyDefinition assemblyDefinition =
(AssemblyDefinition)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ PrintAssemblyHeader (result, assemblyDefinition);
+
+ result.Append (String.Format (GettextCatalog.GetString
("<b>Name:</b>\t{0}"),
+
assemblyDefinition.Name.FullName));
+ result.AppendLine ();
+ result.Append (String.Format (GettextCatalog.GetString
("<b>Type:</b>\t{0}"),
+ GetTypeString
(assemblyDefinition.Kind)));
+ result.AppendLine ();
+ return result.ToString ();
+ }
+
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
+ {
+ AssemblyDefinition assemblyDefinition =
(AssemblyDefinition)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ PrintAssemblyHeader (result, assemblyDefinition);
+ foreach (CustomAttribute attr in
assemblyDefinition.CustomAttributes) {
+ result.Append
(AmbienceService.Default.GetString (new DomCecilAttribute (attr),
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ }
+ return result.ToString ();
+ }
+ #endregion
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,6 +27,7 @@
//
using System;
+using System.Text;
using Mono.Cecil;
@@ -66,15 +67,28 @@
return 1;
}
- public string GetDescription (object dataObject)
+ #region IAssemblyBrowserNodeBuilder
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
{
- IEvent evt = (IEvent)dataObject;
- return AmbienceService.Default.GetString (evt,
OutputFlags.AssemblyBrowserDescription);
+ IEvent evt = (IEvent)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append ("<span font_family=\"monospace\">");
+ result.Append (AmbienceService.Default.GetString (evt,
OutputFlags.AssemblyBrowserDescription));
+ result.Append ("</span>");
+ result.AppendLine ();
+ DomMethodNodeBuilder.PrintDeclaringType (result,
navigator);
+ DomTypeNodeBuilder.PrintAssembly (result, navigator);
+ return result.ToString ();
}
- public string GetDisassembly (object dataObject)
+
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
{
- return "TODO";
+ IEvent evt = (IEvent)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append (AmbienceService.Default.GetString (evt,
OutputFlags.AssemblyBrowserDescription));
+ return result.ToString ();
}
+ #endregion
}
}
\ No newline at end of file
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,6 +27,7 @@
//
using System;
+using System.Text;
using Mono.Cecil;
@@ -72,15 +73,27 @@
return -1;
}
- public string GetDescription (object dataObject)
+ #region IAssemblyBrowserNodeBuilder
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
{
- IField field = (IField)dataObject;
- return AmbienceService.Default.GetString (field,
OutputFlags.AssemblyBrowserDescription);
+ IField field = (IField)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append ("<span font_family=\"monospace\">");
+ result.Append (AmbienceService.Default.GetString
(field, OutputFlags.AssemblyBrowserDescription));
+ result.Append ("</span>");
+ result.AppendLine ();
+ DomMethodNodeBuilder.PrintDeclaringType (result,
navigator);
+ DomTypeNodeBuilder.PrintAssembly (result, navigator);
+ return result.ToString ();
}
- public string GetDisassembly (object dataObject)
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
{
- return "TODO";
+ IField field = (IField)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append (AmbienceService.Default.GetString
(field, OutputFlags.AssemblyBrowserDescription));
+ return result.ToString ();
}
+ #endregion
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -32,6 +32,7 @@
using Mono.Cecil;
using Mono.Cecil.Cil;
+using MonoDevelop.Core;
using MonoDevelop.Core.Gui;
using MonoDevelop.Ide.Dom;
using MonoDevelop.Ide.Dom.Output;
@@ -72,33 +73,70 @@
return -1;
}
- public string GetDescription (object dataObject)
+ #region IAssemblyBrowserNodeBuilder
+ internal static void PrintDeclaringType (StringBuilder result,
ITreeNavigator navigator)
{
- IMethod method = (IMethod)dataObject;
- return AmbienceService.Default.GetString (method,
OutputFlags.AssemblyBrowserDescription);
+ IType type = (IType)navigator.GetParentDataItem (typeof
(IType), false);
+ if (type == null)
+ return;
+
+ result.Append (String.Format (GettextCatalog.GetString
("<b>Declaring Type:</b>\t{0}"), type.FullName));
+ result.AppendLine ();
}
- public string GetDisassembly (object dataObject)
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
{
- DomCecilMethod method = dataObject as DomCecilMethod;
+ IMethod method = (IMethod)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append ("<span font_family=\"monospace\">");
+ result.Append (AmbienceService.Default.GetString
(method, OutputFlags.AssemblyBrowserDescription));
+ result.Append ("</span>");
+ result.AppendLine ();
+ PrintDeclaringType (result, navigator);
+ DomTypeNodeBuilder.PrintAssembly (result, navigator);
+ return result.ToString ();
+ }
+
+ static string GetInstructionOffset (Instruction instruction)
+ {
+ return String.Format ("IL_{0:X4}", instruction.Offset);
+ }
+
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
+ {
+ DomCecilMethod method = navigator.DataItem as
DomCecilMethod;
if (method == null)
return "";
if (method.MethodDefinition.IsPInvokeImpl)
- return "Method is P/Invoke";
- if (method.MethodDefinition.Body == null)
- return "Interface method";
+ return GettextCatalog.GetString ("Method is
P/Invoke");
+ if (method.MethodDefinition.Body == null) {
+ IType type = (IType)navigator.GetParentDataItem
(typeof (IType), false);
+ return type == null || type.ClassType ==
ClassType.Interface ? GettextCatalog.GetString ("Interface method") :
GettextCatalog.GetString ("Abstract method");
+ }
+
StringBuilder result = new StringBuilder ();
foreach (Instruction instruction in
method.MethodDefinition.Body.Instructions ) {
- result.Append (String.Format ("IL_{0:X4} {1} ",
-
instruction.Offset,
-
instruction.OpCode));
- if (instruction.Operand != null)
- result.Append
(instruction.Operand.GetType() == typeof(string) ? String.Format( "\"{0}\"",
instruction.Operand ) :instruction.Operand.ToString());
+ result.Append (GetInstructionOffset
(instruction));
+ result.Append (' ');
+ result.Append (instruction.OpCode);
+ if (instruction.Operand != null) {
+ result.Append (' ');
+ if (instruction.Operand is string) {
+ result.Append ('"');
+ result.Append
(instruction.Operand);
+ result.Append ('"');
+ } else if (instruction.Operand is
Mono.Cecil.Cil.Instruction) {
+ result.Append
(GetInstructionOffset ((Mono.Cecil.Cil.Instruction)instruction.Operand));
+ } else {
+ result.Append
(instruction.Operand);
+ }
+ }
result.AppendLine ();
}
return result.ToString ();
}
+ #endregion
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,6 +27,7 @@
//
using System;
+using System.Text;
using Mono.Cecil;
@@ -69,15 +70,28 @@
return -1;
}
- public string GetDescription (object dataObject)
+ #region IAssemblyBrowserNodeBuilder
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
{
- IProperty property = (IProperty)dataObject;
- return AmbienceService.Default.GetString (property,
OutputFlags.AssemblyBrowserDescription);
+ IProperty property = (IProperty)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append ("<span font_family=\"monospace\">");
+ result.Append (AmbienceService.Default.GetString
(property, OutputFlags.AssemblyBrowserDescription));
+ result.Append ("</span>");
+ result.AppendLine ();
+ DomMethodNodeBuilder.PrintDeclaringType (result,
navigator);
+ DomTypeNodeBuilder.PrintAssembly (result, navigator);
+ return result.ToString ();
}
- public string GetDisassembly (object dataObject)
+
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
{
- return "TODO";
+ IProperty property = (IProperty)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append (AmbienceService.Default.GetString
(property, OutputFlags.AssemblyBrowserDescription));
+ return result.ToString ();
}
+ #endregion
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,14 +27,17 @@
//
using System;
+using System.Text;
using Mono.Cecil;
+using MonoDevelop.Core;
using MonoDevelop.Core.Gui;
using MonoDevelop.Ide.Dom;
using MonoDevelop.Ide.Dom.Output;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.AssemblyBrowser.Dom;
namespace MonoDevelop.AssemblyBrowser
{
@@ -44,6 +47,14 @@
get { return typeof(IType); }
}
+ AssemblyBrowserWidget widget;
+
+ public DomTypeNodeBuilder (AssemblyBrowserWidget widget)
+ {
+ this.widget = widget;
+ }
+
+
public override string GetNodeName (ITreeNavigator thisNode,
object dataObject)
{
IType type = (IType)dataObject;
@@ -96,15 +107,127 @@
return true;
}
- public string GetDescription (object dataObject)
+ #region IAssemblyBrowserNodeBuilder
+ internal static void PrintAssembly (StringBuilder result,
ITreeNavigator navigator)
{
- IType type = (IType)dataObject;
- return AmbienceService.Default.GetString (type,
OutputFlags.AssemblyBrowserDescription);
+ AssemblyDefinition assemblyDefinition =
(AssemblyDefinition)navigator.GetParentDataItem (typeof (AssemblyDefinition),
false);
+ if (assemblyDefinition == null)
+ return;
+
+ result.Append (String.Format (GettextCatalog.GetString
("<b>Assembly:</b>\t{0}, Version={1}"),
+
assemblyDefinition.Name.Name,
+
assemblyDefinition.Name.Version));
+ result.AppendLine ();
}
- public string GetDisassembly (object dataObject)
+
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
{
- return "TODO";
+ IType type = (IType)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append ("<span font_family=\"monospace\">");
+ result.Append (AmbienceService.Default.GetString (type,
OutputFlags.AssemblyBrowserDescription));
+ result.Append ("</span>");
+ result.AppendLine ();
+ result.Append (String.Format (GettextCatalog.GetString
("<b>Name:</b>\t{0}"),
+ type.FullName));
+ result.AppendLine ();
+ PrintAssembly (result, navigator);
+ return result.ToString ();
}
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
+ {
+ IType type = (IType)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ result.Append (AmbienceService.Default.GetString (type,
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ bool first = true;
+
+ if (type.ClassType == ClassType.Enum) {
+ int length = result.Length;
+ foreach (IField field in type.Fields) {
+ if ((field.Modifiers &
Modifiers.SpecialName) == Modifiers.SpecialName)
+ continue;
+ result.Append ("\t");
+ result.Append (field.Name);
+ length = result.Length;
+ result.Append (",");
+ result.AppendLine ();
+ }
+ result.Length = length;
+ return result.ToString ();
+ }
+
+// Style colorStyle =
TextEditorOptions.Options.GetColorStyle (widget);
+// ChunkStyle comments = colorStyle.GetChunkStyle
("comment");
+// string commentSpan = String.Format ("<span
foreground=\"#{0:X6}\">", comments.Color.Pixel);
+
+ string commentSpan = "<span foreground=\"#666666\">";
+ foreach (IField field in type.Fields) {
+ if ((field.Modifiers & Modifiers.SpecialName)
== Modifiers.SpecialName)
+ continue;
+ if (first) {
+ result.AppendLine ();
+ result.Append ("\t");
+ result.Append (commentSpan);
+ result.Append
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString
("Fields")));
+ result.Append ("</span>");
+ result.AppendLine ();
+ }
+ first = false;
+ result.Append ("\t");
+ result.Append
(AmbienceService.Default.GetString (field,
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ }
+ first = true;
+ foreach (IEvent evt in type.Events) {
+ if (first) {
+ result.Append ("\t");
+ result.Append (commentSpan);
+ result.Append
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString
("Events")));
+ result.Append ("</span>");
+ result.AppendLine ();
+ }
+ first = false;
+ result.Append ("\t");
+ result.Append
(AmbienceService.Default.GetString (evt,
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ }
+ first = true;
+ foreach (IMethod method in type.Methods) {
+ if ((method.Modifiers & Modifiers.SpecialName)
== Modifiers.SpecialName)
+ continue;
+ if (first) {
+ result.AppendLine ();
+ result.Append ("\t");
+ result.Append (commentSpan);
+ result.Append
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString
("Methods")));
+ result.Append ("</span>");
+ result.AppendLine ();
+ }
+ first = false;
+ result.Append ("\t");
+ result.Append
(AmbienceService.Default.GetString (method,
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ }
+ first = true;
+ foreach (IProperty property in type.Properties) {
+ if (first) {
+ result.AppendLine ();
+ result.Append ("\t");
+ result.Append (commentSpan);
+ result.Append
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString
("Properties")));
+ result.Append ("</span>");
+ result.AppendLine ();
+ }
+ first = false;
+ result.Append ("\t");
+ result.Append
(AmbienceService.Default.GetString (property,
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ }
+ return result.ToString ();
+ }
+ #endregion
+
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,12 +27,13 @@
//
using System;
+using MonoDevelop.Ide.Gui.Pads;
namespace MonoDevelop.AssemblyBrowser
{
public interface IAssemblyBrowserNodeBuilder
{
- string GetDescription (object dataObject);
- string GetDisassembly (object dataObject);
+ string GetDescription (ITreeNavigator navigator);
+ string GetDisassembly (ITreeNavigator navigator);
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,18 +27,21 @@
//
using System;
+using System.Text;
using System.Collections.Generic;
using Mono.Cecil;
+using MonoDevelop.Core;
using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Dom.Output;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.Gui.Pads;
using MonoDevelop.AssemblyBrowser.Dom;
namespace MonoDevelop.AssemblyBrowser
{
- public class ModuleDefinitionNodeBuilder : TypeNodeBuilder
+ public class ModuleDefinitionNodeBuilder : TypeNodeBuilder,
IAssemblyBrowserNodeBuilder
{
public override Type NodeDataType {
get { return typeof(ModuleDefinition); }
@@ -78,5 +81,37 @@
{
return true;
}
+
+ #region IAssemblyBrowserNodeBuilder
+ static void PrintModuleHeader (StringBuilder result,
ModuleDefinition moduleDefinition)
+ {
+ result.Append ("<span font_family=\"monospace\">");
+ result.Append
(AmbienceService.Default.SingleLineComment (
+ String.Format
(GettextCatalog.GetString ("Module <b>{0}</b>"),
+ moduleDefinition.Name)));
+ result.Append ("</span>");
+ result.AppendLine ();
+ }
+
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
+ {
+ ModuleDefinition moduleDefinition =
(ModuleDefinition)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ PrintModuleHeader (result, moduleDefinition);
+
+ result.Append (String.Format (GettextCatalog.GetString
("<b>Version:</b>\t{0}"),
+ moduleDefinition.Mvid));
+ result.AppendLine ();
+ return result.ToString ();
+ }
+
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
+ {
+ ModuleDefinition moduleDefinition =
(ModuleDefinition)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ PrintModuleHeader (result, moduleDefinition);
+ return result.ToString ();
+ }
+ #endregion
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -53,6 +53,8 @@
public override void BuildNode (ITreeBuilder treeBuilder,
object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf
closedIcon)
{
+ if (dataObject is ModuleDefinition)
+ return;
ModuleReference reference = (ModuleReference)dataObject;
label = reference.Name;
icon = Context.GetIcon (Stock.MiscFiles);
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -73,15 +73,38 @@
return true;
}
- public string GetDescription (object dataObject)
+ #region IAssemblyBrowserNodeBuilder
+ string IAssemblyBrowserNodeBuilder.GetDescription
(ITreeNavigator navigator)
{
- Namespace ns = (Namespace)dataObject;
- return AmbienceService.Default.GetString (ns.Name,
OutputFlags.AssemblyBrowserDescription);
+ Namespace ns = (Namespace)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ if (!String.IsNullOrEmpty (ns.Name)) {
+ result.Append ("<span
font_family=\"monospace\">");
+ result.Append
(AmbienceService.Default.GetString (ns.Name,
OutputFlags.AssemblyBrowserDescription));
+ result.Append ("</span>");
+ result.AppendLine ();
+ }
+ DomTypeNodeBuilder.PrintAssembly (result, navigator);
+ return result.ToString ();
}
- public string GetDisassembly (object dataObject)
+ string IAssemblyBrowserNodeBuilder.GetDisassembly
(ITreeNavigator navigator)
{
- return "TODO";
+ Namespace ns = (Namespace)navigator.DataItem;
+ StringBuilder result = new StringBuilder ();
+ if (!String.IsNullOrEmpty (ns.Name)) {
+ result.Append
(AmbienceService.Default.GetString (ns.Name,
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ }
+ foreach (IType type in ns.Types) {
+ if (!String.IsNullOrEmpty (ns.Name))
+ result.Append ("\t");
+ result.Append
(AmbienceService.Default.GetString (type,
OutputFlags.AssemblyBrowserDescription));
+ result.AppendLine ();
+ }
+ result.AppendLine ();
+ return result.ToString ();
}
+ #endregion
}
}
Added:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -0,0 +1,47 @@
+//
+// DomCecilAttribute.cs
+//
+// Author:
+// Mike Krüger <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// 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 Mono.Cecil;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+ public class DomCecilAttribute : MonoDevelop.Ide.Dom.DomAttribute
+ {
+ CustomAttribute customAttribute;
+
+ public DomCecilAttribute (CustomAttribute customAttribute)
+ {
+ this.customAttribute = customAttribute;
+ base.attributeType = new DomCecilReturnType
(customAttribute.Constructor);
+ foreach (object param in
customAttribute.ConstructorParameters)
+ base.positionalArguments.Add (param);
+// base.AttributeTarget =
customAttribute.ConstructorParameters
+ }
+ }
+}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -38,5 +38,10 @@
this.name = typeReference.Name;
this.nspace = typeReference.Namespace;
}
+ public DomCecilReturnType (MethodReference methodReference)
+ {
+ this.name = methodReference.DeclaringType.Name;
+ this.nspace = methodReference.DeclaringType.Namespace;
+ }
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
2008-02-07 17:34:55 UTC (rev 95163)
@@ -82,6 +82,12 @@
return members;
}
}
+
+ public TypeDefinition TypeDefinition {
+ get {
+ return typeDefinition;
+ }
+ }
public static MonoDevelop.Ide.Dom.Modifiers GetModifiers
(Mono.Cecil.TypeAttributes attr)
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
2008-02-07 17:33:53 UTC (rev 95162)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
2008-02-07 17:34:55 UTC (rev 95163)
@@ -54,6 +54,7 @@
<File name="MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs"
subtype="Code" buildaction="Compile" />
<File name="MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs"
subtype="Code" buildaction="Compile" />
<File name="MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs"
subtype="Code" buildaction="Compile" />
+ <File name="MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs"
subtype="Code" buildaction="Compile" />
</Contents>
<References>
<ProjectReference type="Project" localcopy="True" refto="MonoDevelop.Core"
/>
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches