protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } /* TODO * * code.WriteMethod (name, nameof (NSButton.SetButtonType), NSButtonType.PushOnPushOff); * code.WriteEquality (name, nameof (NSButton.BezelStyle), NSBezelStyle.Disclosure); * code.WriteEquality (name, nameof (NSButton.Title), CodeGenerationHelpers.StringEmpty); * code.WriteMethod (name, nameof (NSButton.Highlight), false); * * figmaInstance.TryGetNativeControlComponentType (out var controlType); * switch (controlType) { * case NativeControlComponentType.DisclosureTriangleStandard: * case NativeControlComponentType.DisclosureTriangleStandardDark: * code.WriteEquality (name, nameof (NSButton.ControlSize), NSControlSize.Regular); * break; * } */ return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } FigmaVectorEntity rectangle = frame.children .OfType <FigmaVectorEntity>() .FirstOrDefault(s => s.name == ComponentString.VALUE); foreach (var styleMap in rectangle?.styles) { if ((rendererService.figmaProvider as FigmaFileProvider).TryGetStyle(styleMap.Value, out FigmaStyle style)) { if (styleMap.Key == "fill") { code.WriteEquality(name, nameof(NSColorWell.Color), CocoaCodeHelpers.GetNSColorString(style.name)); } } } return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node).FullName, rendererService.NodeRendersVar(currentNode, parentNode)); } switch (controlType) { case NativeControlType.Button: code.WriteEquality(name, nameof(NSButton.BezelStyle), NSBezelStyle.Rounded); break; case NativeControlType.ButtonHelp: code.WriteEquality(name, nameof(NSButton.BezelStyle), NSBezelStyle.HelpButton); code.WriteEquality(name, nameof(NSButton.Title), string.Empty, inQuotes: true); break; } code.WriteEquality(name, nameof(NSButton.ControlSize), CocoaHelpers.GetNSControlSize(controlVariant)); code.WriteEquality(name, nameof(NSSegmentedControl.Font), CocoaCodeHelpers.GetNSFontString(controlVariant)); FigmaGroup group = frame.children .OfType <FigmaGroup> () .FirstOrDefault(s => s.visible); if (group != null) { FigmaText text = group.children .OfType <FigmaText> () .FirstOrDefault(s => s.name == ComponentString.TITLE); if (text != null && controlType != NativeControlType.ButtonHelp) { string labelTranslated = NativeControlHelper.GetTranslatableString(text.characters, rendererService.CurrentRendererOptions.TranslateLabels); code.WriteEquality(name, nameof(NSButton.Title), labelTranslated, inQuotes: !rendererService.CurrentRendererOptions.TranslateLabels); } if (group.name == ComponentString.STATE_DISABLED) { code.WriteEquality(name, nameof(NSButton.Enabled), false); } if (group.name == ComponentString.STATE_DEFAULT) { code.WriteEquality(name, nameof(NSButton.KeyEquivalent), "\\r", true); } } return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); // TODO: Get name from generator var name = currentNode.Name + "ScrollView"; string textViewName = currentNode.Name; currentNode.Name = name; var frame = (FigmaFrame)currentNode.Node; frame.TryGetNativeControlVariant(out var controlVariant); code.WriteConstructor(name, typeof(NSScrollView)); code.WriteEquality(name, nameof(NSScrollView.BorderType), NSBorderType.LineBorder.GetFullName()); code.WriteEquality(name, nameof(NSScrollView.HasHorizontalRuler), false); code.WriteEquality(name, nameof(NSScrollView.HasVerticalScroller), true); code.AppendLine(); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(textViewName, typeof(NSTextView), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteEquality(textViewName, nameof(NSTextView.Frame), string.Format("new {0} ({1}, {2}, {3}, {4})", typeof(CoreGraphics.CGRect), 0, 0, name + ".ContentSize.Width", name + ".ContentSize.Height")); code.WriteEquality(textViewName, nameof(NSTextView.AutoresizingMask), NSViewResizingMask.WidthSizable.GetFullName()); // TODO: Use CocoaConverter methods switch (controlVariant) { case NativeControlVariant.Regular: code.WriteEquality(textViewName, nameof(NSTextView.Font), CodeGenerationHelpers.Font.SystemFontOfSize(CodeGenerationHelpers.Font.SystemFontSize)); break; case NativeControlVariant.Small: code.WriteEquality(textViewName, nameof(NSTextView.Font), CodeGenerationHelpers.Font.SystemFontOfSize(CodeGenerationHelpers.Font.SmallSystemFontSize)); break; } var texts = frame.children.OfType <FigmaText> (); FigmaText text = texts.FirstOrDefault(s => s.name == ComponentString.TEXT && s.visible); if (text != null) { var stringLabel = NativeControlHelper.GetTranslatableString(text.characters, rendererService.CurrentRendererOptions.TranslateLabels); code.WriteEquality(textViewName, nameof(NSTextView.Value), stringLabel, inQuotes: !rendererService.CurrentRendererOptions.TranslateLabels); } code.AppendLine(); code.WriteEquality(name, nameof(NSScrollView.DocumentView), textViewName); return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteMethod(name, nameof(NSButton.SetButtonType), NSButtonType.Switch); code.WriteEquality(name, nameof(NSButton.ControlSize), CocoaHelpers.GetNSControlSize(controlVariant)); code.WriteEquality(name, nameof(NSSegmentedControl.Font), CocoaCodeHelpers.GetNSFontString(controlVariant)); FigmaText text = frame.children .OfType <FigmaText> () .FirstOrDefault(); if (text != null) { var labelTranslated = NativeControlHelper.GetTranslatableString(text.characters, rendererService.CurrentRendererOptions.TranslateLabels); code.WriteEquality(name, nameof(NSButton.Title), labelTranslated, inQuotes: !rendererService.CurrentRendererOptions.TranslateLabels); } FigmaGroup group = frame.children .OfType <FigmaGroup> () .FirstOrDefault(s => s.name.In(ComponentString.STATE_ON, ComponentString.STATE_OFF, ComponentString.STATE_MIXED) && s.visible); if (group != null) { if (group.name == ComponentString.STATE_ON) { code.WriteEquality(name, nameof(NSButton.State), NSCellStateValue.On); } if (group.name == ComponentString.STATE_OFF) { code.WriteEquality(name, nameof(NSButton.State), NSCellStateValue.Off); } if (group.name == ComponentString.STATE_MIXED) { code.WriteEquality(name, nameof(NSButton.AllowsMixedState), true); code.WriteEquality(name, nameof(NSButton.State), NSCellStateValue.Mixed); } } return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { StringBuilder code = base.OnConvertToCode(currentNode, parentNode, rendererService); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; code.WriteEquality(name, nameof(NSProgressIndicator.Style), NSProgressIndicatorStyle.Bar); return(code); }
public override string ConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var builder = new StringBuilder(); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { builder.WriteConstructor(currentNode.Name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } builder.Configure((FigmaVectorEntity)currentNode.Node, Resources.Ids.Conversion.NameIdentifier); return(builder.ToString()); }
public override string ConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var builder = OnConvertToCode(currentNode, parentNode, rendererService); if (builder != null) { currentNode.Node.TryGetNativeControlType(out var nativeControlType); if (!currentNode.Node.visible) { builder.WriteEquality(currentNode.Name, nameof(NSView.Hidden), true); } builder.WriteEquality(currentNode.Name, nameof(NSView.TranslatesAutoresizingMaskIntoConstraints), false); if (currentNode.Node.IsA11Enabled()) { bool hasAccessibility = false; if (CanSetAccessibilityRole && currentNode.Node.IsA11Group()) { var fullRoleName = $"{typeof(AppKit.NSAccessibilityRoles).FullName}.{nameof(AppKit.NSAccessibilityRoles.GroupRole)}"; builder.WriteEquality(currentNode.Name, nameof(AppKit.NSView.AccessibilityRole), fullRoleName); hasAccessibility = true; } if (CanSetAccessibilityLabel && currentNode.Node.TrySearchA11Label(out var label)) { label = NativeControlHelper.GetTranslatableString(label, rendererService.CurrentRendererOptions.TranslateLabels); builder.WriteEquality(currentNode.Name, GetAccessibilityTitle(nativeControlType), label, inQuotes: !rendererService.CurrentRendererOptions.TranslateLabels); hasAccessibility = true; } if (CanSetAccessibilityHelp && currentNode.Node.TrySearchA11Help(out var help)) { help = NativeControlHelper.GetTranslatableString(help, rendererService.CurrentRendererOptions.TranslateLabels); builder.WriteEquality(currentNode.Name, nameof(AppKit.NSView.AccessibilityHelp), help, inQuotes: !rendererService.CurrentRendererOptions.TranslateLabels); hasAccessibility = true; } if (hasAccessibility) { builder.AppendLine(); } } return(builder.ToString()); } return(string.Empty); }
public override string ConvertToCode(string propertyName, FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { if (currentNode.Node.Parent != null && propertyName == CodeProperties.AddChild) { var defaultParentName = GetDefaultParentName(currentNode, parentNode, rendererService); if (!string.IsNullOrEmpty(defaultParentName)) { return(CodeGenerationHelpers.GetMethod(defaultParentName, nameof(NSView.AddSubview), currentNode.Name)); } } return(base.ConvertToCode(propertyName, currentNode, parentNode, rendererService)); }
public ShowContentMethodCodeObject(List <FigmaFrame> figmaFrames, string name, string contentViewName, string enumTypeName, FigmaCodeNode parentNode, FigmaCodeRendererService figmaRendererService) : base(name) { MethodModifier = CodeObjectModifier.Public; argumentName = "content"; selectedContentName = "SelectedContent"; figmaFrameEntities = figmaFrames; this.rendererService = figmaRendererService; this.parentNode = parentNode; this.contentViewName = contentViewName; this.enumTypeName = enumTypeName; }
public override string ConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { StringBuilder builder = new StringBuilder(); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { builder.WriteConstructor(currentNode.Name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } builder.Configure(currentNode.Node, currentNode.Name); return(builder.ToString()); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } FigmaNode optionsGroup = frame.Options(); FigmaNode passwordNode = optionsGroup?.GetChildren() .OfType <FigmaNode>() .FirstOrDefault(s => s.name == ComponentString.PASSWORD && s.visible); if (passwordNode != null) { code.WriteEquality(name, nameof(NSSecureTextField.StringValue), ComponentString.PASSWORD, inQuotes: true); } FigmaText placeholderText = optionsGroup?.GetChildren(). OfType <FigmaText>(). FirstOrDefault(s => s.name == ComponentString.PLACEHOLDER && s.visible); if (placeholderText != null && !placeholderText.characters.Equals(ComponentString.PLACEHOLDER, StringComparison.InvariantCultureIgnoreCase)) { var stringLabel = NativeControlHelper.GetTranslatableString(placeholderText.characters, rendererService.CurrentRendererOptions.TranslateLabels); code.WriteEquality(name, nameof(NSTextField.PlaceholderString), stringLabel, true); } FigmaText text = frame.children. OfType <FigmaText> (). FirstOrDefault(s => s.name == ComponentString.TITLE && s.visible); if (text != null) { code.WriteEquality(name, nameof(NSTextField.Font), CocoaCodeHelpers.GetNSFontString(controlVariant, text, withWeight: false)); var stringLabel = NativeControlHelper.GetTranslatableString(text.characters, rendererService.CurrentRendererOptions.TranslateLabels); code.WriteEquality(name, nameof(NSTextField.StringValue), stringLabel, inQuotes: !rendererService.CurrentRendererOptions.TranslateLabels); } return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; frame.TryGetNativeControlType(out var controlType); frame.TryGetNativeControlVariant(out var controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteEquality(name, nameof(NSButton.ControlSize), CocoaHelpers.GetNSControlSize(controlVariant)); code.WriteEquality(name, nameof(NSSegmentedControl.Font), CocoaCodeHelpers.GetNSFontString(controlVariant)); FigmaNode items = frame.FirstChild(s => s.name == ComponentString.ITEMS); if (items != null) { code.WriteEquality(name, nameof(NSSegmentedControl.SegmentCount), "" + items.GetChildren(t => t.visible).Count()); code.WriteEquality(name, nameof(NSSegmentedControl.SegmentDistribution), NSSegmentDistribution.FillEqually); code.WriteEquality(name, nameof(NSSegmentedControl.SegmentStyle), NSSegmentStyle.Rounded); code.WriteEquality(name, nameof(NSSegmentedControl.SelectedSegment), "0"); code.WriteEquality(name, nameof(NSSegmentedControl.TrackingMode), NSSegmentSwitchTracking.SelectOne); code.AppendLine(); int i = 0; foreach (FigmaNode button in items.GetChildren(t => t.visible)) { FigmaNode state = button.FirstChild(s => s.visible && s.name.In(ComponentString.STATE_REGULAR, ComponentString.STATE_SELECTED)); if (state == null) { continue; } var text = (FigmaText)state.FirstChild(s => s.name == ComponentString.TITLE); code.WriteMethod(name, nameof(NSSegmentedControl.SetLabel), $"\"{ text.characters }\", { i }"); i++; } code.AppendLine(); } return(code); }
public override string ConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { StringBuilder builder = new StringBuilder(); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { builder.WriteConstructor(currentNode.Name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } builder.Configure(currentNode.Node, currentNode.Name); builder.AppendLine(string.Format("{0}.BoxType = {1};", currentNode.Name, NSBoxType.NSBoxSeparator.GetFullName())); return(builder.ToString()); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var builder = new StringBuilder(); var type = GetControlType(currentNode.Node); if (type != null) { if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { builder.WriteConstructor(currentNode.Name, type, !currentNode.Node.TryGetNodeCustomName(out var _)); } } return(builder); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { StringBuilder code = base.OnConvertToCode(currentNode, parentNode, rendererService); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; code.WriteEquality(name, nameof(NSSlider.SliderType), NSSliderType.Linear); if (frame.absoluteBoundingBox.Height > frame.absoluteBoundingBox.Width) { code.WriteEquality(name, nameof(NSSlider.IsVertical), "1", inQuotes: false); } return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } var itemNodes = frame.FirstChild(s => s.name == ComponentString.ITEMS); if (itemNodes == null) { return(null); } code.AppendLine(); code.AppendLine($"{ name }.{ nameof(NSTabView.SetItems) }("); code.AppendLine($"\tnew { typeof(NSTabViewItem[]) }"); code.AppendLine("\t{"); foreach (FigmaNode tabNode in itemNodes.GetChildren(t => t.visible, reverseChildren: true)) { var firstChild = tabNode.FirstChild(s => s.name.In(ComponentString.STATE_REGULAR, ComponentString.STATE_SELECTED) && s.visible); if (firstChild != null) { FigmaText text = firstChild.FirstChild(s => s.name == ComponentString.TITLE) as FigmaText; if (text != null) { code.AppendLine($"\t\tnew {typeof(NSTabViewItem)}() {{ {nameof(NSTabViewItem.Label)} = \"{text.characters}\" }},"); } } } code.AppendLine("\t}"); code.AppendLine(");"); return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService 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); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteEquality(name, nameof(NSButton.ControlSize), CocoaHelpers.GetNSControlSize(controlVariant)); return(code); }
public override string ConvertToCode(string propertyName, FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { if (propertyName == CodeProperties.AddChild) { if (parentNode != null) { return(CodeGenerationHelpers.GetMethod(parentNode.Name, nameof(AppKit.NSView.AddSubview), currentNode.Name)); } } if (propertyName == CodeProperties.Constraints) { } if (propertyName == CodeProperties.Frame) { } return(base.ConvertToCode(propertyName, currentNode, parentNode, rendererService)); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteEquality(name, nameof(NSButton.BezelStyle), NSBezelStyle.Rounded); if (controlType == NativeControlType.PopUpButtonPullDown) { code.WriteEquality(name, nameof(NSPopUpButton.PullsDown), true); } code.WriteEquality(name, nameof(NSButton.ControlSize), CocoaHelpers.GetNSControlSize(controlVariant)); code.WriteEquality(name, nameof(NSSegmentedControl.Font), CocoaCodeHelpers.GetNSFontString(controlVariant)); FigmaText text = frame.children .OfType <FigmaText>() .FirstOrDefault(s => s.name == ComponentString.TITLE); if (text != null && !string.IsNullOrEmpty(text.characters)) { var stringLabel = NativeControlHelper.GetTranslatableString(text.characters, rendererService.CurrentRendererOptions.TranslateLabels); code.WriteMethod(name, nameof(NSPopUpButton.AddItem), stringLabel, inQuotes: !rendererService.CurrentRendererOptions.TranslateLabels); } return(code); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteEquality(name, nameof(NSButton.ControlSize), CocoaHelpers.GetNSControlSize(controlVariant)); FigmaGroup group = frame.children .OfType <FigmaGroup>() .FirstOrDefault(s => (s.name == ComponentString.STYLE_DETERMINATE || s.name == ComponentString.STYLE_INDETERMINATE) && s.visible); if (group != null) { if (group.name == ComponentString.STYLE_DETERMINATE) { code.WriteEquality(name, nameof(NSProgressIndicator.Indeterminate), false); code.WriteEquality(name, nameof(NSProgressIndicator.MinValue), "0"); code.WriteEquality(name, nameof(NSProgressIndicator.MaxValue), "1"); code.WriteEquality(name, nameof(NSProgressIndicator.DoubleValue), "0.618"); } if (group.name == ComponentString.STYLE_INDETERMINATE) { code.WriteEquality(name, nameof(NSProgressIndicator.Indeterminate), true); } } return(code); }
public override string ConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var figmaText = (FigmaText)currentNode.Node; StringBuilder builder = new StringBuilder(); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { builder.WriteEquality(currentNode.Name, null, FigmaExtensions.CreateLabelToDesignerString(figmaText.characters), instanciate: true); } //builder.Configure(figmaText, currentNode.Name); builder.Configure(currentNode.Node, currentNode.Name); var alignment = FigmaExtensions.ToNSTextAlignment(figmaText.style.textAlignHorizontal); if (alignment != default) { builder.WriteEquality(currentNode.Name, nameof(AppKit.NSTextField.Alignment), alignment); } return(builder.ToString()); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteEquality(name, nameof(NSButton.ControlSize), CocoaHelpers.GetNSControlSize(controlVariant)); code.WriteEquality(name, nameof(NSSegmentedControl.Font), CocoaCodeHelpers.GetNSFontString(controlVariant)); FigmaText text = frame.children .OfType <FigmaText> () .FirstOrDefault(s => s.name == ComponentString.TITLE); if (text != null && !string.IsNullOrEmpty(text.characters)) { code.WriteEquality(name, nameof(NSButton.StringValue), text.characters, inQuotes: true); //string textLabel = NativeControlHelper.GetTranslatableString(text.characters, rendererService.CurrentRendererOptions.TranslateLabels); //if (!rendererService.CurrentRendererOptions.TranslateLabels) // textLabel = $"\"{textLabel}\""; //string nsstringcontructor = typeof (Foundation.NSString).GetConstructor (new[] { textLabel }); //code.WriteMethod (name, nameof (NSComboBox.Add), nsstringcontructor); } return(code); }
protected override string GetDefaultParentName(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { //component instance window case if (currentNode.Node.Parent.IsInstanceContent(rendererService.figmaProvider, out var figmaInstance)) { var viewName = figmaInstance.IsDialog() ? $"{CodeGenerationHelpers.This}.{nameof(NSWindow.ContentView)}" : CodeGenerationHelpers.This; return(viewName); } //window case if (currentNode.Node.Parent.IsWindowContent() || currentNode.Node.Parent.IsDialogParentContainer()) { var contentView = $"{CodeGenerationHelpers.This}.{nameof(NSWindow.ContentView)}"; return(contentView); } if (currentNode.Node.Parent.IsMainDocumentView()) { return(CodeGenerationHelpers.This); } return(null); }
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { var code = new StringBuilder(); string name = FigmaSharp.Resources.Ids.Conversion.NameIdentifier; var frame = (FigmaFrame)currentNode.Node; currentNode.Node.TryGetNativeControlType(out NativeControlType controlType); currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (rendererService.NeedsRenderConstructor(currentNode, parentNode)) { code.WriteConstructor(name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode)); } code.WriteEquality(name, nameof(NSButton.ControlSize), NSControlSize.Regular); FigmaGroup group = frame.children .OfType <FigmaGroup> () .FirstOrDefault(s => s.name.In(ComponentString.STATE_ON, ComponentString.STATE_OFF) && s.visible); if (group != null) { if (group.name == ComponentString.STATE_ON) { code.WriteEquality(name, nameof(NSSwitch.State), "1", inQuotes: false); } if (group.name == ComponentString.STATE_OFF) { code.WriteEquality(name, nameof(NSSwitch.State), "0", inQuotes: false); } } return(code); }
protected abstract StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService);
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 override string ConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService) { return(string.Empty); }
public abstract string ConvertToCode(string propertyName, FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService);