frm_page.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /****************************************************************************
  2. * Copyright (c) 1998 Free Software Foundation, Inc. *
  3. * *
  4. * Permission is hereby granted, free of charge, to any person obtaining a *
  5. * copy of this software and associated documentation files (the *
  6. * "Software"), to deal in the Software without restriction, including *
  7. * without limitation the rights to use, copy, modify, merge, publish, *
  8. * distribute, distribute with modifications, sublicense, and/or sell *
  9. * copies of the Software, and to permit persons to whom the Software is *
  10. * furnished to do so, subject to the following conditions: *
  11. * *
  12. * The above copyright notice and this permission notice shall be included *
  13. * in all copies or substantial portions of the Software. *
  14. * *
  15. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
  16. * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
  18. * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
  19. * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
  20. * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
  21. * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
  22. * *
  23. * Except as contained in this notice, the name(s) of the above copyright *
  24. * holders shall not be used in advertising or otherwise to promote the *
  25. * sale, use or other dealings in this Software without prior written *
  26. * authorization. *
  27. ****************************************************************************/
  28. /****************************************************************************
  29. * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
  30. ****************************************************************************/
  31. #include "form.priv.h"
  32. MODULE_ID("$Id$")
  33. /*---------------------------------------------------------------------------
  34. | Facility : libnform
  35. | Function : int set_form_page(FORM * form,int page)
  36. |
  37. | Description : Set the page number of the form.
  38. |
  39. | Return Values : E_OK - success
  40. | E_BAD_ARGUMENT - invalid form pointer or page number
  41. | E_BAD_STATE - called from a hook routine
  42. | E_INVALID_FIELD - current field can't be left
  43. | E_SYSTEM_ERROR - system error
  44. +--------------------------------------------------------------------------*/
  45. int set_form_page(FORM * form, int page)
  46. {
  47. int err = E_OK;
  48. if ( !form || (page<0) || (page>=form->maxpage) )
  49. RETURN(E_BAD_ARGUMENT);
  50. if (!(form->status & _POSTED))
  51. {
  52. form->curpage = page;
  53. form->current = _nc_First_Active_Field(form);
  54. }
  55. else
  56. {
  57. if (form->status & _IN_DRIVER)
  58. err = E_BAD_STATE;
  59. else
  60. {
  61. if (form->curpage != page)
  62. {
  63. if (!_nc_Internal_Validation(form))
  64. err = E_INVALID_FIELD;
  65. else
  66. {
  67. Call_Hook(form,fieldterm);
  68. Call_Hook(form,formterm);
  69. err = _nc_Set_Form_Page(form,page,(FIELD *)0);
  70. Call_Hook(form,forminit);
  71. Call_Hook(form,fieldinit);
  72. _nc_Refresh_Current_Field(form);
  73. }
  74. }
  75. }
  76. }
  77. RETURN(err);
  78. }
  79. /*---------------------------------------------------------------------------
  80. | Facility : libnform
  81. | Function : int form_page(const FORM * form)
  82. |
  83. | Description : Return the current page of the form.
  84. |
  85. | Return Values : >= 0 : current page number
  86. | -1 : invalid form pointer
  87. +--------------------------------------------------------------------------*/
  88. int form_page(const FORM * form)
  89. {
  90. return Normalize_Form(form)->curpage;
  91. }
  92. /* frm_page.c ends here */