Cleaned up the settings view options (made switching fast)

This commit is contained in:
Lars Brubaker 2020-12-30 10:35:47 -08:00
parent 51d1e33f9d
commit 544ec762c7
14 changed files with 181 additions and 233 deletions

View file

@ -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());
}

View file

@ -87,8 +87,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
/// <summary>
/// The display minimum display detail that must be set for this setting to be visible
/// </summary>
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;
}
}

View file

@ -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
},

View file

@ -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[]
{

View file

@ -383,24 +383,19 @@ namespace MatterHackers.MatterControl
public event EventHandler<WorkspacesChangedEventArgs> 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<PrinterTabPage>().Where(page => page.Printer == printer).FirstOrDefault();
if (printerTabPage != null)
{
var xxx = workspace.SceneContext.EditContext.
UserSettings.Instance.set(UserSettingsKey.SliceSettingsViewDetail, level);
var printerTabPage = this.Parents<PrinterTabPage>().FirstOrDefault();
if (printerTabPage != null)
{
var sideBar = printerTabPage.Descendants<DockingTabControl>().FirstOrDefault();
sideBar.ReplacePage("Slice Settings",
new SliceSettingsWidget(printer,
new SettingsContext(
printer,
null,
NamedSettingsLayers.All),
theme));
}
var sideBar = printerTabPage.Descendants<DockingTabControl>().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;

View file

@ -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);

View file

@ -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,

View file

@ -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<SystemWindow>().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,

View file

@ -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);

View file

@ -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) =>

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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)

View file

@ -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);
}