Browse Source

Added gtk demo & fixed code completion bug.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
3b6fda215c
  1. 2
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 2
      ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs
  3. 52
      ICSharpCode.NRefactory.GtkDemo/AssemblyInfo.cs
  4. 23
      ICSharpCode.NRefactory.GtkDemo/CSharpDemo.cs
  5. 92
      ICSharpCode.NRefactory.GtkDemo/ICSharpCode.NRefactory.GtkDemo.csproj
  6. 41
      ICSharpCode.NRefactory.GtkDemo/Main.cs
  7. 262
      ICSharpCode.NRefactory.GtkDemo/MainWindow.cs
  8. 86
      ICSharpCode.NRefactory.GtkDemo/gtk-gui/ICSharpCode.NRefactory.GtkDemo.MainWindow.cs
  9. 29
      ICSharpCode.NRefactory.GtkDemo/gtk-gui/generated.cs
  10. 105
      ICSharpCode.NRefactory.GtkDemo/gtk-gui/gui.stetic
  11. BIN
      ICSharpCode.NRefactory.GtkDemo/pixbuf/comment.png
  12. BIN
      ICSharpCode.NRefactory.GtkDemo/pixbuf/element-class-16.png
  13. BIN
      ICSharpCode.NRefactory.GtkDemo/pixbuf/element-field-16.png
  14. BIN
      ICSharpCode.NRefactory.GtkDemo/pixbuf/element-literal-16.png
  15. BIN
      ICSharpCode.NRefactory.GtkDemo/pixbuf/element-method-16.png
  16. BIN
      ICSharpCode.NRefactory.GtkDemo/pixbuf/element-namespace-16.png
  17. 14
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionAccessibleTests.cs

2
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

