This is EditEvent.m in view mode; [Download] [Up]
// // EditEvent.m // Copyright (c) 1989, 1990 by Jiro Nakamura // All rights reserved // // This is the control object that handles the window that allows the user to // edit Cassandra's database // // RCS Information // Revision Number-> $Revision: 2.3 $ // Last Revised-> $Date: 91/11/01 17:23:11 $ // static char rcsid[] = "$Id: EditEvent.m,v 2.3 91/11/01 17:23:11 jiro Exp Locker: jiro $"; #import <appkit/Form.h> #import <appkit/Button.h> #import <appkit/Matrix.h> #import <appkit/Panel.h> /* for NXRunAlertPanel() */ #import <appkit/publicWraps.h> /* for NXBeep( ) */ #import "calendar.h" #import "Event.h" #import "Global.h" #import "EditEvent.h" #import "Cassandra.h" @implementation EditEvent /* The main reason for the following method is just to avoid warnings * about rcsid being unreferenced... Garance/Jul 28/94 */ - (const char *) returnRcsid { return rcsid; } - open: sender { ev = [Event newAt: [global eventFile]]; [ev firstEvent]; [hereForm setIntValue: [ev present] at:0]; [self readEvent:self]; return self; } - readEvent:sender { EFileLink here, previous, next; here = [hereForm intValueAt:0]; if( here < 0) { NXRunAlertPanel("File Read Error", "Sorry, you can't read from negative event numbers.", "Ahh..", NULL,NULL); return self; } [ev readEvent : here]; next = [ev next]; previous = [ev previous]; if( ![global guru]) { if( here == 0) NXRunAlertPanel("Warning", "You are reading event 0. " "It is where important event linking and " "global information is kept. Be very careful " "when modifying any of the variables in it.", "OK",NULL,NULL); if( next == -1 || previous == -1) NXRunAlertPanel("Warning", "This is a deleted event. The values in it " "are now meaningless.","OK",NULL,NULL); } vHere = here; vNow = *[ev time]; [nextForm setIntValue : next]; [previousForm setIntValue : previous]; if( [global guru]) { [nextForm setEnabled: TRUE]; [previousForm setEnabled: TRUE]; } else { [nextForm setEnabled: FALSE]; [previousForm setEnabled: FALSE]; } [self displayValues: self]; [hereForm selectTextAt:0]; return self; } - writeEvent:sender { int here, previous, next, vAnniv; here = [hereForm intValueAt:0]; next = [nextForm intValueAt:0]; previous = [previousForm intValueAt:0]; if( here == 0) { if(NXRunAlertPanel("Alert!", "Event 0 is an important header location. " "Are you SURE you want to overwrite it?", "Overwrite","Cancel", NULL ) == 0) return self; } if( here < 0) { NXRunAlertPanel("File Write Error", "Sorry, you can't " "write to negative event numbers.", "Ahh..", NULL,NULL); return self; } if( vHere != here && NXRunAlertPanel("Event Mismatch in Writing", "The event you read from is not the same " "as the one you are writing to. " "Are you SURE you want to do this?", "Cancel","Write",NULL) == 1) return self; [ev setMessage : (char *) [messageForm stringValueAt:0]]; [ev setShowMessage: [messageButton state]]; switch( [alarmSoundRadioMatrix selectedRow] ) { case 0: // sound [ev setAlarmAction: 1]; break; case 1: // runCommand [ev setAlarmAction: 3]; break; case 2: // nada [ev setAlarmAction: 0]; break; } [ev setAlarmSound : (char *) [alarmSoundForm stringValueAt:0]]; [ev setTime: [self getDate: self]]; if( [anniversaryForm intValueAt:0] > 99) { NXRunAlertPanel("Anniversary Overload", "Due to a design error that cannot be fixed until " "Version 2.0, you cannot have a reoccuring event " "of more than 99 intervals.","OK",NULL,NULL); [anniversaryForm selectTextAt: 0]; return nil; } vAnniv = ([anniversaryRadioMatrix selectedCol] +1 ) * 100; [ev setAnniversary: ([anniversaryButton state] ? ([anniversaryForm intValueAt:0] + vAnniv) : 0) ]; [ev setDestroy: 0]; // Destroy not supported after v0.9.2 [ev setSnoozeNo: ([snoozeButton state] ? [snoozeNoForm intValueAt:0] : 0)]; [ev setSnoozeInt: ([snoozeButton state] ? [snoozeIntForm intValueAt:0] : 0)]; [ev setPriority: ([priorityRadioMatrix selectedCol]*50)]; [ev setNext : next]; [ev setPrevious : previous]; if( ! [global guru] && (timeCompare(&vNow, [ev time]) != 0)) { if(NXRunAlertPanel( "Warning", "You have changed the date or time, use " "re-insert to put the event back in the " "queue. Insert will duplicate the " "event.","Insert","Cancel",NULL) == 0) return self; } [ev writeEvent : here]; [hereForm selectTextAt:0]; if( ![global guru]) /* If we're not a guru, then update */ [cassandra queueDidChange:self]; // The window has been saved [self setDocEdited: FALSE]; return self; } - murderEvent : sender { int here, next; here = [hereForm intValueAt:0]; [ev readEvent: here]; next = [ev next]; if( [ev present] <= 0) { NXRunAlertPanel("Delete Error", "Cannot reset/cancel events 0 or below.", "Oh well...",NULL,NULL); return self; } if( NXRunAlertPanel("Warning", "This will reset this event. " "Are you sure you want to do this?", "Reset","Cancel",NULL) == 0) return self; here = [ev murderEvent : here]; // If the event was truly deleted when canceled, then we will // read the next event, otherwise we will read the event // EFileLink returned by murderEvent if( here != -1) next = here; [hereForm setIntValue : next at: 0]; [self readEvent:self]; [cassandra queueDidChange:self]; return self; } - deleteEvent:sender { int here, next; here = [hereForm intValueAt:0]; [ev readEvent: here]; next = [ev next]; if( [ev present] <= 0) { NXRunAlertPanel("Delete Error", "Cannot delete events 0 or below.", "Oh well...",NULL,NULL); return self; } if( NXRunAlertPanel("Warning", "This will permanently delete this event. " "Are you sure you want to do this?", "Delete","Cancel",NULL) == 0) return self; [ev deleteEvent : here]; [hereForm setIntValue : next at: 0]; [self readEvent:self]; [cassandra queueDidChange:self]; return self; } - insertEvent:sender { if( ![global guru]) { if( NXRunAlertPanel("Warning", "You really should use the Add Event panel. " "Using insert on an already existing " "record will duplicate it.", "Insert","Cancel",NULL) == 0) return self; } [super insertEvent : self]; if( ![global guru]) [cassandra queueDidChange:self]; return self; } - reinsertEvent:sender { int here, vAnniv; here = [hereForm intValueAt:0]; if( vHere != here) { if(NXRunAlertPanel("Event Mismatch on Re-insert", "The event you read from is not the same " "as the one you are reinserting into. " "This could mess things up PRETTY BADLY. " "Are you SURE you want to do this?", "Re-insert","Cancel",NULL) == 0) return self; } if(here <= 0) { NXRunAlertPanel("Reinsert Error", "Cannot reinsert events 0 or below.", "Oh well...",NULL,NULL); return self; } if( [self dateFinished: self] == NULL) return self; [ev readEvent: here]; [ev deleteEvent : here]; [ev setMessage : (char *) [messageForm stringValueAt:0]]; [ev setShowMessage: [messageButton state]]; switch( [alarmSoundRadioMatrix selectedRow] ) { case 0: // sound [ev setAlarmAction: 1]; break; case 1: // runCommand [ev setAlarmAction: 3]; break; case 2: // nada [ev setAlarmAction: 0]; break; } [ev setAlarmSound : (char *) [alarmSoundForm stringValueAt:0]]; [ev setTime: [self getDate: self]]; if( [anniversaryForm intValueAt:0] > 99) { NXRunAlertPanel("Anniversary Overload", "Due to a design error that cannot be fixed until " "Version 1.1, you cannot have a reoccuring event of " "more than 99 intervals.","OK",NULL,NULL); [anniversaryForm selectTextAt: 0]; return nil; } vAnniv = ([anniversaryRadioMatrix selectedCol] +1 ) * 100; [ev setAnniversary: ([anniversaryButton state] ? ([anniversaryForm intValueAt:0] + vAnniv) : 0) ]; [ev setDestroy: 0]; // Destroy not supported after v0.9.2 [ev setSnoozeNo: ([snoozeButton state] ? [snoozeNoForm intValueAt:0] : 0)]; [ev setSnoozeInt: ([snoozeButton state] ? [snoozeIntForm intValueAt:0] : 0)]; [ev setPriority: ([priorityRadioMatrix selectedCol]*50)]; [ev insertEvent]; [hereForm setIntValue :[ev present] at: 0]; [self readEvent:self]; if( ![global guru]) [cassandra queueDidChange:self]; return self; } - nextLink : sender { int here; here = [nextForm intValueAt:0]; if( here == 0 && [global guru] == NO) { NXBeep(); return self; } [hereForm setIntValue: here at:0]; [self readEvent:self]; return self; } - previousLink : sender { int here; here = [previousForm intValueAt:0]; if( here == 0 && [global guru] == NO) { NXBeep(); return self; } [hereForm setIntValue: here at:0]; [self readEvent:self]; return self; } - nextEvent : sender { int here; here = [hereForm intValueAt:0]+1; [hereForm setIntValue: here at:0]; [self readEvent:self]; return self; } - previousEvent : sender { int here; here = [hereForm intValueAt:0] -1 ; [hereForm setIntValue: here at:0]; [self readEvent:self]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.