2014-11-03 86 views
1

编辑:我也接受其他建议,我可以做些什么。Indesign脚本更新窗口?

如何使用onChange事件更新我的窗口?我的解决方案有效,但我需要这些组在不可见时折叠。

w.DD.onChange = function() { 
    switch (this.selection.text){ 
     case 'Headline': 
       if(w.visiblegroup) 
       w.visiblegroup.visible = false; 
       w.visiblegroup = w.texted; 
       w.texted.visible = true; 
      break; 
    } 
} 

我已经尝试添加在case本身的元素后使用w.showw.update(与文档,还不能确定什么.update实际上没有)。但我无法弄清楚这一点。

w.DD.onChange = function() { 
    switch (this.selection.text){ 
     case 'Headline': 
       w.add('checkbox', undefined, 'User-Color'); 
       //w.show(); 
       w.update(); 
      break; 
    } 
} 

有没有人有一个线索这可能工作?

+0

这是关于InDesign中的脚本,没有HTML。 – 2014-11-19 08:09:20

+0

对不起,没有看到标签 – 2014-11-19 11:11:17

回答

0

要折叠组和窗口,您将需要使用窗口的layout()方法。这将加载控制窗口或容器的自动布局行为的LayoutManagerLayoutManager也有一个名为layout()的方法,该方法调用自动布局行为并在第一次显示窗口时自动调用。此后,脚本必须显式调用它像这样:

window.layout().layout(); 

的如何使用由杰拉尔德Singelmann布局管理器的一个例子:

function main() { 
    var win = new Window("dialog"); 

    var maingroup = win.add("panel"); 
    maingroup.orientation = "column"; 
    add_group(maingroup); 

    var show_btn = win.add("button", undefined, "show"); 
    show_btn.onClick = function() { 
     var txt = ""; 
     for (var n = 0; n < maingroup.children.length; n++) { 
      txt += maingroup.children[n].edit.text + "\n"; 
     } 
     alert("Da steht: \n" + txt); 
    } 

    win.show(); 

    function add_group(maingroup) { 
     var group = maingroup.add("group"); 
     group.edit = group.add("edittext", [undefined, undefined, 200, 20], maingroup.children.length); 
     group.plus = group.add("button", undefined, "+"); 
     group.plus.onClick = add_btn; 
     group.minus = group.add("button", undefined, "-"); 
     group.minus.onClick = minus_btn; 
     group.index = maingroup.children.length - 1; 
     win.layout.layout(true); 
     return group; 
    } 
    function add_btn (e) { 
     add_group(maingroup); 
    } 
    function minus_btn (e) { 
     var ix = this.parent.index; 
     maingroup.remove(maingroup.children[ix]); 
     win.layout.layout(true); 
    } 
} 

source

1

我一般避免使用的LayoutManager和做所有我自己的数学,我相信更好,但这是我的愚见...

var w = new Window("dialog"); 
 
w.preferredSize = [200,200]; 
 
w.DD = w.add('dropdownlist', undefined, ["A","B"]); 
 
w.DD.selection = 0; 
 
w.DD.alignment = ["fill","top"]; 
 

 
//Setting a stacked group to items overlay 
 
w.gp = w.add('group'); 
 
w.gp.orientation = 'stack'; 
 
w.gp.alignment = ["fill","top"]; 
 
w.gp.alignChildren = ["fill","top"]; 
 
w.gp.p1 = w.gp.add('panel',undefined, "A"); 
 
w.gp.p2 = w.gp.add('panel',undefined, "B"); 
 

 
//dummy text to show "collapsing" 
 
w.st = w.add('statictext',undefined, "Collapse ?"); 
 

 
w.DD.onChange = function() { 
 
    w.gp.p1.visible = w.DD.selection==0; 
 
    w.gp.p2.visible = !w.gp.p1.visible; 
 
    w.gp.p2.size.height =100; 
 
    w.gp.size.height = w.gp.p1.visible? 50 : 100; 
 
    w.st.location.y = w.gp.location.y+w.gp.size.height+10; 
 
} 
 

 
w.onShow = function() { 
 
    w.gp.p2.visible=false; 
 
    w.gp.size.height = w.gp.p1.size.height = 50; 
 
    w.st.location.y = w.gp.location.y+w.gp.size.height+10; 
 
} 
 

 
w.show();

enter image description here

enter image description here

卢瓦克