@ -574,7 +574,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -574,7 +574,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
bool IsInLinqContext (int offset)
{
string token;
while (null != (token = GetPreviousToken (ref offset, true))) {
while (null != (token = GetPreviousToken (ref offset, true)) && !IsInsideComment (offset) && !IsInsideString (offset)) {
if (token == "from")
return true;
if (token == ";")

2
ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs

@ -245,7 +245,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver @@ -245,7 +245,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
Debug.Assert(resolverBeforeDict.ContainsKey(node));
// Don't store results twice.
Debug.Assert(!resolveResultCache.ContainsKey(node));
resolveResultCache.Add(node, result);
resolveResultCache[node] = result;
if (navigator != null)
navigator.Resolved(node, result);
}

52
ICSharpCode.NRefactory.GtkDemo/AssemblyInfo.cs

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
//
// AssemblyInfo.cs
//
// Author:
// Mike Krüger <mkrueger@xamarin.com>
//
// Copyright (c) 2011 Xamarin Inc. (http://xamarin.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.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle("ICSharpCode.NRefactory.GtkDemo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Xamarin")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("Xamarin Inc. (http://xamarin.com)")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]

23
ICSharpCode.NRefactory.GtkDemo/CSharpDemo.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
// CSharpDemo.cs
using System;
using System.Linq;
namespace Demo
{
#region Demo
public class CSharpDemo
{
static void TestMe (int i)
{
Console.WriteLine (i);
NotDefined ();
}
public static void Main (string[] args)
{
TestMe (args.Count ());
}
}
#endregion
}

92
ICSharpCode.NRefactory.GtkDemo/ICSharpCode.NRefactory.GtkDemo.csproj

@ -0,0 +1,92 @@ @@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.0</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{A7EEF7F8-238F-459D-95A9-96467539641D}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>ICSharpCode.NRefactory.GtkDemo</RootNamespace>
<AssemblyName>ICSharpCode.NRefactory.GtkDemo</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="Mono.Posix" />
<Reference Include="Mono.TextEditor">
<HintPath>..\..\StandAloneTextEditor\StandAloneTextEditor\bin\Debug\Mono.TextEditor.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="gtk-gui\gui.stetic">
<LogicalName>gui.stetic</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="pixbuf\comment.png">
<LogicalName>comment.png</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="pixbuf\element-class-16.png">
<LogicalName>class.png</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="pixbuf\element-field-16.png">
<LogicalName>expression.png</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="pixbuf\element-literal-16.png">
<LogicalName>token.png</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="pixbuf\element-method-16.png">
<LogicalName>statement.png</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="pixbuf\element-namespace-16.png">
<LogicalName>namespace.png</LogicalName>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Include="gtk-gui\generated.cs" />
<Compile Include="Main.cs" />
<Compile Include="AssemblyInfo.cs" />
<Compile Include="MainWindow.cs" />
<Compile Include="gtk-gui\ICSharpCode.NRefactory.GtkDemo.MainWindow.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<ProjectReference Include="..\ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj">
<Project>{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}</Project>
<Name>ICSharpCode.NRefactory</Name>
</ProjectReference>
<ProjectReference Include="..\ICSharpCode.NRefactory.CSharp\ICSharpCode.NRefactory.CSharp.csproj">
<Project>{53DCA265-3C3C-42F9-B647-F72BA678122B}</Project>
<Name>ICSharpCode.NRefactory.CSharp</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="CSharpDemo.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="pixbuf\" />
</ItemGroup>
</Project>

41
ICSharpCode.NRefactory.GtkDemo/Main.cs

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
//
// Main.cs
//
// Author:
// Mike Krüger <mkrueger@xamarin.com>
//
// Copyright (c) 2011 Xamarin Inc. (http://xamarin.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 Gtk;
namespace ICSharpCode.NRefactory.GtkDemo
{
class MainClass
{
public static void Main (string[] args)
{
Application.Init ();
MainWindow win = new MainWindow ();
win.Show ();
Application.Run ();
}
}
}

262
ICSharpCode.NRefactory.GtkDemo/MainWindow.cs

@ -0,0 +1,262 @@ @@ -0,0 +1,262 @@
//
// MainWindow.cs
//
// Author:
// Mike Krüger <mkrueger@xamarin.com>
//
// Copyright (c) 2011 Xamarin Inc. (http://xamarin.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 ICSharpCode.NRefactory.CSharp;
using Gtk;
using System.IO;
using System.Text;
using System.Reflection;
using Mono.TextEditor;
using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.Semantics;
using System.Collections.Generic;
using ICSharpCode.NRefactory.TypeSystem;
using System.Threading.Tasks;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using Gdk;
namespace ICSharpCode.NRefactory.GtkDemo
{
public partial class MainWindow : Gtk.Window
{
TreeStore store = new TreeStore (typeof (string), typeof (string), typeof (AstNode), typeof (Pixbuf));
Dictionary<AstNode, TreeIter> iterDict = new Dictionary<AstNode, TreeIter> ();
TextEditor editor = new TextEditor ();
CompilationUnit unit;
Pixbuf comment = new Pixbuf (typeof (MainWindow).Assembly, "comment.png");
Pixbuf classPixbuf = new Pixbuf (typeof (MainWindow).Assembly, "class.png");
Pixbuf tokenPixbuf = new Pixbuf (typeof (MainWindow).Assembly, "token.png");
Pixbuf statementPixbuf = new Pixbuf (typeof (MainWindow).Assembly, "statement.png");
Pixbuf expressionPixbuf = new Pixbuf (typeof (MainWindow).Assembly, "expression.png");
Pixbuf namespacePixbuf = new Pixbuf (typeof (MainWindow).Assembly, "namespace.png");
public MainWindow () :
base(Gtk.WindowType.Toplevel)
{
this.Build ();
this.BorderWidth = 12;
this.treeviewNodes.Model = store;
var col =new TreeViewColumn ();
col.Title ="Node";
var pb = new CellRendererPixbuf ();
col.PackStart (pb, false);
col.AddAttribute (pb, "pixbuf", 3);
var text = new CellRendererText ();
col.PackStart (text, true);
col.AddAttribute (text, "text", 0);
this.treeviewNodes.AppendColumn (col);
this.treeviewNodes.AppendColumn ("ResolveResult", new CellRendererText (), "text", 1);
this.treeviewNodes.Selection.Changed += SelectionChanged;
// this.treeviewNodes.HeadersVisible = false;
this.scrolledwindow1.Child = editor;
this.scrolledwindow1.Child.ShowAll ();
this.editor.Document.MimeType = "text/x-csharp";
this.editor.Options.FontName = "Mono 14";
this.editor.Caret.PositionChanged += HandlePositionChanged;
this.editor.Text = File.ReadAllText ("/Users/mike/work/NRefactory/ICSharpCode.NRefactory.GtkDemo/CSharpDemo.cs");
buttonParse.Clicked += HandleClicked;
buttonGenerate.Clicked += CSharpGenerateCodeButtonClick;
HandleClicked (this, EventArgs.Empty);
}
void HandlePositionChanged (object sender, DocumentLocationEventArgs e)
{
var node = unit.GetNodeAt (editor.Caret.Line, editor.Caret.Column);
if (node == null)
return;
TreeIter iter;
if (!iterDict.TryGetValue (node, out iter))
return;
this.treeviewNodes.Selection.Changed -= SelectionChanged;
treeviewNodes.Selection.SelectIter (iter);
treeviewNodes.ScrollToCell (store.GetPath (iter), null, true, 0, 0);
this.treeviewNodes.Selection.Changed += SelectionChanged;
}
void CSharpGenerateCodeButtonClick(object sender, EventArgs e)
{
var w = new StringWriter();
var output = new CSharpOutputVisitor (w, new CSharpFormattingOptions());
unit.AcceptVisitor (output, null);
editor.Text = w.ToString();
}
void SelectionChanged (object sender, EventArgs e)
{
TreeIter iter;
if (!this.treeviewNodes.Selection.GetSelected (out iter))
return;
var node = store.GetValue (iter, 2) as AstNode;
if (node == null)
return;
this.editor.Caret.PositionChanged -= HandlePositionChanged;
this.editor.SetCaretTo (node.StartLocation.Line, node.StartLocation.Column);
this.editor.SetSelection (node.StartLocation.Line, node.StartLocation.Column, node.EndLocation.Line, node.EndLocation.Column);
this.editor.Caret.PositionChanged += HandlePositionChanged;
}
public void ShowUnit (CompilationUnit unit, ResolveVisitor visitor)
{
this.unit = unit;
store.Clear ();
iterDict.Clear ();
if (unit == null)
return;
var iter = store.AppendValues (GetNodeTitle (unit), "", unit, GetIcon (unit));
AddChildren (unit, visitor, iter);
treeviewNodes.ExpandAll ();
}
public Pixbuf GetIcon (AstNode child)
{
if (child is Comment)
return comment;
if (child is PreProcessorDirective)
return comment;
if (child is AttributedNode)
return classPixbuf;
if (child is CSharpTokenNode)
return tokenPixbuf;
if (child is Identifier)
return tokenPixbuf;
if (child is Statement)
return statementPixbuf;
if (child is Expression)
return expressionPixbuf;
if (child is UsingDeclaration)
return namespacePixbuf;
if (child is NamespaceDeclaration)
return namespacePixbuf;
return null;
}
public void AddChildren (AstNode node, ResolveVisitor visitor, TreeIter iter)
{
if (node == null)
return;
iterDict [node] = iter;
foreach (var child in node.Children) {
ResolveResult result = null;
try {
if (child is Expression)
result = visitor.GetResolveResult (child);
} catch (Exception){
result = null;
}
var childIter = store.AppendValues (iter, GetNodeTitle (child), result != null ? result.ToString () : "", child, GetIcon (child));
AddChildren (child, visitor, childIter);
}
}
string GetNodeTitle(AstNode node)
{
var b = new StringBuilder();
b.Append(node.Role.ToString());
b.Append(": ");
b.Append(node.GetType().Name);
bool hasProperties = false;
foreach (PropertyInfo p in node.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)) {
if (p.Name == "NodeType" || p.Name == "IsNull")
continue;
if (p.PropertyType == typeof(string) || p.PropertyType.IsEnum || p.PropertyType == typeof(bool)) {
if (!hasProperties) {
hasProperties = true;
b.Append(" (");
} else {
b.Append(", ");
}
b.Append(p.Name);
b.Append(" = ");
try {
object val = p.GetValue(node, null);
b.Append(val != null ? val.ToString() : "**null**");
} catch (TargetInvocationException ex) {
b.Append("**" + ex.InnerException.GetType().Name + "**");
}
}
}
if (hasProperties)
b.Append(")");
// b.Append(" Start " + node.StartLocation);
// b.Append(" End " + node.EndLocation);
return b.ToString();
}
void HandleClicked (object sender, EventArgs e)
{
var parser = new CSharpParser ();
var unit = parser.Parse (editor.Text);
var project = new SimpleProjectContent();
var parsedFile = new TypeSystemConvertVisitor(project, "dummy.cs").Convert (unit);
project.UpdateProjectContent(null, parsedFile);
var projects = new List<ITypeResolveContext>();
projects.Add(project);
projects.AddRange(builtInLibs.Value);
using (var context = new CompositeTypeResolveContext(projects).Synchronize()) {
var resolver = new CSharpResolver(context);
IResolveVisitorNavigator navigator = null;
// if (csharpTreeView.SelectedNode != null) {
// navigator = new NodeListResolveVisitorNavigator(new[] { (AstNode)csharpTreeView.SelectedNode.Tag });
// }
var visitor = new ResolveVisitor (resolver, parsedFile, navigator);
visitor.Scan(unit);
ShowUnit (unit, visitor);
}
}
Lazy<IList<IProjectContent>> builtInLibs = new Lazy<IList<IProjectContent>>(
delegate {
Assembly[] assemblies = new Assembly[] { // Compiler error ?
typeof(object).Assembly, // mscorlib
typeof(Uri).Assembly, // System.dll
typeof(System.Linq.Enumerable).Assembly,
typeof(ICSharpCode.NRefactory.TypeSystem.IProjectContent).Assembly
};
IProjectContent[] projectContents = new IProjectContent[assemblies.Length];
Parallel.For(
0, assemblies.Length,
delegate (int i) {
CecilLoader loader = new CecilLoader();
projectContents[i] = loader.LoadAssemblyFile(assemblies[i].Location);
});
return projectContents;
});
}
}

86
ICSharpCode.NRefactory.GtkDemo/gtk-gui/ICSharpCode.NRefactory.GtkDemo.MainWindow.cs

@ -0,0 +1,86 @@ @@ -0,0 +1,86 @@
// This file has been generated by the GUI designer. Do not modify.
namespace ICSharpCode.NRefactory.GtkDemo
{
public partial class MainWindow
{
private global::Gtk.VBox vbox1;
private global::Gtk.ScrolledWindow scrolledwindow1;
private global::Gtk.HBox hbox1;
private global::Gtk.Button buttonParse;
private global::Gtk.Button buttonGenerate;
private global::Gtk.ScrolledWindow GtkScrolledWindow1;
private global::Gtk.TreeView treeviewNodes;
protected virtual void Build ()
{
global::Stetic.Gui.Initialize (this);
// Widget ICSharpCode.NRefactory.GtkDemo.MainWindow
this.Name = "ICSharpCode.NRefactory.GtkDemo.MainWindow";
this.Title = global::Mono.Unix.Catalog.GetString ("MainWindow");
this.WindowPosition = ((global::Gtk.WindowPosition)(4));
// Container child ICSharpCode.NRefactory.GtkDemo.MainWindow.Gtk.Container+ContainerChild
this.vbox1 = new global::Gtk.VBox ();
this.vbox1.Name = "vbox1";
this.vbox1.Spacing = 6;
// Container child vbox1.Gtk.Box+BoxChild
this.scrolledwindow1 = new global::Gtk.ScrolledWindow ();
this.scrolledwindow1.CanFocus = true;
this.scrolledwindow1.Name = "scrolledwindow1";
this.scrolledwindow1.ShadowType = ((global::Gtk.ShadowType)(1));
this.vbox1.Add (this.scrolledwindow1);
global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.scrolledwindow1]));
w1.Position = 0;
// Container child vbox1.Gtk.Box+BoxChild
this.hbox1 = new global::Gtk.HBox ();
this.hbox1.Name = "hbox1";
this.hbox1.Spacing = 6;
// Container child hbox1.Gtk.Box+BoxChild
this.buttonParse = new global::Gtk.Button ();
this.buttonParse.CanFocus = true;
this.buttonParse.Name = "buttonParse";
this.buttonParse.UseUnderline = true;
this.buttonParse.Label = global::Mono.Unix.Catalog.GetString ("Parse");
this.hbox1.Add (this.buttonParse);
global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.buttonParse]));
w2.Position = 0;
w2.Expand = false;
w2.Fill = false;
// Container child hbox1.Gtk.Box+BoxChild
this.buttonGenerate = new global::Gtk.Button ();
this.buttonGenerate.CanFocus = true;
this.buttonGenerate.Name = "buttonGenerate";
this.buttonGenerate.UseUnderline = true;
this.buttonGenerate.Label = global::Mono.Unix.Catalog.GetString ("Generate");
this.hbox1.Add (this.buttonGenerate);
global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.buttonGenerate]));
w3.Position = 1;
w3.Expand = false;
w3.Fill = false;
this.vbox1.Add (this.hbox1);
global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hbox1]));
w4.Position = 1;
w4.Expand = false;
w4.Fill = false;
// Container child vbox1.Gtk.Box+BoxChild
this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow ();
this.GtkScrolledWindow1.Name = "GtkScrolledWindow1";
this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1));
// Container child GtkScrolledWindow1.Gtk.Container+ContainerChild
this.treeviewNodes = new global::Gtk.TreeView ();
this.treeviewNodes.CanFocus = true;
this.treeviewNodes.Name = "treeviewNodes";
this.GtkScrolledWindow1.Add (this.treeviewNodes);
this.vbox1.Add (this.GtkScrolledWindow1);
global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.GtkScrolledWindow1]));
w6.Position = 2;
this.Add (this.vbox1);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
this.DefaultWidth = 400;
this.DefaultHeight = 300;
this.Show ();
}
}
}

