Ejemplo n.º 1
0
        public static void Regist()
        {
            Action <Func <bool> > register = (f) =>
            {
                var attributes = f.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                if (uniquename != null)
                {
                    Console.WriteLine("Not implemented.");
                    //Shortcuts.SetFunction(uniquename, f);
                }
            };

            /*
             * regist(New);
             * regist(Open);
             * regist(Overwrite);
             * regist(SaveAs);
             * regist(Exit);
             *
             * regist(Play);
             * regist(Stop);
             * regist(Step);
             * regist(BackStep);
             *
             * regist(Undo);
             * regist(Redo);
             * regist(Copy);
             * regist(Paste);
             * regist(PasteInfo);
             * regist(AddNode);
             * regist(InsertNode);
             * regist(RemoveNode);
             */
        }
Ejemplo n.º 2
0
        public static void Register()
        {
            Action <Func <bool> > register = (f) =>
            {
                var attributes = f.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                if (uniquename != null)
                {
                    Shortcuts.SetFunction(uniquename, f);
                }
            };

            register(New);
            register(Open);
            register(Overwrite);
            register(SaveAs);
            register(Exit);

            register(Play);
            register(Stop);
            register(Step);
            register(BackStep);

            register(Undo);
            register(Redo);
            register(Copy);
            register(Paste);
            register(PasteInfo);
            register(AddNode);
            register(InsertNode);
            register(RemoveNode);
        }
Ejemplo n.º 3
0
        private static MenuItem CreateMenuItemFromCommands(Func <bool> onClicked)
        {
            var item       = new MenuItem();
            var attributes = onClicked.Method.GetCustomAttributes(false);
            var uniquename = UniqueNameAttribute.GetUniqueName(attributes);

            item.Label    = NameAttribute.GetName(attributes);
            item.Shortcut = Shortcuts.GetShortcutText(uniquename);
            item.Clicked += () => onClicked();

            return(item);
        }
Ejemplo n.º 4
0
        private ConfigurationNode GetParentToBeUsed(ConfigurationNode node)
        {
            PropertyInfo info = node.GetType().GetProperty("Name");

            object [] attributes = info.GetCustomAttributes(typeof(UniqueNameAttribute), true);
            if (attributes.Length == 0)
            {
                return(node.Parent);
            }
            UniqueNameAttribute attr = (UniqueNameAttribute)attributes[0];

            return(FindNodeByType(rootNode, attr.ContainerType));
        }
Ejemplo n.º 5
0
        protected override void InitializeCore()
        {
            NonUniqueNameTestNode parent = new NonUniqueNameTestNode("Parent");
            NonUniqueNameTestNode nonUniqueNameChildOfParent = new NonUniqueNameTestNode("uniqueName");
            childOfParent = new UniqueNameTestNode("uniqueName");
            otherChildOfParent = new UniqueNameTestNode("other name");
            UniqueNameTestNode siblingOfParent = new UniqueNameTestNode("uniqueName");

            ApplicationNode.AddNode(parent);
            ApplicationNode.AddNode(siblingOfParent);
            parent.AddNode(childOfParent);
            parent.AddNode(otherChildOfParent);
            parent.AddNode(nonUniqueNameChildOfParent);

            uniqueNameInfo = typeof(UniqueNameTestNode).GetProperty("Name");
            attribute = new UniqueNameAttribute(typeof(UniqueNameTestNode), typeof(ConfigurationApplicationNode));
        }
Ejemplo n.º 6
0
        protected override void InitializeCore()
        {
            NonUniqueNameTestNode parent = new NonUniqueNameTestNode("Parent");
            NonUniqueNameTestNode nonUniqueNameChildOfParent = new NonUniqueNameTestNode("uniqueName");

            childOfParent      = new UniqueNameTestNode("uniqueName");
            otherChildOfParent = new UniqueNameTestNode("other name");
            UniqueNameTestNode siblingOfParent = new UniqueNameTestNode("uniqueName");

            ApplicationNode.AddNode(parent);
            ApplicationNode.AddNode(siblingOfParent);
            parent.AddNode(childOfParent);
            parent.AddNode(otherChildOfParent);
            parent.AddNode(nonUniqueNameChildOfParent);

            uniqueNameInfo = typeof(UniqueNameTestNode).GetProperty("Name");
            attribute      = new UniqueNameAttribute(typeof(UniqueNameTestNode), typeof(ConfigurationApplicationNode));
        }
Ejemplo n.º 7
0
        public NodeTreeView()
        {
            Label = Resources.GetString("NodeTree") + "###NodeTree";

            Core.OnAfterNew        += OnRenew;
            Core.OnAfterLoad       += OnRenew;
            Core.OnAfterSelectNode += OnAfterSelect;

            Func <Func <bool>, Menu.MenuItem> create_menu_item_from_commands = (a) =>
            {
                var item       = new Menu.MenuItem();
                var attributes = a.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                item.Label    = NameAttribute.GetName(attributes);
                item.Shortcut = Shortcuts.GetShortcutText(uniquename);
                item.Clicked += () =>
                {
                    a();
                };

                return(item);
            };

            menuItems.Add(create_menu_item_from_commands(Commands.AddNode));
            menuItems.Add(create_menu_item_from_commands(Commands.InsertNode));
            menuItems.Add(create_menu_item_from_commands(Commands.RemoveNode));

            menuItems.Add(new Menu.MenuSeparator());

            menuItems.Add(create_menu_item_from_commands(Commands.Copy));
            menuItems.Add(create_menu_item_from_commands(Commands.Paste));
            menuItems.Add(create_menu_item_from_commands(Commands.PasteInfo));

            menuItems.Add(new Menu.MenuSeparator());

            menuItems.Add(create_menu_item_from_commands(Commands.Undo));
            menuItems.Add(create_menu_item_from_commands(Commands.Redo));

            Renew();

            Icon       = Images.GetIcon("PanelNodeTree");
            IconSize   = new swig.Vec2(24, 24);
            TabToolTip = Resources.GetString("NodeTree");
        }
