2015-06-02 22:52:35 +03:00
|
|
|
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
|
|
|
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
2015-05-14 22:35:07 +03:00
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
namespace VisualPascalABC
|
|
|
|
|
{
|
|
|
|
|
public class CodeCompletionImagesProvider
|
|
|
|
|
{
|
|
|
|
|
ImageList images = new ImageList();
|
|
|
|
|
public int IconNumberMethod = -1;
|
|
|
|
|
public int IconNumberField = -1;
|
|
|
|
|
public int IconNumberProperty = -1;
|
|
|
|
|
public int IconNumberEvent = -1;
|
|
|
|
|
public int IconNumberClass = -1;
|
|
|
|
|
public int IconNumberNamespace = -1;
|
|
|
|
|
public int IconNumberInterface = -1;
|
|
|
|
|
public int IconNumberStruct = -1;
|
|
|
|
|
public int IconNumberDelegate = -1;
|
|
|
|
|
public int IconNumberEnum = -1;
|
|
|
|
|
public int IconNumberLocal = -1;
|
|
|
|
|
public int IconNumberConstant = -1;
|
|
|
|
|
public int IconNumberPrivateField = -1;
|
|
|
|
|
public int IconNumberPrivateMethod = -1;
|
|
|
|
|
public int IconNumberPrivateProperty = -1;
|
|
|
|
|
public int IconNumberProtectedField = -1;
|
|
|
|
|
public int IconNumberProtectedMethod = -1;
|
|
|
|
|
public int IconNumberProtectedProperty = -1;
|
|
|
|
|
public int IconNumberPrivateEvent = -1;
|
|
|
|
|
public int IconNumberProtectedEvent = -1;
|
|
|
|
|
public int IconNumberPrivateDelegate = -1;
|
|
|
|
|
public int IconNumberProtectedDelegate = -1;
|
|
|
|
|
public int IconNumberUnitNamespace = -1;
|
|
|
|
|
public int IconNumberInternalField = -1;
|
|
|
|
|
public int IconNumberInternalMethod = -1;
|
|
|
|
|
public int IconNumberInternalProperty = -1;
|
|
|
|
|
public int IconNumberInternalEvent = -1;
|
|
|
|
|
public int IconNumberInternalDelegate = -1;
|
|
|
|
|
public int IconNumberGotoText = -1;
|
|
|
|
|
public int IconNumberPrivateConstant = -1;
|
|
|
|
|
public int IconNumberProtectedConstant = -1;
|
|
|
|
|
public int IconNumberInternalConstant = -1;
|
|
|
|
|
public int IconNumberKeyword = -1;
|
|
|
|
|
public int IconNumberEvalError = -1;
|
|
|
|
|
public int IconNumberExtensionMethod = -1;
|
|
|
|
|
|
|
|
|
|
int AddImageFromManifestResource(string ResName)
|
|
|
|
|
{
|
|
|
|
|
images.Images.Add(new System.Drawing.Bitmap(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("VisualPascalABC.Resources." + ResName)));
|
|
|
|
|
return images.Images.Count - 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ImageList ImageList
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return images;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public CodeCompletionImagesProvider()
|
|
|
|
|
{
|
|
|
|
|
images.ColorDepth = ColorDepth.Depth32Bit;
|
|
|
|
|
IconNumberMethod = AddImageFromManifestResource("Icons.16x16.Method.png");
|
|
|
|
|
IconNumberField = AddImageFromManifestResource("Icons.16x16.Field.png");
|
|
|
|
|
IconNumberProperty = AddImageFromManifestResource("Icons.16x16.Property.png");
|
|
|
|
|
IconNumberEvent = AddImageFromManifestResource("Icons.16x16.Event.png");
|
|
|
|
|
IconNumberClass = AddImageFromManifestResource("Icons.16x16.Class.png");
|
|
|
|
|
IconNumberNamespace = AddImageFromManifestResource("Icons.16x16.NameSpace.png");
|
|
|
|
|
IconNumberInterface = AddImageFromManifestResource("Icons.16x16.Interface.png");
|
|
|
|
|
IconNumberStruct = AddImageFromManifestResource("Icons.16x16.Struct.png");
|
|
|
|
|
IconNumberDelegate = AddImageFromManifestResource("Icons.16x16.Delegate.png");
|
|
|
|
|
IconNumberEnum = AddImageFromManifestResource("Icons.16x16.Enum.png");
|
|
|
|
|
IconNumberLocal = AddImageFromManifestResource("Icons.16x16.Local.png");
|
|
|
|
|
IconNumberConstant = AddImageFromManifestResource("Icons.16x16.Literal.png");
|
|
|
|
|
IconNumberPrivateField = AddImageFromManifestResource("Icons.16x16.PrivateField.png");
|
|
|
|
|
IconNumberPrivateMethod = AddImageFromManifestResource("Icons.16x16.PrivateMethod.png");
|
|
|
|
|
IconNumberPrivateProperty = AddImageFromManifestResource("Icons.16x16.PrivateProperty.png");
|
|
|
|
|
IconNumberProtectedField = AddImageFromManifestResource("Icons.16x16.ProtectedField.png");
|
|
|
|
|
IconNumberProtectedMethod = AddImageFromManifestResource("Icons.16x16.ProtectedMethod.png");
|
|
|
|
|
IconNumberProtectedProperty = AddImageFromManifestResource("Icons.16x16.ProtectedProperty.png");
|
|
|
|
|
IconNumberPrivateEvent = AddImageFromManifestResource("Icons.16x16.PrivateEvent.png");
|
|
|
|
|
IconNumberProtectedEvent = AddImageFromManifestResource("Icons.16x16.ProtectedEvent.png");
|
|
|
|
|
IconNumberPrivateDelegate = AddImageFromManifestResource("Icons.16x16.PrivateDelegate.png");
|
|
|
|
|
IconNumberProtectedDelegate = AddImageFromManifestResource("Icons.16x16.ProtectedDelegate.png");
|
|
|
|
|
IconNumberUnitNamespace = AddImageFromManifestResource("Icons.16x16.UnitNamespace.png");
|
|
|
|
|
IconNumberInternalField = AddImageFromManifestResource("Icons.16x16.InternalField.png");
|
|
|
|
|
IconNumberInternalMethod = AddImageFromManifestResource("Icons.16x16.InternalMethod.png");
|
|
|
|
|
IconNumberInternalProperty = AddImageFromManifestResource("Icons.16x16.InternalProperty.png");
|
|
|
|
|
IconNumberInternalEvent = AddImageFromManifestResource("Icons.16x16.InternalEvent.png");
|
|
|
|
|
IconNumberInternalDelegate = AddImageFromManifestResource("Icons.16x16.InternalDelegate.png");
|
|
|
|
|
IconNumberGotoText = AddImageFromManifestResource("Icons.16x16.GotoText.png");
|
|
|
|
|
IconNumberInternalConstant = AddImageFromManifestResource("Icons.16x16.InternalConstant.png");
|
|
|
|
|
IconNumberPrivateConstant = AddImageFromManifestResource("Icons.16x16.PrivateConstant.png");
|
|
|
|
|
IconNumberProtectedConstant = AddImageFromManifestResource("Icons.16x16.ProtectedConstant.png");
|
|
|
|
|
IconNumberKeyword = AddImageFromManifestResource("Icons.16x16.Keyword.png");
|
|
|
|
|
IconNumberEvalError = AddImageFromManifestResource("Icons.16x16.ErrorInWatch.png");
|
|
|
|
|
IconNumberExtensionMethod = AddImageFromManifestResource("Icons.16x16.ExtensionMethod.png");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int GetPictureNum(PascalABCCompiler.Parsers.SymInfo si)
|
|
|
|
|
{
|
|
|
|
|
switch (si.kind)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Field:
|
|
|
|
|
switch (si.acc_mod)
|
|
|
|
|
{
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.private_modifer:
|
|
|
|
|
return IconNumberPrivateField;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.protected_modifer:
|
|
|
|
|
return IconNumberProtectedField;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.internal_modifer:
|
|
|
|
|
return IconNumberInternalField;
|
|
|
|
|
default:
|
|
|
|
|
return IconNumberField;
|
|
|
|
|
}
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Method:
|
|
|
|
|
switch (si.acc_mod)
|
|
|
|
|
{
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.private_modifer:
|
|
|
|
|
return IconNumberPrivateMethod;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.protected_modifer:
|
|
|
|
|
return IconNumberProtectedMethod;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.internal_modifer:
|
|
|
|
|
return IconNumberInternalMethod;
|
|
|
|
|
default:
|
|
|
|
|
if (si.describe != null && si.describe.Contains("(" + PascalABCCompiler.StringResources.Get("CODE_COMPLETION_EXTENSION") + ")"))
|
|
|
|
|
return IconNumberExtensionMethod;
|
|
|
|
|
return IconNumberMethod;
|
|
|
|
|
}
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Property:
|
|
|
|
|
switch (si.acc_mod)
|
|
|
|
|
{
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.private_modifer:
|
|
|
|
|
return IconNumberPrivateProperty;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.protected_modifer:
|
|
|
|
|
return IconNumberProtectedProperty;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.internal_modifer:
|
|
|
|
|
return IconNumberInternalProperty;
|
|
|
|
|
default:
|
|
|
|
|
return IconNumberProperty;
|
|
|
|
|
}
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Event:
|
|
|
|
|
switch (si.acc_mod)
|
|
|
|
|
{
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.private_modifer:
|
|
|
|
|
return IconNumberPrivateEvent;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.protected_modifer:
|
|
|
|
|
return IconNumberProtectedEvent;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.internal_modifer:
|
|
|
|
|
return IconNumberInternalEvent;
|
|
|
|
|
default:
|
|
|
|
|
return IconNumberEvent;
|
|
|
|
|
}
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Delegate:
|
|
|
|
|
switch (si.acc_mod)
|
|
|
|
|
{
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.private_modifer:
|
|
|
|
|
return IconNumberPrivateDelegate;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.protected_modifer:
|
|
|
|
|
return IconNumberProtectedDelegate;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.internal_modifer:
|
|
|
|
|
return IconNumberInternalDelegate;
|
|
|
|
|
default:
|
|
|
|
|
return IconNumberDelegate;
|
|
|
|
|
}
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Variable:
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Parameter:
|
|
|
|
|
return IconNumberLocal;
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Type:
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Class:
|
|
|
|
|
return IconNumberClass;
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Namespace:
|
|
|
|
|
if (si.IsUnitNamespace)
|
|
|
|
|
return IconNumberUnitNamespace;
|
|
|
|
|
else
|
|
|
|
|
return IconNumberNamespace;
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Interface:
|
|
|
|
|
return IconNumberInterface;
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Struct:
|
|
|
|
|
return IconNumberStruct;
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Enum:
|
|
|
|
|
return IconNumberEnum;
|
|
|
|
|
case PascalABCCompiler.Parsers.SymbolKind.Constant:
|
|
|
|
|
switch (si.acc_mod)
|
|
|
|
|
{
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.private_modifer:
|
|
|
|
|
return IconNumberPrivateConstant;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.protected_modifer:
|
|
|
|
|
return IconNumberProtectedConstant;
|
|
|
|
|
case PascalABCCompiler.SyntaxTree.access_modifer.internal_modifer:
|
|
|
|
|
return IconNumberInternalConstant;
|
|
|
|
|
default:
|
|
|
|
|
return IconNumberConstant;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return IconNumberMethod;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|