Int DialogChooseTwo( CharPtr fText, CharPtr bOne, CharPtr bTwo ) { FormPtr prevForm, frm; Word hitButton; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmChooseTwo ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Fill it... CtlSetLabel( GetObjectPtr(btnChooseTwo1), bOne ); CtlSetLabel( GetObjectPtr(btnChooseTwo2), bTwo ); SetFieldTextFromStr( fldChooseTwo, fText ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } if( hitButton == btnChooseTwo1 ) return 1; if( hitButton == btnChooseTwo2 ) return 2; return ( -1 ); }
// show dialog modally int wxDialog::ShowModal() { Show (true); if (errNone == FrmDoDialog ((FormType *)wxTopLevelWindow::GetForm())) { return 0; } return -1; }
// Show a registration dialog where a user enters registration code. // if fDeleteAfterCancel is set to true, we'll remove the registration code // from preferences. We want this behavior if "re-enter registration code" was // pressed after registration process failed (this was an invalid registration code // so we don't want the client to send it to the server -> so we erase it). // If this dialog was brought by "Register" menu item, then we don't want to // touch the registration code (we assume it's correct) // TODO: maybe if we're called from "Register" menu and registartion code // is already present (i.e. valid) we should make it harder to edit it by accident // (e.g. make it read only until user makes some action like pressing a "edit" button) static void MainFormHandleRegister(AppContext* appContext, bool fDeleteAfterCancel) { FormType* form=FrmInitForm(formRegistration); if (!form) { FrmAlert(alertMemError); return; } DefaultFormInit(appContext, form); FrmSetEventHandler(form, RegistrationFormHandleEvent); UInt16 button=FrmDoDialog(form); if (buttonRegister!=button) { if (fDeleteAfterCancel) { appContext->prefs.regCode[0] = '\0'; SavePreferencesInoah(appContext); } goto Exit; } UInt16 index=FrmGetObjectIndex(form, fieldRegCode); Assert(frmInvalidObjectId!=index); const FieldType* field=static_cast<FieldType*>(FrmGetObjectPtr(form, index)); Assert(field); const char* regCode=FldGetTextPtr(field); int regCodeLen = (int)FldGetTextLength(field); if ( (NULL != regCode) && (regCodeLen>0) ) { // save the registration code in preferences so that we can // send it in all requests if (regCodeLen>MAX_REG_CODE_LENGTH) { // this is laziness: reg code longer than MAX_REG_CODE_LENGTH // is invalid for sure so we should just display such message // but we'll just use truncated version and go on with normal // processing regCodeLen=MAX_REG_CODE_LENGTH; } SafeStrNCopy((char*)appContext->prefs.regCode, sizeof(appContext->prefs.regCode), regCode, regCodeLen); RemoveNonDigits( (char*)appContext->prefs.regCode ); // save preferences just for sure - so that we don't loose regCode // in case of a crash SavePreferencesInoah(appContext); // send a registration query to the server so that the user // knows if he registered correctly // it doesn't really matter, in the long run, because every time // we send a request, we also send the registration code and // if it's not correct, we'll reject the query StartRegistration(appContext, (const char*)appContext->prefs.regCode); } Exit: FrmDeleteForm(form); }
static void Help (Int id) { FormPtr frm; frm = FrmInitForm (id); if (frm) { FrmDoDialog (frm); FrmDeleteForm (frm); } }
static Err FlickrGetUserCredentials(FlickrPrefs& prefs) { Err err = errNone; FormType* form = NULL; bool formStateSaved = false; FormActiveStateType activeState; FrmSaveActiveState(&activeState); formStateSaved = true; MenuEraseStatus(NULL); form = FrmInitForm(userCredentialsForm); if (NULL == form) { DMSG("FlickrGetUserCredentials(): unable to initialize form");DENDL; err = exgMemError; goto Finish; } err = UserCredentialsFormInit(form, prefs); if (errNone != err) goto Finish; FrmSetActiveForm(form); FrmDrawForm(form); UInt16 button = FrmDoDialog(form); switch (button) { case cancelButton: err = exgErrUserCancel; goto Finish; case okButton: UserCredentialsFormValidate(form, prefs); break; default: assert(false); } FlickrSavePrefs(prefs); Finish: if (NULL != form) FrmDeleteForm(form); if (formStateSaved) FrmRestoreActiveState(&activeState); return err; }
Err PopupResidentBrowseForm(AppContext* appContext) { Err error=errNone; FormType* form=FrmInitForm(formResidentBrowse); UInt16 buttonId=0; Assert(form); error=DefaultFormInit(appContext, form); if (error) goto OnError; FrmSetEventHandler(form, ResidentBrowseFormHandleEvent); buttonId=FrmDoDialog(form); Assert(!buttonId || buttonCancel==buttonId); OnError: FrmDeleteForm(form); return error; }
// Return the id of the button pressed. static UInt16 display_modal_form(FormPtr form) { FormPtr prev_form = FrmGetActiveForm(); UInt16 button_id; FrmSetActiveForm(form); // We do not need an eventhandler button_id = FrmDoDialog(form); // We do not read any values from the form. if (prev_form) FrmSetActiveForm(prev_form); FrmDeleteForm(form); return button_id; }
Boolean DoRenameFigure(void) { FormPtr prevFrm = FrmGetActiveForm(); int numFigures = TFigurerecordGetCount(); if ((currentFigure != noListSelection) && (currentFigure < numFigures)) { TFigure_type *t1 = TFigurerecordGet(currentFigure); if (t1) { FormPtr frm = FrmInitForm(formRenameFigure); FieldPtr field = (FieldPtr) FrmGetObjectPtr(frm, FrmGetObjectIndex (frm, fieldFigureName)); MemHandle oldhText=FldGetTextHandle(field); MemHandle hText = MemHandleNew(DESCSIZE); char *titleptr = (char *) MemHandleLock(hText); StrNCopy(titleptr, t1->name, DESCSIZE); titleptr[DESCSIZE - 1] = 0; MemPtrUnlock(titleptr); FldSetTextHandle(field, (MemHandle) hText); if (oldhText!=NULL) { MemHandleFree(oldhText); } if (FrmDoDialog(frm) == buttonRFOK) { hText = FldGetTextHandle(field); titleptr = (char *) MemHandleLock(hText); if ((titleptr) && StrLen(titleptr) > 0) { StrNCopy(t1->name, titleptr, DESCSIZE); t1->name[DESCSIZE - 1] = 0; TFigurerecordChange(currentFigure, t1); } MemPtrUnlock(titleptr); } TFigureFree(t1); if (prevFrm) FrmSetActiveForm(prevFrm); FrmDeleteForm(frm); } return true; } return false; }
Err FlickrShowUploadCompleted(FlickrSocketContext& context) { if (NULL != context.progress) { PrgStopDialog(context.progress, false); context.progress = NULL; } Err err = errNone; FormType* form = NULL; bool formStateSaved = false; FormActiveStateType activeState; FrmSaveActiveState(&activeState); formStateSaved = true; MenuEraseStatus(NULL); form = FrmInitForm(uploadCompletedForm); if (NULL == form) { err = exgMemError; goto Finish; } FrmSetActiveForm(form); FrmDrawForm(form); FrmDoDialog(form); ControlType* control = (ControlType*)FrmGetObjectPtr(form, FrmGetObjectIndex(form, dontShowUploadCompletedFormCheckbox)); if (NULL != control) { Int16 val = CtlGetValue(control); if (0 != val) err = FlickrDisableUploadCompletedForm(); } Finish: if (NULL != form) FrmDeleteForm(form); if (formStateSaved) FrmRestoreActiveState(&activeState); return err; }
UInt16 DisplayDialog( UInt16 formID, FormEventHandlerPtr handler ) { FormPtr active = FrmGetActiveForm(); UInt16 activeID = ( active != NULL ) ? FrmGetFormId( active ) : 0; FormPtr dialog = FrmInitForm( formID ); UInt16 buttonPressed = 0; FrmSetActiveForm( dialog ); if( handler ){ FrmSetEventHandler( dialog, handler ); } FrmPopupForm( formID ); buttonPressed = FrmDoDialog( dialog ); FrmReturnToForm( activeID ); return buttonPressed; }
DieType DialogChooseThree( Char* fText, DieType c1, DieType c2, DieType c3 ) { FormPtr prevForm, frm; UInt16 hitButton; if( IsAI( GetCurrPlayer() ) ) { return AIChooseThree( c1, c2, c3 ); } // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmChooseThree ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Fill it... CtlSetLabel( GetObjectPtr(btnChooseThree1), val2name[c1] ); CtlSetLabel( GetObjectPtr(btnChooseThree2), val2name[c2] ); CtlSetLabel( GetObjectPtr(btnChooseThree3), val2name[c3] ); SetFieldTextFromStr( fldChooseThree, fText ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } if( hitButton == btnChooseThree1 ) return c1; if( hitButton == btnChooseThree2 ) return c2; if( hitButton == btnChooseThree3 ) return c3; return c1; }
/*********************************************************************** * * FUNCTION: MainFormDoCommand * * DESCRIPTION: This routine performs the menu command specified. * * PARAMETERS: command - menu item id * * RETURNED: nothing * * REVISION HISTORY: * * ***********************************************************************/ static Boolean MainFormDoCommand(UInt16 command) { Boolean handled = false; FormPtr frmP; switch (command) { case MainOptionsAboutStockQuote: MenuEraseStatus(0); // Clear the menu status from the display. frmP = FrmInitForm (AboutForm); FrmDoDialog (frmP); // Display the About Box. FrmDeleteForm (frmP); handled = true; break; } return handled; }
void DialogPreferences() { FormPtr prevForm, frm; UInt16 hitButton; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmPreferences); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Set Controls CtlSetValue( GetObjectPtr(check_NextPlayerPopUp ), GetFlag(flag_NextPlayerPopUp) ); CtlSetValue( GetObjectPtr(check_ForceSoundOff ), GetFlag(flag_NoSound) ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Get Controls SetFlag( flag_NextPlayerPopUp, CtlGetValue( GetObjectPtr(check_NextPlayerPopUp) ) ); SetFlag( flag_NoSound, CtlGetValue( GetObjectPtr(check_ForceSoundOff) ) ); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } // We don't care, as long as the dialog quits. }
Word ChooseReader( Word itemNum ) { FormPtr prevFrm = FrmGetActiveForm(); FormPtr frm = FrmInitForm( readerFormID ); ListPtr lst = FrmGetObjectPtr( frm, FrmGetObjectIndex( frm, readerListID ) ); Word hitButton; Word newSel; FrmSetActiveForm( frm ); LstSetSelection( lst, itemNum ); hitButton = FrmDoDialog( frm ); newSel = LstGetSelection( lst ); if( newSel==noListSelection ) newSel=-1; if( prevFrm ) FrmSetActiveForm( prevFrm ); FrmDeleteForm( frm ); if( hitButton==readerOkButtonID ) return( newSel ); else return( itemNum ); }
static Boolean RulesFormHandleEvent(EventPtr event) { Boolean handled = false; switch (event->eType) { case ctlRepeatEvent: switch (event->data.ctlRepeat.controlID) { case rulesScrollUp: RulesScroll (winUp, false); break; case rulesScrollDown: RulesScroll (winDown, false); break; } break; case ctlSelectEvent: switch (event->data.ctlSelect.controlID) { case rulesScrollUp: RulesScroll (winUp, false); break; case rulesScrollDown: RulesScroll (winDown, false); break; } break; case keyDownEvent: switch (event->data.keyDown.chr) { case pageDownChr: RulesScroll (winDown, true); handled = true; break; case pageUpChr: RulesScroll (winUp, true); handled = true; break; } break; default: } return handled; } void Rules (void) { FieldPtr field; VoidHand rulesH; rulesH = DmGetResource ('tSTR', ricochetRulesText); if (rulesH) { rulesFrm = FrmInitForm (rulesForm); field = FrmGetObjectPtr (rulesFrm, FrmGetObjectIndex (rulesFrm, rulesText)); FldSetInsPtPosition (field, 0); FldSetTextHandle (field, (Handle) rulesH); RulesSetScrolling (); FrmSetEventHandler (rulesFrm, RulesFormHandleEvent); FrmDoDialog (rulesFrm); FldSetTextHandle (field, 0); DmReleaseResource (rulesH); FrmDeleteForm (rulesFrm); } }
/*********************************************************************** * handling for the main drop down menu actions ***********************************************************************/ Boolean HandleMenuEvent (UInt16 command) { Boolean handled = false; MenuEraseStatus(0); gMenuCurrentForm=FrmGetFormId(FrmGetActiveForm()); switch (command) { case MENUITEM_about: FrmDoDialog(FrmInitForm(FORM_about)); handled=true; break; case MENUITEM_course: AddCourse(); handled=true; break; case MENUITEM_time: if (CountCourses() != 0) { AddTime(); } else { FrmAlert(ALERT_nocourses); } handled=true; break; case MENUITEM_courselist: FrmGotoForm(FORM_courselist); handled=true; break; case MENUITEM_settings: FrmPopupForm(FORM_settings); handled=true; break; case MENUITEM_alarm: FrmPopupForm(FORM_alarm_sets); handled=true; break; case MENUITEM_exams: FrmGotoForm(FORM_exams); handled=true; break; case MENUITEM_beam: BeamSemester(DatabaseGetCat()); handled=true; break; case MENUITEM_chat: AppLaunchWithCommand(UNICHAT_APP_CREATOR, sysAppLaunchCmdNormalLaunch, NULL); handled=true; break; case MENUITEM_mensa: AppLaunchWithCommand(UNIMENSA_APP_CREATOR, sysAppLaunchCmdNormalLaunch, NULL); handled=true; break; default: break; } return handled; }
void DialogNewGame() { FormPtr prevForm, frm; UInt16 hitButton; Char tmpString[5]; Char *text; UInt16 x; UInt16 num; // Save previous form prevForm = FrmGetActiveForm(); FrmSetFocus( prevForm, noFocus ); // Init new form frm = FrmInitForm( frmNewGame ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); for( x = 0; x < MaxPlayers; x++ ) { tmppref[x].type = GetPlayerType( x ); StrCopy( tmppref[x].hname, pref.player[x].hname ); StrCopy( tmppref[x].aname, pref.player[x].aname ); DrawUserType( x, tmppref[x].type ); NewGameSetPlayerName( fldNGname0+x, x ); } // Fill in WinScore with previous value. if ( pref.winscore > 9999 ) { // Sanity check... pref.winscore = DEFAULT_WINSCORE; } StrIToA( tmpString, pref.winscore ); SetFieldTextFromStr( fld_winscore, tmpString ); // Fill in Opening Roll with previous value. if ( pref.openingroll > pref.winscore || pref.openingroll <= 0 ) { // Sanity check... pref.openingroll = DEFAULT_OPENINGROLL; } StrIToA( tmpString, pref.openingroll ); SetFieldTextFromStr( fld_openingroll, tmpString ); SetFocus( fld_openingroll ); // Set the handler FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); FrmSetFocus( frm, noFocus ); if ( hitButton == btn_OK_frmNewGame ) { /* Get the score needed to win */ pref.winscore = DEFAULT_WINSCORE; text = FldGetTextPtr( GetObjectPtr( fld_winscore ) ); if ( text != NULL ) { num = StrAToI( text ); if( num <= 9999 && num >= 50 ) { pref.winscore = num; } } /* Get the score needed to open game */ pref.openingroll = DEFAULT_OPENINGROLL; text = FldGetTextPtr( GetObjectPtr( fld_openingroll ) ); if ( text != NULL ) { num = StrAToI( text ); if( num <= pref.winscore && num >= 0 ) { pref.openingroll = num; } } pref.totalplayers = 0; for( x = 0; x < MaxPlayers; x++ ) { pref.player[x].type = tmppref[x].type; NewGameGetPlayerName( fldNGname0 + x, x ); StrCopy( pref.player[x].hname, tmppref[x].hname ); StrCopy( pref.player[x].aname, tmppref[x].aname ); if( tmppref[x].type != PlayerNone ) { pref.totalplayers++; } } if( pref.totalplayers > 0 ) { NewGame(); } } // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } DrawState(); }
Boolean DialogGetNames() { FormPtr prevForm, frm; Word hitButton; Boolean retVal = false; CharPtr text; Int i; FieldPtr fp; VoidPtr vPtr; Word oIdx; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmGetNames); // Set it FrmSetActiveForm(frm); // Set Controls for( i = stor.tmpplayers ; i<MaxPlayers ; i++ ) { fp = GetObjectPtr( fieldGetNamesPlayer[i] ); FldSetUsable ( fp, false ); FldEraseField( fp ); ShowControl( fieldGetNamesLabel[i], 0 ); } FrmDrawForm(frm); for( i=0; i < stor.tmpplayers ; i++ ) { SetFieldTextFromStr( fieldGetNamesPlayer[i], stor.player[i].name ); } FrmSetFocus( frm, FrmGetObjectIndex(frm, fieldGetNamesPlayer[0]) ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Get Controls if ( hitButton == btn_OK_frmGetNames ) { for( i=0 ; i<stor.tmpplayers ; i++ ) { oIdx = FrmGetObjectIndex( frm, fieldGetNamesPlayer[i]); vPtr = FrmGetObjectPtr( frm, oIdx ); text = FldGetTextPtr( vPtr ); StrCopy( stor.player[i].name, text ); } retVal = true; } // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } return retVal; }
void DialogOK ( Word frmname, Short p1, Short p2 ) { FormPtr prevForm, frm; Word hitButton; Char msg[(MaxName * 2) + 128]; Word fieldname = 0; switch ( frmname ) { case frmNextPlayer: fieldname = fldNextPlayer; if( (stor.numplayers + stor.numcomputers) > 1 ) { StrPrintF( msg, NextPlayerString, stor.player[p1].name, stor.player[p2].name, NULL); } else { StrPrintF( msg, "%s", NextSoloPlayerString, NULL ); } break; case frmSuspend: if( (stor.numplayers + stor.numcomputers) == 1 ) { return; } fieldname = fldSuspend; StrPrintF( msg, SuspendString, stor.player[p1].name, stor.player[p2].name, NULL); break; case frmLost: fieldname = fldLost; StrPrintF( msg, LostString, stor.player[p1].name, NULL ); break; case frmLeader: fieldname = fldLeader; StrPrintF( msg, LeaderString, stor.player[p1].name, NULL ); break; case frmWinner: fieldname = fldWinner; StrPrintF( msg, WinnerString, stor.player[p1].name, NULL ); break; case frmNobodyWon: fieldname = fldNobodyWon; StrPrintF( msg, NobodyWonString, NULL ); break; case frmBump: fieldname = fldBump; StrPrintF( msg, BumpString, stor.player[p2].name, stor.player[p1].name, stor.player[p2].score, stor.player[p1].score, NULL ); break; case frmSampler: fieldname = fldSampler; StrPrintF( msg, SamplerString, stor.player[p1].name, NULL ); break; case frmTrainWreck: fieldname = fldTrainWreck; StrPrintF( msg, TrainWreckString, stor.player[p1].name, stor.player[p1].TWcount, stor.nTrainWrecks, NULL ); break; default: ErrDisplay( "DialogOK: fall through: Programmer sucks." ); return; } // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmname ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Fill it... ErrFatalDisplayIf( fieldname == 0, "DialogOK: ZeroField: Programmer sucks." ); SetFieldTextFromStr( fieldname, msg ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } // We don't care about which button, there is only one. }
void DialogVarients() { FormPtr prevForm, frm; Word hitButton; Word fldIndex; Char tmpString[3]; CharPtr text; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmVariants ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Set Controls CtlSetValue( GetObjectPtr(check_Bump ), stor.flags & flag_Bump ); CtlSetValue( GetObjectPtr(check_Eclipse ), stor.flags & flag_Eclipse ); CtlSetValue( GetObjectPtr(check_Sampler ), stor.flags & flag_Sampler ); CtlSetValue( GetObjectPtr(check_nTW ), stor.flags & flag_nTW ); CtlSetValue( GetObjectPtr(check_FullHouse), stor.flags & flag_FullHouse ); CtlSetValue( GetObjectPtr(check_Suspend ), stor.flags & flag_Suspend ); // Fill in WinScore with previous value. StrIToA( tmpString, stor.nTrainWrecks ); SetFieldTextFromStr( fldnTrainWrecks, tmpString ); StrIToA( tmpString, stor.nSuspend ); SetFieldTextFromStr( fldnSuspend, tmpString ); // Set the focus to this field so the user can just start typing. fldIndex = FrmGetObjectIndex(frm, fldnTrainWrecks); FrmSetFocus( frm, fldIndex ); // Set the handler FrmSetEventHandler(frm, DialogVariantsHandleEvent); hitButton = FrmDoDialog(frm); // Get Controls text = FldGetTextPtr( FrmGetObjectPtr( frm, fldIndex ) ); if( text != NULL ) { stor.nTrainWrecks = StrAToI( text ); } else { stor.nTrainWrecks = 3; } fldIndex = FrmGetObjectIndex(frm, fldnSuspend); text = FldGetTextPtr( FrmGetObjectPtr( frm, fldIndex ) ); if( text != NULL ) { stor.nSuspend = StrAToI( text ); } else { stor.nSuspend = 10; } // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } }
void DialogNewGame() { FormPtr prevForm, frm; Word hitButton; Char tmpString[5]; CharPtr text; Word fldIndex; Int x; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmNewGame ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Set Controls // cbtnVal & pbtnVal stor.tmpplayers = stor.numplayers; stor.tmpcomputers = stor.numcomputers; if ( stor.numplayers > 0 ) { x = stor.numplayers; } else { x = 1; } CtlSetValue( GetObjectPtr( pbtnVal[x - 1] ), true ); if ( stor.numcomputers > 0 ) { x = stor.numcomputers; } else { x = 0; } CtlSetValue( GetObjectPtr( cbtnVal[x] ), true ); // Fill in WinScore with previous value. if ( stor.winscore > 9999 ) { // Sanity check... stor.winscore = 300; } StrIToA( tmpString, stor.winscore ); SetFieldTextFromStr( fld_winscore, tmpString ); // Set the focus to this field so the user can just start typing. fldIndex = FrmGetObjectIndex(frm, fld_winscore); FrmSetFocus( frm, fldIndex ); // Set the handler FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); if ( hitButton == btn_OK_frmNewGame ) { text = FldGetTextPtr( FrmGetObjectPtr (frm, fldIndex) ); if ( text != NULL ) { stor.winscore = StrAToI( text ); } else { stor.winscore = 300; } stor.numplayers = stor.tmpplayers; stor.numcomputers = stor.tmpcomputers; } // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } if ( hitButton == btn_OK_frmNewGame ) { NewGame(); } DrawState(); }
Boolean StartScummVM() { Char **argvP; UInt8 lightspeed, argc = 0; UInt32 stackSize; Boolean toLauncher, direct, isARM; UInt8 engine; Char num[6]; UInt16 index = GamGetSelected(); argvP = ArgsInit(); direct = false; // start command line (exec name) ArgsAdd(&argvP[argc], "-", NULL, &argc); // no game selected if (index == dmMaxRecordIndex) { ListPtr listP; UInt16 whichButton; // init form FormPtr frmP = FrmInitForm(EngineForm); listP = (ListType *)FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, EngineListList)); itemsText = (Char **)MemPtrNew(ENGINE_COUNT * sizeof(Char *)); for (int i = 0; i < ENGINE_COUNT; i++) itemsText[i] = (Char *)engines[i].nameP; LstSetListChoices (listP, itemsText, ENGINE_COUNT); LstSetSelection(listP, 0); whichButton = FrmDoDialog(frmP); engine = LstGetSelection(listP); FrmDeleteForm(frmP); MemPtrFree(itemsText); itemsText = NULL; if (whichButton == EngineCancelButton) { if (bDirectMode) { // and force exit if nothing selected EventType event; event.eType = keyDownEvent; event.data.keyDown.chr = vchrLaunch; event.data.keyDown.modifiers = commandKeyMask; EvtAddUniqueEventToQueue(&event, 0, true); } // free args ArgsFree(argvP); return false; } // default values if (bDirectMode) gPrefs->card.volRefNum = parseCards(); // always use the first removable card available (?) gVars->filter = true; gVars->palmVolume = 50; gVars->fmQuality = FM_QUALITY_INI; direct = true; // somthing selected } else { Char pathP[256]; MemHandle recordH; GameInfoType *gameInfoP; recordH = DmQueryRecord(gameDB,index); gameInfoP = (GameInfoType *)MemHandleLock(recordH); engine = gameInfoP->engine; // build path StrCopy(pathP,"/Palm/Programs/ScummVM/Games/"); if (gameInfoP->pathP[0] == '/') StrCopy(pathP, gameInfoP->pathP); else if (!(gameInfoP->pathP[0] == '.' && StrLen(gameInfoP->pathP) == 1)) StrCat(pathP, gameInfoP->pathP); // path ArgsAdd(&argvP[argc], "-p", pathP, &argc); // language if (gameInfoP->language > 0) { const Char *lang = "zh\0cz\0gb\0en\0fr\0de\0hb\0it\0jp\0kr\0pl\0pt\0ru\0es\0se\0"; ArgsAdd(&argvP[argc], "-q", (lang + (gameInfoP->language - 1) * 3), &argc); } // fullscreen ? if (gameInfoP->fullscreen) ArgsAdd(&argvP[argc], "-f", NULL, &argc); // aspect-ratio ? ArgsAdd(&argvP[argc], (gameInfoP->aspectRatio ? "--aspect-ratio" : "--no-aspect-ratio"), NULL, &argc); // gfx mode gVars->filter = gameInfoP->filter; switch (gameInfoP->renderMode) { case 1: ArgsAdd(&argvP[argc], "--render-mode=", "amiga", &argc); break; case 2: ArgsAdd(&argvP[argc], "--render-mode=", "cga", &argc); break; case 3: ArgsAdd(&argvP[argc], "--render-mode=", "ega", &argc); break; case 4: ArgsAdd(&argvP[argc], "--render-mode=", "hercAmber", &argc); break; case 5: ArgsAdd(&argvP[argc], "--render-mode=", "hercGreen", &argc); break; } switch (gameInfoP->gfxMode) { case 1: ArgsAdd(&argvP[argc], "-g", "wide", &argc); break; default: ArgsAdd(&argvP[argc], "-g", "1x", &argc); break; } // load state if (gameInfoP->autoLoad) { StrIToA(num, gameInfoP->loadSlot); ArgsAdd(&argvP[argc], "-x", num, &argc); } // boot script parameter if (gameInfoP->bootParam) { StrIToA(num, gameInfoP->bootValue); ArgsAdd(&argvP[argc], "-b", num, &argc); } // not a PC version if (gameInfoP->setPlatform) { static const char *platform[] = { "3do", "acorn", "amiga", "atari", "c64", "pc", "fmtowns", "linux", "mac", "nes", "segacd", "windows" }; ArgsAdd(&argvP[argc], "--platform=", platform[gameInfoP->platform], &argc); } // subtitles if (gameInfoP->subtitles) ArgsAdd(&argvP[argc], "-n", NULL, &argc); // multi midi ? if (gameInfoP->musicInfo.sound.multiMidi) ArgsAdd(&argvP[argc], "--multi-midi", NULL, &argc); if (engine == ENGINE_SCUMM) { // music tempo StrIToA(num, gameInfoP->musicInfo.sound.tempo); ArgsAdd(&argvP[argc], "--tempo=", num, &argc); } // talk speed if (gameInfoP->talkSpeed) { StrIToA(num, gameInfoP->talkValue); ArgsAdd(&argvP[argc], "--talkspeed=", num, &argc); } // music driver if (gameInfoP->musicInfo.sound.music) { static char *drv[] = { "auto", "null", "adlib", "towns", "pcjr", "native", "pcspk" }; if (StrCompare(drv[gameInfoP->musicInfo.sound.drvMusic], "native") == 0) { if (OPTIONS_TST(kOptDeviceZodiac)) ArgsAdd(&argvP[argc], "-e", "zodiac", &argc); // Tapwave Zodiac else if (OPTIONS_TST(kOptSonyPa1LibAPI)) ArgsAdd(&argvP[argc], "-e", "ypa1", &argc); // Pa1Lib devices else ArgsAdd(&argvP[argc], "-e", "auto", &argc); // no driver, switch to auto } else { ArgsAdd(&argvP[argc], "-e", drv[gameInfoP->musicInfo.sound.drvMusic], &argc); } // output rate UInt32 rates[] = {4000, 8000, 11025, 22050, 44100}; StrIToA(num, rates[gameInfoP->musicInfo.sound.rate]); ArgsAdd(&argvP[argc], "--output-rate=", num, &argc); // FM quality gVars->fmQuality = gameInfoP->fmQuality; } else { ArgsAdd(&argvP[argc], "-e", "null", &argc); } // volume control StrIToA(num, gameInfoP->musicInfo.volume.sfx); ArgsAdd(&argvP[argc], "-s", num, &argc); StrIToA(num, gameInfoP->musicInfo.volume.music); ArgsAdd(&argvP[argc], "-m", num, &argc); StrIToA(num, gameInfoP->musicInfo.volume.speech); ArgsAdd(&argvP[argc], "-r", num, &argc); // game name ArgsAdd(&argvP[argc], gameInfoP->gameP, NULL, &argc); // others globals data gVars->CD.enable = gameInfoP->musicInfo.sound.CD; gVars->CD.driver = gameInfoP->musicInfo.sound.drvCD; gVars->CD.format = gameInfoP->musicInfo.sound.frtCD; gVars->CD.volume = gameInfoP->musicInfo.volume.audiocd; gVars->CD.defaultTrackLength = gameInfoP->musicInfo.sound.defaultTrackLength; gVars->CD.firstTrack = gameInfoP->musicInfo.sound.firstTrack; gVars->palmVolume = gameInfoP->musicInfo.sound.music ? gameInfoP->musicInfo.volume.palm : 0; MemHandleUnlock(recordH); } // end no game / game selected // common command line options // debug level if (gPrefs->debug) { StrIToA(num, gPrefs->debugLevel); ArgsAdd(&argvP[argc], "-d", num, &argc); } if (engine == ENGINE_QUEEN || engine == ENGINE_SKY) { // alternative intro ? if (gPrefs->altIntro) ArgsAdd(&argvP[argc], "--alt-intro", NULL, &argc); } if (engine == ENGINE_SCUMM) { // demo mode ? if (gPrefs->demoMode) ArgsAdd(&argvP[argc], "--demo-mode", NULL, &argc); } // copy protection ? if (gPrefs->copyProtection) ArgsAdd(&argvP[argc], "--copy-protection", NULL, &argc); // exceed max args ? if (argc > MAX_ARG) FrmCustomAlert(FrmErrorAlert, "Too many parameters.",0,0); // set some common options stackSize = (gPrefs->setStack ? STACK_LARGER : STACK_DEFAULT); lightspeed= (gPrefs->lightspeed.enable ? gPrefs->lightspeed.mode : 255); toLauncher= (gPrefs->exitLauncher); // gVars values // (gVars->HRrefNum defined in checkHRmode on Clié) gVars->VFS.volRefNum = gPrefs->card.volRefNum; gVars->vibrator = gPrefs->vibrator; gVars->stdPalette = gPrefs->stdPalette; gVars->VFS.cacheSize = (gPrefs->card.useCache ? gPrefs->card.cacheSize : 0); gVars->indicator.showLED= gPrefs->card.showLED; gVars->stylusClick = gPrefs->stylusClick; gVars->autoSave = (gPrefs->autoSave ? gPrefs->autoSavePeriod : -1); gVars->advancedMode = gPrefs->advancedMode; gVars->arrowKeys = gPrefs->arrowKeys; // user params HWR_RSTALL(); if (gPrefs->goLCD) HWR_SET(INIT_GOLCD); else OPTIONS_RST(kOptGoLcdAPI); if (!gPrefs->autoOff) HWR_SET(INIT_AUTOOFF); if (gVars->vibrator) HWR_SET(INIT_VIBRATOR); /* ???? if ( musicDriver == 1 || musicDriver == 3 || musicDriver == 4 || musicDriver == sysInvalidRefNum) { HWR_SET(INIT_PA1LIB); } */ if (ModImport(gVars->VFS.volRefNum, engine, &isARM) != errNone) { if (bDirectMode) { // and force exit if nothing selected EventType event; event.eType = keyDownEvent; event.data.keyDown.chr = vchrLaunch; event.data.keyDown.modifiers = commandKeyMask; EvtAddUniqueEventToQueue(&event, 0, true); } ArgsFree(argvP); return false; } // reset mode if screen rotation occured (DIA only) if (!direct && OPTIONS_TST(kOptCollapsible)) { UInt8 mode = PalmScreenSize(0,0, &(gVars->screenFullWidth), &(gVars->screenFullHeight)); OPTIONS_RST(kOptModeLandscape); OPTIONS_SET((mode == PALM_LANDSCAPE) ? kOptModeLandscape : kOptNone); } // free and save globals pref memory GamCloseDatabase(false); FrmCloseAllForms(); SavePrefs(); { UInt16 cardNo; UInt32 dbID; LaunchParamType *cmdPBP = (LaunchParamType *)MemPtrNew(sizeof(LaunchParamType)); MemPtrSetOwner(cmdPBP, 0); MemPtrSetOwner(gVars, 0); ArgsSetOwner(argvP, 0); cardNo = 0; dbID = DmFindDatabase(0, "ScummVM-Engine"); if (isARM) FtrSet(appFileCreator, ftrStack , (stackSize * 4)); else ModSetStack(stackSize, cardNo, dbID); cmdPBP->args.argc = argc; cmdPBP->args.argv = argvP; cmdPBP->gVars = gVars; cmdPBP->lightspeed = lightspeed; cmdPBP->exitLauncher = toLauncher; SysUIAppSwitch(cardNo, dbID, sysAppLaunchCmdNormalLaunch, cmdPBP); bLaunched = true; } return false; }
/* Event handler for the main form */ Boolean FormHandleEvent ( EventType* event ) { Boolean handled; handled = false; switch ( event->eType ) { case ctlSelectEvent: switch ( event->data.ctlEnter.controlID ) { case frmPrefsButton: if ( buttonList[ PREF ].status == VALID && FrmAlert( confirmPrefs ) == 0 ) HandleButton( &buttonList[ PREF ] ); handled = true; break; case frmTempButton: if ( buttonList[ TEMP ].status == VALID && FrmAlert( confirmTemp ) == 0 ) HandleButton( &buttonList[ TEMP ] ); handled = true; break; case frmDocListButton: if ( buttonList[ DOCLIST ].status == VALID && FrmAlert( confirmDocList ) == 0 ) HandleButton( &buttonList[ DOCLIST ] ); handled = true; break; case frmFontCacheButton: if ( buttonList[ FONTCACHE ].status == VALID && FrmAlert( confirmFontCache ) == 0 ) HandleButton( &buttonList[ FONTCACHE ] ); handled = true; break; case frmDone: { EventType stopEvent; stopEvent.eType = appStopEvent; EvtAddEventToQueue( &stopEvent ); handled = true; break; } case frmWhatIsThis: FrmHelp( strWhatIsThis ); handled = true; break; default: break; } break; case menuEvent: switch ( event->data.menu.itemID ) { case menuHelpWhatIsThis: FrmHelp( strWhatIsThis ); handled = true; break; case menuHelpAbout: { FormType* form; form = FrmInitForm( frmAbout ); FrmDoDialog( form ); FrmDeleteForm( form ); handled = true; break; } } break; case frmOpenEvent: FormInit(); handled = true; break; case frmCloseEvent: FreeMemory(); handled = false; break; default: handled = false; break; } return handled; }