Ejemplo n.º 8
0
        private void DockNodeTreeView_Load(object sender, EventArgs e)
        {
            Func <Func <bool>, ToolStripMenuItem> create_menu_item_from_commands = (a) =>
            {
                var item       = new ToolStripMenuItem();
                var attributes = a.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                item.Text                     = NameAttribute.GetName(attributes);
                item.ShowShortcutKeys         = true;
                item.ShortcutKeyDisplayString = Shortcuts.GetShortcutText(uniquename);
                item.Click                   += (object _sender, EventArgs _e) =>
                {
                    a();
                };

                return(item);
            };

            contextMenuStrip.SuspendLayout();
            var items = contextMenuStrip.Items;

            items.Add(create_menu_item_from_commands(Commands.AddNode));
            items.Add(create_menu_item_from_commands(Commands.InsertNode));
            items.Add(create_menu_item_from_commands(Commands.RemoveNode));

            items.Add(new ToolStripSeparator());

            items.Add(create_menu_item_from_commands(Commands.Copy));
            items.Add(create_menu_item_from_commands(Commands.Paste));
            items.Add(create_menu_item_from_commands(Commands.PasteInfo));

            items.Add(new ToolStripSeparator());

            items.Add(create_menu_item_from_commands(Commands.Undo));
            items.Add(create_menu_item_from_commands(Commands.Redo));

            contextMenuStrip.ResumeLayout();
            contextMenuStrip.PerformLayout();
        }
