rb-appscript 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/CHANGES +30 -0
  2. data/LICENSE +1 -1
  3. data/README +7 -3
  4. data/TODO +7 -1
  5. data/doc/aem-manual/01_introduction.html +23 -9
  6. data/doc/aem-manual/02_apioverview.html +25 -11
  7. data/doc/aem-manual/03_packingandunpackingdata.html +22 -17
  8. data/doc/aem-manual/04_references.html +49 -36
  9. data/doc/aem-manual/05_targettingapplications.html +25 -14
  10. data/doc/aem-manual/06_buildingandsendingevents.html +47 -21
  11. data/doc/aem-manual/07_findapp.html +22 -11
  12. data/doc/aem-manual/08_examples.html +21 -10
  13. data/doc/aem-manual/index.html +28 -12
  14. data/doc/appscript-manual/01_introduction.html +40 -27
  15. data/doc/appscript-manual/02_aboutappscripting.html +28 -15
  16. data/doc/appscript-manual/03_quicktutorial.html +29 -16
  17. data/doc/appscript-manual/04_gettinghelp.html +31 -16
  18. data/doc/appscript-manual/05_keywordconversion.html +23 -10
  19. data/doc/appscript-manual/06_classesandenums.html +32 -19
  20. data/doc/appscript-manual/07_applicationobjects.html +31 -18
  21. data/doc/appscript-manual/08_realvsgenericreferences.html +23 -11
  22. data/doc/appscript-manual/09_referenceforms.html +33 -20
  23. data/doc/appscript-manual/10_referenceexamples.html +30 -17
  24. data/doc/appscript-manual/11_applicationcommands.html +25 -13
  25. data/doc/appscript-manual/12_commandexamples.html +26 -15
  26. data/doc/appscript-manual/13_performanceissues.html +46 -20
  27. data/doc/appscript-manual/14_notes.html +29 -19
  28. data/doc/appscript-manual/index.html +27 -11
  29. data/doc/full.css +95 -9
  30. data/doc/index.html +27 -10
  31. data/doc/mactypes-manual/01_introduction.html +56 -0
  32. data/doc/mactypes-manual/02_aliasclass.html +134 -0
  33. data/doc/mactypes-manual/03_fileurlclass.html +136 -0
  34. data/doc/mactypes-manual/04_unitsclass.html +102 -0
  35. data/doc/mactypes-manual/index.html +26 -227
  36. data/doc/osax-manual/01_introduction.html +69 -0
  37. data/doc/osax-manual/02_interface.html +149 -0
  38. data/doc/osax-manual/03_examples.html +75 -0
  39. data/doc/osax-manual/04_notes.html +80 -0
  40. data/doc/osax-manual/index.html +26 -195
  41. data/doc/rb-appscript-logo.png +0 -0
  42. data/rb-appscript.gemspec +2 -2
  43. data/sample/TextEdit_demo.rb +1 -1
  44. data/src/lib/_aem/aemreference.rb +1 -1
  45. data/src/lib/_aem/codecs.rb +42 -8
  46. data/src/lib/_aem/connect.rb +3 -1
  47. data/src/lib/_aem/findapp.rb +1 -1
  48. data/src/lib/_aem/mactypes.rb +1 -1
  49. data/src/lib/_aem/send.rb +162 -142
  50. data/src/lib/_aem/typewrappers.rb +2 -2
  51. data/src/lib/_appscript/defaultterminology.rb +76 -46
  52. data/src/lib/_appscript/referencerenderer.rb +1 -1
  53. data/src/lib/_appscript/reservedkeywords.rb +2 -2
  54. data/src/lib/_appscript/safeobject.rb +1 -1
  55. data/src/lib/_appscript/terminology.rb +30 -19
  56. data/src/lib/aem.rb +1 -6
  57. data/src/lib/appscript.rb +65 -20
  58. data/src/lib/osax.rb +21 -18
  59. data/src/rbae.c +1 -1
  60. data/test/test_appscriptcommands.rb +1 -1
  61. metadata +12 -3
@@ -2,7 +2,7 @@
2
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
3
  <head>
4
4
 
5
- <title>appscript | 11. Application Commands</title>
5
+ <title>rb-appscript manual | 11. Application Commands</title>
6
6
 
7
7
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
8
  <style type="text/css" media="all"><!--@import url(../full.css);--></style>
