void ScrollLines( Word fldindex, Word sbarindex, int numLinesToScroll, Boolean redraw ) { FormPtr frm=FrmGetActiveForm(); FieldPtr fld; fld = FrmGetObjectPtr( frm, FrmGetObjectIndex( frm, fldindex ) ); if( numLinesToScroll<0 ) FldScrollField( fld, -numLinesToScroll, up ); else FldScrollField( fld, numLinesToScroll, down ); if( (FldGetNumberOfBlankLines(fld) && numLinesToScroll<0) || redraw ) UpdateScrollbar( fldindex, sbarindex ); }
/*----------------------------------------------------------------linesScroll-+ | | +----------------------------------------------------------------------------*/ void linesScroll(int numLinesToScroll, Boolean redraw) { FormPtr frm = FrmGetActiveForm(); FieldPtr field = (FieldPtr)FrmGetObjectPtr( frm, FrmGetObjectIndex(frm, MainConsoleField) ); if (numLinesToScroll < 0) { FldScrollField(field, -numLinesToScroll, winUp); }else { FldScrollField(field, numLinesToScroll, winDown); } if ((FldGetNumberOfBlankLines(field) && numLinesToScroll < 0) || redraw) { updateScroll(); } }
/********************************************************************** PAGE_SCROLL_FIELD IN: frm, fld = various UI doodads dir = whether to scroll 'fld' up or down OUT: PURPOSE: Call this to scroll the field 'fld' up/down by one "page". (The caller should call update_field_scrollers immediately afterward.) **********************************************************************/ #ifndef I_AM_COLOR void page_scroll_field(FormPtr frm, FieldPtr fld, DirectionType dir) #else /* I_AM_COLOR */ void page_scroll_field(FormPtr frm, FieldPtr fld, WinDirectionType dir) #endif /* I_AM_COLOR */ { Word linesToScroll; /* how many lines can we scroll? */ if (FldScrollable(fld, dir)) { linesToScroll = FldGetVisibleLines(fld) - 1; FldScrollField(fld, linesToScroll, dir); } return; }
static void RulesScroll (WinDirectionType dir, Boolean screen) { FieldPtr field; Word fieldIndex; Word lines; fieldIndex = FrmGetObjectIndex (rulesFrm, rulesText); field = FrmGetObjectPtr (rulesFrm, fieldIndex); if (screen) { lines = FldGetVisibleLines (field) - 2; if (lines < 1) lines = 1; } else lines = 1; FldScrollField (field, lines, dir); RulesSetScrolling (); }
static Boolean FlopFormHandleEvent(EventPtr event) { Boolean handled = false; UInt16 value; FieldPtr field; FormPtr form; int fieldid; UInt16 *curval; static UInt16 curinval = 0; static UInt16 curoutval = 0; form = FrmGetFormPtr(FlopForm); switch (event->eType) { case frmOpenEvent: SetField(FlopForm, FlopText , TextBuffer); SetField(FlopForm, FlopFileName , FileNameBuffer); FrmDrawForm(form); handled = true; break; case sclRepeatEvent: value = event->data.sclRepeat.newValue; if (event->data.sclRepeat.scrollBarID == FlopInScrollBar) { /* its the input field scrollbar */ fieldid = FlopText; curval = &curinval; } else { /* its the output field scrollbar */ fieldid = FlopOutput; curval = &curoutval; } field = (FieldPtr)FrmGetObjectPtr(form,FrmGetObjectIndex(form,fieldid)); if (value > *curval) FldScrollField(field,value-*curval, winDown); else FldScrollField(field, *curval-value, winUp); *curval = value; break; case ctlSelectEvent: switch (event->data.ctlSelect.controlID) { case FlopSpeak: FlopSpeakCmd(FlopForm,FlopText,FlopOutput); FrmDrawForm(form); handled = true; break; case FlopShutup: StopPlayStream(); handled = true; break; case FlopExit: FlopStop = true; handled = true; break; default: break; } break; case popSelectEvent: FlopOutputType = event->data.popSelect.selection; CtlSetLabel(event->data.popSelect.controlP, FlopOutputTypes[FlopOutputType]); handled = true; break; case menuEvent: MenuEraseStatus(NULL); switch (event->data.menu.itemID) { case FlopOptionsAboutCmd: (void)FrmAlert(FlopAboutAlert); handled = true; break; default: break; } break; default: break; } return handled; }
Boolean AnnotationFormHandleEvent ( EventType* event /* pointer to an EventType structure */ ) { Boolean handled; handled = ResizeHandleEvent( event ); if ( handled ) return handled; switch ( event->eType ) { case frmOpenEvent: AnnotationFormInit(); handled = true; break; case keyDownEvent: switch ( event->data.keyDown.chr ) { case pageUpChr: if ( FldScrollable( field, winUp ) ) FldScrollField( field, 1, winUp ); UpdateFieldScrollbar( field, scrollBar ); break; case pageDownChr: if ( FldScrollable( field, winDown ) ) FldScrollField( field, 1, winDown ); UpdateFieldScrollbar( field, scrollBar ); break; default: { UInt16 scrollPos; UInt16 textHeight; UInt16 fieldHeight; FldGetScrollValues( field, &scrollPos, &textHeight, &fieldHeight ); if ( FldHandleEvent( field, event ) ) { UInt16 newScrollPos; UInt16 newTextHeight; UInt16 newFieldHeight; FldGetScrollValues( field, &newScrollPos, &newTextHeight, &newFieldHeight ); if ( scrollPos != newScrollPos || textHeight != newTextHeight || fieldHeight != newFieldHeight ) UpdateFieldScrollbar( field, scrollBar ); handled = true; } break; } } break; case sclRepeatEvent: ScrollMessage( field, event->data.sclRepeat.newValue - event->data.sclRepeat.value ); break; case ctlSelectEvent: switch ( event->data.ctlSelect.controlID ){ case frmAnnotationCancel: AnnotationFormClose(); FrmReturnToForm( Prefs()->lastForm ); handled = true; break; case frmAnnotationOK: SaveAnnotation(); AnnotationFormClose(); FrmReturnToForm( Prefs()->lastForm ); if ( IsFormMain( Prefs()->lastForm ) ) FrmUpdateForm( GetMainFormId(), frmRedrawUpdateCode ); handled = true; break; case frmAnnotationDelete: if ( entryP->id.indexInParagraph != NEW_ANNOTATION ) { DeleteAnnotation( &( entryP->id ) ); } AnnotationFormClose(); if ( IsFormMain( Prefs()->lastForm ) ) FrmUpdateForm( GetMainFormId(), frmRedrawUpdateCode ); FrmReturnToForm( Prefs()->lastForm ); handled = true; break; default: handled = true; break; } break; case frmCloseEvent: AnnotationFormClose(); handled = false; break; default: handled = false; } return handled; }