Ejemplo n.º 9
0
        void ReloadMenu()
        {
            Func <Func <bool>, MenuItem> create_menu_item_from_commands = (a) =>
            {
                var item       = new MenuItem();
                var attributes = a.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                item.Label    = NameAttribute.GetName(attributes);
                item.Shortcut = Shortcuts.GetShortcutText(uniquename);
                item.Clicked += () =>
                {
                    a();
                };

                return(item);
            };

            {
                string file   = string.Empty;
                string input  = string.Empty;
                string output = string.Empty;


                file   = Resources.GetString("Files");
                input  = Resources.GetString("Import");
                output = Resources.GetString("Export");

                var menu = new Menu(file);
                menu.Controls.Add(create_menu_item_from_commands(Commands.New));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Open));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Overwrite));
                menu.Controls.Add(create_menu_item_from_commands(Commands.SaveAs));

                menu.Controls.Add(new MenuSeparator());

                {
                    var import_menu = new Menu(input);

                    for (int c = 0; c < Core.ImportScripts.Count; c++)
                    {
                        var item   = new MenuItem();
                        var script = Core.ImportScripts[c];
                        item.Label    = script.Title;
                        item.Clicked += () =>
                        {
                            var filter = script.Filter.Split('.').Last();
                            var result = swig.FileDialog.OpenDialog(filter, System.IO.Directory.GetCurrentDirectory());

                            if (!string.IsNullOrEmpty(result))
                            {
                                var filepath = result;

                                script.Function(filepath);
                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }

                            /*
                             * OpenFileDialog ofd = new OpenFileDialog();
                             *
                             * ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                             * ofd.Filter = script.Filter;
                             * ofd.FilterIndex = 2;
                             * ofd.Multiselect = false;
                             *
                             * if (ofd.ShowDialog() == DialogResult.OK)
                             * {
                             *      var filepath = ofd.FileName;
                             *      script.Function(filepath);
                             *
                             *      System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                             * }
                             * else
                             * {
                             *      return;
                             * }
                             */
                        };
                        import_menu.Controls.Add(item);
                    }

                    menu.Controls.Add(import_menu);
                }

                {
                    var export_menu = new Menu(output);

                    for (int c = 0; c < Core.ExportScripts.Count; c++)
                    {
                        var item   = new MenuItem();
                        var script = Core.ExportScripts[c];
                        item.Label    = script.Title;
                        item.Clicked += () =>
                        {
                            var filter = script.Filter.Split('.').Last();
                            var result = swig.FileDialog.SaveDialog(filter, System.IO.Directory.GetCurrentDirectory());

                            if (!string.IsNullOrEmpty(result))
                            {
                                if (System.IO.Path.GetExtension(result) != "." + filter)
                                {
                                    result += "." + filter;
                                }

                                var filepath = result;
                                script.Function(filepath);

                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }

                            /*
                             * SaveFileDialog ofd = new SaveFileDialog();
                             *
                             * ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                             * ofd.Filter = script.Filter;
                             * ofd.FilterIndex = 2;
                             * ofd.OverwritePrompt = true;
                             *
                             * if (ofd.ShowDialog() == DialogResult.OK)
                             * {
                             *      var filepath = ofd.FileName;
                             *      script.Function(filepath);
                             *
                             *      System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                             * }
                             * else
                             * {
                             *      return;
                             * }
                             */
                        };
                        export_menu.Controls.Add(item);
                    }

                    menu.Controls.Add(export_menu);
                }

                menu.Controls.Add(new MenuSeparator());

                {
                    ReloadRecentFiles();
                    menu.Controls.Add(recentFiles);
                }

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.Exit));

                this.Controls.Add(menu);
            }

            {
                string edit = Resources.GetString("Edit");

                var menu = new Menu(edit);

                menu.Controls.Add(create_menu_item_from_commands(Commands.AddNode));
                menu.Controls.Add(create_menu_item_from_commands(Commands.InsertNode));
                menu.Controls.Add(create_menu_item_from_commands(Commands.RemoveNode));

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.Copy));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Paste));
                menu.Controls.Add(create_menu_item_from_commands(Commands.PasteInfo));

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.Undo));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Redo));

                this.Controls.Add(menu);
            }

            {
                string view = Resources.GetString("View");

                var menu = new Menu(view);

                menu.Controls.Add(create_menu_item_from_commands(Commands.Play));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Stop));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Step));
                menu.Controls.Add(create_menu_item_from_commands(Commands.BackStep));

                this.Controls.Add(menu);
            }

            {
                var menu = new Menu(Resources.GetString("Window"));

                {
                    var item = new MenuItem();
                    item.Label    = Resources.GetString("ResetWindow");
                    item.Clicked += () =>
                    {
                        Manager.ResetWindow();
                    };
                    menu.Controls.Add(item);
                }

                Action <string, Type, swig.ImageResource> setDockWindow = (s, t, icon) =>
                {
                    var item = new MenuItem();
                    item.Label    = s;
                    item.Clicked += () =>
                    {
                        var panel = Manager.SelectOrShowWindow(t, new swig.Vec2(300, 300));
                        if (panel != null)
                        {
                            panel.InitialDockActive = 1;
                        }
                    };
                    item.Icon = icon;
                    menu.Controls.Add(item);
                };

                setDockWindow(Resources.GetString("NodeTree"), typeof(Dock.NodeTreeView), Images.GetIcon("PanelNodeTree"));
                setDockWindow(Resources.GetString("BasicSettings"), typeof(Dock.CommonValues), Images.GetIcon("PanelCommon"));
                setDockWindow(Resources.GetString("Position"), typeof(Dock.LocationValues), Images.GetIcon("PanelLocation"));
                setDockWindow(Resources.GetString("AttractionForces"), typeof(Dock.LocationAbsValues), Images.GetIcon("PanelLocationAbs"));
                setDockWindow(Resources.GetString("SpawningMethod"), typeof(Dock.GenerationLocationValues), Images.GetIcon("PanelGenerationLocation"));
                setDockWindow(Resources.GetString("Rotation"), typeof(Dock.RotationValues), Images.GetIcon("PanelRotation"));
                setDockWindow(Resources.GetString("Scale"), typeof(Dock.ScaleValues), Images.GetIcon("PanelScale"));
                setDockWindow(Resources.GetString("Depth"), typeof(Dock.DepthValues), Images.GetIcon("PanelDepth"));
                setDockWindow(Resources.GetString("BasicRenderSettings"), typeof(Dock.RendererCommonValues), Images.GetIcon("PanelRendererCommon"));
                setDockWindow(Resources.GetString("RenderSettings"), typeof(Dock.RendererValues), Images.GetIcon("PanelRenderer"));
                setDockWindow(Resources.GetString("Sound"), typeof(Dock.SoundValues), Images.GetIcon("PanelSound"));
                setDockWindow(Resources.GetString("FCurves"), typeof(Dock.FCurves), Images.GetIcon("PanelFCurve"));
                setDockWindow(Resources.GetString("ViewerControls"), typeof(Dock.ViewerController), Images.GetIcon("PanelViewer"));
                setDockWindow(Resources.GetString("CameraSettings"), typeof(Dock.ViewPoint), Images.GetIcon("PanelViewPoint"));
                setDockWindow(Resources.GetString("Recorder"), typeof(Dock.Recorder), Images.GetIcon("PanelRecorder"));
                setDockWindow(Resources.GetString("Options"), typeof(Dock.Option), Images.GetIcon("PanelOption"));
                setDockWindow(Resources.GetString("Global"), typeof(Dock.GlobalValues), Images.GetIcon("PanelGlobal"));
                setDockWindow(Resources.GetString("Behavior"), typeof(Dock.BehaviorValues), Images.GetIcon("PanelBehavior"));
                setDockWindow(Resources.GetString("Culling"), typeof(Dock.Culling), Images.GetIcon("PanelCulling"));
                setDockWindow(Resources.GetString("Network"), typeof(Dock.Network), Images.GetIcon("PanelNetwork"));
                setDockWindow(Resources.GetString("FileViewer"), typeof(Dock.FileViewer), Images.GetIcon("PanelFileViewer"));

                this.Controls.Add(menu);
            }

            {
                var menu = new Menu(Resources.GetString("Help"));

                menu.Controls.Add(create_menu_item_from_commands(Commands.ViewHelp));
                menu.Controls.Add(create_menu_item_from_commands(Commands.OpenSample));

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.About));

                this.Controls.Add(menu);
            }
        }
