home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
linuxmafia.com 2016
/
linuxmafia.com.tar
/
linuxmafia.com
/
pub
/
palmos
/
rude-1.3.tar.gz
/
rude-1.3.tar
/
rude
/
rude.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-04-16
|
4KB
|
169 lines
#include <Pilot.h>
#include "callback.h"
#include "rude.h"
#include "words.h"
static FieldPtr SetFieldText(Word fid, CharPtr s) {
Handle hdl, oldhdl;
FieldPtr fld;
FormPtr frm;
hdl = (Handle) MemHandleNew(StrLen(s) + 1);
if (!hdl)
return NULL;
StrCopy(MemHandleLock((VoidHand) hdl), s);
MemHandleUnlock((VoidHand) hdl);
frm = FrmGetActiveForm();
fld = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, fid));
ErrNonFatalDisplayIf(!fld, "missing field");
oldhdl = FldGetTextHandle(fld);
FldSetTextHandle(fld, hdl);
FldDrawField(fld);
if (oldhdl)
MemHandleFree((VoidHand) oldhdl);
return fld;
}
static void SentenceGen() {
Char s[256];
CharPtr args[14];
args[0] = faster[SysRandom(0) % SZ(faster)];
args[1] = said[SysRandom(0) % SZ(said)];
args[2] = femaleadj[SysRandom(0) % SZ(femaleadj)];
args[3] = female[SysRandom(0) % SZ(female)];
args[4] = maleadj[SysRandom(0) % SZ(maleadj)];
args[5] = male[SysRandom(0) % SZ(male)];
args[6] = diddled[SysRandom(0) % SZ(diddled)];
args[7] = titadj[SysRandom(0) % SZ(titadj)];
args[8] = tits[SysRandom(0) % SZ(tits)];
args[9] = thrust[SysRandom(0) % SZ(thrust)];
args[10] = cockadj[SysRandom(0) % SZ(cockadj)];
args[11] = cock[SysRandom(0) % SZ(cock)];
args[12] = twatadj[SysRandom(0) % SZ(twatadj)];
args[13] = twat[SysRandom(0) % SZ(twat)];
StrVPrintF(s, "%s %s the %s %s as the %s %s %s her %s %s and %s his %s %s into her %s %s.", args);
SetFieldText(SentenceField, s);
}
static Boolean MainFormHandleEvent (EventPtr event) {
Boolean handled = false;
FormPtr frm;
#ifdef __GNUC__
CALLBACK_PROLOGUE
#endif
switch (event->eType) {
case frmOpenEvent:
frm = FrmGetActiveForm();
FrmDrawForm(frm);
SentenceGen();
handled = true;
break;
case menuEvent:
MenuEraseStatus(NULL);
switch(event->data.menu.itemID) {
case AbootMenu:
FrmAlert(AbootAlert);
handled = true;
break;
}
handled = true;
break;
case ctlSelectEvent:
switch(event->data.ctlSelect.controlID) {
case NewButton:
SentenceGen();
handled = true;
break;
}
break;
default:
break;
}
#ifdef __GNUC__
CALLBACK_EPILOGUE
#endif
return handled;
}
static Boolean ApplicationHandleEvent(EventPtr e)
{
FormPtr frm;
Word formId;
Boolean handled = false;
if (e->eType == frmLoadEvent) {
formId = e->data.frmLoad.formID;
frm = FrmInitForm(formId);
FrmSetActiveForm(frm);
switch(formId) {
case MainForm:
FrmSetEventHandler(frm, MainFormHandleEvent);
break;
}
handled = true;
}
return handled;
}
/* Get preferences, open (or create) app database */
static Word StartApplication(void)
{
FrmGotoForm(MainForm);
return 0;
}
/* Save preferences, close forms, close app database */
static void StopApplication(void)
{
FrmSaveAllForms();
FrmCloseAllForms();
}
/* The main event loop */
static void EventLoop(void)
{
Word err;
EventType e;
do {
EvtGetEvent(&e, evtWaitForever);
if (! SysHandleEvent (&e))
if (! MenuHandleEvent (NULL, &e, &err))
if (! ApplicationHandleEvent (&e))
FrmDispatchEvent (&e);
} while (e.eType != appStopEvent);
}
/* Main entry point; it is unlikely you will need to change this except to
handle other launch command codes */
DWord PilotMain(Word cmd, Ptr cmdPBP, Word launchFlags)
{
Word err;
if (cmd == sysAppLaunchCmdNormalLaunch) {
err = StartApplication();
if (err) return err;
EventLoop();
StopApplication();
} else {
return sysErrParamErr;
}
return 0;
}