private void CompileTimerTick(object sender, EventArgs e) { _compileTimer.Stop(); _model.CompileProgram(); GLShaderComponentBase.AnimationTimerEnabled = true; MarkErrors(); ShaderCompiled?.Invoke(this, new EventArgs()); }
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; } } } }