6/03/2009
How’s that for a TitleCased title?
So I’ve been checking out Path Finder again. The thing with Path Finder is that it’s very nearly awesome, but there are a few things that bug the hell out of me. I may or may not come back to the most irritating shortcomings in a later post, but I’m going to address one of the main issues straight away; Path Finder has crappy support for AppleScript.
I love that little quirky language that actually gives me loads of control over the OS, but for some reason you can’t just rewrite your old AppleScripts to do a check for the current “Finder app” and react upon it with the same code. I have no idea why porting the Finder Dictionary to the Path Finder Dictionary is so hard (if I did I’d be writing some way cooler code than I currently am) but it bugs the hell out of me when some of my most frequently used scripts won’t work anymore. It’s like sitting down on a Mac that hasn’t got Quicksilver installed. You feel like you’re typing with boxing gloves.
Therefore I’ve set out to port my most crucial scripts so they’ll work whether I’m in Finder or Path Finder.
Read the rest of this article »
24/09/2008
I realize that I’m late to the party with this, but so far all the examples I’ve seen have been a bit overkill for my needs, so I’m putting this out there in case someone else might have some use for it.
Of course,
is a Flash developers best friend. Hell, I sometimes feel I’d be happier if I never had to go beyond the output panel, but that’s neither here nor there. The trace statement however, as beautiful as it may be, doesn’t help you a lot when you’re debugging the project in the browser, and therefore Adobe created
to let you output the traces to Firebug. But calling
1
| ExternalInterface.call("console.log", args); |
every time you want to output something is a pain in the ass, and going through your code to change all your trace calls to ExternalInterface calls is an even bigger pain in the ass, and therefore developers created various methods to ease the pain. Here is the very lightweight solution I use myself.
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
| package no .martinjacobsen .utils {
import flash.external.ExternalInterface;
public class XTrace {
public static var enabled:Boolean = true;
public function XTrace (){ /*...*/ }
public static function log(...args :*) : void {
if(enabled == true) {
if(ExternalInterface.available){
trace("ExternalInterface is available")
for (var i :uint = 0; i < args .length; i ++){
ExternalInterface.call("console.log", args [i ]);
trace(args [i ]);
}
} else {
trace("ExternalInterface is not available")
for (var j :uint = 0; j < args .length; j ++){
trace(args [j ]);
}
}
} else {
trace("Set 'XTRace.enabled = true;' to enable traces.");
}
}
}
} |
As you see this class simply checks whether ExternalInterface is available, and if so traces the output to the console. If ExternalInterface is not available the statement will just be traced. As a bonus you can also set
to disable all traces if you don’t want to go through your code to remove traces, or go into the publish settings to strip them out.
Usage is extremely simplistic:
1 2 3 4 5
| import no.martinjacobsen.utils.XTrace;
XTrace.log("Hello World", 42, false, myObject);
XTrace.enabled = false; //Disable all traces |