Changeset 91 for trunk/appswitch


Ignore:
Timestamp:
02/10/03 20:08:11 (22 years ago)
Author:
Nicholas Riley
Message:

appswitch 1.0b1 code changes

Location:
trunk/appswitch
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/appswitch

    • Property svn:ignore set to
      build
      *~
      .DS_Store
  • trunk/appswitch/CPS.h

    r85 r91  
    7878        UInt32                  ExecFileType;
    7979        UInt32                  ExecFileCreator;
    80         UInt32                  UnixPID;
     80        SInt32                  UnixPID; // njr changed from UInt32
    8181};
    8282
  • 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
    1816.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:
     17controls the ordering and visibility of Mac OS X application windows.
    2718.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
     19can also list or kill running applications.
     20.Ss Matching options
     21Matching identifies one or more applications to manipulate.
     22.Bl -tag -width -indent
     23.It Fl c Ar creator
     24Match by creator (a four-character code, also known as a signature).
     25.It Fl i Ar bundle ID
     26Match by bundle identifier, usually consisting of the reversed dot
     27(.)-separated components of the application developer's Internet domain
     28name, followed by the application name.  For example, the Finder's
     29bundle identifier is
     30.Ar com.apple.Finder .
     31Bundle identifiers are not case-sensitive.
     32.It Fl p Ar pid
     33Match by process identifier, a positive number.
     34.It Ar path
     35Match by bundle path.  For packaged applications, this is the package
     36directory whose name typically has the .app extension, for example
     37.Ar /Applications/TextEdit.app
     38for the default installation location of TextEdit.  For non-packaged
     39applications, this is the path to the executable itself.
     40.El
     41.Ss Application actions
     42These actions apply to the matched application. If multiple
     43applications match the supplied criteria, only the first matching
     44application is acted upon.  The list option
     45.Fl l
     46displays all matching applications.
     47.Bl -tag -width -indent
     48.It Fl s
     49Show the application, making the application's windows frontmost. Do
     50not switch to the application.
     51.It Fl h
     52Hide the application's windows.
     53.It Fl k
     54Kill (force quit) the application.
     55.It Fl l
     56List 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
     60The process serial number of the application.  Process serial numbers
     61are unique identifiers among both native Mac OS X and Classic
     62applications.
     63.It PID
     64The process identifier, a positive number which uniquely identifies
     65native Mac OS X processes, usable with the
     66.Fl p
     67matching option.  Because all Classic applications run inside
     68TruBlueEnvironment, a single Mac OS X process, their process
     69identifiers appear as -1.
     70.It TYPE
     71The four-character code identifying the application's type,
     72usually 'APPL' for most applications or 'FNDR' for the Finder.
     73Classic applications include additional types such as 'appe'
     74and 'APPC' for applications which perform the functions of extensions
     75and control panels, respectively.
     76.It CREA
     77The four-character code identifying the application's creator, usable with the
     78.Fl c
     79matching option. Some Mac OS X applications have no creator, appearing
     80as '????'; for these applications you must use the bundle identifier,
     81name or path as match criteria.
     82.It NAME
     83The user-visible application name, usable with the
     84.Fl a
     85matching option. This field is truncated to 20 characters; the
     86remainder of longer application names is not displayed.
     87.It PATH
     88The path to the application bundle, usable with the
     89.Ar path
     90matching option. This field is truncated to the window width, or to 80
     91characters if the window width cannot be determined.
     92.El
     93.It Fl p
     94Print the application's process identifier (PID), a positive number
     95and unique identifier for all applications except Classic
     96applications.
     97.El
     98.Ss Actions
     99These actions affect all applications currently running.
     100.Bl -tag -width -indent
     101.It Fl S
     102Show all applications, layering the windows of initially hidden
     103applications on top.
     104.It Fl H
     105Hide windows of all applications other than the matched application,
     106or the frontmost application if no application has been matched.
     107.It Fl F
     108Order the current application's windows to the front.
     109.El
    67110.Sh SEE ALSO
    68111.\" List links in ascending order by section, alphabetically within a section.
    69112.\" 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
     119The
     120.Fl F
     121option may be unreliable if issued immediately after another show or
     122hide command; try inserting a
     123.Xr sleep 1
     124command before it.
     125.Sh AUTHORS
     126.An "Nicholas Riley" Aq appswitch@sabi.net
    78127.\" .Sh HISTORY           \" Document history if command behaves in a unique manner
    79128
  • trunk/appswitch/appswitch.pbproj/nicholas.pbxuser

    r85 r91  
    1414                );
    1515                perUserDictionary = {
    16                         PBXPerProjectTemplateStateSaveDate = 66039068;
    17                         "PBXTemplateGeometry-F5CA7EC9015C08ED0DCA290F" = {
    18                                 ContentSize = "{665, 594}";
     16                        PBXPerProjectTemplateStateSaveDate = 66554412;
     17                        "PBXTemplateGeometry-F5314676015831810DCA290F" = {
     18                                ContentSize = "{618, 257}";
    1919                                LeftSlideOut = {
    2020                                        Collapsed = NO;
    21                                         Frame = "{{0, 0}, {665, 594}}";
     21                                        Frame = "{{0, 23}, {618, 234}}";
    2222                                        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 = {
    25279                                                Collapsed = NO;
    26                                                 Frame = "{{0, 0}, {665, 594}}";
     280                                                Frame = "{{0, 0}, {796, 742}}";
    27281                                                Split0 = {
    28                                                         Frame = "{{0, 301}, {665, 293}}";
     282                                                        Frame = "{{0, 0}, {796, 742}}";
    29283                                                };
    30284                                                SplitCount = 1;
     
    75329                                                };
    76330                                                Tab3 = {
    77                                                         BuildMessageFrame = "{{0, 0}, {667, 265}}";
    78                                                         BuildTranscriptFrame = "{{0, 274}, {667, 2}}";
     331                                                        BuildMessageFrame = "{{0, 0}, {614, 262}}";
     332                                                        BuildTranscriptFrame = "{{0, 271}, {614, 2}}";
    79333                                                        BuildTranscriptFrameExpanded = YES;
    80                                                         Frame = "{{0, 0}, {665, 298}}";
     334                                                        Frame = "{{0, 0}, {612, 295}}";
    81335                                                };
    82336                                                Tab4 = {
    83                                                         Frame = "{{0, 0}, {665, 295}}";
     337                                                        Frame = "{{0, 0}, {612, 295}}";
    84338                                                };
    85339                                                TabCount = 5;
     
    139393                                NavBarShownByDefault = YES;
    140394                                StatusViewVisible = NO;
    141                                 Template = F5CA7EC9015C08ED0DCA290F;
     395                                Template = F5CA7ECB015C094F0DCA290F;
    142396                                ToolbarVisible = NO;
    143                                 WindowLocation = "{385, 127}";
     397                                WindowLocation = "{687, 68}";
    144398                        };
    145                         "PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = {
    146                                 ContentSize = "{668, 621}";
     399                        "PBXTemplateGeometry-F5E465990156DFB90DCA290F" = {
     400                                ContentSize = "{352, 553}";
    147401                                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}}";
    150406                                        Split0 = {
    151407                                                Collapsed = NO;
    152                                                 Frame = "{{0, 0}, {668, 621}}";
     408                                                Frame = "{{1e+06, 1e+06}, {0, 530}}";
    153409                                                Split0 = {
    154                                                         Frame = "{{0, 0}, {668, 621}}";
     410                                                        Frame = "{{0, 0}, {0, 530}}";
    155411                                                };
    156412                                                SplitCount = 1;
     
    214470                                        SplitCount = 1;
    215471                                        Tab0 = {
    216                                                 Frame = "{{0, 0}, {313, 531}}";
     472                                                Frame = "{{0, 0}, {328, 530}}";
    217473                                                GroupTreeTableConfiguration = (
    218474                                                        TargetStatusColumn,
    219475                                                        18,
    220476                                                        MainColumn,
    221                                                         280,
     477                                                        295,
    222478                                                );
    223479                                        };
    224480                                        Tab1 = {
    225                                                 ClassesFrame = "{{0, 0}, {280, 398}}";
     481                                                ClassesFrame = "{{0, 0}, {343, 348}}";
    226482                                                ClassesTreeTableConfiguration = (
    227483                                                        PBXBookColumnIdentifier,
    228484                                                        20,
    229485                                                        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}}";
    234490                                                MembersTreeTableConfiguration = (
    235491                                                        PBXBookColumnIdentifier,
    236492                                                        20,
    237493                                                        PBXMethodColumnIdentifier,
    238                                                         236,
     494                                                        299,
    239495                                                );
    240496                                        };
    241497                                        Tab2 = {
    242                                                 Frame = "{{0, 0}, {200, 100}}";
     498                                                Frame = "{{0, 0}, {319, 576}}";
    243499                                        };
    244500                                        Tab3 = {
    245                                                 Frame = "{{0, 0}, {200, 557}}";
     501                                                Frame = "{{0, 0}, {341, 578}}";
    246502                                                TargetTableConfiguration = (
    247503                                                        ActiveObject,
    248504                                                        16,
    249505                                                        ObjectNames,
    250                                                         202.296,
     506                                                        308.296,
    251507                                                );
    252508                                        };
     
    254510                                                BreakpointsTreeTableConfiguration = (
    255511                                                        breakpointColumn,
    256                                                         197,
     512                                                        266,
    257513                                                        enabledColumn,
    258514                                                        31,
    259515                                                );
    260                                                 Frame = "{{0, 0}, {250, 100}}";
     516                                                Frame = "{{0, 0}, {319, 576}}";
    261517                                        };
    262518                                        TabCount = 5;
    263                                         TabsVisible = NO;
     519                                        TabsVisible = YES;
    264520                                };
    265521                                NavBarShownByDefault = YES;
    266                                 StatusViewVisible = NO;
    267                                 Template = F5CA7ECB015C094F0DCA290F;
    268                                 ToolbarVisible = NO;
    269                                 WindowLocation = "{153, -158}";
     522                                StatusViewVisible = YES;
     523                                Template = F5E465990156DFB90DCA290F;
     524                                ToolbarVisible = YES;
     525                                WindowLocation = "{19, 217}";
    270526                        };
    271527                        PBXWorkspaceContents = (
     
    274530                                                Split0 = {
    275531                                                        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                                                                };
    276567                                                                NavCount = 1;
    277568                                                                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}}";
    321570                                                                        NavBarVisible = YES;
    322571                                                                };
     
    384633                                        };
    385634                                },
    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                                 },
    674635                        );
    675636                        PBXWorkspaceGeometries = (
    676637                                {
    677                                         ContentSize = "{352, 553}";
     638                                        ContentSize = "{1018, 656}";
    678639                                        LeftSlideOut = {
    679640                                                ActiveTab = 0;
    680641                                                ActiveTabName = PBXGroupTreeModule;
    681                                                 Collapsed = YES;
    682                                                 Frame = "{{0, 23}, {352, 530}}";
     642                                                Collapsed = NO;
     643                                                Frame = "{{0, 23}, {1018, 633}}";
    683644                                                Split0 = {
    684645                                                        Collapsed = NO;
    685                                                         Frame = "{{1e+06, 1e+06}, {0, 530}}";
     646                                                        Frame = "{{289, 0}, {729, 633}}";
    686647                                                        Split0 = {
    687                                                                 Frame = "{{0, 0}, {0, 530}}";
     648                                                                Frame = "{{0, 0}, {729, 633}}";
    688649                                                        };
    689650                                                        SplitCount = 1;
    690651                                                        Tab0 = {
    691                                                                 Frame = "{{0, 0}, {484, 208}}";
     652                                                                Frame = "{{0, 0}, {681, 289}}";
    692653                                                        };
    693654                                                        Tab1 = {
    694655                                                                Debugger = {
    695656                                                                        Collapsed = NO;
    696                                                                         Frame = "{{0, 0}, {664, 208}}";
     657                                                                        Frame = "{{0, 0}, {681, 150}}";
    697658                                                                        Split0 = {
    698                                                                                 Frame = "{{0, 24}, {664, 184}}";
     659                                                                                Frame = "{{0, 24}, {681, 126}}";
    699660                                                                                Split0 = {
    700                                                                                         Frame = "{{0, 0}, {325, 184}}";
     661                                                                                        Frame = "{{0, 0}, {333, 126}}";
    701662                                                                                };
    702663                                                                                Split1 = {
     
    707668                                                                                                85,
    708669                                                                                                Summary,
    709                                                                                                 96.123,
     670                                                                                                105.123,
    710671                                                                                        );
    711                                                                                         Frame = "{{334, 0}, {330, 184}}";
     672                                                                                        Frame = "{{342, 0}, {339, 126}}";
    712673                                                                                };
    713674                                                                                SplitCount = 2;
     
    723684                                                                        TabsVisible = YES;
    724685                                                                };
    725                                                                 Frame = "{{0, 0}, {664, 208}}";
     686                                                                Frame = "{{0, 0}, {681, 120}}";
    726687                                                                LauncherConfigVersion = 7;
    727688                                                        };
    728689                                                        Tab2 = {
    729                                                                 Frame = "{{0, 0}, {664, 50}}";
     690                                                                Frame = "{{0, 0}, {681, 234}}";
    730691                                                                LauncherConfigVersion = 3;
    731692                                                                Runner = {
    732                                                                         Frame = "{{0, 0}, {664, 50}}";
     693                                                                        Frame = "{{0, 0}, {681, 234}}";
    733694                                                                };
    734695                                                        };
    735696                                                        Tab3 = {
    736                                                                 BuildMessageFrame = "{{0, 0}, {614, 262}}";
    737                                                                 BuildTranscriptFrame = "{{0, 271}, {614, 2}}";
     697                                                                BuildMessageFrame = "{{0, 0}, {683, 205}}";
     698                                                                BuildTranscriptFrame = "{{0, 214}, {683, 2}}";
    738699                                                                BuildTranscriptFrameExpanded = YES;
    739                                                                 Frame = "{{0, 0}, {612, 295}}";
     700                                                                Frame = "{{0, 0}, {681, 238}}";
    740701                                                        };
    741702                                                        Tab4 = {
     
    747708                                                SplitCount = 1;
    748709                                                Tab0 = {
    749                                                         Frame = "{{0, 0}, {328, 530}}";
     710                                                        Frame = "{{0, 0}, {265, 633}}";
    750711                                                        GroupTreeTableConfiguration = (
    751712                                                                TargetStatusColumn,
    752713                                                                18,
    753714                                                                MainColumn,
    754                                                                 295,
     715                                                                232,
    755716                                                        );
    756717                                                };
    757718                                                Tab1 = {
    758                                                         ClassesFrame = "{{0, 0}, {343, 348}}";
     719                                                        ClassesFrame = "{{0, 0}, {250, 333}}";
    759720                                                        ClassesTreeTableConfiguration = (
    760721                                                                PBXBookColumnIdentifier,
    761722                                                                20,
    762723                                                                PBXClassColumnIdentifier,
    763                                                                 300,
     724                                                                207,
    764725                                                        );
    765                                                         Frame = "{{0, 0}, {341, 578}}";
    766                                                         MembersFrame = "{{0, 357}, {343, 221}}";
     726                                                        Frame = "{{0, 0}, {248, 554}}";
     727                                                        MembersFrame = "{{0, 342}, {250, 212}}";
    767728                                                        MembersTreeTableConfiguration = (
    768729                                                                PBXBookColumnIdentifier,
    769730                                                                20,
    770731                                                                PBXMethodColumnIdentifier,
    771                                                                 299,
     732                                                                206,
    772733                                                        );
    773734                                                };
    774735                                                Tab2 = {
    775                                                         Frame = "{{0, 0}, {319, 576}}";
     736                                                        Frame = "{{0, 0}, {217, 554}}";
    776737                                                };
    777738                                                Tab3 = {
    778                                                         Frame = "{{0, 0}, {341, 578}}";
     739                                                        Frame = "{{0, 0}, {239, 554}}";
    779740                                                        TargetTableConfiguration = (
    780741                                                                ActiveObject,
    781742                                                                16,
    782743                                                                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,
    910745                                                        );
    911746                                                };
     
    917752                                                                31,
    918753                                                        );
    919                                                         Frame = "{{0, 0}, {250, 100}}";
     754                                                        Frame = "{{0, 0}, {250, 554}}";
    920755                                                };
    921756                                                TabCount = 5;
    922                                                 TabsVisible = NO;
     757                                                TabsVisible = YES;
    923758                                        };
    924759                                        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}";
    929764                                },
    930765                                {
     
    1056891                                        WindowLocation = "{819, 244}";
    1057892                                },
    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                                 },
    1942893                        );
    1943                         PBXWorkspaceStateSaveDate = 66039068;
     894                        PBXWorkspaceStateSaveDate = 66554412;
    1944895                };
    1945896                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;
    1960926                };
    1961927                projectwideBuildSettings = {
     
    1969935                        E1A0BD2C03EFAD1C00050001,
    1970936                );
     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;
    19711299        };
    19721300        E1A0BD2C03EFAD1C00050001 = {
     
    19901318                );
    19911319        };
    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         };
    21741320}
  • trunk/appswitch/appswitch.pbproj/project.pbxproj

    r85 r91  
    196196                        children = (
    197197                                C6859E970290921104C91782,
     198                                E16C83CC03F7AF7B00050002,
    198199                        );
    199200                        isa = PBXGroup;
     
    212213                        files = (
    213214                                C6859E990290922B04C91782,
     215                                E16C83CD03F7AF7B00050002,
    214216                        );
    215217                        isa = PBXCopyFilesBuildPhase;
     
    232234//E13
    233235//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                };
    234248                E1A0BD3203EFAD9E00050001 = {
    235249                        fileEncoding = 30;
  • trunk/appswitch/main.c

    r85 r91  
    1919
    2020#include <unistd.h>
     21#include <sys/ioctl.h>
    2122#include "CPS.h"
    2223
    2324const char *APP_NAME;
    2425
    25 #define VERSION "1.0d1"
     26#define VERSION "1.0b1"
    2627
    2728struct {
     
    3233    char *path;
    3334    enum {
    34         MATCH_UNKNOWN, MATCH_CREATOR, MATCH_BUNDLE_ID, MATCH_NAME, MATCH_PID, MATCH_PATH
     35        MATCH_UNKNOWN, MATCH_FRONT, MATCH_CREATOR, MATCH_BUNDLE_ID, MATCH_NAME, MATCH_PID, MATCH_PATH, MATCH_ALL
    3536    } 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;
    3646} OPTS =
    3747{
    38     kLSUnknownCreator, NULL, NULL, -1, NULL, MATCH_UNKNOWN
     48    kLSUnknownCreator, NULL, NULL, -1, NULL, MATCH_UNKNOWN, APP_NONE, ACTION_NONE, FINAL_NONE
    3949};
    4050
     
    5565
    5666void 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"
    5876            "  -c creator    match application by four-character creator code ('ToyS')\n"
    5977            "  -i bundle ID  match application by bundle identifier (com.apple.scripteditor)\n"
    6078            "  -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);
    6281    fprintf(stderr, "appswitch "VERSION" (c) 2003 Nicholas Riley <http://web.sabi.net/nriley/software/>.\n"
    6382            "Please send bugs, suggestions, etc. to <appswitch@sabi.net>.\n");
     
    113132    if (argc == 1) usage();
    114133
    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    }
    145195
    146196    argc -= optind;
     
    150200
    151201    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
     219CPSProcessSerNum 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
     229CPSProcessSerNum matchApplication(CPSProcessInfoRec *info) {
    164230    long pathMaxLength = pathconf("/", _PC_PATH_MAX);
    165231    long nameMaxLength = pathconf("/", _PC_NAME_MAX);
     
    170236    if (path == NULL || name == NULL) errexit("can't allocate memory for path or filename buffer");
    171237
    172     // need to establish connection with window server
    173     InitCursor();
    174    
     238    if (OPTS.matchType == MATCH_FRONT) return frontApplication();
     239
     240    OSStatus err;
    175241    CPSProcessSerNum psn = {
    176242        kNoProcess, kNoProcess
    177243    };
    178     CPSProcessInfoRec info;
    179244    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   
    180260    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);
    182262        if (err != noErr) osstatusexit(err, "can't get information for process PSN %ld.%ld", psn.hi, psn.lo);
    183263
     
    185265        fprintf(stderr, "%ld.%ld: %s : %s\n", psn.hi, psn.lo, name, path);
    186266#endif
    187        
     267
    188268        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;
    192272                break;
    193273            case MATCH_NAME: if (strcmp(name, OPTS.name) != 0) continue;
    194274                break;
    195             case MATCH_PID: if (OPTS.pid != info.UnixPID) continue;
     275            case MATCH_PID: if (OPTS.pid != info->UnixPID) continue;
    196276                break;
    197277            case MATCH_PATH: if (strcmp(path, OPTS.path) != 0) continue;
    198278                break;
    199279            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);
    206286#if DEBUG
    207                     CFShow(bundleID);
     287                       CFShow(bundleID);
    208288#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               }
    215295            default:
    216                 errexit("unknown match type");
     296                errexit("internal error: invalid match type");
    217297        }
    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;
    221307    }
    222308    if (err != procNotFound) osstatusexit(err, "can't get next process");
    223309
     310    if (OPTS.appAction == APP_LIST) return frontApplication();
     311
    224312    errexit("can't find matching process");
    225     return 0;
    226 }
     313    return psn;
     314}
     315
     316int 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.