protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var slider = new NSSlider(); var frame = (FigmaFrame)currentNode; frame.TryGetNativeControlType(out var controlType); frame.TryGetNativeControlVariant(out var controlVariant); slider.ControlSize = ViewHelper.GetNSControlSize(controlVariant); slider.MinValue = 0; slider.MaxValue = 1; if (controlType == FigmaControlType.SliderLinear) { slider.DoubleValue = 0.618; } FigmaGroup group = frame.children .OfType <FigmaGroup>() .FirstOrDefault(s => s.visible); if (group?.name == ComponentString.STATE_DISABLED) { slider.Enabled = false; } return(new View(slider)); }
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.NodeProvider.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); }
protected abstract IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService);
public override void Configure(string propertyName, ViewNode currentViewNode, ViewNode parentViewNode, NodeConverter converter, ViewRenderService rendererService) { var currentNode = currentViewNode.Node; var parentNode = parentViewNode?.Node; if (propertyName == PropertyNames.AddChild) { if (parentViewNode?.View != null) { if (parentNode.IsStackView() && parentViewNode.View.NativeObject is AppKit.NSStackView stackView) { stackView.AddArrangedSubview(currentViewNode.View.NativeObject as NSView); } else { parentViewNode.View.AddChild(currentViewNode.View); } } return; } if (propertyName == PropertyNames.Constraints) { if (!rendererService.HasConstraints(currentNode, converter)) { return; } if (currentNode is IConstraints constrainedNode && currentViewNode?.View?.NativeObject is AppKit.NSView nativeView && parentViewNode?.View?.NativeObject is AppKit.NSView parentNativeView) { var constraints = constrainedNode.constraints; var absoluteBoundingBox = ((IAbsoluteBoundingBox)currentNode) .absoluteBoundingBox; var absoluteBoundBoxParent = ((IAbsoluteBoundingBox)parentNode) .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 rightConstraint = nativeView.RightAnchor.ConstraintEqualToAnchor(parentNativeView.RightAnchor, -value); rightConstraint.Active = true; } if (constraints.horizontal.Contains("LEFT")) { var value2 = absoluteBoundingBox.X - absoluteBoundBoxParent.X; nativeView.LeftAnchor.ConstraintEqualToAnchor(parentNativeView.LeftAnchor, value2) .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 bottomConstraint = nativeView.BottomAnchor.ConstraintEqualToAnchor(parentNativeView.BottomAnchor, -value2); bottomConstraint.Active = true; } if (constraints.vertical.Contains("TOP")) { var value = absoluteBoundingBox.Y - absoluteBoundBoxParent.Y; nativeView.TopAnchor.ConstraintEqualToAnchor(parentNativeView.TopAnchor, value) .Active = true; } if (constraints.horizontal == "CENTER" || constraints.horizontal == "SCALE") { var delta = absoluteBoundingBox.X - absoluteBoundBoxParent.X - absoluteBoundBoxParent.Center.X; nativeView.LeftAnchor.ConstraintEqualToAnchor(parentNativeView.CenterXAnchor, delta) .Active = true; } if (constraints.vertical == "CENTER" || constraints.vertical == "SCALE") { var delta = absoluteBoundingBox.Y - absoluteBoundBoxParent.Y - absoluteBoundBoxParent.Center.Y; //var delta = absoluteBoundBoxParent.Center.Substract(absoluteBoundingBox.Origin).Y; var test = nativeView.TopAnchor.ConstraintEqualToAnchor(parentNativeView.CenterYAnchor, delta); test.Active = true; } } return; } if (propertyName == PropertyNames.Frame) { if (currentNode is IAbsoluteBoundingBox absoluteBounding) { if (!rendererService.HasConstraints(currentNode, converter)) { return; } var nativeView = currentViewNode?.View?.NativeObject as AppKit.NSView; if (rendererService.HasWidthConstraint(currentNode, converter)) { var widthConstraint = nativeView.WidthAnchor.ConstraintEqualToConstant(Math.Max(absoluteBounding.absoluteBoundingBox.Width, 1)); if (rendererService.IsFlexibleHorizontal(currentViewNode, converter)) { widthConstraint.Priority = (float)NSLayoutPriority.DefaultLow; } widthConstraint.Active = true; } if (rendererService.HasHeightConstraint(currentNode, converter)) { var heightConstraint = nativeView.HeightAnchor.ConstraintEqualToConstant(Math.Max(absoluteBounding.absoluteBoundingBox.Height, 1)); if (rendererService.IsFlexibleVertical(currentViewNode, converter)) { heightConstraint.Priority = (float)NSLayoutPriority.DefaultLow; } heightConstraint.Active = true; } } return; } }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var segmentedControl = new NSSegmentedControl(); var frame = (FigmaFrame)currentNode; frame.TryGetNativeControlType(out var controlType); frame.TryGetNativeControlVariant(out var controlVariant); segmentedControl.ControlSize = ViewHelper.GetNSControlSize(controlVariant); segmentedControl.Font = ViewHelper.GetNSFont(controlVariant); FigmaNode items = frame.FirstChild(s => s.name == ComponentString.ITEMS); if (items != null) { segmentedControl.SegmentCount = items.GetChildren(t => t.visible).Count(); if (controlType == FigmaControlType.SegmentedControlRoundRect) { segmentedControl.SegmentStyle = NSSegmentStyle.RoundRect; } else { segmentedControl.SegmentStyle = NSSegmentStyle.Rounded; } 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); segmentedControl.SetLabel(rendererService.GetTranslatedText(text), i); segmentedControl.SetSelected(selected: state.name == ComponentString.STATE_SELECTED, i); i++; } bool hasSelection = (segmentedControl.SelectedSegment > -1); // Use tab-like behaviour if there is a selected item. Otherwise use the button-like behaviour if (hasSelection) { segmentedControl.TrackingMode = NSSegmentSwitchTracking.SelectOne; segmentedControl.SegmentDistribution = NSSegmentDistribution.Fill; } else { segmentedControl.TrackingMode = NSSegmentSwitchTracking.Momentary; segmentedControl.SegmentDistribution = NSSegmentDistribution.FillEqually; } } return(new View(segmentedControl)); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var frame = (FigmaFrame)currentNode; var checkBox = new NSButton(); checkBox.SetButtonType(NSButtonType.Switch); FigmaText text = frame.children .OfType <FigmaText>() .FirstOrDefault(s => s.name == ComponentString.TITLE); if (text != null) { checkBox.Title = text.characters; } frame.TryGetNativeControlVariant(out var controlVariant); checkBox.ControlSize = ViewHelper.GetNSControlSize(controlVariant); checkBox.Font = ViewHelper.GetNSFont(controlVariant, text); 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) { checkBox.State = NSCellStateValue.On; } if (group.name == ComponentString.STATE_OFF) { checkBox.State = NSCellStateValue.Off; } if (group.name == ComponentString.STATE_MIXED) { checkBox.AllowsMixedState = true; checkBox.State = NSCellStateValue.Mixed; } } return(new View(checkBox)); }
public AnswerGroupController(ApplicationDbContext context, DataService dataService, ViewRenderService viewRenderService, Services.Configuration configurationService, IWebHostEnvironment hostingEnvironment) { _context = context; _dataService = dataService; _viewRenderService = viewRenderService; _configuration = configurationService; _hostingEnvironment = hostingEnvironment; }
public UrsController(ILogger <UrsController> logger, ViewRenderService viewRender) : base(logger) { this._viewRender = viewRender; }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var colorWell = new NSColorWell(); var frame = (FigmaFrame)currentNode; FigmaVector rectangle = frame.children .OfType <FigmaVector>() .FirstOrDefault(s => s.name == ComponentString.VALUE); foreach (var styleMap in rectangle?.styles) { if (rendererService.FileProvider.TryGetStyle(styleMap.Value, out FigmaStyle style)) { if (styleMap.Key == "fill") { colorWell.Color = ColorService.GetNSColor(style.name); } } } return(new View(colorWell)); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { return(null); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var stepper = new NSStepper(); var frame = (FigmaFrame)currentNode; frame.TryGetNativeControlVariant(out var controlVariant); stepper.ControlSize = ViewHelper.GetNSControlSize(controlVariant); return(new View(stepper)); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var frame = (FigmaFrame)currentNode; frame.TryGetNativeControlVariant(out var controlVariant); frame.TryGetNativeControlType(out var controlType); var popUp = new NSPopUpButton(); if (controlType == FigmaControlType.PopUpButtonPullDown) { popUp.PullsDown = true; } popUp.ControlSize = ViewHelper.GetNSControlSize(controlVariant); popUp.Font = ViewHelper.GetNSFont(controlVariant); FigmaText text = frame.children .OfType <FigmaText>() .FirstOrDefault(s => s.name == ComponentString.TITLE); if (text != null) { popUp.AddItem(text.characters); } return(new View(popUp)); }
public override void Configure(string propertyName, IView view, FigmaNode currentNode, IView parent, FigmaNode parentNode, ViewRenderService rendererService) { if (propertyName == PropertyNames.AddChild) { parent?.AddChild(view); return; } if (propertyName == PropertyNames.Constraints) { if (currentNode is IConstraints constrainedNode && view.NativeObject is BindableObject && parent.NativeObject is BindableObject parentNativeView) { float x = 0, y = 0; var constraints = constrainedNode.constraints; var absoluteBoundingBox = ((IAbsoluteBoundingBox)currentNode) .absoluteBoundingBox; var absoluteBoundBoxParent = ((IAbsoluteBoundingBox)parentNode) .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 rightConstraint = nativeView.RightAnchor.ConstraintEqualToAnchor(parentNativeView.RightAnchor, -value); // rightConstraint.Active = true; //} //if (constraints.horizontal.Contains("LEFT")) //{ x = Math.Max((absoluteBoundingBox.X - absoluteBoundBoxParent.X), 0); //} //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 bottomConstraint = nativeView.BottomAnchor.ConstraintEqualToAnchor(parentNativeView.BottomAnchor, -value2); // bottomConstraint.Active = true; //} //if (constraints.vertical.Contains("TOP")) //{ y = Math.Max((absoluteBoundingBox.Y - absoluteBoundBoxParent.Y), 0); //} //if (constraints.horizontal == "CENTER" || constraints.horizontal == "SCALE") //{ // var delta = absoluteBoundingBox.X - absoluteBoundBoxParent.X - absoluteBoundBoxParent.Center.X; // nativeView.LeftAnchor.ConstraintEqualToAnchor(parentNativeView.CenterXAnchor, delta) // .Active = true; //} //if (constraints.vertical == "CENTER" || constraints.vertical == "SCALE") //{ // var delta = absoluteBoundingBox.Y - absoluteBoundBoxParent.Y - absoluteBoundBoxParent.Center.Y; // //var delta = absoluteBoundBoxParent.Center.Substract(absoluteBoundingBox.Origin).Y; // var test = nativeView.TopAnchor.ConstraintEqualToAnchor(parentNativeView.CenterYAnchor, delta); // test.Active = true; //} AbsoluteLayout.SetLayoutBounds(view.NativeObject as BindableObject, new Xamarin.Forms.Rectangle(x, y, absoluteBoundingBox.Width, absoluteBoundingBox.Height)); } return; } if (propertyName == PropertyNames.Frame) { if (currentNode is IAbsoluteBoundingBox container) { } return; } }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { throw new NotImplementedException(); }
public override IView ConvertToView(FigmaNode currentNode, ViewNode parent, ViewRenderService rendererService) { var spinner = new ProgressBar(); return(spinner); }
public PageChangesetRenderer(IHtmlHelper html, ViewRenderService viewRenderer, IUrlHelper url) { _html = html; _viewRenderer = viewRenderer; _url = url; }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var segmentedControl = new NSSegmentedControl(); var frame = (FigmaFrame)currentNode; frame.TryGetNativeControlType(out var controlType); frame.TryGetNativeControlVariant(out var controlVariant); segmentedControl.ControlSize = ViewHelper.GetNSControlSize(controlVariant); segmentedControl.Font = ViewHelper.GetNSFont(controlVariant); FigmaNode items = frame.FirstChild(s => s.name == ComponentString.ITEMS); if (items != null) { segmentedControl.SegmentCount = items.GetChildren(t => t.visible).Count(); segmentedControl.SegmentDistribution = NSSegmentDistribution.FillEqually; segmentedControl.SegmentStyle = NSSegmentStyle.Rounded; segmentedControl.SelectedSegment = 0; 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); segmentedControl.SetLabel(rendererService.GetTranslatedText(text), i); i++; } } segmentedControl.TrackingMode = NSSegmentSwitchTracking.SelectOne; return(new View(segmentedControl)); }
public FigmaDesignerSession(INodeProvider figmaFileProvider, ViewRenderService figmaViewRendererService, StoryboardLayoutManager figmaViewRendererDistributionService) { fileProvider = figmaFileProvider; rendererService = figmaViewRendererService; distributionService = figmaViewRendererDistributionService; }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var label = new NSTextField(); label.Editable = false; label.DrawsBackground = false; label.Bordered = false; label.PreferredMaxLayoutWidth = 1; var frame = (FigmaFrame)currentNode; FigmaText text = frame.children .OfType <FigmaText>() .FirstOrDefault(s => s.name == ComponentString.TITLE); currentNode.TryGetNativeControlType(out FigmaControlType controlType); currentNode.TryGetNativeControlVariant(out NativeControlVariant controlVariant); if (text != null) { label.StringValue = rendererService.GetTranslatedText(text); label.Alignment = ViewHelper.GetNSTextAlignment(text); label.Font = ViewHelper.GetNSFont(controlVariant, text); } if (controlType == FigmaControlType.LabelHeader) { label.Font = NSFont.SystemFontOfSize(headerFontSize, ViewHelper.GetNSFontWeight(text)); } if (text?.styles != null) { foreach (var styleMap in text.styles) { if (rendererService.NodeProvider.TryGetStyle(styleMap.Value, out FigmaStyle style)) { if (styleMap.Key == "fill") { label.TextColor = ColorService.GetNSColor(style.name); } } } } return(new View(label)); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var frame = (FigmaFrame)currentNode; var disclosureView = new NSView(); /* TODO * var subView = new NSView(disclosureView.Bounds); * subView.WantsLayer = true; * subView.Layer.BackgroundColor = NSColor.Red.CGColor; * * * var disclosureTriangle = new NSButton(); * disclosureTriangle.SetFrameSize(new CoreGraphics.CGSize(130, 13)); * disclosureTriangle.SetButtonType(NSButtonType.PushOnPushOff); * disclosureTriangle.BezelStyle = NSBezelStyle.Disclosure; * * disclosureTriangle.Activated += delegate { * * // disclosureTriangle.State = NSCellStateValue.Off; * * }; * * * disclosureView.AddSubview(disclosureTriangle); * disclosureView.AddSubview(subView); * * * disclosureTriangle.LeftAnchor.ConstraintEqualToAnchor(disclosureView.LeftAnchor, 8) * .Active = true; * * disclosureTriangle.TopAnchor.ConstraintEqualToAnchor(disclosureView.TopAnchor, 8) * .Active = true; */ return(new View(disclosureView)); }
public async Task <IActionResult> RenderCustomView([FromServices] IHostingEnvironment env, [FromServices] ViewRenderService viewRender) { ViewData["Type"] = 2; string result = await viewRender.RenderAsync("~/CustomViews/CustomTestView.cshtml", new TestViewModel { Title = "Test view" }, ViewData, true); return(Content(result)); }
public ResultsController(ViewRenderService viewRenderService) { _viewRenderService = viewRenderService; }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var frame = (FigmaFrame)currentNode; frame.TryGetNativeControlType(out var controlType); var scrollView = new NSScrollView(); var textView = new NSTextView( new CoreGraphics.CGRect(0, 0, scrollView.ContentSize.Width, scrollView.ContentSize.Height)); textView.Font = NSFont.SystemFontOfSize(NSFont.SystemFontSize); textView.AutoresizingMask = NSViewResizingMask.WidthSizable; textView.TextContainer.Size = new CoreGraphics.CGSize(scrollView.ContentSize.Width, float.MaxValue); var texts = frame.children.OfType <FigmaText>(); FigmaText text = texts.FirstOrDefault(s => s.name == "lbl" && s.visible); if (text != null) { textView.Value = rendererService.GetTranslatedText(text.characters); // TODO: text styling // textView.TextStorage.Append(new Foundation.NSAttributedString(""), null); } scrollView.BorderType = NSBorderType.LineBorder; scrollView.HasHorizontalScroller = false; scrollView.HasVerticalScroller = true; scrollView.DocumentView = textView; frame.TryGetNativeControlVariant(out var controlVariant); if (controlVariant == NativeControlVariant.Small) { textView.Font = NSFont.SystemFontOfSize(NSFont.SmallSystemFontSize); } return(new View(scrollView)); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var frame = (FigmaFrame)currentNode; var box = new NSBox(); currentNode.TryGetNativeControlType(out FigmaControlType controlType); if (controlType == FigmaControlType.Separator) { box.BoxType = NSBoxType.NSBoxSeparator; } if (controlType == FigmaControlType.BoxCustom) { box.BoxType = NSBoxType.NSBoxCustom; box.BorderWidth = 0; RectangleVector rectangle = frame.children .OfType <RectangleVector>() .FirstOrDefault(); if (rectangle != null) { if (rectangle.styles != null) { foreach (var styleMap in rectangle.styles) { if (rendererService.NodeProvider.TryGetStyle(styleMap.Value, out FigmaStyle style)) { if (styleMap.Key == "fill") { box.FillColor = ColorService.GetNSColor(style.name); } if (styleMap.Key == "stroke") { box.BorderColor = ColorService.GetNSColor(style.name); box.BorderWidth = rectangle.strokeWeight; } } } } box.CornerRadius = rectangle.cornerRadius; } } if (controlType == FigmaControlType.Box) { FigmaText text = frame.children .OfType <FigmaText>() .FirstOrDefault(s => (s.name == ComponentString.TITLE && s.visible)); if (text != null) { box.Title = rendererService.GetTranslatedText(text); } else { box.Title = string.Empty; } } return(new View(box)); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var textField = new NSTextField(); var frame = (FigmaFrame)currentNode; frame.TryGetNativeControlType(out var controlType); frame.TryGetNativeControlVariant(out var controlVariant); if (controlType == FigmaControlType.SearchField) { textField = new NSSearchField(); } FigmaNode optionsGroup = frame.Options(); FigmaNode passwordNode = optionsGroup?.GetChildren() .OfType <FigmaNode>() .FirstOrDefault(s => s.name == ComponentString.PASSWORD && s.visible); if (passwordNode != null) { textField = new NSSecureTextField(); textField.StringValue = "Password"; } FigmaText placeholderText = optionsGroup?.GetChildren() .OfType <FigmaText>() .FirstOrDefault(s => s.name == ComponentString.PLACEHOLDER && s.visible); if (placeholderText != null && !placeholderText.characters.Equals(ComponentString.PLACEHOLDER, StringComparison.InvariantCultureIgnoreCase)) { textField.PlaceholderString = rendererService.GetTranslatedText(placeholderText); } FigmaText text = frame.children .OfType <FigmaText> () .FirstOrDefault(s => s.name == ComponentString.TITLE && s.visible); if (text != null) { textField.Alignment = ViewHelper.GetNSTextAlignment(text); textField.StringValue = rendererService.GetTranslatedText(text); } textField.ControlSize = ViewHelper.GetNSControlSize(controlVariant); textField.Font = ViewHelper.GetNSFont(controlVariant); return(new View(textField)); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { IView view = base.OnConvertToView(currentNode, parentNode, rendererService); (view.NativeObject as NSProgressIndicator).Style = NSProgressIndicatorStyle.Bar; return(view); }
public override IView ConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var frame = (FigmaFrame)currentNode; var nativeView = new FakeSheetView(); var view = new View(nativeView); nativeView.Configure(frame); /* TODO: Create a base FakeView class with common elements * nativeView.LiveButton.Activated += (s, e) => { * if (nativeView.Window == null) * return; * * var window = new Window(view.Allocation); * * window.KeyDown += (send, eve) => { * NSApplication.SharedApplication.EndSheet((NSWindow)window.NativeObject); * window.Close(); * }; * * newWindowProvider.Load(rendererService.FileProvider.File); * var secondaryRender = new NativeViewRenderingService(newWindowProvider); * ////we want to include some special converters to handle windows like normal view containers * //rendererService.CustomConverters.Add(new EmbededSheetDialogConverter()); * //rendererService.CustomConverters.Add(new EmbededWindowConverter()); * secondaryRender.RenderInWindow(window, currentNode); * NSApplication.SharedApplication.BeginSheet((NSWindow)window.NativeObject, nativeView.Window); * }; */ return(view); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var frame = (FigmaFrame)currentNode; var progressIndicator = new NSProgressIndicator(); progressIndicator.Configure(frame); frame.TryGetNativeControlType(out var controlType); frame.TryGetNativeControlVariant(out var controlVariant); progressIndicator.ControlSize = ViewHelper.GetNSControlSize(controlVariant); FigmaGroup group = frame.children .OfType <FigmaGroup>() .FirstOrDefault(s => (s.name == ComponentString.STYLE_DETERMINATE || s.name == ComponentString.STYLE_INDETERMINATE) && s.visible); if (group?.name == ComponentString.STYLE_DETERMINATE) { progressIndicator.Indeterminate = false; progressIndicator.MinValue = 0; progressIndicator.MaxValue = 1; progressIndicator.DoubleValue = 0.618; } if (group.name == ComponentString.STYLE_INDETERMINATE) { progressIndicator.Indeterminate = true; } return(new View(progressIndicator)); }
public override IView ConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { var converted = OnConvertToView(currentNode, parentNode, rendererService); if (converted != null) { var nativeView = converted.NativeObject as AppKit.NSView; if (!currentNode.visible) { nativeView.Hidden = true; } if (currentNode.IsA11Group()) { nativeView.AccessibilityRole = AppKit.NSAccessibilityRoles.GroupRole; } //label if (currentNode.TrySearchA11Label(out var label)) { try { nativeView.AccessibilityTitle = label; } catch (Exception) { nativeView.AccessibilityLabel = label; } } //help if (currentNode.TrySearchA11Help(out var help)) { nativeView.AccessibilityHelp = help; } } return(converted); }
protected override IView OnConvertToView(FigmaNode currentNode, ViewNode parentNode, ViewRenderService rendererService) { IView view = base.OnConvertToView(currentNode, parentNode, rendererService); (view.NativeObject as NSSlider).SliderType = NSSliderType.Circular; return(view); }