예제 #1
0
        public void SetStartNode(IDisplayNode displayNode)
        {
            m_Dispatcher.BeginInvoke(() =>
                                     {
                                         StartNode = displayNode;

                                         NotifyPropertyChanged("StartNode");
                                     });
        }
예제 #2
0
        public virtual int CompareFields(IDisplayNode n1, IDisplayNode n2)
        {
            var diff = (int)n1.Category - (int)n2.Category;

            if (diff != 0)
            {
                return(diff);
            }
            else
            {
                return(CompareFieldNames(n1.Name, n2.Name));
            }
        }
        public void Convert()
        {
            ReleaseDisplayNode();

            m_DisplayNode = m_Factory.Create(NodeModel.Id,
                                             NodeModel.X,
                                             NodeModel.Y,
                                             NodeModel.DirectionAngle.Degrees,
                                             DefaultRadius,
                                             m_FillBrush,
                                             m_StrokeBrush,
                                             DefaultStrokeThickness);
        }
예제 #4
0
        // on select in the list tree
        private void LeftTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            exportMeshToolStripMenuItem.Enabled         = false;
            exportMorphToolStripMenuItem.Enabled        = false;
            exportAllPccMeshesToolStripMenuItem.Enabled = false;
            exportAllPccMorphsToolStripMenuItem.Enabled = false;
            LeftTreeContextMenuStrip.Visible            = false;
            exportContextMenuItem.Visible = false;

            IDisplayNode nodeToDisplay = LeftTree.SelectedNode as IDisplayNode;

            if (nodeToDisplay != null)
            {
                nodeToDisplay.DisplayDetails(DetailsTreeView);

                switch (nodeToDisplay.GetType())
                {
                case "pcc":
                    exportMeshToolStripMenuItem.Enabled         = false;
                    exportMorphToolStripMenuItem.Enabled        = false;
                    exportAllPccMeshesToolStripMenuItem.Enabled = true;
                    exportAllPccMorphsToolStripMenuItem.Enabled = true;
                    break;

                case "morph":
                    exportMeshToolStripMenuItem.Enabled         = false;
                    exportAllPccMeshesToolStripMenuItem.Enabled = false;
                    exportAllPccMorphsToolStripMenuItem.Enabled = false;
                    if (((MorphTreeNode)nodeToDisplay).morph.IsExportable)
                    {
                        LeftTreeContextMenuStrip.Visible     = true;
                        exportContextMenuItem.Visible        = true;
                        exportContextMenuItem.Enabled        = true;
                        exportMorphToolStripMenuItem.Enabled = true;
                    }
                    break;

                case "mesh":
                    exportMeshToolStripMenuItem.Enabled         = true;
                    exportMorphToolStripMenuItem.Enabled        = false;
                    exportAllPccMeshesToolStripMenuItem.Enabled = false;
                    exportAllPccMorphsToolStripMenuItem.Enabled = false;
                    LeftTreeContextMenuStrip.Visible            = true;
                    exportContextMenuItem.Visible = true;
                    exportContextMenuItem.Enabled = true;
                    break;
                }
            }
        }
예제 #5
0
        // export contextual menu
        private void exportContextMenuItem_Click(object sender, EventArgs e)
        {
            IDisplayNode selectedNode = LeftTree.SelectedNode as IDisplayNode;

            if (selectedNode != null)
            {
                if (selectedNode.GetType() == "mesh")
                {
                    exportMeshToolStripMenuItem_Click(sender, e);
                }
                else if (selectedNode.GetType() == "morph")
                {
                    exportMorphToolStripMenuItem_Click(sender, e);
                }
            }
        }
