public void SetToolbarBreadCrumbs() { m_Breadcrumbs.Clear(); var allHierarchyDocuments = new List <BuilderDocumentOpenUXML>(); var allOpenDocuments = m_PaneWindow.document.openUXMLFiles; foreach (var Doc in allOpenDocuments) { if (Doc.openSubDocumentParentIndex > -1 || allOpenDocuments.IndexOf(Doc) == 0) { allHierarchyDocuments.Add(Doc); } } if (allHierarchyDocuments.Count == 1) { m_BreadcrumbsToolbar.style.display = DisplayStyle.None; return; } m_BreadcrumbsToolbar.style.display = DisplayStyle.Flex; foreach (var Doc in allHierarchyDocuments) { string docName = BreadcrumbFileName(Doc); Action onBreadCrumbClick = () => { document.GoToSubdocument(m_Viewport.documentRootElement, m_PaneWindow, Doc); m_Viewport.SetViewFromDocumentSetting(); }; bool clickedOnSameDocument = document.activeOpenUXMLFile == Doc; m_Breadcrumbs.PushItem(docName, clickedOnSameDocument ? null : onBreadCrumbClick); } }
void BuildBreadCrumbs(string contentName) { m_Breadcrumbs.Clear(); List <string> contentTitles = new List <string>(); for (var c = contentName; m_Parents.TryGetValue(c, out var parent); c = parent) { contentTitles.Add(parent); } foreach (string title in Enumerable.Reverse(contentTitles)) { m_Breadcrumbs.PushItem(title, () => LoadContentByName(title)); } m_Breadcrumbs.PushItem(contentName); }
void UpdateParentView() { var container = new VisualElement(); var headerLabel = new Label("Parent Hierarchy"); headerLabel.AddToClassList("Header"); container.Add(headerLabel); // Create a hierarchy queue Queue <Object> parents = new Queue <Object>(); MixtureVariant currentVariant = variant.parentVariant; while (currentVariant != null) { parents.Enqueue(currentVariant); currentVariant = currentVariant.parentVariant; } parents.Enqueue(graph); // UIElements breadcrumbs bar var parentBar = new ToolbarBreadcrumbs(); parentBar.AddToClassList("Indent"); parentBar.AddToClassList("VariantBreadcrumbs"); foreach (var obj in parents.Reverse()) { var v = obj as MixtureVariant; var g = obj as MixtureGraph; parentBar.PushItem(obj.name, () => { Selection.activeObject = v?.mainOutputTexture ?? g?.mainOutputTexture ?? obj; }); } // Add new variant button: parentBar.PushItem("+", () => { MixtureAssetCallbacks.CreateMixtureVariant(null, variant); }); container.Add(parentBar); root.Add(container); }
private void PopulateNextBreadcrumb() { if (m_availableBreadcrumbs.Count == 0) { return; } m_currentBreadcrumbs.Push(m_availableBreadcrumbs.Pop()); if (m_availableBreadcrumbs.Count == 0) { ChangeNextButtonText("Create Character and post to heierarchy"); } BreadcrumbData currentBC = m_currentBreadcrumbs.Peek(); m_breadcrums.PushItem(currentBC.Label, currentBC.Callback); }
public static void CreateOrUpdateItem(this ToolbarBreadcrumbs breadcrumbs, int index, string itemLabel, Action clickedEvent) { if (index >= breadcrumbs.childCount) { breadcrumbs.PushItem(itemLabel, clickedEvent); } else { if (breadcrumbs.ElementAt(index) is ToolbarButton item) { item.text = itemLabel; item.ChangeClickEvent(clickedEvent); } else { Debug.LogError("Trying to update an element that is not a ToolbarButton"); } } }
public static void CreateOrUpdateItem(this ToolbarBreadcrumbs breadcrumbs, int index, string itemLabel, Action <int> clickedEvent) { if (index >= breadcrumbs.childCount) { breadcrumbs.PushItem(itemLabel, () => { int i = index; clickedEvent?.Invoke(i); }); } else { if (breadcrumbs.ElementAt(index) is ToolbarButton item) { item.text = itemLabel; } else { Debug.LogError("Trying to update an element that is not a ToolbarButton"); } } }
internal void Load(IGraphAsset asset, bool nested = false) { if (asset == null) { return; } _view.Save(); if (!nested) { _graphs.Clear(); while (_toolbarBreadcrumbs.childCount > 0) { _toolbarBreadcrumbs.PopItem(); } } _current = asset; _graphs.Push(asset); int lastIndex = _graphs.Count; _toolbarBreadcrumbs.PushItem(_current.name, () => { HandleBreadcrumbClick(lastIndex); }); LoadCurrent(); }
public void SetFrame(ExpressionUI instance) { Messages.Clear(); if (instance != _activeContent) { _history.Push(instance); _breadcrumbs.PushItem(ObjectNames.NicifyVariableName(instance.Name), () => NavigateHistory(instance)); } ContentFrame.Clear(); instance.Layout.CloneTree(ContentFrame); ExpressionUI previousContent = _activeContent; _activeContent = instance; if (previousContent != null) { previousContent.OnExit(_activeContent); } SetExpressionInfoBoxActive(instance, ExpressionInfo); _activeContent.BindControls(ContentFrame); _activeContent.OnEnter(this, previousContent); }