问题标签 [adobe-scriptui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1352 浏览

javascript - Change the size of a dialog window based on an action in ScriptUI

ScriptUI is wonderful, but seems to have some limitations. I am looking for an ability to dynamically resize a dialog window based on an action taken on one of the controls inside of it, such as an .onClick() or .onShow() callback. However, the only way I've seen for the window to be resized is before it is drawn on the screen with the .show() method. Once the window has been shown, it appears that there is no way for a control to resize it. Please tell me I am wrong and there is a way to do this.

0 投票
2 回答
897 浏览

javascript - 重复显示 ScriptUI 窗口

遇到了另一个“应该很容易”的问题。我有一个 ScriptUI 窗口,我需要在其中检查以确保所有字段都已填写。这个想法是,当用户单击“确定”按钮时,脚本会检查以确保字段已填写。如果没有,那么它应该提醒用户这样做并再次显示相同的窗口,直到他们填写它全力以赴。这是我到目前为止所拥有的:

问题是该窗口不会在警报消息后重新出现。为什么不呢,我该如何解决这个问题?

编辑 09/23/2013:我添加了代码以便它可以运行。我还注意到,即使用户单击“取消”,也会出现有关输入文本的警报窗口。

编辑 09/24/2013:我已经尝试实现@ariestav 的想法,所以我的代码现在看起来像这样:

但是,取消按钮不会取消。它只是继续代码。我认为该exit();指令会让它完全退出脚本。我究竟做错了什么?

0 投票
2 回答
2285 浏览

javascript - 在窗口已显示后更改 ScriptUI 控件

所以这次我有一个(希望)简单的。我有一个用 ExtendScript for Adob​​e InDesign CS6 编程的 ScriptUI 窗口。它包含一个 StaticText 控件。在向用户显示此对话框窗口后,我想根据用户执行的某些操作更改该 StaticText 控件的文本。这是我的问题的一个非常简化的版本:

在上面的例子中,“你好”永远不会变成“晚上好”。但是,我发现,如果我在此窗口中添加一个进度条控件并与 StaticText 控件一起定期更新它,它将允许文本更改,但如果第二行比原来的长,文本会被截断文本。

就好像 StaticText 控件的宽度是在创建时设置的,并且在显示其窗口后永远无法更改。如果这只是 ScriptUI 的限制,请告诉我,我会处理它。否则,请告诉我是否可以做任何事情来动态更改 StaticText 并接受更长的文本行而不会被截断。谢谢!

0 投票
2 回答
1964 浏览

javascript - 销毁 ScriptUI 调色板窗口(以及更多)

在 ExtendScript 中,我遇到了一个非常奇怪的场景,我需要 ScriptUI 大师的帮助。我有一个巨大的 InDesign 脚本,在其执行过程中,它会在调色板窗口中显示一个进度条。( var w = new Window("palette", "Progress");) 我希望在脚本完成后关闭此调色板,因此我w.close()在脚本末尾添加了一个。

但是,仅当焦点仍在 InDesign 中时才会发生这种情况。我们的一些人喜欢在 InDesign 脚本在后台的另一个屏幕上运行时处理其他任务,这很好,但是当他们返回 InDesign 时,进度条调色板仍在屏幕上,显示 100% 完成。这个调色板窗口可以四处移动,但不能关闭,即使点击角落里的红色小“x”也是如此。这最终导致多个调色板全天停留在屏幕上,因为该脚本在正常工作日被调用数十次。

阅读 Peter Kahrel 的 ScriptUI 优秀指南,我了解到所有调色板都保留在内存中,即使在使用.close(). 我希望它们完全从内存中删除并清除,因此如果用户在脚本运行时切换到另一个应用程序,它们就不会留在屏幕上。关于如何做到这一点的任何想法?

顺便说一句,我想包含一些示例代码,以便您自己查看,但是当它只是从 ESTK 调用的一些小代码时,它似乎不起作用;仅在我的 4,647 行生产脚本中。因此,我无法粘贴任何示例代码。

0 投票
1 回答
607 浏览

adobe-indesign - Extendscript for Adob​​e InDesign 中从右到左的对话框/调色板/窗口

我需要一个从右到左的窗口(是 ScriptUI 中的一个对象)。在 C# 中,表单具有创建从右到左表单的两个属性 RightToLeft 和 RightToLeft 布局。

如何在 Extendscript 中做到这一点?

0 投票
1 回答
153 浏览

javascript - Photoshop/ESTK - 预定义数值的处理方式不同于用户输入

首先,我在一台装有 OS X 10.9 的台式机和一台装有 OS X 10.10 的 Macbook 上,并安装了最新版本的 Photoshop 和 ESTK。目前是:Photoshop CC 2015529.r.88 x64,ESTK 4.0.0.1 - ExtendedScript 4.5.5 & ScriptUI 6.2.2。结果在任一系统上都是相同的。

简而言之,我的问题不在于设置变量本身。它与稍后在脚本中正确使用的变量中的值一起使用。包括将变量从一个传递到另一个。

例如

我主要要做的是将用户输入的数值传递给变量。然后在脚本的另一部分准确使用该值。当变量在用户输入之外的脚本中定义时,一切正常。一旦添加了用户输入,变量就可以准确地重复回来。

比如使用:

但是,在 Photoshop 中运行时,结果并不如预期。

脚本做什么或应该做什么。是采用活动层并将整个事物切割成预定义的网格。每个切口都放置在它自己的图层上。正如我已经说过的。当网格被预定义时,一切都完美无缺。但是当添加用户输入时。网格完全倾斜。只有网格的第一个单元格/层是准确的。尽管可以预见,但其他一切都奇怪地镶嵌在一起。

我试过使用:

在 Chrome 和 Firefox 中运行良好。但是在 Photoshop 或 ESTK 中运行时会崩溃。

它提供了倾斜/镶嵌的结果。

以及一个对话窗口:

这也提供了倾斜的结果。

原始的“无缺陷”脚本如下:

我没有尝试过制作预定义的列表、下拉列表或其他方式。我也没有设置滑块、复选框或任何类似的替代方案。因为没有一个是理想的。我希望能够使用可键入的输入字段设置单元格大小。

我不确定这是预期的行为、我的代码中的缺陷还是需要报告的错误。任何有关为什么会发生这种情况的帮助或见解将不胜感激。

这有点长,所以不要在文本字段中发布我的脚本。完整的当前脚本迭代可在此处获得。对于那些希望看到它的人。

0 投票
0 回答
1179 浏览

javascript - Photoshop 脚本:如何将事件侦听器添加到 ScriptUI windowObj

我想在 keydown 上调用一个函数的 windowObj 添加一个事件监听器。我不能让它在窗口对象上工作;但是,在单击窗口对象的子对象(例如按钮)后,我可以让它工作。我还尝试单击按钮周围的窗口区域,认为窗口可能需要处于活动状态,但这不起作用。奇怪的是,当我将“keydown”更改为“click”时,这个测试起作用了。

我希望它工作的方式:当 ScriptUI 窗口显示时,在 keydown 上,一个函数被调用。

下面是我想要发生的简化示例的代码:

脚本运行时显示

脚本运行时显示

keydown 上显示带有键名的警报框 keydown 上显示带有键名的警报框

0 投票
3 回答
107 浏览

javascript - 为什么我的 json 格式的 OBJ 没有长度

我只是想从 After Effects ScriptUI API 创建一个包含多个控件的对象。

这就是我的 obj 的样子:

如果我知道尝试返回lengtheaseyPeasy.inputs的示例,我只会得到undefined

除此之外,我无法通过键索引在我的 obj 中选择值。它只能通过密钥字符串工作。

在职的:

不工作:

有谁知道我在这里想念什么?提前致谢

0 投票
1 回答
1299 浏览

javascript - 如何使用 Extendscript scriptui 插入、更新、删除 XML 元素的值

我正在学习为 adobe illustrator 编写脚本的扩展脚本。我很难编写与 xml 相关的解析。我的问题陈述如下:-“我采用了三个文本框,即名称,城市和国家。”名称“是一个唯一的键。当我单击确定按钮时,如果名称不存在,则数据必须保存在 xml 中,否则更新以前的名称没有创建重复。xml文件中的所有名称都显示在列表框中。可以通过删除按钮删除特定名称的日期。这将删除列表框中所选项目中的数据。我尝试做的代码是: -

请帮助我。

0 投票
1 回答
3895 浏览

javascript - Photoshop ScriptUI:显示一个对话框窗口,关闭它,再次显示它会给出一个空的全尺寸窗口

在我用 JavaScript 编写的 Photoshop CC 2015 (Windows 10) 脚本中,我正在循环处理活动文档的所有图层,并希望在每个步骤中显示一个设置对话框。

为简化起见,请采用以下工作示例。窗口是在循环之外定义的,在此处剥离的其他步骤中,窗口在循环中的每一步都显示一次:

当您执行它时,会出现一个只有一个“确定”按钮的小对话框窗口,正如预期的那样。您可以使用“确定”按钮将其关闭。但是每次连续都会w.show()产生一个几乎填满整个屏幕的空白窗口,没有任何控件。它只能使用 ESC 键关闭。

我尝试覆盖b.onClick事件并手动调用close(),但这并没有改变任何东西。

在检查w变量后,很明显bounds, 分别locationsize某种方式发生了变化。我尝试将这些值重置为之前的状态,然后窗口大小就恢复了。但是,该按钮仍然不可见。

我错过了什么吗?如何让对话窗口多次正确显示?