private void CompileTimerTick(object sender, EventArgs e)
 {
     _compileTimer.Stop();
     _model.CompileProgram();
     GLShaderComponentBase.AnimationTimerEnabled = true;
     MarkErrors();
     ShaderCompiled?.Invoke(this, new EventArgs());
 }
Example #2
0
        void SetupMenu(object sender, EventArgs e)
        {
            var editor = Grasshopper.Instances.DocumentEditor;

            if (null == editor || editor.Handle == IntPtr.Zero)
            {
                return;
            }

            var controls = editor.Controls;

            if (null == controls || controls.Count == 0)
            {
                return;
            }

            _timer.Stop();
            foreach (var ctrl in controls)
            {
                var menu = ctrl as Grasshopper.GUI.GH_MenuStrip;
                if (menu == null)
                {
                    continue;
                }
                for (int i = 0; i < menu.Items.Count; i++)
                {
                    var menuitem = menu.Items[i] as ToolStripMenuItem;
                    if (menuitem != null && menuitem.Text == "Display")
                    {
                        for (int j = 0; j < menuitem.DropDownItems.Count; j++)
                        {
                            if (menuitem.DropDownItems[j].Text.StartsWith("canvas widgets", StringComparison.OrdinalIgnoreCase))
                            {
                                var viewportMenuItem = new ToolStripMenuItem("Canvas Viewport");
                                viewportMenuItem.CheckOnClick = true;
                                menuitem.DropDownOpened      += (s, args) =>
                                {
                                    if (_viewportControlPanel != null && _viewportControlPanel.Visible)
                                    {
                                        viewportMenuItem.Checked = true;
                                    }
                                    else
                                    {
                                        viewportMenuItem.Checked = false;
                                    }
                                };
                                viewportMenuItem.CheckedChanged += ViewportMenuItem_CheckedChanged;
                                var canvasWidgets = menuitem.DropDownItems[j] as ToolStripMenuItem;
                                if (canvasWidgets != null)
                                {
                                    canvasWidgets.DropDownOpening += (s, args) =>
                                                                     canvasWidgets.DropDownItems.Insert(0, viewportMenuItem);
                                }
                                break;
                            }
                        }
                        break;
                    }
                }
            }
        }
        public void SetupMenu(object sender, EventArgs e)
        {
            if (!settings.ConstainsEntry("state"))
            {
                DefaultSettings();
            }
            bool   state  = settings.GetValue("state", false);
            int    width  = settings.GetValue("width", 400);
            int    height = settings.GetValue("height", 300);
            string dock   = settings.GetValue("dock", "topleft");

            var editor = Instances.DocumentEditor;

            if (null == editor || editor.Handle == IntPtr.Zero)
            {
                return;
            }

            var controls = editor.Controls;

            if (null == controls || controls.Count == 0)
            {
                return;
            }

            _timer.Stop();
            foreach (var ctrl2 in controls)
            {
                var menu = ctrl2 as Grasshopper.GUI.GH_MenuStrip;
                if (menu == null)
                {
                    continue;
                }
                for (int i = 0; i < menu.Items.Count; i++)
                {
                    var menuitem = menu.Items[i] as ToolStripMenuItem;
                    if (menuitem != null && menuitem.Text == "Display")
                    {
                        for (int j = 0; j < menuitem.DropDownItems.Count; j++)
                        {
                            if (menuitem.DropDownItems[j].Text.StartsWith("canvas widgets", StringComparison.OrdinalIgnoreCase))
                            {
                                viewportMenuItem              = new ToolStripMenuItem("Canvas Viewport", Resources.picture, new EventHandler(OnToggle));
                                viewportMenuItem.ToolTipText  = "Opens a docked window in Grasshopper that displays Rhino viewports.\r\n - Use the right-click menu to change display modes, views, and other settings.";
                                viewportMenuItem.CheckOnClick = true;
                                viewportMenuItem.Checked      = state;

                                if (state)
                                {
                                    if (_viewportControlPanel == null)
                                    {
                                        _viewportControlPanel             = new ViewportContainerPanel();
                                        _viewportControlPanel.Size        = new Size(width, height);
                                        _viewportControlPanel.MinimumSize = new Size(50, 50);
                                        _viewportControlPanel.Padding     = new Padding(10);
                                        ctrl      = new CanvasViewportControl();
                                        ctrl.Dock = DockStyle.Fill;
                                        _viewportControlPanel.BorderStyle = BorderStyle.FixedSingle;
                                        UpdateViewport(false);
                                        _viewportControlPanel.Controls.Add(ctrl);
                                        _viewportControlPanel.Location = new Point(0, 0);
                                        Instances.ActiveCanvas.Controls.Add(_viewportControlPanel);
                                        if (dock == "topleft")
                                        {
                                            Dock(AnchorStyles.Top | AnchorStyles.Left);
                                        }
                                        if (dock == "bottomleft")
                                        {
                                            Dock(AnchorStyles.Bottom | AnchorStyles.Left);
                                        }
                                        if (dock == "bottomright")
                                        {
                                            Dock(AnchorStyles.Bottom | AnchorStyles.Right);
                                        }
                                        if (dock == "topright")
                                        {
                                            Dock(AnchorStyles.Top | AnchorStyles.Right);
                                        }
                                    }
                                    _viewportControlPanel.Show();
                                    settings.SetValue("state", true);
                                    settings.WritePersistentSettings();
                                }
                                else
                                {
                                    if (_viewportControlPanel != null && _viewportControlPanel.Visible)
                                    {
                                        _viewportControlPanel.Hide();
                                        settings.SetValue("state", false);
                                        settings.WritePersistentSettings();
                                    }
                                }
                                viewportMenuItem.CheckedChanged += ViewportMenuItem_CheckedChanged;
                                var canvasWidgets = menuitem.DropDownItems[j] as ToolStripMenuItem;
                                if (canvasWidgets != null)
                                {
                                    canvasWidgets.DropDownOpening += (s, args) =>
                                                                     canvasWidgets.DropDownItems.Insert(0, viewportMenuItem);
                                }
                                break;
                            }
                        }
                        break;
                    }
                }
            }
        }