private IList <SyntaxNode> GenerateStatements( SyntaxGenerator factory, bool isAbstract, CancellationToken cancellationToken) { var throwStatement = CodeGenerationHelpers.GenerateThrowStatement(factory, this.Document, "System.NotImplementedException", cancellationToken); return(isAbstract || State.TypeToGenerateIn.TypeKind == TypeKind.Interface || throwStatement == null ? null : new[] { throwStatement }); }
private ImmutableArray <SyntaxNode> GenerateStatements( SyntaxGenerator factory, bool isAbstract, CancellationToken cancellationToken) { var throwStatement = CodeGenerationHelpers.GenerateThrowStatement(factory, this.Document, "System.NotImplementedException", cancellationToken); return(isAbstract || State.TypeToGenerateIn.TypeKind == TypeKind.Interface || throwStatement == null ? default(ImmutableArray <SyntaxNode>) : ImmutableArray.Create(throwStatement)); }
private ImmutableArray <SyntaxNode> GenerateStatements( CancellationToken cancellationToken) { var syntaxFactory = _document.Project.Solution.Workspace.Services.GetLanguageServices(_state.TypeToGenerateIn.Language).GetService <SyntaxGenerator>(); var throwStatement = CodeGenerationHelpers.GenerateThrowStatement( syntaxFactory, this._document, "System.NotImplementedException", cancellationToken); return(_state.TypeToGenerateIn.TypeKind != TypeKind.Interface && _returnsByRef ? ImmutableArray.Create(throwStatement) : default(ImmutableArray <SyntaxNode>)); }
public override string ConvertToCode(string propertyName, CodeNode currentNode, CodeNode parentNode, NodeConverter converter, CodeRenderService rendererService) { if (currentNode.Node.Parent != null && propertyName == PropertyNames.AddChild) { var defaultParentName = GetDefaultParentName(currentNode.Node, currentNode.Node.Parent, rendererService); if (!string.IsNullOrEmpty(defaultParentName)) { return(CodeGenerationHelpers.GetMethod(defaultParentName, nameof(NSView.AddSubview), currentNode.Name)); } } return(base.ConvertToCode(propertyName, currentNode, parentNode, converter, rendererService)); }
protected override StringBuilder OnConvertToCode(CodeNode currentNode, CodeNode parentNode, CodeRenderService rendererService) { var builder = new StringBuilder(); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { builder.WriteConstructor(currentNode.Name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } builder.Configure(currentNode.Node, Resources.Ids.Conversion.NameIdentifier); currentNode.Node.TryGetNodeCustomName(out string nodeName); var imageNamedMethod = CodeGenerationHelpers.GetMethod(typeof(NSImage).FullName, nameof(NSImage.ImageNamed), nodeName, true); builder.WriteEquality(currentNode.Name, nameof(NSImageView.Image), imageNamedMethod); return(builder); }
private IMethodSymbol GetMethodSymbol( SemanticDocument document, string eventHandlerMethodName, AssignmentExpressionSyntax eventHookupExpression, CancellationToken cancellationToken) { var semanticModel = document.SemanticModel as SemanticModel; var symbolInfo = semanticModel.GetSymbolInfo(eventHookupExpression.Left, cancellationToken); var symbol = symbolInfo.Symbol; if (symbol == null || symbol.Kind != SymbolKind.Event) { return(null); } var typeInference = document.Project.LanguageServices.GetService <ITypeInferenceService>(); var delegateType = typeInference.InferDelegateType(semanticModel, eventHookupExpression.Right, cancellationToken); if (delegateType == null || delegateType.DelegateInvokeMethod == null) { return(null); } var syntaxFactory = document.Project.LanguageServices.GetService <SyntaxGenerator>(); return(CodeGenerationSymbolFactory.CreateMethodSymbol( attributes: null, accessibility: Accessibility.Private, modifiers: new DeclarationModifiers(isStatic: eventHookupExpression.IsInStaticContext()), returnType: delegateType.DelegateInvokeMethod.ReturnType, returnsByRef: delegateType.DelegateInvokeMethod.ReturnsByRef, explicitInterfaceSymbol: null, name: eventHandlerMethodName, typeParameters: null, parameters: delegateType.DelegateInvokeMethod.Parameters, statements: new List <SyntaxNode> { CodeGenerationHelpers.GenerateThrowStatement(syntaxFactory, document, "System.NotImplementedException", cancellationToken) })); }
public CocoaStringObject AddMethod(string methodName, string parameters, bool inQuotes = false, bool includesSemicolon = true) { builder.Append(CodeGenerationHelpers.GetMethod(this.Name, methodName, parameters, inQuotes, includesSemicolon)); return(this); }
public override string ConvertToCode(string propertyName, FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { if (propertyName == CodeProperties.Frame) { System.Text.StringBuilder builder = new System.Text.StringBuilder(); if (currentNode.Node is IAbsoluteBoundingBox absoluteBounding) { var constrainedNode = currentNode.Node as IConstraints; var name = currentNode.Name; //width var widthConstraintName = $"{name}WidthConstraint"; var widthMaxStringValue = Math.Max(absoluteBounding.absoluteBoundingBox.Width, 1).ToDesignerString(); var widthConstraintStringValue = CodeGenerationHelpers.GetWidthConstraintEqualToConstant(name, widthMaxStringValue); builder.AppendLine($"var {widthConstraintName} = {widthConstraintStringValue};"); if (constrainedNode != null && constrainedNode.constraints.IsFlexibleHorizontal) { builder.WriteEquality(widthConstraintName, nameof(AppKit.NSLayoutConstraint.Priority), $"({typeof(int).FullName}){typeof(NSLayoutPriority)}.{nameof(NSLayoutPriority.DefaultLow)}"); } builder.WriteEquality(widthConstraintName, nameof(AppKit.NSLayoutConstraint.Active), true); //height var heightConstraintName = $"{name}HeightConstraint"; var heightStringValue = Math.Max(absoluteBounding.absoluteBoundingBox.Height, 1).ToDesignerString(); var heightConstraintStringValue = CodeGenerationHelpers.GetHeightConstraintEqualToConstant(name, heightStringValue); builder.AppendLine($"var {heightConstraintName} = {heightConstraintStringValue};"); if (constrainedNode != null && constrainedNode.constraints.IsFlexibleVertical) { builder.WriteEquality(heightConstraintName, nameof(AppKit.NSLayoutConstraint.Priority), $"({typeof (int).FullName}){typeof(NSLayoutPriority)}.{nameof(NSLayoutPriority.DefaultLow)}"); } builder.WriteEquality(heightConstraintName, nameof(AppKit.NSLayoutConstraint.Active), true); return(builder.ToString()); } return(string.Empty); } if (propertyName == CodeProperties.AddChild) { return(parentNode?.GetMethod(nameof(NSView.AddSubview), currentNode.Name)); } if (propertyName == CodeProperties.Size) { if (currentNode.Node is IAbsoluteBoundingBox container) { if (currentNode.Node is FigmaLine line) { var width = container.absoluteBoundingBox.Width == 0 ? 1 : container.absoluteBoundingBox.Width; var height = container.absoluteBoundingBox.Height == 0 ? 1 : container.absoluteBoundingBox.Height; var size = typeof(CoreGraphics.CGSize).GetConstructor(new string[] { width.ToDesignerString(), height.ToDesignerString() }); return(currentNode.GetMethod(nameof(NSView.SetFrameSize), size)); } var sizeConstructor = typeof(CoreGraphics.CGSize).GetConstructor( container.absoluteBoundingBox.Width.ToDesignerString(), container.absoluteBoundingBox.Height.ToDesignerString()); return(currentNode.GetMethod(nameof(NSView.SetFrameSize), sizeConstructor)); } return(string.Empty); } if (propertyName == CodeProperties.Position) { //first level has an special behaviour on positioning if (currentNode.Node.Parent is FigmaCanvas) { return(string.Empty); } if (currentNode.Node is IAbsoluteBoundingBox absoluteBounding && currentNode.Node.Parent is IAbsoluteBoundingBox parentAbsoluteBoundingBox) { var x = absoluteBounding.absoluteBoundingBox.X - parentAbsoluteBoundingBox.absoluteBoundingBox.X; var parentY = parentAbsoluteBoundingBox.absoluteBoundingBox.Y + parentAbsoluteBoundingBox.absoluteBoundingBox.Height; var actualY = absoluteBounding.absoluteBoundingBox.Y + absoluteBounding.absoluteBoundingBox.Height; var y = parentY - actualY; if (x != default || y != default) { var pointConstructor = CodeGenerationExtensions.GetConstructor( typeof(CoreGraphics.CGPoint), x.ToDesignerString(), y.ToDesignerString() ); return(currentNode.GetMethod(nameof(AppKit.NSView.SetFrameOrigin), pointConstructor)); } } return(string.Empty); } if (propertyName == CodeProperties.Constraints) { if (currentNode.Node is IConstraints constrainedNode && currentNode.Node.Parent != null) { var parentNodeName = parentNode == null? GetDefaultParentName(currentNode, parentNode, rendererService) : parentNode.Name; var builder = new System.Text.StringBuilder(); var constraints = constrainedNode.constraints; var absoluteBoundingBox = ((IAbsoluteBoundingBox)currentNode.Node) .absoluteBoundingBox; var absoluteBoundBoxParent = ((IAbsoluteBoundingBox)(parentNode == null ? currentNode.Node.Parent : parentNode.Node)) .absoluteBoundingBox; if (constraints.horizontal.Contains("RIGHT") || constraints.horizontal == "SCALE") { var endPosition1 = absoluteBoundingBox.X + absoluteBoundingBox.Width; var endPosition2 = absoluteBoundBoxParent.X + absoluteBoundBoxParent.Width; var value = Math.Max(endPosition1, endPosition2) - Math.Min(endPosition1, endPosition2); var rightConstraintStringValue = CodeGenerationHelpers.GetRightConstraintEqualToAnchor( currentNode.Name, -value, parentNodeName); builder.WriteEquality(rightConstraintStringValue, nameof(NSLayoutConstraint.Active), true); } if (constraints.horizontal.Contains("LEFT")) { var value2 = absoluteBoundingBox.X - absoluteBoundBoxParent.X; var rightConstraintStringValue = CodeGenerationHelpers.GetLeftConstraintEqualToAnchor( currentNode.Name, value2, parentNodeName); builder.WriteEquality(rightConstraintStringValue, nameof(NSLayoutConstraint.Active), true); } if (constraints.vertical.Contains("BOTTOM") || constraints.horizontal == "SCALE") { var endPosition1 = absoluteBoundingBox.Y + absoluteBoundingBox.Height; var endPosition2 = absoluteBoundBoxParent.Y + absoluteBoundBoxParent.Height; var value2 = Math.Max(endPosition1, endPosition2) - Math.Min(endPosition1, endPosition2); var rightConstraintStringValue = CodeGenerationHelpers.GetBottomConstraintEqualToAnchor( currentNode.Name, -value2, parentNodeName); builder.WriteEquality(rightConstraintStringValue, nameof(NSLayoutConstraint.Active), true); } if (constraints.vertical.Contains("TOP")) { var value = absoluteBoundingBox.Y - absoluteBoundBoxParent.Y; var rightConstraintStringValue = CodeGenerationHelpers.GetTopConstraintEqualToAnchor( currentNode.Name, value, parentNodeName); builder.WriteEquality(rightConstraintStringValue, nameof(NSLayoutConstraint.Active), true); } if (constraints.horizontal == "CENTER" || constraints.horizontal == "SCALE") { var delta = absoluteBoundingBox.X - absoluteBoundBoxParent.X - absoluteBoundBoxParent.Center.X; var rightConstraintStringValue = CodeGenerationHelpers.GetConstraintEqualToAnchor( currentNode.Name, nameof(NSView.LeftAnchor), delta, parentNodeName, nameof(NSView.CenterXAnchor)); builder.WriteEquality(rightConstraintStringValue, nameof(NSLayoutConstraint.Active), true); } if (constraints.vertical == "CENTER" || constraints.vertical == "SCALE") { var delta = absoluteBoundingBox.Y - absoluteBoundBoxParent.Y - absoluteBoundBoxParent.Center.Y; var rightConstraintStringValue = CodeGenerationHelpers.GetConstraintEqualToAnchor( currentNode.Name, nameof(NSView.TopAnchor), delta, parentNodeName, nameof(NSView.CenterYAnchor)); builder.WriteEquality(rightConstraintStringValue, nameof(NSLayoutConstraint.Active), true); } return(builder.ToString()); } return(string.Empty); } throw new System.NotImplementedException(propertyName); }
public static string BoldSystemFontOfSize(string font) { return CodeGenerationHelpers.GetMethod(typeof(AppKit.NSFont).FullName, nameof(AppKit.NSFont.BoldSystemFontOfSize), font); }