/tools/cobjapi/examples_simple/dialogmodal.cob

https://gitlab.com/iladin/open-cobol-contrib · COBOL · 181 lines · 98 code · 26 blank · 57 comment · 0 complexity · 71be23c5fe85ad17aed59309a9661d11 MD5 · raw file

  1. *>******************************************************************************
  2. *> This file is part of cobjapi.
  3. *>
  4. *> dialogmodal.cob is free software: you can redistribute it and/or
  5. *> modify it under the terms of the GNU Lesser General Public License as
  6. *> published by the Free Software Foundation, either version 3 of the License,
  7. *> or (at your option) any later version.
  8. *>
  9. *> dialogmodal.cob is distributed in the hope that it will be useful,
  10. *> but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. *> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. *> See the GNU Lesser General Public License for more details.
  13. *>
  14. *> You should have received a copy of the GNU Lesser General Public License
  15. *> along with dialogmodal.cob.
  16. *> If not, see <http://www.gnu.org/licenses/>.
  17. *>******************************************************************************
  18. *>******************************************************************************
  19. *> Program: dialogmodal.cob
  20. *>
  21. *> Purpose: Example GnuCOBOL program for JAPI
  22. *>
  23. *> Author: Laszlo Erdos - https://www.facebook.com/wortfee
  24. *>
  25. *> Date-Written: 2014.12.24
  26. *>
  27. *> Tectonics: Example for static link.
  28. *> cobc -x -free dialogmodal.cob cobjapi.o \
  29. *> japilib.o \
  30. *> imageio.o \
  31. *> fileselect.o
  32. *>
  33. *> Usage: ./dialogmodal.exe
  34. *>
  35. *>******************************************************************************
  36. *> Date Name / Change description
  37. *> ========== ==================================================================
  38. *> 2003.02.26 This comment is only for History. The latest Version (V1.0.6) of
  39. *> JAPI was released on 02/26/2003. Homepage: http://www.japi.de
  40. *>------------------------------------------------------------------------------
  41. *> 2014.12.24 Laszlo Erdos:
  42. *> - GnuCOBOL support for JAPI added.
  43. *> - dialogmodal.c converted into dialogmodal.cob.
  44. *>******************************************************************************
  45. IDENTIFICATION DIVISION.
  46. PROGRAM-ID. dialogmodal.
  47. AUTHOR. Laszlo Erdos.
  48. ENVIRONMENT DIVISION.
  49. CONFIGURATION SECTION.
  50. REPOSITORY.
  51. FUNCTION J-SETDEBUG
  52. FUNCTION J-START
  53. FUNCTION J-FRAME
  54. FUNCTION J-MENUBAR
  55. FUNCTION J-MENU
  56. FUNCTION J-MENUITEM
  57. FUNCTION J-DIALOG
  58. FUNCTION J-SETFLOWLAYOUT
  59. FUNCTION J-LABEL
  60. FUNCTION J-BUTTON
  61. FUNCTION J-PACK
  62. FUNCTION J-SHOW
  63. FUNCTION J-HIDE
  64. FUNCTION J-NEXTACTION
  65. FUNCTION J-DISABLE
  66. FUNCTION J-ENABLE
  67. FUNCTION J-GETXPOS
  68. FUNCTION J-GETYPOS
  69. FUNCTION J-GETWIDTH
  70. FUNCTION J-GETHEIGHT
  71. FUNCTION J-SETPOS
  72. FUNCTION J-QUIT
  73. FUNCTION ALL INTRINSIC.
  74. DATA DIVISION.
  75. WORKING-STORAGE SECTION.
  76. *> function return value
  77. 01 WS-RET BINARY-INT.
  78. *> GUI elements
  79. 01 WS-FRAME BINARY-INT.
  80. 01 WS-MENUBAR BINARY-INT.
  81. 01 WS-FILE BINARY-INT.
  82. 01 WS-QUIT BINARY-INT.
  83. 01 WS-OBJ BINARY-INT.
  84. 01 WS-DOIT BINARY-INT.
  85. 01 WS-OPEN BINARY-INT.
  86. 01 WS-DIALOG BINARY-INT.
  87. 01 WS-LABEL BINARY-INT.
  88. 01 WS-CLOSE BINARY-INT.
  89. *> function args
  90. 01 WS-DEBUG-LEVEL BINARY-INT.
  91. 01 WS-XPOS BINARY-INT.
  92. 01 WS-YPOS BINARY-INT.
  93. *> Constants for the cobjapi wrapper
  94. COPY "cobjapi.cpy".
  95. PROCEDURE DIVISION.
  96. *>------------------------------------------------------------------------------
  97. MAIN-DIALOGMODAL SECTION.
  98. *>------------------------------------------------------------------------------
  99. *> MOVE 5 TO WS-DEBUG-LEVEL
  100. *> MOVE J-SETDEBUG(WS-DEBUG-LEVEL) TO WS-RET
  101. MOVE J-START() TO WS-RET
  102. IF WS-RET = ZEROES
  103. THEN
  104. DISPLAY "can't connect to server"
  105. STOP RUN
  106. END-IF
  107. *> Generate GUI Objects
  108. MOVE J-FRAME("Modal Dialog Demo") TO WS-FRAME
  109. MOVE J-MENUBAR(WS-FRAME) TO WS-MENUBAR
  110. MOVE J-MENU(WS-MENUBAR, "File") TO WS-FILE
  111. MOVE J-MENUITEM(WS-FILE, "Quit") TO WS-QUIT
  112. MOVE J-MENU(WS-MENUBAR, "Do It") TO WS-DOIT
  113. MOVE J-MENUITEM(WS-DOIT, "Open Dialog") TO WS-OPEN
  114. MOVE J-DIALOG(WS-FRAME, "Modal Dialog Demo") TO WS-DIALOG
  115. MOVE J-SETFLOWLAYOUT(WS-DIALOG, J-VERTICAL) TO WS-RET
  116. MOVE J-LABEL(WS-DIALOG, "Hello World") TO WS-LABEL
  117. MOVE J-BUTTON(WS-DIALOG, "Close") TO WS-CLOSE
  118. MOVE J-PACK(WS-DIALOG) TO WS-RET
  119. MOVE J-SHOW(WS-FRAME) TO WS-RET
  120. *> Waiting for actions
  121. PERFORM FOREVER
  122. MOVE J-NEXTACTION() TO WS-OBJ
  123. IF WS-OBJ = WS-OPEN
  124. THEN
  125. *> Modal Dialog --> disable frame
  126. MOVE J-DISABLE(WS-FRAME) TO WS-RET
  127. *> place in the middle
  128. COMPUTE WS-XPOS = J-GETXPOS(WS-FRAME)
  129. + J-GETWIDTH(WS-FRAME) / 2
  130. - J-GETWIDTH(WS-DIALOG) / 2
  131. END-COMPUTE
  132. COMPUTE WS-YPOS = J-GETYPOS(WS-FRAME)
  133. + J-GETHEIGHT(WS-FRAME) / 2
  134. - J-GETHEIGHT(WS-DIALOG) / 2
  135. END-COMPUTE
  136. MOVE J-SETPOS(WS-DIALOG, WS-XPOS, WS-YPOS) TO WS-RET
  137. MOVE J-SHOW(WS-DIALOG) TO WS-RET
  138. END-IF
  139. IF (WS-OBJ = WS-CLOSE) OR (WS-OBJ = WS-DIALOG)
  140. THEN
  141. MOVE J-HIDE(WS-DIALOG) TO WS-RET
  142. *> Modal Dialog --> enable frame
  143. MOVE J-ENABLE(WS-FRAME) TO WS-RET
  144. END-IF
  145. IF (WS-OBJ = WS-QUIT) OR (WS-OBJ = WS-FRAME)
  146. THEN
  147. EXIT PERFORM
  148. END-IF
  149. END-PERFORM
  150. MOVE J-QUIT() TO WS-RET
  151. STOP RUN
  152. .
  153. MAIN-DIALOGMODAL-EX.
  154. EXIT.
  155. END PROGRAM dialogmodal.