This is MiscInfoController.m in view mode; [Download] [Up]
//
// MiscInfoController.m -- a class to handle the guts under an Info menu
// Written by Don Yacktman Copyright (c) 1994 by Don Yacktman.
// Version 1.2. All rights reserved.
//
// This notice may not be removed from this source code.
//
// This object 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 <misckit/misckit.h>
#define mailMessage [strings valueForStringKey:"MailMessage"]
#define authorEmail [strings valueForStringKey:"AuthorEMail"]
#define authorName [strings valueForStringKey:"AuthorName"]
@implementation MiscInfoController
- init
{
if (![super init]) return nil;
strings = nil;
info = nil;
orderForm = nil;
registration = nil;
_licenseFileName = [MiscString newWithString:"/License.rtfd"];
_releaseNotesFileName = [MiscString newWithString:"/ReleaseNotes.rtfd"];
return self;
}
- free
{
[_releaseNotesFileName free];
[_licenseFileName free];
return [super free];
}
- (MiscString *)licenseFile { return [_licenseFileName copy]; }
- (MiscString *)releaseNotesFile { return [_releaseNotesFileName copy]; }
- setLicenseFile:(MiscString *)aPath
{
[_licenseFileName takeStringValueFrom:aPath];
return self;
}
- setReleaseNotesFile:(MiscString *)aPath
{
[_releaseNotesFileName takeStringValueFrom:aPath];
return self;
}
- strings
{
// attempt to get the string table if it isn't already set up.
// Try (1) .lproj directories or (2) app delegate.
if (!strings) {
// .lproj?
}
if (!strings) {
// NXApp?
if ([NXApp respondsTo:@selector(strings)])
strings = [NXApp strings];
}
if (!strings) {
// [NXApp delegate]?
if ([[NXApp delegate] respondsTo:@selector(strings)])
strings = [[NXApp delegate] strings];
}
return strings;
}
- info
{
if (!info) { // create the object if needed
info = [[MiscInfo alloc] init];
[info setController:self];
}
return info;
}
- orderForm // return the orderFormPanel, load it if needed.
{
if (!orderForm) { // create the object if needed
orderForm = [[MiscOrderForm alloc] init];
[orderForm setController:self];
}
return orderForm;
}
- registration // return the registerPanel, load it if needed.
{
if (!registration) { // create the object if needed
registration = [[MiscRegistration alloc] init];
[registration setController:self];
}
return registration;
}
- info:sender
{ // forward the message on to the MiscInfo object.
[[self info] info:sender];
return self;
}
- orderForm:sender
{ // forward the message on to the MiscInfo object.
[[self orderForm] orderForm:sender];
return self;
}
- registration:sender
{ // forward the message on to the MiscInfo object.
[[self registration] registration:sender];
return self;
}
- releaseNotes:sender // make the README panel be up there.
{
id helpPanel = [NXHelpPanel new];
id path = [MiscString newWithString:[helpPanel helpDirectory]];
[path concatenate:_releaseNotesFileName];
[helpPanel showFile:[path stringValue] atMarker:NULL];
[helpPanel makeKeyAndOrderFront:self];
[path free];
return self;
}
- license:sender // make the license panel be up there.
{
id helpPanel = [NXHelpPanel new];
id path = [MiscString newWithString:[helpPanel helpDirectory]];
[path concatenate:_licenseFileName];
[helpPanel showFile:[path stringValue] atMarker:NULL];
[helpPanel makeKeyAndOrderFront:self];
[path free];
return self;
}
- suggestion:sender // This is pretty much lifted from Opener.
{
id to, body = [[MiscString alloc] init];
id subject = [[MiscString alloc] init];
[self strings]; // make sure we have a string table
// now we prepare the message to send
to = [MiscString newWithString:authorEmail];
[subject setFromFormat:"Comments and suggestions for ``%s'' ",
[NXApp appName]];
[subject catStrings:[info versionString], " (",
[registration serialNumber], ")", NULL];
[body setFromFormat:mailMessage, authorName, [NXApp appName]];
[body catStrings:[NXApp userRealName], "\n", NULL];
[MISC_MAILAPP sendMailTo:to subject:subject body:body];
FREE_OBJECT(subject);
FREE_OBJECT(body);
FREE_OBJECT(to);
return self;
}
- hideOrShowMenus:sender
{
[[MiscExplodingMenu sharedInstance] explodeMenus:sender];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.