Browse Source

Boo Forms Designer now correctly loads [Flag] properties like Anchor.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1319 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
e80b7a41ec
  1. 78
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/CodeDomVisitor.cs

78
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/CodeDomVisitor.cs

@ -199,29 +199,73 @@ namespace Grunwald.BooBinding.Designer
_class.Members.Add(method); _class.Members.Add(method);
} }
static CodeBinaryOperatorType GetOperatorType(BinaryOperatorType op)
{
switch (op) {
case BinaryOperatorType.Addition:
return CodeBinaryOperatorType.Add;
case BinaryOperatorType.And:
return CodeBinaryOperatorType.BooleanAnd;
case BinaryOperatorType.BitwiseAnd:
return CodeBinaryOperatorType.BitwiseAnd;
case BinaryOperatorType.BitwiseOr:
return CodeBinaryOperatorType.BitwiseOr;
case BinaryOperatorType.Division:
return CodeBinaryOperatorType.Divide;
case BinaryOperatorType.Equality:
return CodeBinaryOperatorType.ValueEquality;
case BinaryOperatorType.GreaterThan:
return CodeBinaryOperatorType.GreaterThan;
case BinaryOperatorType.GreaterThanOrEqual:
return CodeBinaryOperatorType.GreaterThanOrEqual;
case BinaryOperatorType.LessThan:
return CodeBinaryOperatorType.LessThan;
case BinaryOperatorType.LessThanOrEqual:
return CodeBinaryOperatorType.LessThanOrEqual;
case BinaryOperatorType.Modulus:
return CodeBinaryOperatorType.Modulus;
case BinaryOperatorType.Multiply:
return CodeBinaryOperatorType.Multiply;
case BinaryOperatorType.Or:
return CodeBinaryOperatorType.BooleanOr;
case BinaryOperatorType.Subtraction:
return CodeBinaryOperatorType.Subtract;
default:
return CodeBinaryOperatorType.Assign;
}
}
public override void OnBinaryExpression(BinaryExpression node) public override void OnBinaryExpression(BinaryExpression node)
{ {
BinaryOperatorType op = node.Operator; _expression = null;
if (op == BinaryOperatorType.Assign) { CodeBinaryOperatorType op = GetOperatorType(node.Operator);
_expression = null; if (op == CodeBinaryOperatorType.Assign) {
// non-standard op
if (node.Operator == BinaryOperatorType.Assign) {
node.Left.Accept(this);
CodeExpression left = _expression;
_expression = null;
node.Right.Accept(this);
if (left != null && _expression != null)
_statements.Add(new CodeAssignStatement(left, _expression));
_expression = null;
} else if (node.Operator == BinaryOperatorType.InPlaceAddition) {
node.Left.Accept(this);
CodeEventReferenceExpression left = _expression as CodeEventReferenceExpression;
_expression = null;
node.Right.Accept(this);
if (left != null && _expression != null)
_statements.Add(new CodeAttachEventStatement(left, _expression));
_expression = null;
} else {
LoggingService.Warn("CodeDomVisitor: ignoring unknown Binary Operator" + node.Operator);
}
} else {
node.Left.Accept(this); node.Left.Accept(this);
CodeExpression left = _expression; CodeExpression left = _expression;
_expression = null; _expression = null;
node.Right.Accept(this); node.Right.Accept(this);
if (left != null && _expression != null) _expression = new CodeBinaryOperatorExpression(left, op, _expression);
_statements.Add(new CodeAssignStatement(left, _expression));
_expression = null;
} else if (op == BinaryOperatorType.InPlaceAddition) {
_expression = null;
node.Left.Accept(this);
CodeEventReferenceExpression left = _expression as CodeEventReferenceExpression;
_expression = null;
node.Right.Accept(this);
if (left != null && _expression != null)
_statements.Add(new CodeAttachEventStatement(left, _expression));
_expression = null;
} else {
LoggingService.Warn("CodeDomVisitor: ignoring unknown Binary Operator" + op);
} }
} }

Loading…
Cancel
Save