Browse Source

Worked on code completion layer.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@42 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mike Krüger 21 years ago
parent
commit
70b2f42923
  1. 1
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/XmlDesignerLoader.cs
  2. 1
      src/AddIns/Misc/StartPage/Project/Src/StartPage.cs
  3. 3
      src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
  4. 3
      src/Main/Base/Project/Src/Dom/IClass.cs
  5. 8
      src/Main/Base/Project/Src/Dom/IDecoration.cs
  6. 86
      src/Main/Base/Project/Src/Dom/Implementations/AbstractClass.cs
  7. 50
      src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs
  8. 33
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  9. 1
      src/Main/Base/Project/Src/Project/MSBuildProject.cs
  10. 72
      src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs
  11. 6
      src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs
  12. 2
      src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs
  13. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs
  14. 1
      src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/Menu.cs
  15. 1
      src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs

1
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/XmlDesignerLoader.cs

@ -87,7 +87,6 @@ namespace ICSharpCode.FormDesigner @@ -87,7 +87,6 @@ namespace ICSharpCode.FormDesigner
}
}
}
Console.WriteLine(componentName);
object newObject = host.CreateComponent(host.GetType(name), componentName);
if (newObject is Control) {

1
src/AddIns/Misc/StartPage/Project/Src/StartPage.cs

@ -97,7 +97,6 @@ namespace ICSharpCode.StartPage @@ -97,7 +97,6 @@ namespace ICSharpCode.StartPage
e.Cancel = true;
// bug in webbrowser control?
string url = e.Url.Replace("about:blank", "");
Console.WriteLine("'" + url + "'");
if (url.StartsWith("project://")) {
try {
ICSharpCode.Core.RecentOpen recOpen = (ICSharpCode.Core.RecentOpen)FileService.RecentOpen;

3
src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs

@ -382,11 +382,8 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -382,11 +382,8 @@ namespace ICSharpCode.SharpDevelop.Commands
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
{
Console.WriteLine("Sub menu : " + Category);
Console.WriteLine(WorkbenchSingleton.Workbench.PadContentCollection.Count);
ArrayList items = new ArrayList();
foreach (PadDescriptor padContent in WorkbenchSingleton.Workbench.PadContentCollection) {
Console.WriteLine(padContent.Category);
if (padContent.Category == Category) {
items.Add(new MyMenuItem(padContent));
}

3
src/Main/Base/Project/Src/Dom/IClass.cs

@ -96,5 +96,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -96,5 +96,8 @@ namespace ICSharpCode.SharpDevelop.Dom
IClass GetInnermostClass(int caretLine, int caretColumn);
ArrayList GetAccessibleTypes(IClass callingClass);
ArrayList GetAccessibleMembers(IClass callingClass, bool showStatic);
}
}

8
src/Main/Base/Project/Src/Dom/IDecoration.cs

@ -40,6 +40,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -40,6 +40,10 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
bool IsConst {
get;
}
bool IsVirtual {
get;
}
@ -97,5 +101,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -97,5 +101,9 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
set;
}
bool IsAccessible(IClass callingClass, bool isClassInInheritanceTree);
bool MustBeShown(IClass callingClass, bool showStatic, bool isClassInInheritanceTree);
}
}

86
src/Main/Base/Project/Src/Dom/Implementations/AbstractClass.cs

