Ejemplo n.º 1
0
        private void MenuItem_Selected(object sender, EventArgs e)
        {
            // When a preset is selected store the current values of all known settings to compare against after applying the preset
            Dictionary <string, string> settingBeforeChange = new Dictionary <string, string>();

            foreach (var keyName in PrinterSettings.KnownSettings)
            {
                settingBeforeChange.Add(keyName, printer.Settings.GetValue(keyName));
            }

            var      activeSettings = printer.Settings;
            MenuItem item           = (MenuItem)sender;

            if (layerType == NamedSettingsLayers.Material)
            {
                if (activeSettings.ActiveMaterialKey != item.Value)
                {
                    // Restore deactivated user overrides by iterating the Material preset we're coming off of
                    activeSettings.RestoreConflictingUserOverrides(activeSettings.MaterialLayer);

                    activeSettings.ActiveMaterialKey = item.Value;

                    // Deactivate conflicting user overrides by iterating the Material preset we've just switched to
                    activeSettings.DeactivateConflictingUserOverrides(activeSettings.MaterialLayer);
                }
            }
            else if (layerType == NamedSettingsLayers.Quality)
            {
                if (activeSettings.ActiveQualityKey != item.Value)
                {
                    // Restore deactivated user overrides by iterating the Quality preset we're coming off of
                    activeSettings.RestoreConflictingUserOverrides(activeSettings.QualityLayer);

                    activeSettings.ActiveQualityKey = item.Value;

                    // Deactivate conflicting user overrides by iterating the Quality preset we've just switched to
                    activeSettings.DeactivateConflictingUserOverrides(activeSettings.QualityLayer);
                }
            }

            // Ensure that activated or deactivated user overrides are always persisted to disk
            activeSettings.Save();

            UiThread.RunOnIdle(() =>
            {
                foreach (var keyName in PrinterSettings.KnownSettings)
                {
                    if (settingBeforeChange[keyName] != printer.Settings.GetValue(keyName))
                    {
                        PrinterSettings.OnSettingChanged(keyName);
                    }
                }
            });

            editButton.Enabled = item.Text != defaultMenuItemText;
        }