post_form (FORM * form) { WINDOW *formwin; int err; int page; if (!form) RETURN(E_BAD_ARGUMENT); if (form->status & _POSTED) RETURN(E_POSTED); if (!(form->field)) RETURN(E_NOT_CONNECTED); formwin = Get_Form_Window(form); if ((form->cols > getmaxx(formwin)) || (form->rows > getmaxy(formwin))) RETURN(E_NO_ROOM); /* reset form->curpage to an invald value. This forces Set_Form_Page to do the page initialization which is required by post_form. */ page = form->curpage; form->curpage = -1; if ((err = _nc_Set_Form_Page(form,page,form->current))!=E_OK) RETURN(err); form->status |= _POSTED; Call_Hook(form,forminit); Call_Hook(form,fieldinit); _nc_Refresh_Current_Field(form); RETURN(E_OK); }
/*--------------------------------------------------------------------------- | Facility : libnform | Function : int set_current_field(FORM * form,FIELD * field) | | Description : Set the current field of the form to the specified one. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid form or field pointer | E_REQUEST_DENIED - field not selectable | E_BAD_STATE - called from a hook routine | E_INVALID_FIELD - current field can't be left | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ int set_current_field(FORM * form, FIELD * field) { int err = E_OK; if ( !form || !field ) RETURN(E_BAD_ARGUMENT); if ( (form != field->form) || Field_Is_Not_Selectable(field) ) RETURN(E_REQUEST_DENIED); if (!(form->status & _POSTED)) { form->current = field; form->curpage = field->page; } else { if (form->status & _IN_DRIVER) err = E_BAD_STATE; else { if (form->current != field) { if (!_nc_Internal_Validation(form)) err = E_INVALID_FIELD; else { Call_Hook(form,fieldterm); if (field->page != form->curpage) { Call_Hook(form,formterm); err = _nc_Set_Form_Page(form,field->page,field); Call_Hook(form,forminit); } else { err = _nc_Set_Current_Field(form,field); } Call_Hook(form,fieldinit); _nc_Refresh_Current_Field(form); } } } } RETURN(err); }
set_form_page(FORM *form, int page) { int err = E_OK; T((T_CALLED("set_form_page(%p,%d)"), form, page)); if (!form || (page < 0) || (page >= form->maxpage)) RETURN(E_BAD_ARGUMENT); if (!(form->status & _POSTED)) { form->curpage = page; form->current = _nc_First_Active_Field(form); } else { if (form->status & _IN_DRIVER) err = E_BAD_STATE; else { if (form->curpage != page) { if (!_nc_Internal_Validation(form)) err = E_INVALID_FIELD; else { Call_Hook(form, fieldterm); Call_Hook(form, formterm); err = _nc_Set_Form_Page(form, page, (FIELD *)0); Call_Hook(form, forminit); Call_Hook(form, fieldinit); _nc_Refresh_Current_Field(form); } } } } RETURN(err); }