/* Load the general section into memory */ static void LoadColorPrefs( void ) { CtlSetValue( GetObjectPtr( frmPrefsColorStrikethrough ), Prefs()->strikethrough ); CtlSetValue( GetObjectPtr( frmPrefsColorForceDefaultColors ), Prefs()->forceDefaultColors ); }
static void SetComputers( Short num ) { FormPtr frm; ControlPtr cPtr; Word oIdx; if( num > (MaxPlayers - 1) || num < 0 ) { ErrNonFatalDisplayIf( true, "SetComputers: Out of Bounds"); return; } if( stor.tmpcomputers == num ) { return; } frm = FrmGetActiveForm(); /* Unset the old one */ oIdx = FrmGetObjectIndex( frm, cbtnVal[stor.tmpcomputers] ); cPtr = FrmGetObjectPtr( frm, oIdx ); CtlSetValue( cPtr, false ); /* Set new one */ oIdx = FrmGetObjectIndex( frm, cbtnVal[num] ); cPtr = FrmGetObjectPtr( frm, oIdx ); CtlSetValue( cPtr, true ); stor.tmpcomputers = num; if( stor.tmpcomputers + stor.tmpplayers > MaxPlayers ) { SetPlayers( MaxPlayers - stor.tmpcomputers ); } return; }
static void SetPeople( Short num ) { Int x; Boolean found = false; FormPtr frm; ControlPtr cPtr; Word oIdx; frm = FrmGetActiveForm(); x = MaxPlayers - 1; while( ( x > ( MaxPlayers - (num + 1) ) ) && !found ) { oIdx = FrmGetObjectIndex( frm, pbtnVal[x--] ); cPtr = FrmGetObjectPtr( frm, oIdx ); if( CtlGetValue( cPtr ) ) { CtlSetValue( cPtr, false ); found = true; } } if ( found ) { stor.tmpcomputers = MaxPlayers - (num + 1); oIdx = FrmGetObjectIndex( frm, cbtnVal[stor.tmpcomputers] ); cPtr = FrmGetObjectPtr( frm, oIdx ); CtlSetValue( cPtr, true); } }
/* Initialize the details form */ static void DetailsFormInit( void ) { FormType* detailsForm; FieldType* urlField; UInt16 reference; detailsForm = FrmGetFormPtr( frmDetails ); urlField = GetObjectPtr( frmDetailsLink ); reference = GetHistoryCurrent(); if ( AddURLToField( urlField, reference ) ) FrmShowObject( detailsForm, FrmGetObjectIndex( detailsForm, frmDetailsCopy ) ); else FrmHideObject( detailsForm, FrmGetObjectIndex( detailsForm, frmDetailsCopy ) ); FrmDrawForm( detailsForm ); AddDocNameTitle( Prefs()->docName ); CtlSetValue( GetObjectPtr( frmDetailsStatusRead ), LinkVisited( reference ) ); CtlSetValue( GetObjectPtr( frmDetailsStatusUnread ), ! LinkVisited( reference ) ); CtlSetValue( GetObjectPtr( frmDetailsShowImages ), ShowImages( reference ) ); }
static void init_checkboxes_1() { FormPtr frm; ControlPtr checkbox; frm = FrmGetActiveForm(); checkbox = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, check_prf_4)); CtlSetValue(checkbox, (my_prefs.sound ? 1 : 0)); checkbox = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, check_prf_13)); CtlSetValue(checkbox, (my_prefs.black_bg ? 1 : 0)); checkbox = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, check_prf_14)); CtlSetValue(checkbox, (my_prefs.color_on ? 1 : 0)); }
/*********************************************************************** * * FUNCTION: RepeatChangeRepeatOn * * DESCRIPTION: This routine is called when one of the weekly "repeat on" * push button is pushed. This routine checks * if all the buttons has been turned off, if so the day * of the week of the appointment's start date is turn on. * * PARAMETERS: event - pointer to and event * * RETURNED: nothing * ***********************************************************************/ static void RepeatChangeRepeatOn(EventType* event) { UInt16 id = 0; UInt16 dayOfWeek = 0; FormType* frm = FrmGetFormPtr(RepeatForm); Boolean on = false; UInt16 i = 0; const UInt16 idx = FrmGetObjectIndex(frm, RepeatDayOfWeek1PushButton); /* Check if any of the buttons are on. */ for (; i < daysInWeek; i++) { if (FrmGetControlValue(frm, idx + i) != 0) { on = true; break; } } /* If all the buttons are off, turn on the start date's button. */ if (!on) { dayOfWeek = DayOfWeek (d.frm_date.month, d.frm_date.day, d.frm_date.year /*+ firstYear*/); /* frm_date is DateTimeType */ dayOfWeek = (dayOfWeek - d.repeat_start_of_week + daysInWeek) % daysInWeek; id = RepeatDayOfWeek1PushButton + dayOfWeek; CtlSetValue(GetObjectPointer(frm, id), true); } /* Update the display of the repeat description. */ RepeatDrawDescription(frm); }
static void AudioCDTabInit() { ControlType *cck3P; FieldType *fld2P, *fld3P; ListType *list1P, *list2P; MemHandle lengthH, firstTrackH; Char *lengthP, *firstTrackP; cck3P = (ControlType *)GetObjectPtr(TabAudioCDMP3Checkbox); fld2P = (FieldType *)GetObjectPtr(TabAudioCDLengthSecsField); fld3P = (FieldType *)GetObjectPtr(TabAudioCDFirstTrackField); list1P = (ListType *)GetObjectPtr(TabAudioCDDriverList); list2P = (ListType *)GetObjectPtr(TabAudioCDFormatList); LstSetSelection(list1P, gameInfoP->musicInfo.sound.drvCD); CtlSetLabel((ControlType *)GetObjectPtr(TabAudioCDDriverPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); LstSetSelection(list2P, gameInfoP->musicInfo.sound.frtCD); CtlSetLabel((ControlType *)GetObjectPtr(TabAudioCDFormatPopTrigger), LstGetSelectionText(list2P, LstGetSelection(list2P))); CtlSetValue(cck3P, gameInfoP->musicInfo.sound.CD); lengthH = MemHandleNew(FldGetMaxChars(fld2P)+1); lengthP = (Char *)MemHandleLock(lengthH); StrIToA(lengthP, gameInfoP->musicInfo.sound.defaultTrackLength); MemHandleUnlock(lengthH); FldSetTextHandle(fld2P, lengthH); firstTrackH = MemHandleNew(FldGetMaxChars(fld3P)+1); firstTrackP = (Char *)MemHandleLock(firstTrackH); StrIToA(firstTrackP, gameInfoP->musicInfo.sound.firstTrack); MemHandleUnlock(firstTrackH); FldSetTextHandle(fld3P, firstTrackH); }
/* Load the Lookup section into memory */ static void LoadLookupPrefs( void ) { CtlSetValue( GetObjectPtr( frmPrefsLookupAlwaysActive ), ( Prefs()->selectWordTap != SELECT_WORD_TAP_NONE ) ); lookupAction = Prefs()->selectedWordAction; SetListToSelection( frmPrefsLookupActionList, frmPrefsLookupActionPopup, lookupAction ); }
static void init_checkboxes_2() { FormPtr frm; ControlPtr checkbox; frm = FrmGetActiveForm(); checkbox = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, check_prf_2)); CtlSetValue(checkbox, (my_prefs.relative_move ? 1 : 0)); }
static Boolean prefsEventHandler (EventPtr event) { int handled = 0; FormPtr form; ControlPtr ptr; switch (event->eType) { case frmOpenEvent: form = FrmGetActiveForm(); ptr = FrmGetObjectPtr(form, FrmGetObjectIndex(form, cbid_repeats)); CtlSetValue(ptr, repeats); ptr = FrmGetObjectPtr(form, FrmGetObjectIndex(form, cbid_rainbow)); CtlSetValue(ptr, rainbow); ptr = FrmGetObjectPtr(form, FrmGetObjectIndex(form, cbid_extra)); CtlSetValue(ptr, extra); FrmDrawForm(form); handled = 1; break; case ctlSelectEvent: // a button was pressed and released switch (event->data.ctlSelect.controlID) { case cbid_repeats: repeats = event->data.ctlSelect.on; handled = 1; break; case cbid_rainbow: rainbow = event->data.ctlSelect.on; handled = 1; break; case cbid_extra: extra = event->data.ctlSelect.on; handled = 1; break; case bid_ok: FrmGotoForm(fid_kartrando); handled = 1; break; case bid_repeats_help: FrmAlert(aid_repeats_help); break; case bid_rainbow_help: FrmAlert(aid_rainbow_help); break; case bid_extra_help: FrmAlert(aid_extra_help); break; } break; default: 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. }
static void MusicTabInit() { ControlType *cck1P, *cck2P; ListType *list1P, *list2P, *list3P; FieldType *fld1P; MemHandle tempoH; Char *tempoP; cck1P = (ControlType *)GetObjectPtr(TabMusicMusicCheckbox); cck2P = (ControlType *)GetObjectPtr(TabMusicMultiMidiCheckbox); list1P = (ListType *)GetObjectPtr(TabMusicDriverList); list2P = (ListType *)GetObjectPtr(TabMusicRateList); list3P = (ListType *)GetObjectPtr(TabMusicQualityList); fld1P = (FieldType *)GetObjectPtr(TabMusicTempoField); CtlSetValue(cck1P, gameInfoP->musicInfo.sound.music); CtlSetValue(cck2P, gameInfoP->musicInfo.sound.multiMidi); if (gameInfoP->musicInfo.sound.drvMusic > 5) gameInfoP->musicInfo.sound.drvMusic = 0; LstSetSelection(list1P, gameInfoP->musicInfo.sound.drvMusic); LstSetTopItem(list1P, gameInfoP->musicInfo.sound.drvMusic); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicDriverPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); LstSetSelection(list2P, gameInfoP->musicInfo.sound.rate); LstSetTopItem(list2P, gameInfoP->musicInfo.sound.rate); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicRatePopTrigger), LstGetSelectionText(list2P, LstGetSelection(list2P))); LstSetSelection(list3P, gameInfoP->fmQuality); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicQualityPopTrigger), LstGetSelectionText(list3P, LstGetSelection(list3P))); tempoH = MemHandleNew(FldGetMaxChars(fld1P)+1); tempoP = (Char *)MemHandleLock(tempoH); StrIToA(tempoP, gameInfoP->musicInfo.sound.tempo); MemHandleUnlock(tempoH); FldSetTextHandle(fld1P, tempoH); }
/* Handle the Gesture preferences */ Boolean PrefsGesturePreferenceEvent ( ActionType action ) { Boolean handled; handled = false; switch ( action ) { case AVAILABLE: /* Always available */ handled = true; break; case SHOWFIRST: handled = showFirst; showFirst = false; break; case LOAD: gestureSelected = GESTURES_UP; MemMove( gestureMode, Prefs()->gestMode, sizeof( gestureMode ) ); InitializeActionList( frmPrefsGestureActionList ); CtlSetValue( GetObjectPtr( frmPrefsGestureGestures ), Prefs()->gestures ); SetListToSelection( frmPrefsGestureActionList, frmPrefsGestureSelectAction, gestureMode[ gestureSelected ] ); handled = true; break; case DISPLAY: AffirmControlImage( gestureSelected, frmPrefsGestureUp, bmpGestureUp ); handled = true; break; case SAVE: Prefs()->gestures = CtlGetValue( GetObjectPtr( frmPrefsGestureGestures ) ); MemMove( Prefs()->gestMode, gestureMode, sizeof( gestureMode ) ); handled = true; break; default: handled = false; break; } return handled; }
static Boolean mainEventHandler (EventPtr event) { int handled = 0; FormPtr form; ControlPtr active = 0; switch (event->eType) { case frmOpenEvent: form = FrmGetActiveForm(); listPtr_races = FrmGetObjectPtr(form, FrmGetObjectIndex(form, lid_races)); // clear the list selection LstSetSelection(listPtr_races, -1); // set up the player and races selection buttons buttonPtr_players2 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, pbid_players2)); buttonPtr_players3 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, pbid_players3)); buttonPtr_players4 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, pbid_players4)); buttonPtr_races3 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, pbid_races3)); buttonPtr_races5 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, pbid_races5)); buttonPtr_races7 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, pbid_races7)); buttonPtr_races9 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, pbid_races9)); // activate the appropriate options switch (players) { case 2: active = buttonPtr_players2; break; case 3: active = buttonPtr_players3; break; case 4: active = buttonPtr_players4; break; } if (active != 0) CtlSetValue(active, 1); switch (races) { case 3: active = buttonPtr_races3; break; case 5: active = buttonPtr_races5; break; case 7: active = buttonPtr_races7; break; case 9: active = buttonPtr_races9; break; } if (active != 0) CtlSetValue(active, 1); FrmDrawForm(form); handled = 1; break; case ctlSelectEvent: // a button was pressed and released switch (event->data.ctlSelect.controlID) { case pbid_players2: players = 2; handled = 1; break; case pbid_players3: players = 3; handled = 1; break; case pbid_players4: players = 4; handled = 1; break; case pbid_races3: races = 3; handled = 1; break; case pbid_races5: races = 5; handled = 1; break; case pbid_races7: races = 7; handled = 1; break; case pbid_races9: races = 9; handled = 1; break; case bid_rando: rando(); handled = 1; break; } break; case menuEvent: switch (event->data.menu.itemID) { case miid_about: FrmAlert(aid_about); break; case miid_prefs: FrmGotoForm(fid_prefs); break; } handled = 1; break; default: break; } return handled; }
/*********************************************************************** * * FUNCTION: RepeatSetUIValues * * DESCRIPTION: This routine sets the current repeat settings of the * ui gadgets in the repeat dialog box * * PARAMETERS: frm - pointer to the Repeat Dialog * repeatP - pointer to a RepeatInfoType structure. * * RETURNED: nothing * ***********************************************************************/ void RepeatSetUIValues(FormType* frm, RepeatInfoType* repeatP) { UInt16 i; UInt16 id; UInt16 oldFreq; MemHandle freqH; Char* freqP = NULL; Boolean on = false; FieldType* fld = NULL; const Int8 startOfWeek = PrefGetPreference(prefWeekStartDay); /* Set the selection of the "repeat type" push button group. */ id = repeatP->repeatType + RepeatNone; if (repeatP->repeatType > repeatMonthlyByDay) id--; FrmSetControlGroupSelection (frm, RepeatTypeGroup, id); /* Set the frequency field */ if (repeatP->repeatType != repeatNone) { fld = GetObjectPointer(frm, RepeatFrequenceField); freqH = FldGetTextHandle(fld); if (freqH) { freqP = MemHandleLock(freqH); oldFreq = StrAToI(freqP); } else { freqH = MemHandleNew(maxFrequenceFieldLen); ASSERT(freqH); freqP = MemHandleLock(freqH); oldFreq = 0; } if (oldFreq != repeatP->repeatFrequency) { StrIToA(freqP, repeatP->repeatFrequency); FldSetTextHandle(fld, freqH); if (FrmVisible(frm)) { FldEraseField(fld); FldDrawField(fld); } } MemHandleUnlock (freqH); } /* Set the selection of the "repeat on" push button groups. */ if (repeatP->repeatType == repeatWeekly) { /* ** If the appointment has a different start-day-of-week than ** the dialog-box's current start-day-of-week, rearrange the ** labels on the days-of-week push buttons. ** Note that this will only handle button-label shifts of one day. */ if (startOfWeek != d.repeat_start_of_week) { const Char* sundayLabel = CtlGetLabel(GetObjectPointer(frm, RepeatDayOfWeek1PushButton)); for (id = RepeatDayOfWeek1PushButton; id < RepeatDayOfWeek7PushButton; id++) CtlSetLabel(GetObjectPointer(frm, id), CtlGetLabel(GetObjectPointer(frm, id + 1))); CtlSetLabel(GetObjectPointer(frm, RepeatDayOfWeek7PushButton), sundayLabel); d.repeat_start_of_week = startOfWeek; } /* Turn on the push buttons for the days the appointment repeats on. */ for (i = 0; i < daysInWeek; i++) { on = ((repeatP->repeatOn & (1 << i) ) != 0); id = RepeatDayOfWeek1PushButton + ((i - startOfWeek + daysInWeek) % daysInWeek); CtlSetValue(GetObjectPointer(frm, id), on); } } /* Set the selection of the "repeat by" push button groups. */ if (repeatP->repeatType == repeatMonthlyByDate) FrmSetControlGroupSelection(frm, RepeatByGroup, RepeatByDatePushButton); else FrmSetControlGroupSelection(frm, RepeatByGroup, RepeatByDayPushButton); /* Set the "end on" trigger label and popup list selection. */ if (repeatP->repeatType != repeatNone) RepeatSetDateTrigger(repeatP->repeatEndDate); }
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); } }
static void PrefFormSetValue(FormPtr frm, UInt16 id, UInt16 value) { ControlPtr ctr; ctr = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, id)); CtlSetValue(ctr, value); }
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(); }
static void ToggleCheck( Word objID, Int flag ) { CtlSetValue( GetObjectPtr( objID ), ! (stor.flags & flag) ); SetFlag( flag, !(stor.flags & flag) ); }
/* Handle the Control preferences */ Boolean PrefsControlPreferenceEvent ( ActionType action ) { Boolean handled; UInt16 i; handled = false; switch ( action ) { case AVAILABLE: /* Always available */ handled = true; break; case SHOWFIRST: handled = showFirst; showFirst = false; break; case LOAD: MemMove( controlSelect, Prefs()->select, sizeof( controlSelect ) ); controlMode = Prefs()->controlMode; CtlSetValue( GetObjectPtr( frmPrefsControlMode1 ), controlMode == MODE1 ); CtlSetValue( GetObjectPtr( frmPrefsControlMode2 ), controlMode == MODE2 ); CtlSetValue( GetObjectPtr( frmPrefsControlMode3 ), controlMode == MODE3 ); handled = true; break; case DISPLAY: PrefsShowSection( objectList, controlMode ); prevControlMode = controlMode; if ( controlMode != MODE3 ) { for ( i = 0; i < NUM_OF_CONTROL_LISTS; i++ ) { InitializeActionList( frmPrefsControlList1 + i ); LstSetHeight( GetObjectPtr( frmPrefsControlList1 + i ), 14 ); SetListToSelection( frmPrefsControlList1 + i, frmPrefsControlPopup1 + i, controlSelect[ controlMode ][ i ] ); } } handled = true; break; case CLEAR: PrefsHideSection( objectList, prevControlMode ); handled = true; break; case SAVE: MemMove( Prefs()->select, controlSelect, sizeof( controlSelect ) ); Prefs()->controlMode = controlMode; handled = true; break; default: handled = false; break; } return handled; }
/* Handle the Lookup preferences */ Boolean PrefsLookupPreferenceEvent ( ActionType action ) { Boolean handled; handled = false; switch ( action ) { case AVAILABLE: #ifdef SUPPORT_WORD_LOOKUP if ( IsFormMain( Prefs()->lastForm ) ) { cameFromLibrary = false; handled = true; } else { /* We can only access this form from the library if the "vary with documents" setting is unchecked */ cameFromLibrary = true; if ( Prefs()->individualDocumentLookup ) { handled = false; } else { handled = true; } } #else handled = false; #endif break; case SHOWFIRST: handled = showFirst; showFirst = false; break; case LOAD: LoadLookupPrefs(); handled = true; break; case SAVE: if ( cameFromLibrary ) { Prefs()->individualDocumentLookup = false; } else { Prefs()->individualDocumentLookup = CtlGetValue( GetObjectPtr( frmPrefsLookupIndividual )); } if ( Prefs()->individualDocumentLookup ) { GetHistoryPtr()->selectedWordAction = lookupAction; if ( CtlGetValue( GetObjectPtr( frmPrefsLookupAlwaysActive ))) { GetHistoryPtr()->selectWordTap = SELECT_WORD_TAP_ONCE; } else { GetHistoryPtr()->selectWordTap = SELECT_WORD_TAP_NONE; } } else { Prefs()->selectedWordAction = lookupAction; Prefs()->defaultSelectedWordAction = lookupAction; if ( CtlGetValue( GetObjectPtr( frmPrefsLookupAlwaysActive ))) { Prefs()->selectWordTap = SELECT_WORD_TAP_ONCE; Prefs()->defaultSelectWordTap = SELECT_WORD_TAP_ONCE; } else { Prefs()->selectWordTap = SELECT_WORD_TAP_NONE; Prefs()->defaultSelectWordTap = SELECT_WORD_TAP_NONE; } } if ( Prefs()->individualDocumentLookup && CtlGetValue( GetObjectPtr( frmPrefsLookupAsDefault ))) { Prefs()->defaultSelectedWordAction = GetHistoryPtr()->selectedWordAction; Prefs()->defaultSelectWordTap = GetHistoryPtr()->selectWordTap; } ReRenderAllIfNeeded(); handled = true; break; case DISPLAY: if ( cameFromLibrary ) { HidePrefsFormObject( frmPrefsLookupIndividual, true ); HidePrefsFormObject( frmPrefsLookupAsDefault, true ); } else { Boolean individualDocumentLookup; individualDocumentLookup = Prefs()->individualDocumentLookup; CtlSetValue( GetObjectPtr( frmPrefsLookupIndividual ), individualDocumentLookup ); CtlSetValue( GetObjectPtr( frmPrefsLookupAsDefault ), false ); if ( ! individualDocumentLookup ) HidePrefsFormObject( frmPrefsLookupAsDefault, true ); } handled = true; break; case RELEASE: handled = true; break; default: handled = false; break; } return handled; }
/* Handle the Color preferences */ Boolean PrefsColorPreferenceEvent ( ActionType action ) { Boolean handled; handled = false; switch ( action ) { case AVAILABLE: if ( IsFormMain( Prefs()->lastForm ) ) { cameFromLibrary = false; handled = true; } else { /* We can only access this form from the library if the "vary with documents" setting is unchecked */ cameFromLibrary = true; if ( Prefs()->individualDocumentColor ) { handled = false; } else { handled = true; } } break; case SHOWFIRST: handled = showFirst; showFirst = false; break; case LOAD: LoadColorPrefs(); handled = true; break; case SAVE: strikethrough = CtlGetValue( GetObjectPtr( frmPrefsColorStrikethrough )); forceDefaultColors = CtlGetValue( GetObjectPtr( frmPrefsColorForceDefaultColors )); if ( cameFromLibrary ) { Prefs()->individualDocumentColor = false; } else { Prefs()->individualDocumentColor = CtlGetValue( GetObjectPtr( frmPrefsColorIndividual )); } if (( strikethrough != Prefs()->strikethrough ) || ( forceDefaultColors != Prefs()->forceDefaultColors )) { if ( Prefs()->individualDocumentColor) { GetHistoryPtr()->strikethrough = strikethrough; GetHistoryPtr()->forceDefaultColors = forceDefaultColors; } else { Prefs()->strikethrough = strikethrough; Prefs()->forceDefaultColors = forceDefaultColors; Prefs()->defaultStrikethrough = strikethrough; Prefs()->defaultForceDefaultColors = forceDefaultColors; } if ( Prefs()->individualDocumentColor && CtlGetValue( GetObjectPtr( frmPrefsColorAsDefault ))) { Prefs()->defaultStrikethrough = GetHistoryPtr()->strikethrough; Prefs()->defaultForceDefaultColors = GetHistoryPtr()->forceDefaultColors; } if ( ! cameFromLibrary ) { ReRenderAllIfNeeded(); } } handled = true; break; case DISPLAY: if ( cameFromLibrary ) { HidePrefsFormObject( frmPrefsColorIndividual, true ); HidePrefsFormObject( frmPrefsColorAsDefault, true ); } else { Boolean individualDocumentColor; individualDocumentColor = Prefs()->individualDocumentColor; CtlSetValue( GetObjectPtr( frmPrefsColorIndividual ), individualDocumentColor ); CtlSetValue( GetObjectPtr( frmPrefsColorAsDefault ), false ); if ( ! individualDocumentColor ) HidePrefsFormObject( frmPrefsColorAsDefault, true ); } handled = true; break; case RELEASE: handled = true; break; default: handled = false; break; } return handled; }
/*********************************************************************** * * FUNCTION: SelectOneTime * * DESCRIPTION: Display a form showing a time and allow the user * to select a different time. This is the single time * dialog as seen in general panel * * PARAMETERS: hour - pointer to hour to change minute - pointer to minute to change * title - string title for the dialog * * RETURNED: true if the OK button was pressed * if true the parameters passed are changed * * REVISION HISTORY: * Name Date Description * ---- ---- ----------- * roger 12/2/94 Initial Revision in General Panel * gavin 3/20/98 Extracted into separate system function * ***********************************************************************/ Boolean SelectOneTime(Int16 *hour,Int16 *minute, const Char * titleP) { FormType * originalForm, * frm; EventType event; Boolean confirmed = false; Boolean handled = false; Boolean done = false; TimeFormatType timeFormat; // Format to display time in Int16 curHour; UInt16 currentTimeButton; UInt8 hoursTimeButtonValue; Char hoursTimeButtonString[3]; UInt8 minuteTensButtonValue; Char minuteTensButtonString[2]; UInt8 minuteOnesButtonValue; Char minuteOnesButtonString[2]; Char separatorString[3]; timeFormat = (TimeFormatType)PrefGetPreference(prefTimeFormat); originalForm = FrmGetActiveForm(); frm = (FormType *) FrmInitForm (SelectOneTimeDialog); if (titleP) FrmSetTitle (frm, (Char *) titleP); FrmSetActiveForm (frm); curHour = *hour; if (Use24HourFormat(timeFormat)) { // Hide the AM & PM ui FrmHideObject (frm, FrmGetObjectIndex (frm, timeAMCheckbox)); FrmHideObject (frm, FrmGetObjectIndex (frm, timePMCheckbox)); } else { if (curHour < 12) CtlSetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeAMCheckbox)), true); else { CtlSetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timePMCheckbox)), true); curHour -= 12; } if (curHour == 0) curHour = 12; } // Set the time seperator to the system defined one separatorString[0] = TimeSeparator(timeFormat); separatorString[1] = '\0'; FrmCopyLabel(frm, timeSeparatorLabel, separatorString); // Now set the time displayed in the push buttons. hoursTimeButtonValue = curHour; StrIToA(hoursTimeButtonString, hoursTimeButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeHourButton)), hoursTimeButtonString); minuteTensButtonValue = *minute / 10; StrIToA(minuteTensButtonString, minuteTensButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesTensButton)), minuteTensButtonString); minuteOnesButtonValue = *minute % 10; StrIToA(minuteOnesButtonString, minuteOnesButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesOnesButton)), minuteOnesButtonString); // Set the hour time button to be the one set by the arrows currentTimeButton = defaultTimeButton; CtlSetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, defaultTimeButton)), true); FrmDrawForm (frm); while (!done) { EvtGetEvent (&event, evtWaitForever); if (! SysHandleEvent ((EventType *)&event)) FrmHandleEvent (frm,&event); if (event.eType == ctlSelectEvent) { switch (event.data.ctlSelect.controlID) { case timeOkButton: frm = FrmGetActiveForm(); // Set the new time (seconds are cleared). if (Use24HourFormat(timeFormat)) *hour = hoursTimeButtonValue; else { *hour = hoursTimeButtonValue % 12 + // 12am is 0 hours! (CtlGetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timePMCheckbox))) ? 12 : 0); } *minute = minuteTensButtonValue * 10 + minuteOnesButtonValue; done = true; confirmed = true; break; case timeCancelButton: done = true; break; case timeDecreaseButton: case timeIncreaseButton: frm = FrmGetActiveForm(); switch (currentTimeButton) { // MemHandle increasing and decreasing the time for each time digit case timeHourButton: if (event.data.ctlSelect.controlID == timeDecreaseButton) { if (Use24HourFormat(timeFormat)) if (hoursTimeButtonValue > 0) hoursTimeButtonValue--; else hoursTimeButtonValue = 23; else if (hoursTimeButtonValue > 1) hoursTimeButtonValue--; else hoursTimeButtonValue = 12; } else { if (Use24HourFormat(timeFormat)) if (hoursTimeButtonValue < 23) hoursTimeButtonValue++; else hoursTimeButtonValue = 0; else if (hoursTimeButtonValue < 12) hoursTimeButtonValue++; else hoursTimeButtonValue = 1; } StrIToA(hoursTimeButtonString, hoursTimeButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeHourButton)), hoursTimeButtonString); break; case timeMinutesTensButton: if (event.data.ctlSelect.controlID == timeDecreaseButton) { if (minuteTensButtonValue > 0) minuteTensButtonValue--; else minuteTensButtonValue = 5; } else { if (minuteTensButtonValue < 5) minuteTensButtonValue++; else minuteTensButtonValue = 0; } StrIToA(minuteTensButtonString, minuteTensButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesTensButton)), minuteTensButtonString); break; case timeMinutesOnesButton: if (event.data.ctlSelect.controlID == timeDecreaseButton) { if (minuteOnesButtonValue > 0) minuteOnesButtonValue--; else minuteOnesButtonValue = 9; } else { if (minuteOnesButtonValue < 9) minuteOnesButtonValue++; else minuteOnesButtonValue = 0; } StrIToA(minuteOnesButtonString, minuteOnesButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesOnesButton)), minuteOnesButtonString); break; } handled = true; break; // timeDecreaseButton & timeIncreaseButton case timeHourButton: currentTimeButton = timeHourButton; break; case timeMinutesTensButton: currentTimeButton = timeMinutesTensButton; break; case timeMinutesOnesButton: currentTimeButton = timeMinutesOnesButton; break; } } else if (event.eType == appStopEvent) { EvtAddEventToQueue (&event); done = true; break; } } // end while true FrmEraseForm (frm); FrmDeleteForm (frm); FrmSetActiveForm(originalForm); return (confirmed); }
/***** ***** Local Functions ***** */ static void ToggleCheck( UInt16 objID, UInt32 flag ) { CtlSetValue( GetObjectPtr( objID ), !GetFlag(flag) ); SetFlag( flag, !GetFlag(flag) ); }
/*********************************************************************** * * FUNCTION: SelectTime * * DESCRIPTION: Display a form showing a start and end time. * Allow the user to change the time and then * return them. * pTimeDiff. * * PARAMETERS: pStartTime - pointer to TimeType * pEndTime - pointer to TimeType * untimed - true if there isn't a time. * title - string containing the title * startOfDay - used when "All Day" button selected. * endOfDay - our used when "All Day" button selected. * startOfDisplay - first hour initially visible * * RETURNED: True if the time was changed by the user. * The first three parameters may change. * * REVISION HISTORY: * Name Date Description * ---- ---- ----------- * roger 12/2/94 Initial Revision * trev 08/12/97 made non modified passed variables constant * css 06/08/99 added new parameter & "All Day" button for gromit change. * ***********************************************************************/ Boolean SelectTime (TimeType * startTimeP, TimeType * endTimeP, Boolean untimed, const Char * titleP, Int16 startOfDay, Int16 endOfDay, Int16 startOfDisplay) { Int16 firstHour; Char startTimeText [timeStringLength]; Char endTimeText [timeStringLength]; Char timeChars [timeStringLength]; TimePtr timeP; FormType *originalForm, *frm; ListPtr hoursLst, minutesLst; ControlPtr startTimeCtl, endTimeCtl; EventType event; Boolean confirmed = false; MemHandle hoursItems; TimeType startTime, endTime, timeDiff; TimeFormatType timeFormat; ChangingTimeType changingTime; // Get the time format from the system preerances; timeFormat = (TimeFormatType)PrefGetPreference(prefTimeFormat); // Because this routine only deals with minutes in five minute // intervals we convert the proposed times from those passed. startTime.hours = startTimeP->hours; startTime.minutes = startTimeP->minutes; endTime.hours = endTimeP->hours; endTime.minutes = endTimeP->minutes; TimeDifference (&endTime, &startTime, &timeDiff); // Make sure the end time is displayable (clips at 11:55 pm) AdjustTimes (&startTime, &endTime, &timeDiff, changingStartTime); // Clear the buffer that holds written characters. *timeChars = 0; startOfDisplay = min (startOfDisplay, 12); originalForm = FrmGetActiveForm(); frm = (FormType *) FrmInitForm (TimeSelectorForm); FrmSetActiveForm (frm); hoursLst = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorHourList)); minutesLst = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorMinuteList)); startTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorStartTimeButton)); endTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorEndTimeButton)); // Set list to use either 12 or 24 hour time hoursItems = SysFormPointerArrayToStrings ( ((timeFormat == tfColon24h) || (timeFormat == tfDot24h)) ? (Char *) Hours24Array() : (Char *) Hours12Array(), 24); LstSetListChoices (hoursLst, MemHandleLock(hoursItems), 24); LstSetTopItem (hoursLst, startOfDisplay); // Used to do LstMakeItemVisible (hoursLst, startTime.hours); no longer. if (! untimed) { LstSetSelection (hoursLst, startTime.hours); LstSetSelection (minutesLst, startTime.minutes / 5); CtlSetValue (startTimeCtl, true); changingTime = changingStartTime; } else { // The hour list is dynamically created and doesn't have a selection LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } // Set the start and end time buttons to the current times or blank them // if No Time is selected. SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, untimed); // This needs to be taken out when SelectTimeV33 goes away. It allows for backward // compatibility for this change of adding the end of day variable as a parameter. if (endOfDay != noDisplayOfAllDay) { FrmShowObject (frm, FrmGetObjectIndex (frm, TimeSelectorAllDayButton)); } FrmSetTitle (frm, (Char *) titleP); FrmDrawForm (frm); while (true) { EvtGetEvent (&event, evtWaitForever); if (SysHandleEvent ((EventType *)&event)) continue; if (event.eType == appStopEvent) { // Cancel the dialog and repost this event for the app EvtAddEventToQueue(&event); confirmed = false; break; } // Handle these before the form does to overide the default behavior if (changingTime == changingNoTime && event.eType == lstEnterEvent && event.data.lstEnter.listID == TimeSelectorMinuteList) { SndPlaySystemSound(sndError); continue; } FrmHandleEvent (frm, &event); // If the start or end time buttons are pressed then change // the time displayed in the lists. if (event.eType == ctlSelectEvent) { // "Ok" button pressed? if (event.data.ctlSelect.controlID == TimeSelectorOKButton) { confirmed = true; } // "Cancel" button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorCancelButton) { break; } // Start time button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorStartTimeButton) { if (changingTime != changingStartTime) { if (changingTime == changingNoTime) { SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); } CtlSetValue (endTimeCtl, false); LstSetSelection (hoursLst, startTime.hours); LstSetSelection (minutesLst, startTime.minutes / 5); changingTime = changingStartTime; } else CtlSetValue(startTimeCtl, true); } // End time button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorEndTimeButton) { if (changingTime != changingEndTime) { if (changingTime == changingNoTime) { SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); } CtlSetValue(startTimeCtl, false); LstSetSelection (hoursLst, endTime.hours); LstSetSelection (minutesLst, endTime.minutes / 5); changingTime = changingEndTime; } else CtlSetValue(endTimeCtl, true); } // No time button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorNoTimeButton) { if (changingTime != changingNoTime) { if (changingTime == changingStartTime) CtlSetValue(startTimeCtl, false); else CtlSetValue(endTimeCtl, false); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, true); LstSetSelection (hoursLst, noListSelection); LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } // Get us out of this form display now. confirmed = true; } // All day button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorAllDayButton) { if (changingTime != changingNoTime) { if (changingTime == changingStartTime) CtlSetValue(startTimeCtl, false); else CtlSetValue(endTimeCtl, false); LstSetSelection (hoursLst, noListSelection); LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } // No matter what, the minutes are 0 for both because only the hour is registered for start/end // times. startTime.minutes = 0; endTime.minutes = 0; startTime.hours = startOfDay; endTime.hours = endOfDay; // Set the times to the new times. SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, true); // Get us out of this form display now. First set the changing time to anything but the changingNoTime value // so that the pointers at the end of this function get set correctly. changingTime = changingStartTime; confirmed = true; } // Clear the buffer that holds written characters. *timeChars = 0; } // If either list is changed then get the new time. If the // start time is changed then change the end time so that the // the time difference remains the same. If the end time is // changed then make sure the end time isn't before the start // time. Also calculate a new time difference. else if (event.eType == lstSelectEvent) { // First, get the info from the list which has changed. if (event.data.lstSelect.listID == TimeSelectorHourList) { if (changingTime == changingStartTime) startTime.hours = (UInt8) LstGetSelection (hoursLst); else if (changingTime == changingEndTime) endTime.hours = (UInt8) LstGetSelection (hoursLst); else if (changingTime == changingNoTime) { startTime.hours = (UInt8) LstGetSelection (hoursLst); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); CtlSetValue (endTimeCtl, false); LstSetSelection (minutesLst, startTime.minutes / 5); changingTime = changingStartTime; } } else if (event.data.lstSelect.listID == TimeSelectorMinuteList) { if (changingTime == changingStartTime) startTime.minutes = (UInt8) LstGetSelection (minutesLst) * 5; else if (changingTime == changingEndTime) endTime.minutes = (UInt8) LstGetSelection (minutesLst) * 5; else if (changingTime == changingNoTime) { ErrNonFatalDisplay("lstEnterEvent not being filtered."); } } if (AdjustTimes (&startTime, &endTime, &timeDiff, changingTime)) { if (changingTime == changingStartTime) { TimeToAscii (startTime.hours, startTime.minutes, timeFormat, startTimeText); CtlSetLabel (startTimeCtl, startTimeText); } else if (changingTime == changingEndTime) { LstSetSelection (hoursLst, startTime.hours); LstSetSelection (minutesLst, startTime.minutes / 5); } } TimeToAscii(endTime.hours, endTime.minutes, timeFormat, endTimeText); CtlSetLabel(endTimeCtl, endTimeText); // Clear the buffer that holds written characters. *timeChars = 0; } // Handle character written in the time picker. else if (event.eType == keyDownEvent) { if (changingTime == changingEndTime) { timeP = &endTime; firstHour = startTime.hours; } else { timeP = &startTime; firstHour = startOfDisplay; } // If a backspace character was written, change the time picker's // current setting to "no-time". if (event.data.keyDown.chr == backspaceChr) { *timeChars = 0; if (changingTime != changingNoTime) { if (changingTime == changingStartTime) CtlSetValue (startTimeCtl, false); else CtlSetValue (endTimeCtl, false); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, true); LstSetSelection (hoursLst, noListSelection); LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } } // A linefeed character confirms the dialog box. else if (event.data.keyDown.chr == linefeedChr) { confirmed = true; } // If next-field character toggle between start time in end // time. else if (event.data.keyDown.chr == nextFieldChr) { *timeChars = 0; if (changingTime == changingStartTime) { CtlSetValue (startTimeCtl, false); CtlSetValue (endTimeCtl, true); changingTime = changingEndTime; } else { CtlSetValue (endTimeCtl, false); CtlSetValue (startTimeCtl, true); changingTime = changingStartTime; } } // If a valid time character was written, translate the written // character into a time and update the time picker's UI. else if (TranslateTime (timeFormat, event.data.keyDown.chr, firstHour, timeChars, timeP)) { if (changingTime == changingNoTime) { changingTime = changingStartTime; CtlSetValue (startTimeCtl, true); } AdjustTimes (&startTime, &endTime, &timeDiff, changingTime); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); LstSetSelection (hoursLst, timeP->hours); LstSetSelection (minutesLst, timeP->minutes / 5); } } // Has the dialog been confirmed. if (confirmed) { if (changingTime != changingNoTime) { *startTimeP = startTime; *endTimeP = endTime; } else { TimeToInt(*startTimeP) = noTime; TimeToInt(*endTimeP) = noTime; } break; } } FrmEraseForm (frm); FrmDeleteForm (frm); MemHandleFree (hoursItems); FrmSetActiveForm(originalForm); return (confirmed); }
static Boolean URLFormDoCommand(UInt16 command) { GlobalsPtr gP = GetGlobals(); Boolean handled = false; if (!gP) return false; switch (command) { // Menus // Control Objects case kURLOpenButton: { Char *navigationText = FldGetTextPtr(GetObjectPtr(kURLField)); Boolean openInNewTab = false; if (navigationText && StrLen(navigationText)) { if (gP->navigationOpen) { MemPtrFree(gP->navigationOpen); } gP->navigationOpen = StrDup(navigationText); if (CtlGetValue(GetObjectPtr(kURLOpenInNewTabCheckbox))) { openInNewTab = true; } FrmReturnToForm(0); if (openInNewTab) { FrmUpdateForm(kMainForm, frmUpdateNewTab); } FrmUpdateForm(kMainForm, URLFormDetermineRequestType(navigationText)); } } break; case kURLCancelButton: FrmReturnToForm(0); break; // Handle inserting text using the insert buttons, or list. case kWWWPushButton: case kCOMPushButton: case kORGPushButton: case kNETPushButton: case kSlashPushButton: case kDotPushButton: case kHTMLPushButton: { FieldPtr urlFldP = GetObjectPtr(kURLField); const Char *buttonLabelP = CtlGetLabel(GetObjectPtr(command)); FldInsert(urlFldP, buttonLabelP, StrLen(buttonLabelP)); CtlSetValue(GetObjectPtr(command), 0); handled = true; } break; case kMoreTrigger: { ListPtr moreListP = GetObjectPtr(kMoreList); FieldPtr urlFldP = GetObjectPtr(kURLField); Int16 selection = LstPopupList(moreListP); if (selection >= 0) { const Char *selectionP = LstGetSelectionText(moreListP, selection); FldInsert(urlFldP, selectionP, StrLen(selectionP)); } handled = true; } break; // Default default: break; } return handled; }