Beispiel #1
0
        private void OpenYamlEditorAction(object sender, EventArgs e)
        {
            string yaml = AampLibraryCSharp.YamlConverter.ToYaml(AampFile.aampFile);

            STForm form = new STForm();

            form.Text = "YAML Text Editor";
            var panel = new STPanel()
            {
                Dock = DockStyle.Fill,
            };

            form.AddControl(panel);
            var editor = new TextEditor()
            {
                Dock = DockStyle.Fill,
            };

            editor.FillEditor(yaml);
            editor.IsYAML = true;
            panel.Controls.Add(editor);

            if (form.ShowDialog() == DialogResult.OK)
            {
            }
        }
Beispiel #2
0
 public ControlHandle()
 {
     Control        = new BasePanel();
     Control.Width  = 400;
     FlowPanel      = new FlowLayoutPanel();
     FlowPanel.Dock = DockStyle.Fill;
     Control.ResumeLayout(false);
     Control.PerformLayout();
 }
Beispiel #3
0
            private void SetupEditor(object value, PropertyInfo[] properties)
            {
                string category    = "";
                int    height      = 23;
                int    columnIndex = 0;

                List <Tuple <Control, int, int> > controls = new List <Tuple <Control, int, int> >();

                //Go through each property and fill an entire row
                foreach (var property in properties)
                {
                    //Get our custom attributes
                    //Bind attribute for labels. Categories for dropdowns
                    var bindableAttribute = property.GetCustomAttribute <BindGUI>();
                    var categoryAttribute = property.GetCustomAttribute <BindCategory>();
                    if (categoryAttribute != null)
                    {
                        category = categoryAttribute.Label;
                    }

                    //Check if a category is set
                    if (category != string.Empty && !DropdownPanels.ContainsKey(category))
                    {
                        //Make a dropdown and fill it in a flow layout
                        var dropPanel = new DropdownPanel();
                        dropPanel.Height    = 22;
                        dropPanel.PanelName = category;
                        DropdownPanels.Add(category, dropPanel);

                        DropFlowPanel      = new FlowLayoutPanel();
                        DropFlowPanel.Dock = DockStyle.Fill;
                        dropPanel.AddControl(DropFlowPanel);
                        FlowPanel.Controls.Add(dropPanel);
                    }

                    //Create bindable properties for GUI
                    if (bindableAttribute != null)
                    {
                        if (bindableAttribute.Label != string.Empty)
                        {
                            controls.Add(Tuple.Create(CreateLabel(bindableAttribute.Label + ":"), columnIndex, 0));
                            columnIndex++;
                        }

                        var control = CreateBindedControl(value, property);
                        if (control != null)
                        {
                            controls.Add(Tuple.Create(control, columnIndex, 0));
                        }
                    }
                    //Classes can also have custom control classes for more customization
                    //These should be used if the control needs to be edited dynamically
                    var customcontrol = CreateCustomControl(value, property);
                    if (customcontrol != null)
                    {
                        controls.Add(Tuple.Create(customcontrol, columnIndex, 0));
                    }

                    columnIndex++;
                }

                STPanel panel = new STPanel();

                panel.Height = height;
                panel.Width  = Control.Width;
                panel.Anchor = AnchorStyles.Left | AnchorStyles.Right;
                Table        = CreateTableLayout(columnIndex + 1);
                Table.Dock   = DockStyle.Fill;
                panel.Controls.Add(Table);

                foreach (var ctrl in controls)
                {
                    Table.Controls.Add(ctrl.Item1, ctrl.Item2, ctrl.Item3);
                }

                if (DropdownPanels.ContainsKey(category))
                {
                    DropdownPanels[category].Height += panel.Height + 8;
                    DropFlowPanel.Controls.Add(panel);
                }
                else
                {
                    FlowPanel.Controls.Add(panel);
                }
            }
        private void LoadColors(STColor[] colors, PTCL.Emitter.ColorType colorType, int type)
        {
            STPanel panel = new STPanel();

            if (type == 0)
            {
                panel = stPanel3;
            }
            if (type == 1)
            {
                panel = stPanel4;
            }
            if (type == 2)
            {
                panel = stPanel5;
            }
            if (type == 3)
            {
                panel = stPanel6;
            }

            panel.Controls.Clear();

            if (colorType == PTCL.Emitter.ColorType.Animated8Key)
            {
                Color8KeySlider colorSlider = new Color8KeySlider();
                colorSlider.Dock           = DockStyle.Fill;
                colorSlider.ColorSelected += ColorPanelSelected;
                panel.Controls.Add(colorSlider);
                colorSlider.IsAlpha = (type == 2 || type == 3);

                if (type == 0)
                {
                    colorSlider.LoadColors(colors, (int)ActiveEmitter.Color0KeyCount);
                }
                if (type == 1)
                {
                    colorSlider.LoadColors(colors, (int)ActiveEmitter.Color1KeyCount);
                }
                if (type == 2)
                {
                    colorSlider.LoadColors(colors, (int)ActiveEmitter.Alpha0KeyCount);
                }
                if (type == 3)
                {
                    colorSlider.LoadColors(colors, (int)ActiveEmitter.Alpha1KeyCount);
                }
            }
            else if (colorType == PTCL.Emitter.ColorType.Random)
            {
                ColorRandomPanel colorRandomPnl = new ColorRandomPanel();
                colorRandomPnl.ColorSelected += ColorPanelSelected;
                panel.Controls.Add(colorRandomPnl);
                colorRandomPnl.IsAlpha = (type == 2 || type == 3);

                colorRandomPnl.LoadColors(colors);
            }
            else
            {
                ColorConstantPanel colorConstantPnl = new ColorConstantPanel();
                colorConstantPnl.ColorSelected += ColorPanelSelected;
                panel.Controls.Add(colorConstantPnl);
                colorConstantPnl.IsAlpha = (type == 2 || type == 3);

                if (type == 0)
                {
                    colorConstantPnl.LoadColor(ActiveEmitter.ConstantColor0);
                }
                if (type == 1)
                {
                    colorConstantPnl.LoadColor(ActiveEmitter.ConstantColor1);
                }
                if (type == 2)
                {
                    colorConstantPnl.LoadColor(ActiveEmitter.ConstantAlpha0);
                }
                if (type == 3)
                {
                    colorConstantPnl.LoadColor(ActiveEmitter.ConstantAlpha1);
                }
            }
        }
