This is IPPanel.m in view mode; [Download] [Up]
#import <ansi/stdlib.h>
#import <ansi/string.h>
#import "IPPanel.h"
static const char *PANELPREFIX = "IPPANEL";
@interface IPPanel (IPPanelPrivateMethods)
- (void)_saveVisibleUsingName:(const char *)name isVisible:(BOOL)flag;
@end
@implementation IPPanel
+ (BOOL)isPanelSavedAsVisible:(const char *)name
{
const char *state;
char *vname;
if(name != NULL){
vname = (char *)NXZoneMalloc([self zone], strlen(name) + strlen(PANELPREFIX) + 1);
strcpy(vname, PANELPREFIX);
strcat(vname, name);
state = NXGetDefaultValue([NXApp appName], vname);
if( state != NULL && atoi( state ) > 0 )
return YES;
}
return NO;
}
- initContent:(const NXRect *)contentRect
style:(int)aStyle
backing:(int)bufferingType
buttonMask:(int)mask
defer:(BOOL)flag
{
[super initContent:contentRect
style:aStyle
backing:bufferingType
buttonMask:mask
defer:flag];
_visibleName = NULL;
return self;
}
- free
{
free(_visibleName);
return [super free];
}
- (BOOL)setVisibleAutosaveName:(const char *)name
{
if(name != NULL){
if(_visibleName)
_visibleName = (char *)NXZoneRealloc([self zone], _visibleName, strlen(name) + 1);
else
_visibleName = (char *)NXZoneMalloc([self zone], strlen(name) + 1);
strcpy(_visibleName, name);
if(![self setVisibleUsingName:_visibleName])
[self saveVisibleUsingName:_visibleName];
} else {
if(_visibleName)
NX_FREE(_visibleName);
_visibleName = NULL;
}
return YES;
}
- (BOOL)setVisibleAutosaveLikeFrameName
{
return [self setVisibleAutosaveName:[self frameAutosaveName]];
}
- (const char *)visibleAutosaveName
{
return _visibleName;
}
- (void)_saveVisibleUsingName:(const char *)name isVisible:(BOOL)flag
{
char *vname;
if(name != NULL){
vname = (char *)NXZoneMalloc([self zone], strlen(name) + strlen(PANELPREFIX) + 1);
strcpy(vname, PANELPREFIX);
strcat(vname, name);
if(flag)
NXWriteDefault([NXApp appName], vname, "1");
else
NXWriteDefault([NXApp appName], vname, "0");
NX_FREE(vname);
}
}
- (void)saveVisibleUsingName:(const char *)name
{
[self _saveVisibleUsingName:name isVisible:[self isVisible]];
}
- (BOOL)setVisibleUsingName:(const char *)name
{
const char *state;
char *vname;
if(name != NULL){
vname = (char *)NXZoneMalloc([self zone], strlen(name) + strlen(PANELPREFIX) + 1);
strcpy(vname, PANELPREFIX);
strcat(vname, name);
state = NXGetDefaultValue([NXApp appName], vname);
NX_FREE(vname);
if(state != NULL){
if(atoi(state))
[super orderFront:self];
else
[super orderOut:self];
return YES;
}
}
return NO;
}
- windowWillClose:sender
{
if(_visibleName != NULL)
[self _saveVisibleUsingName:_visibleName isVisible:0];
return self;
}
- orderBack:sender
{
[super orderBack:sender];
if(_visibleName != NULL)
[self saveVisibleUsingName:_visibleName];
return self;
}
- orderFront:sender
{
[super orderFront:sender];
if(_visibleName != NULL)
[self saveVisibleUsingName:_visibleName];
return self;
}
- makeKeyAndOrderFront:sender
{
[super makeKeyAndOrderFront:sender];
if(_visibleName != NULL)
[self saveVisibleUsingName:_visibleName];
return self;
}
- orderFrontRegardless
{
[super orderFrontRegardless];
if(_visibleName != NULL)
[self saveVisibleUsingName:_visibleName];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.