rb-appscript 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -0,0 +1,149 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+
5
+ <title>rb-osax manual | 2. Interface</title>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
+ <style type="text/css" media="all"><!--@import url(../full.css);--></style>
9
+
10
+ </head>
11
+ <body>
12
+
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
+
15
+ <!-- top navigation -->
16
+ <div class="navbar">
17
+ <a href="01_introduction.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="03_examples.html">Next</a>
20
+
21
+ <span>
22
+ <a href="../appscript-manual/index.html">appscript</a> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <strong><a href="../osax-manual/index.html">osax</a></strong> /
25
+ <a href="../aem-manual/index.html">aem</a>
26
+ </span>
27
+ </div>
28
+
29
+ <!-- content -->
30
+ <div id="content">
31
+
32
+ <h2>2. Interface</h2>
33
+
34
+ <h3>The <code>scriptingadditions</code> method</h3>
35
+
36
+ <p>The <code>OSAX.scripting_additions</code> method returns the names of all installed scripting additions:</p>
37
+
38
+ <pre><code>require "osax"
39
+
40
+ p OSAX.scripting_additions
41
+ # Result: ["Digital Hub Scripting", "StandardAdditions", ...]</code></pre>
42
+
43
+
44
+ <h3>The <code>osax</code> method</h3>
45
+
46
+ <p>The <code>OSAX.osax</code> method provides a convenient shortcut for creating new <code>ScriptingAddition</code> instances.</p>
47
+
48
+ <pre><code>osax(name=nil, app_name=nil) -- convenience method for
49
+ creating a new ScriptingAddition instance
50
+ name : String | nil -- scripting addition's name
51
+ (nil = "StandardAdditions")
52
+ app_name : String | nil -- target application's name/path, or nil
53
+ for current application
54
+ Result : ScriptingAddition</code></pre>
55
+
56
+ <p>For example:</p>
57
+
58
+ <pre><code>require "osax"
59
+
60
+ sa = OSAX.osax
61
+
62
+ p sa
63
+ # Result: #&lt;OSAX::ScriptingAddition
64
+ # name="StandardAdditions"
65
+ # target=AEM::Application.current&gt;</code></pre>
66
+
67
+ <p>In addition, the <code>osax</code> function accepts an application name as an optional second argument, allowing you to specify the application you want to handle the scripting addition's commands, e.g.:</p>
68
+
69
+ <pre><code>OSAX.osax("StandardAdditions", "System Events")</code></pre>
70
+
71
+ <p>is shorthand for:</p>
72
+
73
+ <pre><code>OSAX::ScriptingAddition.new("StandardAdditions").by_name("System Events")</code></pre>
74
+
75
+ <p>To specify applications by other means (e.g. URL), create a <code>ScriptingAddition</code> object first, then call the appropriate <code>by...</code> method.</p>
76
+
77
+ <p>For convenience, if both arguments are nil then a <code>ScriptingAddition</code> object for StandardAdditions is created and returned. This object is also cached internally for efficiency and returned as-is in subsequent calls; thus, for example:</p>
78
+
79
+ <pre><code>sa = osax
80
+ sa.some_command
81
+ sa.another_command</code></pre>
82
+
83
+ <p>could also be written as:</p>
84
+
85
+ <pre><code>osax.some_command
86
+ osax.another_command</code></pre>
87
+
88
+ <p>without the additional overhead of creating a new ScriptingAddition object each time.</p>
89
+
90
+
91
+ <h3>The <code>ScriptingAddition</code> class</h3>
92
+
93
+ <pre><code>ScriptingAddition -- represents a single scripting addition and its
94
+ target application
95
+
96
+ Constructors:
97
+
98
+ ScriptingAddition.new(name, terms=nil) -- make a ScriptingAddition
99
+ object for the specified scripting addition, targeted
100
+ at the current application
101
+
102
+ name: string -- a scripting addition's name,
103
+ e.g. "StandardAdditions"; basically its filename
104
+ minus the '.osax' suffix
105
+
106
+ terms : module or nil -- an optional terminology glue
107
+ module,as exported by Terminology.dump; if
108
+ given, ScriptingAddition will use this instead
109
+ of retrieving the terminology dynamically
110
+
111
+ Methods:
112
+
113
+ # Introspection:
114
+
115
+ commands -- returns names of all available commands
116
+
117
+ parameters(command_name) -- returns a command's parameter names
118
+
119
+ # Specifying a different target application:
120
+
121
+ # Each of the following methods returns a new ScriptingAddition
122
+ # instance targeted at the specified application. The arguments
123
+ # are the same as for the by_name, by_creator, etc. methods in
124
+ # appscript.
125
+
126
+ by_name(name) -- name or full path of application, e.g. "Finder"
127
+
128
+ by_creator(creator) -- four-character creator code, e.g. "ttxt"
129
+
130
+ by_id(id) -- bundle id, e.g. "com.apple.ical"
131
+
132
+ by_pid(pid) -- Unix process ID, e.g. 4005
133
+
134
+ by_url(url) -- eppc URL, e.g. "eppc://jukebox-mac.local/iTunes"</code></pre>
135
+
136
+ </div>
137
+
138
+ <!-- bottom navigation -->
139
+
140
+ <div class="footer">
141
+ <a href="01_introduction.html">Previous</a> &bull;
142
+ <a href="index.html">Up</a> &bull;
143
+ <a href="03_examples.html">Next</a>
144
+
145
+ <span>&copy; 2006-2008 HAS</span>
146
+ </div>
147
+
148
+ </body>
149
+ </html>
@@ -0,0 +1,75 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+
5
+ <title>rb-osax manual | 3. Examples</title>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
+ <style type="text/css" media="all"><!--@import url(../full.css);--></style>
9
+
10
+ </head>
11
+ <body>
12
+
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
+
15
+ <!-- top navigation -->
16
+ <div class="navbar">
17
+ <a href="02_interface.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="04_notes.html">Next</a>
20
+
21
+ <span>
22
+ <a href="../appscript-manual/index.html">appscript</a> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <strong><a href="../osax-manual/index.html">osax</a></strong> /
25
+ <a href="../aem-manual/index.html">aem</a>
26
+ </span>
27
+ </div>
28
+
29
+ <!-- content -->
30
+ <div id="content">
31
+
32
+ <h2>3. Examples</h2>
33
+
34
+
35
+ <pre><code>require "osax"
36
+
37
+ # Create a new ScriptingAddition object:
38
+
39
+ sa = OSAX.osax
40
+
41
+
42
+ # List all available commands:
43
+
44
+ p sa.commands
45
+ # Result: ["ASCII_character", "ASCII_number", "activate", ...]
46
+
47
+
48
+ # Call some commands:
49
+
50
+ sa.beep
51
+
52
+ p sa.path_to(:scripts_folder)
53
+ # Result: MacTypes::Alias.at("/Users/foo/Library/Scripts/")
54
+
55
+ p sa.display_dialog("Ruby says hello!",
56
+ :buttons=&gt;["Hi!", "Howdy!", "Duuuude!"],
57
+ :default_button=&gt;3)
58
+ # Result: {:button_returned=&gt;"Howdy!"}</code></pre>
59
+
60
+
61
+
62
+ </div>
63
+
64
+ <!-- bottom navigation -->
65
+
66
+ <div class="footer">
67
+ <a href="02_interface.html">Previous</a> &bull;
68
+ <a href="index.html">Up</a> &bull;
69
+ <a href="04_notes.html">Next</a>
70
+
71
+ <span>&copy; 2006-2008 HAS</span>
72
+ </div>
73
+
74
+ </body>
75
+ </html>
@@ -0,0 +1,80 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+
5
+ <title>rb-osax manual | 4. Notes</title>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
+ <style type="text/css" media="all"><!--@import url(../full.css);--></style>
9
+
10
+ </head>
11
+ <body>
12
+
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
+
15
+ <!-- top navigation -->
16
+ <div class="navbar">
17
+ <a href="03_examples.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a>
19
+
20
+ <span>
21
+ <a href="../appscript-manual/index.html">appscript</a> /
22
+ <a href="../mactypes-manual/index.html">mactypes</a> /
23
+ <strong><a href="../osax-manual/index.html">osax</a></strong> /
24
+ <a href="../aem-manual/index.html">aem</a>
25
+ </span>
26
+ </div>
27
+
28
+ <!-- content -->
29
+ <div id="content">
30
+
31
+ <h2>4. Notes</h2>
32
+
33
+ <h3>GUI interaction</h3>
34
+
35
+ <p>When using scripting addition commands that require GUI access (e.g. <code>display_dialog</code>) targeted at the command-line Ruby interpreter, the osax module will automatically convert the non-GUI interpreter process into a full GUI process to allow these commands to operate correctly. If you want to avoid this, target these commands at a faceless GUI application such as System Events instead:</p>
36
+
37
+ <pre><code>sa = OSAX.osax("StandardAdditions", "System Events")
38
+ sa.activate # give focus to System Events
39
+ p sa.display_dialog("Ruby says hello!",
40
+ :buttons=&gt;["Hi!", "Howdy!", "Duuuude!"],
41
+ :default_button=&gt;3)
42
+ # Result: {:button_returned=&gt;"Duuuude!"}</code></pre>
43
+
44
+
45
+ <h3>64-bit limitations</h3>
46
+
47
+ <p>The <code>OSAX</code> module currently only supports dynamic retrieval of scripting addition terminology when running in 32-bit processes. To use it in 64-bit processes, use the <code>Terminology</code> module's <code>dump</code> method to export a static terminology 'glue' module for the desired scripting addition (running it in a 32-bit process), then import that module and pass it as the second argument to the <code>ScriptingAddition</code> class's initialiser. For example, to export a glue module for Standard Additions:</p>
48
+
49
+ <pre><code>require 'appscript'
50
+
51
+ Terminology.dump('/System/Library/ScriptingAdditions/StandardAdditions.osax',
52
+ 'StandardAdditions', 'standard_additions.rb')</code></pre>
53
+
54
+ <p>To create a new <code>ScriptingAddition</code> instance using the terminology provided by this glue module:</p>
55
+
56
+ <pre><code>require 'osax'
57
+ require 'standard_additions'
58
+
59
+ sa = OSAX::ScriptingAddition.new('StandardAdditions', StandardAdditions)</code></pre>
60
+
61
+
62
+ <h3>Known problems</h3>
63
+
64
+ <p>When using the <code>OSAX</code> module within RubyCocoa-based applications, avoid creating <code>ScriptingAddition</code> instances before the main event loop is started as this can result in the application behaving strangely (minimised windows don't expand correctly) due to a bug in OS X's <code>OSAGetAppTerminology</code> function.</p>
65
+
66
+
67
+
68
+ </div>
69
+
70
+ <!-- bottom navigation -->
71
+
72
+ <div class="footer">
73
+ <a href="03_examples.html">Previous</a> &bull;
74
+ <a href="index.html">Up</a>
75
+
76
+ <span>&copy; 2006-2008 HAS</span>
77
+ </div>
78
+
79
+ </body>
80
+ </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>osax</title>
5
+ <title>rb-osax manual</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,215 +10,46 @@
10
10
  </head>
11
11
  <body>
12
12
 
13
- <h1>osax</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>
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
+ <a href="../appscript-manual/index.html">appscript</a> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <strong><a href="../osax-manual/index.html">osax</a></strong> /
25
+ <a href="../aem-manual/index.html">aem</a>
26
+ </span>
18
27
  </div>
19
28
 
20
29
  <!-- content -->
21
30
  <div id="content">
22
- <h2>What is osax?</h2>
23
31
 
24
- <p>The <code>OSAX</code> module provides an easy way to call scripting additions (a.k.a. OSAXen) from Ruby. It exports a single public class, <code>ScriptingAddition</code>, and two functions, <code>osax</code> and <code>scripting_additions</code>.</p>
25
-
26
- <p>The <code>ScriptingAddition</code> class represents a single scripting addition. It is similar to an appscript application object, except that it defines commands for the specified scripting addition instead of the application's normal commands. </p>
27
-
28
- <p>Once you've created a <code>ScriptingAddition</code> instance, you can invoke its commands in exactly the same way as you would call a scriptable application's commands in appscript.</p>
29
-
30
- <p>For example:</p>
31
-
32
- <pre><code>require "osax"
33
-
34
- sa = OSAX::ScriptingAddition.new("StandardAdditions")
35
-
36
- sa.say("Hello world", :using=&gt;"Victoria")</code></pre>
37
-
38
- <p>The default application commands (<code>run</code>, <code>activate</code>, <code>quit</code>, etc.) are also available; see the appscript manual for details on those.</p>
39
-
40
- <p>By default, <code>ScriptingAddition</code> objects are targeted at the current application. You can obtain a <code>ScriptingAddition</code> object targeted at another application by calling one of its <code>by...</code> methods.</p>
41
-
42
-
43
-
44
- <h2><code>OSAX.scripting_additions</code></h2>
45
-
46
- <p>The <code>scripting_additions</code> function returns the names of all installed scripting additions:</p>
47
-
48
- <pre><code>require "osax"
49
-
50
- p OSAX.scripting_additions
51
- # Result: ["Digital Hub Scripting", "StandardAdditions", ...]</code></pre>
52
-
53
-
54
-
55
- <h2><code>OSAX.osax</code></h2>
56
-
57
- <p>The <code>osax</code> function provides a convenient shortcut for creating new <code>ScriptingAddition</code> instances.</p>
58
-
59
- <pre><code>osax(name=nil, app_name=nil) -- convenience method for
60
- creating a new ScriptingAddition instance
61
- name : String | nil -- scripting addition's name
62
- (nil = "StandardAdditions")
63
- app_name : String | nil -- target application's name/path, or nil
64
- for current application
65
- Result : ScriptingAddition</code></pre>
66
-
67
- <p>For example:</p>
68
-
69
- <pre><code>require "osax"
70
-
71
- sa = OSAX.osax
72
-
73
- p sa
74
- # Result: #&lt;OSAX::ScriptingAddition
75
- # name="StandardAdditions"
76
- # target=AEM::Application.current&gt;</code></pre>
77
-
78
- <p>In addition, the <code>osax</code> function accepts an application name as an optional second argument, allowing you to specify the application you want to handle the scripting addition's commands, e.g.:</p>
79
-
80
- <pre><code>OSAX.osax("StandardAdditions", "System Events")</code></pre>
81
-
82
- <p>is shorthand for:</p>
83
-
84
- <pre><code>OSAX::ScriptingAddition.new("StandardAdditions").by_name("System Events")</code></pre>
85
-
86
- <p>To specify applications by other means (e.g. URL), create a <code>ScriptingAddition</code> object first, then call the appropriate <code>by...</code> method.</p>
87
-
88
- <p>For convenience, if both arguments are nil then a <code>ScriptingAddition</code> object for StandardAdditions is created and returned. This object is also cached internally for efficiency and returned as-is in subsequent calls; thus, for example:</p>
89
-
90
- <pre><code>sa = osax
91
- sa.some_command
92
- sa.another_command</code></pre>
93
-
94
- <p>could also be written as:</p>
95
-
96
- <pre><code>osax.some_command
97
- osax.another_command</code></pre>
98
-
99
- <p>without the additional overhead of creating a new ScriptingAddition object each time.</p>
100
-
101
-
102
-
103
- <h2><code>OSAX::ScriptingAddition</code></h2>
104
-
105
- <pre><code>ScriptingAddition -- represents a single scripting addition and its
106
- target application
107
-
108
- Constructors:
109
-
110
- ScriptingAddition.new(name, terms=nil) -- make a ScriptingAddition
111
- object for the specified scripting addition, targeted
112
- at the current application
113
-
114
- name: string -- a scripting addition's name,
115
- e.g. "StandardAdditions"; basically its filename
116
- minus the '.osax' suffix
117
-
118
- terms : module or nil -- an optional terminology glue
119
- module,as exported by Terminology.dump; if
120
- given, ScriptingAddition will use this instead
121
- of retrieving the terminology dynamically
122
-
123
- Methods:
124
-
125
- # Introspection:
126
-
127
- commands -- returns names of all available commands
128
-
129
- parameters(command_name) -- returns a command's parameter names
130
-
131
- # Specifying a different target application:
132
-
133
- # Each of the following methods returns a new ScriptingAddition
134
- # instance targeted at the specified application. The arguments
135
- # are the same as for the by_name, by_creator, etc. methods in
136
- # appscript.
137
-
138
- by_name(name) -- name or full path of application, e.g. "Finder"
139
-
140
- by_creator(creator) -- four-character creator code, e.g. "ttxt"
141
-
142
- by_id(id) -- bundle id, e.g. "com.apple.ical"
143
-
144
- by_pid(pid) -- Unix process ID, e.g. 4005
145
-
146
- by_url(url) -- eppc URL, e.g. "eppc://jukebox-mac.local/iTunes"</code></pre>
147
-
148
-
149
- <h2>Examples</h2>
150
-
151
- <pre><code>require "osax"
152
-
153
- # Create a new ScriptingAddition object:
154
-
155
- sa = OSAX.osax
156
-
157
-
158
- # List all available commands:
159
-
160
- p sa.commands
161
- # Result: ["ASCII_character", "ASCII_number", "activate", ...]
162
-
163
-
164
- # Call some commands:
165
-
166
- sa.beep
167
-
168
- p sa.path_to(:scripts_folder)
169
- # Result: MacTypes::Alias.at("/Users/foo/Library/Scripts/")
170
-
171
- p sa.display_dialog("Ruby says hello!",
172
- :buttons=&gt;["Hi!", "Howdy!", "Duuuude!"],
173
- :default_button=&gt;3)
174
- # Result: {:button_returned=&gt;"Howdy!"}</code></pre>
175
-
176
-
177
- <h2>Notes</h2>
178
-
179
- <h3>GUI interaction</h3>
180
-
181
- <p>When using scripting addition commands that require GUI access (e.g. <code>display_dialog</code>) targeted at the command-line Ruby interpreter, the osax module will automatically convert the non-GUI interpreter process into a full GUI process to allow these commands to operate correctly. If you want to avoid this, target these commands at a faceless GUI application such as System Events instead:</p>
182
-
183
- <pre><code>sa = OSAX.osax("StandardAdditions", "System Events")
184
- sa.activate # give focus to System Events
185
- p sa.display_dialog("Ruby says hello!",
186
- :buttons=&gt;["Hi!", "Howdy!", "Duuuude!"],
187
- :default_button=&gt;3)
188
- # Result: {:button_returned=&gt;"Duuuude!"}</code></pre>
189
-
190
-
191
- <h3>64-bit limitations</h3>
192
-
193
- <p>The <code>osax</code> module currently only supports dynamic retrieval of scripting addition terminology when running in 32-bit processes. To use it in 64-bit processes, use the <code>Terminology</code> module's <code>dump</code> method to export a static terminology 'glue' module for the desired scripting addition (running it in a 32-bit process), then import that module and pass it as the second argument to the <code>ScriptingAddition</code> class's initialiser. For example, to export a glue module for Standard Additions:</p>
194
-
195
- <pre><code>require 'appscript'
196
-
197
- Terminology.dump('/System/Library/ScriptingAdditions/StandardAdditions.osax',
198
- 'StandardAdditions', 'standard_additions.rb')</code></pre>
199
-
200
- <p>To create a new <code>ScriptingAddition</code> instance using the terminology provided by this glue module:</p>
201
-
202
- <pre><code>require 'osax'
203
- require 'standard_additions'
204
-
205
- sa = OSAX::ScriptingAddition.new('StandardAdditions', StandardAdditions)</code></pre>
206
-
207
-
208
- <h3>Known problems</h3>
209
-
210
- <p>When using the <code>osax</code> module within RubyCocoa-based applications, avoid creating <code>ScriptingAddition</code> instances before the main event loop is started as this can result in the application behaving strangely (minimised windows don't expand correctly) due to a bug in OS X's <code>OSAGetAppTerminology</code> function.</p>
32
+ <h2>Contents</h2>
211
33
 
34
+ <ol>
35
+ <li><a href="01_introduction.html">Introduction</a></li>
36
+ <li><a href="02_interface.html">Interface</a></li>
37
+ <li><a href="03_examples.html">Examples</a></li>
38
+ <li><a href="04_notes.html">Notes</a></li>
212
39
 
40
+ </ol>
213
41
 
214
42
  </div>
215
43
 
216
44
  <!-- bottom navigation -->
217
- <div class="navbar">
218
- <a href="../index.html">Up</a>
45
+
46
+ <div class="footer">
47
+ <a href="../index.html">Previous</a> &bull;
48
+ <a href="../index.html">Up</a> &bull;
49
+ <a href="01_introduction.html">Next</a>
50
+
51
+ <span>&copy; 2006-2008 HAS</span>
219
52
  </div>
220
53
 
221
- <!--footer-->
222
- <p class="footer">&copy; 2006-2008 HAS</p>
223
54
  </body>
224
55
  </html>