Ejemplo n.º 10
0
        void ReloadMenu()
        {
            Func <Func <bool>, MenuItem> create_menu_item_from_commands = (a) =>
            {
                var item       = new MenuItem();
                var attributes = a.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                item.Label = NameAttribute.GetName(attributes);
                Console.WriteLine("Not implemented.");
                //item.ShowShortcutKeys = true;
                //item.ShortcutKeyDisplayString = Shortcuts.GetShortcutText(uniquename);
                item.Clicked += () =>
                {
                    a();
                };

                return(item);
            };

            {
                string file   = string.Empty;
                string input  = string.Empty;
                string output = string.Empty;


                file   = Resources.GetString("Files");
                input  = Resources.GetString("Import");
                output = Resources.GetString("Export");

                var menu = new Menu(file);
                menu.Controls.Add(create_menu_item_from_commands(Commands.New));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Open));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Overwrite));
                menu.Controls.Add(create_menu_item_from_commands(Commands.SaveAs));

                menu.Controls.Add(new MenuSeparator());

                {
                    var import_menu = new Menu(input);

                    for (int c = 0; c < Core.ImportScripts.Count; c++)
                    {
                        var item   = new MenuItem();
                        var script = Core.ImportScripts[c];
                        item.Label    = script.Title;
                        item.Clicked += () =>
                        {
                            OpenFileDialog ofd = new OpenFileDialog();

                            ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                            ofd.Filter           = script.Filter;
                            ofd.FilterIndex      = 2;
                            ofd.Multiselect      = false;

                            if (ofd.ShowDialog() == DialogResult.OK)
                            {
                                var filepath = ofd.FileName;
                                script.Function(filepath);

                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }
                        };
                        import_menu.Controls.Add(item);
                    }

                    menu.Controls.Add(import_menu);
                }

                {
                    var export_menu = new Menu(output);

                    for (int c = 0; c < Core.ExportScripts.Count; c++)
                    {
                        var item   = new MenuItem();
                        var script = Core.ExportScripts[c];
                        item.Label    = script.Title;
                        item.Clicked += () =>
                        {
                            SaveFileDialog ofd = new SaveFileDialog();

                            ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                            ofd.Filter           = script.Filter;
                            ofd.FilterIndex      = 2;
                            ofd.OverwritePrompt  = true;

                            if (ofd.ShowDialog() == DialogResult.OK)
                            {
                                var filepath = ofd.FileName;
                                script.Function(filepath);

                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }
                        };
                        export_menu.Controls.Add(item);
                    }

                    menu.Controls.Add(export_menu);
                }

                menu.Controls.Add(new MenuSeparator());

                {
                    ReloadRecentFiles();
                    menu.Controls.Add(recentFiles);
                }

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.Exit));

                this.Controls.Add(menu);
            }

            {
                string edit = Resources.GetString("Edit");

                var menu = new Menu(edit);

                menu.Controls.Add(create_menu_item_from_commands(Commands.AddNode));
                menu.Controls.Add(create_menu_item_from_commands(Commands.InsertNode));
                menu.Controls.Add(create_menu_item_from_commands(Commands.RemoveNode));

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.Copy));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Paste));
                menu.Controls.Add(create_menu_item_from_commands(Commands.PasteInfo));

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.Undo));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Redo));

                this.Controls.Add(menu);
            }

            {
                string view = Resources.GetString("View");

                var menu = new Menu(view);

                menu.Controls.Add(create_menu_item_from_commands(Commands.Play));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Stop));
                menu.Controls.Add(create_menu_item_from_commands(Commands.Step));
                menu.Controls.Add(create_menu_item_from_commands(Commands.BackStep));

                this.Controls.Add(menu);
            }

            {
                var menu = new Menu(Resources.GetString("Window"));

                {
                    var item = new MenuItem();
                    item.Label    = Resources.GetString("ResetWindow");
                    item.Clicked += () =>
                    {
                        Console.WriteLine("Not implemented.");
                        //GUIManager.CloseDockWindow();
                        //GUIManager.AssignDockWindowIntoDefaultPosition();
                    };
                    menu.Controls.Add(item);
                }

                // Not implemented.

                /*
                 * Action<string, Type, Image> setDockWindow = (s, t, icon) =>
                 * {
                 *      var item = new MenuItem();
                 *      item.Text = s;
                 *      item.Click += (object sender, EventArgs e) =>
                 *      {
                 *              GUIManager.SelectOrShowWindow(t);
                 *      };
                 *      item.Image = icon;
                 *      menu.DropDownItems.Add(item);
                 * };
                 *
                 * setDockWindow(Properties.Resources.NodeTree, typeof(DockNodeTreeView), Properties.Resources.IconNodeTree);
                 * setDockWindow(Properties.Resources.BasicSettings, typeof(DockNodeCommonValues), Properties.Resources.IconCommon);
                 * setDockWindow(Properties.Resources.Position, typeof(DockNodeLocationValues), Properties.Resources.IconLocation);
                 * setDockWindow(Properties.Resources.AttractionForces, typeof(DockNodeLocationAbsValues), Properties.Resources.IconLocationAbs);
                 * setDockWindow(Properties.Resources.SpawningMethod, typeof(DockNodeGenerationLocationValues), Properties.Resources.IconGenerationLocation);
                 * setDockWindow(Properties.Resources.Rotation, typeof(DockNodeRotationValues), Properties.Resources.IconRotation);
                 * setDockWindow(Properties.Resources.Scale, typeof(DockNodeScaleValues), Properties.Resources.IconScale);
                 * setDockWindow(Properties.Resources.Scale, typeof(DockNodeDepthValues), Properties.Resources.IconScale);
                 * setDockWindow(Properties.Resources.BasicRenderSettings, typeof(DockNodeRendererCommonValues), Properties.Resources.IconRendererCommon);
                 * setDockWindow(Properties.Resources.RenderSettings, typeof(DockNodeRendererValues), Properties.Resources.IconRenderer);
                 * setDockWindow(Properties.Resources.Sound, typeof(DockNodeSoundValues), Properties.Resources.IconSound);
                 * setDockWindow(Properties.Resources.FCurves, typeof(DockFCurves), Properties.Resources.IconFCurve);
                 * setDockWindow(Properties.Resources.ViewerControls, typeof(DockViewerController), Properties.Resources.IconViewer);
                 * setDockWindow(Properties.Resources.CameraSettings, typeof(DockViewPoint), Properties.Resources.IconViewPoint);
                 * setDockWindow(Properties.Resources.Recorder, typeof(DockRecorder), Properties.Resources.IconRecorder);
                 * setDockWindow(Properties.Resources.Options, typeof(DockOption), Properties.Resources.IconOption);
                 * setDockWindow(Properties.Resources.Options, typeof(DockGlobal), Properties.Resources.IconOption);
                 * setDockWindow(Properties.Resources.Behavior, typeof(DockEffectBehavior), Properties.Resources.IconBehavior);
                 * setDockWindow(Properties.Resources.Culling, typeof(DockCulling), Properties.Resources.IconCulling);
                 * setDockWindow(Properties.Resources.Network, typeof(DockNetwork), Properties.Resources.IconNetwork);
                 * setDockWindow(Properties.Resources.FileViewer, typeof(DockFileViewer), Properties.Resources.IconFileViewer);
                 */

                this.Controls.Add(menu);
            }

            {
                var menu = new Menu(Resources.GetString("Help"));

                menu.Controls.Add(create_menu_item_from_commands(Commands.ViewHelp));
                menu.Controls.Add(create_menu_item_from_commands(Commands.OpenSample));

                menu.Controls.Add(new MenuSeparator());

                menu.Controls.Add(create_menu_item_from_commands(Commands.About));

                this.Controls.Add(menu);
            }
        }
