protected override void OnClick(MouseEventArgs mouseEvent) { if (mouseEvent.Button == MouseButtons.Right) { var theme = ApplicationController.Instance.MenuTheme; // show a right click menu ('Set as Default' & 'Help') var popupMenu = new PopupMenu(theme); var historyItems = PrintHistoryData.Instance.GetHistoryItems(1).Select(f => new PrintHistoryItem(f)).ToList <ILibraryItem>(); var exportPrintHistory = popupMenu.CreateMenuItem("Export History".Localize() + "..."); exportPrintHistory.Enabled = historyItems.Count > 0; exportPrintHistory.Click += (s, e) => { }; bool showFilter = false; if (showFilter) { popupMenu.CreateSubMenu("Filter".Localize(), theme, (subMenu) => { // foreach (var printer in AllPrinters) // { // var menuItem = subMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme.InvertIcons)); // menuItem.Click += (s, e) => // { // nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false); // }; // } }); } popupMenu.CreateSeparator(); var clearPrintHistory = popupMenu.CreateMenuItem("Clear History".Localize()); clearPrintHistory.Enabled = historyItems.Count > 0; clearPrintHistory.Click += (s, e) => { // clear history StyledMessageBox.ShowMessageBox( (clearHistory) => { if (clearHistory) { PrintHistoryData.Instance.ClearHistory(); } }, "Are you sure you want to clear your print history?".Localize(), "Clear History?".Localize(), StyledMessageBox.MessageType.YES_NO, "Clear History".Localize()); }; ShowMenu(mouseEvent, popupMenu); } base.OnClick(mouseEvent); }
private static PopupMenu CreatePopupMenu() { var menuTheme = ApplicationController.Instance.MenuTheme; var popupMenu = new PopupMenu(menuTheme) { MinimumSize = new Vector2(300, 0) }; var linkIcon = StaticData.Instance.LoadIcon("fa-link_16.png", 16, 16, menuTheme.InvertIcons); PopupMenu.MenuItem menuItem; menuItem = popupMenu.CreateMenuItem("Help".Localize(), StaticData.Instance.LoadIcon("help_page.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => ApplicationController.Instance.ShowApplicationHelp("Docs"); menuItem = popupMenu.CreateMenuItem("Interface Tour".Localize(), StaticData.Instance.LoadIcon("tour.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => { UiThread.RunOnIdle(() => { DialogWindow.Show <Tour.WelcomePage>(); }); }; if (Application.EnableNetworkTraffic) { popupMenu.CreateSeparator(); menuItem = popupMenu.CreateMenuItem("Check For Update".Localize(), StaticData.Instance.LoadIcon("update.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => UiThread.RunOnIdle(() => { UpdateControlData.Instance.CheckForUpdate(); DialogWindow.Show <CheckForUpdatesPage>(); }); } popupMenu.CreateSeparator(); menuItem = popupMenu.CreateMenuItem("Settings".Localize(), StaticData.Instance.LoadIcon("fa-cog_16.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => DialogWindow.Show <ApplicationSettingsPage>(); menuItem.Name = "Settings MenuItem"; popupMenu.CreateSeparator(); ImageBuffer indicatorIcon = null; if (IntPtr.Size == 8) { indicatorIcon = StaticData.Instance.LoadIcon("x64.png", 16, 16, menuTheme.InvertIcons); } popupMenu.CreateSubMenu("Community".Localize(), menuTheme, (modifyMenu) => { menuItem = modifyMenu.CreateMenuItem("Forums".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://forums.matterhackers.com/category/20/mattercontrol"); menuItem = modifyMenu.CreateMenuItem("Guides and Articles".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://www.matterhackers.com/topic/mattercontrol"); menuItem = modifyMenu.CreateMenuItem("Support".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://www.matterhackers.com/mattercontrol/support"); menuItem = modifyMenu.CreateMenuItem("Release Notes".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://www.matterhackers.com/mattercontrol/support/release-notes"); modifyMenu.CreateSeparator(); menuItem = modifyMenu.CreateMenuItem("Report a Bug".Localize(), StaticData.Instance.LoadIcon("feedback.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => ApplicationController.LaunchBrowser("https://github.com/MatterHackers/MatterControl/issues"); }, StaticData.Instance.LoadIcon("feedback.png", 16, 16, menuTheme.InvertIcons)); popupMenu.CreateSeparator(); var imageBuffer = new ImageBuffer(18, 18); // x64 indicator icon if (IntPtr.Size == 8) { var graphics = imageBuffer.NewGraphics2D(); graphics.Clear(menuTheme.BackgroundColor); graphics.Rectangle(imageBuffer.GetBoundingRect(), menuTheme.PrimaryAccentColor); graphics.DrawString("64", imageBuffer.Width / 2, imageBuffer.Height / 2, 8, Agg.Font.Justification.Center, Agg.Font.Baseline.BoundsCenter, color: menuTheme.PrimaryAccentColor); } menuItem = popupMenu.CreateMenuItem("About".Localize() + " MatterControl", imageBuffer); menuItem.Click += (s, e) => ApplicationController.Instance.ShowAboutPage(); return(popupMenu); }
private static PopupMenu CreatePopupMenu() { var menuTheme = ApplicationController.Instance.MenuTheme; var popupMenu = new PopupMenu(menuTheme) { MinimumSize = new Vector2(300, 0) }; var linkIcon = AggContext.StaticData.LoadIcon("fa-link_16.png", 16, 16, menuTheme.InvertIcons); PopupMenu.MenuItem menuItem; menuItem = popupMenu.CreateMenuItem("Help".Localize(), AggContext.StaticData.LoadIcon("help_page.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => ApplicationController.Instance.ShowApplicationHelp(); popupMenu.CreateHorizontalLine(); menuItem = popupMenu.CreateMenuItem("Check For Update".Localize(), AggContext.StaticData.LoadIcon("update.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => UiThread.RunOnIdle(() => { UpdateControlData.Instance.CheckForUpdate(); DialogWindow.Show <CheckForUpdatesPage>(); }); popupMenu.CreateHorizontalLine(); menuItem = popupMenu.CreateMenuItem("Settings".Localize(), AggContext.StaticData.LoadIcon("fa-cog_16.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => DialogWindow.Show <ApplicationSettingsPage>(); menuItem.Name = "Settings MenuItem"; popupMenu.CreateHorizontalLine(); ImageBuffer indicatorIcon = null; if (IntPtr.Size == 8) { indicatorIcon = AggContext.StaticData.LoadIcon("x64.png", 16, 16, menuTheme.InvertIcons); } popupMenu.CreateSubMenu("Community".Localize(), menuTheme, (modifyMenu) => { menuItem = modifyMenu.CreateMenuItem("Forums".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.Instance.LaunchBrowser("https://forums.matterhackers.com/category/20/mattercontrol"); menuItem = modifyMenu.CreateMenuItem("Guides and Articles".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.Instance.LaunchBrowser("http://www.matterhackers.com/topic/mattercontrol"); menuItem = modifyMenu.CreateMenuItem("Support".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.Instance.LaunchBrowser("http://https://www.matterhackers.com/mattercontrol/support"); menuItem = modifyMenu.CreateMenuItem("Release Notes".Localize(), linkIcon); menuItem.Click += (s, e) => ApplicationController.Instance.LaunchBrowser("http://wiki.mattercontrol.com/Release_Notes"); modifyMenu.CreateHorizontalLine(); menuItem = modifyMenu.CreateMenuItem("Report a Bug".Localize(), AggContext.StaticData.LoadIcon("feedback.png", 16, 16, menuTheme.InvertIcons)); menuItem.Click += (s, e) => ApplicationController.Instance.LaunchBrowser("https://github.com/MatterHackers/MatterControl/issues"); }, AggContext.StaticData.LoadIcon("feedback.png", 16, 16, menuTheme.InvertIcons)); popupMenu.CreateHorizontalLine(); menuItem = popupMenu.CreateMenuItem("About".Localize() + " MatterControl", indicatorIcon); menuItem.Click += (s, e) => ApplicationController.Instance.ShowAboutPage(); return(popupMenu); }
public static GuiWidget CreateDefaultOptions(GuiWidget textField, ThemeConfig theme, Action selectionChanged) { var selectString = "- " + "What went wrong?".Localize() + " -"; var menuButton = new PopupMenuButton(selectString, theme); var menuButtonText = menuButton.Descendants<TextWidget>().First(); menuButtonText.AutoExpandBoundsToText = true; void AddSelection(PopupMenu menu, string text, string helpUrl = "", bool other = false) { var menuItem = menu.CreateMenuItem(text); menuItem.Click += (s, e) => { textField.Name = helpUrl; var markdownWidget = textField.Parents<SystemWindow>().First().Descendants<MarkdownWidget>().LastOrDefault(); if (markdownWidget != null) { markdownWidget.Markdown = textField.Name; markdownWidget.Visible = !string.IsNullOrEmpty(markdownWidget.Markdown); } if (other) { textField.Text = ""; textField.Visible = true; UiThread.RunOnIdle(textField.Focus); menuButtonText.Text = "Other".Localize() + "..."; } else { textField.Text = text; textField.Visible = false; menuButtonText.Text = textField.Text; } selectionChanged?.Invoke(); }; } string TroubleShooting(string type, int issue) { return $"For help with {type} and other issues, please read MatterHackers [Troubleshooting Guide](https://www.matterhackers.com/articles/3d-printer-troubleshooting-guide#Issue{issue})"; } menuButton.DynamicPopupContent = () => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); popupMenu.CreateSubMenu("First Layer".Localize(), theme, (menu) => { AddSelection(menu, "First Layer Bad Quality".Localize(), TroubleShooting("the first layer", 1)); AddSelection(menu, "Initial Z Height Incorrect".Localize(), TroubleShooting("initial Z height", 1)); }); popupMenu.CreateSubMenu("Quality".Localize(), theme, (menu) => { AddSelection(menu, "General Quality".Localize(), TroubleShooting("general quality", 100)); AddSelection(menu, "Rough Overhangs".Localize()); AddSelection(menu, "Skipped Layers".Localize()); AddSelection(menu, "Some Parts Lifted".Localize(), TroubleShooting("lifting", 6)); AddSelection(menu, "Stringing / Poor retractions".Localize(), TroubleShooting("stringing", 9)); AddSelection(menu, "Warping".Localize(), TroubleShooting("warping", 6)); AddSelection(menu, "Dislodged From Bed".Localize(), TroubleShooting("adhesion", 2)); AddSelection(menu, "Layer Shift".Localize(), TroubleShooting("layer shifting", 8)); }); popupMenu.CreateSubMenu("Mechanical".Localize(), theme, (menu) => { AddSelection(menu, "Bed Dislodged".Localize()); AddSelection(menu, "Bowden Tube Popped Out".Localize()); AddSelection(menu, "Extruder Slipping".Localize(), TroubleShooting("the extruder", 13)); AddSelection(menu, "Flooded Hot End".Localize()); AddSelection(menu, "Power Outage".Localize()); }); popupMenu.CreateSubMenu("Computer / MatterControl ".Localize(), theme, (menu) => { AddSelection(menu, "Computer Crashed".Localize()); AddSelection(menu, "Computer Slow / Lagging".Localize()); AddSelection(menu, "Couldn't Resume".Localize()); AddSelection(menu, "Wouldn’t Slice Correctly".Localize()); }); popupMenu.CreateSubMenu("Filament".Localize(), theme, (menu) => { AddSelection(menu, "Filament Jam".Localize()); AddSelection(menu, "Filament Runout".Localize()); AddSelection(menu, "Filament Snapped".Localize()); }); popupMenu.CreateSubMenu("Heating".Localize(), theme, (menu) => { AddSelection(menu, "Thermal Runaway - Bed".Localize()); AddSelection(menu, "Thermal Runaway - Hot End".Localize()); AddSelection(menu, "Heating".Localize()); AddSelection(menu, "Took Too Long To Heat".Localize()); AddSelection(menu, "Bad Thermistor".Localize()); AddSelection(menu, "Bad Thermistor".Localize()); }); AddSelection(popupMenu, "Test Print".Localize()); AddSelection(popupMenu, "User Error".Localize()); AddSelection(popupMenu, "Other".Localize(), "", true); return popupMenu; }; textField.Visible = false; menuButton.VAnchor = VAnchor.Fit; return menuButton; }
public static GuiWidget CreateDefaultOptions(GuiWidget textField, ThemeConfig theme, Action selectionChanged) { var selectString = "- " + "What went wrong?".Localize() + " -"; var menuButton = new PopupMenuButton(selectString, theme); var menuButtonText = menuButton.Descendants <TextWidget>().First(); menuButtonText.AutoExpandBoundsToText = true; void AddSelection(PopupMenu menu, string text, bool other = false) { var menuItem = menu.CreateMenuItem(text); menuItem.Click += (s, e) => { if (other) { textField.Text = ""; textField.Visible = true; UiThread.RunOnIdle(textField.Focus); menuButtonText.Text = "Other".Localize() + "..."; } else { textField.Text = text; textField.Visible = false; menuButtonText.Text = textField.Text; } selectionChanged?.Invoke(); }; } menuButton.DynamicPopupContent = () => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); popupMenu.CreateSubMenu("First Layer".Localize(), theme, (menu) => { AddSelection(menu, "First Layer Bad Quality".Localize()); AddSelection(menu, "Initial Z Height Incorrect".Localize()); }); popupMenu.CreateSubMenu("Quality".Localize(), theme, (menu) => { AddSelection(menu, "General Quality".Localize()); AddSelection(menu, "Rough Overhangs".Localize()); AddSelection(menu, "Skipped Layers".Localize()); AddSelection(menu, "Some Parts Lifted".Localize()); AddSelection(menu, "Stringing / Poor retractions".Localize()); AddSelection(menu, "Warping".Localize()); AddSelection(menu, "Dislodged From Bed".Localize()); AddSelection(menu, "Layer Shift".Localize()); }); popupMenu.CreateSubMenu("Mechanical".Localize(), theme, (menu) => { AddSelection(menu, "Bed Dislodged".Localize()); AddSelection(menu, "Bowden Tube Popped Out".Localize()); AddSelection(menu, "Extruder Slipping".Localize()); AddSelection(menu, "Flooded Hot End".Localize()); AddSelection(menu, "Power Outage".Localize()); }); popupMenu.CreateSubMenu("Computer / MatterControl ".Localize(), theme, (menu) => { AddSelection(menu, "Computer Crashed".Localize()); AddSelection(menu, "Computer Slow / Lagging".Localize()); AddSelection(menu, "Couldn't Resume".Localize()); AddSelection(menu, "Wouldn’t Slice Correctly".Localize()); }); popupMenu.CreateSubMenu("Filament".Localize(), theme, (menu) => { AddSelection(menu, "Filament Jam".Localize()); AddSelection(menu, "Filament Runout".Localize()); AddSelection(menu, "Filament Snapped".Localize()); }); popupMenu.CreateSubMenu("Heating".Localize(), theme, (menu) => { AddSelection(menu, "Thermal Runaway - Bed".Localize()); AddSelection(menu, "Thermal Runaway - Hot End".Localize()); AddSelection(menu, "Heating".Localize()); AddSelection(menu, "Took Too Long To Heat".Localize()); AddSelection(menu, "Bad Thermistor".Localize()); AddSelection(menu, "Bad Thermistor".Localize()); }); AddSelection(popupMenu, "Test Print".Localize()); AddSelection(popupMenu, "User Error".Localize()); AddSelection(popupMenu, "Other".Localize(), true); return(popupMenu); }; textField.Visible = false; menuButton.VAnchor = VAnchor.Fit; return(menuButton); }