예제 #6
0
        private void stateViewMenu_Opening(object sender, CancelEventArgs e)
        {
            IDisplayNode sel  = null;
            SkeletonItem skel = null;

            if (SelectedNode() != null)
            {
                sel  = SelectedNode().dispNode;
                skel = SelectedNode().skel;
            }

            var items = stateViewMenu.Items;

            items.Clear();

            if (sel == null)
            {
                items.Add(new ToolStripMenuItem("Unavailable")
                {
                    Enabled = false
                });
                return;
            }

            foreach (var x in sel.References.Where(q => q != sel.Element))
            {
                var t = new ToolStripMenuItem(LangModel.CanonicalName(x));
                items.Add(t);
                AddMenuItems(NamesFor(x), t.DropDownItems, "= ", 20);
            }

            if (sel.Element != null)
            {
                var selName = LangModel.CanonicalName(sel.Element);
                items.Add("Find uses...", null, (s, _) => SetSearch("use:" + selName));

                var aliases = NamesFor(sel.Element).Where(s => s != skel).ToArray();
                if (aliases.Length > 0)
                {
                    items.Add("Aliases...", null, (s, _) => SetSearch("eq:" + selName));
                    AddMenuItems(aliases, items, "   = ", 10);
                }
            }
        }
예제 #7
0
        internal void Set(SkeletonItem s, int id, int prevId)
        {
            if (skel == s && stateId == id)
            return;
              skel = s;
              stateId = id;

              dispNode = skel.displayNodes[stateId];
              active = dispNode != null;

              var closeStateId = stateId;

              if (dispNode == null) {
            while (closeStateId < skel.displayNodes.Length && skel.displayNodes[closeStateId] == null)
              closeStateId++;
            if (closeStateId >= skel.displayNodes.Length) {
              closeStateId = stateId;
              while (closeStateId >= 0 && skel.displayNodes[closeStateId] == null)
            closeStateId--;
            }
            dispNode = skel.displayNodes[closeStateId];
              }

              var fullName = skel.LongName(closeStateId);
              var tooltip = dispNode.ToolTip;
              if (tooltip == null)
            tooltip = "";
              if(tooltip.Length > 0 && tooltip[tooltip.Length - 1] != '\n')
            tooltip += "\n";
              tooltip += "Full name: " + fullName;
              if (tooltip != null) {
            this.ToolTipText = tooltip;
              }

              var name = dispNode.Name;
              if (name != dispNode.ShortName)
              {
            name = dispNode.ShortName;
              }

              if (IsMatchListItem) {
            Util.Assert(active);
            name = fullName;
              }

              this.SubItems[0].Text = name;
              this.SubItems[1].Text = active ? dispNode.Value : "";

              var prev = "";

              if (!IsMatchListItem && prevId >= 0 && skel.displayNodes[prevId] != null) {
            prev = skel.displayNodes[prevId].Value;
              }

              this.SubItems[2].Text = prev;
        }
예제 #8
0
        internal void Set(SkeletonItem s, int id, int prevId)
        {
            if (skel == s && stateId == id)
            {
                return;
            }
            skel    = s;
            stateId = id;

            dispNode = skel.displayNodes[stateId];
            active   = dispNode != null;

            var closeStateId = stateId;

            if (dispNode == null)
            {
                while (closeStateId < skel.displayNodes.Length && skel.displayNodes[closeStateId] == null)
                {
                    closeStateId++;
                }
                if (closeStateId >= skel.displayNodes.Length)
                {
                    closeStateId = stateId;
                    while (closeStateId >= 0 && skel.displayNodes[closeStateId] == null)
                    {
                        closeStateId--;
                    }
                }
                dispNode = skel.displayNodes[closeStateId];
            }

            var fullName = skel.LongName(closeStateId);
            var tooltip  = dispNode.ToolTip;

            if (tooltip == null)
            {
                tooltip = "";
            }
            if (tooltip.Length > 0 && tooltip[tooltip.Length - 1] != '\n')
            {
                tooltip += "\n";
            }
            tooltip += "Full name: " + fullName;
            if (tooltip != null)
            {
                this.ToolTipText = tooltip;
            }

            var name = dispNode.Name;

            if (name != dispNode.ShortName)
            {
                name = dispNode.ShortName;
            }

            if (IsMatchListItem)
            {
                Util.Assert(active);
                name = fullName;
            }

            this.SubItems[0].Text = name;
            this.SubItems[1].Text = active ? dispNode.Value : "";

            var prev = "";

            if (!IsMatchListItem && prevId >= 0 && skel.displayNodes[prevId] != null)
            {
                prev = skel.displayNodes[prevId].Value;
            }

            this.SubItems[2].Text = prev;
        }