protected abstract IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService);
public override Type GetControlType(FigmaNode currentNode) => typeof(Xamarin.Forms.View);
public override bool ScanChildren(FigmaNode currentNode) => false;
public override bool CanConvert(FigmaNode currentNode) { return(currentNode.name == LoadingSpinnerName); }
public override bool CanConvert(FigmaNode currentNode) { return(currentNode.GetType() == typeof(FigmaRegularPolygon)); }
internal static bool HasNodeImageName(this FigmaNode node) => node.GetNodeTypeName() == imageNodeName;
public override bool CanConvert(FigmaNode currentNode) { return(currentNode.GetType() == typeof(FigmaLine) || (currentNode.type == "VECTOR" && currentNode.name == "sep")); }
public static FigmaInstance GetBaseComponentNode(this NodeProvider fileProvider, FigmaNode node) { var figmaInstance = node.GetDialogInstanceFromParentContainer(); if (figmaInstance != null) { foreach (var item in fileProvider.GetMainLayers()) { var instance = item.GetDialogInstanceFromParentContainer(); if (instance != null && instance.id == figmaInstance.id) { return(instance); } } } return(null); }
public override IView ConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { string title = ""; var frame = (FigmaFrame)currentNode; var nativeView = new FakeWindowView(title); nativeView.LiveButtonAlwaysVisible = LiveButtonAlwaysVisible; nativeView.Configure(currentNode); var view = new View(nativeView); var windowComponent = currentNode.GetDialogInstanceFromParentContainer(); if (windowComponent != null) { var optionsNode = windowComponent.Options(); if (optionsNode is IFigmaNodeContainer figmaNodeContainer) { nativeView.CloseButtonHidden = (figmaNodeContainer.HasChildrenVisible("close") == false); nativeView.MinButtonHidden = (figmaNodeContainer.HasChildrenVisible("min") == false); nativeView.MaxButtonHidden = (figmaNodeContainer.HasChildrenVisible("max") == false); var titleText = (FigmaText)optionsNode.GetChildren().FirstOrDefault(s => s.name == "title" && s.visible); if (titleText != null) { nativeView.Title = titleText.characters; } } } nativeView.LiveButton.Activated += async(s, e) => { var window = new Window(view.Allocation); LivePreviewLoading?.Invoke(this, EventArgs.Empty); await newWindowProvider.LoadAsync(rendererService.FileProvider.File); var secondaryRender = new ControlViewRenderingService(newWindowProvider); var options = new ViewRenderServiceOptions() { GenerateMainView = false }; secondaryRender.RenderInWindow(window, currentNode, options); var mainNodes = currentNode.GetChildren() .ToArray(); ViewNode[] processedNodes = secondaryRender.GetProcessedNodes(mainNodes); var layoutManager = new StoryboardLayoutManager() { UsesConstraints = true }; layoutManager.Run(processedNodes, window.Content, secondaryRender); var nativeWindow = (NSWindow)window.NativeObject; nativeWindow.Appearance = nativeView.EffectiveAppearance; nativeWindow.ContentMinSize = nativeWindow.ContentView.Frame.Size; nativeWindow.Center(); nativeWindow.MakeKeyAndOrderFront(null); LivePreviewLoaded?.Invoke(this, EventArgs.Empty); }; return(view); }
public override bool CanConvert(FigmaNode currentNode) => currentNode.name == "WhySignInLink";
public override System.Type GetControlType(FigmaNode currentNode) => typeof(AppKit.NSView);
public override Type GetControlType(FigmaNode currentNode) => typeof(NSComboBox);
public override bool CanConvert(FigmaNode currentNode) { return(currentNode.GetType() == typeof(FigmaVectorEntity)); }
public IView GetViewWrapper(FigmaNode e) { var processed = ProcessedNodes.FirstOrDefault(s => s.Node == e); return(processed?.View); }
public override bool CanConvert(FigmaNode currentNode) => currentNode.name == SearchFilterId;
public override bool CanConvert(FigmaNode currentNode) { return(currentNode.IsDialogParentContainer(FigmaControlType.WindowSheet)); }
public override bool CanConvert(FigmaNode currentNode) => currentNode.name.EndsWith("NavigationMenuButton", System.StringComparison.Ordinal);
public bool IsMainNode(FigmaNode figmaNode) => MainNode != null && figmaNode == MainNode?.Node;
internal static bool HasThemedTitle(this FigmaNode node) => node.TryGetAttributeValue(themeNodeName, out _);
public override string ConvertToCode(FigmaNode currentNode) { return(string.Empty); }
public override bool ScanChildren(FigmaNode currentNode) { return(false); }
public override Type GetControlType(FigmaNode currentNode) => typeof(CanvasImage);
public override string ConvertToCode(FigmaNode currentNode, FigmaCodeRendererService rendererService) { return(string.Empty); }
public override bool CanConvert(FigmaNode currentNode) { return(currentNode.TryGetNativeControlType(out var controlType) && controlType == FigmaControlType.CheckBox); }
public override bool CanConvert(FigmaNode currentNode) { return(currentNode.TryGetNativeControlType(out var controlType) && controlType == FigmaControlType.DisclosureView); }
internal virtual bool HasHeightConstraint(FigmaNode currentNode, NodeConverter converter) { return(converter.HasHeightConstraint()); }
public override Type GetControlType(FigmaNode currentNode) => typeof(NSView);
public override IView ConvertTo(FigmaNode currentNode, ProcessedNode parent, FigmaRendererService rendererService) { var figmaInstance = (FigmaInstance)currentNode; var button = new Button(); var view = (NSButton)button.NativeObject; view.Title = ""; view.BezelStyle = NSBezelStyle.Rounded; button.Size = new Size(figmaInstance.absoluteBoundingBox.Width, 30); var controlType = figmaInstance.ToControlType(); switch (controlType) { case NativeControlType.ButtonLarge: case NativeControlType.ButtonLargeDark: view.ControlSize = NSControlSize.Regular; break; case NativeControlType.ButtonStandard: case NativeControlType.ButtonStandardDark: view.ControlSize = NSControlSize.Regular; break; case NativeControlType.ButtonSmall: case NativeControlType.ButtonSmallDark: view.ControlSize = NSControlSize.Small; break; } //first figma var group = figmaInstance.children .OfType <FigmaGroup>() .FirstOrDefault(s => s.visible); if (group != null) { var label = group.children .OfType <FigmaText>() .FirstOrDefault(); if (label != null) { button.Text = label.characters; view.Font = label.style.ToNSFont(); } if (group.name == "Disabled") { button.Enabled = false; } } else { var label = figmaInstance.children .OfType <FigmaText>() .FirstOrDefault(); if (label != null) { button.Text = label.characters; view.Font = label.style.ToNSFont(); } } if (controlType.ToString().EndsWith("Dark", StringComparison.Ordinal)) { view.Appearance = NSAppearance.GetAppearance(NSAppearance.NameDarkAqua); } return(button); }
public override bool CanConvert(FigmaNode currentNode) => false;
public override IViewWrapper ConvertTo(FigmaNode currentNode, ProcessedNode parent) { var view = new UIButton(); view.Configure(currentNode); //if (currentNode is IFigmaDocumentContainer documentContainer) //{ // view.BackgroundColor = documentContainer.backgroundColor.ToUIColor(); // var figmaText = documentContainer.children.OfType<FigmaText>().FirstOrDefault(); // if (figmaText != null) // { // view.Alpha = figmaText.opacity; // view.Font = figmaText.style.ToUIFont(); // view.SetTitle(figmaText.characters, UIControlState.Normal); // } // return new ViewWrapper(view); //} var keyValues = GetKeyValues(currentNode); foreach (var key in keyValues) { if (key.Key == "type") { continue; } if (key.Key == "enabled") { view.Enabled = key.Value == "true"; } else if (key.Key == "size") { // view. = ToEnum<NSControlSize>(key.Value); } else if (key.Key == "style") { //view.sth = ToEnum<NSBezelStyle>(key.Value); } else if (key.Key == "buttontype") { //view.ButtonType = UIButtonType. (ToEnum<NSButtonType>(key.Value)); } } if (currentNode is IFigmaDocumentContainer instance) { var figmaText = instance.children.OfType <FigmaText>().FirstOrDefault(s => s.name == "title"); if (figmaText != null) { view.Alpha = figmaText.opacity; view.Font = figmaText.style.ToUIFont(); view.SetTitle(figmaText.characters, UIControlState.Normal); } var image = instance.children.OfType <FigmaVectorEntity>().FirstOrDefault(s => s.name == "image"); if (image != null) { var paint = image.fills.OfType <FigmaPaint>().FirstOrDefault(); if (paint != null) { //var query = new FigmaImageQuery () //FigmaApiHelper.GetFigmaImage (new FigmaImageQuery ()) } } } return(new ViewWrapper(view)); }