Changeset 1073

Show
Ignore:
Timestamp:
03/27/04 02:32:03 (5 years ago)
Author:
morris
Message:

add dynamic table view column selection, this patch modifies the following:

- creates a new informal protocol that establishes whether a window controller handles view options
- create additions to NSTableView that loads and saves columns dynamically
- add a localizable string table for dynamic column headers
- make main menu, chat user list context menu use NSMenuValidation instead of self-rolled code

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/English.lproj/MainMenu.nib/classes.nib

    r944 r1073  
    4848                transfers = id;  
    4949                useSelectionForFind = id;  
     50                viewOptions = id;  
    5051            };  
    5152            CLASS = WCMain;  
     
    6162                "_connectionMenu" = NSMenu;  
    6263                "_consoleMenuItem" = NSMenuItem;  
     64                "_customizeToolbarMenuItem" = NSMenuItem;  
    6365                "_deleteMenuItem" = NSMenuItem;  
    6466                "_disconnectMenuItem" = NSMenuItem;  
     
    7880                "_searchMenuItem" = NSMenuItem;  
    7981                "_serverInfoMenuItem" = NSMenuItem;  
     82                "_showToolbarMenuItem" = NSMenuItem;  
    8083                "_transfersMenuItem" = NSMenuItem;  
     84                "_viewMenu" = NSMenu;  
     85                "_viewOptionsMenuItem" = NSMenuItem;  
    8186            };  
    8287            SUPERCLASS = NSWindowController;  
  • WiredClient/trunk/English.lproj/MainMenu.nib/info.nib

    r969 r1073  
    44<dict> 
    55        <key>IBDocumentLocation</key> 
    6         <string>57 158 412 357 0 0 1280 1002 </string> 
     6        <string>781 189 412 357 0 0 1280 1002 </string> 
    77        <key>IBEditorPositions</key> 
    88        <dict> 
    99                <key>29</key> 
    10                 <string>375 492 477 44 0 0 1280 1002 </string> 
     10                <string>515 415 477 44 0 0 1280 1002 </string> 
    1111        </dict> 
    1212        <key>IBFramework Version</key> 
     
    1616                <integer>217</integer> 
    1717        </array> 
     18        <key>IBOpenObjects</key> 
     19        <array> 
     20                <integer>29</integer> 
     21        </array> 
    1822        <key>IBSystem Version</key> 
    19         <string>7D24</string> 
     23        <string>7F44</string> 
    2024</dict> 
    2125</plist> 
  • WiredClient/trunk/English.lproj/PrivateChat.nib/classes.nib

    r1040 r1073  
    1212                "_chatOutputTextView" = WCURLTextView;  
    1313                "_chatSplitView" = WCSplitView;  
     14                "_getInfoMenuItem" = NSMenuItem;  
     15                "_ignoreMenuItem" = NSMenuItem;  
    1416                "_infoButton" = NSButton;  
    1517                "_nickTableColumn" = NSTableColumn;  
    1618                "_privateMessageButton" = NSButton;  
     19                "_sendPrivateMessageMenuItem" = NSMenuItem;  
    1720                "_userCountTextField" = NSTextField;  
     21                "_userListMenu" = NSMenu;  
    1822                "_userListSplitView" = WCSplitView;  
    1923                "_userListTableView" = WCTypeAheadTableView;  
  • WiredClient/trunk/English.lproj/PrivateChat.nib/info.nib

    r1040 r1073  
    44<dict> 
    55        <key>IBDocumentLocation</key> 
    6         <string>683 219 403 412 0 0 1280 1002 </string> 
     6        <string>464 115 403 412 0 0 1280 1002 </string> 
    77        <key>IBEditorPositions</key> 
    88        <dict> 
    99                <key>196</key> 
    10                 <string>749 380 184 99 0 0 1280 1002 </string> 
     10                <string>861 317 184 99 0 0 1280 1002 </string> 
    1111        </dict> 
    1212        <key>IBFramework Version</key> 
     
    1616                <integer>48</integer> 
    1717        </array> 
     18        <key>IBOpenObjects</key> 
     19        <array> 
     20                <integer>196</integer> 
     21        </array> 
    1822        <key>IBSystem Version</key> 
    1923        <string>7F44</string> 
  • WiredClient/trunk/English.lproj/PublicChat.nib/classes.nib

    r1046 r1073  
    1212                "_chatOutputTextView" = WCURLTextView;  
    1313                "_chatSplitView" = WCSplitView;  
     14                "_getInfoMenuItem" = NSMenuItem;  
     15                "_ignoreMenuItem" = NSMenuItem;  
    1416                "_infoButton" = NSButton;  
    1517                "_nickTableColumn" = NSTableColumn;  
    1618                "_privateMessageButton" = NSButton;  
     19                "_sendPrivateMessageMenuItem" = NSMenuItem;  
    1720                "_userCountTextField" = NSTextField;  
     21                "_userListMenu" = NSMenu;  
    1822                "_userListSplitView" = WCSplitView;  
    1923                "_userListTableView" = WCTypeAheadTableView;  
     
    2832            OUTLETS = { 
    2933                "_banButton" = NSButton;  
     34                "_banMenuItem" = NSMenuItem;  
    3035                "_banMessagePanel" = NSPanel;  
    3136                "_banMessageTextField" = NSTextField;  
    3237                "_kickButton" = NSButton;  
     38                "_kickMenuItem" = NSMenuItem;  
    3339                "_kickMessagePanel" = NSPanel;  
    3440                "_kickMessageTextField" = NSTextField;  
    3541                "_privateChatButton" = NSButton;  
     42                "_startPrivateChatMenuItem" = NSMenuItem;  
    3643            };  
    3744            SUPERCLASS = WCChat;  
  • WiredClient/trunk/English.lproj/PublicChat.nib/info.nib

    r1046 r1073  
    44<dict> 
    55        <key>IBDocumentLocation</key> 
    6         <string>621 183 401 359 0 0 1280 1002 </string> 
     6        <string>342 74 401 359 0 0 1280 1002 </string> 
    77        <key>IBEditorPositions</key> 
    88        <dict> 
    99                <key>105</key> 
    10                 <string>737 43 184 168 0 0 1280 1002 </string> 
     10                <string>831 131 184 168 0 0 1280 1002 </string> 
    1111        </dict> 
    1212        <key>IBFramework Version</key> 
  • WiredClient/trunk/English.lproj/Trackers.nib/classes.nib

    r1049 r1073  
    33        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },  
    44        { 
    5             ACTIONS = {search = id; };  
     5            ACTIONS = {cancel = id; ok = id; search = id; };  
    66            CLASS = WCTrackers;  
    77            LANGUAGE = ObjC;  
    88            OUTLETS = { 
    9                 "_descriptionTableColumn" = NSTableColumn;  
    10                 "_downloadTableColumn" = NSTableColumn;  
    11                 "_filesTableColumn" = NSTableColumn;  
    12                 "_guestTableColumn" = NSTableColumn;  
    13                 "_nameTableColumn" = NSTableColumn;  
    149                "_progressIndicator" = NSProgressIndicator;  
    1510                "_searchTextField" = NSTextField;  
    16                 "_sizeTableColumn" = NSTableColumn;  
    17                 "_speedTableColumn" = NSTableColumn;  
    1811                "_statusTextField" = NSTextField;  
    1912                "_trackersOutlineView" = NSOutlineView;  
    20                 "_usersTableColumn" = NSTableColumn;  
     13                "_viewOptionsPanel" = NSPanel;  
    2114            };  
    2215            SUPERCLASS = WCWindowController;  
  • WiredClient/trunk/English.lproj/Trackers.nib/info.nib

    r1051 r1073  
    44<dict> 
    55        <key>IBDocumentLocation</key> 
    6         <string>428 99 397 343 0 0 1280 1002 </string> 
     6        <string>578 50 397 343 0 0 1280 1002 </string> 
    77        <key>IBFramework Version</key> 
    88        <string>349.0</string> 
     9        <key>IBOpenObjects</key> 
     10        <array> 
     11                <integer>5</integer> 
     12        </array> 
    913        <key>IBSystem Version</key> 
    1014        <string>7F44</string> 
  • WiredClient/trunk/WCChat.h

    r1039 r1073  
    1 /* $Id: WCChat.h,v 1.4 2004/03/18 22:06:00 morris Exp $ */ 
     1/* $Id: WCChat.h,v 1.5 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    6060        IBOutlet NSTableColumn                  *_nickTableColumn; 
    6161         
     62        IBOutlet NSMenu                                 *_userListMenu; 
     63        IBOutlet NSMenuItem                             *_sendPrivateMessageMenuItem; 
     64        IBOutlet NSMenuItem                             *_getInfoMenuItem; 
     65        IBOutlet NSMenuItem                             *_ignoreMenuItem; 
     66         
    6267        NSMutableArray                                  *_commandHistory; 
    6368        unsigned int                                    _currentCommand; 
  • WiredClient/trunk/WCChat.m

    r1062 r1073  
    1 /* $Id: WCChat.m,v 1.19 2004/03/25 21:18:25 morris Exp $ */ 
     1/* $Id: WCChat.m,v 1.20 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    15151515- (void)tableViewSelectionDidChange:(NSNotification *)notification { 
    15161516        [self updateButtons]; 
    1517         [WCSharedMain updateMenus]; 
    15181517} 
    15191518 
  • WiredClient/trunk/WCFiles.m

    r1048 r1073  
    1 /* $Id: WCFiles.m,v 1.6 2004/03/24 21:38:21 morris Exp $ */ 
     1/* $Id: WCFiles.m,v 1.7 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    450450        [self updateButtons]; 
    451451         
    452         // --- update menus 
    453         [WCSharedMain updateMenus]; 
    454          
    455452        // --- we are now loading 
    456453        [_statusTextField setStringValue:@""]; 
     
    905902- (void)tableViewSelectionDidChange:(NSNotification *)notification { 
    906903        [self updateButtons]; 
    907         [WCSharedMain updateMenus]; 
    908904} 
    909905 
  • WiredClient/trunk/WCMain.h

    r1007 r1073  
    1 /* $Id: WCMain.h,v 1.3 2004/03/16 10:23:48 morris Exp $ */ 
     1/* $Id: WCMain.h,v 1.4 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    2626 * POSSIBILITY OF SUCH DAMAGE. 
    2727 */ 
    28  
    29 #import "WCWindowController.h" 
    3028 
    3129@class WCIcons, WCSettings, WCStats, WCTextFinder, WCTrackers, WCStats, WCPreferences, WCConnection; 
     
    6361        IBOutlet NSMenuItem                             *_forwardMenuItem; 
    6462         
     63        IBOutlet NSMenu                                 *_viewMenu; 
     64        IBOutlet NSMenuItem                             *_viewOptionsMenuItem; 
     65         
    6566        IBOutlet NSMenu                                 *_bookmarksMenu; 
    6667        IBOutlet NSMenuItem                             *_addBookmarkMenuItem; 
     
    8687 
    8788 
    88 - (void)                                                        updateMenus; 
    8989- (void)                                                        updateIcon; 
    9090- (void)                                                        updateBookmarksMenu; 
     
    130130- (IBAction)                                            largerText:(id)sender; 
    131131- (IBAction)                                            smallerText:(id)sender; 
     132- (IBAction)                                            viewOptions:(id)sender; 
    132133 
    133134- (IBAction)                                            newFolder:(id)sender; 
  • WiredClient/trunk/WCMain.m

    r1007 r1073  
    1 /* $Id: WCMain.m,v 1.10 2004/03/16 10:23:30 morris Exp $ */ 
     1/* $Id: WCMain.m,v 1.11 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    3131#import "NSImageAdditions.h" 
    3232#import "NSNumberAdditions.h" 
     33#import "NSTableViewAdditions.h" 
    3334#import "WCAboutWindow.h" 
    3435#import "WCAccount.h" 
     
    180181        [_deleteMenuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; 
    181182         
    182         // --- we manage menus ourselves 
    183         [_connectionMenu setAutoenablesItems:NO]; 
    184         [_filesMenu setAutoenablesItems:NO]; 
    185          
    186183        // --- update menus according to preferences 
    187         [self updateMenus]; 
    188184        [self updateBookmarksMenu]; 
    189185         
     
    317313         
    318314        [_progressIndicator stopAnimation:self]; 
    319  
    320         [self updateMenus]; 
    321315} 
    322316 
     
    326320        if([notification object] != _activeConnection) 
    327321                return; 
    328          
    329         [self updateMenus]; 
    330322} 
    331323 
     
    341333        _activeWindow = [notification object]; 
    342334        _activeConnection = [(WCWindowController *) _activeWindow connection]; 
    343          
    344         [self updateMenus]; 
    345335} 
    346336 
     
    350340        _activeWindow = NULL; 
    351341        _activeConnection = NULL; 
    352          
    353         [self updateMenus]; 
    354342} 
    355343 
     
    357345 
    358346- (void)preferencesDidChange:(NSNotification *)notification { 
    359         [self updateMenus]; 
    360         [self updateBookmarksMenu]; 
    361 } 
    362  
    363  
    364  
    365 #pragma mark - 
    366  
    367 - (void)updateIcon { 
    368         NSImage         *icon; 
    369          
    370         icon = [[NSImage imageNamed:@"NSApplicationIcon"] copy]; 
    371         [icon applyBadgeWithInt:_unread]; 
    372          
    373         [NSApp setApplicationIconImage:icon]; 
    374         [icon release]; 
    375 } 
    376  
    377  
    378  
    379 - (void)updateMenus { 
    380347        // --- add/remove ellipsis depending on if a dialog will be shown or not 
    381348        if([[WCSettings objectForKey:WCConfirmDisconnect] boolValue]) { 
     
    385352                [_disconnectMenuItem setTitle:NSLocalizedString(@"Disconnect", @"Disconnect menu item")]; 
    386353        } 
    387          
    388         // --- enable/disable connection menu 
    389         if(_activeConnection) { 
    390                 [_serverInfoMenuItem setEnabled:YES]; 
    391                 [_chatMenuItem setEnabled:YES]; 
    392                 [_newsMenuItem setEnabled:YES]; 
    393                 [_messagesMenuItem setEnabled:YES]; 
    394                 [_filesMenuItem setEnabled:YES]; 
    395                 [_transfersMenuItem setEnabled:YES]; 
    396                 [_searchMenuItem setEnabled:YES]; 
    397                 [_consoleMenuItem setEnabled:YES]; 
    398                 [_accountsMenuItem setEnabled:YES]; 
    399                  
    400                 if([_activeWindow isKindOfClass:[WCChat class]]) 
    401                         [_saveChatMenuItem setEnabled:YES]; 
    402                 else 
    403                         [_saveChatMenuItem setEnabled:NO]; 
    404                  
    405                 if([_activeWindow conformsToProtocol:@protocol(WCGetInfoValidation)]) { 
    406                         if([_activeWindow canGetInfo]) 
    407                                 [_getInfoMenuItem setEnabled:YES]; 
    408                         else 
    409                                 [_getInfoMenuItem setEnabled:NO]; 
    410                 } else { 
    411                         [_getInfoMenuItem setEnabled:NO]; 
    412                 } 
    413                  
    414                 if([[_activeConnection account] postNews]) 
    415                         [_postNewMenuItem setEnabled:YES]; 
    416                 else 
    417                         [_postNewMenuItem setEnabled:NO]; 
    418  
    419                 if([[_activeConnection account] broadcast]) 
    420                         [_broadcastMenuItem setEnabled:YES]; 
    421                 else 
    422                         [_broadcastMenuItem setEnabled:NO]; 
    423  
    424                 [_disconnectMenuItem setEnabled:YES]; 
    425                  
    426                 [_addBookmarkMenuItem setEnabled:YES]; 
    427         } else { 
    428                 [_serverInfoMenuItem setEnabled:NO]; 
    429                 [_chatMenuItem setEnabled:NO]; 
    430                 [_newsMenuItem setEnabled:NO]; 
    431                 [_messagesMenuItem setEnabled:NO]; 
    432                 [_filesMenuItem setEnabled:NO]; 
    433                 [_transfersMenuItem setEnabled:NO]; 
    434                 [_searchMenuItem setEnabled:NO]; 
    435                 [_consoleMenuItem setEnabled:NO]; 
    436                 [_accountsMenuItem setEnabled:NO]; 
    437                 [_saveChatMenuItem setEnabled:NO]; 
    438                 [_getInfoMenuItem setEnabled:NO]; 
    439                 [_postNewMenuItem setEnabled:NO]; 
    440                 [_broadcastMenuItem setEnabled:NO]; 
    441                 [_disconnectMenuItem setEnabled:NO]; 
    442                  
    443                 [_addBookmarkMenuItem setEnabled:NO]; 
    444         } 
    445          
    446         // --- enable/disable files menu 
    447         if([_activeWindow class] == [WCFiles class]) { 
    448                 if([_activeWindow canCreateFolders]) 
    449                         [_newFolderMenuItem setEnabled:YES]; 
    450                 else 
    451                         [_newFolderMenuItem setEnabled:NO]; 
    452  
    453                 [_reloadMenuItem setEnabled:YES]; 
    454  
    455                 if([_activeWindow canDeleteFiles]) 
    456                         [_deleteMenuItem setEnabled:YES]; 
    457                 else 
    458                         [_deleteMenuItem setEnabled:NO]; 
    459                  
    460                 if([_activeWindow canMoveBack]) 
    461                         [_backMenuItem setEnabled:YES]; 
    462                 else 
    463                         [_backMenuItem setEnabled:NO]; 
    464  
    465                 if([_activeWindow canMoveForward]) 
    466                         [_forwardMenuItem setEnabled:YES]; 
    467                 else 
    468                         [_forwardMenuItem setEnabled:NO]; 
    469         } else { 
    470                 [_newFolderMenuItem setEnabled:NO]; 
    471                 [_reloadMenuItem setEnabled:NO]; 
    472                 [_deleteMenuItem setEnabled:NO]; 
    473                 [_backMenuItem setEnabled:NO]; 
    474                 [_forwardMenuItem setEnabled:NO]; 
    475         } 
    476          
    477         // --- enable/disable bookmarks menu 
    478         if(_activeConnection) 
    479                 [_addBookmarkMenuItem setEnabled:YES]; 
    480         else 
    481                 [_addBookmarkMenuItem setEnabled:NO]; 
     354 
     355        // --- reload bookmarks 
     356        [self updateBookmarksMenu]; 
     357
     358 
     359 
     360 
     361#pragma mark - 
     362 
     363- (void)updateIcon { 
     364        NSImage         *icon; 
     365         
     366        icon = [[NSImage imageNamed:@"NSApplicationIcon"] copy]; 
     367        [icon applyBadgeWithInt:_unread]; 
     368         
     369        [NSApp setApplicationIconImage:icon]; 
     370        [icon release]; 
    482371} 
    483372 
     
    523412        } 
    524413} 
     414 
     415 
     416 
     417- (BOOL)validateMenuItem:(id <NSMenuItem>)item { 
     418        /* connection menu */ 
     419        if(item == _serverInfoMenuItem) 
     420                return (_activeConnection != NULL); 
     421        else if(item == _chatMenuItem) 
     422                return (_activeConnection != NULL); 
     423        else if(item == _newsMenuItem) 
     424                return (_activeConnection != NULL); 
     425        else if(item == _messagesMenuItem) 
     426                return (_activeConnection != NULL); 
     427        else if(item == _filesMenuItem) 
     428                return (_activeConnection != NULL); 
     429        else if(item == _transfersMenuItem) 
     430                return (_activeConnection != NULL); 
     431        else if(item == _consoleMenuItem) 
     432                return (_activeConnection != NULL); 
     433        else if(item == _accountsMenuItem) 
     434                return (_activeConnection != NULL); 
     435        else if(item == _saveChatMenuItem) 
     436                return [_activeWindow isKindOfClass:[WCChat class]]; 
     437        else if(item == _getInfoMenuItem) 
     438                return [_activeWindow conformsToProtocol:@protocol(WCGetInfoValidation)] && [_activeWindow canGetInfo]; 
     439        else if(item == _postNewMenuItem) 
     440                return [[_activeConnection account] postNews]; 
     441        else if(item == _broadcastMenuItem) 
     442                return [[_activeConnection account] broadcast]; 
     443        else if(item == _disconnectMenuItem) 
     444                return (_activeConnection != NULL); 
     445         
     446        // --- view menu 
     447        else if(item == _viewOptionsMenuItem) 
     448                return [_activeWindow conformsToProtocol:@protocol(WCTableViewOptionsSelection)]; 
     449 
     450        // --- files menu 
     451        else if(item == _searchMenuItem) 
     452                return (_activeConnection != NULL); 
     453        else if(item == _newFolderMenuItem) 
     454                return [_activeWindow isKindOfClass:[WCFiles class]] && [_activeWindow canCreateFolders]; 
     455        else if(item == _reloadMenuItem) 
     456                return [_activeWindow isKindOfClass:[WCFiles class]]; 
     457        else if(item == _deleteMenuItem) 
     458                return [_activeWindow isKindOfClass:[WCFiles class]] && [_activeWindow canDeleteFiles]; 
     459        else if(item == _backMenuItem) 
     460                return [_activeWindow isKindOfClass:[WCFiles class]] && [_activeWindow canMoveBack]; 
     461        else if(item == _forwardMenuItem) 
     462                return [_activeWindow isKindOfClass:[WCFiles class]] && [_activeWindow canMoveForward]; 
     463         
     464        // --- bookmarks menu 
     465        else if(item == _addBookmarkMenuItem) 
     466                return (_activeConnection != NULL); 
     467         
     468        return YES; 
     469} 
     470 
    525471 
    526472 
     
    913859 
    914860 
     861- (IBAction)viewOptions:(id)sender { 
     862        if([_activeWindow conformsToProtocol:@protocol(WCTableViewOptionsSelection)]) 
     863                [[_activeWindow tableView] showViewOptions]; 
     864} 
     865 
     866 
     867 
    915868#pragma mark - 
    916869 
  • WiredClient/trunk/WCPreferences.m

    r1070 r1073  
    1 /* $Id: WCPreferences.m,v 1.9 2004/03/26 23:11:11 morris Exp $ */ 
     1/* $Id: WCPreferences.m,v 1.10 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    189189                 
    190190                // --- reflect change in the menu 
    191                 [WCSharedMain updateMenus]; 
     191                [WCSharedMain updateBookmarksMenu]; 
    192192        } 
    193193 
     
    711711         
    712712        // --- reflect change in the menu 
    713         [WCSharedMain updateMenus]; 
     713        [WCSharedMain updateBookmarksMenu]; 
    714714} 
    715715 
  • WiredClient/trunk/WCPrivateChat.h

    r944 r1073  
    1 /* $Id: WCPrivateChat.h,v 1.1 2004/03/08 19:23:43 morris Exp $ */ 
     1/* $Id: WCPrivateChat.h,v 1.2 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    2929#import "WCChat.h" 
    3030 
    31 @interface WCPrivateChat : WCChat <WCTableViewMenuValidation>
     31@interface WCPrivateChat : WCChat
    3232        int                                     _inviteUser; 
    3333} 
  • WiredClient/trunk/WCPrivateChat.m

    r1056 r1073  
    1 /* $Id: WCPrivateChat.m,v 1.5 2004/03/25 14:14:34 morris Exp $ */ 
     1/* $Id: WCPrivateChat.m,v 1.6 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    225225#pragma mark - 
    226226 
     227- (BOOL)validateMenuItem:(id <NSMenuItem>)item { 
     228        if(item == _getInfoMenuItem) 
     229                return [[_connection account] getUserInfo]; 
     230        else if(item == _ignoreMenuItem) { 
     231                NSNumber        *key; 
     232                WCUser          *user; 
     233                int                     row; 
     234                 
     235                // --- get row 
     236                row             = [_userListTableView selectedRow];  
     237                 
     238                // --- get user 
     239                key             = [_sortedUsers objectAtIndex:row]; 
     240                user    = [_shownUsers objectForKey:key]; 
     241                 
     242                // --- transpose ignore/unignore 
     243                if([user ignore]) { 
     244                        [item setTitle:NSLocalizedString(@"Unignore", "User list menu title")]; 
     245                        [item setAction:@selector(unignore:)]; 
     246                } else { 
     247                        [item setTitle:NSLocalizedString(@"Ignore", "User list menu title")]; 
     248                        [item setAction:@selector(ignore:)]; 
     249                } 
     250                 
     251                return YES; 
     252        } 
     253         
     254        return YES; 
     255} 
     256 
     257 
     258 
     259#pragma mark - 
     260 
    227261- (NSDragOperation)tableView:(NSTableView *)tableView validateDrop:(id  
    228262<NSDraggingInfo>)info proposedRow:(int)row  
     
    254288} 
    255289 
    256  
    257  
    258 - (void)tableView:(NSTableView *)sender willDisplayMenu:(NSMenu *)menu { 
    259         if(sender == _userListTableView) { 
    260                 NSNumber        *key; 
    261                 WCUser          *user; 
    262                 int                     row; 
    263                  
    264                 // --- get row 
    265                 row = [_userListTableView selectedRow];  
    266                  
    267                 if(row < 0) 
    268                         return; 
    269                  
    270                 // --- get user 
    271                 key             = [_sortedUsers objectAtIndex:row]; 
    272                 user    = [_shownUsers objectForKey:key]; 
    273                  
    274                 // --- transpose ignore/unignore 
    275                 if([user ignore]) { 
    276                         [[menu itemAtIndex:3] setTitle:NSLocalizedString(@"Unignore", "User list menu title")]; 
    277                         [[menu itemAtIndex:3] setAction:@selector(unignore:)]; 
    278                 } else { 
    279                         [[menu itemAtIndex:3] setTitle:NSLocalizedString(@"Ignore", "User list menu title")]; 
    280                         [[menu itemAtIndex:3] setAction:@selector(ignore:)]; 
    281                 } 
    282                  
    283                 // --- set from privileges 
    284                 [[menu itemAtIndex:1] setEnabled:[[_connection account] getUserInfo]]; 
    285         } 
    286 } 
    287  
    288290@end 
  • WiredClient/trunk/WCPublicChat.h

    r1044 r1073  
    1 /* $Id: WCPublicChat.h,v 1.3 2004/03/24 13:55:55 morris Exp $ */ 
     1/* $Id: WCPublicChat.h,v 1.4 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    3131@class WCConnection; 
    3232 
    33 @interface WCPublicChat : WCChat <WCTableViewMenuValidation>
     33@interface WCPublicChat : WCChat
    3434        IBOutlet NSButton                       *_privateChatButton; 
    3535        IBOutlet NSButton                       *_banButton; 
     
    4141        IBOutlet NSPanel                        *_banMessagePanel; 
    4242        IBOutlet NSTextField            *_banMessageTextField; 
     43 
     44        IBOutlet NSMenuItem                     *_startPrivateChatMenuItem; 
     45        IBOutlet NSMenuItem                     *_kickMenuItem; 
     46        IBOutlet NSMenuItem                     *_banMenuItem; 
    4347         
    4448        int                                                     _savedUser; 
  • WiredClient/trunk/WCPublicChat.m

    r1059 r1073  
    1 /* $Id: WCPublicChat.m,v 1.11 2004/03/25 15:53:14 morris Exp $ */ 
     1/* $Id: WCPublicChat.m,v 1.12 2004/03/27 01:32:03 morris Exp $ */ 
    22 
    33/* 
     
    382382 
    383383 
     384- (BOOL)validateMenuItem:(id <NSMenuItem>)item { 
     385        if(item == _getInfoMenuItem) 
     386                return [[_connection account] getUserInfo]; 
     387        else if(item == _ignoreMenuItem) { 
     388                NSNumber        *key; 
     389                WCUser          *user; 
     390                int                     row; 
     391                 
     392                // --- get row 
     393                row             = [_userListTableView selectedRow];  
     394                 
     395                // --- get user 
     396                key             = [_sortedUsers objectAtIndex:row]; 
     397                user    = [_shownUsers objectForKey:key]; 
     398                 
     399                // --- transpose ignore/unignore 
     400                if([user ignore]) { 
     401                        [item setTitle:NSLocalizedString(@"Unignore", "User list menu title")]; 
     402                        [item setAction:@selector(unignore:)]; 
     403                } else { 
     404                        [item setTitle:NSLocalizedString(@"Ignore", "User list menu title")]; 
     405                        [item setAction:@selector(ignore:)]; 
     406                } 
     407                 
     408                return YES; 
     409        } 
     410        else if(item == _kickMenuItem) 
     411                return [[_connection account] kickUsers]; 
     412        else if(item == _banMenuItem) 
     413                return [[_connection account] banUsers]; 
     414 
     415        return YES; 
     416} 
     417 
     418 
     419 
    384420#pragma mark - 
    385421 
     
    467503} 
    468504 
    469  
    470  
    471 #pragma mark - 
    472  
    473 - (void)tableView:(NSTableView *)sender willDisplayMenu:(NSMenu *)menu { 
    474         if(sender == _userListTableView) { 
    475                 NSNumber        *key; 
    476                 WCUser          *user; 
    477                 int                     row; 
    478                  
    479                 // --- get row 
    480                 row = [_userListTableView selectedRow];  
    481                  
    482                 if(row < 0) 
    483                         return; 
    484                  
    485                 // --- get user 
    486                 key             = [_sortedUsers objectAtIndex:row]; 
    487                 user    = [_shownUsers objectForKey:key]; 
    488                  
    489                 // --- transpose ignore/unignore 
    490                 if([user ignore]) { 
    491                         [[menu itemAtIndex:4] setTitle:NSLocalizedString(@"Unignore", "User list menu title")]; 
    492                         [[menu itemAtIndex:4] setAction:@selector(unignore:)]; 
    493                 } else { 
    494                         [[menu itemAtIndex:4] setTitle:NSLocalizedString(@"Ignore", "User list menu title")]; 
    495                         [[menu itemAtIndex:4] setAction:@selector(ignore:)]; 
    496                 } 
    497                  
    498                 // --- set from privileges 
    499                 [[menu itemAtIndex:2] setEnabled:[[_connection account] getUserInfo]]; 
    500                 [[menu itemAtIndex:6] setEnabled:[[_connection account] kickUsers]]; 
    501                 [[menu itemAtIndex:7] setEnabled:[[_connection account] banUsers]]; 
    502         } 
    503 } 
    504  
    505505@end 
  • WiredClient/trunk/WCTableView.h

    r944 r1073  
    1 /* $Id: WCTableView.h,v 1.1 2004/03/08 19:23:43 morris Exp $ */ 
     1