This is PrefControl.m in view mode; [Download] [Up]
/* The PrefControl implementation for Emacs.
For legal stuff see the file COPYRIGHT. */
#import <defaults/defaults.h>
#import "PrefControl.h"
#import "EmacsApp.h"
#import "EtermView.h"
#import "defaults.h"
@implementation PrefControl
-windowDidBecomeKey: sender
{
const char *value;
[autoLaunchSwitch setIntValue:
strcmp (NXGetDefaultValue ([NXApp appName],
"HideOnAutoLaunch"), "YES") ? 0 : 1];
value = NXGetDefaultValue ("Workspace", "DefaultOpenApp");
[defaultAppSwitch setIntValue:
(value && !strcmp (value, "Emacs.app")) ? 1 : 0];
[spaceSlider setFloatValue: [[NXApp currentView] spacing]];
[emacsPathField setStringValue: NXGetDefaultValue ([NXApp appName], "EmacsPath")];
[lispPathField setStringValue: NXGetDefaultValue ([NXApp appName], "LispPath")];
return self;
} /* -windowDidBecomeKey */
-autoLaunch: sender
{
NXWriteDefault ([NXApp appName], "HideOnAutoLaunch",
[sender intValue] ? "YES" : "NO");
return self;
} /* -autoLaunch: */
-defaultApp: sender
{
if ([sender intValue])
{
NXWriteDefault ("Workspace", "DefaultOpenApp", "Emacs.app");
}
else
{
NXRemoveDefault ("Workspace", "DefaultOpenApp");
}
return self;
} /* -defaultApp: */
-spaceChanged: sender
{
[[NXApp currentView] setSpacing: [sender floatValue]];
return self;
} /* -spaceChanged */
-emacsPathChanged: sender
{
[self setEmacsPath: [sender stringValue]];
return self;
} /* -emacsPathChanged: */
-lispPathChanged: sender
{
[self setLispPath: [sender stringValue]];
return self;
} /* -lispPathChanged: */
-selectEmacsPath: sender
{
char *path;
const char *directory;
const char *const *fileNames;
if (!openPanel)
openPanel = [OpenPanel new];
[openPanel allowMultipleFiles: NO];
[openPanel chooseDirectories: NO];
if ([openPanel runModal])
{
directory = [openPanel directory];
fileNames = [openPanel filenames];
if (fileNames)
{
path = malloc (2 + strlen (directory) + strlen (*fileNames));
strcat (strcat (strcpy (path, directory), "/"), *fileNames);
[self setEmacsPath: path];
free (path);
}
}
return self;
} /* selectEmacsPath: */
-selectLispPath: sender
{
char *path;
const char *directory;
const char *const *fileNames;
static const char *const types[] =
{
"el",
"elc",
NULL,
};
if (!openPanel)
openPanel = [OpenPanel new];
[openPanel allowMultipleFiles: NO];
[openPanel chooseDirectories: NO];
if ([openPanel runModalForTypes: types])
{
directory = [openPanel directory];
fileNames = [openPanel filenames];
if (fileNames)
{
path = malloc (2 + strlen (directory) + strlen (*fileNames));
strcat (strcat (strcpy (path, directory), "/"), *fileNames);
[self setLispPath: path];
free (path);
}
}
return self;
} /* selectLispPath: */
-defaultEmacsPath: sender
{
[self setEmacsPath: DEFAULT_EMACS_PATH];
return self;
} /* defaultEmacsPath: */
-defaultLispPath: sender
{
[self setLispPath: DEFAULT_LISP_PATH];
return self;
} /* defaultLispPath: */
-setEmacsPath: (const char *) path;
{
[emacsPathField setStringValue: path];
NXWriteDefault ([NXApp appName], "EmacsPath", path);
return self;
} /* setEmacsPath: */
-setLispPath: (const char *) path;
{
[lispPathField setStringValue: path];
NXWriteDefault ([NXApp appName], "LispPath", path);
return self;
} /* setLispPath: */
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.