This is Preferences.m in view mode; [Download] [Up]
/* * For legal stuff see the file COPYRIGHT */ #import "Preferences.h" @implementation Preferences /* Attribute defaults */ #define DFLT_INVOICE_NUM "0" #define DFLT_INVOICE_DIR "/tmp" #define DFLT_HIDE_ON_AUTO "NO" #define DFLT_SHOW_END_TIMES "NO" #define DFLT_CONSULTANT_INFO "" /* Positions in the Form */ #define MY_NAME_POS 0 #define MY_COMPANY_POS 1 #define MY_STREET_POS 2 #define MY_CITY_POS 3 #define MY_STATE_POS 4 #define MY_ZIP_POS 5 #define MY_PHONE_POS 6 #define MY_FAX_POS 7 #define MY_EMAIL_POS 8 static BOOL yes( const char *attr ) { const char *value = GET_DEFAULT(attr); return ( value && strcmp( value, "YES") == 0 ? YES : NO ); } + initialize { static NXDefaultsVector dflts = { { INVOICE_NUM, DFLT_INVOICE_NUM }, { INVOICE_DIR, DFLT_INVOICE_DIR }, { HIDE_ON_AUTO, DFLT_HIDE_ON_AUTO }, { SHOW_END_TIMES, DFLT_SHOW_END_TIMES }, { MY_NAME, "" }, { MY_COMPANY, "" }, { MY_STREET, "" }, { MY_CITY, "" }, { MY_STATE, "" }, { MY_ZIP, "" }, { MY_PHONE, "" }, { MY_FAX, "" }, { MY_EMAIL, "" }, { NULL } }; NXRegisterDefaults( OWNER, dflts ) ; return self ; } /* * Allow only one preferences object for this app */ + new { static id prefs; if ( ! prefs ) { prefs = [[Preferences alloc] init]; [NXApp loadNibSection:"Preferences.nib" owner:prefs withNames:NO]; [prefs revert:nil]; } return prefs; } /* * Called by the controller to see if we should hide ourselves. * Return YES if we were autolaunched and the user said to hide. */ - (BOOL)hideOnAutoLaunch { return( yes( "NXAutoLaunch" ) && yes(HIDE_ON_AUTO) ); } - (BOOL)showEndTimes { return( yes(SHOW_END_TIMES) ); } - display { [invoiceNumberText selectText:nil]; [window makeKeyAndOrderFront:self]; return self; } - chooseDir:sender { OpenPanel *panel = [OpenPanel new]; int result; [panel chooseDirectories:YES]; result = [panel runModalForDirectory:NXHomeDirectory() file:""]; if ( result != NX_RUNABORTED ) [directoryText setStringValue:[panel filename]]; return self; } - ok:sender { PUT_DEFAULT( INVOICE_NUM, [invoiceNumberText stringValue] ) ; PUT_DEFAULT( INVOICE_DIR, [directoryText stringValue] ) ; PUT_DEFAULT( HIDE_ON_AUTO, [hideButton state] ? "YES" : "NO" ) ; PUT_DEFAULT( SHOW_END_TIMES,[endTimesButton state] ? "YES" : "NO" ) ; PUT_DEFAULT( MY_NAME, [form stringValueAt:MY_NAME_POS] ); PUT_DEFAULT( MY_COMPANY, [form stringValueAt:MY_COMPANY_POS] ); PUT_DEFAULT( MY_STREET, [form stringValueAt:MY_STREET_POS] ); PUT_DEFAULT( MY_CITY, [form stringValueAt:MY_CITY_POS] ); PUT_DEFAULT( MY_STATE, [form stringValueAt:MY_STATE_POS] ); PUT_DEFAULT( MY_PHONE, [form stringValueAt:MY_PHONE_POS] ); PUT_DEFAULT( MY_ZIP, [form stringValueAt:MY_ZIP_POS] ); PUT_DEFAULT( MY_FAX, [form stringValueAt:MY_FAX_POS] ); PUT_DEFAULT( MY_EMAIL, [form stringValueAt:MY_EMAIL_POS] ); [window close]; return self; } - revert:sender { NXUpdateDefaults() ; /* reload the table from the database */ [invoiceNumberText setStringValue:GET_DEFAULT(INVOICE_NUM)]; [directoryText setStringValue:GET_DEFAULT(INVOICE_DIR)]; [hideButton setState:yes(HIDE_ON_AUTO)]; [endTimesButton setState:yes(SHOW_END_TIMES)]; [form setStringValue:GET_DEFAULT(MY_NAME) at:MY_NAME_POS]; [form setStringValue:GET_DEFAULT(MY_COMPANY) at:MY_COMPANY_POS]; [form setStringValue:GET_DEFAULT(MY_STREET) at:MY_STREET_POS]; [form setStringValue:GET_DEFAULT(MY_CITY) at:MY_CITY_POS]; [form setStringValue:GET_DEFAULT(MY_STATE) at:MY_STATE_POS]; [form setStringValue:GET_DEFAULT(MY_ZIP) at:MY_ZIP_POS]; [form setStringValue:GET_DEFAULT(MY_PHONE) at:MY_PHONE_POS]; [form setStringValue:GET_DEFAULT(MY_FAX) at:MY_FAX_POS]; [form setStringValue:GET_DEFAULT(MY_EMAIL) at:MY_EMAIL_POS]; return self; } - reset:sender { int pos; [invoiceNumberText setStringValue:DFLT_INVOICE_NUM]; [directoryText setStringValue:DFLT_INVOICE_DIR]; [hideButton setState:yes(DFLT_HIDE_ON_AUTO)]; [endTimesButton setState:yes(DFLT_SHOW_END_TIMES)]; for ( pos = 0; pos <= MY_EMAIL_POS; pos++ ) [form setStringValue:"" at:pos]; return self; } - (const char *)myName { return GET_DEFAULT(MY_NAME); } - (const char *)myCompany { return GET_DEFAULT(MY_COMPANY); } - (const char *)myStreet { return GET_DEFAULT(MY_STREET); } - (const char *)myCity { return GET_DEFAULT(MY_CITY); } - (const char *)myState { return GET_DEFAULT(MY_STATE); } - (const char *)myZip { return GET_DEFAULT(MY_ZIP); } - (const char *)myPhone { return GET_DEFAULT(MY_PHONE); } - (const char *)myFax { return GET_DEFAULT(MY_FAX); } - (const char *)myEmail { return GET_DEFAULT(MY_EMAIL); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.