@ -326,6 +326,92 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -326,6 +326,92 @@ namespace ICSharpCode.SharpDevelop.Dom
return this;
}
public ArrayList GetAccessibleTypes(IClass callingClass)
{
ArrayList types = new ArrayList();
bool isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(this);
foreach (IClass c in InnerClasses) {
if (((c.ClassType == ClassType.Class) || (c.ClassType == ClassType.Struct)) &&
c.IsAccessible(callingClass, isClassInInheritanceTree)) {
types.Add(c);
}
}
IClass baseClass = BaseClass;
if (baseClass != null) {
types.AddRange(baseClass.GetAccessibleTypes(callingClass).ToArray());
}
return types;
}
public ArrayList GetAccessibleMembers(IClass callingClass, bool showStatic)
{
ArrayList members = new ArrayList();
DateTime now = DateTime.Now;
// enums must be handled specially, because there are several things defined we don't want to show
// and enum members have neither the modifier nor the modifier public
if (ClassType == ClassType.Enum) {
foreach (IField f in Fields) {
if (f.IsLiteral) {
members.Add(f);
}
}
members.AddRange(ProjectContent.GetClass("System.Enum").GetAccessibleMembers(callingClass, showStatic).ToArray());
return members;
}
bool isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(this);
if (showStatic) {
foreach (IClass c in InnerClasses) {
if (c.IsAccessible(callingClass, isClassInInheritanceTree)) {
members.Add(c);
}
}
}
foreach (IProperty p in Properties) {
if (p.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(p);
}
}
foreach (IMethod m in Methods) {
if (m.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(m);
}
}
foreach (IEvent e in Events) {
if (e.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(e);
}
}
foreach (IField f in Fields) {
if (f.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(f);
}
}
if (ClassType == ClassType.Interface && !showStatic) {
foreach (string s in BaseTypes) {
IClass baseClass = ProjectContent.SearchType(s, this, Region != null ? Region.BeginLine : -1, Region != null ? Region.BeginColumn : -1);
if (baseClass != null && baseClass.ClassType == ClassType.Interface) {
members.AddRange(baseClass.GetAccessibleMembers(callingClass, showStatic).ToArray());
}
}
} else {
IClass baseClass = BaseClass;
if (baseClass != null) {
members.AddRange(baseClass.GetAccessibleMembers(callingClass, showStatic).ToArray());
}
}
return members;
}
public class ClassInheritanceEnumerator : IEnumerator, IEnumerable
{

50
src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs

@ -73,6 +73,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -73,6 +73,12 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public bool IsConst {
get {
return (modifiers & ModifierEnum.Const) == ModifierEnum.Const;
}
}
public bool IsVirtual {
get {
return (modifiers & ModifierEnum.Virtual) == ModifierEnum.Virtual;
@ -156,6 +162,50 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -156,6 +162,50 @@ namespace ICSharpCode.SharpDevelop.Dom
this.declaringType = declaringType;
}
bool IsInnerClass(IClass c, IClass possibleInnerClass)
{
foreach (IClass inner in c.InnerClasses) {
if (inner.FullyQualifiedName == possibleInnerClass.FullyQualifiedName) {
return true;
}
if (IsInnerClass(inner, possibleInnerClass)) {
return true;
}
}
return false;
}
// TODO: check inner classes for protected members too.
// TODO: look for FullyQualifiedName == FullyQualifiedName. Must be replaced by a function wich pays attention to the case.
// Look at NRefactoryResolver.IsSameName. Also pay attention if you can put this Function in IClass, and if you have to
// compare the names instead of the FullyQualifiedNames
public bool IsAccessible(IClass callingClass, bool isClassInInheritanceTree)
{
if (IsInternal) {
return true;
}
if (IsPublic) {
return true;
}
if (isClassInInheritanceTree && IsProtected) {
return true;
}
return callingClass != null && (DeclaringType.FullyQualifiedName == callingClass.FullyQualifiedName || IsInnerClass(DeclaringType, callingClass));
}
public bool MustBeShown(IClass callingClass, bool showStatic, bool isClassInInheritanceTree)
{
if (DeclaringType.ClassType == ClassType.Enum) {
return true;
}
if (!showStatic && IsStatic || (showStatic && !(IsStatic || IsConst))) { // const is automatically static
return false;
}
return IsAccessible(callingClass, isClassInInheritanceTree);
}
public virtual int CompareTo(IDecoration value)
{
int cmp;

33
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -71,7 +71,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -71,7 +71,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
this.projectContent = ParserService.CurrentProjectContent;
}
bool IsCaseSensitive(SupportedLanguages language) {
bool IsCaseSensitive(SupportedLanguages language)
{
switch (language) {
case SupportedLanguages.CSharp:
return true;
@ -87,9 +88,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -87,9 +88,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
int caretColumn,
string fileName)
{
if (!IsCaseSensitive(language)) {
caseSensitive = false;
}
caseSensitive = IsCaseSensitive(language);
if (expression == null) {
expression = "";
}
@ -97,6 +97,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -97,6 +97,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (!caseSensitive) {
expression = expression.ToLower();
}
// disable the code completion for numbers like 3.47
if (IsNumber(expression)) {
return null;
@ -165,11 +166,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -165,11 +166,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return TryNamespace(type);
}
if (inNew) {
return new ResolveResult(returnClass, projectContent.ListTypes(new ArrayList(), returnClass, callingClass));
return new ResolveResult(returnClass, returnClass.GetAccessibleTypes(callingClass));
} else {
ArrayList result = projectContent.ListMembers(new ArrayList(), returnClass, callingClass, showStatic);
ArrayList result = returnClass.GetAccessibleMembers(callingClass, showStatic);
if (!showStatic && language == SupportedLanguages.VBNet) {
result = projectContent.ListMembers(result, returnClass, callingClass, true);
result.AddRange(returnClass.GetAccessibleMembers(callingClass, true).ToArray());
}
return new ResolveResult(returnClass, result);
}
@ -349,7 +350,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -349,7 +350,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
foreach (IMethod m in curType.Methods) {
if (IsSameName(m.Name, memberName) &&
projectContent.MustBeShown(curType, m, callingClass, showStatic, isClassInInheritanceTree) &&
m.MustBeShown(callingClass, showStatic, isClassInInheritanceTree) &&
!((m.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) {
methods.Add(m);
}
@ -375,7 +376,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -375,7 +376,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
bool isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(curType);
foreach (IIndexer i in curType.Indexer) {
if (projectContent.MustBeShown(curType, i, callingClass, showStatic, isClassInInheritanceTree) && !((i.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) {
if (i.MustBeShown(callingClass, showStatic, isClassInInheritanceTree) && !((i.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) {
indexer.Add(i);
}
}
@ -408,7 +409,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -408,7 +409,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
if (curType.ClassType == ClassType.Enum) {
foreach (IField f in curType.Fields) {
if (IsSameName(f.Name, memberName) && projectContent.MustBeShown(curType, f, callingClass, showStatic, isClassInInheritanceTree)) {
if (IsSameName(f.Name, memberName) && f.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
showStatic = false;
return type; // enum members have the type of the enum
}
@ -416,25 +417,25 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -416,25 +417,25 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
if (showStatic) {
foreach (IClass c in curType.InnerClasses) {
if (IsSameName(c.Name, memberName) && projectContent.IsAccessible(curType, c, callingClass, isClassInInheritanceTree)) {
if (IsSameName(c.Name, memberName) && c.IsAccessible(callingClass, isClassInInheritanceTree)) {
return new ReturnType(c.FullyQualifiedName);
}
}
}
foreach (IProperty p in curType.Properties) {
if (IsSameName(p.Name, memberName) && projectContent.MustBeShown(curType, p, callingClass, showStatic, isClassInInheritanceTree)) {
if (IsSameName(p.Name, memberName) && p.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
showStatic = false;
return p.ReturnType;
}
}
foreach (IField f in curType.Fields) {
if (IsSameName(f.Name, memberName) && projectContent.MustBeShown(curType, f, callingClass, showStatic, isClassInInheritanceTree)) {
if (IsSameName(f.Name, memberName) && f.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
showStatic = false;
return f.ReturnType;
}
}
foreach (IEvent e in curType.Events) {
if (IsSameName(e.Name, memberName) && projectContent.MustBeShown(curType, e, callingClass, showStatic, isClassInInheritanceTree)) {
if (IsSameName(e.Name, memberName) && e.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
showStatic = false;
return e.ReturnType;
}
@ -725,9 +726,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -725,9 +726,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
result.AddRange(projectContent.GetNamespaceContents(callingClass.Namespace));
bool inStatic = InStatic();
result = projectContent.ListMembers(result, callingClass, callingClass, inStatic);
result.AddRange(callingClass.GetAccessibleMembers(callingClass, inStatic).ToArray());
if (inStatic == false) {
result = projectContent.ListMembers(result, callingClass, callingClass, !inStatic);
result.AddRange(callingClass.GetAccessibleMembers(callingClass, !inStatic).ToArray());
}
}
}

1
src/Main/Base/Project/Src/Project/MSBuildProject.cs

@ -350,7 +350,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -350,7 +350,6 @@ namespace ICSharpCode.SharpDevelop.Project
break;
}
TaskService.BuildMessageViewCategory.AppendText(line + Environment.NewLine);
Console.WriteLine(line);
Match match = projectName.Match(line);
if (match.Success) {
string name = match.Result("${name}");

72
src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs

@ -399,68 +399,6 @@ namespace ICSharpCode.Core @@ -399,68 +399,6 @@ namespace ICSharpCode.Core
return null;
}
bool IsInnerClass(IClass c, IClass possibleInnerClass)
{
foreach (IClass inner in c.InnerClasses) {
if (inner.FullyQualifiedName == possibleInnerClass.FullyQualifiedName) {
return true;
}
if (IsInnerClass(inner, possibleInnerClass)) {
return true;
}
}
return false;
}
// TODO: check inner classes for protected members too.
// TODO: look for FullyQualifiedName == FullyQualifiedName. Must be replaced by a function wich pays attention to the case.
// Look at NRefactoryResolver.IsSameName. Also pay attention if you can put this Function in IClass, and if you have to
// compare the names instead of the FullyQualifiedNames
public bool IsAccessible(IClass c, IDecoration member, IClass callingClass, bool isClassInInheritanceTree)
{
if ((member.Modifiers & ModifierEnum.Internal) == ModifierEnum.Internal) {
return true;
}
if ((member.Modifiers & ModifierEnum.Public) == ModifierEnum.Public) {
return true;
}
if ((member.Modifiers & ModifierEnum.Protected) == ModifierEnum.Protected && (isClassInInheritanceTree)) {
return true;
}
return c != null && callingClass != null && (c.FullyQualifiedName == callingClass.FullyQualifiedName || IsInnerClass(c, callingClass));
}
public bool MustBeShown(IClass c, IDecoration member, IClass callingClass, bool showStatic, bool isClassInInheritanceTree)
{
if (c != null && c.ClassType == ClassType.Enum) {
return true;
}
if ((!showStatic && ((member.Modifiers & ModifierEnum.Static) == ModifierEnum.Static)) ||
( showStatic && !(((member.Modifiers & ModifierEnum.Static) == ModifierEnum.Static) ||
((member.Modifiers & ModifierEnum.Const) == ModifierEnum.Const)))) { // const is automatically static
return false;
}
return IsAccessible(c, member, callingClass, isClassInInheritanceTree);
}
public ArrayList ListTypes(ArrayList types, IClass curType, IClass callingClass)
{
// Console.WriteLine("ListTypes()");
bool isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(curType);
foreach (IClass c in curType.InnerClasses) {
if (((c.ClassType == ClassType.Class) || (c.ClassType == ClassType.Struct)) &&
IsAccessible(curType, c, callingClass, isClassInInheritanceTree)) {
types.Add(c);
}
}
IClass baseClass = curType.BaseClass;
if (baseClass != null) {
ListTypes(types, baseClass, callingClass);
}
return types;
}
public ArrayList ListMembers(ArrayList members, IClass curType, IClass callingClass, bool showStatic)
{
// Console.WriteLine("ListMembers()");
@ -482,32 +420,32 @@ namespace ICSharpCode.Core @@ -482,32 +420,32 @@ namespace ICSharpCode.Core
if (showStatic) {
foreach (IClass c in curType.InnerClasses) {
if (IsAccessible(curType, c, callingClass, isClassInInheritanceTree)) {
if (c.IsAccessible(callingClass, isClassInInheritanceTree)) {
members.Add(c);
}
}
}
foreach (IProperty p in curType.Properties) {
if (MustBeShown(curType, p, callingClass, showStatic, isClassInInheritanceTree)) {
if (p.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(p);
}
}
foreach (IMethod m in curType.Methods) {
if (MustBeShown(curType, m, callingClass, showStatic, isClassInInheritanceTree)) {
if (m.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(m);
}
}
foreach (IEvent e in curType.Events) {
if (MustBeShown(curType, e, callingClass, showStatic, isClassInInheritanceTree)) {
if (e.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(e);
}
}
foreach (IField f in curType.Fields) {
if (MustBeShown(curType, f, callingClass, showStatic, isClassInInheritanceTree)) {
if (f.MustBeShown(callingClass, showStatic, isClassInInheritanceTree)) {
members.Add(f);
}
}

6
src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs

@ -45,12 +45,6 @@ namespace ICSharpCode.Core @@ -45,12 +45,6 @@ namespace ICSharpCode.Core
IClass SearchType(string name, IClass curType, int caretLine, int caretColumn);
IClass SearchType(string name, IClass curType, ICompilationUnit unit, int caretLine, int caretColumn);
bool IsAccessible(IClass c, IDecoration member, IClass callingClass, bool isClassInInheritanceTree);
bool MustBeShown(IClass c, IDecoration member, IClass callingClass, bool showStatic, bool isClassInInheritanceTree);
ArrayList ListTypes(ArrayList types, IClass curType, IClass callingClass);
ArrayList ListMembers(ArrayList members, IClass curType, IClass callingClass, bool showStatic);
Position GetPosition(string fullMemberName);
}
}

2
src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs

@ -49,7 +49,6 @@ namespace ICSharpCode.Core @@ -49,7 +49,6 @@ namespace ICSharpCode.Core
try {
assembly = Assembly.ReflectionOnlyLoadFrom(item.FileName);
Console.WriteLine(assembly.Location);
if (assembly != null) {
contents[item.FileName] = CaseSensitiveProjectContent.Create(assembly);
return contents[item.FileName];
@ -57,7 +56,6 @@ namespace ICSharpCode.Core @@ -57,7 +56,6 @@ namespace ICSharpCode.Core
} catch (Exception) {
try {
assembly = Assembly.LoadWithPartialName(item.Include);
Console.WriteLine(assembly.Location);
if (assembly != null) {
contents[item.Include] = CaseSensitiveProjectContent.Create(assembly);
return contents[item.Include];

4
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs

@ -144,9 +144,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -144,9 +144,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
if(oc.Name == expression || oc.FullyQualifiedName==expression) {
Debug.WriteLine(((IClass)o).Name);
// now we can set completion data
ArrayList members=new ArrayList();
AddResolveResults(ParserService.CurrentProjectContent.ListMembers(members,oc,oc,true));
members.Clear();
AddResolveResults(oc.GetAccessibleMembers(oc,true));
// clear objects to indicate end of loop for namespaces
objs.Clear();
objs=null;

1
src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/Menu.cs

@ -38,7 +38,6 @@ namespace ICSharpCode.Core @@ -38,7 +38,6 @@ namespace ICSharpCode.Core
{
DropDownItems.Clear();
foreach (object item in subItems) {
Console.WriteLine(item);
if (item is ToolStripItem) {
DropDownItems.Add((ToolStripItem)item);
((IStatusUpdate)item).UpdateStatus();

1
src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs

@ -132,7 +132,6 @@ namespace ICSharpCode.Core @@ -132,7 +132,6 @@ namespace ICSharpCode.Core
Image = ResourceService.GetBitmap(codon.Properties["icon"]);
}
ConditionFailedAction failedAction = codon.GetFailedAction(caller);
Console.WriteLine("failed action {0}", failedAction);
Visible = failedAction != ConditionFailedAction.Exclude;
if (localizedText == null) {

Loading…
Cancel
Save