2D graphics, rendering (Quartz), 10
3D graphics, OpenGL features, 11
? (question mark) conditional expression (C programming language), 161
About box, scrolling, 302
AddressBook.framework, 35
Adobe Photoshop Web site, 45
After Dark screensaver program, 175
agvtool utility (command line), 34
alert panels, displaying (code snippet), 299–300
alpha channels, 177–178
Apache, Mac OS X preloaded software, 17
APIs (Carbon)
function of, 99
legacy software support, 13
AppController.h code
CFPluginCocoaApp program, 353–354
MyCocoaApp program, 359
MyNSBP_App program, 333
MySOAP program, 394
MyStatusItem program, 365
MyTerminal program, 380
MyThread program, 375
MyXMLRPC program, 386
plistPlugin program, 343
RadarWatcher program, 313
AppController.m code
CFPluginCocoaApp program, 354
MyCocoaApp program, 359–360
MyNSBP_App program, 333
MySOAP program, 394–396
MyStatusItem program, 365–368
MyTerminal program, 380
MyThread program, 375–379
MyXMLRPC program, 386–389
plistPlugin program, 344
RadarWatcher program, 313–314
Apple Developer Web site, 403
Aqua icon design resources, 45
framework resources, 121
localization resources, 307
Apple Help Indexing Tool, 24
Apple Human Interface Guidelines, 16–17
AppleScript, executing via URLs, 305
AppleScriptKit.framework, 35
Application Kit (AppKit) framework, 15, 35
applications
Aqua interface guidelines, 16–17
Carbon
construction example (Project Builder), 100
creating (Project Builder), 13
legacy support for pre-Mac OS X systems, 13–14
nib-based (Listing 5.1), 99–100
Cocoa
calling Carbon functionality (code snippet), 297
creating, 14
localizing, 306–307
dock images, updating, 300
Dock menu, updating, 301
document-based, RadarWatcherX project (Cocoa), 40–66
execution analysis (Sampler utility), 32
frameworks
Carbon, calling through, 124–125
Cocoa, calling through, 124–125
icons, creating, 44–46
installers, creating (PackageMaker), 30
Java
creating, 15
packaging (MRJAppBuilder), 28
memory allocation, analyzing (ObjectAlloc utility), 28
memory analysis (MallocDebug utility), 27
plug-ins
dumb, 70
NSBundle image editing plug-in application, 70, 82–88
plistPlugin search engine application, 70–78
providing capabilities, 69
RadarWatcherX project, customizing options, 66
services
examples, 135
folder location, 135
function of, 135
pasteboard reading, 147
pasteboard registration, 145
pasteboard validation, 145–146
pasteboard writing, 146–147
support directories, locating, 298–299
threads
behavior, viewing (Thread Viewer), 32
function of, 205–206
overhead costs, 206
parallel, 219–220
priorities, 220
serial, 219–220
versus timers, 206
user settings, defaults command-line utility, 305
ApplicationServices.framework, 35
Aqua interface
Apple Human Interface Guidelines, 16–17
example, 6
AT&T, UNIX version, 8
AudioUnit framework, header file (Listing 6.1), 120–121
BSD UNIX (Berkeley Software Distribution UNIX), 5
as basis for Mac OS X system, 5–8
terminal applications, 5
bundles (frameworks), 120
C language, ? (question mark) conditional expression, 161
calling Carbon plug-ins via Cocoa applications, 101–103
Carbon
APIs
function of, 99
software support for pre-Mac OS X systems, 13
applications
calling plug-ins, 101–103
construction example (Project Builder), 100
creating (Project Builder), 13
calling from Cocoa applications (code snippet), 297
framework, 35
nib-based application example (Listing 5.1), 99–100
plug-ins
calling via Carbon applications, 101–103
calling via Cocoa applications, 101–103
CDBundleGetVersionNumber function (framework version checker), 121
CFPlugin project
constructing (Project Builder), 103–106
dynamic registration (Project Builder), 106
Info.plist entries (Project Builder), 105–106
results overview, 101–103
source code
allocMyType in main.c (Listing 5.6), 109
deallocMyType in main.c (Listing 5.11), 112
IUKNOWN_C_GUTS in CFPluginCOM.h (Listing 5.3), 107
myAddRef in main.c (Listing 5.9), 111
myFactoryFunction in main.c (Listing 5.5), 108
myInterfaceFtbl in main.c (Listing 5.7), 109–110
myPlugInFunction in main.c (Listing 5.12), 112
myQueryInterface in main.c (Listing 5.8), 110–111
myRelease in main.c (Listing 5.10), 111–112
MyType Definition in main.c (Listing 5.4), 108
Plug-in Interface in MyCFPlugInterface.h (Listing 5.2), 107
source code (Project Builder), 106–112
static registration (Project Builder), 106
Target settings (Project Builder), 103
CFPluginCarbonApp project source code
CallPlugin in MyCFCallPlugin.c (Listing 5.13), 113–115
main.c, 352–353
CFPluginCocoaApp program
source code
AppController.h, 353–354
AppController.m, 354
doCallPlugin in AppController.c (Listing 5.14), 116
main.m, 355
checking
modifier key status, 304–305
network status with SCNetworkCheckReachabilityBy Name( ) function, 303–304
classes
CURLHandle (Cocoa), downloading, 307
OmniAppKit framework (third-party), 123–124
OmniFoundation framework (third-party), 123
Classic (Mac OS 9) software, running within Mac OS X, 13
clients
product information project (XML-RPC)
Cocoa implementation, 258
Cocoa nib file, 260
Cocoa settings, 259
PHP implementation, 252–258
source code, 261–266
product information system project (SOAP), source code, 288–294
Cocoa
applications
calling Carbon functionality (code snippet), 297
calling plug-ins, 101–103
development features, 14
localizing (NSLocalizedString macro), 306–307
based on NEXTSTEP development environment, 15
class kits
Application Kit (AppKit) framework, 15
Foundation framework, 15
CURLHandle class, downloading, 307
document-based applications (RadarWatcherX), 40–66
framework, 35
plug-ins
dumb, 70
function of, 69
NSBundle image editing plug-in, 70, 82–88
plistPlugin search engine application, 70–78
product information project (SOAP)
client functions, 271, 286–287
nib file, 287
source code, 288–294
Target settings, 287
product information project (XML-RPC)
nib file, 260
project settings, 259
source code, 261–266
Quick functions, using within applications, 297
Cocoa Browser Web site, 403
CocoaDev.com Web site, 403
CocoaDevCentral.com Web site, 403
Code Fragment Manager, versioning features, 121
code snippets
application’s About box, scrolling, 302
calling Carbon from Cocoa applications, 297
checking for modifier keys, 304–305
checking network status, 303–304
displaying alert panel, 299–300
displaying usernames, 298
executing AppleScripts via URL, 305
locating application support directories, 298–299
locating user home directory, 298
opening a URL, 302
QuickDraw, drawing within Cocoa application, 297
retrieving file icons, 302
updating application dock image, 300–301
color pickers
Color Wheel color picker
folder location, 191
function of, 191
RGB/CMYK color mode, 192
folder location, 191
function of, 191
MyColorPicker project
constructing (Project Builder), 193–201
nib file (Interface Builder), 195–196
results overview, 192–193
source code (Project Builder), 196–201
Target settings (Project Builder), 193–194
MyScreenSaver project, customizing options, 202
RGB/CMYK color code, 192
Color Wheel color picker
folder location, 191
function of, 191
RGB/CMYK color mode, 192
colors, alpha channels, 177–178
command line applications, default Mac OS X installations, 17
command line utilities. See alsod utilities
agvtool, 34
CpMac, 34
DeRez, 34
fs usage, 34
GetFileInfo, 34
heap, 34
leaks, 34
malloc history, 34
MergePef, 34
MvMac, 34
ps, 34
ResMerger, 34
Rez, 34
RezWack, 34
sample, 34
sc usage, 34
sdp, 34
SetFile, 34
SplitForks, 34
top, 34
UnRezWack, 34
vmmap, 34
WSMakeStubs, 34
Concurrent Versions System (CVS)
documentation, viewing, 24
file control functions, 24
conditional expressions, ? (C programming language), 161
copying files via wildcards (terminal applications), 223
CoreFoundation.framework, 35
CoreMIDI.framework, 35
CoreServices.framework, 35
CpMac utility (command line), 34
curl command-line application, 307
CURLHandle class (Cocoa), downloading, 307
Darwin
FreeBSD version 4.4, 7
source code, downloading, 7
X11 implementation, 7
debugging
applications with gdb (GNU Debugger), 23–24
drawings (Quartz Debug utility), 32
defaults command-line utility, application user settings, 305
DeRez utility (command line), 34
desktop windows management (Quartz), 10
detecting USB devices (USB Prober), 33
devices, detecting (USB Prober), 33
DHCP protocol, Mac OS X support, 9
DiscRecording.framework, 35
displaying
alert panels with NSBeginAlertSheet( ) function, 299–300
usernames with NSUserName( ) function, 298
DNS protocol, Mac OS X support, 9
Dock
application images, updating, 300
application menus, updating, 301
preference pane, 149–151
document-based applications, RadarWatcherX (Cocoa), 40–66
downloading Objective-C instruction manual, 22
drawings, debugging (Quartz Debug utility), 32
dumb plug-ins, 70
dynamic libraries, 119
executing
AppleScripts via URL, 305
shell scripts in terminal applications, 224
file systems (Mac OS X support)
FTP, 9
ISO 9660, 9
Macintosh HFS/HFS+, 9
MS-DOS, 9
NFS, 9
SMB, 9
UFS, 9
WebDAV, 9
FileMerge utility, file version control functions, 25
files
copying via wildcards (terminal applications), 223
differing versions, comparing (FileMerge), 25
find command search options, 305–306
icons, retrieving, 302
find command, 305–306
Flat File DataBase (FFDB) PHP Library, 295
Foundation framework, Cocoa development classes, 15, 35
frameworks
AddressBook, 35
AppKit, 35
Apple Web site resources, 121
AppleScriptKit, 35
ApplicationServices, 35
AudioUnit, header file (Listing 6.1), 120–121
bundles, 120
Carbon applications, 35
calling through, 124–125
classes, hiding, 119
Cocoa applications, 35
calling through, 124–125
CoreFoundation, 35
CoreMIDI, 35
CoreServices, 35
directory structure, 121–122
DiscRecording, 35
Foundation, 35
function of, 119
functions, hiding, 119
InterfaceBuilder, 35
IOBluetooth, 35
IOKit, 35
Message, 35
MyCarbonFramework project, constructing (Project Builder), 126–127
MyCocoaApp
calling example, 124
constructing (Project Builder), 128–131
package contents, 125
MyCocoaFramework project, constructing (Project Builder), 127–128
packaging options
application-specific, 126
machine-specific, 126
user-specific, 126
placement options
application-specific, 126
machine-specific, 126
user-specific, 126
PreferencePanes, 35
ScreenSaver, 35
similarities to libraries, 119
third-party, 122
OmniAppKit, 123–124
OmniBase, 123
OmniFoundation, 123
OmniHTML, 124
OmniNetworking, 123
OWF (Omni Web Framework), 124
version-checking (CFBundleGetVersionNumber function), 121
WebCore, 36
FreeBSD (Berkeley Software Distribution), 7
fs usage utility (command line), 34
FTP file system, Mac OS X support, 9
functions
BeginAlertSheet( ), 299–300
CFBundleGetVersionNumber, 121
NSHomeDirectory( ), 298
NSSearchPathforDirectoriesInDomain( ), 298–299
NSUserName( ), 298
SCNetworkCheckReachability ByName( ), 303–304
gdb (GNU Debugger)
documentation, viewing, 23–24
executing, 23–24
GetFileInfo utility (command line), 34
Google.plist code (plistPlugin program), 72–73, 347
graphics
OpenGL.org Web site resources, 189
Quartz rendering library, 10
heap utility (command line), 34
Help Viewer Indexing Tool, 24
HTTP protocol, Mac OS X support, 9
Icon Factory Web site, 45
icons
Aqua design resources, 45
creating (IconComposer utility), 26, 44–46
creation applications
Adobe Photoshop, 45
AquaTint, 45
Icon Factory, 45
IconComposer, 45
files, retrieving, 302
icns Browser utility, 25
Icons Browser, 25
ImageWindowController.h code (MyNSBP_App program), 334
ImageWindowController.m code (MyNSBP_App program), 334–337
installers, creating (PackageMaker), 30
Interface Builder
Cocoa application development, 14
development functions, 20
MyColorPicker project, nib files, 195–196
MyNSBP_App project, nib files, 79–80
MyNSBP_RemoveColor project, nib files, 81–82
MyScreenSaver project, nib files, 180
MyStatusItem project, nib files, 167
MyTerminal project, nib files, 228
RadarWatcherX project, nib files, 46–48
InterfaceBuilder.framework, 35
interfaces
Interface Builder, 20
pixel views (Pixie utility), 31
IOBluetooth.framework, 35
IOKit.framework, 35
IORegistryExplorer tool, I/O driver maintenance, 26
ISO 9660 file system, Mac OS X support, 9
iTunes, Open GL animation example, 11
J2SE (Java 2 Standard Edition), 15
Java
applications, packaging (MRJAppBuilder), 28
Cocoa application development, 1
Project Builder templates, 23
pure applications, creating, 15
Java 2 Standard Edition (J2SE), 15
Java Web Start application, 15
JavaBrowser, window appearance, 26
launching gdb (GNU Debugger), 23–24
LDAP protocol, Mac OS X support, 9
leaks utility (command line), 34
libraries
dynamic, 119
frameworks, directory structure, 121–122
similarities to frameworks, 119
static, 119
Linux, UNIX version, 8
localizing
Cocoa applications with NSLocalizedString macro, 306–307
online resources, Apple Developer Web site, 307
locating
application support directories, 298–299
user home directory via NSHomeDirectory( ) function, 298
logons (remote), via terminal applications, 224
Mac OS 9 (Classic environment), 13
Mac OS X Hints Web site, 403
Macintosh HFS/HFS+ file system, Mac OS X support, 9
main.c code (CFPluginCarbonApp program), 348–353
main.m code
CFPluginCocoaApp program, 355
MyCocoaApp program, 360
MyNSBP_App program, 337
MySOAP program, 397
MyStatusItem program, 368
MyTerminal program, 380
MyTextService program, 360–361
MyThread program, 379
MyXMLRPC program, 389
plistPlugin program, 344
RadarWatcher program, 314
malloc history utility (command line), 34
MallocDebug utility, memory analysis, 27
man command, terminal applications, 224
memory
allocation analysis (ObjectAlloc utility), 28
analyzing (MallocDebug utility), 27
MergePef utility (command line), 34
merging files from differing versions (FileMerge), 25
Message.framework, 35
modifier keys, checking status, 304–305
MRJAppBuilder utility, Java program packager, 28
MS-DOS file system, Mac OS X support, 9
multimedia, QuickTime features, 12
MvMac utility (command line), 34
MyCarbon Framework project
constructing (Project Builder), 126–127
source code
MyCarbonFramework.c (Listing 6.3), 127, 358
MyCarbonFramework.h (Listing 6.2), 126, 358
MyCarbonFramework.c code (MyCarbonFramework program), 127, 358
MyCarbonFramework.h code (MyCarbonFramework program), 126, 358
MyCFCallPlugin.c code (Shared program), 355–356
MyCFPluginInterface.h code (Shared program), 357
MyCocoaApp program
constructing (Project Builder), 128–131
frameworks
calling example, 124
package contents, 125
source code
AppController.h, 359
AppController.m, 359–360
AppController Implementation in AppController.m (Listing 6.7), 130–131
AppController Interface in AppController.h (Listing 6.6), 129–130
main.m, 360
MyCocoaFramework project
constructing (Project Builder), 127–128
source code
MyCarbonFramework.h (Listing 6.4), 128, 358
MyCarbonFramework.m (Listing 6.5), 128, 358
source code (Project Builder), 127–128
MyCocoaFramework.h code (MyCocoaFramework program), 128, 358
MyCocoaFramework.m code (MyCocoaFramework program), 128, 358
MyColorPicker project
constructing (Project Builder), 193–201
customizing options, 202
nib file (Interface Builder), 195–196
results overview, 192–193
source code
ThePicker.h, 372
ThePicker.m, 373–374
ThePicker –currentMode Method in ThePicker.m (Listing 11.5), 199
ThePicker –doRandomColorAction Method in ThePicker.m (Listing 11.8), 201
ThePicker –initWithPickerMaskcolorPanel Method in ThePicker.m (Listing 11.2), 197–198
ThePicker –logText Method in ThePicker.m (Listing 11.9), 201
ThePicker –provideNewButtonImage Method in ThePicker.m (Listing 11.3), 198
ThePicker –provideNewView Method in ThePicker.m (Listing 11.7), 200
ThePicker –setColor Method in ThePicker.m (Listing 11.4), 199
ThePicker –supportsMode Method in ThePicker.m (Listing 11.6), 200
ThePicker Interface in ThePicker.h (Listing 11.1), 196–197
source code (Project Builder), 196–201
Target settings (Project Builder), 193–194
MyDocument.h code (RadarWatcher program), 315–316
MyDocument.m code (RadarWatcher program), 316–326
MyNSBP Desaturate.h code (MyNSBP_Desaturate program), 338
MyNSBP Desaturate.m code (MyNSBP_Desaturate program), 338–339
MyNSBP Protocol.h code (MyNSBP_App program), 332
MyNSBP RemoveColor project source code
MyNSBP_Protocol Defninition (Listing 4.8), 88
MyNSBP_RemoveColor +initializePluginClass/+terminatePluginClass (Listing 4.9), 91–92
MyNSBP_RemoveColor +instantiatePlugin (Listing 4.10), 92
MyNSBP_RemoveColor -askUserWhatColorToRemove (Listing 4.12), 94–95
MyNSBP_RemoveColor -doPlugin (Listing 4.11), 93
MyNSBP_RemoveColor Interface Defninition (Listing 4.7), 88
SettingsController Implementation (Listing 4.13), 95
MyNSBP RemoveColor.h code (MyNSBP_RemoveColor program), 340
MyNSBP RemoveColor.m code (MyNSBP_RemoveColor program), 340–342
MyNSBP_App program
constructing (Project Builder), 79
nib files (Interface Builder), 79–80
source code
AppController.h, 333
AppController.m, 333
ImageWindowController.h, 334
ImageWindowController.m, 334–337
main.m, 337
MyNSBP Protocol.h, 332
MyNSBP_Desaturate program source code
MyNSBP Desaturate.h, 338
MyNSBP Desaturate.m, 338–339
MyNSBP_RemoveColor project
building settings (Project Builder), 89–95
constructing (Project Builder), 80, 88–95
Info.plist entries (Project Builder), 89
nib files (Interface Builder), 81–82
protocol adoption (Project Builder), 88–89
source code
MyNSBP RemoveColor.h, 340
MyNSBP RemoveColor.m, 340–342
SettingsController.h, 343
SettingsController.m, 343
MyPreferencePane project
constructing (Project Builder), 153–161
customizing options, 162
results overview, 151–152
source code (Project Builder), 157–161
MyPreferencePanePref.h, 363
MyPreferencePanePref.m, 363–365
MyPreferencePanePref –buttonClicked Implementation in MyPreferencePanePref.m (Listing 8.6), 161
MyPreferencePanePref –checkboxClicked Implementation in MyPreferencePanePref.m (Listing 8.5), 160–161
MyPreferencePanePref –didUnselect Implementation in MyPreferencePanePref.m (Listing 8.4), 159–160
MyPreferencePanePref –initWithBundle Implementation in MyPreferencePanePref.m (Listing 8.2), 157–158
MyPreferencePanePref –mainViewDidLoad Implementation in MyPreferencePanePref.m (Listing 8.3), 158–159
MyPreferencePanePref Interface in MyPreferencePanePref.h (Listing 8.1), 157
Target settings (Project Builder), 153–155
MyPreferencePanePref.h code (MyPreferencePane program), 363
MyPreferencePanePref.m code (MyPreferencePane program), 363–365
MyScreenEffect program source code
MyScreenSaverView.h, 368
MyScreenSaverView.m, 369–372
MyScreenSaver project
constructing (Project Builder), 178–188
customizing options, 189
nib file (Interface Builder), 180
results overview, 177–178
source code (Project Builder), 182–188
MyScreenSaverView -animateOneFrame Method in MyScreenSaverView.m (Listing 10.3), 185–186
MyScreenSaverView –closeSheetcancel Method in MyScreenSaverView.m (Listing 10.7), 188
MyScreenSaverView –closeSheetsave Method in MyScreenSaverView.m (Listing 10.6), 187–188
MyScreenSaverView -ConfigureSheet Method in MyScreenSaverView.m (Listing 10.5), 187
MyScreenSaverView -hasConfigureSheet Method in MyScreenSaverView.m (Listing 10.4), 186–187
MyScreenSaverView –initWithFrameisPreview Method in MyScreenSaverView.m (Listing 10.2), 182–185
MyScreenSaverView Interface in MyScreenSaverView.h (Listing 10.1), 182
Target settings (Project Builder), 179
MyScreenSaverView.h code (MyScreenEffect program), 368
MyScreenSaverView.m code (MyScreenEffect program), 369–372
MySOAP program source code
AppController.h, 394
AppController.m, 394–396
main.m, 397
product client.php, 397–399
product server.php, 399–401
MyStatusItem project
constructing (Project Builder), 165–173
customizing options, 173
nib file (Interface Builder), 167
results overview, 164–165
source code (Project Builder), 167–173
AppController.h, 365
AppController.m, 365–368
AppController –dealloc Method in AppController.m (Listing 9.3), 170
AppController –init Method in AppController.m (Listing 9.2), 168–170
AppController –selItemIP Method in AppController.m (Listing 9.6), 172
AppController –selItemOne and -sellItemTwo Method in AppController.m (Listing 9.5), 171
AppController –selItemQuit Method in AppController.m (Listing 9.7), 173
AppController –validateMenuItem Method in AppController.m (Listing 9.4), 171
AppController Interface in AppController.h (Listing 9.1), 167–168
Target settings (Project Builder), 166–167
MyTerminal project
constructing (Project Builder), 226–238
nib file (Interface Builder), 228
results overview, 225–226
source code (Project Builder), 228–238
AppController.h, 380
AppController.m, 380
main.m, 380
MyTerminalController.h, 381
MyTerminalController.m, 381–386
MyTerminalController –dealloc Method in MyTerminalController.m (Listing 13.3), 230
MyTerminalController –displayPingData Method in MyTerminalController.m (Listing 13.6), 236–238
MyTerminalController –init Method in MyTerminalController.m (Listing 13.2), 230
MyTerminalController –ping Method in MyTerminalController.m (Listing 13.5), 233–236
MyTerminalController –uptime Method in MyTerminalController.m (Listing 13.4), 230–232
MyTerminalController Interface in MyTerminalController.h (Listing 13.1), 228–230
Target settings (Project Builder), 227
MyTerminalController.h code (MyTerminal program), 381
MyTerminalController.m code (MyTerminal program), 381–386
MyTextService project
constructing (Project Builder), 137–144
results overview, 136–137
source code (Project Builder), 140–144
MyTextService.h, 361
MyTextService.m, 361–362
MyTextService – changeCase userData error in MyTextService (Listing 7.3), 142–144
MyTextService Interface in MyTextService.h (Listing 7.2), 142
MyTextService main (Listing 7.1), 140–142
Target settings (Project Builder), 138–140
MyTextService.h code (MyTextService program), 361
MyTextService.m code (MyTextService program), 361–362
MyThread project
constructing (Project Builder), 208–218
nib file (Project Builder), 209
results overview, 206–207
source code (Project Builder), 209–218
AppController.h, 375
AppController.m, 375–379
AppController –cleanupThread Method in AppController.m (Listing 12.8), 218
AppController –start Method in AppController.m (Listing 12.2), 211–212
AppController –stop Method in AppController.m (Listing 12.3), 212
AppController –thread1 Method in AppController.m (Listing 12.5), 213–215
AppController –thread2 Method in AppController.m (Listing 12.6), 215–216
AppController –thread3 Method in AppController.m (Listing 12.7), 217
AppController –windowWillClose Method in AppController.m (Listing 12.9), 218
AppController Interface in AppController.h (Listing 12.1), 209–211
Condition Definitions in AppController.m (Listing 12.4), 213
main.m, 379
Target settings (Project Buildler), 208
MyXMLRPC program source code
AppController.h, 386
AppController.m, 386–389
main.m, 389
product client.php, 389–392
product server.php, 392–393
native utilities, default Mac OS X installations, 17
Network Utility, 9
networks
protocols, Mac OS X support, 9
status checking, 303–304
NEXTSTEP, as basis for Cocoa development environment, 15
NFS file system, Mac OS X support, 9
NSBeginAlertSheet( ) function, 299–300
NSBundle image editing plug-in application, 70, 82–88
ImageWindowController’s awakeFromNib (Listing 4.3), 82–86
ImageWindowController’s doFilter (Listing 4.5), 86–87
ImageWindowController’s doResetImage (Listing 4.4), 86
ImageWindowController’s windowWillClose (Listing 4.6), 87–88
NSHomeDirectory( ) function, 298
NSLocalizedString macro, Cocoa application localization, 306–307
NSMenuExtras class versus NSStatusItems class, 163–164
NSPreferencePane class methods
-assignMainView, 161
-buttonClicked, 161
-checkboxClicked, 160
-didSelect, 161
-firstKeyView, 162
-initialKeyView, 162
-initWithBundle, 157
-lastKeyView, 162
-mainViewDidLoad, 158
-replyToShouldUnselect, 162
-shouldUnselect, 162
-willSelect, 161
-willUnselect, 162
NSSearchPathForDirectoriesIn Domains( ) function, 298–299
NSStatusItem class
methods
-dealloc, 170
-init, 168–170
-selItemIP, 172
-selItemOne, 171
-selItemQuit, 173
-validateMenuItem, 171
versus NSMenuExtras class, 163–164
NSUserName( ) function, 298
ObjectAlloc utility, memory allocation analysis, 28
Objective-C
Apple Developer Web site resources, 89
classes, 21
Cocoa application development, 14
instruction manual, downloading, 22
MyClass.h-an Objective-C Header File (Listing 2.1), 21
MyClass.m-an Objective-C Source File (Listing 2.2), 22
symbol collisions, 95–96
Omni Group
third-party frameworks, 122
OmniAppKit, 123–124
OmniBase, 123
OmniFoundation, 123
OmniHTML, 124
OmniNetworking, 123
OWF (Omni Web Framework), 124
Web site, 122
Omni Web Framework (OWF), 124
OmniAppKit framework (third-party), 123–124
OmniBase framework (third-party), 123
OmniFoundation framework (third-party), 123
OmniGroup.com Web site, 403
OmniHTML framework (third-party), 124
OmniNetworking framework (third-party), 123
online resources
Apple Developer Connection, 403
Cocoa Browser, 403
CocoaDev.com, 403
CocoaDevCentral.com, 403
Mac OS X Hints, 403
OmniGroup.com, 403
StepWise.com, 403
TripleSoft.com, 403
OpenGL
3D graphics library, 11
Apple iTunes animation example, 11
drawing features, 11
Info utility, 29
Profiler, 29
Shader Builder, 29
OpenGL Info utility, 29
OpenGL Profiler, 29
OpenGL Shader Builder, 29
OpenGL.org Web site, 189
opening URLs, code snippet example, 302
Overture.plist code (plistPlugin program), 347
OWF (Omni Web Framework), 124
PackageMaker, 30
parallel threads, 219–220
PEFViewer (Preferred Executable Format Viewer), 30
Perl, Mac OS X preloaded software, 17
PHP
Flat File DataBase (FFDB), 295
Mac OS X preloaded software, 17
product information project (XML-RPC)
client functions, 242–258
server functions, 244–251
product information system project (SOAP)
client functions, 271, 280–286
server functions, 273–279
SourceForge.net Web site
database resources, 267
Flat File DataBase (FFDB) PHP Library, 295
Pixie utility, pixel viewing functions, 31
plistPlugin search engine application, 70
constructing (Project Builder), 71–78
Google.plist plug-in, 72–73
package contents, 73
source code
-awakeFromNib (Listing 4.1), 75–76
-doSearch (Listing 4.2), 77–78
AppController.h, 343
AppController.m, 344
Google.plist, 347
main.m, 344
Overture.plist, 347
SearchWindowController.h, 344
SearchWindowController.m, 345–347
Yahoo.plist, 348
Target settings (Project Builder), 74
plists (property lists), 41
plug-ins
application capabilities, 69
Carbon
calling via applications, 101–103
calling via Cocoa applications, 101–103
CFPlugin project
constructing (Project Builder), 103–106
dynamic registration (Project Builder), 106
Info.plist entries (Project Builder), 105–106
results overview, 101–103
source code (Project Builder), 106–112
static registration (Project Builder), 106
Target settings (Project Builder), 103
CFPluginCarbonApp project source code (Project Builder), 113–115
CFPluginCocoaApp project source code (Project Builder), 116
dumb, 70
function of, 69
MyNSBP_App project
constructing (Project Builder), 79
nib files (Interface Builder), 79–80
MyNSBP_RemoveColor project
build settings (Project Builder), 89–95
constructing (Project Builder), 80, 88–95
Info.plist entries (Project Builder), 89
nib files (Interface Builder), 81–82
protocol adoption (Project Builder), 88–89
NSBundle image editing application, 70, 82–88
plistPlugin search engine application, 70
constructing (Project Builder), 71–78
Google.plist plug-in, 72–73
package contents, 73
source code (Project Builder), 75–78
Target settings (Project Builder), 74
third-party development, 69
PPP (Point-to-Point Protocol), Mac OS X support, 9
preference panes
Dock, 149–151
examples, 149
folder location, 149
function of, 149
MyPreferencePane project
customizing options, 162
results overview, 151–152
PreferenceController.h code (RadarWatcher program), 326
PreferenceController.m code (RadarWatcher program), 326–327
PreferencePanes.framework, 35
Process Viewer (UNIX), 8
processes
threads
function of, 205–206
overhead costs, 206
parallel, 219–220
priorities, 220
serial, 219–220
versus timers, 206
viewing execution of (sample command-line tool), 306
product client.php code (MySOAP program), 397–399
product client.php code (MyXMLRPC program), 389–392
product information project (SOAP)
Cocoa client, 288–294
results overview, 270–286
source code
-getProductInformation – Part 1 in AppController.m (Listing 15.13), 291–292
-getProductInformation – Part 2 in AppController.m (Listing 15.14), 292–293
-getProductInformation – Part 3 in AppController.m (Listing 15.15), 293–294
-getProductInformation in AppController.m (Listing 15.12), 289–291
AppController Interface in AppController.h (Listing 15.11), 288
In the Beginning of product client.php (Listing 15.8), 282
In the End of product client.php (Listing 15.10), 285–286
In the Middle of product client.php (Listing 15.9), 283–285
Initial Steps in product server.php (Listing 15.2), 275–276
product client.php (Listing 15.7), 280–282
product server.php (Listing 15.1), 273–275, 399–401
The get product info Method in product server.php (Listing 15.3), 276–277
The XML-Formatted Data Returned from product server.php (Listing 15.5), 279
The XML-Formatted Data Sent to product server.php (Listing 15.4), 278
product information project (XML-RPC)
Cocoa client, 243, 258–266, 271, 286–287
PHP client, 242, 252–258, 271, 280–286
results overview, 242–243
source code
-getProductInformation – Part 1 in AppController.m (Listing 14.13), 263–264
-getProductInformation – Part 2 in AppController.m (Listing 14.14), 264–265
-getProductInformation – Part 3 in AppController.m (Listing 14.14), 265–266
-getProductInformation in AppController.h (Listing 14.12), 261–263
AppController Interface in AppController.h (Listing 14.11), 261
Creating the Server in product server.php (Listing 14.6), 251
In the Beginning of product client.php (Listing 14.8), 254
In the End of product client.php (Listing 14.10), 257–258
In the Middle of product client.php (Listing 14.9), 255–257
Initial Steps in product server.php (Listing 14.2), 247–248
product client.php (Listing 14.7), 252–254
product server.php (Listing 14.1), 244–247, 392–393
The get product info Method in product server.php (Listing 14.3), 248–249
The XML-Formatted Data Sent from product server.php (Listing 14.5), 250
The XML-Formatted Data Sent to product server.php (Listing 14.4), 249–250
product server.php code (MySOAP program), 399–401
product server.php code (MyXMLRPC program), 392–393
programming languages
Java, Project Builder templates, 23
Objective-C
classes, 21
MyClass.h-an Objective-C Header File (Listing 2.1), 21
MyClass.m-an Objective-C Source File (Listing 2.2), 22
Project Builder
Carbon application example, constructing, 100
CFPlugin project
constructing, 103–106
dynamic registration, 106
Info.plist entries, 105–106
source code, 107–112
static registration, 106
Target settings, 103
CFPluginCarbonApp project source code, 113–115
CFPluginCocoaApp project source code, 116
Cocoa application development, 14
Concurrent Versions System (CVSD), 24
debugging utilities, 19, 23–24
development functions, 19
frameworks
AddressBook, 35
AppKit, 35
AppleScriptKit, 35
ApplicationServices, 35
Carbon, 35
Cocoa, 35
CoreFoundation, 35
CoreMIDI, 35
CoreServices, 35
DiscRecording, 35
Foundation, 35
InterfaceBuilder, 35
IOBluetooth, 35
IOKit, 35
Message, 35
PreferencePanes, 35
ScreenSaver, 35
WebCore, 36
MyCarbonFramework project source code, 126–127
MyCocoaApp project source code, 128–131
MyCocoaFramework project source code, 127–128
MyColorPicker project
constructing, 193–201
source code, 196–201
Target settings, 193–194
MyNSBP_App project, constructing, 79
MyNSBP_RemoveColor project
building settings, 89–95
Info.plist entries, 89
protocol adoption, 88–89
MyPreferencePane project
constructing, 153–161
source code, 157–161
Target settings, 153–155
MyScreenSaver project
constructing, 178–188
source code, 182–188
Target settings, 179
MyStatusItem project
constructing, 165–173
source code, 167–173
Target settings, 166–167
MyTerminal project
constructing, 226–238
source code, 228–238
Target settings, 227
MyTextService project
constructing, 137–144
source code, 140–144
Target settings, 138–140
MyThread
constructing, 208–218
nib file, 209
source code, 209–218
Target settings, 208
plistPlugin search engine application, constructing, 71–78
RadarWatcherX project
constructing, 41–66
copyrights/credits, 41–43
icons, 44–46
Info.plist entries, 43–44
source code, 48–66
projects
CFPlugin
constructing (Project Builder), 103–106
dynamic registration (Project Builder), 106
Info.plist entries (Project Builder), 105–106
results overview, 101–103
source code (Project Builder), 106–112
static registration (Project Builder), 106
Target settings (Project Builder), 103
CFPluginCarbonApp source code (Project Builder), 113–115
CFPluginCocoaApp source code (Project Builder), 116
MyCarbonFramework source code (Project Builder), 126–127
MyCocoaApp source code (Project Builder), 128–131
MyCocoaFramework source code (Project Builder), 127–128
MyColorPicker
constructing (Project Builder), 193–201
nib file (Interface Builder), 195–196
results overview, 192–193
source code (Project Builder), 196–201
Target settings (Project Builder), 193–194
MyNSBP_App
constructing (Project Builder), 79
nib files (Interface Builder), 79–80
MyNSBP_RemoveColor
build settings (Project Builder), 89–95
constructing (Project Builder), 80, 88–95
Info.plist entries (Project Builder), 89
nib files (Interface Builder), 81–82
protocol adoption (Project Builder), 88–89
MyPreferencePane
constructing (Project Builder), 153–161
results overview, 151–152
source code (Project Builder), 157–161
Target settings (Project Builder), 153–155
MyScreenSaver
constructing (Project Builder), 178–188
nib file (Interface Builder), 180
results overview, 177–178
source code (Project Builder), 182–188
Target settings (Project Builder), 179
MyStatusItem
constructing (Project Builder), 165–173
nib file (Interface Builder), 167
results overview, 164–165
source code (Project Builder), 167–173
Target settings (Project Builder), 166–167
MyTerminal
constructing (Project Builder), 226–238
nib file (Interface Builder), 228
results overview, 225–226
source code (Project Builder), 228–238
Target settings (Project Builder), 227
MyTextService
constructing (Project Builder), 137–144
results overview, 136–137
source code (Project Builder), 140–144
Target settings (Project Builder), 138–140
MyThread
constructing (Project Builder), 208–218
nib file (Project Builder), 209
results overview, 206–207
source code (Project Builder), 209–218
Target settings (Project Builder), 208
RadarWatcherX (Cocoa)
constructing (Project Builder), 41–66
copyrights/credits (Project Builder), 41–43
icons (Project Builder), 44–46
Info.plist entries (Project Builder), 43–44
nib files (Interface Builder), 46–48
source code (Project Builder), 48–66
SOAP product information system project
PHP server, 273–279
results overview, 270–286
XML-RPC product information project
PHP client, 242–258
results overview, 242–243
Projects Directory (Darwin), 7
Property List Editor, XML text files, viewing, 31
ps utility (command line), 34
Pyro screensaver program, 175
Quartz
Debug utility, 32
desktop management, 10
drawing features, 10
graphics rendering library, 10
window management, 10
QuickDraw, drawing within Cocoa applications, 297
QuickTime, 12
RadarView.h code (RadarWatcher program), 327–328
RadarView.m code (RadarWatcher program), 328–332
RadarWatcherX project
constructing (Project Builder), 41–66
copyrights/credits (Project Builder), 41–43
customizing options, 66
document data
reading/writing (NSMutableDictionary), 50–54
storing (NSMutableDictionary), 48–49
document window, 40–41
icons (Project Builder), 44–46
Info.plist entries (Project Builder), 43–44
nib files (Interface Builder), 46–48
source code
AppController.h, 313
AppController.m, 313–314
AppController +initialize (Listing 3.15), 62–63
AppController –applicationShoudlOpenUntitledFile (Listing 3.16), 63–64
AppController –showPreferencePanel (Listing 3.17), 64
application preferences, 61–66
Creating a Timer (Listing 3.8), 55
MyDocument.h, 315–316
MyDocument.m, 316–326
MyDocument –init (Listing 3.3), 49
MyDocument –RadarwatcherX .rdrw Data File (Listing 3.7), 53–54
MyDocument –refreshRadar method Image Checking (Listing 3.11), 57–58
MyDocument –refreshRadar method Image Loaded (Listing 3.10), 56–57
MyDocument –refreshRadar method Image Loading (Listing 3.9), 55
MyDocument –updateUI (Listing 3.6), 52–53
MyDocument –writeFromFileofType (Listing 3.5), 52
MyDocument –writeToFileofType (Listing 3.4), 50–52
NSMutableDictionary Keys (Listing 3.2), 48
PreferenceController.h (Listing 3.14), 62, 326
PreferenceController.m (Listing 3.18), 64–66, 326–327
RadarView.h, 327–328
RadarView.m, 328–332
RadarView -isColorInImageInRect (Listing 3.13), 59–61
RadarView color checker, 59–61
RadarView instance variable, 58
RadarView Mouse Overrides (Listing 3.12), 58–59
RadarView watch box, 58–59
reading pasteboard types (services), 147
registering pasteboard types (services), 145
remote logons from terminal applications, 224
ResMerger utility (command line), 34
resources (online)
Apple Developer Connection Web site, 403
Cocoa Browser Web site, 403
CocoaDev.com, 403
CocoaDevCentral.com, 403
Mac OS X Hints Web site, 403
OmniGroup.com, 403
StepWise.com, 403
TripleSoft.com, 403
Rez utility (command line), 34
RezWack utility (command line), 34
rm command, terminal applications, 224
sample command-line tool
report elements, 306
viewing process execution, 306
sample utility (command line), 34
Sampler utility, application execution analysis, 32
sc usage utility (command line), 34
SCNetworkCheckReachability ByName( ) function, 303–304
screen effects
MyScreenSaver project
constructing (Project Builder), 178–188
customizing options, 189
nib file (Interface Builder), 180
results overview, 177–178
source code (Project Builder), 182–188
Target settings (Project Builder), 179
OpenGL environment resources, 189
screensaver terminology, 175
selection options, 175–177
Screen Effects pane (System Preferences), 175
Activation tab, 176
Hot Corners tab, 177
Screen Effects tab, 175
ScreenSaver.framework, 35
screensavers. See also screen effects
After Dark program, 175
Pyro program, 175
scrolling application’s About box, 302
sdp utility (command line), 34
searching files, find command options, 305–306
SearchWindowController.h code (plistPlugin program), 344
SearchWindowController.m code (plistPlugin program), 345–347
sendmail, Mac OS X preloaded software, 17
serial threads, 219–220
servers
product information project (XML-RPC), PHP implementation, 244–251
UNIX, stability of, 8
services (System Services)
examples, 135
folder location, 135
function of, 135
MyPreferencePane project
constructing (Project Builder), 153–161
results overview, 152
source code (Project Builder), 157–161
Target settings (Project Builder), 153–155
MyTextService project
constructing (Project Builder), 137–144
results overview, 136–137
source code (Project Builder), 140–144
Target settings (Project Builder), 138–140
pasteboard types
reading, 147
registering, 145
validating, 145–146
writing, 146–147
source code
Reading Pasteboard Types (Listing 7.7), 147
Registering Pasteboard Types (Listing 7.4), 145
Validating Pasteboard Types (Listing 7.5), 145–146
Writing Pasteboard Types (Listing 7.6), 146–147
SetFile utility (command line), 34
SettingsController.h code (MyNSBP_RemoveColor program), 343
SettingsController.m code (MyNSBP_RemoveColor program), 343
Shared program source code
MyCFCallPlugin.c, 355–356
MyCFPluginInterface.h, 357
shell scripts, executing (terminal applications), 224
Simple Object Access Protocol. See SOAP
SMB file system, Mac OS X support, 9
snippets (code)
calling Carbon from Cocoa applications, 297
checking for modifier keys, 304–305
checking network status, 303–304
displaying alert panel, 299–300
displaying usernames, 298
executing AppleScripts via URL, 305
file icons, retrieving, 302
locating application support directories, 298–299
locating user home directory, 298
opening a URL, 302
QuickDraw, drawing within Cocoa application, 297
scrolling application’s About box, 302
updating application dock image, 300–301
SOAP (Simple Object Access Protocol), 269
features, 269–270
Mac OS X support, 9
product information system project
PHP server, 273–279
results overview, 270–286
W3C Web site specification resources, 270
software
Carbon, legacy support for pre-Mac OS X systems, 13
Classic (Mac OS 9), running under Mac OS X system, 13
default Mac OS X installations, 17
preinstalled, 17
source code
AppController –cleanupThread Method in AppController.m (Listing 12.8), 218
AppController –dealloc Method in AppController.m (Listing 9.3), 170
AppController –init Method in AppController.m (Listing 9.2), 168–170
AppController –selItemIP Method in AppController.m (Listing 9.6), 172
AppController –selItemOne and –selItemTwo Method in AppController.m (Listing 9.5), 171
AppController –selItemQuit Method in AppController.m (Listing 9.7), 173
AppController –start Method in AppController.m (Listing 12.2), 211–212
AppController –stop Method in AppController.m (Listing 12.3), 212
AppController –thread1 Method in AppController.m (Listing 12.5), 213–215
AppController –thread2 Method in AppController.m (Listing 12.6), 215–216
AppController –thread3 Method in AppController.m (Listing 12.7), 217
AppController –validateMenuItem Method in AppController.m (Listing 9.4), 171
AppController –windowWillClose Method in AppController.m (Listing 12.9), 218
AppController Implementation in AppController.m (Listing 6.7), 130–131
AppController Interface in AppController.h (Listing 12.1), 209–211
AppController Interface in AppController.h (Listing 6.6), 129–130
AppController Interface in AppController.h (Listing 9.1), 167–168
AudioUnit framework header file (Listing 6.1), 120–121
Carbon applications, nib-based (Listing 5.1), 99–100
CFPlugin project
allocMyType in main.c (Listing 5.6), 109
deallocMyType in main.c (Listing 5.11), 112
IUKNOWN_C_GUTS in CFPluginCOM.h (Listing 5.3), 107
main.c, 348–352
myAddRef in main.c (Listing 5.9), 111
myFactoryFunction in main.c (Listing 5.5), 108
myInterfaceFtbl in main.c (Listing 5.7), 110
myPlugInFunction in main.c (Listing 5.12), 112
myQueryInterface in main.c (Listing 5.8), 110–111
myRelease in main.c (Listing 5.10), 111
MyType Definition in main.c (Listing 5.4), 108
Plug-in Interface in MyCFPluginInterface.h (Listing 5.2), 107
CFPluginCarbonApp project
CallPlugin in MyCFCallPlugin.c (Listing 5.13), 113–115
main.c, 352–353
CFPluginCocoaApp program
AppController.h, 353–354
AppController.m, 354
doCallPlugin in AppController.c (Listing 5.14), 116
main.m, 355
Condition Definitions in AppController.m (Listing 12.4), 213
Darwin, downloading, 7
MyCarbonFramework program
MyCarbonFramework.c (Listing 6.3), 127, 358
MyCarbonFramework.h (Listing 6.2), 126, 358
MyCocoaApp program
AppController.h, 359
AppController.m, 359–360
main.m, 360
MyCocoaFramework program
MyCocoaFramework.h (Listing 6.4), 128, 358
MyCocoaFramework.m (Listing 6.5), 128, 358
MyColorPicker program
ThePicker.h, 372
ThePicker.m, 373–374
ThePicker –currentMode Method in ThePicker.m (Listing 11.5), 199
ThePicker –doRandomColorAction Method in ThePicker.m (Listing 11.8), 201
ThePicker –initWithPickerMaskcolorPanel Method in ThePicker.m (Listing 11.2), 197–198
ThePicker –logText Method in ThePicker.m (Listing 11.9), 201
ThePicker –provideNewButtonImage Method in ThePicker.m (Listing 11.3), 198
ThePicker –provideNewView Method in ThePicker.m (Listing 11.7), 200
ThePicker –setColor Method in ThePicker.m (Listing 11.4), 199
ThePicker –supportsMode Method in ThePicker.m (Listing 11.6), 200
ThePicker Interface in ThePicker.h (Listing 11.1), 196–197
MyNSBP RemoveColor project
MyNSBP_Protocol Definition (Listing 4.8), 88
MyNSBP_RemoveColor +initializePluginClass/+terminatePluginClass (Listing 4.9), 91–92
MyNSBP_RemoveColor +instantiatePlugin (Listing 4.10), 92
MyNSBP_RemoveColor -askUserWhatColorToRemove (Listing 4.12), 94–95
MyNSBP_RemoveColor -doPlugin (Listing 4.11), 93
MyNSBP_RemoveColor Interface Definition (Listing 4.7), 88
SettingsController Implementation (Listing 4.13), 95
MyNSBP_App program
AppController.h, 333
AppController.m, 333
ImageWindowController.h, 334
ImageWindowController.m, 334–337
main.m, 337
MyNSBP Protocol.h, 332
MyNSBP_Desaturate program
MyNSBP Desaturate.h, 338
MyNSBP Desaturate.m, 338–339
MyNSBP_RemoveColor program
MyNSBP RemoveColor.h, 340
MyNSBP RemoveColor.m, 340–342
SettingsController.h, 343
SettingsController.m, 343
MyPreferencePane program
MyPreferencePanePref.h, 363
MyPreferencePanePref.m, 363–365
MyPreferencePanePref –buttonClicked Implementation in MyPreferencePanePref.m (Listing 8.6), 161
MyPreferencePanePref –checkboxClicked Implementation in MyPreferencePanePref.m (Listing 8.5), 160
MyPreferencePanePref –didUnselect Implementation in MyPreferencePanePref.m (Listing 8.4), 159–160
MyPreferencePanePref –initWithBundle Implementation in MyPreferencePanePref.m (Listing 8.2), 157–158
MyPreferencePanePref –mainViewDidLoad Implementation in MyPreferencePanePref.m (Listing 8.3), 158–159
MyPreferencePanePref Interface in MyPreferencePanePref.h (Listing 8.1), 157
MyScreenEffect program
MyScreenSaverView.h, 368
MyScreenSaverView.m, 369–372
MyScreenSaverView –animateOneFrame Method in MyScreenSaverView.m (Listing 10.3), 185–186
MyScreenSaverView –closeSheetcancel Method MyScreenSaverView.m (Listing 10.7), 188
MyScreenSaverView –closeSheetsave Method MyScreenSaverView.m (Listing 10.6), 187–188
MyScreenSaverView –ConfigureSheet Method in MyScreenSaverView.m (Listing 10.5), 187
MyScreenSaverView –hasConfigureSheet Method in MyScreenSaverView.m (Listing 10.4), 186–187
MyScreenSaverView –initWithFrameisPreview Method in MyScreenSaverView.m (Listing 10.2), 182–185
MyScreenSaverView Interface in MyScreenSaverView.h (Listing 10.1), 182
MySOAP program
AppController.h, 394
AppController.m, 394–396
main.m, 397
product client.php, 397–399
MyStatusItem program
AppController.h, 365
AppController.m, 365–368
main.m, 368
MyTerminal program
AppController.h, 380
AppController.m, 380
main.m, 380
MyTerminalController.h, 381
MyTerminalController.m, 381–386
MyTerminalController –dealloc Method in MyTerminalController.m (Listing 13.2), 230
MyTerminalController –displayPingData Method in MyTerminalController.m (Listing 13.6), 236–238
MyTerminalController –init Method in MyTerminalController.m (Listing 13.2), 230
MyTerminalController –ping Method in MyTerminalController.m (Listing 13.5), 233–236
MyTerminalController –uptime Method in MyTerminalController.m (Listing 13.4), 230–232
MyTerminalController Interface in MyTerminalController.h (Listing 13.1), 228–230
MyTextService program
main.m, 360–361
MyTextService.h, 361
MyTextService.m, 361–362
MyTextService – changeCase userData error in MyTextService.m (Listing 7.3), 142–144
MyTextService Interface in MyTextService.h (Listing 7.2), 142
MyTextService main (Listing 7.1), 140–142
MyThread program
AppController.h, 375
AppController.m, 375–379
main.m, 379
MyXMLRPC program
AppController.h, 386
AppController.m, 386–389
main.m, 389
product client.php, 389–392
product server.php, 392–393
NSBundle image editing plug-in applications
ImageWindowsController’s -windowWillClose (Listing 4.6), 87–88
ImageWindowsController’s awakeFromNib (Listing 4.3), 82, 84–86
ImageWindowsController’s doFilter (Listing 4.5), 86–87
ImageWindowsController’s doResetImage (Listing 4.4), 86
plistPlugin program
-awakeFromNib (Listing 4.1), 75–76
-doSearch (Listing 4.2), 77–78
AppController.h, 343
AppController.m, 344
Google.plist, 347
main.m, 344
Overture.plist, 347
SearchWindowController.h, 344
SearchWindowController.m, 345–347
Yahoo.plist, 348
product information project (SOAP)
-getProductInformation – Part 1 in AppController.m (Listing 15.13), 291–292
-getProductInformation – Part 2 in AppController.m (Listing 15.14), | 292-293
-getProductInformation – Part 3 in AppController.m (Listing 15.15), 293–294
-getProductInformation in AppController.m (Listing 15.12), 289–291
AppController Interface in AppController.h (Listing 15.11), 288
In the Beginning of product client.php (Listing 15.8), 282
In the End of product client.php (Listing 15.10), 285–286
In the Middle of product client.php (Listing 15.9), 283–285
Initial Steps in product server.php (Listing 15.2), 275–276
product client.php (Listing 15.7), 280–282
product server.php (Listing 15.1), 273–275
The get product info Method in product server.php (Listing 15.3), 276–277
The XML-Formatted Data Returned from product server.php (Listing 15.5), 279
The XML-Formatted Data Sent to product server.php (Listing 15.4), 278
product information project (XML-RPC)
-getProductInformation – Part 1 in AppController.m (Listing 14.13), 263–264
-getProductInformation – Part 2 in AppController.m (Listing 14.14), 264–265
-getProductInformation – Part 3 in AppController.m (Listing 14.15), 265–266
-getProductInformation in AppController.h (Listing 14.12), 261–263
AppController Interface in AppController.h (Listing 14.11), 261
Creating the Server in product server.php (Listing 14.6), 251
In the Beginning of product client.php (Listing 14.8), 254
In the End of product client.php (Listing 14.10), 257–258
In the Middle of product client.php (Listing 14.9), 255–257
Initial Steps in product server.php (Listing 14.2), 247–248
product client.php (Listing 14.7), 252–254
product server.php (Listing 14.1), 244–247
The get product info Method in product server.php (Listing 14.3), 248–249
The XML-Formatted Data Sent from product server.php (Listing 14.5), 250
The XML-Formatted Data Sent to product server.php (Listing 14.4), 249–250
RadarWatcherX project
AppController.h, 313
AppController.m, 313–314
AppController +initialize (Listing 3.15), 62–63
AppController –applicationShouldOpenUntitledFile (Listing 3.16), 63–64
AppController –showPreferencePanel (Listing 3.17), 64
application preferences, 61–66
Creating a Timer (Listing 3.8), 55
Main.m (Listing 3.1), 48
MyDocument.h, 315–316
MyDocument.m, 316–326
MyDocument -init (Listing 3.3), 49
MyDocument –refreshRadar method Image Checking (Listing 3.11), 57–58
MyDocument –refreshRadar method Image Loaded (Listing 3.10), 56–57
MyDocument –refreshRadar method Image Loading (Listing 3.9), 55
MyDocument –updateUI (Listing 3.6), 52–53
MyDocument -writeFromFileofType(Listing 3.5), 52
MyDocument -writeToFileofType(Listing 3.4), 50–52
NSMutableDictionary Keys (Listing 3.2), 48
PreferenceController.h (Listing 3.14), 62, 326
PreferenceController.m (Listing 3.18), 64–66, 326–327
RadarView.h, 327–328
RadarView.m, 328–332
RadarView -isColorInImageInRect(Listing 3.13), 59–61
RadarView color checker, 59–61
RadarView instance variable, 58
RadarView Mouse Overrides (Listing 3.12), 58–59
RadarView watch box, 58–59
RadarWatcherX .rdrw Data File (Listing 3.7), 53–54
services
Reading Pasteboard Types (Listing 7.7), 147
Registering Pasteboard Types (Listing 7.4), 145
Validating Pasteboard Types (Listing 7.5), 145–146
Writing Pasteboard Types (Listing 7.6), 146–147
Shared program
MyCFCallPlugin.c, 355–356
MyCFPluginInterface.h, 357
SourceForge.net Web site
Flat File DataBase (FFDB) PHP Library, 295
PHP database resources, 267
SplitForks utility (command line), 34
state machines, 212
static libraries, 119
status items
appearance of, 163–164
Apple restrictions on use, 163–164
function of, 163–164
MyStatusItem project
constructing (Project Builder), 165–173
customizing options, 173
nib file (Interface Builder), 167
results overview, 164–165
source code (Project Builder), 167–173
Target settings (Project Builder), 166–167
StepWise.com Web site, 403
Stick Software Web site, 45
symbol collisions (Objective-C), 95–96
system color panel (Color Wheel), 191
folder location, 191
RGB.CMYL color mode, 192
System Preference Panes. See preference panes
System Preferences application, Screen Effects pane
Activation tab, 176
Hot Corners tab, 177
MyScreenSaver project, 177–178
Screen Effects tab, 175
System Services. See services
TCP (Transmission Control Protocol), Mac OS X support, 9
terminal applications
files, copying via wildcards, 223
functions, 223
man command, 224
MyTerminal project
constructing (Project Builder), 226–238
nib file (Interface Builder), 228
results overview, 225–226
source code (Project Builder), 228–238
Target settings (Project Builder), 227
MyThread project, customizing options, 239
remote logons, 224
rm command, 224
shell scripts, executing, 224
top command, 224
UNIX, 5
versus GUI interface, 223
ThePicker.h code (MyColorPicker program), 372
ThePicker.m code (MyColorPicker program), 373–374
third-party frameworks (Omni Group), 122
OmniAppKit, 123–124
OmniBase, 123
OmniFoundation, 123
OmniHTML, 124
OmniNetworking, 123
OWF (Omni Web Framework), 124
Thread Viewer, 32
threads
function of, 205–206
MyThread project
constructing (Project Builder), 208–218
customizing options, 221
nib file (Project Builder), 209
results overview, 206–207
source code(Project Builder), 209–218
Target settings (Project Builder), 208
overhead costs, 206
parallel, 219–220
priorities, 220
serial, 219–220
versus timers, 206
timers versus threads, 206
toll-free bridging, 78
tools
Interface Builder, 20
Project Builder
Concurrent Versions System (CVS), 24
development functions, 19
gcc3 debugger (GNU Compiler Collection), 19
gdb (The GNU Debugger), 19, 23–24
top command, terminal applications, 224
top utility (command line), 34
TripleSoft.com Web site, 403
UDP (User Datagram Protocol), Mac OS X support, 9
UFS file system, Mac OS X support, 9
Universally Unique Identifiers (UUIDs)
ASCII format, 106
HEX format, 106
UUIDCreator application, 106
UNIX
benefits, 8
BSD (Berkeley Software Distribution), 5
historical background, 8
Mac OS X default installations, 17
Process Viewer, 8
servers, stability of, 8
terminal application, 5
versions
AT&T, 8
BSD, 8
Linux, 8
UnRezWack utility (command line), 34
updating application dock images, 300–301
URLs (uniform resource locators)
AppleScript execution, 305
opening (code snippet), 302
USB Prober, 33
usernames, displaying (code snippet example), 298
users, application defaults (defaults command-line utility), 305
utilities
Apple Help Indexing Tool, 24
FileMerge, 25
icns Browser, 25
IconComposer, 26
IORegistryExplorer, 26
JavaBrowser, 26
MallocDebug, 27
MRJAppBuilder, 28
ObjectAlloc, 28
OpenGL Info, 29
OpenGL Profiler, 29
OpenGL Shader Builder, 29
PackageMaker, 30
PEFViewer, 30
Pixie, 31
Property List Editor, 31
Quartz Debug, 32
Sampler, 32
Thread Viewer, 32
USB Prober, 33
UUIDCreator application, number generator, 106
UUIDs (Universally Unique Identifiers)
ASCII format, 106
HEX format, 106
UUIDCreator application, 106
validating pasteboard types (services), 145–146
vmmap utility (command line), 34
W3C Web site, SOAP specification resources, 270
Web sites
Adobe Photoshop, 45
localization resources, 307
Objective-C resources, 22
Cocoa Browser, 403
CocoaDev.com, 403
CocoaDevCentral.com, 403
Icon Factory, 45
Mac OS X Hints, 403
OpenGL.org, 189
SourceForge.net
Flat File DataBase (FFDB) PHP Library, 295
PHP database resources, 267
StepWise.com, 403
Stick Software, 45
TripleSoft.com, 403
W3C, SOAP specification resources, 270
XML-RPC.org, 242
WebCore.framework, 36
WebDAV file system, Mac OS X support, 9
writing pasteboard types (services), 146–147
WSMakeStubs utility (command line), 34
X11 technology, Darwin implementation, 7
XML text files, viewing (Property List Editor), 31
XML-RPC
data-based client/server architecture, 241
development of, 241
Mac OS X support, 9
product information project
PHP server, 244–251
results overview, 242–243
Web site, 242
Yahoo.plist code (plistPlugin program), 348
18.220.181.146