home *** CD-ROM | disk | FTP | other *** search
- // Written by Aleksey Sudakov <zander@cnext.crec.mipt.ru>
- // Copyright (c) 1995 by Aleksey Sudakov.
- // Version 1.0. All rights reserved.
- //
- // This notice may not be removed from this source code.
- //
- // This program is included in the MiscKit by permission from the author
- // and its use is governed by the MiscKit license, found in the file
- // "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
- // for a list of all applicable permissions and restrictions.
- //
-
- #import <objc/List.h>
- #import <misckit/MiscString.h>
- #import "SavePanelWithPopUp.h"
-
- @interface SavePanelWithPopUp(Private)
- + _factory;
-
- - _init;
- - changeTypes;
- @end
-
- @implementation SavePanelWithPopUp
- + _factory
- {
- return [SavePanelWithPopUp class];
- }
-
- + newContent:(const NXRect *)contentRect style:(int)aStyle
- backing:(int)bufferingType buttonMask:(int)mask defer:(BOOL)flag
- {
- SavePanelWithPopUp* panel;
-
- panel = [SavePanel newContent:contentRect style:aStyle
- backing:bufferingType buttonMask:mask defer:flag];
- return [panel _init];
- }
-
- - _init
- {
- types = [[List alloc] init];
- popUp = [[PopUpList alloc] init];
- [popUp setTarget:self];
- [popUp setAction:sel_getUid("changeTypes")];
-
- return self;
- }
-
- - changeTypes
- {
- [self setSelectedType:[[types objectAt:[[popUp itemList] selectedRow]] stringValue]];
- [self setRequiredFileType:selectedType];
- return self;
- }
-
- - registerPopUp
- {
- [super setAccessoryView:NXCreatePopUpListButton(popUp)];
- return self;
- }
-
- - addType:(char*)type withDescription:(char*)description
- {
- MiscString* msType = [MiscString newWithString:type];
- MiscString* msTitle = [[MiscString alloc] initFromFormat:
- "%s - %s",type, description];
-
- [popUp addItem:[msTitle stringValue]];
- [types addObject:msType];
- if(!selectedType){
- [self setSelectedType:[[types objectAt:0] stringValue]];
- [self setRequiredFileType: selectedType];
- }
- return self;
- }
-
- - (char*)selectedType
- {
- return selectedType;
- }
-
- - setSelectedType:(const char *)aString
- {
- if (selectedType) free(selectedType);
- selectedType = NXCopyStringBufferFromZone(aString, [self zone]);
- return self;
- }
-
- - free
- {
- free(selectedType);
- [types freeObjects];
- [types free];
- [popUp free];
- return [super free];
- }
-
-
- @end