rubyosa 0.3.0.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,8 +30,10 @@ module OSA
30
30
  @sym_to_code = {}
31
31
  @code_to_sym = {}
32
32
 
33
- def self.add_property(sym, code)
34
- return if @sym_to_code.has_key?(sym) or @code_to_sym.has_key?(code)
33
+ def self.add_property(sym, code, override=false)
34
+ unless override
35
+ return if @sym_to_code.has_key?(sym) or @code_to_sym.has_key?(code)
36
+ end
35
37
  @sym_to_code[sym] = code
36
38
  @code_to_sym[code] = sym
37
39
  end
@@ -134,3 +136,6 @@ end
134
136
  :visible, 'pvis'
135
137
 
136
138
  ].each_slice(2) { |sym, code| OSA.add_property(sym, code) }
139
+
140
+ # A convenience shortcut to :point_size
141
+ OSA.add_property(:size, 'ptsz', true)
@@ -271,6 +271,7 @@ rbosa_app_send_event (VALUE self, VALUE event_class, VALUE event_id, VALUE param
271
271
  VALUE rb_timeout;
272
272
  SInt32 timeout;
273
273
  VALUE rb_reply;
274
+ unsigned has_direct_param;
274
275
 
275
276
  error = AECreateAppleEvent (RVAL2FOURCHAR (event_class),
276
277
  RVAL2FOURCHAR (event_id),
@@ -282,6 +283,7 @@ rbosa_app_send_event (VALUE self, VALUE event_class, VALUE event_id, VALUE param
282
283
  rb_raise (rb_eArgError, "Cannot create Apple Event '%s%s' : %s (%d)",
283
284
  RVAL2CSTR (event_class), RVAL2CSTR (event_id), error_code_to_string (error), error);
284
285
 
286
+ has_direct_param = 0;
285
287
  if (!NIL_P (params)) {
286
288
  unsigned i;
287
289
 
@@ -289,6 +291,7 @@ rbosa_app_send_event (VALUE self, VALUE event_class, VALUE event_id, VALUE param
289
291
  VALUE ary;
290
292
  VALUE type;
291
293
  VALUE element;
294
+ FourCharCode code;
292
295
 
293
296
  ary = RARRAY (params)->ptr[i];
294
297
  if (NIL_P (ary) || RARRAY (ary)->len != 2)
@@ -296,6 +299,10 @@ rbosa_app_send_event (VALUE self, VALUE event_class, VALUE event_id, VALUE param
296
299
 
297
300
  type = RARRAY (ary)->ptr[0];
298
301
  element = RARRAY (ary)->ptr[1];
302
+ code = RVAL2FOURCHAR (type);
303
+
304
+ if (code == '----')
305
+ has_direct_param = 1;
299
306
 
300
307
  error = AEPutParamDesc (&ae, RVAL2FOURCHAR (type), rbosa_element_aedesc (element));
301
308
  if (error != noErr) {
@@ -308,7 +315,10 @@ rbosa_app_send_event (VALUE self, VALUE event_class, VALUE event_id, VALUE param
308
315
 
309
316
  rb_timeout = rb_iv_get (mOSA, "@timeout");
310
317
  timeout = NIL_P (rb_timeout) ? kAEDefaultTimeout : NUM2INT (rb_timeout);
311
-
318
+
319
+ if (has_direct_param == 0)
320
+ AEPutAttributePtr (&ae, 'subj', typeNull, NULL, 0);
321
+
312
322
  error = AESend (&ae, &reply, (RVAL2CBOOL(need_retval) ? kAEWaitReply : kAENoReply) | kAECanInteract | kAECanSwitchLayer,
313
323
  kAENormalPriority, timeout, NULL, NULL);
314
324
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: rubyosa
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.0.1
7
- date: 2007-03-02 00:00:00 +01:00
6
+ version: 0.4.0
7
+ date: 2007-04-11 00:00:00 +02:00
8
8
  summary: A Ruby/AppleEvent bridge.
9
9
  require_paths:
10
10
  - lib
@@ -55,6 +55,9 @@ files:
55
55
  - sample/AddressBook/inspect.rb
56
56
  - sample/iTunes/tag_genre_lastfm.rb
57
57
  - data/rubyosa/rdoc_html.rb
58
+ - sample/Photoshop/new_doc.rb
59
+ - sample/Photoshop/new_doc_with_text.rb
60
+ - sample/iTunes/name_that_tune.rb
58
61
  test_files: []
59
62
 
60
63
  rdoc_options: []