This is Global.m in view mode; [Download] [Up]
// // Global.m Part of Cassandra // // Copyright (c) 1989, 1990, 1991 by Jiro Nakamura // All rights reserved // // RCS Information // Revision Number-> $Revision: 2.14 $ // Last Revised-> $Date: 91/12/20 15:36:33 $ // static char rcsid[] = "$Id: Global.m,v 2.14 91/12/20 15:36:33 jiro Exp Locker: jiro $"; #import "Global.h" #import <stdio.h> #import <libc.h> #import <strings.h> #import <stdlib.h> // for atoi() #import <sys/file.h> // for access() #import <math.h> // for log10() #import <appkit/appkit.h> #import "cass.h" #import "calendar.h" #import "Event.h" #import "Cassandra.h" const char *const alarmExtensions[] = ALARMEXTENSIONS; BOOL getDefaultValue(char *defaultName, BOOL dflt) { char *str; str = (char *) NXGetDefaultValue(PROGNAME, defaultName); return( (!str || (str[0] == (dflt?'Y':'N')) || (str[0] == (dflt?'y':'n'))) ? dflt : !dflt) ; } @implementation Global + initialize { // From NeXT 0.9 Concepts manual, chap. 9, pp.13-16 static NXDefaultsVector myDefaults = { { DEFAULTALARMSOUND, ALARMSOUND}, { DEFAULTALARMVOLUME, "-1.0"}, { DEFAULTAUTOLAUNCHED, "No" }, { DEFAULTCLOCKFACENUMBER, "12"}, { DEFAULTCLOCKTYPE, "0"}, { DEFAULTCOMPRESSEVENTS, "Yes"}, { DEFAULTDIRECTORY, NULL}, { DEFAULTEVENTLOGFRAME, "x600y10w425h200"}, { DEFAULTEVENTLOGONLAUNCH, "No"}, { DEFAULTFONTNAME, FONTNAME}, { DEFAULTFONTSIZE, FONTSIZEQ}, { DEFAULTGURU, "No"}, { DEFAULTHIDEONLAUNCH "No"}, { DEFAULTHIGHPRIORITY, "90"}, { DEFAULTLOWPRIORITY, "10"}, { DEFAULTMILITARYTIME, "No"}, { DEFAULTNOTEPADFRAME, "x75y10w425h200"}, { DEFAULTNOTEPADONLAUNCH, "No"}, { DEFAULTOVERVIEWFRAME, "x215y280w530h490"}, { DEFAULTOVERVIEWONLAUNCH, "Yes"}, { DEFAULTPLAYALARM, "Yes"}, { DEFAULTSHOWSECONDS, "Yes"}, { DEFAULTSHOWDATE, "No"}, { DEFAULTSOURCELOGINONLAUNCH, "No"}, { DEFAULTTODAYSHOWTIME, "No"}, { DEFAULTTODAYONLAUNCH, "Yes"}, { DEFAULTTODAYFRAME, "x5y280w200h265"}, { DEFAULTWEEKFRAME, "x78y15w870h165"}, { NULL} }; char dumbChar[5]; // dumb references to some static constants, just // to avoid warning messages from the compiler (Garance) dumbChar[0] = rcsid[0]; // dumb de dumb #ifdef DEBUG fprintf(stderr, "Global being initialized\n"); #endif NXRegisterDefaults( PROGNAME, myDefaults); return self; } - load:sender { const char *str; char tmp[128]; #ifdef DEBUG int count; for( count = 0; count < NXArgc; count ++ ) { fprintf(stderr,"%s: NXArgv[%d] = <%s>\n", PROGNAME, count, NXArgv[count]); } #endif str = NXGetDefaultValue(PROGNAME, DEFAULTDIRECTORY); if( str == NULL) { sprintf(directory, "%s%s", NXHomeDirectory(), DIRECTORY); NXWriteDefault( PROGNAME, DEFAULTDIRECTORY, directory); } else strcpy(directory, str); sprintf( eventFile, "%s%s", directory, EVENTFILE); sprintf( eventLogFile, "%s%s", directory, EVENTLOGFILE); sprintf( notepadFile, "%s%s", directory, NOTEPADFILE); sprintf( sourceLoginFile, "%s%s", directory, SOURCELOGINFILE); sprintf( sourceLogoutFile, "%s%s", directory, SOURCELOGOUTFILE); strcpy(tmp, directory); if( *(tmp+ strlen(tmp)-1) == '/') * (tmp+ strlen(tmp) -1) = '\0'; if( access( tmp, X_OK) == -1) // If it doesn't exist { if( mkdir(tmp, 0700) == -1) { char error[180]; sprintf(error, "I couldn't create the working " "directory <%s>", tmp); NXRunAlertPanel("Fatal Error", error, "Exit", NULL,NULL); exit(1); } } // Read the defaults and store them autoLaunched = getDefaultValue(DEFAULTAUTOLAUNCHED, NO); compressEvents = getDefaultValue(DEFAULTCOMPRESSEVENTS, YES); eventLogOnLaunch= getDefaultValue(DEFAULTEVENTLOGONLAUNCH, YES); guru = getDefaultValue(DEFAULTGURU, NO); hideOnLaunch = getDefaultValue(DEFAULTHIDEONLAUNCH, NO); militaryTime = getDefaultValue(DEFAULTMILITARYTIME, NO); notepadOnLaunch = getDefaultValue(DEFAULTNOTEPADONLAUNCH, YES); overviewOnLaunch= getDefaultValue(DEFAULTOVERVIEWONLAUNCH, YES); playAlarm = getDefaultValue(DEFAULTPLAYALARM, YES); showSeconds = getDefaultValue(DEFAULTSHOWSECONDS, YES); showDate = getDefaultValue(DEFAULTSHOWDATE, YES); sourceLoginOnLaunch = getDefaultValue(DEFAULTSOURCELOGINONLAUNCH, NO); todayOnLaunch = getDefaultValue(DEFAULTTODAYONLAUNCH, YES); todayShowTime = getDefaultValue(DEFAULTTODAYSHOWTIME, NO); weekOnLaunch = getDefaultValue(DEFAULTWEEKONLAUNCH, NO); // Read the Overview window's frame size str = NXGetDefaultValue(PROGNAME, DEFAULTOVERVIEWFRAME); sscanf(str, "x%fy%fw%fh%f", &overviewFrame.origin.x, &overviewFrame.origin.y, &overviewFrame.size.width, &overviewFrame.size.height); // Read the EventLog window's frame size str = NXGetDefaultValue(PROGNAME, DEFAULTEVENTLOGFRAME); sscanf(str, "x%fy%fw%fh%f", &eventLogFrame.origin.x, &eventLogFrame.origin.y, &eventLogFrame.size.width, &eventLogFrame.size.height); // Read the Notepad window's frame size str = NXGetDefaultValue(PROGNAME, DEFAULTNOTEPADFRAME); sscanf(str, "x%fy%fw%fh%f", ¬epadFrame.origin.x, ¬epadFrame.origin.y, ¬epadFrame.size.width, ¬epadFrame.size.height); // Read the Today window's frame size str = NXGetDefaultValue(PROGNAME, DEFAULTTODAYFRAME); sscanf(str, "x%fy%fw%fh%f", &todayFrame.origin.x, &todayFrame.origin.y, &todayFrame.size.width, &todayFrame.size.height); // Read the Week window's frame size str = NXGetDefaultValue(PROGNAME, DEFAULTWEEKFRAME); sscanf(str, "x%fy%fw%fh%f", &weekFrame.origin.x, &weekFrame.origin.y, &weekFrame.size.width, &weekFrame.size.height); // Read the sound default and process that. strcpy(alarmSound, NXGetDefaultValue(PROGNAME, DEFAULTALARMSOUND)); // Read the fontName default and process that. strcpy(fontName, NXGetDefaultValue(PROGNAME, DEFAULTFONTNAME)); fontSize = atof( NXGetDefaultValue(PROGNAME, DEFAULTFONTSIZE)); lowPriority = atoi(NXGetDefaultValue(PROGNAME, DEFAULTLOWPRIORITY)); highPriority = atoi( NXGetDefaultValue(PROGNAME,DEFAULTHIGHPRIORITY)); clockType = atoi( NXGetDefaultValue(PROGNAME,DEFAULTCLOCKTYPE)); alarmVolume = atof( NXGetDefaultValue(PROGNAME, DEFAULTALARMVOLUME)); clockBitmapNumber = atoi(NXGetDefaultValue(PROGNAME, DEFAULTCLOCKFACENUMBER)); #ifdef DEBUG fprintf(stderr,"Global defaults read.\n"); fprintf(stderr, "Directory = <%s>\n" "Alarm = %s, PlayAlarm = %s\n" "alarmVolume = %f CompressEvents = %s\n" "lowPriority = %d. highPriority = %d Guru = %s\n" "ShowSeconds = %s, TodayShowTime = %s\n" "ShowDate = %s, overviewOnLaunch = %s\n" "ClockType = %d,\n" "notepadOnLaunch = %s, eventLogOnLaunch = %s\n" "todayOnLaunch = %s, hideOnLaunch = %s\n" "alarmVolume = %1.3f\n" "FontName = <%s>, FontSize = %3.1f\n" "ClockBitmapNumber=%d, militaryTime = %s.\n" "Overview: x %.1f, y %.1f, w %.1f, h %.1f.\n" "EventLog: x %.1f, y %.1f, w %.1f, h %.1f.\n" "Notepad: x %.1f, y %.1f, w %.1f, h %.1f.\n" "Today: x %.1f, y %.1f, w %.1f, h %.1f.\n\n", directory, alarmSound, playAlarm?"Yes":"No", alarmVolume, compressEvents?"Yes":"No", lowPriority, highPriority, guru?"Yes":"No", showSeconds?"Yes":"No", todayShowTime?"Yes":"No", showDate?"Yes":"No",overviewOnLaunch?"Yes":"No", clockType, notepadOnLaunch?"Yes":"No", eventLogOnLaunch?"Yes":"No", todayOnLaunch?"Yes":"No", hideOnLaunch?"Yes":"No", alarmVolume, fontName, fontSize, clockBitmapNumber, militaryTime?"Yes":"No", overviewFrame.origin.x, overviewFrame.origin.y, overviewFrame.size.width, overviewFrame.size.height, eventLogFrame.origin.x, eventLogFrame.origin.y, eventLogFrame.size.width, eventLogFrame.size.height, notepadFrame.origin.x, notepadFrame.origin.y, notepadFrame.size.width, notepadFrame.size.height, todayFrame.origin.x, todayFrame.origin.y, todayFrame.size.width, todayFrame.size.height ); #endif return self; } - display:sender { [self load: self]; [alarmSoundForm setStringValue: alarmSound at:0]; [alarmSoundButton setState: playAlarm]; [alarmSoundForm setEnabled: playAlarm]; [playButton setEnabled: playAlarm]; [setButton setEnabled: playAlarm]; [stopButton setEnabled: FALSE]; [compressEventsButton setState: compressEvents]; [hideOnLaunchButton setState: hideOnLaunch]; [showSecondsButton setState: showSeconds]; [showDateButton setState: showDate]; [todayShowTimeButton setState: todayShowTime]; [overviewOnLaunchButton setState: overviewOnLaunch]; [notepadOnLaunchButton setState: notepadOnLaunch]; [eventLogOnLaunchButton setState: eventLogOnLaunch]; [sourceLoginOnLaunchButton setState: sourceLoginOnLaunch]; [todayOnLaunchButton setState: todayOnLaunch]; [weekOnLaunchButton setState: weekOnLaunch]; [militaryTimeButton setState: militaryTime]; [clockFaceMatrix selectCellWithTag: clockBitmapNumber]; [clockTypeButton setState: clockType]; if( alarmVolume >= 0) { [volumeButton setState: TRUE]; [volumeSlider setEnabled: TRUE]; [volumeTextField setStringValue: ""]; [volumeSlider setFloatValue: (float) pow(10,alarmVolume)]; } else { float volL, volR; [Sound getVolume: &volL: &volR]; [volumeTextField setStringValue: "System Volume"]; [volumeSlider setEnabled: FALSE]; [volumeSlider setFloatValue: (float) pow(10,((volL+volR)/2))]; [volumeButton setState: FALSE]; } [self makeKeyAndOrderFront:self]; [self setDocEdited: FALSE]; return self; } - save // For compatibility with TextWindow save method { // when called by Cassandra app [self save: self]; return self; } - save:sender { char string[20]; BOOL changeQueue; changeQueue = FALSE; guru = [guruButton state]; showSeconds = [showSecondsButton state]; showDate = [showDateButton state]; todayShowTime = [todayShowTimeButton state]; hideOnLaunch = [hideOnLaunchButton state]; overviewOnLaunch = [overviewOnLaunchButton state]; notepadOnLaunch = [notepadOnLaunchButton state]; eventLogOnLaunch = [eventLogOnLaunchButton state]; sourceLoginOnLaunch = [sourceLoginOnLaunchButton state]; todayOnLaunch = [todayOnLaunchButton state]; weekOnLaunch = [weekOnLaunchButton state]; playAlarm = [alarmSoundButton state]; compressEvents = [compressEventsButton state]; militaryTime = [militaryTimeButton state]; clockType = [clockTypeButton state]; strcpy(alarmSound , (char *) [alarmSoundForm stringValueAt:0]); alarmVolume = ([volumeButton state]? (log10([volumeSlider floatValue])): -1.0); clockBitmapNumber = [clockFaceMatrix selectedTag]; [cassandra defaultsDidChange:self]; [self saveWindowPositions: self]; NXWriteDefault(PROGNAME,DEFAULTALARMSOUND, alarmSound); NXWriteDefault(PROGNAME,DEFAULTSHOWSECONDS,(showSeconds?"Yes":"No")); NXWriteDefault(PROGNAME,DEFAULTSHOWDATE,(showDate ? "Yes" : "No")); NXWriteDefault(PROGNAME,DEFAULTTODAYSHOWTIME, (todayShowTime ? "Yes" : "No")); NXWriteDefault(PROGNAME,DEFAULTPLAYALARM, (playAlarm ? "Yes" : "No")); NXWriteDefault(PROGNAME,DEFAULTCOMPRESSEVENTS, (compressEvents?"Yes":"No")); NXWriteDefault(PROGNAME,DEFAULTFONTNAME, fontName); sprintf(string,"%3.1f",fontSize); NXWriteDefault (PROGNAME, DEFAULTFONTSIZE, string); NXWriteDefault(PROGNAME, DEFAULTEVENTLOGONLAUNCH, (eventLogOnLaunch ? "Yes" : "No")); NXWriteDefault(PROGNAME, DEFAULTHIDEONLAUNCH, (hideOnLaunch ? "Yes" : "No")); NXWriteDefault(PROGNAME,DEFAULTNOTEPADONLAUNCH, (notepadOnLaunch ?"Yes":"No")); NXWriteDefault(PROGNAME, DEFAULTOVERVIEWONLAUNCH, (overviewOnLaunch ? "Yes" : "No")); NXWriteDefault(PROGNAME, DEFAULTSOURCELOGINONLAUNCH, (sourceLoginOnLaunch ? "Yes" : "No")); NXWriteDefault(PROGNAME, DEFAULTTODAYONLAUNCH, (todayOnLaunch ? "Yes" : "No")); NXWriteDefault(PROGNAME, DEFAULTWEEKONLAUNCH, (weekOnLaunch ? "Yes" : "No")); NXWriteDefault(PROGNAME,DEFAULTMILITARYTIME,(militaryTime?"Yes":"No")); sprintf(string,"%d",clockType); NXWriteDefault (PROGNAME, DEFAULTCLOCKTYPE, string); sprintf(string,"%f",alarmVolume); NXWriteDefault (PROGNAME, DEFAULTALARMVOLUME, string); sprintf (string, "%d", clockBitmapNumber); NXWriteDefault(PROGNAME, DEFAULTCLOCKFACENUMBER, string); #ifdef DEBUG fprintf(stderr,"Global defaults written.\n"); fprintf(stderr, "Directory = <%s>\n" "Alarm = %s, playAlarm = %s.\n" "Guru = %s\n" "ShowSeconds = %s, todayShowTime = %s\n" "ShowDate = %s, clockType = %d\n" "overviewOnLaunch = %s, hideOnLaunch = %s\n" "notepadOnLaunch = %s, eventLogOnLaunch = %s\n" "sourceLoginOnLaunch = %s,\n" "FontName = <%s>, FontSize = %3.1f\n" "alarmVolume = %f\n" "ClockBitmapNumber=%d, militaryTime = %s.\n\n", eventFile, alarmSound, playAlarm?"Yes":"No", guru?"Yes":"No", showSeconds?"Yes":"No", todayShowTime?"Yes":"No", showDate?"Yes":"No", clockType, overviewOnLaunch?"Yes":"No", hideOnLaunch?"Yes":"No", notepadOnLaunch?"Yes":"No", eventLogOnLaunch?"Yes":"No", sourceLoginOnLaunch?"Yes":"No", fontName, fontSize, alarmVolume, clockBitmapNumber, militaryTime?"Yes":"No"); #endif [self setDocEdited: FALSE]; return self; } // Method: - saveWindowPositions: sender // Arguments: id sender (ignored) // Description: Saves the current window positions into the // Defaults database. // Return Value: self - saveWindowPositions: sender { #ifdef DEBUG fprintf(stderr, "[global saveWindowPositions:sender]\n"); #endif [self saveThisWindowPosition: DEFAULTOVERVIEWFRAME: overview]; [self saveThisWindowPosition: DEFAULTNOTEPADFRAME: notepad]; [self saveThisWindowPosition: DEFAULTEVENTLOGFRAME: eventLog]; [self saveThisWindowPosition: DEFAULTTODAYFRAME: today]; [self saveThisWindowPosition: DEFAULTWEEKFRAME: week]; return self; } // Method: - saveThisWindowPosition: (char *) defaultName :sender // Arguments: (char *) defaultName -> the place in the defaults // database to save it // (id) sender: the sender window // Description: Saves the current window position of the sender // into the Defaults database. // Return Value: self - saveThisWindowPosition: (char *) defaultName : (id) window { char string[20]; NXRect windowFrame; #ifdef DEBUG fprintf(stderr, "[global saveThisWindowPosition::]\n"); #endif if( ! [window isKindOf: [Window class] ]) { fprintf(stderr,"Global -> SaveThisWindowPosition ERROR:" "Sender isn't of Window class. Contact Jiro.\n"); return self; } if( [window isVisible]) { [window getFrame: &windowFrame]; sprintf (string, "x%.0fy%.0fw%.0fh%.0f", windowFrame.origin.x, windowFrame.origin.y, windowFrame.size.width, windowFrame.size.height); NXWriteDefault(PROGNAME, defaultName, string); #ifdef DEBUG fprintf(stderr,"defaultName %s: %s\n", defaultName,string); #endif } return self; } // Method: - guru: sender // Arguments: id sender (ignored) // Description: Called when the user hits the guru button in // Preferences window. Verifies that they want to do it. // - guru : sender { /* If the guru button has been turned on */ if( [guruButton state] == TRUE) if( NXRunAlertPanel(NULL,"The Guru Editor is very dangerous. Are you sure you want to turn it on?","NO","Yes",NULL) == 1) [guruButton setState: FALSE]; [self windowChanged: self]; return self; } - windowChanged: sender { [self setDocEdited: TRUE]; return self; } - clockTypeChanged: sender { [self windowChanged: self]; clockType = [clockTypeButton state]; if( clockType == CLOCK_DIGITAL) [clockFaceMatrix setEnabled: FALSE]; return self; } - close { #ifdef DEBUG fprintf(stderr,"Global window about to close. " "Checking save.\n"); #endif if( [self isDocEdited] && [self isVisible]) { if (NXRunAlertPanel("Preferences not saved", "You have made changes to this window. " "Do you want to save them?", "Save","Don't Save",NULL) == 1 ) [self save: self]; } [super close]; return self; } - volumeButtonHit: sender { if( [volumeButton state]) { float vol1, vol2; [Sound getVolume: &vol1: &vol2]; [volumeSlider setEnabled: TRUE]; [volumeTextField setStringValue: ""]; [volumeSlider setFloatValue: (float) pow(10,((vol1+vol2)/2))]; } else { [volumeTextField setStringValue: "System Volume"]; [volumeSlider setEnabled: FALSE]; } return self; } - trackVolumeSlider: sender { alarmVolume = log10([volumeSlider floatValue]); [volumeTextField setStringValue: ""]; return self; } - sound: sender { if( [alarmSoundButton state]) { [alarmSoundForm setEnabled: TRUE]; [playButton setEnabled: TRUE]; [setButton setEnabled: TRUE]; } else { [alarmSoundForm setEnabled: FALSE]; [playButton setEnabled: FALSE]; [setButton setEnabled: FALSE]; } return self; } - playSound:sender { int error; if( index((char *)[alarmSoundForm stringValueAt:0], '/')==(char *)0) soundfile = [Sound findSoundFor: (char *) [alarmSoundForm stringValueAt:0]]; else soundfile = [[Sound alloc] initFromSoundfile: (char *) [alarmSoundForm stringValueAt:0]]; if( soundfile != nil) { [soundfile setDelegate: self]; // From 1.0 Docs, Sound Kit, pp22-498 [Sound getVolume: &oldVolumeLeft:&oldVolumeRight]; if( [self volume] >= 0) [Sound setVolume: [self volume] : [self volume]]; error = [soundfile play]; if( error == 0) // No error { [stopButton setEnabled : TRUE]; [playButton setEnabled : TRUE]; } else { char errorString[200]; // Restore old volume [Sound setVolume: oldVolumeLeft: oldVolumeRight]; sprintf(errorString, "Error #%d (%s) occured while " "trying to play the sound <%s>.\n", error, SNDSoundError(error), [alarmSoundForm stringValueAt:0]); NXRunAlertPanel("Alarm Error",errorString, "Oh well...",NULL,NULL); } } else { NXRunAlertPanel("Sound not found", "I couldn't find that sound.", "Oh well...",NULL,NULL); [alarmSoundForm selectText:self]; } return self; } - checkSound:sender { if( ([Sound findSoundFor: (char *) [alarmSoundForm stringValueAt:0]] == nil) || ( access( [alarmSoundForm stringValueAt:0], R_OK) == -1)) { NXRunAlertPanel("Sound not found", "I couldn't find that sound. Please double check.", "OK",NULL,NULL); [alarmSoundForm selectText:self]; } return self; } - stopSound:sender { [soundfile stop]; return self; } - setSound: sender { OpenPanel *myOpenPanel; char tempDir[128], *tempFile; myOpenPanel = [OpenPanel new]; if( index(alarmSound, '/') == (char *) 0) // If the present isn't strcpy( alarmSound,ALARMSOUND); // a path to a sound strcpy(tempDir, alarmSound); tempFile = rindex(tempDir,'/') + 1; *(rindex (tempDir,'/')) = '\0'; #ifdef DEBUG fprintf(stderr,"Open directory <%s> with file <%s>\n", tempDir, tempFile); #endif if( [myOpenPanel runModalForDirectory: tempDir file: tempFile types: alarmExtensions] == 0) return self; strcpy( alarmSound, [myOpenPanel filename]); [alarmSoundForm setStringValue: alarmSound at: 0]; return self; } - willPlay : sender { #ifdef DEBUG fprintf(stderr,"Alarm sound starting with volume %f.\n", [self volume]); #endif [playButton setEnabled: FALSE]; return self; } - hadError : sender { char errorString[200]; int error = [[sender soundBeingProcessed] processingError]; sprintf(errorString, "Error #%d (%s) occured while playing the sound <%s>.\n", error, SNDSoundError(error), [alarmSoundForm stringValueAt:0]); NXRunAlertPanel("Alarm Error",errorString, "Oh well...",NULL,NULL); [stopButton setEnabled: FALSE]; if( [alarmSoundButton state]) [playButton setEnabled: TRUE]; else [playButton setEnabled: FALSE]; // Restore old volume [Sound setVolume: oldVolumeLeft: oldVolumeRight]; return self; } - didPlay:sender { [soundfile free]; [stopButton setEnabled: FALSE]; if( [alarmSoundButton state]) [playButton setEnabled: TRUE]; else [playButton setEnabled: FALSE]; // Restore old volume [Sound setVolume: oldVolumeLeft: oldVolumeRight]; return self; } - (int) lowPriority { return lowPriority; } - (int) highPriority { return highPriority; } - (int) clockType { return clockType; } - (float) volume { return alarmVolume; } - (double) fontSize { return fontSize; } - (const char *) alarmSound { return alarmSound; } - (const char *) eventFile { return eventFile; } - (const char *) eventLogFile { return eventLogFile; } - (const char *) notepadFile { return notepadFile; } - (const char *) fontName { return fontName; } - (const char *) sourceLoginFile { return sourceLoginFile; } - (const char *) sourceLogoutFile { return sourceLogoutFile; } - (BOOL) autoLaunched { return autoLaunched; } - (BOOL) compressEvents { return compressEvents; } - (BOOL) eventLogOnLaunch { return eventLogOnLaunch; } - (BOOL) guru { return guru; } - (BOOL) hideOnLaunch { return hideOnLaunch; } - (BOOL) notepadOnLaunch { return notepadOnLaunch; } - (BOOL) overviewOnLaunch { return overviewOnLaunch; } - (BOOL) playAlarm { return playAlarm; } - (BOOL) showSeconds { return showSeconds; } - (BOOL) showDate { return showDate;} - (BOOL) sourceLoginOnLaunch { return sourceLoginOnLaunch; } - (BOOL) todayOnLaunch { return todayOnLaunch; } - (BOOL) todayShowTime { return todayShowTime; } - (BOOL) militaryTime { return militaryTime; } - (BOOL) weekOnLaunch { return weekOnLaunch; } - (NXRect *) overviewFrame { return &overviewFrame; } - (NXRect *) eventLogFrame { return &eventLogFrame; } - (NXRect *) notepadFrame { return ¬epadFrame; } - (NXRect *) todayFrame { return &todayFrame; } - (NXRect *) weekFrame { return &weekFrame; } - (const char *) clockfaceBitmapName { static char bitmapName[30]; sprintf(bitmapName, "%s%d", BITMAPNAME, clockBitmapNumber); return bitmapName; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.