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); }