This is Controller.m in view mode; [Download] [Up]
#import <objc/Object.h>
#import <appkit/appkit.h>
#import "Controller.h"
#import "MiniView.h"
#import "ImageScrollView.h"
id miniView;
void getAppDirectory (char *appDirectory)
{
FILE *process;
char command[256];
char *suffix;
strcpy (appDirectory,NXArgv[0]);
if (appDirectory[0] == '/') { /* if absolute path */
if (suffix = rindex(appDirectory,'/'))
*suffix = '\0'; /* remove executable name */
} else {
sprintf(command,"which '%s'\n",NXArgv[0]);
process=popen(command,"r");
fscanf(process,"%s",appDirectory);
pclose(process);
if (suffix = rindex(appDirectory,'/'))
*suffix = '\0'; /* remove executable name */
chdir(appDirectory);
getwd(appDirectory);
}
}
static BOOL getOpenPath(char *buf, char const *theType)
{
static id openPanel = nil;
char const *fileTypes[2] = {0,0};
if (!openPanel)
openPanel = [OpenPanel new];
if (theType && *theType)
fileTypes[0] = theType;
[NXApp setAutoupdate:NO];
if ([openPanel runModalForTypes:fileTypes]) {
strcpy(buf,[openPanel filename]);
[NXApp setAutoupdate:YES];
return YES;
} else {
[NXApp setAutoupdate:YES];
return NO;
}
}
/**************************************************************************/
@implementation Controller
- appDidInit:sender
{
char path[MAXPATHLEN + 1];
[[imageScrollViewPtr window] makeKeyAndOrderFront:NULL];
/* Display copyright tiff if it exists. */
getAppDirectory(path);
strcat(path,"/");
strcat(path, "Copyright.tiff");
[imageScrollViewPtr displayImage:path];
[[imageScrollViewPtr window] makeKeyAndOrderFront:self];
miniView = [imageScrollViewPtr miniView];
return self;
}
- open:sender
{
char pathname[MAXPATHLEN + 1];
if (getOpenPath(pathname,"tiff"))
[imageScrollViewPtr displayImage:pathname];
return self;
}
- MiniViewToggle:sender
{
if ([sender state]) {
[imageScrollViewPtr setMiniView:NULL];
[miniView setImageScrollView:NULL];
[miniView freeMiniImage];
[miniView display];
}
else {
[imageScrollViewPtr setMiniView:miniView];
[miniView setImageScrollView:imageScrollViewPtr];
[miniView initImage];
[imageScrollViewPtr tile];
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.