Esempio n. 1
0
        void btnRemoveClick(SelectionDock sender)
        {
            if (sender.Index == 0)
            {
                maxRow   = startingRow;
                maxOrder = 0;
            }
            else
            {
                int prevIdx = sender.Index;
                prevIdx--;

                SelectionDock prev = (from d in docks
                                      where d.Index == prevIdx
                                      select d).First();

                maxRow   = prev.MaxRow;
                maxOrder = prev.Index;
            }

            info = Info;

            if (info.Attachments.Length > 0)
            {
                int idx = sender.Index;
                idx -= 3;

                info.Attachments = ArrayHelper.RemoveAt <ParameterCollection>(idx, info.Attachments);
            }
            else
            {
                info.Attachments = new ParameterCollection[0];
            }

            if (docks.Count > 0)
            {
                for (int i = sender.Index; i < docks.Count; i++)
                {
                    docks[i].Destroy();
                }

                int count = 0;
                count = docks.Count - sender.Index;

                docks.RemoveRange(sender.Index, count);
                sender.Destroy();

                int idx = maxOrder++;
                idx -= 2;

                for (int i = idx; i < info.Attachments.Length; i++)
                {
                    DisplayAttachment(info.Attachments[i]);
                }
            }

            ReAddEnding();
        }
Esempio n. 2
0
        void DisplayObject(ParameterCollection obj,
                           DockType type, string[] options, int order)
        {
            if (order > maxOrder)
            {
                maxOrder = order;
            }

            string[] assemblyPaths = null;

            switch (type)
            {
            case DockType.Attachment:
                assemblyPaths = FileSource.Attachments.Keys.ToArray();
                break;

            case  DockType.Cycle:
                assemblyPaths = FileSource.Cycles.Keys.ToArray();
                break;

            case DockType.Emitter:
                assemblyPaths = FileSource.EmittionTypes.Keys.ToArray();
                break;

            default:
                assemblyPaths = FileSource.RenderTypes.Keys.ToArray();
                break;
            }

            if (obj == null)
            {
                obj = new ParameterCollection();

                obj.ObjectType = assemblyPaths[0];
            }

            string name = Enum.GetName(typeof(DockType), type);

            SelectionDock dock = new SelectionDock(obj, panel,
                                                   maxRow, name, options, name, assemblyPaths);

            dock.Index = order;
            dock.OnSelectionChanged += new ComboBoxSelectionChangedEvent(cboSelectionChanged);

            dock.Create();
            dock.EndCreate();

            docks.Add(dock);

            maxRow = dock.MaxRow;
            maxOrder++;
        }
Esempio n. 3
0
        void cboSelectionChanged(SelectionDock sender)
        {
            int idx = 0;

            if (sender is AddableDock)
            {
                maxRow = sender.MaxRow;

                idx  = sender.Index;
                idx -= 3;

                info.Attachments[idx] = sender.Object;
            }

            if (sender.Index == maxOrder)
            {
                ReAddEnding();
            }
            else
            {
                info = Info;

                for (int i = sender.Index; i < docks.Count; i++)
                {
                    docks[i].Destroy();
                }

                int count = docks.Count;
                count -= sender.Index;

                docks.RemoveRange(sender.Index, count);

                int max = maxOrder;
                maxOrder = sender.Index;

                for (int i = sender.Index; i < max; i++)
                {
                    if (i >= 0 && i < 3)
                    {
                        ParameterCollection obj = null;

                        if (i == 0)
                        {
                            obj = info.EmittionType;
                        }
                        else if (i == 1)
                        {
                            obj = info.RenderType;
                        }
                        else if (i == 2)
                        {
                            obj = info.CycleType;
                        }

                        DisplayObject(obj, (DockType)i, options[i], i);
                    }
                    else
                    {
                        idx  = i;
                        idx -= 3;

                        DisplayAttachment(info.Attachments[idx]);
                    }
                }

                ReAddEnding();
            }
        }