Browse Source

Added warning for SD2-763: Resources not found with multiple types in source file

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2134 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
f2145433b6
  1. 3
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs
  2. 14
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs

3
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs

@ -111,7 +111,8 @@ namespace Grunwald.BooBinding.Designer
Module mainModule = Parse(textEditorControl.FileName, lastTextContent); Module mainModule = Parse(textEditorControl.FileName, lastTextContent);
IClass formClass; IClass formClass;
IList<IClass> parts = NRefactoryDesignerLoader.FindFormClassParts(parseInfo, out formClass); bool isFirstClassInFile;
IList<IClass> parts = NRefactoryDesignerLoader.FindFormClassParts(parseInfo, out formClass, out isFirstClassInFile);
IMethod initMethod = FormsDesignerSecondaryDisplayBinding.GetInitializeComponents(formClass); IMethod initMethod = FormsDesignerSecondaryDisplayBinding.GetInitializeComponents(formClass);

14
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerLoader/NRefactoryDesignerLoader.cs

@ -127,7 +127,7 @@ namespace ICSharpCode.FormsDesigner
string lastTextContent; string lastTextContent;
public static IList<IClass> FindFormClassParts(ParseInformation parseInfo, out IClass formClass) public static IList<IClass> FindFormClassParts(ParseInformation parseInfo, out IClass formClass, out bool isFirstClassInFile)
{ {
#if DEBUG #if DEBUG
if ((Control.ModifierKeys & (Keys.Alt | Keys.Control)) == (Keys.Alt | Keys.Control)) { if ((Control.ModifierKeys & (Keys.Alt | Keys.Control)) == (Keys.Alt | Keys.Control)) {
@ -136,11 +136,13 @@ namespace ICSharpCode.FormsDesigner
#endif #endif
formClass = null; formClass = null;
isFirstClassInFile = true;
foreach (IClass c in parseInfo.BestCompilationUnit.Classes) { foreach (IClass c in parseInfo.BestCompilationUnit.Classes) {
if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { if (FormsDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) {
formClass = c; formClass = c;
break; break;
} }
isFirstClassInFile = false;
} }
if (formClass == null) if (formClass == null)
throw new FormsDesignerLoadException("No class derived from Form or UserControl was found."); throw new FormsDesignerLoadException("No class derived from Form or UserControl was found.");
@ -170,7 +172,8 @@ namespace ICSharpCode.FormsDesigner
ParseInformation parseInfo = ParserService.GetParseInformation(textEditorControl.FileName); ParseInformation parseInfo = ParserService.GetParseInformation(textEditorControl.FileName);
IClass formClass; IClass formClass;
IList<IClass> parts = FindFormClassParts(parseInfo, out formClass); bool isFirstClassInFile;
IList<IClass> parts = FindFormClassParts(parseInfo, out formClass, out isFirstClassInFile);
List<KeyValuePair<string, CompilationUnit>> compilationUnits = new List<KeyValuePair<string, CompilationUnit>>(); List<KeyValuePair<string, CompilationUnit>> compilationUnits = new List<KeyValuePair<string, CompilationUnit>>();
bool foundInitMethod = false; bool foundInitMethod = false;
@ -243,9 +246,16 @@ namespace ICSharpCode.FormsDesigner
#endif #endif
LoggingService.Debug("NRefactoryDesignerLoader.Parse() finished"); LoggingService.Debug("NRefactoryDesignerLoader.Parse() finished");
if (!isFirstClassInFile) {
MessageService.ShowWarning("The form must be the first class in the file in order for form resources be compiled correctly.\n" +
"Please move other classes below the form class definition or move them to other files.");
}
return visitor.codeCompileUnit; return visitor.codeCompileUnit;
} }
/// <summary> /// <summary>
/// Fix type names and remove unused methods. /// Fix type names and remove unused methods.
/// </summary> /// </summary>

Loading…
Cancel
Save