Matt Gemmell

TOLL is available now!

An action-thriller novel — book 2 in the KESTREL series.

★★★★★ — Amazon

Obscure but cool Panther features

source 7 min read

My own work-in-progress list of Panther changes and improvements I've discovered. Feel free to point out more stuff via the comments.

User-level features

  • Desktop printers have returned (Utilities folder -> Printer Setup Utility -> Printers menu -> Create Desktop Printer, or just drag a printer from the list onto your desktop).
  • Word .doc import/export for NSTextViews (try it with TextEdit).
  • Shadowed text (again, try it with TextEdit: show the Ruler in a document, and choose Shadowed from the Styles popup). These styles can be global too.
  • New higher quality "Vicki" voice (tweaked, softer sounding version of Victoria, which is also still included). It's almost sexy when it says "About this Mac".
  • Console has been prettified, with an outline view of most logs you'll want to view, and the ability to insert a "mark" (time/date stamp) into the current log.
  • NSTextViews now support pressing option-Escape (or F5) to pop up a list of autocompletion suggestions for the word you're typing (try it in TextEdit). The default list comes from the system dictionary. Developers can also naturally substitute their own list as appropriate, as with Xcode's Code Sense feature.
  • Activity Monitor (formerly Process Viewer and CPU Monitor, as I recall) has had a major overhaul. I know that Neil will be playing with it quite a bit.
  • Sherlock now supports collections (groups of channels), including what looks like dynamic collections (analogous to SmartGroups in Xcode).
  • Xcode supports SmartGroups; much like the smart playlists in iTunes, you can have a group which always shows all your project's ".m" or ".c" files, for example. You can choose the root of the search, whether to recurse, and even enter a regular expression to determine which files match. Very, very handy.
  • Preview is lightning fast now, and lets you select both areas (to copy as an image) or text (to copy as text, obviously). What's more, it's pretty damn good at the text-selection. Goodbye forever, Acrobat - don't ever call me.
  • Preview also automatically renders faxes, EPS and PostScript files as PDF, for your viewing pleasure. Perhaps best of all, Preview's "Actual Size" shortcut is now cmd-0, no longer conflicting with the Universal Access "Zoom In" shortcut (which is a good demo feature to use on your non-Mac friends).
  • You can now alter the screen's contrast via Universal Access. Looks horrible.
  • Mail's threaded view has a lovely thread-expanding animation when you click on a message's subject in a thread summary.
  • It really is possible for a grown man to sit and play with Exposé's "Show Desktop" feature for half an hour straight.
  • You can now click on the "replied to" status icon arrow beside a message in Mail, to open the reply you sent. This is a little bit like what Entourage does, and it's handy.
  • Favorites seems to have vanished from the Finder, in favour of the "sidebar" in Finder windows. You can no longer open the Favorites folder with cmd-shift-F (though you can now open the Utilities folder with cmd-shift-U). Cmd-T is now Add To Sidebar, but if you also press the shift key, it becomes Add To Favorites.
  • Image Capture now lets you use others' shared devices, and to share yours. You can even enable web sharing of your devices, which gives a cute brushed-metal web interface to any connected digital cameras. Image Capture will tell you the URL to use (in its Preferences, in the Sharing tab).
  • I'm fairly sure DVD Player has had a UI overhaul. I don't use it much.
  • Address Book synchronises with Exchange, can inform people when your contact info is changed, has a really nice Template definition panel in its Preferences window, and shows you what groups the current person is in when you hold down the option key.
  • There's a nice image-chooser appearing in various places throughout the system (including Address Book, to choose a person's photo, and also in the Accounts pane in System Preferences). It supports drag/drop or choosing of an image, capturing from a connected video device, and scaling and cropping of the image. Nice.
  • The Finder has a new Secure Empty Trash command (in the Finder menu).
  • Help Viewer is now a lot faster (wouldn't be bloody difficult, admittedly).
  • Help buttons (little round buttons with a "?" symbol) are now purple. Reminds me of that abortive "single window mode" widget present in early builds of OS X.
  • The Finder now has a contextual menu option to make an archive of the selected file(s). The resulting archive is a .zip file, with a cute icon.
  • The Finder also now has Folder Actions-related contextual menu options, which provide a UI for configuration.
  • The "Send File to Bluetooth Device" service has the amazingly-annoying shortcut cmd-shift-B, ensuring conflicts aplenty with other apps. Whoever was responsible for that, cheers mate. Don't have a nasty accident or anything.

    A few Cocoa AppKit notable changes/improvements

  • There's now a standard Address panel, letting you choose one or more people or groups from your Address Book database. It's in an IB palette located in /Developer/Extras/Palettes - you'll need to add it to IB yourself (ABPalette.palette).
  • There's now a standard Find panel available to NSTextViews. About time too. Just check the checkbox in an NSTextView's IB inspector, and you're all set.
  • OS X now supports cursors of any size, not just 16x16. I expect Virtual Viagra X before the week is out.
  • There are several new standard cursors available, including the various "hand" cursors, six resizing cursors, and the "disappearing item" (Dock poof/smoke) cursor. You can see a preview of them all via the NSCursor documentation (but I know you'll be making a test app anyway, to try out cursors larger than 16x16).
  • You can now programmatically access the Dock poof animation, triggering it whenever appropriate in your applications. Or whenever inappropriate, more likely.
  • You can now easily cause menu items to change dynamically when modifiers are pressed. What you do is create multiple menu items (in Interface Builder) which have the same primary shortcut key (like M or = or whatever), but different modifier combinations (one constraint is that the Shift key must be either present or absent in all). You must also check the "is alternate" checkbox for all menuitems except the first one. When your app runs, all those menu items will be collapsed into one, which will change dynamically as the user presses the various modifiers. So, you can easily have "Do Something With Options..." (cmd-Y) change to "Do Something Now" (cmd-opt-Y) when the user presses the option key.
  • There's now a "mini" size for several of the standard controls.
  • Unsurprisingly, we now have a standard metal pushbutton (in two sizes).
  • New classes to take a look at: NSController (read and understand now, because it'll save you lots of busywork in future), NSAlert, NSSpeechRecognizer, NSSpeechSynthesizer, NSShadow, NSNib, NSSegmentedControl, and NSSearchField.
  • Menu items which are in the menubar (i.e. the "titles" of menus) will now show an image if they have one set. Easy script menus etc.
  • Submenu titles themselves can now trigger an action if selected.
  • You can now ask NSColor for an array containing the proper NSColors for alternating background row colours in tables etc. So we no longer need to debate the issue on coca-dev.
  • NSImageView plays animated GIFs if you enable it.
  • NSViews can now be "hidden" without having to be removed from their superview. Let me say that again: NSViews can now be hidden. I almost cried.
  • NSView apparently takes more care to redraw only the necessary areas of itself, no longer just stubbornly unioning all dirty rects. You can also ask it for the rects needing redrawn.
  • You can now programmatically prevent a view from drawing its focus ring.
  • NSScrollView can now automatically hide its scrollers if they're not necessary.
  • NSTextFieldCell can now have placeholder text (the greyed-out text you see in Safari's Google Search field, and many other places). It doesn't count as an actual stringValue, and only appears if the field is empty.
  • NSStatusItems can have an alternate (selected) image set, and can be asked to draw the standard menu background in a rect.
  • NSWorkspace has some useful new stuff, including APIs to launch files/URLs with more Launch Services options, to get an app bundle's absolute path from its identifier, and to get notifications upon wake, sleep, user switch-out and user switch-in (i.e. Fast User Switching).
  • You can now use the larger-sized spinny NSProgressIndicator you see during startup/shutdown.
  • You can now code your NSWindow delegate to tell sheets to appear in a custom location, not just always centred under the titlebar. Vertical and horizontal offsets are supported, no doubt leading to some very interesting UI designs.
  • NSWindow has all manner of new methods to precisely control how a window resizes.
  • There are now APIs for going to a specific location in a specified Help Book, or querying a Help Book via Help Viewer.
  • NSBrowser has been stripped down and rebuilt for a better user experience, in terms of immediate feedback. Read the docs carefully if you use browsers in your apps.
  • Similarly, see the NSTableView documentation. Things have been changing, particularly with respect to sorting.
  • NSToolbars can now show which item is selected, via a grey background square. Expect 10,000 apps to update their Preferences windows accordingly.
  • Tooltips now wrap if too long, and apps can now optionally show their tooltips even if in the background.
  • The text system has been massively overhauled and improved. Read the docs. All of them. Thoroughly.