@@ -10,18 +10,28 @@
10
10
  </head>
11
11
  <body>
12
12
 
13
- <h1>11. Application Commands</h1>
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
14
 
15
15
  <!-- top navigation -->
16
16
  <div class="navbar">
17
- <a href="10_referenceexamples.html">Previous</a> | <a href="index.html">Up</a> | <a href="12_commandexamples.html">Next</a>
18
-
17
+ <a href="10_referenceexamples.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="12_commandexamples.html">Next</a>
20
+
21
+ <span>
22
+ <strong><a href="../appscript-manual/index.html">appscript</a></strong> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <a href="../osax-manual/index.html">osax</a> /
25
+ <a href="../aem-manual/index.html">aem</a>
26
+ </span>
19
27
  </div>
20
28
 
21
29
  <!-- content -->
22
30
  <div id="content">
23
31
 
24
- <h2>Command syntax</h2>
32
+ <h2>11. Application Commands</h2>
33
+
34
+ <h3>Command syntax</h3>
25
35
 
26
36
  <p>Appscript commands have the following syntax:</p>
27
37
 
@@ -80,7 +90,7 @@
80
90
 
81
91
  <p>See the Special cases section below for additional rules.</p>
82
92
 
83
- <h2>Examples</h2>
93
+ <h3>Examples</h3>
84
94
 
85
95
  <pre><code># tell application &quot;TextEdit&quot; to activate
86
96
  app('TextEdit').activate
@@ -105,7 +115,7 @@ app('Finder').home.items.get(:result_type =&gt; :alias)</code></pre>
105
115
 
106
116
 
107
117
 
108
- <h2>Special cases</h2>
118
+ <h3>Special cases</h3>
109
119
 
110
120
  <p>The following special-case behaviours are implemented for convenience:</p>
111
121
 
@@ -156,7 +166,7 @@ app('Finder').home.items.get(:result_type =&gt; :alias)</code></pre>
156
166
  </ol>
157
167
 
158
168
 
159
- <h2>Note to AppleScript users</h2>
169
+ <h3>Note to AppleScript users</h3>
160
170
 
161
171
  <p>Unlike AppleScript, which implicitly sends a <code>get</code> command to any unresolved application object references at the end of evaluating an expression, appscript only resolves a reference when it receives an appropriate command. For example:</p>
162
172
 
@@ -195,12 +205,14 @@ print d
195
205
  </div>
196
206
 
197
207
  <!-- bottom navigation -->
198
- <div class="navbar">
199
- <a href="10_referenceexamples.html">Previous</a> | <a href="index.html">Up</a> | <a href="12_commandexamples.html">Next</a>
200
-
208
+
209
+ <div class="footer">
210
+ <a href="10_referenceexamples.html">Previous</a> &bull;
211
+ <a href="index.html">Up</a> &bull;
212
+ <a href="12_commandexamples.html">Next</a>
213
+
214
+ <span>&copy; 2006-2008 HAS</span>
201
215
  </div>
202
216
 
203
- <!--footer-->
204
- <p class="footer">&copy; 2006-2008 HAS</p>
205
217
  </body>
206
218
  </html>
@@ -2,7 +2,7 @@
2
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
3
  <head>
4
4
 
5
- <title>appscript | 12. Command Examples</title>
5
+ <title>rb-appscript manual | 12. Command Examples</title>
6
6
 
7
7
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
8
  <style type="text/css" media="all"><!--@import url(../full.css);--></style>
@@ -10,19 +10,28 @@
10
10
  </head>
11
11
  <body>
12
12
 
13
- <h1>12. Command Examples</h1>
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
14
 
15
15
  <!-- top navigation -->
16
16
  <div class="navbar">
17
- <a href="11_applicationcommands.html">Previous</a> | <a href="index.html">Up</a> | <a href="13_performanceissues.html">Next</a>
18
-
17
+ <a href="11_applicationcommands.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="13_performanceissues.html">Next</a>
20
+
21
+ <span>
22
+ <strong><a href="../appscript-manual/index.html">appscript</a></strong> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <a href="../osax-manual/index.html">osax</a> /
25
+ <a href="../aem-manual/index.html">aem</a>
26
+ </span>
19
27
  </div>
20
28
 
21
29
  <!-- content -->