Beispiel #5
0
        private void SelectionChanged(ObjectTreeNode obj)
        {
            obj.OnClick();

            bool tryUpdateViewport = false;

            if (Runtime.SelectedBoneIndex != -1)
            {
                tryUpdateViewport         = true;
                Runtime.SelectedBoneIndex = -1;
            }

            if (obj.Tag is ArchiveFileInfo)
            {
                var fileInfo = (ArchiveFileInfo)obj.Tag;

                if (fileInfo.OpenFileFormatOnLoad)
                {
                    fileInfo.FileFormat = fileInfo.OpenFile();
                }
                if (fileInfo.FileFormat != null)
                {
                    var fileNode = ObjectListWrapperLoader.OpenFormat(imgList, fileInfo.FileFormat);
                    obj.Tag = fileInfo.FileFormat;
                    foreach (var child in fileNode.Children)
                    {
                        obj.AddChild(child);
                    }
                    SelectionChanged(obj);
                    return;
                }

                ArchiveFilePanel hexEditor = GetActiveEditor <ArchiveFilePanel>();
                hexEditor.LoadFile(this, fileInfo);
            }
            else if (obj.Tag is STGenericTexture)
            {
                var tex = (STGenericTexture)obj.Tag;

                ImageEditorBase editor = GetActiveEditor <ImageEditorBase>();
                editor.LoadProperties(tex.DisplayProperties);
                editor.LoadImage(tex);
            }
            else if (obj.Tag is IPropertyDisplay)
            {
                var property = (IPropertyDisplay)obj.Tag;

                STPropertyGrid editor = GetActiveEditor <STPropertyGrid>();
                editor.LoadProperty(property.PropertyDisplay);
            }
            else if (obj.Tag is IEditorDisplay)
            {
                var property = (IEditorDisplay)obj.Tag;
                Console.WriteLine($"IEditorDisplay {property}");

                var gui = GUIGenerator.Generate(property);
                gui.Dock = DockStyle.Fill;

                STPanel editor = GetActiveEditor <STPanel>();
                editor.Controls.Clear();
                editor.Controls.Add(gui);
            }
            else if (obj.Tag is System.IO.Stream)
            {
                var stream = (System.IO.Stream)obj.Tag;

                HexEditor hexEditor = GetActiveEditor <HexEditor>();
                hexEditor.LoadData(stream);
            }
            else if (obj.Tag is IVideoFormat)
            {
                VideoPlayer editor = GetActiveEditor <VideoPlayer>();
                editor.LoadVideoFile((IVideoFormat)obj.Tag);
            }
            else if (obj.Tag is STGenericMesh)
            {
                var mesh = (STGenericMesh)obj.Tag;
                mesh.SelectMesh?.Invoke(mesh, EventArgs.Empty);

                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace  = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                var            meshEditor = workspace.GetActiveEditor <MeshEditor>();
                meshEditor.LoadMesh(mesh);
                workspace.UpdateViewport();
                ObjectHiearchy.Focus();
            }
            else if (obj.Tag is STGenericMaterial)
            {
                var mat = (STGenericMaterial)obj.Tag;

                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace      = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                var            materialEditor = workspace.GetActiveEditor <MaterialEditor>();
                materialEditor.LoadMaterial(mat);
                workspace.UpdateViewport();
            }
            else if (obj.Tag is IModelFormat)
            {
                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                workspace.LoadFileFormat((IModelFormat)(obj.Tag));
                workspace.UpdateViewport();
            }
            else if (obj.Tag is IModelSceneFormat)
            {
                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                workspace.LoadFileFormat((IModelSceneFormat)(obj.Tag));
                workspace.UpdateViewport();
            }
            else if (obj.Tag is STAnimation)
            {
                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                workspace.LoadFileFormat((STAnimation)(obj.Tag));
                workspace.UpdateViewport();
            }
            else if (obj.Tag is STBone)
            {
                var bone = (STBone)obj.Tag;
                Runtime.SelectedBoneIndex = bone.Index;
                WorkspacePanel.UpdateViewport();
            }

            if (tryUpdateViewport && WorkspacePanel != null)
            {
                WorkspacePanel.UpdateViewport();
            }
            // else
            //    GetActiveEditor<STPanel>();
        }
Beispiel #6
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public FrameControl(STPanel panel)
 {
     Panel = panel;
     AddEvents();
 }