예제 #1
0
        public LibraryItem RemoveItemFromLibrary(uint id)
        {
            LibraryItem li = MainForm.CurrentLibrary[id];

            if (li != null)
            {
                TreeNode tn = null;
                FindNode(symbolTree.Nodes, id, ref tn);

                if (tn != null && tn is LibraryTreeNode)
                {
                    LibraryTreeNode liv = (LibraryTreeNode)tn;
                    MainForm.CurrentLibrary.RemoveLibraryItem(liv.item);
                    Console.WriteLine("remove " + liv.item.DefinitionId);
                    tn.Remove();
                }
                li.LibraryPath = "";
            }
            RefreshCurrentNode();

            uint[]            uis     = MainForm.CurrentLibrary.FindAllUsagesOfDefinition(id);
            UsageIdentifier[] removed = MainForm.CurrentStage.RemoveInstancesByIdGlobal(uis);
            MainForm.CurrentStage.InvalidateAll();

            return(li);
        }
예제 #2
0
        void symbolTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            symbolTree.LabelEdit = false;

            if (e.Node is LibraryTreeNode && e.Label != null && e.Label != "")
            {
                LibraryTreeNode liv = (LibraryTreeNode)e.Node;
                if (liv.item.Name != e.Label)
                {
                    liv.item.Name = e.Label;
                    MainForm.CurrentStage.HasSaveableChanges = true;
                }
            }
        }
예제 #3
0
        public TreeNode AddItemToLibrary(LibraryItem li)
        {
            TreeNodeCollection nodes = GetFolder(li.LibraryPath);

            if (li.Name == null)
            {
                li.Name = MainForm.CurrentLibrary.GetNextDefaultName();
            }
            int             imageIndex = GetImageIndex(li);
            LibraryTreeNode ltn        = new LibraryTreeNode(li, imageIndex, imageIndex);

            ltn.Name = li.Name;
            nodes.Add(ltn);
            li.LibraryPath = (ltn.Parent != null) ? ltn.Parent.FullPath : "";
            return(ltn);
        }
예제 #4
0
        public void OnKeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
            case Keys.Delete:
                if (selectedItem != null && selectedItem is LibraryTreeNode)
                {
                    LibraryTreeNode ltn = (LibraryTreeNode)selectedItem;
                    MainForm.CurrentStage.CommandStack.Do(
                        new DeleteItemsFromLibraryCommand(new uint[] { ltn.item.DefinitionId }));
                }
                break;

            case Keys.L:
                if ((ModifierKeys & Keys.Control) == Keys.Control)
                {
                    MainForm.Instance.ShowLibraryView(sender, e);
                }
                break;
            }
        }
예제 #5
0
        public bool InsertNode(LibraryTreeNode node, string path, int index)
        {
            bool result = false;
            TreeNodeCollection parentNodes = symbolTree.Nodes;
            int lastIndex = path.LastIndexOf(symbolTree.PathSeparator);

            if (lastIndex > -1)
            {
                string     rootPath = path.Substring(0, lastIndex);
                TreeNode[] targ     = symbolTree.Nodes.Find(rootPath, true);
                if (targ.Length > 0 && targ[0].Nodes.Count >= index)
                {
                    parentNodes = targ[0].Nodes;
                }
            }

            if (parentNodes != null)
            {
                parentNodes.Insert(index, node);
                result = true;
            }
            return(result);
        }