/// <summary> /// Sets the plug-in settings for the current session. /// </summary> /// <param name="values">The plug-in settings.</param> /// <exception cref="ArgumentNullException"><paramref name="values"/> is null.</exception> public void SetRegistryValues(DescriptorRegistryValues values) { if (values == null) { throw new ArgumentNullException(nameof(values)); } ReadOnlyDictionary <string, DescriptorRegistryItem> persistedValues = values.PersistedValues; ReadOnlyDictionary <string, DescriptorRegistryItem> sessionValues = values.SessionValues; if (persistedValues != null) { foreach (KeyValuePair <string, DescriptorRegistryItem> item in persistedValues) { registry.Add(item.Key, item.Value); } } if (sessionValues != null) { foreach (KeyValuePair <string, DescriptorRegistryItem> item in sessionValues) { registry.Add(item.Key, item.Value); } } }
public PSFilterPdnConfigToken(Surface dest, PluginData filterData, bool useShim, Dictionary <PluginData, ParameterData> paramData, PseudoResourceCollection resources, DescriptorRegistryValues registryValues, ConfigDialogState configDialog) : base() { Dest = dest; FilterData = filterData; RunWith32BitShim = useShim; FilterParameters = paramData; PseudoResources = resources; DescriptorRegistry = registryValues; DialogState = configDialog; }
static void RunFilter() { PluginData pdata = pipeClient.GetPluginData(); PSFilterShimSettings settings = pipeClient.GetShimSettings(); Region selectionRegion = null; if (!string.IsNullOrEmpty(settings.RegionDataPath)) { RegionDataWrapper wrapper = DataContractSerializerUtil.Deserialize <RegionDataWrapper>(settings.RegionDataPath); using (Region temp = new Region()) { RegionData rgnData = temp.GetRegionData(); rgnData.Data = wrapper.GetData(); selectionRegion = new Region(rgnData); } } try { ParameterData filterParameters = null; try { filterParameters = DataContractSerializerUtil.Deserialize <ParameterData>(settings.ParameterDataPath); } catch (FileNotFoundException) { } PseudoResourceCollection pseudoResources = null; try { pseudoResources = DataContractSerializerUtil.Deserialize <PseudoResourceCollection>(settings.PseudoResourcePath); } catch (FileNotFoundException) { } DescriptorRegistryValues registryValues = null; try { registryValues = DataContractSerializerUtil.Deserialize <DescriptorRegistryValues>(settings.DescriptorRegistryPath); } catch (FileNotFoundException) { } using (LoadPsFilter lps = new LoadPsFilter(settings, selectionRegion)) { lps.SetAbortCallback(pipeClient.AbortFilter); if (!settings.RepeatEffect) { // As Paint.NET does not currently allow custom progress reporting only set this callback for the effect dialog. lps.SetProgressCallback(pipeClient.UpdateFilterProgress); } if (filterParameters != null) { // Ignore the filters that only use the data handle, e.g. Filter Factory. byte[] parameterData = filterParameters.GlobalParameters.GetParameterDataBytes(); if (parameterData != null || filterParameters.AETEDictionary != null) { lps.FilterParameters = filterParameters; lps.IsRepeatEffect = settings.RepeatEffect; } } if (pseudoResources != null) { lps.PseudoResources = pseudoResources; } if (registryValues != null) { lps.SetRegistryValues(registryValues); } bool result = lps.RunPlugin(pdata, settings.ShowAboutDialog); if (result) { if (!settings.ShowAboutDialog) { PSFilterShimImage.Save(settings.DestinationImagePath, lps.Dest); if (!lps.IsRepeatEffect) { DataContractSerializerUtil.Serialize(settings.ParameterDataPath, lps.FilterParameters); DataContractSerializerUtil.Serialize(settings.PseudoResourcePath, lps.PseudoResources); registryValues = lps.GetRegistryValues(); if (registryValues != null) { DataContractSerializerUtil.Serialize(settings.DescriptorRegistryPath, registryValues); } } } } else { pipeClient.SetProxyErrorMessage(lps.ErrorMessage); } } } catch (BadImageFormatException ex) { pipeClient.SetProxyErrorMessage(ex.Message); } catch (EntryPointNotFoundException epnf) { pipeClient.SetProxyErrorMessage(epnf.Message); } catch (FileNotFoundException fx) { pipeClient.SetProxyErrorMessage(fx.Message); } catch (NullReferenceException ex) { #if DEBUG pipeClient.SetProxyErrorMessage(ex.Message + Environment.NewLine + ex.StackTrace); #else pipeClient.SetProxyErrorMessage(ex.Message); #endif } catch (Win32Exception ex) { pipeClient.SetProxyErrorMessage(ex.Message); } finally { if (selectionRegion != null) { selectionRegion.Dispose(); selectionRegion = null; } } }