This is CookieController.m in view mode; [Download] [Up]
/* Generated by Interface Builder */
#import "CookieController.h"
#import "PreferencesController.h"
#import <appkit/appkit.h>
#import <appkit/Font.h>
#import "CookieFile.h"
#import <defaults.h>
#import <libc.h>
#define MINWIDTH 200.0
#define MINHEIGHT 150.0
NXDefaultsVector mydefaults = {
{ "Status","ALIVE" },
{ "Timer","NO" },
{ "Seconds", "60" },
{ "MainFrame","175 555 533 220" },
{ "NXFont", "Ohlfs" },
{ "NXFontSize","10.0" },
{ NULL } };
void RunCookieEntry(DPSTimedEntry te, double timeNow, void *data)
{
/* we set data to self so we can call this method from the timed entry */
[(CookieController *)data timedEntry];
}
@implementation CookieController
- windowWillClose:sender
{
[NXApp terminate:self];
return self;
}
- windowWillResize:window toSize:(NXSize *)size
{
if (size->width < MINWIDTH) size->width = MINWIDTH;
if (size->height < MINHEIGHT) size->height = MINHEIGHT;
return self;
}
- timedEntry
{
if([prefs flags]&PREF_DEAD)
[NXApp terminate:self];
if([prefs flags]&PREF_TIMER)
[self newCookie:self];
return self;
}
- newCookie:sender
{
int count,cookieCount = [((List *)cookieList) count];
CookieFile *cookieFile;
Cookie *cookie;
char text[2048];
int length = 0,random_size;
// First of all check to see if there are any cookies
if(!cookieCount)
{
NXRunAlertPanel("Fatal Application Error",
"There are no cookies to display!","OK!",NULL,NULL);
[NXApp terminate:self];
}
// The have a look see if there are any selected
for(count = 0; count < cookieCount; count++)
{
cookieFile = [cookieList objectAt:count];
if([cookieFile selected])
length += [cookieFile filelength];
}
if(!length)
{
NXRunAlertPanel("Application Error",
"There are no cookies selected to display, please select some","OK!",
NULL,NULL);
[prefs startPreferences:self];
return self;
}
random_size = random()%length;
for(count = 0,length = 0; count < cookieCount; count++)
{
cookieFile = [cookieList objectAt:count];
if(![cookieFile selected])
continue;
if((random_size >= length) &&
(random_size <= (length+[cookieFile filelength])))
break;
length += [cookieFile filelength];
}
cookieFile = [cookieList objectAt:count];
cookie = [cookieFile pickRandom];
[[titleText setStringValue:[cookie title]] display];
text[0] = 0;
for(count = 0; count < [[cookie cookieLines] count]; count++)
{
strcat(text,[[[cookie cookieLines] objectAt:count] string]);
strcat(text,"\n");
}
[[bodyText docView] setText:text];
return self;
}
- appDidInit:sender
{
flags.entry_running = FALSE;
srandom(time(0));
NXRegisterDefaults([NXApp appName], mydefaults);
[prefs getPreferences];
[self setWindowPrefs];
[self newCookie:self];
if(!strcmp(NXGetDefaultValue([NXApp appName],"NXAutoLaunch"),"YES"))
[cookieWindow setFloatingPanel:TRUE];
[cookieWindow makeKeyAndOrderFront:self];
return self;
}
- setWindowPrefs
{
Font *font;
NXRect myRect;
font = [Font newFont:[prefs fontname] size:[((PreferencesController *)prefs) fontsize]];
[[bodyText docView] setFont:font];
myRect = [prefs windowframe];
[cookieWindow placeWindowAndDisplay:&myRect];
return self;
}
- newPrefs
{
if(flags.entry_running)
{
DPSRemoveTimedEntry(myTimedEntry);
flags.entry_running = FALSE;
}
if(([prefs flags]&PREF_DEAD) || ([prefs flags]&PREF_TIMER))
{
myTimedEntry =
DPSAddTimedEntry((float)[prefs seconds],
&RunCookieEntry,self,NX_BASETHRESHOLD);
flags.entry_running = TRUE;
}
return self;
}
- (float)fontsize
{
return [[[bodyText docView] font] pointSize];
}
- (const char *)fontname
{
return [[[bodyText docView] font] name];
}
- (NXRect)getWindowRect
{
NXRect myRect;
[cookieWindow getFrame:&myRect];
return myRect;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.