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()
//}
//)()
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.
So, is this one not such complex? http://pastebin.com/3jZ0PjKk
North America
Europe, Middle East and Africa
Asia Pacific