I have a Photoshop CS5 panel that I want to have the functionality to save/load preset values.
I used a Local Shared Object in Photoshop CS4. Worked fine. WOuld not work with Photoshop CS5. Compiles but does not work. So, I rewrote the code to use getCustomOptions and putCustomOptions. Again, compiles without a warning or error, but the code does nothing.
It acts like the functions are unimplemented code stubs.
Does anyone have a suggestion for saving/loading runtime values with Photoshop CS5.
I'm using Flex4 Standard. Code samples follow.
Thanks,
Mitch
/** Handle Photoshop Registry **/
privatefunction getSharedObject():void{
try {
// Fetch settings from Photoshop Registry
var defaultsExist:Boolean = true;
var desc:ActionDescriptor = Photoshop.app.getCustomOptions("TLRCapturePro.PanelVersion");
// If DefaultsExist was reset to false, load PanelVersion;
if (defaultsExist == false) { desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.PanelVersion") }
// If settings are from older verison, create and save them;
if (desc.getString(0) != panelVersion){ resetDefaults(); flushSharedObject(); } desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.PresetDefault"); PresetSetting = desc.getInteger(0); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.USMDefaults"); USMAmountSetting = desc.getInteger(0); USMRadiusSetting = desc.getInteger(1); USMThresholdSetting = desc.getInteger(2); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.LayerBlendDefault"); LayerBlendSetting = desc.getInteger(0); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.LayerOpacityDefault"); LayerOpacitySetting = desc.getInteger(0); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.MaskWidthDefault"); MaskWidthSetting = desc.getInteger(0); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.BlendIfDefaults"); SharpeningBlendIf1Setting = desc.getInteger(0); SharpeningBlendIf2Setting = desc.getInteger(1); SharpeningBlendIf3Setting = desc.getInteger(2); SharpeningBlendIf4Setting = desc.getInteger(3); UnderlyingBlendIf1Setting = desc.getInteger(4); UnderlyingBlendIf2Setting = desc.getInteger(5); UnderlyingBlendIf3Setting = desc.getInteger(6); UnderlyingBlendIf4Setting = desc.getInteger(7); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.UseEnhancedMasksDefault"); UseEnhancedMasksSetting = desc.getBoolean(0); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.RetainAlphaChannelsDefault"); RetainAlphaChannelsSetting = desc.getBoolean(0); desc = Photoshop.app.getCustomOptions(
"TLRCapturePro.PresetList"); PresetList =
new XMLList(desc.getString(0)); PresetLabelList =
new XMLList(PresetList.preset.attribute("label")); }
catch(error:Error) { resetDefaults(); flushSharedObject(); defaultsExist =
false; } }
privatefunction flushSharedObject():void{
try {
var desc:ActionDescriptor = new ActionDescriptor; desc.putString(0,panelVersion); Photoshop.app.putCustomOptions(
"TLRCapturePro.PanelVersion",desc,true); desc =
new ActionDescriptor; desc.putInteger(0,USMAmountSetting); desc.putInteger(1,USMRadiusSetting); desc.putInteger(2,USMThresholdSetting); Photoshop.app.putCustomOptions(
"TLRCapturePro.USMDefaults",desc,true); desc =
new ActionDescriptor; desc.putInteger(0,LayerBlendSetting); Photoshop.app.putCustomOptions(
"TLRCapturePro.LayerBlendDefault",desc,true); desc =
new ActionDescriptor; desc.putInteger(0,LayerOpacitySetting); Photoshop.app.putCustomOptions(
"TLRCapturePro.LayerOpacityDefault",desc,true); desc =
new ActionDescriptor; desc.putInteger(0,MaskWidthSetting); Photoshop.app.putCustomOptions(
"TLRCapturePro.MaskWidthDefault",desc,true); desc =
new ActionDescriptor; desc.putInteger(0,SharpeningBlendIf1Setting); desc.putInteger(1,SharpeningBlendIf2Setting); desc.putInteger(2,SharpeningBlendIf3Setting); desc.putInteger(3,SharpeningBlendIf4Setting); desc.putInteger(4,UnderlyingBlendIf1Setting); desc.putInteger(5,UnderlyingBlendIf2Setting); desc.putInteger(6,UnderlyingBlendIf3Setting); desc.putInteger(7,UnderlyingBlendIf4Setting); Photoshop.app.putCustomOptions(
"TLRCapturePro.BlendIfDefaults",desc,true); desc =
new ActionDescriptor; desc.putBoolean(0,UseEnhancedMasksSetting); Photoshop.app.putCustomOptions(
"TLRCapturePro.UseEnhancedMasksDefault",desc,true); desc =
new ActionDescriptor; desc.putBoolean(0,RetainAlphaChannelsSetting); Photoshop.app.putCustomOptions(
"TLRCapturePro.RetainAlphaChannelsDefault",desc,true); desc =
new ActionDescriptor; desc.putString(0,PresetList.toXMLString()); Photoshop.app.putCustomOptions(
"TLRCapturePro.PresetList",desc,true); }
catch(error:Error) { Alert.show(
"Error in flushSharedObject(): " + error.message, "Error!", Alert.OK, Sprite(mx.core.Application.application)); } }
privatefunction resetDefaults():void{
try { PresetList =
new XMLList(
<presets> <preset label="(None)" settings="300,0.8,0,1,65,1,30,50,100,195,25,50,80,200" canDelete="false" canEdit="false" /> <preset label="HRDC: Wide Edges" settings="275,1,0,1,65,0,30,50,100,195,25,50,80,200" canDelete="false" canEdit="false" /> <preset label="HRDC: Medium Edges" settings="300,0.8,0,1,65,1,30,50,100,195,25,50,80,200" canDelete="false" canEdit="false" /> <preset label="HRDC: Narrow Edges" settings="300,0.6,0,1,65,2,30,50,100,195,25,50,80,200" canDelete="false" canEdit="false" /> <preset label="HRDC: Extra Narrow Edges" settings="325,0.5,0,1,65,3,30,50,100,195,25,50,80,200" canDelete="false" canEdit="false" /> <preset label="MRDC: Wide Edges" settings="150,1,0,1,65,0,10,40,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="MRDC: Medium Edges" settings="150,0.7,0,1,65,1,10,40,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="MRDC: Narrow Edges" settings="150,0.6,0,1,65,2,10,40,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="MRDC: Extra Narrow Edges" settings="175,0.5,0,1,65,3,10,40,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="LRDC: Wide Edges" settings="65,2.5,0,1,65,0,0,0,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="LRDC: Medium Edges" settings="65,2.5,0,1,65,1,0,0,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="LRDC: Narrow Edges" settings="60,2.5,0,1,65,2,0,0,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="LRDC: Extra Narrow Edges" settings="60,2.5,0,1,65,3,0,0,140,250,10,40,140,250" canDelete="false" canEdit="false" /> <preset label="SFS: Wide Edges" settings="300,0.8,0,1,65,0,0,0,180,250,10,30,180,250" canDelete="false" canEdit="false" /> <preset label="SFS: Medium Edges" settings="325,1,0,1,65,1,0,0,180,250,10,30,180,250" canDelete="false" canEdit="false" /> <preset label="SFS: Narrow Edges" settings="350,1,0,1,65,2,0,0,180,250,10,30,180,250" canDelete="false" canEdit="false" /> <preset label="SFS: Extra Narrow Edges" settings="400,1,0,1,65,3,0,0,180,250,10,30,180,250" canDelete="false" canEdit="false" /> <preset label="LFS: Wide Edges" settings="375,1.7,0,1,65,0,0,180,0,250,10,30,180,250" canDelete="false" canEdit="false" /> <preset label="LFS: Medium Edges" settings="375,1.2,0,1,65,1,0,0,180,250,10,30,180,250" canDelete="false" canEdit="false" /> <preset label="LFS: Narrow Edges" settings="400,1.3,0,1,65,2,0,0,180,250,10,30,180,250" canDelete="false" canEdit="false" /> <preset label="LFS: Extra Narrow Edges" settings="400,1.2,0,1,65,3,0,0,180,250,10,30,180,250" canDelete="false" canEdit="false" /> </presets> PresetLabelList = XMLList(PresetList.preset.attribute(
"label")); PresetSetting = 0; USMAmountSetting = 300; USMRadiusSetting = 0.8; USMThresholdSetting = 0; LayerBlendSetting = 1; LayerOpacitySetting = 65; MaskWidthSetting = 1; SharpeningBlendIf1Setting = 16; SharpeningBlendIf2Setting = 24; SharpeningBlendIf3Setting = 208; SharpeningBlendIf4Setting = 224; UnderlyingBlendIf1Setting = 24; UnderlyingBlendIf2Setting = 32; UnderlyingBlendIf3Setting = 176; UnderlyingBlendIf4Setting = 208; UseEnhancedMasksSetting =
false; RetainAlphaChannelsSetting =
false }
catch(error:Error) { Alert.show(
"Error in resetDefaults(): " + error.message, "Error!", Alert.OK, Sprite(mx.core.Application.application)); } }