Ejemplo n.º 1
0
		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;
		}
Ejemplo n.º 2
0
        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);
        }