Making it possible to register for specific settings changes (extending what we've been doing to be more generic).

This commit is contained in:
larsbrubaker 2014-10-02 14:42:18 -07:00
parent 7a3d263f9d
commit 2881375666
4 changed files with 43 additions and 21 deletions

View file

@ -49,18 +49,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
"extruder_count",
};
static List<string> settingsRequiringPreviewUpdate = new List<string>()
{
"bed_size",
"print_center",
"build_height",
"bed_shape",
"center_part_on_bed",
"extruder_offset",
};
public static RootedObjectEventHandler PartPreviewSettingsChanged = new RootedObjectEventHandler();
const string SliceSettingsShowHelpEntry = "SliceSettingsShowHelp";
const string SliceSettingsLevelEntry = "SliceSettingsLevel";
TextImageButtonFactory buttonFactory = new TextImageButtonFactory();
@ -489,17 +477,32 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
return dataTypeInfo;
}
static Dictionary<string, RootedObjectEventHandler> functionsToCallOnChange = new Dictionary<string, RootedObjectEventHandler>();
public static void RegisterForSettingsChange(string settingName, EventHandler functionToCallOnChange, ref EventHandler functionThatWillBeCalledToUnregisterEvent)
{
if (!functionsToCallOnChange.ContainsKey(settingName))
{
functionsToCallOnChange.Add(settingName, new RootedObjectEventHandler());
}
RootedObjectEventHandler rootedEvent = functionsToCallOnChange[settingName];
rootedEvent.RegisterEvent(functionToCallOnChange, ref functionThatWillBeCalledToUnregisterEvent);
}
private void CallEventsOnSettingsChange(OrganizerSettingsData settingData)
{
foreach (KeyValuePair<string, RootedObjectEventHandler> keyValue in functionsToCallOnChange)
{
if (keyValue.Key == settingData.SlicerConfigName)
{
keyValue.Value.CallEvents(null, null);
}
}
if (settingToReloadUiWhenChanged.Contains(settingData.SlicerConfigName))
{
ApplicationController.Instance.ReloadAll(null, null);
}
if (settingsRequiringPreviewUpdate.Contains(settingData.SlicerConfigName))
{
PartPreviewSettingsChanged.CallEvents(this, null);
}
}
private GuiWidget CreateSettingInfoUIControls(OrganizerSettingsData settingData, double minSettingNameWidth, int extruderIndex)

View file

@ -88,8 +88,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
//doCoolHeadLift=False # Will cause the head to be raised in z until the min layer time is reached.
new MapItemToBool("doCoolHeadLift", "cool_extruder_lift"),
//new MapItemToBool("extruder_2_offset", ""),
//new MapItemToBool("temperature_extruder_2", ""),
new NotPassedItem("", "extruder_count"),
//endCode=M104 S0