Copy link to clipboard
Copied
Is there a way to set a panel's x/y position and size using PS scripting? If someone could point me to some documentation on this, that would be hugely appreciated!
Copy link to clipboard
Copied
If you are asking about the built-in panels, no you can not move or size them with scripting.
Copy link to clipboard
Copied
Thanks for your response Michael.
Actually, to be more specific, I'm building a Flash based panel to use with Photoshop. Not sure if this qualifies as a "built-in" panel as you mention.
What I'm looking to do is have the panel resize itself when a button within the panel is pressed. Also, I'd like to be able to position the panel to a specific x/y location when it is opened.
Copy link to clipboard
Copied
I don't think you can set the position of a custom panel. It seems to open where ever it was last closed. But you can set the size.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()"
paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0"
verticalScrollPolicy="off" horizontalScrollPolicy="off"
horizontalGap="0" verticalGap="1">
<mx:Script>
<![CDATA[
import com.adobe.csxs.core.CSXSInterface;
import com.adobe.csxs.events.*;
import com.adobe.csxs.types.*;
private function getGeometry():WindowGeometry {
var panel_X:Number = 100;
var panel_Y:Number = 100;
var panel_W:Number = windowsizebox.width + 15;
var panel_H:Number = windowsizebox.height + 20;
var windowsize:WindowGeometry = new WindowGeometry(panel_X,panel_Y,panel_W,panel_H);
return windowsize;
}
private function setSize():void{
var csxs:CSXSInterface = CSXSInterface.getInstance();
csxs.requestStateChange(StateChangeEvent.WINDOW_RESIZE, getGeometry());
}
/**
Function: init
Description: Initialize the panel
*/
public function init():void{
try{// for skinning
var result:SyncRequestResult = CSXSInterface.instance.getHostEnvironment();
var hostData:HostEnvironment = result.data;
var skinInfo:AppSkinInfo = hostData.appSkinInfo;
var defaultColor:String = skinInfo.panelBackgroundColor.color.rgb;
this.setStyle("backgroundGradientColors", [defaultColor, defaultColor]);
this.setStyle("fontFamily", skinInfo.baseFontFamily);
this.setStyle("fontSize", skinInfo.baseFontSize);
}catch (errObject:Error) {}
}
]]>
</mx:Script>
<mx:VBox x="10" y="10" id="windowsizebox" height="100" width="100">
<mx:Button label="Button" click="setSize();"/>
</mx:VBox>
</mx:Application>
Copy link to clipboard
Copied
This is perfect. Thanks for the example Michael! I'll give this a try.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now