Esempio n. 1
0
File: draw.c Progetto: docwhat/cwimp
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 );
}
Esempio n. 2
0
// show dialog modally
int wxDialog::ShowModal()
{
    Show (true);

    if (errNone == FrmDoDialog ((FormType *)wxTopLevelWindow::GetForm())) {
        return 0;
    }
    return -1;
}
Esempio n. 3
0
// 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);
}
Esempio n. 4
0
static void
Help (Int   id)
{
    FormPtr	frm;

    frm = FrmInitForm (id);
    if (frm)
    {
        FrmDoDialog (frm);
        FrmDeleteForm (frm);
    }
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
// 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;
}
Esempio n. 8
0
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;
}
Esempio n. 9
0
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;
}
Esempio n. 10
0
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;
} 
Esempio n. 11
0
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;
}
Esempio n. 13
0
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.
}
Esempio n. 14
0
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 );
}
Esempio n. 15
0
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);
    }
}
Esempio n. 16
0
/***********************************************************************
 * 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;
}
Esempio n. 17
0
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();
}
Esempio n. 18
0
File: draw.c Progetto: docwhat/cwimp
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;
}
Esempio n. 19
0
File: draw.c Progetto: docwhat/cwimp
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.
}
Esempio n. 20
0
File: draw.c Progetto: docwhat/cwimp
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);
    }

}
Esempio n. 21
0
File: draw.c Progetto: docwhat/cwimp
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();
}
Esempio n. 22
0
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;
}
Esempio n. 23
0
/* 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;
}