예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
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;
		}
예제 #5
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);
        }