Adobe 0046100128056 Scripting Guide - Page 125

property of the idle task is the amount of time that elapses before InDesign calls the task again.

Page 125 highlights

CHAPTER 8: Events Sample onIdle Event Listener 125 can be used to automatically execute a script when InDesign/InCopy is idle. Its event target is IdleTask, and its event object is IdleEvent. The sleep property of the idle task is the amount of time that elapses before InDesign calls the task again. It should be obvious that you need to set the sleep time to a value high enough that it does not interfere with your work, though this value will vary depending on what tasks the script performs. Setting the sleep time to zero deletes the task (though it does not remove the event listener). This is the most convenient way to stop an idle task. The following script shows how to add an eventListener and show a message box from the idle task (for the complete script, see Reminder): #targetengine "session" main(); function main() { var myIdleTask = app.idleTasks.add({name:"my_idle_task", sleep:10000}); var onIdleEventListener = myIdleTask.addEventListener(IdleEvent.ON_IDLE, onIdleEventHandler, false); alert("Created idle task " + myIdleTask.name + "; added event listener on " + onIdleEventListener.eventType); } function onIdleEventHandler(myIdleEvent) { if (app.documents.length == 0) { var myDoc = app.documents.add(); alert("Created document " + myDoc.name + " in idle task."); return; } var myTextFrames = app.activeDocument.pages.item(0).textFrames; if (myTextFrames.length == 0) { var myTextFrame = myTextFrames.add(); myTextFrame.geometricBounds = ["72pt", "72pt", "288pt", "288pt"]; myTextFrame.contents = "Text frame created in idle task"; alert("Created a text frame in idle task."); return; } //Delete idle task by setting its sleep time to zero. myIdleEvent.parent.sleep = 0; alert("Nothing to do. Delete idle task."); } To remove the idle task created by preceding script, run the following script (for the complete script, see RemoveIdleTask):

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209

C
HAPTER
8: Events
Sample onIdle Event Listener
125
can be used to automatically execute a script when InDesign/InCopy is idle. Its event target is
IdleTask
,
and its event object is
IdleEvent
.
The
sleep
property of the idle task is the amount of time that elapses before InDesign calls the task again.
It should be obvious that you need to set the sleep time to a value high enough that it does not interfere
with your work, though this value will vary depending on what tasks the script performs.
Setting the sleep time to zero deletes the task (though it does not remove the event listener). This is the
most convenient way to stop an idle task.
The following script shows how to add an eventListener and show a message box from the idle task (for
the complete script, see Reminder):
#targetengine "session"
main();
function main()
{
var myIdleTask = app.idleTasks.add({name:"my_idle_task", sleep:10000});
var onIdleEventListener = myIdleTask.addEventListener(IdleEvent.ON_IDLE,
onIdleEventHandler, false);
alert("Created idle task " + myIdleTask.name + "; added event listener on " +
onIdleEventListener.eventType);
}
function onIdleEventHandler(myIdleEvent)
{
if (app.documents.length == 0)
{
var myDoc = app.documents.add();
alert("Created document " + myDoc.name + " in idle task.");
return;
}
var myTextFrames = app.activeDocument.pages.item(0).textFrames;
if (myTextFrames.length == 0)
{
var myTextFrame = myTextFrames.add();
myTextFrame.geometricBounds = ["72pt", "72pt", "288pt", "288pt"];
myTextFrame.contents = "Text frame created in idle task";
alert("Created a text frame in idle task.");
return;
}
//Delete idle task by setting its sleep time to zero.
myIdleEvent.parent.sleep = 0;
alert("Nothing to do. Delete idle task.");
}
To remove the idle task created by preceding script, run the following script (for the complete script, see
RemoveIdleTask):