public HelpTreePanel(ThemeConfig theme, string guideKey = null) : base(theme) { horizontalSplitter.Panel1.BackgroundColor = Color.Black.WithAlpha(12); var toolbar = new Toolbar(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Padding = theme.ToolbarPadding }; theme.ApplyBottomBorder(toolbar); toolbar.AddChild(new TextButton("MatterControl Help".Localize(), theme) { Padding = new BorderDouble(6, 0), Selectable = false }); this.AddChild(toolbar, 0); this.ChildBorderColor = theme.BorderColor40; AddGuides(); CreateMousePage(); CreateKeyBindingsPage(); }
public MovementSpeedsPage(PrinterConfig printer) { this.AlwaysOnTopOfMain = true; this.WindowTitle = "Movement Speeds".Localize(); this.HeaderText = "Movement Speeds Presets".Localize(); this.WindowSize = new Vector2(500 * GuiWidget.DeviceScale, 320 * GuiWidget.DeviceScale); var rightLabel = new TextWidget("mm/s".Localize(), textColor: theme.TextColor, pointSize: theme.FontSize10) { VAnchor = VAnchor.Center, Margin = new BorderDouble(right: 20) }; var headerBar = new Toolbar(theme.TabbarPadding, rightLabel) { Height = theme.ButtonHeight, Padding = theme.ToolbarPadding, HAnchor = HAnchor.Stretch }; headerBar.AddChild(new TextWidget(this.WindowTitle, textColor: theme.TextColor, pointSize: theme.FontSize10)); contentRow.AddChild(headerBar); // put in the movement edit controls string[] settingsArray = printer.Settings.Helpers.GetMovementSpeedsString().Split(','); int preset_count = 1; int tab_index = 0; for (int i = 0; i < settingsArray.Count() - 1; i += 2) { var row = new FlowLayoutWidget { Padding = 3, HAnchor = HAnchor.Stretch }; TextWidget axisLabel; if (settingsArray[i].StartsWith("e")) { axisLabel = new TextWidget(string.Format("{0}(s)", "Extruder".Localize()), textColor: theme.TextColor); } else { axisLabel = new TextWidget(string.Format("{0} {1}", "Axis".Localize(), settingsArray[i].ToUpper()), textColor: theme.TextColor); } axisLabel.VAnchor = VAnchor.Center; row.AddChild(axisLabel); row.AddChild(new HorizontalSpacer()); axisLabels.Add(settingsArray[i]); if (double.TryParse(settingsArray[i + 1], out double movementSpeed)) { movementSpeed = movementSpeed / 60.0; // Convert from mm/min to mm/s } var valueEdit = new MHNumberEdit(movementSpeed, theme, minValue: 0, pixelWidth: 60 * GuiWidget.DeviceScale, tabIndex: tab_index++, allowDecimals: true) { Margin = 3 }; row.AddChild(valueEdit); valueEditors.Add(valueEdit); contentRow.AddChild(row); preset_count += 1; } var savePresetsButton = theme.CreateDialogButton("Save".Localize()); savePresetsButton.Click += (s, e) => { bool first = true; var settingString = new StringBuilder(); for (int i = 0; i < valueEditors.Count(); i++) { if (!first) { settingString.Append(","); } first = false; settingString.Append(axisLabels[i]); settingString.Append(","); double movementSpeed = 0; double.TryParse(valueEditors[i].Text, out movementSpeed); movementSpeed = movementSpeed * 60; // Convert to mm/min settingString.Append(movementSpeed.ToString()); } string speedString = settingString.ToString(); if (!string.IsNullOrEmpty(speedString)) { printer.Settings.SetValue(SettingsKey.manual_movement_speeds, speedString); printer.Bed.GCodeRenderer?.Clear3DGCode(); } this.DialogWindow.CloseOnIdle(); }; this.AddPageAction(savePresetsButton); }
public HardwareTabPage(ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.theme = theme; this.Padding = 0; this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Stretch; var toolbar = new Toolbar(theme.TabbarPadding, theme.CreateSmallResetButton()) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Padding = theme.ToolbarPadding }; theme.ApplyBottomBorder(toolbar); toolbar.AddChild(new TextButton("Inventory".Localize(), theme) { Padding = new BorderDouble(6, 0), MinimumSize = new Vector2(0, theme.ButtonHeight), Selectable = false }); this.AddChild(toolbar); var horizontalSplitter = new Splitter() { SplitterDistance = UserSettings.Instance.LibraryViewWidth, SplitterSize = theme.SplitterWidth, SplitterBackground = theme.SplitterBackground, HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; horizontalSplitter.DistanceChanged += (s, e) => { UserSettings.Instance.LibraryViewWidth = horizontalSplitter.SplitterDistance; }; this.AddChild(horizontalSplitter); var treeView = new HardwareTreeView(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Width = 300, Margin = 5 }; treeView.NodeMouseDoubleClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Left && mouseEvent.Clicks == 2) { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { ApplicationController.Instance.OpenPrinter(printerInfo); } } }; treeView.NodeMouseClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Right) { UiThread.RunOnIdle(() => { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); var openMenuItem = popupMenu.CreateMenuItem("Open".Localize()); openMenuItem.Click += (s2, e2) => { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { ApplicationController.Instance.OpenPrinter(printerInfo); } }; popupMenu.CreateSeparator(); var deleteMenuItem = popupMenu.CreateMenuItem("Delete".Localize()); deleteMenuItem.Click += (s2, e2) => { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { // Delete printer StyledMessageBox.ShowMessageBox( (deletePrinter) => { if (deletePrinter) { ProfileManager.Instance.DeletePrinter(printerInfo.ID); } }, "Are you sure you want to delete printer '{0}'?".Localize().FormatWith(printerInfo.Name), "Delete Printer?".Localize(), StyledMessageBox.MessageType.YES_NO, "Delete Printer".Localize()); } }; popupMenu.ShowMenu(clickedWidget, mouseEvent); }); } }; treeView.ScrollArea.HAnchor = HAnchor.Stretch; treeView.AfterSelect += (s, e) => { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { horizontalSplitter.Panel2.CloseChildren(); horizontalSplitter.Panel2.AddChild(new PrinterDetails(printerInfo, theme, true) { HAnchor = HAnchor.MaxFitOrStretch, VAnchor = VAnchor.Stretch, Padding = theme.DefaultContainerPadding }); } }; horizontalSplitter.Panel1.AddChild(treeView); horizontalSplitter.Panel2.AddChild(new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }); }
public HardwareTabPage(ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.theme = theme; this.Padding = 0; this.HAnchor = HAnchor.Stretch; this.VAnchor = VAnchor.Stretch; var toolbar = new Toolbar(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, Padding = theme.ToolbarPadding }; theme.ApplyBottomBorder(toolbar); toolbar.AddChild(new TextButton("Inventory".Localize(), theme) { Padding = new BorderDouble(6, 0), MinimumSize = new Vector2(0, theme.ButtonHeight), Selectable = false }); this.AddChild(toolbar); var horizontalSplitter = new Splitter() { SplitterDistance = UserSettings.Instance.LibraryViewWidth, SplitterSize = theme.SplitterWidth, SplitterBackground = theme.SplitterBackground, HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; horizontalSplitter.DistanceChanged += (s, e) => { UserSettings.Instance.LibraryViewWidth = horizontalSplitter.SplitterDistance; }; this.AddChild(horizontalSplitter); var treeView = new HardwareTreeView(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Width = 300, Margin = 5 }; treeView.NodeMouseDoubleClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Left && mouseEvent.Clicks == 2) { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { if (ApplicationController.Instance.ActivePrinters.FirstOrDefault(p => p.Settings.ID == printerInfo.ID) is PrinterConfig printer && ApplicationController.Instance.MainView.TabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerTabPage && printerTabPage.printer == printer) is ITab tab) { // Switch to existing printer tab ApplicationController.Instance.MainView.TabControl.ActiveTab = tab; } else { // Open new printer tab ApplicationController.Instance.OpenPrinter(printerInfo.ID).ConfigureAwait(false); } } } }; treeView.NodeMouseClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Right) { UiThread.RunOnIdle(() => { var menu = new PopupMenu(ApplicationController.Instance.MenuTheme); var openMenuItem = menu.CreateMenuItem("Open".Localize()); openMenuItem.Click += (s2, e2) => { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { // Open printer ApplicationController.Instance.OpenPrinter(printerInfo.ID).ConfigureAwait(false); } }; menu.CreateSeparator(); var deleteMenuItem = menu.CreateMenuItem("Delete".Localize()); deleteMenuItem.Click += (s2, e2) => { // Delete printer StyledMessageBox.ShowMessageBox( (deletePrinter) => { if (deletePrinter) { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { ProfileManager.Instance.DeletePrinter(printerInfo.ID); } } }, "Are you sure you want to delete your currently selected printer?".Localize(), "Delete Printer?".Localize(), StyledMessageBox.MessageType.YES_NO, "Delete Printer".Localize()); }; var systemWindow = this.Parents <SystemWindow>().FirstOrDefault(); systemWindow.ShowPopup( new MatePoint(clickedWidget) { Mate = new MateOptions(MateEdge.Left, MateEdge.Top), AltMate = new MateOptions(MateEdge.Left, MateEdge.Top) }, new MatePoint(menu) { Mate = new MateOptions(MateEdge.Left, MateEdge.Top), AltMate = new MateOptions(MateEdge.Right, MateEdge.Top) }, altBounds: new RectangleDouble(mouseEvent.X + 1, mouseEvent.Y + 1, mouseEvent.X + 1, mouseEvent.Y + 1)); }); } }; treeView.ScrollArea.HAnchor = HAnchor.Stretch; treeView.AfterSelect += async(s, e) => { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { horizontalSplitter.Panel2.CloseAllChildren(); horizontalSplitter.Panel2.AddChild(new PrinterDetails(printerInfo, theme) { HAnchor = HAnchor.MaxFitOrStretch, VAnchor = VAnchor.Stretch, Padding = theme.DefaultContainerPadding }); } }; horizontalSplitter.Panel1.AddChild(treeView); horizontalSplitter.Panel2.AddChild(new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }); }