Exemplo n.º 1
0
        private void OnToolboxChanged(ToolboxChangedArgs.ChangeTypes changeType, ToolboxItem changedItem)
        {
            EventHandler <ToolboxChangedArgs> handler = ToolboxChangedEvent;

            if (handler != null)
            {
                handler(this, new ToolboxChangedArgs(changeType, changedItem));
            }
        }
Exemplo n.º 2
0
        private void UpdateStore(object sourceObj, ToolboxChangedArgs args)
        {
            ToolboxChangedArgs.ChangeTypes changeType = args.ChangeType;
            ToolboxItem changedItem = args.ChangedItem;
            TreeStore   store       = this.Model as TreeStore;

            if (changeType == ToolboxChangedArgs.ChangeTypes.ItemUnselected)
            {
                foreach (TreePath path in this.Selection.GetSelectedRows())
                {
                    TreeIter iter;
                    if (store.GetIter(out iter, path))
                    {
                        ToolboxItem val = GetItem(iter);
                        if (val == changedItem)
                        {
                            this.Selection.UnselectIter(iter);
                        }
                    }
                }
            }
            else if (changeType == ToolboxChangedArgs.ChangeTypes.ItemAdded)
            {
                ToolboxDrawer containingDrawer = null;
                ToolboxItem   itemBefore       = null;
                foreach (ToolboxDrawer drawer in source.Drawers)
                {
                    ToolboxItem prev = null;
                    foreach (ToolboxItem item in drawer.GetContents())
                    {
                        if (item == changedItem)
                        {
                            containingDrawer = drawer;
                            itemBefore       = prev;
                        }
                        prev = item;
                    }
                }
                store.Foreach((model, path, iter) => {
                    if (itemBefore == null)
                    {
                        if (GetItem(iter) == containingDrawer)
                        {
                            TreeIter node = store.PrependNode(iter);
                            store.SetValue(node, 0, changedItem);
                            return(true);
                        }
                    }
                    else
                    {
                        if (GetItem(iter) == itemBefore)
                        {
                            TreeIter parent;
                            store.IterParent(out parent, iter);
                            TreeIter node = store.InsertNodeAfter(parent, iter);
                            store.SetValue(node, 0, changedItem);
                            return(true);
                        }
                    }
                    return(false);
                });
            }
            else
            {
                store.Foreach((model, path, iter) => {
                    if (GetItem(iter) == changedItem)
                    {
                        if (changeType == ToolboxChangedArgs.ChangeTypes.ItemRemoved)
                        {
                            store.Remove(ref iter);
                        }
                        else if (changeType == ToolboxChangedArgs.ChangeTypes.ItemRenamed)
                        {
                            store.EmitRowChanged(path, iter);
                        }
                        return(true);
                    }
                    return(false);
                });
            }
        }