/*public override bool HasUnautosavedChanges { * get { * return false; * } * } * * public override bool IsDocumentEdited { * get { * return false; * } * }*/ partial void BackForwardAction(NSSegmentedControl sender) { var selected = sender.SelectedSegment; if (selected == 0) { LoadNote(history[--currentHistoryPosition], false); } else { LoadNote(history[++currentHistoryPosition], false); } sender.SetSelected(false, 0); sender.SetSelected(false, 1); UpdateBackForwardSensitivity(); }
void UpdateToolbarSegmentedControl() { var childViewControllers = ChildViewControllers; ToolbarSegmentedControl.Hidden = childViewControllers.Length < 2; ToolbarSegmentedControl.SegmentCount = childViewControllers.Length; for (var i = 0; i < childViewControllers.Length; i++) { var childViewController = childViewControllers [i]; var item = GetTabViewItem(childViewController); if (item.Image != null) { ToolbarSegmentedControl.SetImage(item.Image, i); } else { ToolbarSegmentedControl.SetLabel(item.Label, i); } if (item.ToolTip != null) { ToolbarSegmentedControl.Cell.SetToolTip(item.ToolTip, i); } if (TabView?.Selected?.ViewController == childViewController) { ToolbarSegmentedControl.SetSelected(true, i); } } ToolbarSegmentedControl.SizeToFit(); var controlSize = ToolbarSegmentedControl.Frame.Size; var toolbarItems = View?.Window?.Toolbar?.VisibleItems; for (var i = 0; toolbarItems != null && i < toolbarItems.Length; i++) { var item = toolbarItems [i]; if (item.View == ToolbarSegmentedControl) { item.MinSize = controlSize; item.MaxSize = controlSize; } } }
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)); }