Index

Symbols

2D graphics, rendering (Quartz), 10

3D graphics, OpenGL features, 11

? (question mark) conditional expression (C programming language), 161

A

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

AppKit.framework, 15, 35

Apple Developer Web site, 403

Aqua icon design resources, 45

framework resources, 121

localization resources, 307

Objective-C resources, 22, 89

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

appearance, 6, 16–17

Apple Human Interface Guidelines, 16–17

example, 6

AT&T, UNIX version, 8

AudioUnit framework, header file (Listing 6.1), 120–121

B—C

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)

client functions, 243, 258

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

D

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

E—F

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

G—H—I

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

IconComposer, 26, 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

Aqua appearance, 6, 16–17

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

J – K – L

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

M

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

customizing options, 69, 147

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

customizing options, 221, 239

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

N

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

-didUnselect, 159, 162

-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

O

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

P

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

PHP server, 244–251, 273–279

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

constructing, 80, 88–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

Cocoa client, 271, 286–294

PHP client, 271, 280–286

PHP server, 273–279

results overview, 270–286

XML-RPC product information project

Cocoa client, 243, 258–266

PHP client, 242–258

PHP server, 244, 247–251

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

Q—R

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

Main.m (Listing 3.1), 48, 314

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

S

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

customizing options, 69, 147

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

Cocoa client, 271, 286–294

PHP client, 271, 280–286

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

product server.php, 399, 401

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

T

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

U—V

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

W

W3C Web site, SOAP specification resources, 270

Web sites

Adobe Photoshop, 45

Apple Developers, 89, 403

localization resources, 307

Objective-C resources, 22

Cocoa Browser, 403

CocoaDev.com, 403

CocoaDevCentral.com, 403

Icon Factory, 45

Mac OS X Hints, 403

Omni Group, 122, 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

X—Y—Z

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

Cocoa client, 243, 258–266

PHP client, 242, 252–258

PHP server, 244–251

results overview, 242–243

Web site, 242

Yahoo.plist code (plistPlugin program), 348

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.17.167.114