This is IPreferenceControl.m in view mode; [Download] [Up]
/*$Copyright:
* Copyright (C) 1992.5.22. Recruit Co.,Ltd.
* Institute for Supercomputing Research
* All rights reserved.
* NewsBase by ISR, Kazuto MIYAI, Gary ARAKAKI, Katsunori SUZUKI, Kok-meng Lue
*
* You may freely copy, distribute and reuse the code in this program under
* following conditions.
* - to include this notice in the source code, if it is to be distributed
* with source code.
* - to add the file named "COPYING" within the code, which shall include
* GNU GENERAL PUBLIC LICENSE(*).
* - to display an acknowledgement in binary code as follows: "This product
* includes software developed by Recruit Co.,Ltd., ISR."
* - to display a notice which shall state that the users may freely copy,
* distribute and reuse the code in this program under GNU GENERAL PUBLIC
* LICENSE(*)
* - to indicate the way to access the copy of GNU GENERAL PUBLIC LICENSE(*)
*
* (*)GNU GENERAL PUBLIC LICENSE is stored in the file named COPYING
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
$*/
/* IPreferenceControl.m */
#import "IPreferenceControl.h"
#import <appkit/FormCell.h>
#import <appkit/Matrix.h>
#import <appkit/Panel.h>
#import <appkit/Application.h>
#import <appkit/PrintInfo.h>
#import <defaults.h>
#import <string.h>
#import <libc.h>
#import <objc/hashtable.h>
#import "errdebug.h"
#import "data_types.h"
#import "Localization.h"
#define LoStr(key) doLocalString(NULL,key,NULL)
@implementation IPreferenceControl
static NXDefaultsVector MMEditorDefaultsVector = {
{DISTRIBUTION, "fj"},
{SAVEDIRECTORY, ""},
{FROM, ""},
{REPLYTO, ""},
// {KANJICODE, "JIS"},
{MULTIPLEVIEWERFLAG, "No"},
{FONT, "FixedRyuminCourier-Bold:14"},
{EDITOR_SIZE, "640:640"},
{EDITOR_LOCATION, "100:600"},
{PRINT_INFO_SCALING_FACTOR, "0.70"},
{JFIF_OR_TIFF, "JFIF"},
{JPEGCOMPRESSIONFACTOR, "75"},
{NULL}
};
- init
{
char *save_dir;
const char *home_dir, *newsbase_dir="NewsBase";
// char *newsrc_dir;
// const char *newsrc_file=".newsrc";
char *get_mail_address();
const char *printInfoScalingFactor;
[super init];
if(!(NXRegisterDefaults(OWNER, MMEditorDefaultsVector))) {
NXRunAlertPanel(LoStr("NewsBase"),LoStr("can't open default database")
,LoStr("OK"),NULL,NULL);
}
/* if value for FROM =="", "user@machine.domain" is set */
if (!(strcmp(NXGetDefaultValue(OWNER, FROM),""))) {
NXSetDefault (OWNER, FROM, [self getMailAddress]);
}
/* if no REPLYTO, "user@machine.domain" */
if (!(strcmp(NXGetDefaultValue(OWNER, REPLYTO),""))) {
NXSetDefault (OWNER, REPLYTO, [self getMailAddress]);
}
/* if value for SAVEDIRECTORY =="", $HOME/NewsBase is set */
if (!(strcmp(NXGetDefaultValue(OWNER, SAVEDIRECTORY),""))) {
home_dir = NXHomeDirectory();
save_dir = (char *)NXZoneMalloc([self zone],
strlen(home_dir)+strlen(newsbase_dir)+2);
strcpy (save_dir, home_dir);
strcat (save_dir, "/");
strcat (save_dir, newsbase_dir);
NXSetDefault (OWNER, SAVEDIRECTORY, save_dir);
}
if ((printInfoScalingFactor = NXGetDefaultValue(OWNER,
PRINT_INFO_SCALING_FACTOR)) != 0) {
[[NXApp printInfo] setScalingFactor:atof(printInfoScalingFactor)];
}
return self;
}
- windowDidBecomeKey:sender
{
[self read:self];
return self;
}
- write:sender
{
const char *save_dir;
const char *value;
/* check save and newsrc file directory */
save_dir = [oSaveDirectory stringValue];
if (*save_dir!='/') {
NXRunAlertPanel(LoStr("NewsBase"),
LoStr("please set absolute path name to directory"),
LoStr("OK"),NULL,NULL);
return NULL;
}
/* write value to database in local disk */
NXSetDefault(OWNER, DISTRIBUTION, value = [oDistribution stringValue]);
[self updateDefaultsVectorForName:DISTRIBUTION andValue:value];
NXSetDefault(OWNER, SAVEDIRECTORY, value = [oSaveDirectory stringValue]);
[self updateDefaultsVectorForName:SAVEDIRECTORY andValue:value];
NXSetDefault(OWNER, FROM, value = [oFrom stringValue]);
[self updateDefaultsVectorForName:FROM andValue:value];
NXSetDefault(OWNER, REPLYTO, value = [oReplyTo stringValue]);
[self updateDefaultsVectorForName:REPLYTO andValue:value];
// NXSetDefault(OWNER, KANJICODE, value = [[oKanjiCode selectedCell] title]);
// [self updateDefaultsVectorForName:KANJICODE andValue:value];
NXSetDefault(OWNER, MULTIPLEVIEWERFLAG,
value = [[oMultipleViewerFlag selectedCell] title]);
[self updateDefaultsVectorForName:MULTIPLEVIEWERFLAG andValue:value];
NXSetDefault(OWNER, JFIF_OR_TIFF,
value = [[oJFIForTIFF selectedCell] title]);
[self updateDefaultsVectorForName:JFIF_OR_TIFF andValue:value];
NXSetDefault(OWNER, JPEGCOMPRESSIONFACTOR,
value = [oJPEGFactor stringValue]);
[self updateDefaultsVectorForName:JPEGCOMPRESSIONFACTOR andValue:value];
NXSetDefault(OWNER, FONT, value = [oFontName stringValue]);
[self updateDefaultsVectorForName:FONT andValue:value];
NXWriteDefaults(OWNER, MMEditorDefaultsVector);
return(self);
}
- read:sender
{
[oDistribution setStringValue:NXGetDefaultValue(OWNER, DISTRIBUTION)];
[oFrom setStringValue:NXGetDefaultValue(OWNER, FROM)];
[oReplyTo setStringValue:NXGetDefaultValue(OWNER, REPLYTO)];
[oSaveDirectory setStringValue:NXGetDefaultValue(OWNER,SAVEDIRECTORY)];
// [self _selectCellMatrix:oKanjiCode
// title:NXGetDefaultValue(OWNER, KANJICODE)];
[self _selectCellMatrix:oMultipleViewerFlag
title:NXGetDefaultValue(OWNER, MULTIPLEVIEWERFLAG)];
[self _selectCellMatrix:oJFIForTIFF
title:NXGetDefaultValue(OWNER, JFIF_OR_TIFF)];
[self setJPEGQualityScale:oJFIForTIFF];
[oJPEGFactor setStringValue:
NXGetDefaultValue(OWNER, JPEGCOMPRESSIONFACTOR)];
[oJPEGQualitySlider takeIntValueFrom:oJPEGFactor];
[oFontName setStringValue:NXGetDefaultValue(OWNER, FONT)];
return(self);
}
- (void)_selectCellMatrix:matrix title:(const char *)ktitle
{
int i;
id cell;
if (ktitle == NULL) {
[matrix selectCellAt:0 :0];
return;
}
for (i=0; i<[matrix cellCount]; i++) {
cell = [matrix cellAt:0 :i];
if(!(strcmp([cell title], ktitle))) {
[matrix selectCell:cell];
break;
}
}
}
- (char *)getMailAddress
{
char *mail_address;
char *user_name, machine_name[256], domain_name[257];
user_name = NXCopyStringBufferFromZone(getenv("USER"),[self zone]);
gethostname(machine_name,sizeof(machine_name));
getdomainname(domain_name + 1, sizeof(domain_name) - 1);
domain_name[sizeof(domain_name) - 1] = '\0';
if (domain_name[1] != '\0') {
domain_name[0] = '.';
} else {
domain_name[0] = '\0';
}
mail_address = (char *)NXZoneMalloc([self zone],
strlen(user_name)+strlen(machine_name)+strlen(domain_name)+3);
(void)sprintf(mail_address,"%s@%s%s",user_name,machine_name,
domain_name);
return mail_address;
}
- openViewControlPanel:sender
{
return NULL;
}
- updateDefaultsVectorForName:(const char *)name andValue:(const char *)value
{
struct _NXDefault *vecPtr;
for (vecPtr = MMEditorDefaultsVector; vecPtr->name != NULL; ++vecPtr) {
if (strcmp(vecPtr->name, name) == 0) {
// possible memory leak here but very small so don't worry
vecPtr->value = value;
return(self);
}
}
return(self);
}
// the JPEG slider depends on the type of JPEG (JFIF or TIFF) so we must
// dynamically set the slider chareacteristics
- setJPEGQualityScale:sender
{
switch([[sender selectedCell] tag]) {
case 1:
[oJPEGFactor setIntValue:10];
[oJPEGQualitySlider setMinValue:1.0];
[oJPEGQualitySlider setMaxValue:255.0];
[oJPEGSliderLeftLabel setStringValue:"good"];
[oJPEGSliderRightLabel setStringValue:"bad"];
break;
case 0:
[oJPEGFactor setIntValue:75];
[oJPEGQualitySlider setMinValue:0];
[oJPEGQualitySlider setMaxValue:100.0];
[oJPEGSliderLeftLabel setStringValue:"bad"];
[oJPEGSliderRightLabel setStringValue:"good"];
break;
}
[oJPEGQualitySlider takeIntValueFrom:oJPEGFactor];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.