29
ICSharpCode.NRefactory.GtkDemo/gtk-gui/generated.cs

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
// This file has been generated by the GUI designer. Do not modify.
namespace Stetic
{
internal class Gui
{
private static bool initialized;
internal static void Initialize (Gtk.Widget iconRenderer)
{
if ((Stetic.Gui.initialized == false)) {
Stetic.Gui.initialized = true;
}
}
}
internal class ActionGroups
{
public static Gtk.ActionGroup GetActionGroup (System.Type type)
{
return Stetic.ActionGroups.GetActionGroup (type.FullName);
}
public static Gtk.ActionGroup GetActionGroup (string name)
{
return null;
}
}
}

105
ICSharpCode.NRefactory.GtkDemo/gtk-gui/gui.stetic

@ -0,0 +1,105 @@ @@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<stetic-interface>
<configuration>
<images-root-path>../../ICSharpCode.NRefactory.GtkDemo</images-root-path>
<target-gtk-version>2.12</target-gtk-version>
</configuration>
<import>
<widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<widget-library name="../../../StandAloneTextEditor/StandAloneTextEditor/bin/Debug/Mono.TextEditor.dll" />
<widget-library name="../bin/Debug/ICSharpCode.NRefactory.GtkDemo.exe" internal="true" />
</import>
<widget class="Gtk.Window" id="ICSharpCode.NRefactory.GtkDemo.MainWindow" design-size="400 300">
<property name="MemberName" />
<property name="Title" translatable="yes">MainWindow</property>
<property name="WindowPosition">CenterOnParent</property>
<child>
<widget class="Gtk.VBox" id="vbox1">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.ScrolledWindow" id="scrolledwindow1">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="ShadowType">In</property>
<child>
<widget class="Gtk.Viewport" id="GtkViewport">
<property name="MemberName" />
<property name="ShadowType">None</property>
<child>
<placeholder />
</child>
</widget>
</child>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
</packing>
</child>
<child>
<widget class="Gtk.HBox" id="hbox1">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.Button" id="buttonParse">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Type">TextOnly</property>
<property name="Label" translatable="yes">Parse</property>
<property name="UseUnderline">True</property>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Button" id="buttonGenerate">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Type">TextOnly</property>
<property name="Label" translatable="yes">Generate</property>
<property name="UseUnderline">True</property>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<placeholder />
</child>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow1">
<property name="MemberName" />
<property name="ShadowType">In</property>
<child>
<widget class="Gtk.TreeView" id="treeviewNodes">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="ShowScrollbars">True</property>
</widget>
</child>
</widget>
<packing>
<property name="Position">2</property>
<property name="AutoSize">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</stetic-interface>

BIN
ICSharpCode.NRefactory.GtkDemo/pixbuf/comment.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

BIN
ICSharpCode.NRefactory.GtkDemo/pixbuf/element-class-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

BIN
ICSharpCode.NRefactory.GtkDemo/pixbuf/element-field-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

BIN
ICSharpCode.NRefactory.GtkDemo/pixbuf/element-literal-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

BIN
ICSharpCode.NRefactory.GtkDemo/pixbuf/element-method-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

BIN
ICSharpCode.NRefactory.GtkDemo/pixbuf/element-namespace-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

14
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionAccessibleTests.cs

@ -1152,5 +1152,19 @@ $$ @@ -1152,5 +1152,19 @@ $$
Assert.IsNotNull (provider.Find ("ObsoleteAttribute"), "attribute 'ObsoleteAttribute' not found.");
}
// 'from' in comment activates linq context
[Test()]
public void TestBreakingComment ()
{
var provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (@"
using System;
// from
class Test {
$$
}");
Assert.IsNotNull (provider, "provider == null");
Assert.IsNotNull (provider.Find ("Test"), "class 'Test' not found.");
}
}
}
Loading…
Cancel
Save