Cool, thanks again for your help and quick responses! On Sep 29, 2011, at 9:39 PM, Mark Rada <mr...@marketcircle.com> wrote:
I missed your question earlier. There is a very easy way to find out what all the descriptions of all the menu extras are: ui = Accessibility.application_with_bundle_identifier >> 'com.apple.systemuiserver' >> >> ui.menu_extras.map(&:description) >> > That is all. There is also an arguably evil freedom patch to NSArray that would let you do this: ui.menu_extras.descriptions Which I think is a bit more succinct… On 2011-09-29, at 9:17 PM, Mark Rada wrote: Hmm, that bug sounds like it could be the culprit, but I haven't checked. I'm busy tonight, but I'll have time tomorrow to look into it; I should make a note in the AXElements documentation about NSStatusBar things. On 2011-09-29, at 8:46 PM, Brice Ruth wrote: I followed the steps in the radar below to activate VO and had the same results as described. Interesting to see which of my non-Apple menu items are using the private API ;-) SwitchResX MenuMeters And those that are using the public API Quicksilver pyTivoX Jumpcut gfxCardStatus vmware dropbox (mine) The workaround listed in the radar talks about associating a global shortcut with a NSStatusItem. Does anyone know how to do that? And for AX - can that be accessed then via the global shortcut? Thanks! Brice Ruth, FCD Software Engineer, Madison WI On Thu, Sep 29, 2011 at 7:40 PM, Brice Ruth <bdr...@gmail.com> wrote: > It appears that there's a known bug in the public NSStatusBar / > NSStatusItem API that prevents these from being selected by the > Accessibility API. At least that's what I'm assuming - see here: > > http://openradar.appspot.com/6832098 > > Granted, this is from 2009, but I'm actually unable to access my > application as you indicated below .. I can access the volume control, but > when I try to find mine, I can't ... is there any way to list all the > menu_extra descriptions that AX can see? That way I can confirm that I'm not > just going after the wrong description. > > Thanks! > > Brice Ruth, FCD > Software Engineer, Madison WI > > > On Thu, Sep 29, 2011 at 11:47 AM, Mark Rada <mr...@marketcircle.com>wrote: > >> Whether or not an app is supported depends on if it implements the >> accessibility protocol. All Cocoa applications, including NSStatusBar apps, >> do implement this by default. >> >> However, sometimes the default implementation is not sufficient or is just >> buggy. So far, the only places I have had issues is with things in the menu >> bar; I have logged bugs with Apple, but only in the last few months and so >> they haven't been fixed yet. However, there is nothing stopping you from >> overriding the appropriate methods in the NSAccessibility protocol for the >> class/object that isn't behaving properly. Customizing accessibility is >> supported by Apple; though you usually will only have to override/implement >> the protocol if you have a lot of custom UI elements that either directly >> subclass from NSView or change the default behaviour a lot. I would check >> things out using the Accessibility Inspector first to see how viable >> AXElements would be in this case. >> >> The difficult part about menu bar objects is getting the initial reference >> to the object; in a worst case scenario you would have to scan across the >> menu bar to find the object (use Accessibility.element_at_position for >> various coordinates). Normally, though, you can just get the application >> reference, just as you would for an app that uses a window. Here is a short >> example for using the standard menu bar items to futz with the volume >> slider: >> >> ui = Accessibility.application_with_bundle_identifier >> 'com.apple.systemuiserver' >> volume = ui.menu_extra(description: 'system sound volume') >> >> click volume # this will click the icon so the slider is visible, >> otherwise it won't work >> >> 15.times { decrement volume.slider } >> 15.times { increment volume.slider } >> >> >> HTH, >> Mark >> >> >> On 2011-09-29, at 11:24 AM, Brice Ruth wrote: >> >> This looks very useful. I skimmed through the documentation and didn't see >> anything for accessing NSStatusBar applications. Is this possible? Or would >> I need to add some hooks in my application to allow the test to open the >> windows when launched versus via clicking a menuitem from the NSStatusBar >> menu? >> >> Brice Ruth, FCD >> Software Engineer, Madison WI >> >> >> On Thu, Sep 29, 2011 at 9:55 AM, Mark Rada <mr...@marketcircle.com>wrote: >> >>> Hey all, >>> >>> On behalf of Marketcircle Inc., I am open sourcing a library that I have >>> been working on for a while now. AXElements is an alternative to using >>> Auotmator or the ScriptingBridge frameworks. AXElements provides more >>> generic actions than it's alternatives and should work with almost any Cocoa >>> app without needing to be explicitly supported; you can think of it as >>> Capybara for desktop apps. >>> >>> It is meant to be used for automated testing of GUI apps, but can be used >>> for general UI automation. You can combine it with testing libraries like >>> minitest, Rspec, or macbacon; but there is nothing stopping you from >>> combining AXElements with James to voice command some workflows. >>> >>> The source is available on github and I have put together some small >>> tutorails in the documentation. I've also made a beta release to rubygems, >>> and will make a proper release soon. To get it now: >>> >>> macgem install AXElements --pre >>> >>> And then require 'ax_elements' to get started in macirb or a script. >>> >>> Source: http://github.com/Marketcircle/AXElements >>> Documentation (including some tutorials): >>> http://rdoc.info/github/Marketcircle/AXElements/master/frames/file/README.markdown >>> >>> Cheers, >>> Mark Rada >>> >>> _______________________________________________ >>> MacRuby-devel mailing list >>> MacRuby-devel@lists.macosforge.org >>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >>> >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >> >> >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >> >> > _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel