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 >
C/C++ Source or Header  |  2000-04-16  |  4KB  |  169 lines

  1. #include <Pilot.h>
  2. #include "callback.h"
  3. #include "rude.h"
  4. #include "words.h"
  5.  
  6. static FieldPtr SetFieldText(Word fid, CharPtr s) {
  7.   Handle hdl, oldhdl;
  8.   FieldPtr fld;
  9.   FormPtr frm;
  10.   
  11.   hdl = (Handle) MemHandleNew(StrLen(s) + 1);
  12.   if (!hdl)
  13.     return NULL;
  14.   StrCopy(MemHandleLock((VoidHand) hdl), s);
  15.   MemHandleUnlock((VoidHand) hdl);
  16.   frm = FrmGetActiveForm();
  17.   fld = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, fid));
  18.   ErrNonFatalDisplayIf(!fld, "missing field");
  19.   oldhdl = FldGetTextHandle(fld);
  20.   FldSetTextHandle(fld, hdl);
  21.   FldDrawField(fld);
  22.   if (oldhdl)
  23.     MemHandleFree((VoidHand) oldhdl);
  24.   return fld;
  25. }
  26.  
  27. static void SentenceGen() {
  28.   Char s[256];
  29.   CharPtr args[14];
  30.  
  31.   args[0] = faster[SysRandom(0) % SZ(faster)];
  32.   args[1] = said[SysRandom(0) % SZ(said)];
  33.   args[2] = femaleadj[SysRandom(0) % SZ(femaleadj)];
  34.   args[3] = female[SysRandom(0) % SZ(female)];
  35.   args[4] = maleadj[SysRandom(0) % SZ(maleadj)];
  36.   args[5] = male[SysRandom(0) % SZ(male)];
  37.   args[6] = diddled[SysRandom(0) % SZ(diddled)];
  38.   args[7] = titadj[SysRandom(0) % SZ(titadj)];
  39.   args[8] = tits[SysRandom(0) % SZ(tits)];
  40.   args[9] = thrust[SysRandom(0) % SZ(thrust)];
  41.   args[10] = cockadj[SysRandom(0) % SZ(cockadj)];
  42.   args[11] = cock[SysRandom(0) % SZ(cock)];
  43.   args[12] = twatadj[SysRandom(0) % SZ(twatadj)];
  44.   args[13] = twat[SysRandom(0) % SZ(twat)];
  45.   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);
  46.   SetFieldText(SentenceField, s);
  47. }
  48.  
  49. static Boolean MainFormHandleEvent (EventPtr event) {
  50.     Boolean handled = false;
  51.     FormPtr frm;
  52.     
  53. #ifdef __GNUC__    
  54.     CALLBACK_PROLOGUE
  55. #endif
  56.       
  57.     switch (event->eType) {
  58.     case frmOpenEvent:
  59.     frm = FrmGetActiveForm();
  60.     FrmDrawForm(frm);
  61.     SentenceGen();
  62.     handled = true;
  63.     break;
  64.  
  65.     case menuEvent:
  66.     MenuEraseStatus(NULL);
  67.  
  68.     switch(event->data.menu.itemID) {
  69.       case AbootMenu:
  70.         FrmAlert(AbootAlert);
  71.         handled = true;
  72.         break;
  73.     }
  74.  
  75.         handled = true;
  76.     break;
  77.  
  78.     case ctlSelectEvent:
  79.     switch(event->data.ctlSelect.controlID) {
  80.       case NewButton:
  81.         SentenceGen();
  82.         handled = true;
  83.         break;
  84.     }
  85.     break;
  86.  
  87.     default:
  88.         break;
  89.     }
  90.     
  91. #ifdef __GNUC__
  92.     CALLBACK_EPILOGUE
  93. #endif
  94.  
  95.     return handled;
  96. }
  97.  
  98. static Boolean ApplicationHandleEvent(EventPtr e)
  99. {
  100.     FormPtr frm;
  101.     Word    formId;
  102.     Boolean handled = false;
  103.  
  104.     if (e->eType == frmLoadEvent) {
  105.     formId = e->data.frmLoad.formID;
  106.     frm = FrmInitForm(formId);
  107.     FrmSetActiveForm(frm);
  108.  
  109.     switch(formId) {
  110.     case MainForm:
  111.       FrmSetEventHandler(frm, MainFormHandleEvent);
  112.       break;
  113.     }
  114.     handled = true;
  115.     }
  116.  
  117.     return handled;
  118. }
  119.  
  120. /* Get preferences, open (or create) app database */
  121. static Word StartApplication(void)
  122. {
  123.     FrmGotoForm(MainForm);
  124.     return 0;
  125. }
  126.  
  127. /* Save preferences, close forms, close app database */
  128. static void StopApplication(void)
  129. {
  130.     FrmSaveAllForms();
  131.     FrmCloseAllForms();
  132. }
  133.  
  134. /* The main event loop */
  135. static void EventLoop(void)
  136. {
  137.     Word err;
  138.     EventType e;
  139.  
  140.     do {
  141.     EvtGetEvent(&e, evtWaitForever);
  142.     if (! SysHandleEvent (&e))
  143.         if (! MenuHandleEvent (NULL, &e, &err))
  144.         if (! ApplicationHandleEvent (&e))
  145.             FrmDispatchEvent (&e);
  146.     } while (e.eType != appStopEvent);
  147. }
  148.  
  149. /* Main entry point; it is unlikely you will need to change this except to
  150.    handle other launch command codes */
  151. DWord PilotMain(Word cmd, Ptr cmdPBP, Word launchFlags)
  152. {
  153.     Word err;
  154.  
  155.     if (cmd == sysAppLaunchCmdNormalLaunch) {
  156.  
  157.     err = StartApplication();
  158.     if (err) return err;
  159.  
  160.     EventLoop();
  161.     StopApplication();
  162.  
  163.     } else {
  164.     return sysErrParamErr;
  165.     }
  166.  
  167.     return 0;
  168. }
  169.