Skip navigation
Currently Being Moderated

BIG Problem about save selection!

Aug 12, 2012 7:47 PM

Tags: #illustrator #problem #javascript #select #dialog #solution #palette #note #save_selection

Hi,everybody!

I an new about js.  A few day ago, I wrote a "saveSelection dialog.jsx". It can work in "Dialog" windows type. BUT it can't work immediately while I change "Dialog" to "Palette", because I want to the palette stay the screen so as to I can use when I need.

 

Could you help ME!

Forgive me poor english, thanks in advance for your help

below is code:

 

// JavaScript Document
//(function () {
    var doc=app.activeDocument,u,array=new Array();;
var w=new Window("palette"),//dialog is work
listPnl=w.add("panel");
//listPnl.size=
entry = listPnl.add ("edittext", u," Type the first letter"); //请输入首字进行查找
entry.graphics.font = ScriptUI.newFont ("Arial", "", 16);
entry.size=[200,30];
entry.active = true;
G_Slist=listPnl.add('group');
G_Slist.orientation='row';
Slist=G_Slist.add('listbox');//,u,u,{multiselect: true}
Slist.alignment='left';
Slist.size=[140,100];
Slist.scrolling=true;
orderG=G_Slist.add('group');
orderG.orientation='column';
orderPnl=orderG.add('panel');
orderPnl.margins=2;
orderPnl.size=[50,100];
orderPnl.alignChildren=['fill','center'];
var select=orderPnl.add("button", undefined, "SEL");
select.size=[40,20];
var up =orderPnl.add ("button", undefined, "Up");//Up
up.size=[40,20];
var down = orderPnl.add ("button", undefined, "Down");
down.size=[40,20];
addSel=listPnl.add('button{text:"+ add 增加选择到清单"}');
addSel.size=[200,20];
deleteSel=listPnl.add('button{text:"- delete 从清单中删除"}');
deleteSel.size=[200,20];
updateItems ();
 
 
function updateItems() {
if (doc.pageItems.length>0) {
    for (var i=0;i<doc.pageItems.length;i++) {
        if (doc.pageItems[i].note !='') {
            if (!(Slist.find(doc.pageItems[i].note))) list=Slist.add('item',doc.pageItems[i].note);        
            }
        }    
    }
}
 
 
 
addSel.onClick=function() {
    var p = prompt("Save Selection","Name the Selection");//存储所选对象请输入名称
    if (doc.selection.length>0 &&  p!=null){
        var list=Slist.add('item',p);
        for (var i=0;i<doc.selection.length ;i++ ){
            doc.selection[i].note=p
            }
        app.redraw()
        }
 
 
//删除空项 delete null items
        for (var j=0;j<Slist.items.length;j++){
            var replice=true;
            var temp=Slist.items[j].text;
            for (var k=0;k<doc.pageItems.length ;k++ ){
            if (temp==doc.pageItems[k].note) replice=false;
            }
        if (replice)   Slist.remove(temp);
        }
          updateItems ()
    }
 
 
var temp;
Slist.onDoubleClick=function(){
    doc.selection=null;
        var temp=Slist.selection.text;
        for (var i=0;i<doc.pageItems.length;i++) {
            if (doc.pageItems[i].note ==temp) {
                doc.pageItems[i].selected=true;
               }
           }
       app.redraw()        
    }
 
 
deleteSel.onClick=function(){
    if (Slist.selection.length!=0) {
        var temp=Slist.selection.text;
        Slist.remove(temp);
        for (var i=0;i<doc.pageItems.length;i++) {
            if (doc.pageItems[i].note ==temp) {
                doc.pageItems[i].note='';
               }
           }
       }
   app.redraw();
   updateItems ();
   }
 
 
select.onClick=function(){
    doc.selection=null;
        var temp=Slist.selection.text;
        for (var i=0;i<doc.pageItems.length;i++) {
            if (doc.pageItems[i].note ==temp) {
                doc.pageItems[i].selected=true;
               }
           }
       app.redraw()     
    }
 
 
up.onClick = function (){
    var n = Slist.selection.index;
    if (n > 0){
        swap (Slist.items [n-1], Slist.items [n]);
        Slist.selection = n-1;
        }
    }
 
 
 
 
down.onClick = function (){
    var n = Slist.selection.index;
    if (n < Slist.items.length-1){
        swap (Slist.items [n], Slist.items [n+1]);
        Slist.selection = n+1;
        }
    }
 
 
function swap (x, y){
    var temp = x.text;
    x.text = y.text;
    y.text = temp;
    }
 
 
 
 
 
 
var array=new Array();
for (var n=0;n<Slist.items.length;n++) {
    array.push(Slist.items[n].text)
    }
entry.onChanging = function (){
    var tmp = this.text;
    tmp=tmp.toString();
    Slist.removeAll ();
    //if (tmp!='') {
        for (var m = 0; array[m]; m++) {
            if (array[m].indexOf (tmp) == 0) list=Slist.add ('item', array[m]);
            if (Slist.items.length > 0)   Slist.selection = 0;
            }
        }
 
w.onClick=w.onMove=function () {
  entry.text='';
  entry.active=true;
}
 
 
 
 
/*
entry.onChange = function () {
        var array1=new Array();
    for (var n=0;n<Slist.items.length;n++) {
        array1.push(Slist.items[n].text)
        }
    for (var m1 = 0; array1[m1]; m1++) {
        list=Slist.add ('item', array1[m1]);
        }
    }*/
 
 
 
 
/*
function ShiftList (){
    if (this.selection != null)  {
        var idx = this.selection.pop().index;
        if (idx < this.items.length)  this.revealItem (idx);    
        }
    }
 */ 
 
 
 
w.show()
 
 
//}
//)()
 
 
Replies
  • Currently Being Moderated
    Aug 12, 2012 8:23 PM   in reply to zjbook

    Hi zjbook, you know who am i, right?

    Why not have a look at my "变量巫术师" script in CPC?

    In short, with "palette" panel, whenever your code function dealing with Illustrator DOM, your should use BridgeTalk. Only ScriptUI callback function without Illustrator DOM commands do not need BridgeTalk.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 13, 2012 7:06 PM   in reply to zjbook

    So, is this one not such complex? http://pastebin.com/3jZ0PjKk

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 14, 2012 12:15 AM   in reply to zjbook

    Add quotes around string:

    btMsg(a.toString()+"\n a('"+Slist.text+"');")

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points