Changeset 91 for trunk/appswitch
- Timestamp:
- 02/10/03 20:08:11 (22 years ago)
- Location:
- trunk/appswitch
- Files:
-
- 3 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/appswitch
-
Property svn:ignore
set to
build
*~
.DS_Store
-
Property svn:ignore
set to
-
trunk/appswitch/CPS.h
r85 r91 78 78 UInt32 ExecFileType; 79 79 UInt32 ExecFileCreator; 80 UInt32 UnixPID;80 SInt32 UnixPID; // njr changed from UInt32 81 81 }; 82 82 -
trunk/appswitch/appswitch.1
r85 r91 1 .\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples. 2 .\"See Also: 3 .\"man mdoc.samples for a complete listing of options 4 .\"man mdoc for the short list of editing options 5 .\"/usr/share/misc/mdoc.template 6 .Dd Tue Feb 04 2003 \" DATE 7 .Dt appswitch 1 \" Program name and manual section number 8 .Os Darwin 9 .Sh NAME \" Section Header - required - don't modify 10 .Nm appswitch, 11 .\" The following lines are read in generating the apropos(man -k) database. Use only key 12 .\" words here as the database is built based on the words here and in the .ND line. 13 .Nm Other_name_for_same_program(), 14 .Nm Yet another name for the same program. 15 .\" Use .Nm macro to designate other names for the documented program. 16 .Nd This line parsed for whatis database. 17 .Sh SYNOPSIS \" Section Header - required - don't modify 1 .Dd Mon Feb 10 2003 \" DATE 2 .Dt APPSWITCH 1 LOCAL \" Program name and manual section number 3 .Os appswitch 1.0b1 4 .Sh NAME 5 .Nm appswitch 6 .Nd switch, hide, show, kill or list Mac OS X applications 7 .Sh SYNOPSIS 8 .Nm appswitch 9 .Op Fl sShHkFlP \" [-sShHkFlP] 10 .Op Fl c Ar creator \" [-c creator] 11 .Op Fl i Ar bundleID \" [-i bundleID] 12 .Op Fl a Ar name \" [-a name] 13 .Op Fl p Ar pid \" [-p pid] 14 .Op Ar path \" [path] 15 .Sh DESCRIPTION 18 16 .Nm 19 .Op Fl abcd \" [-abcd] 20 .Op Fl a Ar path \" [-a path] 21 .Op Ar file \" [file] 22 .Op Ar \" [file ...] 23 .Ar arg0 \" Underlined argument - use .Ar anywhere to underline 24 arg2 ... \" Arguments 25 .Sh DESCRIPTION \" Section Header - required - don't modify 26 Use the .Nm macro to refer to your program throughout the man page like such: 17 controls the ordering and visibility of Mac OS X application windows. 27 18 .Nm 28 Underlining is accomplished with the .Ar macro like this: 29 .Ar underlined text . 30 .Pp \" Inserts a space 31 A list of items with descriptions: 32 .Bl -tag -width -indent \" Begins a tagged list 33 .It item a \" Each item preceded by .It macro 34 Description of item a 35 .It item b 36 Description of item b 37 .El \" Ends the list 38 .Pp 39 A list of flags and their descriptions: 40 .Bl -tag -width -indent \" Differs from above in tag removed 41 .It Fl a \"-a flag as a list item 42 Description of -a flag 43 .It Fl b 44 Description of -b flag 45 .El \" Ends the list 46 .Pp 47 .\" .Sh ENVIRONMENT \" May not be needed 48 .\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1 49 .\" .It Ev ENV_VAR_1 50 .\" Description of ENV_VAR_1 51 .\" .It Ev ENV_VAR_2 52 .\" Description of ENV_VAR_2 53 .\" .El 54 .Sh FILES \" File used or created by the topic of the man page 55 .Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact 56 .It Pa /usr/share/file_name 57 FILE_1description 58 .It Pa /Users/joeuser/Library/really_long_file_name 59 FILE_2 description 60 .\" .Sh DIAGNOSTICS \" May not be needed 61 .\" .Bl -diag 62 .\" .It Diagnostic Tag 63 .\" Diagnostic informtion here. 64 .\" .It Diagnostic Tag 65 .\" Diagnostic informtion here. 66 .\" .El 19 can also list or kill running applications. 20 .Ss Matching options 21 Matching identifies one or more applications to manipulate. 22 .Bl -tag -width -indent 23 .It Fl c Ar creator 24 Match by creator (a four-character code, also known as a signature). 25 .It Fl i Ar bundle ID 26 Match by bundle identifier, usually consisting of the reversed dot 27 (.)-separated components of the application developer's Internet domain 28 name, followed by the application name. For example, the Finder's 29 bundle identifier is 30 .Ar com.apple.Finder . 31 Bundle identifiers are not case-sensitive. 32 .It Fl p Ar pid 33 Match by process identifier, a positive number. 34 .It Ar path 35 Match by bundle path. For packaged applications, this is the package 36 directory whose name typically has the .app extension, for example 37 .Ar /Applications/TextEdit.app 38 for the default installation location of TextEdit. For non-packaged 39 applications, this is the path to the executable itself. 40 .El 41 .Ss Application actions 42 These actions apply to the matched application. If multiple 43 applications match the supplied criteria, only the first matching 44 application is acted upon. The list option 45 .Fl l 46 displays all matching applications. 47 .Bl -tag -width -indent 48 .It Fl s 49 Show the application, making the application's windows frontmost. Do 50 not switch to the application. 51 .It Fl h 52 Hide the application's windows. 53 .It Fl k 54 Kill (force quit) the application. 55 .It Fl l 56 List applications in a format similar to that of 57 .Xr ps 1 . The columns of the listing are as follows: 58 .Bl -tag -width indent 59 .It PSN 60 The process serial number of the application. Process serial numbers 61 are unique identifiers among both native Mac OS X and Classic 62 applications. 63 .It PID 64 The process identifier, a positive number which uniquely identifies 65 native Mac OS X processes, usable with the 66 .Fl p 67 matching option. Because all Classic applications run inside 68 TruBlueEnvironment, a single Mac OS X process, their process 69 identifiers appear as -1. 70 .It TYPE 71 The four-character code identifying the application's type, 72 usually 'APPL' for most applications or 'FNDR' for the Finder. 73 Classic applications include additional types such as 'appe' 74 and 'APPC' for applications which perform the functions of extensions 75 and control panels, respectively. 76 .It CREA 77 The four-character code identifying the application's creator, usable with the 78 .Fl c 79 matching option. Some Mac OS X applications have no creator, appearing 80 as '????'; for these applications you must use the bundle identifier, 81 name or path as match criteria. 82 .It NAME 83 The user-visible application name, usable with the 84 .Fl a 85 matching option. This field is truncated to 20 characters; the 86 remainder of longer application names is not displayed. 87 .It PATH 88 The path to the application bundle, usable with the 89 .Ar path 90 matching option. This field is truncated to the window width, or to 80 91 characters if the window width cannot be determined. 92 .El 93 .It Fl p 94 Print the application's process identifier (PID), a positive number 95 and unique identifier for all applications except Classic 96 applications. 97 .El 98 .Ss Actions 99 These actions affect all applications currently running. 100 .Bl -tag -width -indent 101 .It Fl S 102 Show all applications, layering the windows of initially hidden 103 applications on top. 104 .It Fl H 105 Hide windows of all applications other than the matched application, 106 or the frontmost application if no application has been matched. 107 .It Fl F 108 Order the current application's windows to the front. 109 .El 67 110 .Sh SEE ALSO 68 111 .\" List links in ascending order by section, alphabetically within a section. 69 112 .\" Please do not reference files that do not exist without filing a bug report 70 .Xr a 1 , 71 .Xr b 1 , 72 .Xr c 1 , 73 .Xr a 2 , 74 .Xr b 2 , 75 .Xr a 3 , 76 .Xr b 3 77 .\" .Sh BUGS \" Document known, unremedied bugs 113 .Xr open 1 , 114 .Xr launch 1 , 115 .Xr ps 1 , 116 .Xr kill 1 , 117 .Xr GetFileInfo 1 118 .Sh BUGS \" Document known, unremedied bugs 119 The 120 .Fl F 121 option may be unreliable if issued immediately after another show or 122 hide command; try inserting a 123 .Xr sleep 1 124 command before it. 125 .Sh AUTHORS 126 .An "Nicholas Riley" Aq appswitch@sabi.net 78 127 .\" .Sh HISTORY \" Document history if command behaves in a unique manner 79 128 -
trunk/appswitch/appswitch.pbproj/nicholas.pbxuser
r85 r91 14 14 ); 15 15 perUserDictionary = { 16 PBXPerProjectTemplateStateSaveDate = 66 039068;17 "PBXTemplateGeometry-F5 CA7EC9015C08ED0DCA290F" = {18 ContentSize = "{6 65, 594}";16 PBXPerProjectTemplateStateSaveDate = 66554412; 17 "PBXTemplateGeometry-F5314676015831810DCA290F" = { 18 ContentSize = "{618, 257}"; 19 19 LeftSlideOut = { 20 20 Collapsed = NO; 21 Frame = "{{0, 0}, {665, 594}}";21 Frame = "{{0, 23}, {618, 234}}"; 22 22 Split0 = { 23 ActiveTab = 3; 24 ActiveTabName = PBXProjectFindModule; 23 ActiveTab = 2; 24 ActiveTabName = PBXBuildResultsModule; 25 Collapsed = YES; 26 Frame = "{{0, 0}, {618, 234}}"; 27 Split0 = { 28 Frame = "{{1e+06, 1e+06}, {618, 0}}"; 29 }; 30 SplitCount = 1; 31 Tab0 = { 32 Frame = "{{0, 0}, {952, 321}}"; 33 }; 34 Tab1 = { 35 Debugger = { 36 Collapsed = NO; 37 Frame = "{{0, 0}, {781, 452}}"; 38 Split0 = { 39 Frame = "{{0, 24}, {781, 428}}"; 40 Split0 = { 41 Frame = "{{0, 0}, {383, 428}}"; 42 }; 43 Split1 = { 44 DebugVariablesTableConfiguration = ( 45 Name, 46 123, 47 Value, 48 85, 49 Summary, 50 155.123, 51 ); 52 Frame = "{{392, 0}, {389, 428}}"; 53 }; 54 SplitCount = 2; 55 }; 56 SplitCount = 1; 57 Tab0 = { 58 Frame = "{{0, 0}, {100, 50}}"; 59 }; 60 Tab1 = { 61 Frame = "{{0, 0}, {100, 50}}"; 62 }; 63 TabCount = 2; 64 TabsVisible = YES; 65 }; 66 Frame = "{{0, 0}, {781, 452}}"; 67 LauncherConfigVersion = 7; 68 }; 69 Tab2 = { 70 Frame = "{{0, 0}, {618, 228}}"; 71 LauncherConfigVersion = 3; 72 Runner = { 73 Frame = "{{0, 0}, {618, 228}}"; 74 }; 75 }; 76 Tab3 = { 77 BuildMessageFrame = "{{0, 0}, {620, 195}}"; 78 BuildTranscriptFrame = "{{0, 204}, {620, 2}}"; 79 BuildTranscriptFrameExpanded = YES; 80 Frame = "{{0, 0}, {618, 228}}"; 81 }; 82 Tab4 = { 83 Frame = "{{0, 0}, {612, 295}}"; 84 }; 85 TabCount = 5; 86 TabsVisible = NO; 87 }; 88 SplitCount = 1; 89 Tab0 = { 90 Frame = "{{0, 0}, {300, 533}}"; 91 GroupTreeTableConfiguration = ( 92 TargetStatusColumn, 93 18, 94 MainColumn, 95 267, 96 ); 97 }; 98 Tab1 = { 99 ClassesFrame = "{{0, 0}, {280, 398}}"; 100 ClassesTreeTableConfiguration = ( 101 PBXBookColumnIdentifier, 102 20, 103 PBXClassColumnIdentifier, 104 237, 105 ); 106 Frame = "{{0, 0}, {278, 659}}"; 107 MembersFrame = "{{0, 407}, {280, 252}}"; 108 MembersTreeTableConfiguration = ( 109 PBXBookColumnIdentifier, 110 20, 111 PBXMethodColumnIdentifier, 112 236, 113 ); 114 }; 115 Tab2 = { 116 Frame = "{{0, 0}, {200, 100}}"; 117 }; 118 Tab3 = { 119 Frame = "{{0, 0}, {200, 100}}"; 120 TargetTableConfiguration = ( 121 ActiveObject, 122 16, 123 ObjectNames, 124 202.296, 125 ); 126 }; 127 Tab4 = { 128 BreakpointsTreeTableConfiguration = ( 129 breakpointColumn, 130 197, 131 enabledColumn, 132 31, 133 ); 134 Frame = "{{0, 0}, {250, 100}}"; 135 }; 136 TabCount = 5; 137 TabsVisible = NO; 138 }; 139 NavBarShownByDefault = YES; 140 StatusViewVisible = YES; 141 Template = F5314676015831810DCA290F; 142 ToolbarVisible = YES; 143 WindowLocation = "{819, 244}"; 144 }; 145 "PBXTemplateGeometry-F5534CB2020F3F8A0DCA290F" = { 146 ContentSize = "{594, 303}"; 147 LeftSlideOut = { 148 Collapsed = NO; 149 Frame = "{{0, 23}, {594, 280}}"; 150 Split0 = { 151 ActiveTab = 1; 152 ActiveTabName = PBXRunSessionModule; 153 Collapsed = YES; 154 Frame = "{{0, 0}, {594, 280}}"; 155 Split0 = { 156 Frame = "{{1e+06, 1e+06}, {594, 0}}"; 157 }; 158 SplitCount = 1; 159 Tab0 = { 160 Frame = "{{0, 0}, {804, 321}}"; 161 }; 162 Tab1 = { 163 Debugger = { 164 Collapsed = NO; 165 Frame = "{{0, 0}, {594, 274}}"; 166 Split0 = { 167 Frame = "{{0, 24}, {594, 250}}"; 168 Split0 = { 169 Frame = "{{0, 0}, {290, 250}}"; 170 }; 171 Split1 = { 172 DebugVariablesTableConfiguration = ( 173 Name, 174 123, 175 Value, 176 85, 177 Summary, 178 62.123, 179 ); 180 Frame = "{{299, 0}, {295, 250}}"; 181 }; 182 SplitCount = 2; 183 }; 184 SplitCount = 1; 185 Tab0 = { 186 Frame = "{{0, 0}, {100, 50}}"; 187 }; 188 Tab1 = { 189 Frame = "{{0, 0}, {100, 50}}"; 190 }; 191 TabCount = 2; 192 TabsVisible = YES; 193 }; 194 Frame = "{{0, 0}, {594, 274}}"; 195 LauncherConfigVersion = 7; 196 }; 197 Tab2 = { 198 Frame = "{{0, 0}, {594, 274}}"; 199 LauncherConfigVersion = 3; 200 Runner = { 201 Frame = "{{0, 0}, {594, 274}}"; 202 }; 203 }; 204 Tab3 = { 205 BuildMessageFrame = "{{0, 0}, {614, 262}}"; 206 BuildTranscriptFrame = "{{0, 271}, {614, 2}}"; 207 BuildTranscriptFrameExpanded = YES; 208 Frame = "{{0, 0}, {612, 295}}"; 209 }; 210 Tab4 = { 211 Frame = "{{0, 0}, {612, 295}}"; 212 }; 213 TabCount = 5; 214 TabsVisible = NO; 215 }; 216 SplitCount = 1; 217 Tab0 = { 218 Frame = "{{0, 0}, {300, 533}}"; 219 GroupTreeTableConfiguration = ( 220 TargetStatusColumn, 221 18, 222 MainColumn, 223 267, 224 ); 225 }; 226 Tab1 = { 227 ClassesFrame = "{{0, 0}, {280, 398}}"; 228 ClassesTreeTableConfiguration = ( 229 PBXBookColumnIdentifier, 230 20, 231 PBXClassColumnIdentifier, 232 237, 233 ); 234 Frame = "{{0, 0}, {278, 659}}"; 235 MembersFrame = "{{0, 407}, {280, 252}}"; 236 MembersTreeTableConfiguration = ( 237 PBXBookColumnIdentifier, 238 20, 239 PBXMethodColumnIdentifier, 240 236, 241 ); 242 }; 243 Tab2 = { 244 Frame = "{{0, 0}, {200, 100}}"; 245 }; 246 Tab3 = { 247 Frame = "{{0, 0}, {200, 386}}"; 248 TargetTableConfiguration = ( 249 ActiveObject, 250 16, 251 ObjectNames, 252 202.296, 253 ); 254 }; 255 Tab4 = { 256 BreakpointsTreeTableConfiguration = ( 257 breakpointColumn, 258 197, 259 enabledColumn, 260 31, 261 ); 262 Frame = "{{0, 0}, {250, 386}}"; 263 }; 264 TabCount = 5; 265 TabsVisible = NO; 266 }; 267 NavBarShownByDefault = YES; 268 StatusViewVisible = YES; 269 Template = F5534CB2020F3F8A0DCA290F; 270 ToolbarVisible = YES; 271 WindowLocation = "{72, 222}"; 272 }; 273 "PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = { 274 ContentSize = "{796, 742}"; 275 LeftSlideOut = { 276 Collapsed = NO; 277 Frame = "{{0, 0}, {796, 742}}"; 278 Split0 = { 25 279 Collapsed = NO; 26 Frame = "{{0, 0}, { 665, 594}}";280 Frame = "{{0, 0}, {796, 742}}"; 27 281 Split0 = { 28 Frame = "{{0, 301}, {665, 293}}";282 Frame = "{{0, 0}, {796, 742}}"; 29 283 }; 30 284 SplitCount = 1; … … 75 329 }; 76 330 Tab3 = { 77 BuildMessageFrame = "{{0, 0}, {6 67, 265}}";78 BuildTranscriptFrame = "{{0, 27 4}, {667, 2}}";331 BuildMessageFrame = "{{0, 0}, {614, 262}}"; 332 BuildTranscriptFrame = "{{0, 271}, {614, 2}}"; 79 333 BuildTranscriptFrameExpanded = YES; 80 Frame = "{{0, 0}, {6 65, 298}}";334 Frame = "{{0, 0}, {612, 295}}"; 81 335 }; 82 336 Tab4 = { 83 Frame = "{{0, 0}, {6 65, 295}}";337 Frame = "{{0, 0}, {612, 295}}"; 84 338 }; 85 339 TabCount = 5; … … 139 393 NavBarShownByDefault = YES; 140 394 StatusViewVisible = NO; 141 Template = F5CA7EC 9015C08ED0DCA290F;395 Template = F5CA7ECB015C094F0DCA290F; 142 396 ToolbarVisible = NO; 143 WindowLocation = "{ 385, 127}";397 WindowLocation = "{687, 68}"; 144 398 }; 145 "PBXTemplateGeometry-F5 CA7ECB015C094F0DCA290F" = {146 ContentSize = "{ 668, 621}";399 "PBXTemplateGeometry-F5E465990156DFB90DCA290F" = { 400 ContentSize = "{352, 553}"; 147 401 LeftSlideOut = { 148 Collapsed = NO; 149 Frame = "{{0, 0}, {668, 621}}"; 402 ActiveTab = 0; 403 ActiveTabName = PBXGroupTreeModule; 404 Collapsed = YES; 405 Frame = "{{0, 23}, {352, 530}}"; 150 406 Split0 = { 151 407 Collapsed = NO; 152 Frame = "{{ 0, 0}, {668, 621}}";408 Frame = "{{1e+06, 1e+06}, {0, 530}}"; 153 409 Split0 = { 154 Frame = "{{0, 0}, { 668, 621}}";410 Frame = "{{0, 0}, {0, 530}}"; 155 411 }; 156 412 SplitCount = 1; … … 214 470 SplitCount = 1; 215 471 Tab0 = { 216 Frame = "{{0, 0}, {3 13, 531}}";472 Frame = "{{0, 0}, {328, 530}}"; 217 473 GroupTreeTableConfiguration = ( 218 474 TargetStatusColumn, 219 475 18, 220 476 MainColumn, 221 2 80,477 295, 222 478 ); 223 479 }; 224 480 Tab1 = { 225 ClassesFrame = "{{0, 0}, { 280, 398}}";481 ClassesFrame = "{{0, 0}, {343, 348}}"; 226 482 ClassesTreeTableConfiguration = ( 227 483 PBXBookColumnIdentifier, 228 484 20, 229 485 PBXClassColumnIdentifier, 230 237,231 ); 232 Frame = "{{0, 0}, { 278, 659}}";233 MembersFrame = "{{0, 407}, {280, 252}}";486 300, 487 ); 488 Frame = "{{0, 0}, {341, 578}}"; 489 MembersFrame = "{{0, 357}, {343, 221}}"; 234 490 MembersTreeTableConfiguration = ( 235 491 PBXBookColumnIdentifier, 236 492 20, 237 493 PBXMethodColumnIdentifier, 238 2 36,494 299, 239 495 ); 240 496 }; 241 497 Tab2 = { 242 Frame = "{{0, 0}, { 200, 100}}";498 Frame = "{{0, 0}, {319, 576}}"; 243 499 }; 244 500 Tab3 = { 245 Frame = "{{0, 0}, { 200, 557}}";501 Frame = "{{0, 0}, {341, 578}}"; 246 502 TargetTableConfiguration = ( 247 503 ActiveObject, 248 504 16, 249 505 ObjectNames, 250 202.296,506 308.296, 251 507 ); 252 508 }; … … 254 510 BreakpointsTreeTableConfiguration = ( 255 511 breakpointColumn, 256 197,512 266, 257 513 enabledColumn, 258 514 31, 259 515 ); 260 Frame = "{{0, 0}, { 250, 100}}";516 Frame = "{{0, 0}, {319, 576}}"; 261 517 }; 262 518 TabCount = 5; 263 TabsVisible = NO;519 TabsVisible = YES; 264 520 }; 265 521 NavBarShownByDefault = YES; 266 StatusViewVisible = NO;267 Template = F5 CA7ECB015C094F0DCA290F;268 ToolbarVisible = NO;269 WindowLocation = "{1 53, -158}";522 StatusViewVisible = YES; 523 Template = F5E465990156DFB90DCA290F; 524 ToolbarVisible = YES; 525 WindowLocation = "{19, 217}"; 270 526 }; 271 527 PBXWorkspaceContents = ( … … 274 530 Split0 = { 275 531 Split0 = { 532 NavContent0 = { 533 bookmark = E16C83ED03F83AD700050002; 534 history = ( 535 E16C83D103F83AD700050002, 536 E16C83D203F83AD700050002, 537 E16C83D303F83AD700050002, 538 E16C83D403F83AD700050002, 539 E16C83D503F83AD700050002, 540 E16C83D603F83AD700050002, 541 E16C83D703F83AD700050002, 542 E16C83D803F83AD700050002, 543 E16C83D903F83AD700050002, 544 E16C83DA03F83AD700050002, 545 E16C83DB03F83AD700050002, 546 E16C83DC03F83AD700050002, 547 E16C83DD03F83AD700050002, 548 E16C83DE03F83AD700050002, 549 E16C83DF03F83AD700050002, 550 E16C83E003F83AD700050002, 551 ); 552 prevStack = ( 553 E16C83E103F83AD700050002, 554 E16C83E203F83AD700050002, 555 E16C83E303F83AD700050002, 556 E16C83E403F83AD700050002, 557 E16C83E503F83AD700050002, 558 E16C83E603F83AD700050002, 559 E16C83E703F83AD700050002, 560 E16C83E803F83AD700050002, 561 E16C83E903F83AD700050002, 562 E16C83EA03F83AD700050002, 563 E16C83EB03F83AD700050002, 564 E16C83EC03F83AD700050002, 565 ); 566 }; 276 567 NavCount = 1; 277 568 NavGeometry0 = { 278 Frame = "{{0, 0}, {150, 530}}"; 279 NavBarVisible = YES; 280 }; 281 NavSplitVertical = NO; 282 }; 283 SplitCount = 1; 284 Tab1 = { 285 Debugger = { 286 Split0 = { 287 SplitCount = 2; 288 }; 289 SplitCount = 1; 290 TabCount = 2; 291 }; 292 LauncherConfigVersion = 7; 293 }; 294 Tab2 = { 295 LauncherConfigVersion = 3; 296 Runner = { 297 }; 298 }; 299 TabCount = 5; 300 }; 301 SplitCount = 1; 302 Tab1 = { 303 OptionsSetName = "Hierarchy, all classes"; 304 }; 305 TabCount = 5; 306 }; 307 }, 308 { 309 LeftSlideOut = { 310 Split0 = { 311 Split0 = { 312 NavContent0 = { 313 bookmark = E1A0C6B703EFD28400050001; 314 history = ( 315 E1A0C6B603EFD28400050001, 316 ); 317 }; 318 NavCount = 1; 319 NavGeometry0 = { 320 Frame = "{{0, 0}, {796, 958}}"; 569 Frame = "{{0, 0}, {729, 633}}"; 321 570 NavBarVisible = YES; 322 571 }; … … 384 633 }; 385 634 }, 386 {387 LeftSlideOut = {388 Split0 = {389 Split0 = {390 NavCount = 1;391 NavGeometry0 = {392 Frame = "{{0, 0}, {594, 150}}";393 NavBarVisible = YES;394 };395 NavSplitVertical = NO;396 };397 SplitCount = 1;398 Tab1 = {399 Debugger = {400 Split0 = {401 SplitCount = 2;402 };403 SplitCount = 1;404 TabCount = 2;405 };406 LauncherConfigVersion = 7;407 };408 Tab2 = {409 LauncherConfigVersion = 3;410 Runner = {411 };412 };413 TabCount = 5;414 };415 SplitCount = 1;416 Tab1 = {417 OptionsSetName = "Hierarchy, all classes";418 };419 TabCount = 5;420 };421 },422 {423 LeftSlideOut = {424 Split0 = {425 Split0 = {426 NavContent0 = {427 bookmark = E1A0C6B903EFD28400050001;428 history = (429 E1A0C6B803EFD28400050001,430 );431 };432 NavCount = 1;433 NavGeometry0 = {434 Frame = "{{0, 0}, {668, 621}}";435 NavBarVisible = YES;436 };437 NavSplitVertical = NO;438 };439 SplitCount = 1;440 Tab1 = {441 Debugger = {442 Split0 = {443 SplitCount = 2;444 };445 SplitCount = 1;446 TabCount = 2;447 };448 LauncherConfigVersion = 7;449 };450 Tab2 = {451 LauncherConfigVersion = 3;452 Runner = {453 };454 };455 TabCount = 5;456 };457 SplitCount = 1;458 Tab1 = {459 OptionsSetName = "Hierarchy, all classes";460 };461 TabCount = 5;462 };463 },464 {465 LeftSlideOut = {466 Split0 = {467 Split0 = {468 NavContent0 = {469 bookmark = E1A0C6BB03EFD28400050001;470 history = (471 E1A0C6BA03EFD28400050001,472 );473 };474 NavCount = 1;475 NavGeometry0 = {476 Frame = "{{0, 0}, {668, 621}}";477 NavBarVisible = YES;478 };479 NavSplitVertical = NO;480 };481 SplitCount = 1;482 Tab1 = {483 Debugger = {484 Split0 = {485 SplitCount = 2;486 };487 SplitCount = 1;488 TabCount = 2;489 };490 LauncherConfigVersion = 7;491 };492 Tab2 = {493 LauncherConfigVersion = 3;494 Runner = {495 };496 };497 TabCount = 5;498 };499 SplitCount = 1;500 Tab1 = {501 OptionsSetName = "Hierarchy, all classes";502 };503 TabCount = 5;504 };505 },506 {507 LeftSlideOut = {508 Split0 = {509 Split0 = {510 NavContent0 = {511 bookmark = E1A0C6BD03EFD28400050001;512 history = (513 E1A0C6BC03EFD28400050001,514 );515 };516 NavCount = 1;517 NavGeometry0 = {518 Frame = "{{0, 0}, {668, 621}}";519 NavBarVisible = YES;520 };521 NavSplitVertical = NO;522 };523 SplitCount = 1;524 Tab1 = {525 Debugger = {526 Split0 = {527 SplitCount = 2;528 };529 SplitCount = 1;530 TabCount = 2;531 };532 LauncherConfigVersion = 7;533 };534 Tab2 = {535 LauncherConfigVersion = 3;536 Runner = {537 };538 };539 TabCount = 5;540 };541 SplitCount = 1;542 Tab1 = {543 OptionsSetName = "Hierarchy, all classes";544 };545 TabCount = 5;546 };547 },548 {549 LeftSlideOut = {550 Split0 = {551 Split0 = {552 NavContent0 = {553 bookmark = E1A0C6BF03EFD28400050001;554 history = (555 E1A0C6BE03EFD28400050001,556 );557 };558 NavCount = 1;559 NavGeometry0 = {560 Frame = "{{0, 0}, {668, 621}}";561 NavBarVisible = YES;562 };563 NavSplitVertical = NO;564 };565 SplitCount = 1;566 Tab1 = {567 Debugger = {568 Split0 = {569 SplitCount = 2;570 };571 SplitCount = 1;572 TabCount = 2;573 };574 LauncherConfigVersion = 7;575 };576 Tab2 = {577 LauncherConfigVersion = 3;578 Runner = {579 };580 };581 TabCount = 5;582 };583 SplitCount = 1;584 Tab1 = {585 OptionsSetName = "Hierarchy, all classes";586 };587 TabCount = 5;588 };589 },590 {591 LeftSlideOut = {592 Split0 = {593 Split0 = {594 NavContent0 = {595 bookmark = E1A0C6C103EFD28400050001;596 history = (597 E1A0C6C003EFD28400050001,598 );599 };600 NavCount = 1;601 NavGeometry0 = {602 Frame = "{{0, 0}, {668, 621}}";603 NavBarVisible = YES;604 };605 NavSplitVertical = NO;606 };607 SplitCount = 1;608 Tab1 = {609 Debugger = {610 Split0 = {611 SplitCount = 2;612 };613 SplitCount = 1;614 TabCount = 2;615 };616 LauncherConfigVersion = 7;617 };618 Tab2 = {619 LauncherConfigVersion = 3;620 Runner = {621 };622 };623 TabCount = 5;624 };625 SplitCount = 1;626 Tab1 = {627 OptionsSetName = "Hierarchy, all classes";628 };629 TabCount = 5;630 };631 },632 {633 LeftSlideOut = {634 Split0 = {635 Split0 = {636 NavContent0 = {637 bookmark = E1A0C6C303EFD28400050001;638 history = (639 E1A0C6C203EFD28400050001,640 );641 };642 NavCount = 1;643 NavGeometry0 = {644 Frame = "{{0, 0}, {668, 621}}";645 NavBarVisible = YES;646 };647 NavSplitVertical = NO;648 };649 SplitCount = 1;650 Tab1 = {651 Debugger = {652 Split0 = {653 SplitCount = 2;654 };655 SplitCount = 1;656 TabCount = 2;657 };658 LauncherConfigVersion = 7;659 };660 Tab2 = {661 LauncherConfigVersion = 3;662 Runner = {663 };664 };665 TabCount = 5;666 };667 SplitCount = 1;668 Tab1 = {669 OptionsSetName = "Hierarchy, all classes";670 };671 TabCount = 5;672 };673 },674 635 ); 675 636 PBXWorkspaceGeometries = ( 676 637 { 677 ContentSize = "{ 352, 553}";638 ContentSize = "{1018, 656}"; 678 639 LeftSlideOut = { 679 640 ActiveTab = 0; 680 641 ActiveTabName = PBXGroupTreeModule; 681 Collapsed = YES;682 Frame = "{{0, 23}, { 352, 530}}";642 Collapsed = NO; 643 Frame = "{{0, 23}, {1018, 633}}"; 683 644 Split0 = { 684 645 Collapsed = NO; 685 Frame = "{{ 1e+06, 1e+06}, {0, 530}}";646 Frame = "{{289, 0}, {729, 633}}"; 686 647 Split0 = { 687 Frame = "{{0, 0}, { 0, 530}}";648 Frame = "{{0, 0}, {729, 633}}"; 688 649 }; 689 650 SplitCount = 1; 690 651 Tab0 = { 691 Frame = "{{0, 0}, { 484, 208}}";652 Frame = "{{0, 0}, {681, 289}}"; 692 653 }; 693 654 Tab1 = { 694 655 Debugger = { 695 656 Collapsed = NO; 696 Frame = "{{0, 0}, {6 64, 208}}";657 Frame = "{{0, 0}, {681, 150}}"; 697 658 Split0 = { 698 Frame = "{{0, 24}, {6 64, 184}}";659 Frame = "{{0, 24}, {681, 126}}"; 699 660 Split0 = { 700 Frame = "{{0, 0}, {3 25, 184}}";661 Frame = "{{0, 0}, {333, 126}}"; 701 662 }; 702 663 Split1 = { … … 707 668 85, 708 669 Summary, 709 96.123,670 105.123, 710 671 ); 711 Frame = "{{3 34, 0}, {330, 184}}";672 Frame = "{{342, 0}, {339, 126}}"; 712 673 }; 713 674 SplitCount = 2; … … 723 684 TabsVisible = YES; 724 685 }; 725 Frame = "{{0, 0}, {6 64, 208}}";686 Frame = "{{0, 0}, {681, 120}}"; 726 687 LauncherConfigVersion = 7; 727 688 }; 728 689 Tab2 = { 729 Frame = "{{0, 0}, {6 64, 50}}";690 Frame = "{{0, 0}, {681, 234}}"; 730 691 LauncherConfigVersion = 3; 731 692 Runner = { 732 Frame = "{{0, 0}, {6 64, 50}}";693 Frame = "{{0, 0}, {681, 234}}"; 733 694 }; 734 695 }; 735 696 Tab3 = { 736 BuildMessageFrame = "{{0, 0}, {6 14, 262}}";737 BuildTranscriptFrame = "{{0, 2 71}, {614, 2}}";697 BuildMessageFrame = "{{0, 0}, {683, 205}}"; 698 BuildTranscriptFrame = "{{0, 214}, {683, 2}}"; 738 699 BuildTranscriptFrameExpanded = YES; 739 Frame = "{{0, 0}, {6 12, 295}}";700 Frame = "{{0, 0}, {681, 238}}"; 740 701 }; 741 702 Tab4 = { … … 747 708 SplitCount = 1; 748 709 Tab0 = { 749 Frame = "{{0, 0}, { 328, 530}}";710 Frame = "{{0, 0}, {265, 633}}"; 750 711 GroupTreeTableConfiguration = ( 751 712 TargetStatusColumn, 752 713 18, 753 714 MainColumn, 754 2 95,715 232, 755 716 ); 756 717 }; 757 718 Tab1 = { 758 ClassesFrame = "{{0, 0}, { 343, 348}}";719 ClassesFrame = "{{0, 0}, {250, 333}}"; 759 720 ClassesTreeTableConfiguration = ( 760 721 PBXBookColumnIdentifier, 761 722 20, 762 723 PBXClassColumnIdentifier, 763 300,724 207, 764 725 ); 765 Frame = "{{0, 0}, { 341, 578}}";766 MembersFrame = "{{0, 3 57}, {343, 221}}";726 Frame = "{{0, 0}, {248, 554}}"; 727 MembersFrame = "{{0, 342}, {250, 212}}"; 767 728 MembersTreeTableConfiguration = ( 768 729 PBXBookColumnIdentifier, 769 730 20, 770 731 PBXMethodColumnIdentifier, 771 2 99,732 206, 772 733 ); 773 734 }; 774 735 Tab2 = { 775 Frame = "{{0, 0}, { 319, 576}}";736 Frame = "{{0, 0}, {217, 554}}"; 776 737 }; 777 738 Tab3 = { 778 Frame = "{{0, 0}, { 341, 578}}";739 Frame = "{{0, 0}, {239, 554}}"; 779 740 TargetTableConfiguration = ( 780 741 ActiveObject, 781 742 16, 782 743 ObjectNames, 783 308.296, 784 ); 785 }; 786 Tab4 = { 787 BreakpointsTreeTableConfiguration = ( 788 breakpointColumn, 789 266, 790 enabledColumn, 791 31, 792 ); 793 Frame = "{{0, 0}, {319, 576}}"; 794 }; 795 TabCount = 5; 796 TabsVisible = YES; 797 }; 798 NavBarShownByDefault = YES; 799 StatusViewVisible = YES; 800 Template = F5E465990156DFB90DCA290F; 801 ToolbarVisible = YES; 802 WindowLocation = "{19, 553}"; 803 }, 804 { 805 ContentSize = "{796, 958}"; 806 LeftSlideOut = { 807 Collapsed = NO; 808 Frame = "{{0, 0}, {796, 958}}"; 809 Split0 = { 810 Collapsed = NO; 811 Frame = "{{0, 0}, {796, 958}}"; 812 Split0 = { 813 Frame = "{{0, 0}, {796, 958}}"; 814 }; 815 SplitCount = 1; 816 Tab0 = { 817 Frame = "{{0, 0}, {484, 208}}"; 818 }; 819 Tab1 = { 820 Debugger = { 821 Collapsed = NO; 822 Frame = "{{0, 0}, {664, 208}}"; 823 Split0 = { 824 Frame = "{{0, 24}, {664, 184}}"; 825 Split0 = { 826 Frame = "{{0, 0}, {325, 184}}"; 827 }; 828 Split1 = { 829 DebugVariablesTableConfiguration = ( 830 Name, 831 123, 832 Value, 833 85, 834 Summary, 835 96.123, 836 ); 837 Frame = "{{334, 0}, {330, 184}}"; 838 }; 839 SplitCount = 2; 840 }; 841 SplitCount = 1; 842 Tab0 = { 843 Frame = "{{0, 0}, {100, 50}}"; 844 }; 845 Tab1 = { 846 Frame = "{{0, 0}, {100, 50}}"; 847 }; 848 TabCount = 2; 849 TabsVisible = YES; 850 }; 851 Frame = "{{0, 0}, {664, 208}}"; 852 LauncherConfigVersion = 7; 853 }; 854 Tab2 = { 855 Frame = "{{0, 0}, {664, 50}}"; 856 LauncherConfigVersion = 3; 857 Runner = { 858 Frame = "{{0, 0}, {664, 50}}"; 859 }; 860 }; 861 Tab3 = { 862 BuildMessageFrame = "{{0, 0}, {614, 262}}"; 863 BuildTranscriptFrame = "{{0, 271}, {614, 2}}"; 864 BuildTranscriptFrameExpanded = YES; 865 Frame = "{{0, 0}, {612, 295}}"; 866 }; 867 Tab4 = { 868 Frame = "{{0, 0}, {612, 295}}"; 869 }; 870 TabCount = 5; 871 TabsVisible = NO; 872 }; 873 SplitCount = 1; 874 Tab0 = { 875 Frame = "{{0, 0}, {313, 531}}"; 876 GroupTreeTableConfiguration = ( 877 TargetStatusColumn, 878 18, 879 MainColumn, 880 280, 881 ); 882 }; 883 Tab1 = { 884 ClassesFrame = "{{0, 0}, {280, 398}}"; 885 ClassesTreeTableConfiguration = ( 886 PBXBookColumnIdentifier, 887 20, 888 PBXClassColumnIdentifier, 889 237, 890 ); 891 Frame = "{{0, 0}, {278, 659}}"; 892 MembersFrame = "{{0, 407}, {280, 252}}"; 893 MembersTreeTableConfiguration = ( 894 PBXBookColumnIdentifier, 895 20, 896 PBXMethodColumnIdentifier, 897 236, 898 ); 899 }; 900 Tab2 = { 901 Frame = "{{0, 0}, {200, 100}}"; 902 }; 903 Tab3 = { 904 Frame = "{{0, 0}, {200, 557}}"; 905 TargetTableConfiguration = ( 906 ActiveObject, 907 16, 908 ObjectNames, 909 202.296, 744 206.296, 910 745 ); 911 746 }; … … 917 752 31, 918 753 ); 919 Frame = "{{0, 0}, {250, 100}}";754 Frame = "{{0, 0}, {250, 554}}"; 920 755 }; 921 756 TabCount = 5; 922 TabsVisible = NO;757 TabsVisible = YES; 923 758 }; 924 759 NavBarShownByDefault = YES; 925 StatusViewVisible = NO;926 Template = F5CA7ECB015C094F0DCA290F;927 ToolbarVisible = NO;928 WindowLocation = "{ 384, 193}";760 StatusViewVisible = YES; 761 Template = 64ABBB4501FA494900185B06; 762 ToolbarVisible = YES; 763 WindowLocation = "{21, 114}"; 929 764 }, 930 765 { … … 1056 891 WindowLocation = "{819, 244}"; 1057 892 }, 1058 {1059 ContentSize = "{594, 303}";1060 LeftSlideOut = {1061 Collapsed = NO;1062 Frame = "{{0, 23}, {594, 280}}";1063 Split0 = {1064 ActiveTab = 1;1065 ActiveTabName = PBXRunSessionModule;1066 Collapsed = YES;1067 Frame = "{{0, 0}, {594, 280}}";1068 Split0 = {1069 Frame = "{{1e+06, 1e+06}, {594, 27}}";1070 };1071 SplitCount = 1;1072 Tab0 = {1073 Frame = "{{0, 0}, {804, 321}}";1074 };1075 Tab1 = {1076 Debugger = {1077 Collapsed = NO;1078 Frame = "{{0, 0}, {594, 274}}";1079 Split0 = {1080 Frame = "{{0, 24}, {594, 250}}";1081 Split0 = {1082 Frame = "{{0, 0}, {290, 250}}";1083 };1084 Split1 = {1085 DebugVariablesTableConfiguration = (1086 Name,1087 123,1088 Value,1089 85,1090 Summary,1091 62.123,1092 );1093 Frame = "{{299, 0}, {295, 250}}";1094 };1095 SplitCount = 2;1096 };1097 SplitCount = 1;1098 Tab0 = {1099 Frame = "{{0, 0}, {100, 50}}";1100 };1101 Tab1 = {1102 Frame = "{{0, 0}, {100, 50}}";1103 };1104 TabCount = 2;1105 TabsVisible = YES;1106 };1107 Frame = "{{0, 0}, {594, 274}}";1108 LauncherConfigVersion = 7;1109 };1110 Tab2 = {1111 Frame = "{{0, 0}, {594, 274}}";1112 LauncherConfigVersion = 3;1113 Runner = {1114 Frame = "{{0, 0}, {594, 274}}";1115 };1116 };1117 Tab3 = {1118 BuildMessageFrame = "{{0, 0}, {614, 262}}";1119 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";1120 BuildTranscriptFrameExpanded = YES;1121 Frame = "{{0, 0}, {612, 295}}";1122 };1123 Tab4 = {1124 Frame = "{{0, 0}, {612, 295}}";1125 };1126 TabCount = 5;1127 TabsVisible = NO;1128 };1129 SplitCount = 1;1130 Tab0 = {1131 Frame = "{{0, 0}, {300, 533}}";1132 GroupTreeTableConfiguration = (1133 TargetStatusColumn,1134 18,1135 MainColumn,1136 267,1137 );1138 };1139 Tab1 = {1140 ClassesFrame = "{{0, 0}, {280, 398}}";1141 ClassesTreeTableConfiguration = (1142 PBXBookColumnIdentifier,1143 20,1144 PBXClassColumnIdentifier,1145 237,1146 );1147 Frame = "{{0, 0}, {278, 659}}";1148 MembersFrame = "{{0, 407}, {280, 252}}";1149 MembersTreeTableConfiguration = (1150 PBXBookColumnIdentifier,1151 20,1152 PBXMethodColumnIdentifier,1153 236,1154 );1155 };1156 Tab2 = {1157 Frame = "{{0, 0}, {200, 100}}";1158 };1159 Tab3 = {1160 Frame = "{{0, 0}, {200, 386}}";1161 TargetTableConfiguration = (1162 ActiveObject,1163 16,1164 ObjectNames,1165 202.296,1166 );1167 };1168 Tab4 = {1169 BreakpointsTreeTableConfiguration = (1170 breakpointColumn,1171 197,1172 enabledColumn,1173 31,1174 );1175 Frame = "{{0, 0}, {250, 386}}";1176 };1177 TabCount = 5;1178 TabsVisible = NO;1179 };1180 NavBarShownByDefault = YES;1181 StatusViewVisible = YES;1182 Template = F5534CB2020F3F8A0DCA290F;1183 ToolbarVisible = YES;1184 WindowLocation = "{72, 222}";1185 },1186 {1187 ContentSize = "{668, 621}";1188 LeftSlideOut = {1189 Collapsed = NO;1190 Frame = "{{0, 0}, {668, 621}}";1191 Split0 = {1192 Collapsed = NO;1193 Frame = "{{0, 0}, {668, 621}}";1194 Split0 = {1195 Frame = "{{0, 0}, {668, 621}}";1196 };1197 SplitCount = 1;1198 Tab0 = {1199 Frame = "{{0, 0}, {484, 208}}";1200 };1201 Tab1 = {1202 Debugger = {1203 Collapsed = NO;1204 Frame = "{{0, 0}, {664, 208}}";1205 Split0 = {1206 Frame = "{{0, 24}, {664, 184}}";1207 Split0 = {1208 Frame = "{{0, 0}, {325, 184}}";1209 };1210 Split1 = {1211 DebugVariablesTableConfiguration = (1212 Name,1213 123,1214 Value,1215 85,1216 Summary,1217 96.123,1218 );1219 Frame = "{{334, 0}, {330, 184}}";1220 };1221 SplitCount = 2;1222 };1223 SplitCount = 1;1224 Tab0 = {1225 Frame = "{{0, 0}, {100, 50}}";1226 };1227 Tab1 = {1228 Frame = "{{0, 0}, {100, 50}}";1229 };1230 TabCount = 2;1231 TabsVisible = YES;1232 };1233 Frame = "{{0, 0}, {664, 208}}";1234 LauncherConfigVersion = 7;1235 };1236 Tab2 = {1237 Frame = "{{0, 0}, {664, 50}}";1238 LauncherConfigVersion = 3;1239 Runner = {1240 Frame = "{{0, 0}, {664, 50}}";1241 };1242 };1243 Tab3 = {1244 BuildMessageFrame = "{{0, 0}, {614, 262}}";1245 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";1246 BuildTranscriptFrameExpanded = YES;1247 Frame = "{{0, 0}, {612, 295}}";1248 };1249 Tab4 = {1250 Frame = "{{0, 0}, {612, 295}}";1251 };1252 TabCount = 5;1253 TabsVisible = NO;1254 };1255 SplitCount = 1;1256 Tab0 = {1257 Frame = "{{0, 0}, {313, 531}}";1258 GroupTreeTableConfiguration = (1259 TargetStatusColumn,1260 18,1261 MainColumn,1262 280,1263 );1264 };1265 Tab1 = {1266 ClassesFrame = "{{0, 0}, {280, 398}}";1267 ClassesTreeTableConfiguration = (1268 PBXBookColumnIdentifier,1269 20,1270 PBXClassColumnIdentifier,1271 237,1272 );1273 Frame = "{{0, 0}, {278, 659}}";1274 MembersFrame = "{{0, 407}, {280, 252}}";1275 MembersTreeTableConfiguration = (1276 PBXBookColumnIdentifier,1277 20,1278 PBXMethodColumnIdentifier,1279 236,1280 );1281 };1282 Tab2 = {1283 Frame = "{{0, 0}, {200, 100}}";1284 };1285 Tab3 = {1286 Frame = "{{0, 0}, {200, 557}}";1287 TargetTableConfiguration = (1288 ActiveObject,1289 16,1290 ObjectNames,1291 202.296,1292 );1293 };1294 Tab4 = {1295 BreakpointsTreeTableConfiguration = (1296 breakpointColumn,1297 197,1298 enabledColumn,1299 31,1300 );1301 Frame = "{{0, 0}, {250, 100}}";1302 };1303 TabCount = 5;1304 TabsVisible = NO;1305 };1306 NavBarShownByDefault = YES;1307 StatusViewVisible = NO;1308 Template = F5CA7ECB015C094F0DCA290F;1309 ToolbarVisible = NO;1310 WindowLocation = "{545, 231}";1311 },1312 {1313 ContentSize = "{668, 621}";1314 LeftSlideOut = {1315 Collapsed = NO;1316 Frame = "{{0, 0}, {668, 621}}";1317 Split0 = {1318 Collapsed = NO;1319 Frame = "{{0, 0}, {668, 621}}";1320 Split0 = {1321 Frame = "{{0, 0}, {668, 621}}";1322 };1323 SplitCount = 1;1324 Tab0 = {1325 Frame = "{{0, 0}, {484, 208}}";1326 };1327 Tab1 = {1328 Debugger = {1329 Collapsed = NO;1330 Frame = "{{0, 0}, {664, 208}}";1331 Split0 = {1332 Frame = "{{0, 24}, {664, 184}}";1333 Split0 = {1334 Frame = "{{0, 0}, {325, 184}}";1335 };1336 Split1 = {1337 DebugVariablesTableConfiguration = (1338 Name,1339 123,1340 Value,1341 85,1342 Summary,1343 96.123,1344 );1345 Frame = "{{334, 0}, {330, 184}}";1346 };1347 SplitCount = 2;1348 };1349 SplitCount = 1;1350 Tab0 = {1351 Frame = "{{0, 0}, {100, 50}}";1352 };1353 Tab1 = {1354 Frame = "{{0, 0}, {100, 50}}";1355 };1356 TabCount = 2;1357 TabsVisible = YES;1358 };1359 Frame = "{{0, 0}, {664, 208}}";1360 LauncherConfigVersion = 7;1361 };1362 Tab2 = {1363 Frame = "{{0, 0}, {664, 50}}";1364 LauncherConfigVersion = 3;1365 Runner = {1366 Frame = "{{0, 0}, {664, 50}}";1367 };1368 };1369 Tab3 = {1370 BuildMessageFrame = "{{0, 0}, {614, 262}}";1371 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";1372 BuildTranscriptFrameExpanded = YES;1373 Frame = "{{0, 0}, {612, 295}}";1374 };1375 Tab4 = {1376 Frame = "{{0, 0}, {612, 295}}";1377 };1378 TabCount = 5;1379 TabsVisible = NO;1380 };1381 SplitCount = 1;1382 Tab0 = {1383 Frame = "{{0, 0}, {313, 531}}";1384 GroupTreeTableConfiguration = (1385 TargetStatusColumn,1386 18,1387 MainColumn,1388 280,1389 );1390 };1391 Tab1 = {1392 ClassesFrame = "{{0, 0}, {280, 398}}";1393 ClassesTreeTableConfiguration = (1394 PBXBookColumnIdentifier,1395 20,1396 PBXClassColumnIdentifier,1397 237,1398 );1399 Frame = "{{0, 0}, {278, 659}}";1400 MembersFrame = "{{0, 407}, {280, 252}}";1401 MembersTreeTableConfiguration = (1402 PBXBookColumnIdentifier,1403 20,1404 PBXMethodColumnIdentifier,1405 236,1406 );1407 };1408 Tab2 = {1409 Frame = "{{0, 0}, {200, 100}}";1410 };1411 Tab3 = {1412 Frame = "{{0, 0}, {200, 557}}";1413 TargetTableConfiguration = (1414 ActiveObject,1415 16,1416 ObjectNames,1417 202.296,1418 );1419 };1420 Tab4 = {1421 BreakpointsTreeTableConfiguration = (1422 breakpointColumn,1423 197,1424 enabledColumn,1425 31,1426 );1427 Frame = "{{0, 0}, {250, 100}}";1428 };1429 TabCount = 5;1430 TabsVisible = NO;1431 };1432 NavBarShownByDefault = YES;1433 StatusViewVisible = NO;1434 Template = F5CA7ECB015C094F0DCA290F;1435 ToolbarVisible = NO;1436 WindowLocation = "{856, -60}";1437 },1438 {1439 ContentSize = "{668, 621}";1440 LeftSlideOut = {1441 Collapsed = NO;1442 Frame = "{{0, 0}, {668, 621}}";1443 Split0 = {1444 Collapsed = NO;1445 Frame = "{{0, 0}, {668, 621}}";1446 Split0 = {1447 Frame = "{{0, 0}, {668, 621}}";1448 };1449 SplitCount = 1;1450 Tab0 = {1451 Frame = "{{0, 0}, {484, 208}}";1452 };1453 Tab1 = {1454 Debugger = {1455 Collapsed = NO;1456 Frame = "{{0, 0}, {664, 208}}";1457 Split0 = {1458 Frame = "{{0, 24}, {664, 184}}";1459 Split0 = {1460 Frame = "{{0, 0}, {325, 184}}";1461 };1462 Split1 = {1463 DebugVariablesTableConfiguration = (1464 Name,1465 123,1466 Value,1467 85,1468 Summary,1469 96.123,1470 );1471 Frame = "{{334, 0}, {330, 184}}";1472 };1473 SplitCount = 2;1474 };1475 SplitCount = 1;1476 Tab0 = {1477 Frame = "{{0, 0}, {100, 50}}";1478 };1479 Tab1 = {1480 Frame = "{{0, 0}, {100, 50}}";1481 };1482 TabCount = 2;1483 TabsVisible = YES;1484 };1485 Frame = "{{0, 0}, {664, 208}}";1486 LauncherConfigVersion = 7;1487 };1488 Tab2 = {1489 Frame = "{{0, 0}, {664, 50}}";1490 LauncherConfigVersion = 3;1491 Runner = {1492 Frame = "{{0, 0}, {664, 50}}";1493 };1494 };1495 Tab3 = {1496 BuildMessageFrame = "{{0, 0}, {614, 262}}";1497 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";1498 BuildTranscriptFrameExpanded = YES;1499 Frame = "{{0, 0}, {612, 295}}";1500 };1501 Tab4 = {1502 Frame = "{{0, 0}, {612, 295}}";1503 };1504 TabCount = 5;1505 TabsVisible = NO;1506 };1507 SplitCount = 1;1508 Tab0 = {1509 Frame = "{{0, 0}, {313, 531}}";1510 GroupTreeTableConfiguration = (1511 TargetStatusColumn,1512 18,1513 MainColumn,1514 280,1515 );1516 };1517 Tab1 = {1518 ClassesFrame = "{{0, 0}, {280, 398}}";1519 ClassesTreeTableConfiguration = (1520 PBXBookColumnIdentifier,1521 20,1522 PBXClassColumnIdentifier,1523 237,1524 );1525 Frame = "{{0, 0}, {278, 659}}";1526 MembersFrame = "{{0, 407}, {280, 252}}";1527 MembersTreeTableConfiguration = (1528 PBXBookColumnIdentifier,1529 20,1530 PBXMethodColumnIdentifier,1531 236,1532 );1533 };1534 Tab2 = {1535 Frame = "{{0, 0}, {200, 100}}";1536 };1537 Tab3 = {1538 Frame = "{{0, 0}, {200, 557}}";1539 TargetTableConfiguration = (1540 ActiveObject,1541 16,1542 ObjectNames,1543 202.296,1544 );1545 };1546 Tab4 = {1547 BreakpointsTreeTableConfiguration = (1548 breakpointColumn,1549 197,1550 enabledColumn,1551 31,1552 );1553 Frame = "{{0, 0}, {250, 100}}";1554 };1555 TabCount = 5;1556 TabsVisible = NO;1557 };1558 NavBarShownByDefault = YES;1559 StatusViewVisible = NO;1560 Template = F5CA7ECB015C094F0DCA290F;1561 ToolbarVisible = NO;1562 WindowLocation = "{772, 101}";1563 },1564 {1565 ContentSize = "{668, 621}";1566 LeftSlideOut = {1567 Collapsed = NO;1568 Frame = "{{0, 0}, {668, 621}}";1569 Split0 = {1570 Collapsed = NO;1571 Frame = "{{0, 0}, {668, 621}}";1572 Split0 = {1573 Frame = "{{0, 0}, {668, 621}}";1574 };1575 SplitCount = 1;1576 Tab0 = {1577 Frame = "{{0, 0}, {484, 208}}";1578 };1579 Tab1 = {1580 Debugger = {1581 Collapsed = NO;1582 Frame = "{{0, 0}, {664, 208}}";1583 Split0 = {1584 Frame = "{{0, 24}, {664, 184}}";1585 Split0 = {1586 Frame = "{{0, 0}, {325, 184}}";1587 };1588 Split1 = {1589 DebugVariablesTableConfiguration = (1590 Name,1591 123,1592 Value,1593 85,1594 Summary,1595 96.123,1596 );1597 Frame = "{{334, 0}, {330, 184}}";1598 };1599 SplitCount = 2;1600 };1601 SplitCount = 1;1602 Tab0 = {1603 Frame = "{{0, 0}, {100, 50}}";1604 };1605 Tab1 = {1606 Frame = "{{0, 0}, {100, 50}}";1607 };1608 TabCount = 2;1609 TabsVisible = YES;1610 };1611 Frame = "{{0, 0}, {664, 208}}";1612 LauncherConfigVersion = 7;1613 };1614 Tab2 = {1615 Frame = "{{0, 0}, {664, 50}}";1616 LauncherConfigVersion = 3;1617 Runner = {1618 Frame = "{{0, 0}, {664, 50}}";1619 };1620 };1621 Tab3 = {1622 BuildMessageFrame = "{{0, 0}, {614, 262}}";1623 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";1624 BuildTranscriptFrameExpanded = YES;1625 Frame = "{{0, 0}, {612, 295}}";1626 };1627 Tab4 = {1628 Frame = "{{0, 0}, {612, 295}}";1629 };1630 TabCount = 5;1631 TabsVisible = NO;1632 };1633 SplitCount = 1;1634 Tab0 = {1635 Frame = "{{0, 0}, {313, 531}}";1636 GroupTreeTableConfiguration = (1637 TargetStatusColumn,1638 18,1639 MainColumn,1640 280,1641 );1642 };1643 Tab1 = {1644 ClassesFrame = "{{0, 0}, {280, 398}}";1645 ClassesTreeTableConfiguration = (1646 PBXBookColumnIdentifier,1647 20,1648 PBXClassColumnIdentifier,1649 237,1650 );1651 Frame = "{{0, 0}, {278, 659}}";1652 MembersFrame = "{{0, 407}, {280, 252}}";1653 MembersTreeTableConfiguration = (1654 PBXBookColumnIdentifier,1655 20,1656 PBXMethodColumnIdentifier,1657 236,1658 );1659 };1660 Tab2 = {1661 Frame = "{{0, 0}, {200, 100}}";1662 };1663 Tab3 = {1664 Frame = "{{0, 0}, {200, 557}}";1665 TargetTableConfiguration = (1666 ActiveObject,1667 16,1668 ObjectNames,1669 202.296,1670 );1671 };1672 Tab4 = {1673 BreakpointsTreeTableConfiguration = (1674 breakpointColumn,1675 197,1676 enabledColumn,1677 31,1678 );1679 Frame = "{{0, 0}, {250, 100}}";1680 };1681 TabCount = 5;1682 TabsVisible = NO;1683 };1684 NavBarShownByDefault = YES;1685 StatusViewVisible = NO;1686 Template = F5CA7ECB015C094F0DCA290F;1687 ToolbarVisible = NO;1688 WindowLocation = "{592, -173}";1689 },1690 {1691 ContentSize = "{668, 621}";1692 LeftSlideOut = {1693 Collapsed = NO;1694 Frame = "{{0, 0}, {668, 621}}";1695 Split0 = {1696 Collapsed = NO;1697 Frame = "{{0, 0}, {668, 621}}";1698 Split0 = {1699 Frame = "{{0, 0}, {668, 621}}";1700 };1701 SplitCount = 1;1702 Tab0 = {1703 Frame = "{{0, 0}, {484, 208}}";1704 };1705 Tab1 = {1706 Debugger = {1707 Collapsed = NO;1708 Frame = "{{0, 0}, {664, 208}}";1709 Split0 = {1710 Frame = "{{0, 24}, {664, 184}}";1711 Split0 = {1712 Frame = "{{0, 0}, {325, 184}}";1713 };1714 Split1 = {1715 DebugVariablesTableConfiguration = (1716 Name,1717 123,1718 Value,1719 85,1720 Summary,1721 96.123,1722 );1723 Frame = "{{334, 0}, {330, 184}}";1724 };1725 SplitCount = 2;1726 };1727 SplitCount = 1;1728 Tab0 = {1729 Frame = "{{0, 0}, {100, 50}}";1730 };1731 Tab1 = {1732 Frame = "{{0, 0}, {100, 50}}";1733 };1734 TabCount = 2;1735 TabsVisible = YES;1736 };1737 Frame = "{{0, 0}, {664, 208}}";1738 LauncherConfigVersion = 7;1739 };1740 Tab2 = {1741 Frame = "{{0, 0}, {664, 50}}";1742 LauncherConfigVersion = 3;1743 Runner = {1744 Frame = "{{0, 0}, {664, 50}}";1745 };1746 };1747 Tab3 = {1748 BuildMessageFrame = "{{0, 0}, {614, 262}}";1749 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";1750 BuildTranscriptFrameExpanded = YES;1751 Frame = "{{0, 0}, {612, 295}}";1752 };1753 Tab4 = {1754 Frame = "{{0, 0}, {612, 295}}";1755 };1756 TabCount = 5;1757 TabsVisible = NO;1758 };1759 SplitCount = 1;1760 Tab0 = {1761 Frame = "{{0, 0}, {313, 531}}";1762 GroupTreeTableConfiguration = (1763 TargetStatusColumn,1764 18,1765 MainColumn,1766 280,1767 );1768 };1769 Tab1 = {1770 ClassesFrame = "{{0, 0}, {280, 398}}";1771 ClassesTreeTableConfiguration = (1772 PBXBookColumnIdentifier,1773 20,1774 PBXClassColumnIdentifier,1775 237,1776 );1777 Frame = "{{0, 0}, {278, 659}}";1778 MembersFrame = "{{0, 407}, {280, 252}}";1779 MembersTreeTableConfiguration = (1780 PBXBookColumnIdentifier,1781 20,1782 PBXMethodColumnIdentifier,1783 236,1784 );1785 };1786 Tab2 = {1787 Frame = "{{0, 0}, {200, 100}}";1788 };1789 Tab3 = {1790 Frame = "{{0, 0}, {200, 557}}";1791 TargetTableConfiguration = (1792 ActiveObject,1793 16,1794 ObjectNames,1795 202.296,1796 );1797 };1798 Tab4 = {1799 BreakpointsTreeTableConfiguration = (1800 breakpointColumn,1801 197,1802 enabledColumn,1803 31,1804 );1805 Frame = "{{0, 0}, {250, 100}}";1806 };1807 TabCount = 5;1808 TabsVisible = NO;1809 };1810 NavBarShownByDefault = YES;1811 StatusViewVisible = NO;1812 Template = F5CA7ECB015C094F0DCA290F;1813 ToolbarVisible = NO;1814 WindowLocation = "{861, 493}";1815 },1816 {1817 ContentSize = "{668, 621}";1818 LeftSlideOut = {1819 Collapsed = NO;1820 Frame = "{{0, 0}, {668, 621}}";1821 Split0 = {1822 Collapsed = NO;1823 Frame = "{{0, 0}, {668, 621}}";1824 Split0 = {1825 Frame = "{{0, 0}, {668, 621}}";1826 };1827 SplitCount = 1;1828 Tab0 = {1829 Frame = "{{0, 0}, {484, 208}}";1830 };1831 Tab1 = {1832 Debugger = {1833 Collapsed = NO;1834 Frame = "{{0, 0}, {664, 208}}";1835 Split0 = {1836 Frame = "{{0, 24}, {664, 184}}";1837 Split0 = {1838 Frame = "{{0, 0}, {325, 184}}";1839 };1840 Split1 = {1841 DebugVariablesTableConfiguration = (1842 Name,1843 123,1844 Value,1845 85,1846 Summary,1847 96.123,1848 );1849 Frame = "{{334, 0}, {330, 184}}";1850 };1851 SplitCount = 2;1852 };1853 SplitCount = 1;1854 Tab0 = {1855 Frame = "{{0, 0}, {100, 50}}";1856 };1857 Tab1 = {1858 Frame = "{{0, 0}, {100, 50}}";1859 };1860 TabCount = 2;1861 TabsVisible = YES;1862 };1863 Frame = "{{0, 0}, {664, 208}}";1864 LauncherConfigVersion = 7;1865 };1866 Tab2 = {1867 Frame = "{{0, 0}, {664, 50}}";1868 LauncherConfigVersion = 3;1869 Runner = {1870 Frame = "{{0, 0}, {664, 50}}";1871 };1872 };1873 Tab3 = {1874 BuildMessageFrame = "{{0, 0}, {614, 262}}";1875 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";1876 BuildTranscriptFrameExpanded = YES;1877 Frame = "{{0, 0}, {612, 295}}";1878 };1879 Tab4 = {1880 Frame = "{{0, 0}, {612, 295}}";1881 };1882 TabCount = 5;1883 TabsVisible = NO;1884 };1885 SplitCount = 1;1886 Tab0 = {1887 Frame = "{{0, 0}, {313, 531}}";1888 GroupTreeTableConfiguration = (1889 TargetStatusColumn,1890 18,1891 MainColumn,1892 280,1893 );1894 };1895 Tab1 = {1896 ClassesFrame = "{{0, 0}, {280, 398}}";1897 ClassesTreeTableConfiguration = (1898 PBXBookColumnIdentifier,1899 20,1900 PBXClassColumnIdentifier,1901 237,1902 );1903 Frame = "{{0, 0}, {278, 659}}";1904 MembersFrame = "{{0, 407}, {280, 252}}";1905 MembersTreeTableConfiguration = (1906 PBXBookColumnIdentifier,1907 20,1908 PBXMethodColumnIdentifier,1909 236,1910 );1911 };1912 Tab2 = {1913 Frame = "{{0, 0}, {200, 100}}";1914 };1915 Tab3 = {1916 Frame = "{{0, 0}, {200, 557}}";1917 TargetTableConfiguration = (1918 ActiveObject,1919 16,1920 ObjectNames,1921 202.296,1922 );1923 };1924 Tab4 = {1925 BreakpointsTreeTableConfiguration = (1926 breakpointColumn,1927 197,1928 enabledColumn,1929 31,1930 );1931 Frame = "{{0, 0}, {250, 100}}";1932 };1933 TabCount = 5;1934 TabsVisible = NO;1935 };1936 NavBarShownByDefault = YES;1937 StatusViewVisible = NO;1938 Template = F5CA7ECB015C094F0DCA290F;1939 ToolbarVisible = NO;1940 WindowLocation = "{914, 13}";1941 },1942 893 ); 1943 PBXWorkspaceStateSaveDate = 66 039068;894 PBXWorkspaceStateSaveDate = 66554412; 1944 895 }; 1945 896 perUserProjectItems = { 1946 E1A0C6B603EFD28400050001 = E1A0C6B603EFD28400050001; 1947 E1A0C6B703EFD28400050001 = E1A0C6B703EFD28400050001; 1948 E1A0C6B803EFD28400050001 = E1A0C6B803EFD28400050001; 1949 E1A0C6B903EFD28400050001 = E1A0C6B903EFD28400050001; 1950 E1A0C6BA03EFD28400050001 = E1A0C6BA03EFD28400050001; 1951 E1A0C6BB03EFD28400050001 = E1A0C6BB03EFD28400050001; 1952 E1A0C6BC03EFD28400050001 = E1A0C6BC03EFD28400050001; 1953 E1A0C6BD03EFD28400050001 = E1A0C6BD03EFD28400050001; 1954 E1A0C6BE03EFD28400050001 = E1A0C6BE03EFD28400050001; 1955 E1A0C6BF03EFD28400050001 = E1A0C6BF03EFD28400050001; 1956 E1A0C6C003EFD28400050001 = E1A0C6C003EFD28400050001; 1957 E1A0C6C103EFD28400050001 = E1A0C6C103EFD28400050001; 1958 E1A0C6C203EFD28400050001 = E1A0C6C203EFD28400050001; 1959 E1A0C6C303EFD28400050001 = E1A0C6C303EFD28400050001; 897 E16C83D103F83AD700050002 = E16C83D103F83AD700050002; 898 E16C83D203F83AD700050002 = E16C83D203F83AD700050002; 899 E16C83D303F83AD700050002 = E16C83D303F83AD700050002; 900 E16C83D403F83AD700050002 = E16C83D403F83AD700050002; 901 E16C83D503F83AD700050002 = E16C83D503F83AD700050002; 902 E16C83D603F83AD700050002 = E16C83D603F83AD700050002; 903 E16C83D703F83AD700050002 = E16C83D703F83AD700050002; 904 E16C83D803F83AD700050002 = E16C83D803F83AD700050002; 905 E16C83D903F83AD700050002 = E16C83D903F83AD700050002; 906 E16C83DA03F83AD700050002 = E16C83DA03F83AD700050002; 907 E16C83DB03F83AD700050002 = E16C83DB03F83AD700050002; 908 E16C83DC03F83AD700050002 = E16C83DC03F83AD700050002; 909 E16C83DD03F83AD700050002 = E16C83DD03F83AD700050002; 910 E16C83DE03F83AD700050002 = E16C83DE03F83AD700050002; 911 E16C83DF03F83AD700050002 = E16C83DF03F83AD700050002; 912 E16C83E003F83AD700050002 = E16C83E003F83AD700050002; 913 E16C83E103F83AD700050002 = E16C83E103F83AD700050002; 914 E16C83E203F83AD700050002 = E16C83E203F83AD700050002; 915 E16C83E303F83AD700050002 = E16C83E303F83AD700050002; 916 E16C83E403F83AD700050002 = E16C83E403F83AD700050002; 917 E16C83E503F83AD700050002 = E16C83E503F83AD700050002; 918 E16C83E603F83AD700050002 = E16C83E603F83AD700050002; 919 E16C83E703F83AD700050002 = E16C83E703F83AD700050002; 920 E16C83E803F83AD700050002 = E16C83E803F83AD700050002; 921 E16C83E903F83AD700050002 = E16C83E903F83AD700050002; 922 E16C83EA03F83AD700050002 = E16C83EA03F83AD700050002; 923 E16C83EB03F83AD700050002 = E16C83EB03F83AD700050002; 924 E16C83EC03F83AD700050002 = E16C83EC03F83AD700050002; 925 E16C83ED03F83AD700050002 = E16C83ED03F83AD700050002; 1960 926 }; 1961 927 projectwideBuildSettings = { … … 1969 935 E1A0BD2C03EFAD1C00050001, 1970 936 ); 937 }; 938 E16C83D103F83AD700050002 = { 939 fRef = E16C83EF03F83AD700050002; 940 isa = PBXTextBookmark; 941 name = "CoreGraphics.h: 1"; 942 rLen = 0; 943 rLoc = 0; 944 rType = 0; 945 vrLen = 1102; 946 vrLoc = 0; 947 }; 948 E16C83D203F83AD700050002 = { 949 fRef = E16C83F003F83AD700050002; 950 isa = PBXTextBookmark; 951 name = "CGBase.h: 1"; 952 rLen = 0; 953 rLoc = 0; 954 rType = 0; 955 vrLen = 712; 956 vrLoc = 0; 957 }; 958 E16C83D303F83AD700050002 = { 959 fRef = E16C83F203F83AD700050002; 960 isa = PBXTextBookmark; 961 name = "CGError.h: 21"; 962 rLen = 23; 963 rLoc = 382; 964 rType = 0; 965 vrLen = 1002; 966 vrLoc = 0; 967 }; 968 E16C83D403F83AD700050002 = { 969 fRef = E16C83F303F83AD700050002; 970 isa = PBXTextBookmark; 971 name = "Processes.h: 48"; 972 rLen = 15; 973 rLoc = 1115; 974 rType = 0; 975 vrLen = 1032; 976 vrLoc = 546; 977 }; 978 E16C83D503F83AD700050002 = { 979 fRef = E16C83F403F83AD700050002; 980 isa = PBXTextBookmark; 981 name = "MacErrors.h: 1476"; 982 rLen = 3; 983 rLoc = 82842; 984 rType = 0; 985 vrLen = 1637; 986 vrLoc = 82130; 987 }; 988 E16C83D603F83AD700050002 = { 989 fRef = E16C83F103F83AD700050002; 990 isa = PBXTextBookmark; 991 name = "Quickdraw.h: 1974"; 992 rLen = 105; 993 rLoc = 71385; 994 rType = 0; 995 vrLen = 1086; 996 vrLoc = 70825; 997 }; 998 E16C83D703F83AD700050002 = { 999 fRef = E16C83F503F83AD700050002; 1000 isa = PBXTextBookmark; 1001 name = "types.h: 102"; 1002 rLen = 42; 1003 rLoc = 4351; 1004 rType = 0; 1005 vrLen = 1301; 1006 vrLoc = 3647; 1007 }; 1008 E16C83D803F83AD700050002 = { 1009 fRef = E16C83F603F83AD700050002; 1010 isa = PBXTextBookmark; 1011 name = "OpenTransportProtocol.h: 799"; 1012 rLen = 50; 1013 rLoc = 35039; 1014 rType = 0; 1015 vrLen = 1534; 1016 vrLoc = 34260; 1017 }; 1018 E16C83D903F83AD700050002 = { 1019 fRef = E16C83F703F83AD700050002; 1020 isa = PBXTextBookmark; 1021 name = "stdio.h: 279"; 1022 rLen = 47; 1023 rLoc = 10453; 1024 rType = 0; 1025 vrLen = 1370; 1026 vrLoc = 9757; 1027 }; 1028 E16C83DA03F83AD700050002 = { 1029 fRef = E16C83F803F83AD700050002; 1030 isa = PBXTextBookmark; 1031 name = "NSURL.h: 1"; 1032 rLen = 0; 1033 rLoc = 0; 1034 rType = 0; 1035 vrLen = 1617; 1036 vrLoc = 856; 1037 }; 1038 E16C83DB03F83AD700050002 = { 1039 fRef = E16C83F903F83AD700050002; 1040 isa = PBXTextBookmark; 1041 name = "NSFileManager.h: 7"; 1042 rLen = 0; 1043 rLoc = 165; 1044 rType = 0; 1045 vrLen = 1400; 1046 vrLoc = 0; 1047 }; 1048 E16C83DC03F83AD700050002 = { 1049 fRef = E1A0BD3203EFAD9E00050001; 1050 isa = PBXTextBookmark; 1051 name = "CPS.h: 281"; 1052 rLen = 0; 1053 rLoc = 4865; 1054 rType = 0; 1055 vrLen = 1136; 1056 vrLoc = 4090; 1057 }; 1058 E16C83DD03F83AD700050002 = { 1059 fRef = E16C83EE03F83AD700050002; 1060 isa = PBXTextBookmark; 1061 name = "unistd.h: 132"; 1062 rLen = 41; 1063 rLoc = 5271; 1064 rType = 0; 1065 vrLen = 1423; 1066 vrLoc = 4595; 1067 }; 1068 E16C83DE03F83AD700050002 = { 1069 fRef = E16C83CC03F7AF7B00050002; 1070 isa = PBXTextBookmark; 1071 name = "README: 34"; 1072 rLen = 56; 1073 rLoc = 1201; 1074 rType = 0; 1075 vrLen = 1412; 1076 vrLoc = 0; 1077 }; 1078 E16C83DF03F83AD700050002 = { 1079 fRef = C6859E970290921104C91782; 1080 isa = PBXTextBookmark; 1081 name = "appswitch.1: 110"; 1082 rLen = 0; 1083 rLoc = 4118; 1084 rType = 0; 1085 vrLen = 1732; 1086 vrLoc = 2592; 1087 }; 1088 E16C83E003F83AD700050002 = { 1089 fRef = 08FB7796FE84155DC02AAC07; 1090 isa = PBXTextBookmark; 1091 name = "main.c: 117"; 1092 rLen = 0; 1093 rLoc = 4782; 1094 rType = 0; 1095 vrLen = 1813; 1096 vrLoc = 0; 1097 }; 1098 E16C83E103F83AD700050002 = { 1099 fRef = E1A0BD3203EFAD9E00050001; 1100 isa = PBXTextBookmark; 1101 name = "CPS.h: 273"; 1102 rLen = 0; 1103 rLoc = 4618; 1104 rType = 0; 1105 vrLen = 1089; 1106 vrLoc = 4030; 1107 }; 1108 E16C83E203F83AD700050002 = { 1109 fRef = 08FB7796FE84155DC02AAC07; 1110 isa = PBXTextBookmark; 1111 name = "main.c: __VERSION__"; 1112 rLen = 0; 1113 rLoc = 0; 1114 rType = 0; 1115 vrLen = 861; 1116 vrLoc = 1740; 1117 }; 1118 E16C83E303F83AD700050002 = { 1119 fRef = E1A0BD3203EFAD9E00050001; 1120 isa = PBXTextBookmark; 1121 name = "CPS.h: CPSPostShowAllReq"; 1122 rLen = 17; 1123 rLoc = 4768; 1124 rType = 0; 1125 vrLen = 1057; 1126 vrLoc = 3979; 1127 }; 1128 E16C83E403F83AD700050002 = { 1129 fRef = 08FB7796FE84155DC02AAC07; 1130 isa = PBXTextBookmark; 1131 name = "main.c: main"; 1132 rLen = 0; 1133 rLoc = 12674; 1134 rType = 0; 1135 vrLen = 1650; 1136 vrLoc = 10700; 1137 }; 1138 E16C83E503F83AD700050002 = { 1139 fRef = E1A0BD3203EFAD9E00050001; 1140 isa = PBXTextBookmark; 1141 name = "CPS.h: 80"; 1142 rLen = 0; 1143 rLoc = 1183; 1144 rType = 0; 1145 vrLen = 810; 1146 vrLoc = 825; 1147 }; 1148 E16C83E603F83AD700050002 = { 1149 fRef = 08FB7796FE84155DC02AAC07; 1150 isa = PBXTextBookmark; 1151 name = "main.c: matchApplication"; 1152 rLen = 0; 1153 rLoc = 10201; 1154 rType = 0; 1155 vrLen = 1426; 1156 vrLoc = 8916; 1157 }; 1158 E16C83E703F83AD700050002 = { 1159 fRef = 08FB7796FE84155DC02AAC07; 1160 isa = PBXTextBookmark; 1161 name = "main.c: 51"; 1162 rLen = 0; 1163 rLoc = 2325; 1164 rType = 0; 1165 vrLen = 801; 1166 vrLoc = 1590; 1167 }; 1168 E16C83E803F83AD700050002 = { 1169 fRef = E16C83CC03F7AF7B00050002; 1170 isa = PBXTextBookmark; 1171 name = "README: 35"; 1172 rLen = 0; 1173 rLoc = 1258; 1174 rType = 0; 1175 vrLen = 1285; 1176 vrLoc = 0; 1177 }; 1178 E16C83E903F83AD700050002 = { 1179 fRef = E1A0BD3203EFAD9E00050001; 1180 isa = PBXTextBookmark; 1181 name = "CPS.h: 80"; 1182 rLen = 0; 1183 rLoc = 1183; 1184 rType = 0; 1185 vrLen = 832; 1186 vrLoc = 741; 1187 }; 1188 E16C83EA03F83AD700050002 = { 1189 fRef = 08FB7796FE84155DC02AAC07; 1190 isa = PBXTextBookmark; 1191 name = "main.c: 117"; 1192 rLen = 0; 1193 rLoc = 4782; 1194 rType = 0; 1195 vrLen = 1813; 1196 vrLoc = 0; 1197 }; 1198 E16C83EB03F83AD700050002 = { 1199 fRef = E16C83CC03F7AF7B00050002; 1200 isa = PBXTextBookmark; 1201 name = "README: 34"; 1202 rLen = 56; 1203 rLoc = 1201; 1204 rType = 0; 1205 vrLen = 1412; 1206 vrLoc = 0; 1207 }; 1208 E16C83EC03F83AD700050002 = { 1209 fRef = C6859E970290921104C91782; 1210 isa = PBXTextBookmark; 1211 name = "appswitch.1: 110"; 1212 rLen = 0; 1213 rLoc = 4118; 1214 rType = 0; 1215 vrLen = 1732; 1216 vrLoc = 2592; 1217 }; 1218 E16C83ED03F83AD700050002 = { 1219 fRef = 08FB7796FE84155DC02AAC07; 1220 isa = PBXTextBookmark; 1221 name = "main.c: 18"; 1222 rLen = 0; 1223 rLoc = 1589; 1224 rType = 0; 1225 vrLen = 1813; 1226 vrLoc = 0; 1227 }; 1228 E16C83EE03F83AD700050002 = { 1229 isa = PBXFileReference; 1230 name = unistd.h; 1231 path = /usr/include/unistd.h; 1232 refType = 0; 1233 }; 1234 E16C83EF03F83AD700050002 = { 1235 isa = PBXFileReference; 1236 name = CoreGraphics.h; 1237 path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Headers/CoreGraphics.h; 1238 refType = 0; 1239 }; 1240 E16C83F003F83AD700050002 = { 1241 isa = PBXFileReference; 1242 name = CGBase.h; 1243 path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGBase.h; 1244 refType = 0; 1245 }; 1246 E16C83F103F83AD700050002 = { 1247 isa = PBXFileReference; 1248 name = Quickdraw.h; 1249 path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/Headers/Quickdraw.h; 1250 refType = 0; 1251 }; 1252 E16C83F203F83AD700050002 = { 1253 isa = PBXFileReference; 1254 name = CGError.h; 1255 path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGError.h; 1256 refType = 0; 1257 }; 1258 E16C83F303F83AD700050002 = { 1259 isa = PBXFileReference; 1260 name = Processes.h; 1261 path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h; 1262 refType = 0; 1263 }; 1264 E16C83F403F83AD700050002 = { 1265 isa = PBXFileReference; 1266 name = MacErrors.h; 1267 path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h; 1268 refType = 0; 1269 }; 1270 E16C83F503F83AD700050002 = { 1271 isa = PBXFileReference; 1272 name = types.h; 1273 path = /usr/include/sys/types.h; 1274 refType = 0; 1275 }; 1276 E16C83F603F83AD700050002 = { 1277 isa = PBXFileReference; 1278 name = OpenTransportProtocol.h; 1279 path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/Headers/OpenTransportProtocol.h; 1280 refType = 0; 1281 }; 1282 E16C83F703F83AD700050002 = { 1283 isa = PBXFileReference; 1284 name = stdio.h; 1285 path = /usr/include/stdio.h; 1286 refType = 0; 1287 }; 1288 E16C83F803F83AD700050002 = { 1289 isa = PBXFileReference; 1290 name = NSURL.h; 1291 path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSURL.h; 1292 refType = 0; 1293 }; 1294 E16C83F903F83AD700050002 = { 1295 isa = PBXFileReference; 1296 name = NSFileManager.h; 1297 path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSFileManager.h; 1298 refType = 0; 1971 1299 }; 1972 1300 E1A0BD2C03EFAD1C00050001 = { … … 1990 1318 ); 1991 1319 }; 1992 E1A0C6B603EFD28400050001 = {1993 fRef = 08FB7796FE84155DC02AAC07;1994 isa = PBXTextBookmark;1995 rLen = 0;1996 rLoc = 3;1997 rType = 1;1998 };1999 E1A0C6B703EFD28400050001 = {2000 fRef = 08FB7796FE84155DC02AAC07;2001 isa = PBXTextBookmark;2002 name = "main.c: 18";2003 rLen = 0;2004 rLoc = 1589;2005 rType = 0;2006 vrLen = 2506;2007 vrLoc = 0;2008 };2009 E1A0C6B803EFD28400050001 = {2010 fRef = E1A0C6CC03EFD28400050001;2011 isa = PBXTextBookmark;2012 rLen = 1;2013 rLoc = 279;2014 rType = 1;2015 };2016 E1A0C6B903EFD28400050001 = {2017 fRef = E1A0C6CD03EFD28400050001;2018 isa = PBXTextBookmark;2019 name = "stdio.h: 280";2020 rLen = 52;2021 rLoc = 10500;2022 rType = 0;2023 vrLen = 1492;2024 vrLoc = 9730;2025 };2026 E1A0C6BA03EFD28400050001 = {2027 fRef = E1A0BD3203EFAD9E00050001;2028 isa = PBXTextBookmark;2029 rLen = 1;2030 rLoc = 82;2031 rType = 1;2032 };2033 E1A0C6BB03EFD28400050001 = {2034 fRef = E1A0BD3203EFAD9E00050001;2035 isa = PBXTextBookmark;2036 name = "CPS.h: CPSProcessInfoRec";2037 rLen = 24;2038 rLoc = 1169;2039 rType = 0;2040 vrLen = 868;2041 vrLoc = 709;2042 };2043 E1A0C6BC03EFD28400050001 = {2044 fRef = E1A0C6C403EFD28400050001;2045 isa = PBXTextBookmark;2046 rLen = 1;2047 rLoc = 475;2048 rType = 1;2049 };2050 E1A0C6BD03EFD28400050001 = {2051 fRef = E1A0C6C503EFD28400050001;2052 isa = PBXTextBookmark;2053 name = "MacErrors.h: 476";2054 rLen = 90;2055 rLoc = 27406;2056 rType = 0;2057 vrLen = 2270;2058 vrLoc = 26629;2059 };2060 E1A0C6BE03EFD28400050001 = {2061 fRef = E1A0C6C603EFD28400050001;2062 isa = PBXTextBookmark;2063 name = "CFBundle.h: 69";2064 rLen = 14;2065 rLoc = 2476;2066 rType = 0;2067 vrLen = 1603;2068 vrLoc = 1784;2069 };2070 E1A0C6BF03EFD28400050001 = {2071 fRef = E1A0C6C703EFD28400050001;2072 isa = PBXTextBookmark;2073 name = "CFBundle.h: 99";2074 rLen = 21;2075 rLoc = 3643;2076 rType = 0;2077 vrLen = 1781;2078 vrLoc = 464;2079 };2080 E1A0C6C003EFD28400050001 = {2081 fRef = E1A0C6C803EFD28400050001;2082 isa = PBXTextBookmark;2083 rLen = 1;2084 rLoc = 19;2085 rType = 1;2086 };2087 E1A0C6C103EFD28400050001 = {2088 fRef = E1A0C6C903EFD28400050001;2089 isa = PBXTextBookmark;2090 name = "CFURL.h: 67";2091 rLen = 39;2092 rLoc = 2911;2093 rType = 0;2094 vrLen = 2117;2095 vrLoc = 1928;2096 };2097 E1A0C6C203EFD28400050001 = {2098 fRef = E1A0C6CA03EFD28400050001;2099 isa = PBXTextBookmark;2100 rLen = 1;2101 rLoc = 108;2102 rType = 1;2103 };2104 E1A0C6C303EFD28400050001 = {2105 fRef = E1A0C6CB03EFD28400050001;2106 isa = PBXTextBookmark;2107 name = "CFBase.h: 129";2108 rLen = 17;2109 rLoc = 3403;2110 rType = 0;2111 vrLen = 1107;2112 vrLoc = 2900;2113 };2114 E1A0C6C403EFD28400050001 = {2115 isa = PBXFileReference;2116 name = MacErrors.h;2117 path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h;2118 refType = 0;2119 };2120 E1A0C6C503EFD28400050001 = {2121 isa = PBXFileReference;2122 name = MacErrors.h;2123 path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h;2124 refType = 0;2125 };2126 E1A0C6C603EFD28400050001 = {2127 isa = PBXFileReference;2128 name = CFBundle.h;2129 path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h;2130 refType = 0;2131 };2132 E1A0C6C703EFD28400050001 = {2133 isa = PBXFileReference;2134 name = CFBundle.h;2135 path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h;2136 refType = 0;2137 };2138 E1A0C6C803EFD28400050001 = {2139 isa = PBXFileReference;2140 name = CFURL.h;2141 path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h;2142 refType = 0;2143 };2144 E1A0C6C903EFD28400050001 = {2145 isa = PBXFileReference;2146 name = CFURL.h;2147 path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h;2148 refType = 0;2149 };2150 E1A0C6CA03EFD28400050001 = {2151 isa = PBXFileReference;2152 name = CFBase.h;2153 path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h;2154 refType = 0;2155 };2156 E1A0C6CB03EFD28400050001 = {2157 isa = PBXFileReference;2158 name = CFBase.h;2159 path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h;2160 refType = 0;2161 };2162 E1A0C6CC03EFD28400050001 = {2163 isa = PBXFileReference;2164 name = stdio.h;2165 path = /usr/include/stdio.h;2166 refType = 0;2167 };2168 E1A0C6CD03EFD28400050001 = {2169 isa = PBXFileReference;2170 name = stdio.h;2171 path = /usr/include/stdio.h;2172 refType = 0;2173 };2174 1320 } -
trunk/appswitch/appswitch.pbproj/project.pbxproj
r85 r91 196 196 children = ( 197 197 C6859E970290921104C91782, 198 E16C83CC03F7AF7B00050002, 198 199 ); 199 200 isa = PBXGroup; … … 212 213 files = ( 213 214 C6859E990290922B04C91782, 215 E16C83CD03F7AF7B00050002, 214 216 ); 215 217 isa = PBXCopyFilesBuildPhase; … … 232 234 //E13 233 235 //E14 236 E16C83CC03F7AF7B00050002 = { 237 fileEncoding = 4; 238 isa = PBXFileReference; 239 path = README; 240 refType = 4; 241 }; 242 E16C83CD03F7AF7B00050002 = { 243 fileRef = E16C83CC03F7AF7B00050002; 244 isa = PBXBuildFile; 245 settings = { 246 }; 247 }; 234 248 E1A0BD3203EFAD9E00050001 = { 235 249 fileEncoding = 30; -
trunk/appswitch/main.c
r85 r91 19 19 20 20 #include <unistd.h> 21 #include <sys/ioctl.h> 21 22 #include "CPS.h" 22 23 23 24 const char *APP_NAME; 24 25 25 #define VERSION "1.0 d1"26 #define VERSION "1.0b1" 26 27 27 28 struct { … … 32 33 char *path; 33 34 enum { 34 MATCH_UNKNOWN, MATCH_ CREATOR, MATCH_BUNDLE_ID, MATCH_NAME, MATCH_PID, MATCH_PATH35 MATCH_UNKNOWN, MATCH_FRONT, MATCH_CREATOR, MATCH_BUNDLE_ID, MATCH_NAME, MATCH_PID, MATCH_PATH, MATCH_ALL 35 36 } matchType; 37 enum { 38 APP_NONE, APP_SWITCH, APP_SHOW, APP_HIDE, APP_KILL, APP_LIST, APP_PRINT_PID 39 } appAction; 40 enum { 41 ACTION_NONE, ACTION_SHOW_ALL, ACTION_HIDE_OTHERS 42 } action; 43 enum { 44 FINAL_NONE, FINAL_SWITCH 45 } finalAction; 36 46 } OPTS = 37 47 { 38 kLSUnknownCreator, NULL, NULL, -1, NULL, MATCH_UNKNOWN 48 kLSUnknownCreator, NULL, NULL, -1, NULL, MATCH_UNKNOWN, APP_NONE, ACTION_NONE, FINAL_NONE 39 49 }; 40 50 … … 55 65 56 66 void usage() { 57 fprintf(stderr, "usage: %s [-c creator] [-i bundleID] [-a name] [-p pid] [path]\n" 67 fprintf(stderr, "usage: %s [-sShHkFlP] [-c creator] [-i bundleID] [-a name] [-p pid] [path]\n" 68 " -s show application, bring windows to front (do not switch)\n" 69 " -S show all applications\n" 70 " -h hide application\n" 71 " -H hide other applications\n" 72 " -k kill application\n" 73 " -l list applications\n" 74 " -P print application process ID\n" 75 " -F bring current application's windows to front\n" 58 76 " -c creator match application by four-character creator code ('ToyS')\n" 59 77 " -i bundle ID match application by bundle identifier (com.apple.scripteditor)\n" 60 78 " -p pid match application by process identifier [slower]\n" 61 " -a name match application by name\n", APP_NAME); 79 " -a name match application by name\n" 80 , APP_NAME); 62 81 fprintf(stderr, "appswitch "VERSION" (c) 2003 Nicholas Riley <http://web.sabi.net/nriley/software/>.\n" 63 82 "Please send bugs, suggestions, etc. to <appswitch@sabi.net>.\n"); … … 113 132 if (argc == 1) usage(); 114 133 115 const char *opts = "c:i:p:a:"; 116 117 ch = getopt(argc, argv, opts); 118 119 switch (ch) { 120 case 'p': 121 if (sscanf(optarg, "%d", &OPTS.pid) != 1 || OPTS.pid < 0) 122 errexit("invalid process identifier (argument of -p)"); 123 OPTS.matchType = MATCH_PID; 124 break; 125 case 'c': 126 if (strlen(optarg) != 4) errexit("creator (argument of -c) must be four characters long"); 127 OPTS.creator = *(OSTypePtr)optarg; 128 OPTS.matchType = MATCH_CREATOR; 129 break; 130 case 'i': 131 OPTS.bundleID = CFStringCreateWithCString(NULL, optarg, CFStringGetSystemEncoding()); 132 OPTS.matchType = MATCH_BUNDLE_ID; 133 break; 134 case 'a': 135 OPTS.name = strdup(optarg); 136 OPTS.matchType = MATCH_NAME; 137 break; 138 case -1: 139 break; 140 default: usage(); 141 } 142 143 if (getopt(argc, argv, opts) != -1) 144 errexit("choose only one of -c, -i, -u, -p, -a options"); 134 const char *opts = "c:i:p:a:sShHklPF"; 135 136 while ( (ch = getopt(argc, argv, opts)) != -1) { 137 switch (ch) { 138 case 'p': 139 if (OPTS.matchType != MATCH_UNKNOWN) errexit("choose only one of -c, -i, -p, -a options"); 140 if (sscanf(optarg, "%d", &OPTS.pid) != 1 || OPTS.pid < 0) 141 errexit("invalid process identifier (argument of -p)"); 142 OPTS.matchType = MATCH_PID; 143 break; 144 case 'c': 145 if (OPTS.matchType != MATCH_UNKNOWN) errexit("choose only one of -c, -i, -p, -a options"); 146 if (strlen(optarg) != 4) errexit("creator (argument of -c) must be four characters long"); 147 OPTS.creator = *(OSTypePtr)optarg; 148 OPTS.matchType = MATCH_CREATOR; 149 break; 150 case 'i': 151 if (OPTS.matchType != MATCH_UNKNOWN) errexit("choose only one of -c, -i, -p, -a options"); 152 OPTS.bundleID = CFStringCreateWithCString(NULL, optarg, CFStringGetSystemEncoding()); 153 OPTS.matchType = MATCH_BUNDLE_ID; 154 break; 155 case 'a': 156 if (OPTS.matchType != MATCH_UNKNOWN) errexit("choose only one of -c, -i, -p, -a options"); 157 OPTS.name = strdup(optarg); 158 OPTS.matchType = MATCH_NAME; 159 break; 160 case 's': 161 if (OPTS.appAction != APP_NONE) errexit("choose only one of -s, -h, -k, -l, -P options"); 162 OPTS.appAction = APP_SHOW; 163 break; 164 case 'h': 165 if (OPTS.appAction != APP_NONE) errexit("choose only one of -s, -h, -k, -l, -P options"); 166 OPTS.appAction = APP_HIDE; 167 break; 168 case 'k': 169 if (OPTS.appAction != APP_NONE) errexit("choose only one of -s, -h, -k, -l, -P options"); 170 OPTS.appAction = APP_KILL; 171 break; 172 case 'l': 173 if (OPTS.appAction != APP_NONE) errexit("choose only one of -s, -h, -k, -l, -P options"); 174 OPTS.appAction = APP_LIST; 175 break; 176 case 'P': 177 if (OPTS.appAction != APP_NONE) errexit("choose only one of -s, -h, -k, -l, -P options"); 178 OPTS.appAction = APP_PRINT_PID; 179 break; 180 case 'S': 181 if (OPTS.action != ACTION_NONE) errexit("choose -S, -H or neither option"); 182 OPTS.action = ACTION_SHOW_ALL; 183 break; 184 case 'H': 185 if (OPTS.action != ACTION_NONE) errexit("choose -S, -H or neither option"); 186 OPTS.action = ACTION_HIDE_OTHERS; 187 break; 188 case 'F': 189 if (OPTS.finalAction != FINAL_NONE) errexit("choose only one -F option"); 190 OPTS.finalAction = FINAL_SWITCH; 191 break; 192 default: usage(); 193 } 194 } 145 195 146 196 argc -= optind; … … 150 200 151 201 if (OPTS.matchType == MATCH_UNKNOWN) { 152 if (argc != 1) usage(); 153 OPTS.path = argv[0]; 154 OPTS.matchType = MATCH_PATH; 155 } 156 } 157 158 int main (int argc, char * const argv[]) { 159 OSStatus err; 160 161 APP_NAME = argv[0]; 162 getargs(argc, argv); 163 202 if (argc == 0) { 203 if (OPTS.appAction == APP_LIST) { 204 OPTS.matchType = MATCH_ALL; 205 } else if (OPTS.action != ACTION_NONE || OPTS.finalAction != FINAL_NONE) { 206 OPTS.matchType = MATCH_FRONT; 207 } else usage(); 208 } else if (argc == 1) { 209 OPTS.path = argv[0]; 210 OPTS.matchType = MATCH_PATH; 211 } else usage(); 212 } 213 214 if (OPTS.matchType != MATCH_FRONT && OPTS.appAction == APP_NONE) 215 OPTS.appAction = APP_SWITCH; 216 217 } 218 219 CPSProcessSerNum frontApplication() { 220 CPSProcessSerNum psn; 221 OSStatus err = CPSGetFrontProcess(&psn); 222 if (err != noErr) osstatusexit(err, "can't get frontmost process"); 223 #if DEBUG 224 fprintf(stderr, "front application PSN %ld.%ld\n", psn.hi, psn.lo); 225 #endif 226 return psn; 227 } 228 229 CPSProcessSerNum matchApplication(CPSProcessInfoRec *info) { 164 230 long pathMaxLength = pathconf("/", _PC_PATH_MAX); 165 231 long nameMaxLength = pathconf("/", _PC_NAME_MAX); … … 170 236 if (path == NULL || name == NULL) errexit("can't allocate memory for path or filename buffer"); 171 237 172 // need to establish connection with window server173 InitCursor(); 174 238 if (OPTS.matchType == MATCH_FRONT) return frontApplication(); 239 240 OSStatus err; 175 241 CPSProcessSerNum psn = { 176 242 kNoProcess, kNoProcess 177 243 }; 178 CPSProcessInfoRec info;179 244 int len; 245 char *format = NULL; 246 if (OPTS.appAction == APP_LIST) { 247 int termwidth = 80; 248 struct winsize ws; 249 char *banner = " PSN PID TYPE CREA NAME "; 250 // 12345678.0 12345 1234 1234 12345678901234567890 251 printf("%s PATH\n", banner); 252 if ((ioctl(STDOUT_FILENO, TIOCGWINSZ, (char *)&ws) != -1 || 253 ioctl(STDERR_FILENO, TIOCGWINSZ, (char *)&ws) != -1 || 254 ioctl(STDIN_FILENO, TIOCGWINSZ, (char *)&ws) != -1) || 255 ws.ws_col != 0) termwidth = ws.ws_col; 256 int pathlen = termwidth - strlen(banner) - 1; 257 asprintf(&format, "%%8ld.%%ld %%5ld %%c%%c%%c%%c %%c%%c%%c%%c %%-20.20s %%-%d.%ds\n", pathlen, pathlen); 258 } 259 180 260 while ( (err = CPSGetNextProcess(&psn)) == noErr) { 181 err = CPSGetProcessInfo(&psn, &info, path, pathMaxLength, &len, name, nameMaxLength);261 err = CPSGetProcessInfo(&psn, info, path, pathMaxLength, &len, name, nameMaxLength); 182 262 if (err != noErr) osstatusexit(err, "can't get information for process PSN %ld.%ld", psn.hi, psn.lo); 183 263 … … 185 265 fprintf(stderr, "%ld.%ld: %s : %s\n", psn.hi, psn.lo, name, path); 186 266 #endif 187 267 188 268 switch (OPTS.matchType) { 189 case MATCH_ UNKNOWN:190 break; 191 case MATCH_CREATOR: if (OPTS.creator != info .ExecFileCreator) continue;269 case MATCH_ALL: 270 break; 271 case MATCH_CREATOR: if (OPTS.creator != info->ExecFileCreator) continue; 192 272 break; 193 273 case MATCH_NAME: if (strcmp(name, OPTS.name) != 0) continue; 194 274 break; 195 case MATCH_PID: if (OPTS.pid != info .UnixPID) continue;275 case MATCH_PID: if (OPTS.pid != info->UnixPID) continue; 196 276 break; 197 277 case MATCH_PATH: if (strcmp(path, OPTS.path) != 0) continue; 198 278 break; 199 279 case MATCH_BUNDLE_ID: 200 {201 CFURLRef url = CFURLCreateFromFileSystemRepresentation(NULL, path, strlen(path), false);202 if (url == NULL) errexit("can't get bundle location for process '%s' (PSN %ld.%ld, pid %d)", name, psn.hi, psn.lo, info.UnixPID);203 CFBundleRef bundle = CFBundleCreate(NULL, url);204 if (bundle != NULL) {205 CFStringRef bundleID = CFBundleGetIdentifier(bundle);280 { 281 CFURLRef url = CFURLCreateFromFileSystemRepresentation(NULL, path, strlen(path), false); 282 if (url == NULL) errexit("can't get bundle location for process '%s' (PSN %ld.%ld, pid %ld)", name, psn.hi, psn.lo, info->UnixPID); 283 CFBundleRef bundle = CFBundleCreate(NULL, url); 284 if (bundle != NULL) { 285 CFStringRef bundleID = CFBundleGetIdentifier(bundle); 206 286 #if DEBUG 207 CFShow(bundleID);287 CFShow(bundleID); 208 288 #endif 209 if (bundleID != NULL && CFStringCompare(OPTS.bundleID, bundleID, kCFCompareCaseInsensitive) == kCFCompareEqualTo)210 break;211 }212 CFRelease(url);213 continue;214 }289 if (bundleID != NULL && CFStringCompare(OPTS.bundleID, bundleID, kCFCompareCaseInsensitive) == kCFCompareEqualTo) 290 break; 291 } 292 CFRelease(url); 293 continue; 294 } 215 295 default: 216 errexit(" unknownmatch type");296 errexit("internal error: invalid match type"); 217 297 } 218 err = CPSSetFrontProcess(&psn); 219 if (err != noErr) osstatusexit(err, "can't set front process"); 220 exit(0); 298 if (OPTS.appAction == APP_LIST) { 299 char *type = (char *)&(info->ExecFileType), *crea = (char *)&(info->ExecFileCreator); 300 printf(format, psn.hi, psn.lo, info->UnixPID, 301 type[0], type[1], type[2], type[3], 302 crea[0], crea[1], crea[2], crea[3], 303 name, path); 304 continue; 305 } 306 return psn; 221 307 } 222 308 if (err != procNotFound) osstatusexit(err, "can't get next process"); 223 309 310 if (OPTS.appAction == APP_LIST) return frontApplication(); 311 224 312 errexit("can't find matching process"); 225 return 0; 226 } 313 return psn; 314 } 315 316 int main (int argc, char * const argv[]) { 317 OSStatus err = noErr; 318 319 APP_NAME = argv[0]; 320 getargs(argc, argv); 321 322 // need to establish connection with window server 323 InitCursor(); 324 325 CPSProcessInfoRec info; 326 CPSProcessSerNum psn = matchApplication(&info); 327 328 const char *verb; 329 switch (OPTS.appAction) { 330 case APP_NONE: break; 331 case APP_LIST: break; // already handled in matchApplication 332 case APP_SWITCH: err = CPSSetFrontProcess(&psn); verb = "set front"; break; 333 case APP_SHOW: err = CPSPostShowReq(&psn); verb = "show"; break; 334 case APP_HIDE: err = CPSPostHideReq(&psn); verb = "hide"; break; 335 case APP_KILL: err = CPSPostKillRequest(&psn, kNilOptions); verb = "kill"; break; 336 case APP_PRINT_PID: 337 if (info.UnixPID <= 0) errexit("can't get process ID"); 338 printf("%lu\n", info.UnixPID); // pid_t is signed, but this field isn't 339 break; 340 default: 341 errexit("internal error: invalid application action"); 342 } 343 if (err != noErr) osstatusexit(err, "can't %s process", verb); 344 345 switch (OPTS.action) { 346 case ACTION_NONE: break; 347 case ACTION_SHOW_ALL: err = CPSPostShowAllReq(&psn); verb = "show all"; break; 348 case ACTION_HIDE_OTHERS: err = CPSPostHideMostReq(&psn); verb = "hide other"; break; 349 default: 350 errexit("internal error: invalid action"); 351 } 352 if (err != noErr) osstatusexit(err, "can't %s processes", verb); 353 354 switch (OPTS.finalAction) { 355 case FINAL_NONE: break; 356 case FINAL_SWITCH: 357 psn = frontApplication(); 358 #if DEBUG 359 fprintf(stderr, "posting show request for %ld.%ld\n", psn.hi, psn.lo); 360 #endif 361 if (OPTS.action != ACTION_NONE) usleep(750000); // XXX 362 err = CPSPostShowReq(&psn) || CPSSetFrontProcess(&psn); 363 verb = "bring current application's windows to the front"; 364 break; 365 default: 366 errexit("internal error: invalid final action"); 367 } 368 if (err != noErr) osstatusexit(err, "can't %s", verb); 369 370 exit(0); 371 }
Note:
See TracChangeset
for help on using the changeset viewer.