From 544ec762c7421ec88a2c42a88e8562703bcdeb2f Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Wed, 30 Dec 2020 10:35:47 -0800 Subject: [PATCH] Cleaned up the settings view options (made switching fast) --- .../Settings/SettingsLayout.cs | 15 ++- .../Settings/SliceSettingData.cs | 4 +- .../Settings/SliceSettingsFields.cs | 57 ++++++++ .../Settings/SliceSettingsLayouts.cs | 123 ++---------------- .../ApplicationView/ApplicationController.cs | 29 ++--- .../PartPreviewWindow/MainViewWidget.cs | 6 +- .../PartPreviewWindow/PartTabPage.cs | 6 +- .../PartPreviewWindow/PrinterTabPage.cs | 96 +++++++------- .../PartPreviewWindow/SelectedObjectPanel.cs | 1 + MatterControlLib/PartPreviewWindow/Tabs.cs | 2 +- .../View3D/PrinterBar/PrinterActionsBar.cs | 1 + .../PartPreviewWindow/View3D/View3DWidget.cs | 4 +- .../PartPreviewWindow/ViewControls3D.cs | 2 + .../SliceSettingsWidget.cs | 68 +++++----- 14 files changed, 181 insertions(+), 233 deletions(-) diff --git a/MatterControl.Printing/Settings/SettingsLayout.cs b/MatterControl.Printing/Settings/SettingsLayout.cs index 67fc46b21..cc0e43237 100644 --- a/MatterControl.Printing/Settings/SettingsLayout.cs +++ b/MatterControl.Printing/Settings/SettingsLayout.cs @@ -29,9 +29,6 @@ either expressed or implied, of the FreeBSD Project. using System; using System.Collections.Generic; -using System.IO; -using MatterHackers.Agg; -using MatterHackers.Agg.Platform; namespace MatterHackers.MatterControl.SlicerConfiguration { @@ -39,7 +36,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { public SettingsSection Simple { get; } = new SettingsSection("Simple"); - public SettingsSection Moderate { get; } = new SettingsSection("Moderate"); + public SettingsSection Intermediate { get; } = new SettingsSection("Intermediate"); public SettingsSection Advanced { get; } = new SettingsSection("Advanced"); @@ -57,8 +54,16 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return false; }); + CreateLayout(Intermediate, SliceSettingsLayouts.SliceSettings(), (setting) => + { + if (PrinterSettings.SettingsData.TryGetValue(setting, out SliceSettingData data)) + { + return data.ReqiredDisplayDetail != SliceSettingData.DisplayDetailRequired.Advanced; + } + + return false; + }); - CreateLayout(Moderate, SliceSettingsLayouts.ModerateSettings()); CreateLayout(Printer, SliceSettingsLayouts.PrinterSettings()); } diff --git a/MatterControl.Printing/Settings/SliceSettingData.cs b/MatterControl.Printing/Settings/SliceSettingData.cs index 6b8522d4c..d2f9edbac 100644 --- a/MatterControl.Printing/Settings/SliceSettingData.cs +++ b/MatterControl.Printing/Settings/SliceSettingData.cs @@ -87,8 +87,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration /// /// The display minimum display detail that must be set for this setting to be visible /// - public enum DisplayDetailRequired { Simple, Moderate, Advance } + public enum DisplayDetailRequired { Simple, Intermediate, Advanced } - public DisplayDetailRequired ReqiredDisplayDetail { get; internal set; } = DisplayDetailRequired.Moderate; + public DisplayDetailRequired ReqiredDisplayDetail { get; internal set; } = DisplayDetailRequired.Intermediate; } } \ No newline at end of file diff --git a/MatterControl.Printing/Settings/SliceSettingsFields.cs b/MatterControl.Printing/Settings/SliceSettingsFields.cs index 0147db441..a664e57c8 100644 --- a/MatterControl.Printing/Settings/SliceSettingsFields.cs +++ b/MatterControl.Printing/Settings/SliceSettingsFields.cs @@ -82,6 +82,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The shape of the physical print bed.".Localize(), DataEditType = DataEditTypes.LIST, ListValues = "rectangular,circular", + ReqiredDisplayDetail = DisplayDetailRequired.Simple, DefaultValue = "rectangular", RebuildGCodeOnChange = false }, @@ -91,6 +92,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Bed Size".Localize(), HelpText = "The X and Y values of the size of the print bed, in millimeters. For printers with a circular bed, these values are the diameters on the X and Y axes.".Localize(), DataEditType = DataEditTypes.VECTOR2, + ReqiredDisplayDetail = DisplayDetailRequired.Simple, Units = "mm".Localize(), DefaultValue = "200,200" }, @@ -121,6 +123,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Inactive Cool Down".Localize(), HelpText = "The amount to lower the temperature when the hotend is inactive.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "°C".Localize(), ShowIfSet = "!sla_printer&extruder_count>1", DefaultValue = "0" @@ -139,6 +142,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SlicerConfigName = SettingsKey.seconds_to_reheat, PresentationName = "Warm up Time".Localize(), HelpText = "The time it takes to heat back up from a cool down.".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "s".Localize(), ShowIfSet = "!sla_printer&extruder_count>1", @@ -267,6 +271,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Air Gapped Layer".Localize(), HelpText = "The speed at which the layer on top of the air gap will print.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm/s".Localize(), ShowIfSet = "!sla_printer", DefaultValue = "15", @@ -288,6 +293,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SlicerConfigName = SettingsKey.build_height, PresentationName = "Build Height".Localize(), HelpText = "The height of the printer's printable volume, in millimeters. Controls the height of the visual print area displayed in 3D View.".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Simple, DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm".Localize(), DefaultValue = "0", @@ -357,6 +363,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The extra distance the raft will extend around the edge of the part.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", EnableIfSet = "create_raft", DefaultValue = "5", @@ -370,6 +377,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm".Localize(), ShowIfSet = "!sla_printer", + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, EnableIfSet = "create_raft", DefaultValue = ".2", Converter = new ValueConverter(), @@ -380,6 +388,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Raft".Localize(), HelpText = "The speed at which the layers of the raft (other than the first layer) will print. This can be set explicitly or as a percentage of the Infill speed.".Localize(), DataEditType = DataEditTypes.DOUBLE_OR_PERCENT, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm/s or %".Localize(), ShowIfSet = "!sla_printer", DefaultValue = "100%", @@ -411,6 +420,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "External Perimeters First".Localize(), HelpText = "Forces external perimeters to be printed first. By default, they will print last.".Localize(), DataEditType = DataEditTypes.CHECK_BOX, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", DefaultValue = "0", Converter = new MappedToBoolString(), @@ -473,6 +483,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Merge Overlapping Lines".Localize(), HelpText = "Detect perimeters that cross over themselves and combine them.".Localize(), DataEditType = DataEditTypes.CHECK_BOX, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", DefaultValue = "1", Converter = new MappedToBoolString(), @@ -483,6 +494,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Expand Thin Walls".Localize(), HelpText = "Detects sections of the model that would be too thin to print and expands them to make them printable.".Localize(), DataEditType = DataEditTypes.CHECK_BOX, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", DefaultValue = "1", Converter = new MappedToBoolString(), @@ -506,6 +518,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration DataEditType = DataEditTypes.DOUBLE_OR_PERCENT, Units = "Ratio or %".Localize(), ShowIfSet = "!sla_printer", + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, DefaultValue = "3", Converter = new AsPercentOrDirect(), }, @@ -515,6 +528,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Cost".Localize(), HelpText = "The price of one kilogram of filament. Used for estimating the cost of a print in the Layer View.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "$/kg".Localize(), DefaultValue = "0", RebuildGCodeOnChange = false @@ -525,6 +539,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Density".Localize(), HelpText = "Material density. Only used for estimating mass in the Layer View.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "g/cm³".Localize(), DefaultValue = "1.24", RebuildGCodeOnChange = false, @@ -537,6 +552,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Diameter".Localize(), HelpText = "The actual diameter of the filament used for printing.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", Units = "mm".Localize(), DefaultValue = "3", @@ -579,6 +595,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "First Layer".Localize(), HelpText = "A modifier of the width of the extrusion for the first layer of the print. A value greater than 100% can help with adhesion to the print bed.".Localize(), DataEditType = DataEditTypes.DOUBLE_OR_PERCENT, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm or %".Localize(), ShowIfSet = "!sla_printer", DefaultValue = "100%", @@ -611,6 +628,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Initial Layers".Localize(), HelpText = "The number of layers to consider as the beginning of the print. These will print at initial layer speed.".Localize(), DataEditType = DataEditTypes.INT_OR_MM, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "layers or mm".Localize(), ShowIfSet = "sla_printer", DefaultValue = "1", @@ -847,6 +865,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The amount the infill edge will push into the perimeter. Helps ensure the infill is connected to the edge. This can be expressed as a percentage of the Nozzle Diameter.".Localize(), DataEditType = DataEditTypes.DOUBLE_OR_PERCENT, Units = "mm or %".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, DefaultValue = "25%", Converter = new AsPercentOfReferenceOrDirect(SettingsKey.nozzle_diameter, change0ToReference: false), QuickMenuSettings = { { "Light", "20%" }, { "Standard", "35%" }, { "Heavy", "75%" } } @@ -1187,6 +1206,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The minimum length of filament that must be extruded before a retraction can occur.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, EnableIfSet = SettingsKey.enable_retractions, ShowIfSet = "!sla_printer", DefaultValue = ".1", @@ -1229,6 +1249,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "If the time to print a layer is less than this, the fan will turn on at its minimum speed. It will then ramp up to its maximum speed as the layer time decreases.".Localize(), DataEditType = DataEditTypes.INT, Units = "seconds".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "has_fan", EnableIfSet = SettingsKey.enable_fan, DefaultValue = "60", @@ -1252,6 +1273,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Run Max if Below".Localize(), HelpText = "As the time to print a layer decreases to this, the fan speed will be increased up to its maximum speed.".Localize(), DataEditType = DataEditTypes.INT, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "seconds".Localize(), ShowIfSet = "has_fan", EnableIfSet = SettingsKey.enable_fan, @@ -1266,6 +1288,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration DataEditType = DataEditTypes.INT, Units = "%".Localize(), ShowIfSet = "has_fan", + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, EnableIfSet = SettingsKey.enable_fan, DefaultValue = "35", Converter = new ConditionalField(SettingsKey.enable_fan, new ValueConverter()), @@ -1276,6 +1299,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Maximum Speed".Localize(), HelpText = "The maximum speed at which the layer cooling fan will run, expressed as a percentage of full power.".Localize(), DataEditType = DataEditTypes.INT, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "%".Localize(), ShowIfSet = "has_fan", EnableIfSet = SettingsKey.enable_fan, @@ -1289,6 +1313,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The speed at which the layer cooling fan will run when bridging, expressed as a percentage of full power.".Localize(), DataEditType = DataEditTypes.INT, Units = "%".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "has_fan", EnableIfSet = SettingsKey.enable_fan, DefaultValue = "100", @@ -1323,6 +1348,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Minimum Extrusion Length".Localize(), HelpText = "The minimum length of filament to use printing the skirt loops. Enough skirt loops will be drawn to use this amount of filament, overriding the value set in Loops if the value in Loops will produce a skirt shorter than this value.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", EnableIfSet = SettingsKey.create_skirt, Units = "mm".Localize(), @@ -1335,6 +1361,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SlicerConfigName = SettingsKey.nozzle_diameter, PresentationName = "Nozzle Diameter".Localize(), HelpText = "The diameter of the extruder's nozzle.".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Simple, DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm".Localize(), DefaultValue = "0.5", @@ -1354,6 +1381,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Make".Localize(), HelpText = "This is the make (often the manufacturer) of printer this profile is targeting.".Localize(), DataEditType = DataEditTypes.READONLY_STRING, + ReqiredDisplayDetail = DisplayDetailRequired.Simple, DefaultValue = "Undefined" }, new SliceSettingData() @@ -1361,6 +1389,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SlicerConfigName = SettingsKey.model, PresentationName = "Model".Localize(), HelpText = "This is the model of printer this profile is targeting.".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Simple, DataEditType = DataEditTypes.READONLY_STRING, DefaultValue = "Undefined" }, @@ -1410,6 +1439,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration DataEditType = DataEditTypes.DOUBLE_OR_PERCENT, Units = "mm or %".Localize(), ShowIfSet = "!sla_printer", + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, DefaultValue = "100%", Converter = new AsPercentOfReferenceOrDirect(SettingsKey.nozzle_diameter), }, @@ -1430,6 +1460,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Perimeter Acceleration".Localize(), HelpText = "The acceleration that the printer will be set to for perimeters, will not be changed if set to 0. A typical perimeter acceleration is 800.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", Units = "mm/s^2".Localize(), DefaultValue = "0", @@ -1440,6 +1471,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Default Acceleration".Localize(), HelpText = "The acceleration that the printer will be set to by default, will not be changed if set to 0. A typical default acceleration is 1500.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", Units = "mm/s^2".Localize(), DefaultValue = "0", @@ -1450,6 +1482,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Start End Overlap".Localize(), HelpText = "The distance that a perimeter will overlap itself when it completes its loop, expressed as a percentage of the Nozzle Diameter.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "%".Localize(), DefaultValue = "90", Converter = new AsPercentOrDirect(), @@ -1471,6 +1504,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Print Center".Localize(), HelpText = "The position (X and Y coordinates) of the center of the print bed, in millimeters. Normally this is 1/2 the bed size for Cartesian printers and 0, 0 for Delta printers.".Localize(), DataEditType = DataEditTypes.VECTOR2, + ReqiredDisplayDetail = DisplayDetailRequired.Simple, Units = "mm".Localize(), DefaultValue = "100,100" }, @@ -1507,6 +1541,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Minimum Travel Requiring Retraction".Localize(), HelpText = "The minimum distance of a non-print move which will trigger a retraction.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm".Localize(), ShowIfSet = "!sla_printer", EnableIfSet = SettingsKey.enable_retractions, @@ -1520,6 +1555,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The minimum distance with, avoid crossing perimeters turned on, of a non-print move which will trigger a retraction.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", EnableIfSet = SettingsKey.enable_retractions, DefaultValue = "20", @@ -1532,6 +1568,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The distance to travel after completing a perimeter to improve seams.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", DefaultValue = "3", Converter = new ValueConverter(), @@ -1564,6 +1601,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Length on Tool Change".Localize(), HelpText = "When using multiple extruders, the distance filament will reverse before changing to a different extruder.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer&extruder_count>1", Units = "mm".Localize(), EnableIfSet = SettingsKey.enable_retractions, @@ -1575,6 +1613,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SlicerConfigName = SettingsKey.retract_when_changing_islands, PresentationName = "Retract When Changing Islands".Localize(), HelpText = "Force a retraction when moving between islands (distinct parts on the layer).".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, DataEditType = DataEditTypes.CHECK_BOX, ShowIfSet = "!sla_printer", EnableIfSet = SettingsKey.enable_retractions, @@ -1599,6 +1638,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Extra Length After Tool Change".Localize(), HelpText = "Length of extra filament to extrude after a complete tool change (in addition to the re-extrusion of the tool change retraction distance).".Localize(), DataEditType = DataEditTypes.DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer&extruder_count>1", EnableIfSet = SettingsKey.enable_retractions, Units = "mm zero to disable".Localize(), @@ -1630,6 +1670,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Extra Length On Restart".Localize(), HelpText = "Length of filament to extrude after a complete retraction (in addition to the re-extrusion of the Length on Move distance).".Localize(), DataEditType = DataEditTypes.DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm".Localize(), ShowIfSet = "!sla_printer", EnableIfSet = SettingsKey.enable_retractions, @@ -1643,6 +1684,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The time over which to increase the Extra Length On Restart to its maximum value. Below this time only a portion of the extra length will be applied. Leave 0 to apply the entire amount all the time.".Localize(), DataEditType = DataEditTypes.DOUBLE, Units = "s".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", EnableIfSet = SettingsKey.enable_retractions, DefaultValue = "0", @@ -1655,6 +1697,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The speed at which filament will retract and re-extrude.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, Units = "mm/s".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", EnableIfSet = SettingsKey.enable_retractions, DefaultValue = "30", @@ -1693,6 +1736,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The distance from the model at which the first skirt loop is drawn.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, ShowIfSet = "!sla_printer", + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, EnableIfSet = SettingsKey.create_skirt, Units = "mm".Localize(), DefaultValue = "6", @@ -1846,6 +1890,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The distance between the top of the support and the bottom of the model. A good value depends on the type of material. For ABS and PLA a value between 0.4 and 0.6 works well, respectively.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, ShowIfSet = "!sla_printer", + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm".Localize(), DefaultValue = ".3", Converter = new ValueConverter(), @@ -1899,6 +1944,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Line Support Overlap".Localize(), HelpText = "The percentage overlap a given printed line must have over the layer below to be supported.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "%".Localize(), ShowIfSet = "!sla_printer&create_per_layer_support", DefaultValue = "50", @@ -1910,6 +1956,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Support Expand Distance".Localize(), HelpText = "The amount to expand the support so it is easy to grab.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm".Localize(), ShowIfSet = "!sla_printer&create_per_layer_support", DefaultValue = "1", @@ -1932,6 +1979,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The index of the extruder to use to print the raft. Set to 0 to use the support extruder index.".Localize(), ShowIfSet = "!sla_printer&extruder_count>1", EnableIfSet = "create_raft", + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, DataEditType = DataEditTypes.INT, DefaultValue = "0", Converter = new ValuePlusConstant(-1), @@ -1963,6 +2011,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Pattern Spacing".Localize(), HelpText = "The distance between support material lines.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "mm".Localize(), ShowIfSet = "!sla_printer", DefaultValue = "2.5", @@ -1996,6 +2045,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "X and Y Distance".Localize(), HelpText = "The distance the support material will be from the object in the X and Y directions.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", Units = "mm".Localize(), DefaultValue = "0.7", @@ -2007,6 +2057,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Support Type".Localize(), HelpText = "The pattern to draw for the generation of support material.".Localize(), DataEditType = DataEditTypes.LIST, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", ListValues = "GRID,LINES", DefaultValue = "LINES", @@ -2040,6 +2091,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "Modify T1 speeds during extrusion moves by the ratio or percent.".Localize(), DataEditType = DataEditTypes.DOUBLE_OR_PERCENT, Units = "Ratio or %".Localize(), + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer&extruder_count>1", DefaultValue = "100%", Converter = new AsPercentOrDirect() @@ -2088,6 +2140,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Extruder Wipe Temperature".Localize(), HelpText = "The temperature at which the extruder will wipe the nozzle, as specified by Custom G-Code.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, ShowIfSet = "!sla_printer", Units = "°C".Localize(), DefaultValue = "0" @@ -2098,6 +2151,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Bed Remove Part Temperature".Localize(), HelpText = "The temperature to which the bed will heat (or cool) in order to remove the part, as specified in Custom G-Code.".Localize(), DataEditType = DataEditTypes.POSITIVE_DOUBLE, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, Units = "°C".Localize(), ShowIfSet = "has_heated_bed", DefaultValue = "0" @@ -2246,6 +2300,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PresentationName = "Bridge Over Infill".Localize(), HelpText = "Make the first layer on top of partial infill use the speed and fan for bridging.".Localize(), DataEditType = DataEditTypes.CHECK_BOX, + ReqiredDisplayDetail = DisplayDetailRequired.Advanced, DefaultValue = "0", Converter = new MappedToBoolString(), }, @@ -2265,6 +2320,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration HelpText = "The serial port communication speed of the printers firmware.".Localize(), DataEditType = DataEditTypes.INT, ShowAsOverride = false, + ReqiredDisplayDetail = DisplayDetailRequired.Simple, ShowIfSet = null, DefaultValue = "250000", RebuildGCodeOnChange = false @@ -2297,6 +2353,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration DataEditType = DataEditTypes.COM_PORT, ShowAsOverride = false, ShowIfSet = "!enable_network_printing", + ReqiredDisplayDetail = DisplayDetailRequired.Simple, DefaultValue = "", RebuildGCodeOnChange = false }, diff --git a/MatterControl.Printing/Settings/SliceSettingsLayouts.cs b/MatterControl.Printing/Settings/SliceSettingsLayouts.cs index 5cd129d75..f793b6785 100644 --- a/MatterControl.Printing/Settings/SliceSettingsLayouts.cs +++ b/MatterControl.Printing/Settings/SliceSettingsLayouts.cs @@ -33,116 +33,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { public static class SliceSettingsLayouts { - public static (string categoryName, (string groupName, string[] settings)[] groups)[] ModerateSettings() - { - var settings = new[] - { - ("General", new[] - { - ("General", new[] - { - SettingsKey.layer_height, - SettingsKey.first_layer_height, - SettingsKey.perimeters, - SettingsKey.top_solid_layers, - SettingsKey.bottom_solid_layers, - SettingsKey.fill_density, - SettingsKey.infill_type - }), - ("Layers / Surface", new[] - { - SettingsKey.avoid_crossing_perimeters, - SettingsKey.merge_overlapping_lines, - SettingsKey.expand_thin_walls, - }), - ("Infill", new[] - { - SettingsKey.fill_angle, - SettingsKey.fill_thin_gaps, - }), - }), - ("Speed", new[] - { - ("Laser Speed", new[] - { - SettingsKey.laser_speed_025, - SettingsKey.laser_speed_100, - }), - ("Infill Speeds", new[] - { - SettingsKey.first_layer_speed, - SettingsKey.infill_speed, - SettingsKey.top_solid_infill_speed, - }), - ("Perimeter Speeds", new[] - { - SettingsKey.perimeter_speed, - SettingsKey.external_perimeter_speed, - }), - ("Other Speeds", new[] - { - SettingsKey.support_material_speed, - SettingsKey.interface_layer_speed, - SettingsKey.bridge_speed, - SettingsKey.travel_speed, - }), - }), - ("Adhesion", new[] - { - ("Adhesion", new[] - { - SettingsKey.create_skirt, - SettingsKey.skirts, - SettingsKey.create_raft, - SettingsKey.create_brim, - SettingsKey.brims, - }), - }), - ("Support", new[] - { - ("Support", new[] - { - SettingsKey.create_per_layer_support, - SettingsKey.create_per_layer_internal_support, - SettingsKey.support_percent, - SettingsKey.support_material_create_perimeter, - SettingsKey.support_material_interface_layers, - SettingsKey.support_material_spacing, - SettingsKey.support_material_infill_angle, - SettingsKey.support_material_extruder, - SettingsKey.support_material_interface_extruder, - }), - }), - ("Filament", new[] - { - ("Filament", new[] - { - SettingsKey.temperature, - SettingsKey.temperature1, - SettingsKey.temperature2, - SettingsKey.temperature3, - SettingsKey.bed_temperature, - }), - ("Fan", new[] - { - SettingsKey.disable_fan_first_layers, - SettingsKey.min_fan_speed_absolute, - }), - ("Retraction", new[] - { - SettingsKey.retract_length, - SettingsKey.retract_lift, - }), - ("Advanced", new[] - { - SettingsKey.extrusion_multiplier, - }), - }), - }; - - return settings; - } - public static (string categoryName, (string groupName, string[] settings)[] groups)[] SliceSettings() { var settings = new[] @@ -248,12 +138,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }), ("Support", new[] { - ("Support", new[] + ("General", new[] { - SettingsKey.create_per_layer_support, - SettingsKey.create_per_layer_internal_support, - SettingsKey.support_percent, - SettingsKey.support_grab_distance, SettingsKey.support_material_create_perimeter, SettingsKey.support_material_interface_layers, SettingsKey.support_material_xy_distance, @@ -264,6 +150,13 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SettingsKey.support_material_extruder, SettingsKey.support_material_interface_extruder, }), + ("Automatic", new[] + { + SettingsKey.create_per_layer_support, + SettingsKey.create_per_layer_internal_support, + SettingsKey.support_percent, + SettingsKey.support_grab_distance, + }), }), ("Filament", new[] { diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index b23fa7dd9..8eff3d2f1 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -383,24 +383,19 @@ namespace MatterHackers.MatterControl public event EventHandler WorkspacesChanged; - public void ReloadSliceSettings(PrinterConfig printerConfig) + public void ReloadSliceSettings(PrinterConfig printer) { - if (this.Workspaces.FirstOrDefault(w => w.Printer?.Settings.ID == printer.Settings.ID) is PartWorkspace workspace) + var printerTabPage = this.MainView.Descendants().Where(page => page.Printer == printer).FirstOrDefault(); + if (printerTabPage != null) { - var xxx = workspace.SceneContext.EditContext. - UserSettings.Instance.set(UserSettingsKey.SliceSettingsViewDetail, level); - var printerTabPage = this.Parents().FirstOrDefault(); - if (printerTabPage != null) - { - var sideBar = printerTabPage.Descendants().FirstOrDefault(); - sideBar.ReplacePage("Slice Settings", - new SliceSettingsWidget(printer, - new SettingsContext( - printer, - null, - NamedSettingsLayers.All), - theme)); - } + var sideBar = printerTabPage.Descendants().FirstOrDefault(); + sideBar.ReplacePage("Slice Settings", + new SliceSettingsWidget(printer, + new SettingsContext( + printer, + null, + NamedSettingsLayers.All), + Theme)); } } @@ -1479,7 +1474,7 @@ namespace MatterHackers.MatterControl public void OpenPrinter(PrinterInfo printerInfo) { if (this.ActivePrinters.FirstOrDefault(p => p.Settings.ID == printerInfo.ID) is PrinterConfig printer - && this.MainView.TabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerTabPage && printerTabPage.printer == printer) is ITab tab) + && this.MainView.TabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerTabPage && printerTabPage.Printer == printer) is ITab tab) { // Switch to existing printer tab this.MainView.TabControl.ActiveTab = tab; diff --git a/MatterControlLib/PartPreviewWindow/MainViewWidget.cs b/MatterControlLib/PartPreviewWindow/MainViewWidget.cs index 2542c1dc1..f46b8ef1c 100644 --- a/MatterControlLib/PartPreviewWindow/MainViewWidget.cs +++ b/MatterControlLib/PartPreviewWindow/MainViewWidget.cs @@ -574,7 +574,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { // Close existing printer tabs if (tabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerTab - && printerTab.printer.Settings.ID == activePrinter.Settings.ID) is ITab tab + && printerTab.Printer.Settings.ID == activePrinter.Settings.ID) is ITab tab && tab.TabContent is PrinterTabPage printerPage) { tabControl.RemoveTab(tab); @@ -682,7 +682,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow var printerTabPage = tab1?.TabContent as PrinterTabPage; if (printerTabPage == null - || printerTabPage.printer != printer) + || printerTabPage.Printer != printer) { // TODO - call save before remove // printerTabPage.sceneContext.SaveChanges(); @@ -914,7 +914,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow && stringEvent?.Data == SettingsKey.printer_name) { // Try to find a printer tab for the given printer - var printerTab = tabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerPage && printerPage.printer.Settings.ID == printerSettings.ID) as ChromeTab; + var printerTab = tabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerPage && printerPage.Printer.Settings.ID == printerSettings.ID) as ChromeTab; if (printerTab != null) { printerTab.Title = printerSettings.GetValue(SettingsKey.printer_name); diff --git a/MatterControlLib/PartPreviewWindow/PartTabPage.cs b/MatterControlLib/PartPreviewWindow/PartTabPage.cs index 5817a83f6..4b8c88320 100644 --- a/MatterControlLib/PartPreviewWindow/PartTabPage.cs +++ b/MatterControlLib/PartPreviewWindow/PartTabPage.cs @@ -42,7 +42,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // TODO: Don't change casing... almost certainly none of these should be exposed internal View3DWidget view3DWidget; internal ISceneContext sceneContext; - internal PrinterConfig printer; protected ViewControls3D viewControls3D; protected ThemeConfig theme; protected GuiWidget view3DContainer; @@ -50,6 +49,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow protected FlowLayoutWidget leftToRight; protected LibraryListView favoritesBar; + public PrinterConfig Printer => Workspace.Printer; + public PartTabPage(PartWorkspace workspace, ThemeConfig theme, string tabTitle) : base(tabTitle) { @@ -57,7 +58,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.theme = theme; this.BackgroundColor = theme.BackgroundColor; this.Padding = 0; - this.printer = workspace.Printer; this.Workspace = workspace; bool isPrinterType = this is PrinterTabPage; @@ -90,7 +90,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // The 3D model view view3DWidget = new View3DWidget( - printer, + Printer, sceneContext, viewControls3D, theme, diff --git a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs index acd4a95c0..15cbb2a11 100644 --- a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs +++ b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs @@ -98,7 +98,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow var opaqueTrackColor = theme.ResolveColor(theme.BedBackgroundColor, theme.SlightShade); - LayerScrollbar = new SliceLayerSelector(printer, theme) + LayerScrollbar = new SliceLayerSelector(Printer, theme) { VAnchor = VAnchor.Stretch, HAnchor = HAnchor.Right | HAnchor.Fit, @@ -120,7 +120,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow layerRenderRatioSlider.SecondValue = 1; layerRenderRatioSlider.SecondValueChanged += (s, e) => { - if (printer?.Bed?.RenderInfo != null) + if (Printer?.Bed?.RenderInfo != null) { sceneContext.RenderInfo.FeatureToStartOnRatio0To1 = layerRenderRatioSlider.FirstValue; sceneContext.RenderInfo.FeatureToEndOnRatio0To1 = layerRenderRatioSlider.SecondValue; @@ -140,7 +140,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow SetSliderSizes(); }; - PrinterActionsBar = new PrinterActionsBar(printer, this, theme); + PrinterActionsBar = new PrinterActionsBar(Printer, this, theme); theme.ApplyBottomBorder(PrinterActionsBar); PrinterActionsBar.modelViewButton.Enabled = sceneContext.EditableScene; @@ -153,7 +153,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow var position = view3DWidget.Object3DControlLayer.Children.IndexOf(trackball); - gcodePanel = new GCodePanel(this, printer, sceneContext, theme) + gcodePanel = new GCodePanel(this, Printer, sceneContext, theme) { Name = "GCode3DWidget", HAnchor = HAnchor.Stretch, @@ -176,7 +176,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow gcodeContainer.AddChild(gcodePanel); gcodeContainer.Resized += (s, e) => { - if (printer != null) + if (Printer != null) { UserSettings.Instance.SelectedObjectPanelWidth = gcodeContainer.Width; } @@ -196,7 +196,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow splitContainer.AddChild(gcodeContainer); - view3DContainer.AddChild(new RunningTasksWidget(theme, printer) + view3DContainer.AddChild(new RunningTasksWidget(theme, Printer) { MinimumSize = new Vector2(100, 0), Margin = new BorderDouble(top: PrinterActionsBar.Height + 1, left: favoritesBar.LocalBounds.Width + favoritesBar.DeviceMarginAndBorder.Width + 1), @@ -205,15 +205,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow }); // Create and append new widget - gcode2DWidget = new GCode2DWidget(printer, theme) + gcode2DWidget = new GCode2DWidget(Printer, theme) { - Visible = printer.ViewState.ViewMode == PartViewMode.Layers2D + Visible = Printer.ViewState.ViewMode == PartViewMode.Layers2D }; view3DWidget.Object3DControlLayer.AddChild(gcode2DWidget, position + 1); SetSliderSizes(); - this.SetViewMode(printer.ViewState.ViewMode); + this.SetViewMode(Printer.ViewState.ViewMode); this.LayerScrollbar.Margin = LayerScrollbar.Margin.Clone(top: tumbleCubeControl.Height + tumbleCubeControl.Margin.Height + 4); @@ -230,15 +230,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } // Register listeners - printer.ViewState.VisibilityChanged += ProcessOptionalTabs; - printer.ViewState.ViewModeChanged += ViewState_ViewModeChanged; + Printer.ViewState.VisibilityChanged += ProcessOptionalTabs; + Printer.ViewState.ViewModeChanged += ViewState_ViewModeChanged; - printer.Bed.RendererOptions.PropertyChanged += RendererOptions_PropertyChanged; + Printer.Bed.RendererOptions.PropertyChanged += RendererOptions_PropertyChanged; // register for communication messages - printer.Connection.CommunicationStateChanged += Connection_CommunicationStateChanged; - printer.Connection.PauseOnLayer += Connection_PauseOnLayer; - printer.Connection.FilamentRunout += Connection_FilamentRunout; + Printer.Connection.CommunicationStateChanged += Connection_CommunicationStateChanged; + Printer.Connection.PauseOnLayer += Connection_PauseOnLayer; + Printer.Connection.FilamentRunout += Connection_FilamentRunout; ApplicationController.Instance.ApplicationError += ApplicationController_ApplicationError; ApplicationController.Instance.ApplicationEvent += ApplicationController_ApplicationEvent; @@ -279,9 +279,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void ResumePrint(bool clickedOk) { // They clicked either Resume or Ok - if (clickedOk && printer.Connection.Paused) + if (clickedOk && Printer.Connection.Paused) { - printer.Connection.Resume(); + Printer.Connection.Resume(); } } @@ -314,7 +314,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow unloadFilamentButton.Click += (s, e2) => { unloadFilamentButton.Parents().First().Close(); - DialogWindow.Show(new UnloadFilamentWizard(printer, extruderIndex: 0)); + DialogWindow.Show(new UnloadFilamentWizard(Printer, extruderIndex: 0)); }; theme.ApplyPrimaryActionStyle(unloadFilamentButton); @@ -358,17 +358,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void ApplicationController_ApplicationEvent(object sender, string e) { - printer.Connection.TerminalLog.WriteLine(e); + Printer.Connection.TerminalLog.WriteLine(e); } private void ApplicationController_ApplicationError(object sender, string e) { - printer.Connection.TerminalLog.WriteLine(e); + Printer.Connection.TerminalLog.WriteLine(e); } private void RendererOptions_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { - if (e.PropertyName == nameof(printer.Bed.RendererOptions.SyncToPrint)) + if (e.PropertyName == nameof(Printer.Bed.RendererOptions.SyncToPrint)) { this.SetSliderVisibility(); } @@ -409,7 +409,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow gcode2DWidget.Visible = viewMode == PartViewMode.Layers2D; - view3DWidget.Object3DControlLayer.DrawOpenGLContent = printer?.ViewState.ViewMode != PartViewMode.Layers2D; + view3DWidget.Object3DControlLayer.DrawOpenGLContent = Printer?.ViewState.ViewMode != PartViewMode.Layers2D; sceneContext.ViewState.ModelView = viewMode == PartViewMode.Model; @@ -419,12 +419,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow if (viewMode == PartViewMode.Layers3D) { - printer.Bed.Scene.ClearSelection(); + Printer.Bed.Scene.ClearSelection(); } this.SetSliderVisibility(); - view3DWidget.modelViewSidePanel.Visible = printer?.ViewState.ViewMode == PartViewMode.Model; + view3DWidget.modelViewSidePanel.Visible = Printer?.ViewState.ViewMode == PartViewMode.Model; } private void BedPlate_LoadedGCodeChanged(object sender, EventArgs e) @@ -441,7 +441,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void SetSliderVisibility() { - bool printerIsRunningPrint = printer.Connection.Paused || printer.Connection.Printing; + bool printerIsRunningPrint = Printer.Connection.Paused || Printer.Connection.Printing; if (gcodeOptions.SyncToPrint && printerIsRunningPrint) { @@ -457,7 +457,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow layerRenderRatioSlider.SecondValue = 1; } - bool hasLayers = printer.Bed.LoadedGCode?.LayerCount > 0; + bool hasLayers = Printer.Bed.LoadedGCode?.LayerCount > 0; layerRenderRatioSlider.Visible = hasLayers && !sceneContext.ViewState.ModelView; LayerScrollbar.Visible = hasLayers && !sceneContext.ViewState.ModelView; @@ -480,9 +480,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private bool SetAnimationPosition() { - LayerScrollbar.Value = printer.Connection.CurrentlyPrintingLayer; + LayerScrollbar.Value = Printer.Connection.CurrentlyPrintingLayer; - double currentPosition = printer.Connection.RatioIntoCurrentLayerInstructions; + double currentPosition = Printer.Connection.RatioIntoCurrentLayerInstructions; layerRenderRatioSlider.FirstValue = 0; if (lastPosition != currentPosition) @@ -501,10 +501,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public override void OnDraw(Graphics2D graphics2D) { - bool printerIsRunningPrint = printer.Connection.Paused || printer.Connection.Printing; + bool printerIsRunningPrint = Printer.Connection.Paused || Printer.Connection.Printing; if (gcodeOptions.SyncToPrint && printerIsRunningPrint - && printer.ViewState.ViewMode != PartViewMode.Model) + && Printer.ViewState.ViewMode != PartViewMode.Model) { if (this.SetAnimationPosition()) { @@ -517,7 +517,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow protected override void GetViewControls3DOverflowMenu(PopupMenu popupMenu) { - if (printer?.ViewState.ViewMode != PartViewMode.Model) + if (Printer?.ViewState.ViewMode != PartViewMode.Model) { view3DWidget.ShowBedViewOptions(popupMenu); this.ShowGCodeOverflowMenu(popupMenu); @@ -532,14 +532,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { // Unregister listeners sceneContext.LoadedGCodeChanged -= BedPlate_LoadedGCodeChanged; - printer.Connection.CommunicationStateChanged -= Connection_CommunicationStateChanged; + Printer.Connection.CommunicationStateChanged -= Connection_CommunicationStateChanged; - printer.Connection.PauseOnLayer -= Connection_PauseOnLayer; - printer.Connection.FilamentRunout -= Connection_FilamentRunout; + Printer.Connection.PauseOnLayer -= Connection_PauseOnLayer; + Printer.Connection.FilamentRunout -= Connection_FilamentRunout; - printer.ViewState.VisibilityChanged -= ProcessOptionalTabs; - printer.ViewState.ViewModeChanged -= ViewState_ViewModeChanged; - printer.Bed.RendererOptions.PropertyChanged -= RendererOptions_PropertyChanged; + Printer.ViewState.VisibilityChanged -= ProcessOptionalTabs; + Printer.ViewState.ViewModeChanged -= ViewState_ViewModeChanged; + Printer.Bed.RendererOptions.PropertyChanged -= RendererOptions_PropertyChanged; ApplicationController.Instance.ApplicationError -= ApplicationController_ApplicationError; ApplicationController.Instance.ApplicationEvent -= ApplicationController_ApplicationEvent; @@ -548,15 +548,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private void AddSettingsTabBar(GuiWidget parent, GuiWidget widgetTodockTo) { - sideBar = new DockingTabControl(widgetTodockTo, DockSide.Right, printer, theme) + sideBar = new DockingTabControl(widgetTodockTo, DockSide.Right, Printer, theme) { Name = "DockingTabControl", - ControlIsPinned = printer.ViewState.SliceSettingsTabPinned, + ControlIsPinned = Printer.ViewState.SliceSettingsTabPinned, MinDockingWidth = 400 * (int)GuiWidget.DeviceScale }; sideBar.PinStatusChanged += (s, e) => { - printer.ViewState.SliceSettingsTabPinned = sideBar.ControlIsPinned; + Printer.ViewState.SliceSettingsTabPinned = sideBar.ControlIsPinned; }; parent.AddChild(sideBar); @@ -564,9 +564,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow "Slice Settings", "Slice Settings".Localize(), sliceSettingsWidget = new SliceSettingsWidget( - printer, + Printer, new SettingsContext( - printer, + Printer, null, NamedSettingsLayers.All), theme)); @@ -580,16 +580,16 @@ namespace MatterHackers.MatterControl.PartPreviewWindow sideBar.RemovePage("Terminal", false); sideBar.RemovePage("Printer", false); - if (printer.ViewState.ControlsVisible) + if (Printer.ViewState.ControlsVisible) { - sideBar.AddPage("Controls", "Controls".Localize(), new ManualPrinterControls(printer, theme), false); + sideBar.AddPage("Controls", "Controls".Localize(), new ManualPrinterControls(Printer, theme), false); } - if (printer.ViewState.TerminalVisible) + if (Printer.ViewState.TerminalVisible) { sideBar.AddPage("Terminal", "Terminal".Localize(), - new TerminalWidget(printer, theme) + new TerminalWidget(Printer, theme) { VAnchor = VAnchor.Stretch, HAnchor = HAnchor.Stretch @@ -597,12 +597,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow false); } - if (printer.ViewState.ConfigurePrinterVisible) + if (Printer.ViewState.ConfigurePrinterVisible) { sideBar.AddPage( "Printer", "Printer".Localize(), - new ConfigurePrinterWidget(sliceSettingsWidget.SettingsContext, printer, theme) + new ConfigurePrinterWidget(sliceSettingsWidget.SettingsContext, Printer, theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, diff --git a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs index 7c7e38b20..c19dc1588 100644 --- a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs +++ b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs @@ -132,6 +132,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { Enabled = scene.SelectedItem != null, }; + overflowButton.ToolTipText = "Selected Object Options".Localize(); overflowButton.DynamicPopupContent = () => { return ApplicationController.Instance.GetModifyMenu(view3DWidget.sceneContext); diff --git a/MatterControlLib/PartPreviewWindow/Tabs.cs b/MatterControlLib/PartPreviewWindow/Tabs.cs index e4a0fa263..391589d3e 100644 --- a/MatterControlLib/PartPreviewWindow/Tabs.cs +++ b/MatterControlLib/PartPreviewWindow/Tabs.cs @@ -438,7 +438,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow UiThread.RunOnIdle(() => { if (this.TabContent is PrinterTabPage printerTab - && printerTab.printer.Connection.Printing) + && printerTab.Printer.Connection.Printing) { StyledMessageBox.ShowMessageBox( (bool response) => diff --git a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrinterActionsBar.cs b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrinterActionsBar.cs index 252750e57..63da9764e 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrinterActionsBar.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrinterActionsBar.cs @@ -206,6 +206,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } this.OverflowButton.Name = "Printer Overflow Menu"; + this.OverflowButton.ToolTipText = "Printer Options".Localize(); this.ExtendOverflowMenu = (popupMenu) => { this.GeneratePrinterOverflowMenu(popupMenu, ApplicationController.Instance.MenuTheme); diff --git a/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs b/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs index 5357347dc..e6ca0f30d 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs @@ -1762,9 +1762,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // Render 3D GCode if applicable if (sceneContext.LoadedGCode != null && sceneContext.GCodeRenderer != null - && printerTabPage?.printer.ViewState.ViewMode == PartViewMode.Layers3D) + && printerTabPage?.Printer.ViewState.ViewMode == PartViewMode.Layers3D) { - printerTabPage.printer.Bed.RenderGCode3D(e); + printerTabPage.Printer.Bed.RenderGCode3D(e); } } diff --git a/MatterControlLib/PartPreviewWindow/ViewControls3D.cs b/MatterControlLib/PartPreviewWindow/ViewControls3D.cs index 866ce4a9d..0066f1edf 100644 --- a/MatterControlLib/PartPreviewWindow/ViewControls3D.cs +++ b/MatterControlLib/PartPreviewWindow/ViewControls3D.cs @@ -108,6 +108,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow view3DWidget.Object3DControlLayer.Focus(); }; + this.OverflowButton.ToolTipText = "Tool Bar Overflow".Localize(); + this.OverflowButton.DynamicPopupContent = () => { bool IncludeInMenu(SceneOperation operation) diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs index 6c58440f4..c975872ca 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs @@ -73,8 +73,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration settingsSection = PrinterSettings.Layout.Simple; break; - case "Moderate": - settingsSection = PrinterSettings.Layout.Moderate; + case "Intermediate": + settingsSection = PrinterSettings.Layout.Intermediate; break; case "Advanced": @@ -153,6 +153,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration this.scopeName = scopeName; var overflowBar = this.TabBar as OverflowBar; + overflowBar.ToolTipText = "Settings View Options".Localize(); overflowBar.ExtendOverflowMenu = this.ExtendOverflowMenu; var overflowButton = this.TabBar.RightAnchorItem; @@ -326,23 +327,14 @@ namespace MatterHackers.MatterControl.SlicerConfiguration searchButton.VAnchorChanged += (s, e) => Console.WriteLine(); // Restore the last selected tab - if (int.TryParse(UserSettings.Instance.get(databaseMRUKey), out int tabIndex) - && tabIndex >= 0 - && tabIndex < this.TabCount) - { - this.SelectedTabIndex = tabIndex; - } - else - { - this.SelectedTabIndex = 0; - } + this.SelectedTabKey = UserSettings.Instance.get(databaseMRUKey); // Store the last selected tab on change this.ActiveTabChanged += (s, e) => { if (settingsContext.IsPrimarySettingsView) { - UserSettings.Instance.set(databaseMRUKey, this.SelectedTabIndex.ToString()); + UserSettings.Instance.set(databaseMRUKey, this.SelectedTabKey); } }; @@ -378,7 +370,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private void ExtendOverflowMenu(PopupMenu popupMenu) { - popupMenu.CreateMenuItem("View Just My Settings".Localize()).Click += (s, e) => + var menu = popupMenu.CreateMenuItem("View Just My Settings".Localize()); + menu.ToolTipText = "Show all settings that are not the printer default".Localize(); + menu.Click += (s, e) => { switch (settingsContext.ViewFilter) { @@ -406,35 +400,35 @@ namespace MatterHackers.MatterControl.SlicerConfiguration this.ForceExpansionMode(ExpansionMode.Collapsed); }; - popupMenu.CreateSeparator(); + if (this.scopeName == "SliceSettings" + && settingsContext.ViewFilter == NamedSettingsLayers.All) + { + popupMenu.CreateSeparator(); - popupMenu.CreateSubMenu("Settings Detail".Localize(), - theme, - (menu) => + void SetDetail(string level, bool value) { - void SetDetail(string level, bool value) + UiThread.RunOnIdle(() => { - UiThread.RunOnIdle(() => + if (value) { - if (value) - { - ApplicationController.Instance.ReloadSliceSettings(printer); - } - }); - } + UserSettings.Instance.set(UserSettingsKey.SliceSettingsViewDetail, level); + ApplicationController.Instance.ReloadSliceSettings(printer); + } + }); + } - menu.CreateBoolMenuItem("Simple".Localize(), - () => UserSettings.Instance.get(UserSettingsKey.SliceSettingsViewDetail) == "Simple", - (value) => SetDetail("Simple", value)); - - menu.CreateBoolMenuItem("Moderate".Localize(), - () => UserSettings.Instance.get(UserSettingsKey.SliceSettingsViewDetail) == "Moderate", - (value) => SetDetail("Moderate", value)); + popupMenu.CreateBoolMenuItem("Simple".Localize(), + () => UserSettings.Instance.get(UserSettingsKey.SliceSettingsViewDetail) == "Simple", + (value) => SetDetail("Simple", value)); - menu.CreateBoolMenuItem("Advanced".Localize(), - () => UserSettings.Instance.get(UserSettingsKey.SliceSettingsViewDetail) == "Advanced", - (value) => SetDetail("Advanced", value)); - }); + popupMenu.CreateBoolMenuItem("Intermediate".Localize(), + () => UserSettings.Instance.get(UserSettingsKey.SliceSettingsViewDetail) == "Intermediate", + (value) => SetDetail("Intermediate", value)); + + popupMenu.CreateBoolMenuItem("Advanced".Localize(), + () => UserSettings.Instance.get(UserSettingsKey.SliceSettingsViewDetail) == "Advanced", + (value) => SetDetail("Advanced", value)); + } externalExtendMenu?.Invoke(popupMenu); }