Browse Source

Fixed SD2-483: TreeNode declarations are missing

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@580 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
13237161a5
  1. 28
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs
  2. 1
      src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs

28
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs

@ -28,7 +28,6 @@ using Microsoft.VisualBasic; @@ -28,7 +28,6 @@ using Microsoft.VisualBasic;
using ICSharpCode.Core;
using ICSharpCode.FormDesigner.Services;
namespace ICSharpCode.FormDesigner
{
/// <summary>
@ -37,7 +36,7 @@ namespace ICSharpCode.FormDesigner @@ -37,7 +36,7 @@ namespace ICSharpCode.FormDesigner
public class CodeDOMGenerator
{
IDesignerHost host;
CodeDomProvider codeProvider;
CodeDomProvider codeProvider;
CodeDOMGeneratorUtility codeDOMGeneratorUtility = new CodeDOMGeneratorUtility();
List<string> addedVariables = new List<string>();
@ -55,7 +54,7 @@ namespace ICSharpCode.FormDesigner @@ -55,7 +54,7 @@ namespace ICSharpCode.FormDesigner
IDisposable session = serializationManager.CreateSession();
DesignerResourceService designerResourceService = (DesignerResourceService)host.GetService(typeof(System.ComponentModel.Design.IResourceService));
designerResourceService.SerializationStarted(true);
addedVariables.Clear();
foreach (IComponent component in host.Container.Components) {
@ -77,6 +76,7 @@ namespace ICSharpCode.FormDesigner @@ -77,6 +76,7 @@ namespace ICSharpCode.FormDesigner
void GenerateComponentCode(IComponent component, TextWriter writer, DesignerSerializationManager serializationManager)
{
LoggingService.Debug("Generate code for: " + component.Site.Name);
Type componentType = component.GetType();
ExpressionContext exprContext = new ExpressionContext(new CodeThisReferenceExpression(), componentType, component, component);
((IDesignerSerializationManager)serializationManager).Context.Append(exprContext);
@ -96,23 +96,37 @@ namespace ICSharpCode.FormDesigner @@ -96,23 +96,37 @@ namespace ICSharpCode.FormDesigner
foreach (CodeStatement statement in statements) {
CodeVariableDeclarationStatement variableDecl = statement as CodeVariableDeclarationStatement;
if (variableDecl != null) {
LoggingService.Debug("variable declaration: " + variableDecl.Name);
if (variableDecl.Name == "resources") {
FixResourcesVariableDeclarationStatement(variableDecl);
} else {
addedVariables.Add(((CodeVariableDeclarationStatement)statement).Name);
continue;
// skip generating the variable declaration if the component is a main
// component that gets its own field
// TreeNode is an example that does NOT get its own root component!
bool foundComponent = false;
foreach (IComponent c in host.Container.Components) {
if (variableDecl.Name == c.Site.Name) {
foundComponent = true;
break;
}
}
if (foundComponent) {
addedVariables.Add(((CodeVariableDeclarationStatement)statement).Name);
continue;
}
}
}
// indentation isn't generated when calling GenerateCodeFromStatement
writer.Write(options.IndentString);
try {
try {
// outputGenerator.PublicGenerateCodeFromStatement(statement, Console.Out, options);
codeProvider.GenerateCodeFromStatement(statement, writer, options);
} catch (Exception e) {
codeProvider.GenerateCodeFromStatement(new CodeCommentStatement("TODO: Error while generating statement : " + e.Message),
writer,
options);
LoggingService.Error(e);
}
}
}
@ -127,7 +141,7 @@ namespace ICSharpCode.FormDesigner @@ -127,7 +141,7 @@ namespace ICSharpCode.FormDesigner
/// <summary>
/// HACK - Fix the resources variable declaration. The CodeDomSerializer
/// creates an incorrect code expression object.
/// creates an incorrect code expression object.
/// </summary>
void FixResourcesVariableDeclarationStatement(CodeVariableDeclarationStatement variableDecl)
{

1
src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs

@ -40,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -40,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui
ctl.TextEditorProperties = new SharpDevelopTextEditorProperties();
ctl.ActiveTextAreaControl.TextArea.DoubleClick += OnDoubleClick;
ParserService.ParserUpdateStepFinished += UpdateTick;
ctl.VisibleChanged += delegate { UpdateTick(null, null); };
}
void OnDoubleClick(object sender, EventArgs e)

Loading…
Cancel
Save