Ejemplo n.º 11
0
        void ReloadMenu()
        {
            Func <Func <bool>, ToolStripMenuItem> create_menu_item_from_commands = (a) =>
            {
                var item       = new ToolStripMenuItem();
                var attributes = a.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                item.Text                     = NameAttribute.GetName(attributes);
                item.ShowShortcutKeys         = true;
                item.ShortcutKeyDisplayString = Shortcuts.GetShortcutText(uniquename);
                item.Click                   += (object sender, EventArgs e) =>
                {
                    a();
                };

                return(item);
            };

            this.menuStrip.SuspendLayout();
            this.SuspendLayout();

            {
                string file   = string.Empty;
                string input  = string.Empty;
                string output = string.Empty;


                file   = Properties.Resources.Files;
                input  = Properties.Resources.Import;
                output = Properties.Resources.Export;

                var menu = new ToolStripMenuItem(file);
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.New));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Open));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Overwrite));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.SaveAs));

                menu.DropDownItems.Add(new ToolStripSeparator());
                {
                    var import_menu = new ToolStripMenuItem(input);

                    for (int c = 0; c < Core.ImportScripts.Count; c++)
                    {
                        var item   = new ToolStripMenuItem();
                        var script = Core.ImportScripts[c];
                        item.Text   = script.Title;
                        item.Click += (object _sender, EventArgs _e) =>
                        {
                            OpenFileDialog ofd = new OpenFileDialog();

                            ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                            ofd.Filter           = script.Filter;
                            ofd.FilterIndex      = 2;
                            ofd.Multiselect      = false;

                            if (ofd.ShowDialog() == DialogResult.OK)
                            {
                                var filepath = ofd.FileName;
                                script.Function(filepath);

                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }
                        };
                        import_menu.DropDownItems.Add(item);
                    }

                    menu.DropDownItems.Add(import_menu);
                }

                {
                    var export_menu = new ToolStripMenuItem(output);

                    for (int c = 0; c < Core.ExportScripts.Count; c++)
                    {
                        var item   = new ToolStripMenuItem();
                        var script = Core.ExportScripts[c];
                        item.Text   = script.Title;
                        item.Click += (object _sender, EventArgs _e) =>
                        {
                            SaveFileDialog ofd = new SaveFileDialog();

                            ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                            ofd.Filter           = script.Filter;
                            ofd.FilterIndex      = 2;
                            ofd.OverwritePrompt  = true;

                            if (ofd.ShowDialog() == DialogResult.OK)
                            {
                                var filepath = ofd.FileName;
                                script.Function(filepath);

                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }
                        };
                        export_menu.DropDownItems.Add(item);
                    }

                    menu.DropDownItems.Add(export_menu);
                }
                menu.DropDownItems.Add(new ToolStripSeparator());
                {
                    ReloadRecentFiles();
                    menu.DropDownItems.Add(recentFiles);
                }
                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Exit));

                menuStrip.Items.Add(menu);
            }

            {
                string edit = Properties.Resources.Edit;
                string view = Properties.Resources.View;

                var menu = new ToolStripMenuItem(edit);

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.AddNode));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.InsertNode));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.RemoveNode));

                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Copy));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Paste));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.PasteInfo));

                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Undo));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Redo));

                menuStrip.Items.Add(menu);
            }

            {
                string edit = Properties.Resources.Edit;
                string view = Properties.Resources.View;

                var menu = new ToolStripMenuItem(view);

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Play));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Stop));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Step));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.BackStep));

                menuStrip.Items.Add(menu);
            }

            /*
             * {
             *      var menu = new ToolStripMenuItem("全体処理");
             *
             *      for (int c = 0; c < Core.CommandScripts.Count; c++)
             *      {
             *              var command_item = new ToolStripMenuItem();
             *              var command = Core.CommandScripts[c];
             *              command_item.Text = command.Title;
             *              command_item.Click += (object _sender, EventArgs _e) =>
             *              {
             *                      command.Function();
             *              };
             *              menu.DropDownItems.Add(command_item);
             *      }
             *
             *      menuStrip.Items.Add(menu);
             * }
             *
             * {
             *      var menu = new ToolStripMenuItem("選択部処理");
             *      for (int c = 0; c < Core.SelectedScripts.Count; c++)
             *      {
             *              var command_item = new ToolStripMenuItem();
             *              var command = Core.SelectedScripts[c];
             *              command_item.Text = command.Title;
             *              command_item.Click += (object _sender, EventArgs _e) =>
             *              {
             *                      command.Function(Core.SelectedNode, null);
             *              };
             *              menu.DropDownItems.Add(command_item);
             *      }
             *
             *      menuStrip.Items.Add(menu);
             * }
             */

            {
                var menu = new ToolStripMenuItem(Properties.Resources.Window);

                {
                    var item = new ToolStripMenuItem();
                    item.Text   = Properties.Resources.ResetWindow;
                    item.Click += (object sender, EventArgs e) =>
                    {
                        GUIManager.CloseDockWindow();
                        GUIManager.AssignDockWindowIntoDefaultPosition();
                    };
                    menu.DropDownItems.Add(item);
                }

                Action <string, Type, Image> setDockWindow = (s, t, icon) =>
                {
                    var item = new ToolStripMenuItem();
                    item.Text   = s;
                    item.Click += (object sender, EventArgs e) =>
                    {
                        GUIManager.SelectOrShowWindow(t);
                    };
                    item.Image = icon;
                    menu.DropDownItems.Add(item);
                };

                setDockWindow(Properties.Resources.NodeTree, typeof(DockNodeTreeView), Properties.Resources.IconNodeTree);
                setDockWindow(Properties.Resources.BasicSettings, typeof(DockNodeCommonValues), Properties.Resources.IconCommon);
                setDockWindow(Properties.Resources.Position, typeof(DockNodeLocationValues), Properties.Resources.IconLocation);
                setDockWindow(Properties.Resources.AttractionForces, typeof(DockNodeLocationAbsValues), Properties.Resources.IconLocationAbs);
                setDockWindow(Properties.Resources.SpawningMethod, typeof(DockNodeGenerationLocationValues), Properties.Resources.IconGenerationLocation);
                setDockWindow(Properties.Resources.Rotation, typeof(DockNodeRotationValues), Properties.Resources.IconRotation);
                setDockWindow(Properties.Resources.Scale, typeof(DockNodeScaleValues), Properties.Resources.IconScale);
                setDockWindow(Properties.Resources.BasicRenderSettings, typeof(DockNodeRendererCommonValues), Properties.Resources.IconRendererCommon);
                setDockWindow(Properties.Resources.RenderSettings, typeof(DockNodeRendererValues), Properties.Resources.IconRenderer);
                setDockWindow(Properties.Resources.Sound, typeof(DockNodeSoundValues), Properties.Resources.IconSound);
                setDockWindow(Properties.Resources.FCurves, typeof(DockFCurves), Properties.Resources.IconFCurve);
                setDockWindow(Properties.Resources.ViewerControls, typeof(DockViewerController), Properties.Resources.IconViewer);
                setDockWindow(Properties.Resources.CameraSettings, typeof(DockViewPoint), Properties.Resources.IconViewPoint);
                setDockWindow(Properties.Resources.Recorder, typeof(DockRecorder), Properties.Resources.IconRecorder);
                setDockWindow(Properties.Resources.Options, typeof(DockOption), Properties.Resources.IconOption);
                setDockWindow(Properties.Resources.Behavior, typeof(DockEffectBehavior), Properties.Resources.IconBehavior);
                setDockWindow(Properties.Resources.Culling, typeof(DockCulling), Properties.Resources.IconCulling);
                setDockWindow(Properties.Resources.Network, typeof(DockNetwork), Properties.Resources.IconNetwork);
                setDockWindow(Properties.Resources.FileViewer, typeof(DockFileViewer), Properties.Resources.IconFileViewer);

                menuStrip.Items.Add(menu);
            }

            {
                var menu = new ToolStripMenuItem(Properties.Resources.Help);

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.ViewHelp));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.OpenSample));

                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.About));

                menuStrip.Items.Add(menu);
            }

            this.menuStrip.ResumeLayout(false);
            this.menuStrip.PerformLayout();
            this.ResumeLayout(false);
            this.PerformLayout();
        }
