This is PopUpList.m in view mode; [Download] [Up]
/* Implementation of PopUpList class * * Copyright (C) 1993, 1994, 1995 The Board of Trustees of * The Leland Stanford Junior University. All Rights Reserved. * * Authors: Scott Francis, Paul Kunz, and Libing Wang (SLAC) * Mike Kienenberger (Alaska) * * This file is part of an Objective-C class library for a window system * * PopUpList.m,v 1.42 1995/04/18 01:43:55 pfkeb Exp */ #include "PopUpList.h" #include "Menu.h" #include <objc/List.h> #include "MenuCell.h" #include "Matrix.h" #include <string.h> #include <stdlib.h> extern char *PopUpListInstanceName(void); @interface PopUpList(WidgetSet) - _realizeNewItem; - _managedBy:parent wid:(void*)widget; @end @implementation PopUpList:Menu - init { [super init]; instancename = PopUpListInstanceName(); _menu_type = 0; return self; } - setAction:(SEL)aSelector { [matrix setAction:aSelector]; return self; } - (SEL)action { return [matrix action]; } - setTarget:anObject { [matrix setTarget:anObject]; return self; } - target { return [matrix target]; } - selectCell:aCell; { [matrix selectCell:aCell]; return self; } - (const char *)selectedItem { MenuCell *cell = [matrix selectedCell]; return [cell stringValue]; } - addItem:(const char *)aString andRealize:(BOOL)flag { MenuCell *cell; int i; i = [self indexOfItem:aString]; if ( i >= 0 ) { return [[matrix cellList] objectAt:i]; } [matrix addRow]; cell = [[matrix cellList] lastObject]; [cell setStringValue:aString]; [cell _setControlView:matrix]; if (flag) [self _realizeNewItem]; return cell; } - addItem:(const char *)aTitle { return [self addItem:aTitle andRealize:YES]; } - insertItem:(const char *)aString at:(unsigned int)index { List *cellList = [matrix cellList]; MenuCell *aCell; int i; i = [self indexOfItem:aString]; if ( i >= 0 ) { aCell = [cellList removeObjectAt:i]; [cellList insertObject:aCell at:index]; } else { [matrix insertRowAt:index]; aCell = [[matrix cellList] objectAt:index]; [aCell setStringValue:aString]; } [self _realizeNewItem]; return aCell; } - removeItemAt:(unsigned int)index { List *cellList = [matrix cellList]; id item; item = [cellList objectAt:index]; [matrix removeRowAt:index andFree:YES]; if (widgetid) [self _realizeNewItem]; return item; } - (int)indexOfItem:(const char *)aString { List *cellList = [matrix cellList]; MenuCell *aCell; int i; i = [cellList count]; while( i-- ) { aCell = [cellList objectAt:i]; if ( !strcmp([aCell title], aString) ) { return i; } } return (-1); } - read:(TypedStream *)ts { [super read:ts]; #ifdef DEBUG fprintf(stderr, "reading PopUpList\n"); #endif return self; } - awake { /* PopUpList will be initialized by the Button control */ // [super awake]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.