22
30
  <div id="content">
23
31
 
32
+ <h2>12. Command Examples</h2>
24
33
 
25
- <h2><code>get</code></h2>
34
+ <h3><code>get</code></h3>
26
35
 
27
36
  <p>Get the name of every folder in the user's home folder:</p>
28
37
 
@@ -35,7 +44,7 @@ app('Finder').get(app.home.folders.name)</code></pre>
35
44
  <pre><code>app('Finder').home.folders.name.get</code></pre>
36
45
 
37
46
 
38
- <h2><code>set</code></h2>
47
+ <h3><code>set</code></h3>
39
48
 
40
49
  <p>Set the content of a TextEdit document:</p>
41
50
 
@@ -44,7 +53,7 @@ app('Finder').get(app.home.folders.name)</code></pre>
44
53
  app('TextEdit').documents[1].text.set('Hello World')</code></pre>
45
54
 
46
55
 
47
- <h2><code>count</code></h2>
56
+ <h3><code>count</code></h3>
48
57
 
49
58
  <p>Count the words in a TextEdit document:</p>
50
59
 
@@ -61,7 +70,7 @@ app('Finder').home.count(:each =&gt; :item)</code></pre>
61
70
  <p>(Note that the <code>each</code> parameter is required in Finder's <code>count</code> command.)</p>
62
71
 
63
72
 
64
- <h2><code>make</code></h2>
73
+ <h3><code>make</code></h3>
65
74
 
66
75
  <p>Create a new TextEdit document:</p>
67
76
 
@@ -90,7 +99,7 @@ app('TextEdit').make(
90
99
  :with_data =&gt; "Yesterday\nToday\nTomorrow\n")</code></pre>
91
100
 
92
101
 
93
- <h2><code>duplicate</code></h2>
102
+ <h3><code>duplicate</code></h3>
94
103
 
95
104
  <p>Duplicate a folder to a disk, replacing an existing item if one exists:</p>
96
105
 
@@ -101,7 +110,7 @@ app('Finder').home.folders['Projects'].duplicate(
101
110
  :to =&gt; app.disks['Backup'], :replacing =&gt; true)</code></pre>
102
111
 
103
112
 
104
- <h2><code>add</code></h2>
113
+ <h3><code>add</code></h3>
105
114
 
106
115
  <p>Add every person with a known birthday to a group named "Birthdays":</p>
107
116
 
@@ -118,12 +127,14 @@ app('Address Book').people[
118
127
  </div>
119
128
 
120
129
  <!-- bottom navigation -->
121
- <div class="navbar">
122
- <a href="11_applicationcommands.html">Previous</a> | <a href="index.html">Up</a> | <a href="13_performanceissues.html">Next</a>
123
-
130
+
131
+ <div class="footer">
132
+ <a href="11_applicationcommands.html">Previous</a> &bull;
133
+ <a href="index.html">Up</a> &bull;
134
+ <a href="13_performanceissues.html">Next</a>
135
+
136
+ <span>&copy; 2006-2008 HAS</span>
124
137
  </div>
125
138
 
126
- <!--footer-->
127
- <p class="footer">&copy; 2006-2008 HAS</p>
128
139
  </body>
129
140
  </html>
@@ -2,7 +2,7 @@
2
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
3
  <head>
4
4
 
5
- <title>appscript | 13. Performance Issues</title>
5
+ <title>rb-appscript manual | 13. Performance Issues</title>
6
6
 
7
7
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
8
  <style type="text/css" media="all"><!--@import url(../full.css);--></style>
@@ -10,17 +10,28 @@
10
10
  </head>
11
11
  <body>
12
12
 
13
- <h1>13. Performance Issues</h1>
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
14
 
15
15
  <!-- top navigation -->
16
16
  <div class="navbar">
17
- <a href="12_commandexamples.html">Previous</a> | <a href="index.html">Up</a> | <a href="14_notes.html">Next</a>
18
-
17
+ <a href="12_commandexamples.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="14_notes.html">Next</a>
20
+
21
+ <span>
22
+ <strong><a href="../appscript-manual/index.html">appscript</a></strong> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <a href="../osax-manual/index.html">osax</a> /
25
+ <a href="../aem-manual/index.html">aem</a>
26
+ </span>
19
27
  </div>
20
28
 
21
29
  <!-- content -->
22
30
  <div id="content">
23
- <h2>About performance</h2>
31
+
32
+ <h2>13. Performance Issues</h2>
33
+
34
+ <h3>About performance</h3>
24
35
 
25
36
  <p>Application scripting is subject to a number of potential performance bottlenecks:</p>
26
37
 
@@ -34,33 +45,46 @@
34
45
 
35
46
  <p>Fortunately, it's often possible to minimise performance overheads by using fewer commands to do more work. Let's consider a typical example: obtaining the name of every person in <code>Address Book.app</code> who has a particular email address. There are several possible solutions to this, each with very different performance characteristics:</p>
36
47
 
37
- <h2>The iterative OO-style approach</h2>
38
-
48
+ <h3>The iterative OO-style approach</h3>
49
+
50
+
39
51
  <p>While iterating over application objects and manipulating each in turn is a common technique, it's also the slowest by far:</p>
40
-
41
- include Appscript
52
+
53
+ <pre><code>require "appscript"
54
+ include Appscript
55
+
42
56
 
43
57
  desiredEmail = 'sam.brown@foo.com'
44
58
 
45
- foundNames = []
46
59
  person.emails.get.each do |email|
47
60
  if email.value.get == desiredEmail
48
61
  foundNames.push(person.name.get)
62
+ foundNames = []
63
+ app('Address Book').people.get.each do |person|
64
+ person.emails.get.each do |email|
65
+ if email.value.get == desiredEmail
66
+ foundNames.push(person.name.get)
49
67
  end
50
68
  end
51
69
  end
52
- p foundNames</code></pre>
70
+ p foundNames</code></pre>
71
+
72
+
53
73
  <p>The above script sends one Apple event to get a list of references to all people, then one Apple event for each person to get a list of references to their emails, then one Apple event for each of those emails. Thus the time taken increases directly in proportion to the number of people in Address Book. If there's hundreds of people to search, that's hundreds of Apple events to be built, sent and individually resolved, and performance suffers as a result.</p>
54
74
 
55
75
  <p>The solution, where possible, is to use fewer, more sophisticated commands to do the same job.</p>
56
76
 
57
77
 
58
- <h2>The smart query-oriented approach</h2>
78
+ <h3>The smart query-oriented approach</h3>
59
79
 
60
80
  <p>While there are some situations where iterating over and manipulating each application object individually is the only option (for example, when setting a property in each object to a different value), in this case there is plenty of room for improvement. Depending on how well an application implements its AEOM support, it's possible to construct queries that identify more than one application object at a time, allowing a single command to manipulate multiple objects in a single operation.</p>
61
81
 
62
82
  <p>In this case, the entire search can be performed using a single complex query sent to Address Book via a single Apple event:</p>
63
-
83
+
84
+ <pre><code>require "appscript"
85
+
64
86
  include Appscript
65
87
 
66
- desiredEmail = 'sam.brown@foo.com'
88
+ desiredEmail = 'sam.brown@foo.com'
89
+
90
+ p app('Address Book').people[
67
91
  its.emails.value.contains(desiredEmail)
68
92
  ].name.get</code></pre>
69
93
 
@@ -75,7 +99,7 @@ desiredEmail = 'sam.brown@foo.com'
75
99
  </ul>
76
100
 
77
101
 
78
- <h2>The hybrid solution</h2>
102
+ <h3>The hybrid solution</h3>
79
103
 
80
104
  <p>While AEOM queries can be surprisingly powerful, there are still many problems too complex for the application to evaluate entirely by itself. For example, let's say that you want to obtain the name of every person who has an email addresses that uses a particular domain name. Unfortunately, this test is too complex to express as a single AEOM query; however, it can still be solved reasonably efficiently by obtaining all the data from the application up-front and processing it locally. For this we need: 1. the name of every person in the Address Book, and 2. each person's email addresses. Fortunately, each of these can be expressed in a single query, allowing all this data to be retrieved using just two <code>get</code> commands.</p>
81
105
 
@@ -107,12 +131,14 @@ p result</code></pre>
107
131
  </div>
108
132
 
109
133
  <!-- bottom navigation -->
110
- <div class="navbar">
111
- <a href="12_commandexamples.html">Previous</a> | <a href="index.html">Up</a> | <a href="14_notes.html">Next</a>
112
-
134
+
135
+ <div class="footer">
136
+ <a href="12_commandexamples.html">Previous</a> &bull;
137
+ <a href="index.html">Up</a> &bull;
138
+ <a href="14_notes.html">Next</a>
139
+
140
+ <span>&copy; 2006-2008 HAS</span>
113
141
  </div>
114
142
 
115
- <!--footer-->
116
- <p class="footer">&copy; 2006-2008 HAS</p>
117
143
  </body>
118
144
  </html>
@@ -2,7 +2,7 @@
2
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
3
  <head>
4
4
 
5
- <title>appscript | 14. Notes</title>
5
+ <title>rb-appscript manual | 14. Notes</title>
6
6
 
7
7
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
8
  <style type="text/css" media="all"><!--@import url(../full.css);--></style>
@@ -10,18 +10,27 @@
10
10
  </head>
11
11
  <body>
12
12
 
13
- <h1>14. Notes</h1>
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
14
 
15
15
  <!-- top navigation -->
16
16
  <div class="navbar">
17
- <a href="13_performanceissues.html">Previous</a> | <a href="index.html">Up</a>
18
-
17
+ <a href="13_performanceissues.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a>
19
+
20
+ <span>
21
+ <strong><a href="../appscript-manual/index.html">appscript</a></strong> /
22
+ <a href="../mactypes-manual/index.html">mactypes</a> /
23
+ <a href="../osax-manual/index.html">osax</a> /
24
+ <a href="../aem-manual/index.html">aem</a>
25
+ </span>
19
26
  </div>
20
27
 
21
28
  <!-- content -->
22
29
  <div id="content">
23
30
 
24
- <h2>Rubygems issues</h2>
31
+ <h2>14. Notes</h2>
32
+
33
+ <h3>Rubygems issues</h3>
25
34
 
26
35
  <p>If using the appscript gem, don't forget to <code>require 'rubygems'</code> <em>before</em> requiring appscript, otherwise the appscript gem won't load. For example:</p>
27
36
 
@@ -33,44 +42,44 @@ require 'appscript'
33
42
  ...</code></pre>
34
43
 
35
44
 
36
- <h2>Security issues</h2>
45
+ <h3>Security issues</h3>
37
46
 
38
47
  <p>If including user names and/or passwords in remote application URLs, please note that appscript retains these URLs in both the <code>Terminology</code> module's internal cache and in the Application and Reference objects subsequently created from those URLs. Security here is the user's responsibility, as it's their code that creates and retains these objects.</p>
39
48
 
40
49
 
41
- <h2>GUI Scripting</h2>
50
+ <h3>GUI Scripting</h3>
42
51
 
43
52
  <p>Non-scriptable applications may in some cases be controlled from Ruby by using System Events to manipulate their graphical user interface. Note that the &quot;Enable access for assistive devices&quot; checkbox must be selected in the Universal Access system preferences pane for GUI Scripting to work.</p>
44
53
 
45
54
 
46
- <h2>AEDescs</h2>
55
+ <h3>AEDescs</h3>
47
56
 
48
57
  <p>Some applications (e.g. QuarkXpress) may return values which appscript cannot convert to equivalent Ruby types. These values are usually of types which are defined, used and understood only by that particular application, and will be represented in Ruby as raw <code>AE::AEDesc</code> objects (e.g. <code>#&lt;AE::AEDesc:0x33fc40&gt;</code>). While there's not much you can do with raw <code>AEDesc</code> objects within Ruby (it's best just to treat them as opaque types), subsequent commands can pass them back to the application for further use and/or conversion just like any other value.</p>
49
58
 
50
59
 
51
- <h2>Dealing with problem applications</h2>
60
+ <h3>Dealing with problem applications</h3>
52
61
 
53
62
  <p>Appscript provides a number of mechanisms for dealing with problematic applications. See the <a href="http://rb-appscript.rubyforge.org">appscript website</a> for more information.</p>
54
63
 
55
64
 
56
- <h2>Credits</h2>
65
+ <h3>Credits</h3>
57
66
 
58
67
  <p>Many thanks to Bill Birkett, Jordan Breeding, Fujimoto Hisakuni, Jordan K Hubbard, Alexander Kellett, Chris Nebel, Matt Neuburg, Laurent Sansonetti, Michelle Steiner, Kevin Van Vechten, and all the appscript users who've provided comments, criticisms and encouragement along the way.</p>
59
68
 
60
69
 
61
- <h2>Donations</h2>
70
+ <h3>Donations</h3>
62
71
 
63
72
  <p>You can <a href="http://sourceforge.net/donate/index.php?group_id=175009">donate to the appscript project</a> via SourceForge.net. Special thanks to all those appscript users who have already contributed.</p>
64
73
 
65
74
 
66
- <h2>Website</h2>
75
+ <h3>Website</h3>
67
76
 
68
77
  <p><a href="http://rb-appscript.rubyforge.org">http://rb-appscript.rubyforge.org</a></p>
69
78
 
70
79
 
71
- <h2>Copyright</h2>
80
+ <h3>Copyright</h3>
72
81
 
73
- <p>(C) 2006 HAS -- hhas -at- users - sourceforge - net</p>
82
+ <p>(C) 2006-2008 HAS -- hhas -at- users - sourceforge - net</p>
74
83
 
75
84
  <p>Appscript is released under the MIT License.</p>
76
85
 
@@ -78,12 +87,13 @@ require 'appscript'
78
87
  </div>
79
88
 
80
89
  <!-- bottom navigation -->
81
- <div class="navbar">
82
- <a href="13_performanceissues.html">Previous</a> | <a href="index.html">Up</a>
83
-
90
+
91
+ <div class="footer">
92
+ <a href="13_performanceissues.html">Previous</a> &bull;
93
+ <a href="index.html">Up</a>
94
+
95
+ <span>&copy; 2006-2008 HAS</span>
84
96
  </div>
85
97
 
86
- <!--footer-->
87
- <p class="footer">&copy; 2006-2008 HAS</p>
88
98
  </body>
89
99
  </html>
@@ -2,7 +2,7 @@
2
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
3
  <head>
4
4
 
5
- <title>appscript | Contents</title>
5
+ <title>rb-appscript manual | Contents</title>
6
6
 
7
7
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
8
  <style type="text/css" media="all"><!--@import url(../full.css);--></style>
@@ -10,16 +10,28 @@
10
10
  </head>
11
11
  <body>
12
12
 
13
- <h1>Contents</h1>
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
14
 
15
15
  <!-- top navigation -->
16
16
  <div class="navbar">
17
- <a href="../index.html">Up</a> | <a href="01_introduction.html">Next</a>
18
-
17
+ <a href="../index.html">Previous</a> &bull;
18
+ <a href="../index.html">Up</a> &bull;
19
+ <a href="01_introduction.html">Next</a>
20
+
21
+ <span>
22
+ <strong><a href="../appscript-manual/index.html">appscript</a></strong> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <a href="../osax-manual/index.html">osax</a> /
25
+ <a href="../aem-manual/index.html">aem</a>
26
+ </span>
19
27
  </div>
20
28
 
21
29
  <!-- content -->
22
- <div id="content"><ol>
30
+ <div id="content">
31
+
32
+ <h2>Contents</h2>
33
+
34
+ <ol>
23
35
  <li><a href="01_introduction.html">Introduction</a></li>
24
36
  <li><a href="02_aboutappscripting.html">About Application Scripting</a></li>
25
37
  <li><a href="03_quicktutorial.html">Quick Tutorial</a></li>
@@ -34,15 +46,19 @@
34
46
  <li><a href="12_commandexamples.html">Command Examples</a></li>
35
47
  <li><a href="13_performanceissues.html">Performance Issues</a></li>
36
48
  <li><a href="14_notes.html">Notes</a></li>
37
- </ol></div>
49
+ </ol>
50
+
51
+ </div>
38
52
 
39
53
  <!-- bottom navigation -->
40
- <div class="navbar">
41
- <a href="../index.html">Up</a> | <a href="01_introduction.html">Next</a>
42
-
54
+
55
+ <div class="footer">
56
+ <a href="../index.html">Previous</a> &bull;
57
+ <a href="../index.html">Up</a> &bull;
58
+ <a href="01_introduction.html">Next</a>
59
+
60
+ <span>&copy; 2006-2008 HAS</span>
43
61
  </div>
44
62
 
45
- <!--footer-->
46
- <p class="footer">&copy; 2006-2008 HAS</p>
47
63
  </body>
48
64
  </html>