Ejemplo n.º 12
0
        void ReloadMenu()
        {
            Func <Action, ToolStripMenuItem> create_menu_item_from_commands = (a) =>
            {
                var item       = new ToolStripMenuItem();
                var attributes = a.Method.GetCustomAttributes(false);
                var uniquename = UniqueNameAttribute.GetUniqueName(attributes);
                item.Text                     = NameAttribute.GetName(attributes);
                item.ShowShortcutKeys         = true;
                item.ShortcutKeyDisplayString = Shortcuts.GetShortcutText(uniquename);
                item.Click                   += (object sender, EventArgs e) =>
                {
                    a();
                };

                return(item);
            };

            this.menuStrip.SuspendLayout();
            this.SuspendLayout();

            {
                string file   = string.Empty;
                string input  = string.Empty;
                string output = string.Empty;


                if (Core.Language == Language.Japanese)
                {
                    file   = "ファイル";
                    input  = "入力";
                    output = "出力";
                }
                else if (Core.Language == Language.English)
                {
                    file   = "Files";
                    input  = "Import";
                    output = "Export";
                }

                var menu = new ToolStripMenuItem(file);
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.New));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Open));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Overwrite));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.SaveAs));

                menu.DropDownItems.Add(new ToolStripSeparator());
                {
                    var import_menu = new ToolStripMenuItem(input);

                    for (int c = 0; c < Core.ImportScripts.Count; c++)
                    {
                        var item   = new ToolStripMenuItem();
                        var script = Core.ImportScripts[c];
                        item.Text   = script.Title;
                        item.Click += (object _sender, EventArgs _e) =>
                        {
                            OpenFileDialog ofd = new OpenFileDialog();

                            ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                            ofd.Filter           = script.Filter;
                            ofd.FilterIndex      = 2;
                            ofd.Multiselect      = false;

                            if (ofd.ShowDialog() == DialogResult.OK)
                            {
                                var filepath = ofd.FileName;
                                script.Function(filepath);

                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }
                        };
                        import_menu.DropDownItems.Add(item);
                    }

                    menu.DropDownItems.Add(import_menu);
                }

                {
                    var export_menu = new ToolStripMenuItem(output);

                    for (int c = 0; c < Core.ExportScripts.Count; c++)
                    {
                        var item   = new ToolStripMenuItem();
                        var script = Core.ExportScripts[c];
                        item.Text   = script.Title;
                        item.Click += (object _sender, EventArgs _e) =>
                        {
                            SaveFileDialog ofd = new SaveFileDialog();

                            ofd.InitialDirectory = System.IO.Directory.GetCurrentDirectory();
                            ofd.Filter           = script.Filter;
                            ofd.FilterIndex      = 2;
                            ofd.OverwritePrompt  = true;

                            if (ofd.ShowDialog() == DialogResult.OK)
                            {
                                var filepath = ofd.FileName;
                                script.Function(filepath);

                                System.IO.Directory.SetCurrentDirectory(System.IO.Path.GetDirectoryName(filepath));
                            }
                            else
                            {
                                return;
                            }
                        };
                        export_menu.DropDownItems.Add(item);
                    }

                    menu.DropDownItems.Add(export_menu);
                }
                menu.DropDownItems.Add(new ToolStripSeparator());
                {
                    ReloadRecentFiles();
                    menu.DropDownItems.Add(recentFiles);
                }
                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Exit));

                menuStrip.Items.Add(menu);
            }

            {
                string edit = string.Empty;
                string view = string.Empty;

                if (Core.Language == Language.Japanese)
                {
                    edit = "編集";
                    view = "表示";
                }
                else if (Core.Language == Language.English)
                {
                    edit = "Edit";
                    view = "View";
                }

                var menu = new ToolStripMenuItem(edit);

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.AddNode));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.InsertNode));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.RemoveNode));

                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Copy));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Paste));

                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Undo));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Redo));

                menuStrip.Items.Add(menu);
            }

            {
                string edit = string.Empty;
                string view = string.Empty;

                if (Core.Language == Language.Japanese)
                {
                    edit = "編集";
                    view = "表示";
                }
                else if (Core.Language == Language.English)
                {
                    edit = "Edit";
                    view = "View";
                }

                var menu = new ToolStripMenuItem(view);

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Play));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Stop));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.Step));
                menuStrip.Items.Add(menu);
            }

            /*
             * {
             *      var menu = new ToolStripMenuItem("全体処理");
             *
             *      for (int c = 0; c < Core.CommandScripts.Count; c++)
             *      {
             *              var command_item = new ToolStripMenuItem();
             *              var command = Core.CommandScripts[c];
             *              command_item.Text = command.Title;
             *              command_item.Click += (object _sender, EventArgs _e) =>
             *              {
             *                      command.Function();
             *              };
             *              menu.DropDownItems.Add(command_item);
             *      }
             *
             *      menuStrip.Items.Add(menu);
             * }
             *
             * {
             *      var menu = new ToolStripMenuItem("選択部処理");
             *      for (int c = 0; c < Core.SelectedScripts.Count; c++)
             *      {
             *              var command_item = new ToolStripMenuItem();
             *              var command = Core.SelectedScripts[c];
             *              command_item.Text = command.Title;
             *              command_item.Click += (object _sender, EventArgs _e) =>
             *              {
             *                      command.Function(Core.SelectedNode, null);
             *              };
             *              menu.DropDownItems.Add(command_item);
             *      }
             *
             *      menuStrip.Items.Add(menu);
             * }
             */

            {
                string window      = string.Empty;
                string resetWindow = string.Empty;

                if (Core.Language == Language.Japanese)
                {
                    window      = "ウインドウ";
                    resetWindow = "ウインドウ位置を初期化";
                }
                else if (Core.Language == Language.English)
                {
                    window      = "Window";
                    resetWindow = "Reset Window Position";
                }

                var menu = new ToolStripMenuItem(window);

                {
                    var item = new ToolStripMenuItem();
                    item.Text   = resetWindow;
                    item.Click += (object sender, EventArgs e) =>
                    {
                        GUIManager.CloseDockWindow();
                        GUIManager.AssignDockWindowIntoDefaultPosition();
                    };
                    menu.DropDownItems.Add(item);
                }

                Action <string, Type> setDockWindow = (s, t) =>
                {
                    var item = new ToolStripMenuItem();
                    item.Text   = s;
                    item.Click += (object sender, EventArgs e) =>
                    {
                        GUIManager.SelectOrShowWindow(t);
                    };
                    menu.DropDownItems.Add(item);
                };

                if (Core.Language == Language.Japanese)
                {
                    setDockWindow("ノードツリー", typeof(DockNodeTreeView));
                    setDockWindow("共通", typeof(DockNodeCommonValues));
                    setDockWindow("位置", typeof(DockNodeLocationValues));
                    setDockWindow("絶対位置", typeof(DockNodeLocationAbsValues));
                    setDockWindow("生成位置", typeof(DockNodeGenerationLocationValues));
                    setDockWindow("回転", typeof(DockNodeRotationValues));
                    setDockWindow("拡大", typeof(DockNodeScaleValues));
                    setDockWindow("描画共通", typeof(DockNodeRendererCommonValues));
                    setDockWindow("描画", typeof(DockNodeRendererValues));
                    setDockWindow("音", typeof(DockNodeSoundValues));
                    setDockWindow("Fカーブ", typeof(DockFCurves));
                    setDockWindow("ビュワー操作", typeof(DockViewerController));
                    setDockWindow("視点操作", typeof(DockViewPoint));
                    setDockWindow("録画", typeof(DockRecorder));
                    setDockWindow("オプション", typeof(DockOption));
                    setDockWindow("振る舞い", typeof(DockEffectBehavior));
                    setDockWindow("カリング", typeof(DockCulling));
                    setDockWindow("ネットワーク", typeof(DockNetwork));
                }
                else if (Core.Language == Language.English)
                {
                    setDockWindow("Node Tree", typeof(DockNodeTreeView));
                    setDockWindow("Basic Settings", typeof(DockNodeCommonValues));
                    setDockWindow("Position", typeof(DockNodeLocationValues));
                    setDockWindow("Attraction Forces", typeof(DockNodeLocationAbsValues));
                    setDockWindow("Spawning Method", typeof(DockNodeGenerationLocationValues));
                    setDockWindow("Rotation", typeof(DockNodeRotationValues));
                    setDockWindow("Scale", typeof(DockNodeScaleValues));
                    setDockWindow("Basic Render Settings", typeof(DockNodeRendererCommonValues));
                    setDockWindow("Render Settings", typeof(DockNodeRendererValues));
                    setDockWindow("Sound", typeof(DockNodeSoundValues));
                    setDockWindow("F-Curves", typeof(DockFCurves));
                    setDockWindow("Viewer Controls", typeof(DockViewerController));
                    setDockWindow("Camera Settings", typeof(DockViewPoint));
                    setDockWindow("Recorder", typeof(DockRecorder));
                    setDockWindow("Options", typeof(DockOption));
                    setDockWindow("Behavior", typeof(DockEffectBehavior));
                    setDockWindow("Culling", typeof(DockCulling));
                    setDockWindow("Network", typeof(DockNetwork));
                }


                menuStrip.Items.Add(menu);
            }

            {
                string help = string.Empty;

                if (Core.Language == Language.Japanese)
                {
                    help = "ヘルプ";
                }
                else if (Core.Language == Language.English)
                {
                    help = "Help";
                }

                var menu = new ToolStripMenuItem(help);

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.ViewHelp));
                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.OpenSample));

                menu.DropDownItems.Add(new ToolStripSeparator());

                menu.DropDownItems.Add(create_menu_item_from_commands(Commands.About));

                menuStrip.Items.Add(menu);
            }

            this.menuStrip.ResumeLayout(false);
            this.menuStrip.PerformLayout();
            this.ResumeLayout(false);
            this.PerformLayout();
        }