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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
 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");
         }
     }
 }
Esempio n. 6
0
 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");
         }
     }
 }
Esempio n. 7
0
        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);
        }