예제 #1
0
파일: scdir.c 프로젝트: 12019/scez-ng
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 );
}
예제 #2
0
파일: screen.cpp 프로젝트: Jaxo/yaxx
/*----------------------------------------------------------------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();
   }
}
예제 #3
0
/**********************************************************************
                       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;
}
예제 #4
0
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 ();
}
예제 #5
0
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;
}
예제 #6
0
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;
}