Прозорец за актуализиране на скрипт на 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;
    }
}

Опитах се да използвам w.show, w.update (с документация, все още не съм сигурен какво всъщност прави .update) след добавяне на елементите в самия case. Но не мога да разбера това.

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

Някой има ли представа как може да работи това?


person Frederik Witte    schedule 03.11.2014    source източник
comment
Става въпрос за indesign scripting, няма html.   -  person Frederik Witte    schedule 19.11.2014
comment
Съжалявам за това, не видях етикетите   -  person Aman B    schedule 19.11.2014


Отговори (2)


Обикновено избягвам да използвам 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();

въведете описание на изображението тук

въведете описание на изображението тук

Лоик

person Loic    schedule 08.01.2016

За да свиете групите и прозореца, ще трябва да използвате метода layout() на вашия прозорец. Това ще зареди LayoutManager, който контролира автоматичното поведение на оформлението за прозорец или контейнер. LayoutManager също има метод, наречен layout(), този метод извиква автоматичното поведение на оформлението и се извиква автоматично при първото показване на прозореца. След това скриптът трябва да го извика изрично така:

window.layout().layout();

Пример за това как да използвате мениджъра на оформлението от Gerald 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 ); 
    } 
} 

източник

person Bruno    schedule 08.01.2016