This is CalObject.m in view mode; [Download] [Up]
#import "CalObject.h"
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
@implementation CalObject
NXRect frame;
int temp_x, temp_y;
// Calendar by Eric "E.T." Tremblay, February 14, 1993
//INIT
// This is one of the first methods executed. (Presently not used)
// after the nib is loaded. This is not the best way to initialize
// an object because not all method and varibles are ready to be used.
- init
{
[super init];
return self;
}
// AWAKEFROMNIB
// This is one of the last methods executed after the nib file is loaded.
// This is the BEST way I know how to initialize an object and jump into
// a method after the nib file was loaded, because you are all the methods
// and variables needed can be used. (Unlike init which is not compeletly
// ready when that message is sent
- awakeFromNib
{
[self NowCalendar:NULL];
return self;
}
- windowDidMove:sender;
{
//Local variables
NXRect frame;
int calendarPanel_x, calendarPanel_y;
int Month_x = 0;
int Month_y = 0;
int Year_x = 0;
int Year_y = 0;
[calendarPanel getFrame:&frame]; // Get the current xy position
calendarPanel_x = NX_X(&frame);// Assign current x location to variable
calendarPanel_y = NX_Y(&frame);// Assign current y location to variable
Month_x = calendarPanel_x + 327;
Month_y = calendarPanel_y + 5;
Year_x = calendarPanel_x + 68;
Year_y = calendarPanel_y - 136;
[MonthPanel moveTo:(Month_x):(Month_y)]; // re-position the MonthPanel
[YearPanel moveTo:(Year_x):(Year_y)]; // re-position the YearPanel
return self;
}
// NOWCALENDAR
// This gets the present date and executes the rebuildCalView method
- NowCalendar:sender
{
// Local Variables
long time(), tmpTime;
struct tm *tm, *localtime();
tmpTime = time(0);
tm = localtime( &tmpTime );
month = (tm->tm_mon+1);
year = (1900+tm->tm_year);
[self rebuildCalView:sender];
return self;
}
// REBUILDCALVIEW
// This method builds the proper calendar in the window
- rebuildCalView:sender
{
// Local Variables
FILE *calCmd;
char c, buff[256], *pbuff;
[calendarPanel makeKeyAndOrderFront:NULL];
sprintf( buff, "cal %d %d", month, year );
if ( (calCmd=popen(buff, "r")) == NULL )
[theCalView setStringValue:"Can't build calendar!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[theCalView setStringValue:buff];
}
[theCalView display];
return self;
}
// LASTMONTH
- lastMonth:sender
{
if ( --month == 0 ) {
month = 12;
[self lastYear:sender];
}
else
[self rebuildCalView:sender];
return self;
}
// LASTYEAR
- lastYear:sender
{
year--;
if (year<1900) year =1900; /* Does not go lower then that year */
[self rebuildCalView:sender];
return self;
}
// NEXTMONTH
- nextMonth:sender
{
if ( month++ == 12 )
{
month = 1;
[self nextYear:sender];
}
else
[self rebuildCalView:sender];
return self;
}
// NEXTYEAR
- nextYear:sender
{
year++;
[self rebuildCalView:sender];
return self;
}
// SETYEAR
- SetYear:sender
{
year = [SelectYearDisplay intValue];
[YearPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// JANUARY
- January:sender
{
month = 1;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// FEBRUARY
- February:sender
{
month = 2;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// MARCH
- March:sender
{
month = 3;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// APRIL
- April:sender
{
month = 4;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// MAY
- May:sender
{
month = 5;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// JUNE
- June:sender
{
month = 6;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// JULY
- July:sender
{
month = 7;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// AUGUST
- August:sender
{
month = 8;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// SEPTEMBER
- September:sender
{
month = 9;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// OCTOBER
- October:sender
{
month = 10;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// NOVEMBER
- November:sender
{
month = 11;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// DECEMBER
- December:sender
{
month = 12;
[MonthPanel performClose:sender];
[self rebuildCalView:sender];
return self;
}
// PRINTCALENDAR
- PrintCalendar:sender
// This method will print the theCalView to the printer
// Printing is rather simple; just send printPSCode: to the text view
// you wish to print. The print panel will automatically pop up and unless
// the user cancels the printout the text view will be printed.
{
[theCalView printPSCode:self];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.