This is PreferencesPanel.m in view mode; [Download] [Up]
//====================================================================== // // Portions written by FreemanSoft Inc. // // FreemanSoft disclaims any warranty of any kind, expressed or implied, // as to this source code's fitness for any particular use. // // For more information, use the following electronic mail addresses: // // info@FreemanSoft.com general questions // support@FreemanSoft.com technical questions // //====================================================================== /* Written by * Joe Freeman jfreeman@next.com * PreferencesPanel * * This code has no warranty. * It is provided so that the consumer may maintain and modify it * at their own risk. Use this code at your own risk. */ #import "PreferencesPanel.h" #import "common.h" #define RDIST_SOURCE 1 #define RDIST_DEST 2 #define RDIST_ABSOLUTE 0 #define RDIST_RELATIVE 1 #define DUP_UPDATE 0 #define DUP_EXACT 1 @implementation PreferencesPanel + new { static id thePanel; if (!thePanel) { thePanel = [NXApp loadNibSection:"PrefPanel.nib" owner:self]; [thePanel setFrameUsingName:pref_frame]; [thePanel setFrameAutosaveName:pref_frame]; [thePanel loadPatternFile:thePanel]; } return thePanel; } - loadPatternFile:sender { NXStream * ourStream; ourStream = [[NXApp delegate] mapResource:pat_file]; if (ourStream){ [exceptPatText readText:ourStream]; [exceptPatText sizeToFit]; NXClose(ourStream); } return self; } - savePatternFile:sender { char buf[MAXPATHLEN]; NXStream * ourStream; /* assume directory already built by app somewhere else */ strcpy(buf,NXHomeDirectory()); strcat(buf,"/"); strcat(buf,lib_dir); strcat(buf,"/"); strcat(buf,pat_file); ourStream = NXOpenMemory(NULL, 0, NX_WRITEONLY); if (ourStream){ [exceptPatText writeText:ourStream]; NXSaveToFile(ourStream, buf); NXCloseMemory(ourStream, NX_FREEBUFFER); } return self; } - makeKeyAndOrderFront:sender { const char *temp; /* now load path preferences UI from the defaults */ temp = NXGetDefaultValue([NXApp appName],path_default); if (!strcmp(temp, rdist_absolute)) [pathPreference selectCellWithTag:RDIST_ABSOLUTE]; else if (!strcmp(temp, rdist_relative)) [pathPreference selectCellWithTag:RDIST_RELATIVE]; /* now load method preferences UI from the defaults */ temp = NXGetDefaultValue([NXApp appName],dup_default); if (!strcmp(temp, dup_update)) [methodPreference selectCellWithTag:DUP_UPDATE]; else if (!strcmp(temp, dup_exact)) [methodPreference selectCellWithTag:DUP_EXACT]; /* should we do a find before each backup */ temp = NXGetDefaultValue([NXApp appName], find_no_write); if (!strcmp(temp, yes_str)) [findWritable setState:1]; else [findWritable setState:0]; [super makeKeyAndOrderFront:self]; return self; } /*================================================================ * preferences panel *================================================================*/ - changePathPrefer:sender { if ([sender selectedTag] == RDIST_RELATIVE) NXWriteDefault([NXApp appName], path_default, rdist_relative); else if ([sender selectedTag] == RDIST_ABSOLUTE) NXWriteDefault([NXApp appName], path_default, rdist_absolute); [[NXApp delegate] preferencesChanged:self]; NXWriteDefault([NXApp appName], info_default, no_str); return self; } - changeMethodPrefer:sender { if ([sender selectedTag] == DUP_UPDATE) NXWriteDefault([NXApp appName], dup_default, dup_update); else if ([sender selectedTag] == DUP_EXACT) NXWriteDefault([NXApp appName], dup_default, dup_exact); NXWriteDefault([NXApp appName], info_default, no_str); return self; } - changeFindWritablePrefer:sender { if ([findWritable state] == 0) NXWriteDefault([NXApp appName], find_no_write, no_str); else NXWriteDefault([NXApp appName], find_no_write, yes_str); return self; } - getExemptString:(char **)bufPtr length:(int *)length { NXStream * ourStream; int maxlen; ourStream = NXOpenMemory(NULL, 0, NX_WRITEONLY); if (ourStream){ [exceptPatText writeText:ourStream]; NXGetMemoryBuffer(ourStream, bufPtr, length, &maxlen); NXCloseMemory(ourStream, NX_SAVEBUFFER); } /* always save last run's pattern file */ [self savePatternFile:self]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.