diff --git a/ActionBar/PrintActionRow.cs b/ActionBar/PrintActionRow.cs index 4b0cf07a7..e8c52647c 100644 --- a/ActionBar/PrintActionRow.cs +++ b/ActionBar/PrintActionRow.cs @@ -28,6 +28,8 @@ either expressed or implied, of the FreeBSD Project. */ using MatterHackers.Agg; +using MatterHackers.Agg.ImageProcessing; +using MatterHackers.Agg.PlatformAbstract; using MatterHackers.Agg.UI; using MatterHackers.Localizations; using MatterHackers.MatterControl.ConfigurationPage.PrintLeveling; @@ -93,11 +95,11 @@ namespace MatterHackers.MatterControl.ActionBar protected override void AddChildElements() { - addButton = textImageButtonFactory.GenerateTooltipButton("Add".Localize(), "icon_circle_plus.png"); + addButton = textImageButtonFactory.GenerateTooltipButton("Add".Localize(), InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("icon_circle_plus.png",32,32))); addButton.ToolTipText = "Add a file to be printed".Localize(); addButton.Margin = new BorderDouble(6, 6, 6, 3); - startButton = textImageButtonFactory.GenerateTooltipButton("Print".Localize(), "icon_play_32x32.png"); + startButton = textImageButtonFactory.GenerateTooltipButton("Print".Localize(), InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("icon_play_32x32.png",32,32))); startButton.ToolTipText = "Begin printing the selected item.".Localize(); startButton.Margin = new BorderDouble(6, 6, 6, 3); startButton.Click += onStartButton_Click; @@ -108,13 +110,13 @@ namespace MatterHackers.MatterControl.ActionBar string connectButtonText = "Connect".Localize(); string connectButtonMessage = "Connect to the printer".Localize(); - connectButton = textImageButtonFactory.GenerateTooltipButton(connectButtonText, "icon_power_32x32.png"); + connectButton = textImageButtonFactory.GenerateTooltipButton(connectButtonText, InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("icon_power_32x32.png",32,32))); connectButton.ToolTipText = connectButtonMessage; connectButton.Margin = new BorderDouble(6, 6, 6, 3); string resetConnectionButtontText = "Reset".Localize(); string resetConnectionButtonMessage = "Reboots the firmware on the controller".Localize(); - resetConnectionButton = textImageButtonFactory.GenerateTooltipButton(resetConnectionButtontText, "e_stop4.png"); + resetConnectionButton = textImageButtonFactory.GenerateTooltipButton(resetConnectionButtontText, InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("e_stop4.png", 32,32))); resetConnectionButton.ToolTipText = resetConnectionButtonMessage; resetConnectionButton.ToolTipText = resetConnectionButtonMessage; resetConnectionButton.Margin = new BorderDouble(6, 6, 6, 3); diff --git a/ActionBar/PrintStatusRow.cs b/ActionBar/PrintStatusRow.cs index 8407aad0f..e4f447e17 100644 --- a/ActionBar/PrintStatusRow.cs +++ b/ActionBar/PrintStatusRow.cs @@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project. using MatterHackers.Agg; using MatterHackers.Agg.Image; +using MatterHackers.Agg.ImageProcessing; using MatterHackers.Agg.PlatformAbstract; using MatterHackers.Agg.UI; using MatterHackers.Localizations; @@ -234,7 +235,7 @@ namespace MatterHackers.MatterControl.ActionBar { ImageButtonFactory imageButtonFactory = new ImageButtonFactory(); imageButtonFactory.InvertImageColor = false; - ImageBuffer levelingImage = StaticData.Instance.LoadIcon("leveling_32x32.png", 16, 16); + ImageBuffer levelingImage = InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("leveling_32x32.png", 16, 16)); Button autoLevelButton = imageButtonFactory.Generate(levelingImage, levelingImage); autoLevelButton.Cursor = Cursors.Hand; autoLevelButton.Margin = new Agg.BorderDouble(top: 3); diff --git a/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs b/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs index e49da382c..8cd6c1efa 100644 --- a/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs +++ b/ConfigurationPage/CalibrationSettings/CalibrationSettingsView.cs @@ -80,7 +80,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage UiThread.RunOnIdle(() => LevelWizardBase.ShowPrintLevelWizard(LevelWizardBase.RuningState.UserRequestedCalibration)); }; - ImageBuffer levelingImage = StaticData.Instance.LoadIcon("leveling_32x32.png", 24, 24); + ImageBuffer levelingImage = InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("leveling_32x32.png", 24, 24)); if (!ActiveTheme.Instance.IsDarkTheme) { diff --git a/ConfigurationPage/CloudSettings/CloudSettingsView.cs b/ConfigurationPage/CloudSettings/CloudSettingsView.cs index 4d6cce265..237e00ccc 100644 --- a/ConfigurationPage/CloudSettings/CloudSettingsView.cs +++ b/ConfigurationPage/CloudSettings/CloudSettingsView.cs @@ -72,7 +72,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage cloudSyncContainer.Margin = new BorderDouble(0, 0, 0, 0); cloudSyncContainer.Padding = new BorderDouble(0); - ImageBuffer cloudMonitorImage = StaticData.Instance.LoadIcon("cloud-24x24.png"); + ImageBuffer cloudMonitorImage = InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("cloud-24x24.png")); cloudMonitorImage.SetRecieveBlender(new BlenderPreMultBGRA()); int iconSize = (int)(24 * GuiWidget.DeviceScale); if (!ActiveTheme.Instance.IsDarkTheme) @@ -119,7 +119,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage this.textImageButtonFactory.FixedHeight = TallButtonHeight; - ImageBuffer notifiImage = StaticData.Instance.LoadIcon("notify-24x24.png"); + ImageBuffer notifiImage = InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("notify-24x24.png")); notifiImage.SetRecieveBlender(new BlenderPreMultBGRA()); int iconSize = (int)(24 * GuiWidget.DeviceScale); if (!ActiveTheme.Instance.IsDarkTheme) diff --git a/ConfigurationPage/PrinterSettings/PrinterSettingsView.cs b/ConfigurationPage/PrinterSettings/PrinterSettingsView.cs index 8f299e00e..61cea6df5 100644 --- a/ConfigurationPage/PrinterSettings/PrinterSettingsView.cs +++ b/ConfigurationPage/PrinterSettings/PrinterSettingsView.cs @@ -70,7 +70,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage buttonRow.HAnchor = HAnchor.ParentLeftRight; buttonRow.Margin = new BorderDouble(0, 4); - ImageBuffer cameraIconImage = StaticData.Instance.LoadIcon("camera-24x24.png"); + ImageBuffer cameraIconImage = StaticData.Instance.LoadIcon("camera-24x24.png",24,24); cameraIconImage.SetRecieveBlender(new BlenderPreMultBGRA()); int iconSize = (int)(24 * GuiWidget.DeviceScale); @@ -123,7 +123,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage buttonRow.HAnchor = HAnchor.ParentLeftRight; buttonRow.Margin = new BorderDouble(0, 4); - ImageBuffer terminalSettingsImage = StaticData.Instance.LoadIcon("terminal-24x24.png"); + ImageBuffer terminalSettingsImage = InvertLightness.DoInvertLightness(StaticData.Instance.LoadIcon("terminal-24x24.png", 24, 24)); terminalSettingsImage.SetRecieveBlender(new BlenderPreMultBGRA()); int iconSize = (int)(24 * GuiWidget.DeviceScale); diff --git a/ControlElements/TextImageButtonFactory.cs b/ControlElements/TextImageButtonFactory.cs index f11e89629..48ec3bd57 100644 --- a/ControlElements/TextImageButtonFactory.cs +++ b/ControlElements/TextImageButtonFactory.cs @@ -188,6 +188,29 @@ namespace MatterHackers.MatterControl return textImageButton; } + public Button GenerateTooltipButton(string label, ImageBuffer normalImageName, ImageBuffer hoverImageName = null, ImageBuffer pressedImageName = null, ImageBuffer disabledImageName = null) + { + //Create button based on view container widget + ButtonViewStates buttonViewWidget = getButtonView(label, normalImageName, hoverImageName, pressedImageName, disabledImageName); + + Button textImageButton = new Button(0, 0, buttonViewWidget); + textImageButton.Margin = new BorderDouble(0); + textImageButton.Padding = new BorderDouble(0); + + //Override the width if requested + if (this.FixedWidth != 0) + { + buttonViewWidget.Width = this.FixedWidth; + textImageButton.Width = this.FixedWidth; + } + + //Override the height if requested + buttonViewWidget.Height = this.FixedHeight; + textImageButton.Height = this.FixedHeight; + + return textImageButton; + } + public GuiWidget GenerateGroupBoxLabelWithEdit(TextWidget textWidget, out Button editButton) { FlowLayoutWidget groupLableAndEditControl = new FlowLayoutWidget(); @@ -210,7 +233,7 @@ namespace MatterHackers.MatterControl Button editButton; if (ActiveTheme.Instance.IsDarkTheme) { - editButton = new Button(0, 0, new ButtonViewThreeImage(SetToColor.CreateSetToColor(normalImage, RGBA_Bytes.Black), + editButton = new Button(0, 0, new ButtonViewThreeImage(SetToColor.CreateSetToColor(normalImage, RGBA_Bytes.White), SetToColor.CreateSetToColor(normalImage, RGBA_Bytes.Gray), normalImage)); } diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index fa802156c..362648c01 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -1065,34 +1065,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration Margin = new BorderDouble() }; - string machineSpecificComPortValue = ActiveSliceSettings.Instance.ComPort(); - foreach (string listItem in FrostedSerialPort.GetPortNames()) + selectableOptions.Click += (s, e) => { - MenuItem newItem = selectableOptions.AddItem(listItem); - if (newItem.Text == machineSpecificComPortValue) - { - selectableOptions.SelectedLabel = machineSpecificComPortValue; - } + AddComMenuItems(settingData, settingsRow, selectableOptions); + }; - newItem.Selected += (sender, e) => - { - MenuItem menuItem = ((MenuItem)sender); - - // Directly set the ComPort - if (persistenceLayer == null) - { - ActiveSliceSettings.Instance.SetComPort(menuItem.Text); - } - else - { - ActiveSliceSettings.Instance.SetComPort(menuItem.Text, persistenceLayer); - } - - settingsRow.UpdateStyle(); - - OnSettingsChanged(settingData); - }; - } + AddComMenuItems(settingData, settingsRow, selectableOptions); dataArea.AddChild(selectableOptions); @@ -1394,6 +1372,39 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return container; } + private void AddComMenuItems(OrganizerSettingsData settingData, SettingsRow settingsRow, StyledDropDownList selectableOptions) + { + selectableOptions.MenuItems.Clear(); + string machineSpecificComPortValue = ActiveSliceSettings.Instance.ComPort(); + foreach (string listItem in FrostedSerialPort.GetPortNames()) + { + MenuItem newItem = selectableOptions.AddItem(listItem); + if (newItem.Text == machineSpecificComPortValue) + { + selectableOptions.SelectedLabel = machineSpecificComPortValue; + } + + newItem.Selected += (sender, e) => + { + MenuItem menuItem = ((MenuItem)sender); + + // Directly set the ComPort + if (persistenceLayer == null) + { + ActiveSliceSettings.Instance.SetComPort(menuItem.Text); + } + else + { + ActiveSliceSettings.Instance.SetComPort(menuItem.Text, persistenceLayer); + } + + settingsRow.UpdateStyle(); + + OnSettingsChanged(settingData); + }; + } + } + static ImageBuffer restoreNormal = EnsureRestoreButtonImages(); static ImageBuffer restoreHover; static ImageBuffer restorePressed; diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index b9ba038fc..4d9f2d9ae 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit b9ba038fcb375ef1bf9b004f962d5502ad840e8b +Subproject commit 4d9f2d9ae2b42e956493930d014cdbcc1796ee74