/tools/cobjapi/examples_simple/windowlistener.cob

https://gitlab.com/iladin/open-cobol-contrib · COBOL · 202 lines · 114 code · 34 blank · 54 comment · 0 complexity · be1877be8f79622ceca1afcefbc5d388 MD5 · raw file

  1. *>******************************************************************************
  2. *> This file is part of cobjapi.
  3. *>
  4. *> windowlistener.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. *> windowlistener.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 windowlistener.cob.
  16. *> If not, see <http://www.gnu.org/licenses/>.
  17. *>******************************************************************************
  18. *>******************************************************************************
  19. *> Program: windowlistener.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 windowlistener.cob cobjapi.o \
  29. *> japilib.o \
  30. *> imageio.o \
  31. *> fileselect.o
  32. *>
  33. *> Usage: ./windowlistener.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. *> - windowlistener.c converted into windowlistener.cob.
  44. *>******************************************************************************
  45. IDENTIFICATION DIVISION.
  46. PROGRAM-ID. windowlistener.
  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-SETGRIDLAYOUT
  55. FUNCTION J-TEXTAREA
  56. FUNCTION J-WINDOWLISTENER
  57. FUNCTION J-SHOW
  58. FUNCTION J-PACK
  59. FUNCTION J-NEXTACTION
  60. FUNCTION J-APPENDTEXT
  61. FUNCTION J-DISPOSE
  62. FUNCTION J-QUIT
  63. FUNCTION ALL INTRINSIC.
  64. DATA DIVISION.
  65. WORKING-STORAGE SECTION.
  66. *> function return value
  67. 01 WS-RET BINARY-INT.
  68. *> GUI elements
  69. 01 WS-FRAME BINARY-INT.
  70. 01 WS-TEXT BINARY-INT.
  71. 01 WS-OBJ BINARY-INT.
  72. 01 WS-ACTIVATED BINARY-INT.
  73. 01 WS-DEACTIVATED BINARY-INT.
  74. 01 WS-OPENED BINARY-INT.
  75. 01 WS-CLOSED BINARY-INT.
  76. 01 WS-ICONIFIED BINARY-INT.
  77. 01 WS-DEICONIFIED BINARY-INT.
  78. *> function args
  79. 01 WS-DEBUG-LEVEL BINARY-INT.
  80. 01 WS-WIDTH BINARY-INT.
  81. 01 WS-HEIGHT BINARY-INT.
  82. 01 WS-ROW BINARY-INT.
  83. 01 WS-COL BINARY-INT.
  84. *> Constants for the cobjapi wrapper
  85. COPY "cobjapi.cpy".
  86. PROCEDURE DIVISION.
  87. *>------------------------------------------------------------------------------
  88. MAIN-WINDOWLISTENER SECTION.
  89. *>------------------------------------------------------------------------------
  90. *> MOVE 5 TO WS-DEBUG-LEVEL
  91. *> MOVE J-SETDEBUG(WS-DEBUG-LEVEL) TO WS-RET
  92. MOVE J-START() TO WS-RET
  93. IF WS-RET = ZEROES
  94. THEN
  95. DISPLAY "can't connect to server"
  96. STOP RUN
  97. END-IF
  98. *> Generate GUI Objects
  99. MOVE J-FRAME("Window Listener") TO WS-FRAME
  100. MOVE 1 TO WS-ROW
  101. MOVE 1 TO WS-COL
  102. MOVE J-SETGRIDLAYOUT(WS-FRAME, WS-ROW, WS-COL) TO WS-RET
  103. MOVE 80 TO WS-ROW
  104. MOVE 25 TO WS-COL
  105. MOVE J-TEXTAREA(WS-FRAME, WS-ROW, WS-COL) TO WS-TEXT
  106. MOVE J-WINDOWLISTENER(WS-FRAME, J-OPENED) TO WS-OPENED
  107. MOVE J-WINDOWLISTENER(WS-FRAME, J-CLOSED) TO WS-CLOSED
  108. MOVE J-WINDOWLISTENER(WS-FRAME, J-ACTIVATED) TO WS-ACTIVATED
  109. MOVE J-WINDOWLISTENER(WS-FRAME, J-DEACTIVATED) TO WS-DEACTIVATED
  110. MOVE J-WINDOWLISTENER(WS-FRAME, J-ICONIFIED) TO WS-ICONIFIED
  111. MOVE J-WINDOWLISTENER(WS-FRAME, J-DEICONIFIED) TO WS-DEICONIFIED
  112. MOVE J-SHOW(WS-FRAME) TO WS-RET
  113. MOVE J-PACK(WS-FRAME) TO WS-RET
  114. *> Waiting for actions
  115. PERFORM FOREVER
  116. MOVE J-NEXTACTION() TO WS-OBJ
  117. IF WS-OBJ = WS-FRAME
  118. THEN
  119. EXIT PERFORM
  120. END-IF
  121. IF WS-OBJ = WS-OPENED
  122. THEN
  123. MOVE J-APPENDTEXT(WS-TEXT, "Frame opened" & X"0A") TO WS-RET
  124. END-IF
  125. IF WS-OBJ = WS-CLOSED
  126. THEN
  127. MOVE J-APPENDTEXT(WS-TEXT, "Frame closed" & X"0A") TO WS-RET
  128. END-IF
  129. IF WS-OBJ = WS-ACTIVATED
  130. THEN
  131. MOVE J-APPENDTEXT(WS-TEXT, "Frame activated" & X"0A") TO WS-RET
  132. END-IF
  133. IF WS-OBJ = WS-DEACTIVATED
  134. THEN
  135. MOVE J-APPENDTEXT(WS-TEXT, "Frame deactivated" & X"0A") TO WS-RET
  136. END-IF
  137. IF WS-OBJ = WS-ICONIFIED
  138. THEN
  139. MOVE J-APPENDTEXT(WS-TEXT, "Frame iconfied" & X"0A") TO WS-RET
  140. END-IF
  141. IF WS-OBJ = WS-DEICONIFIED
  142. THEN
  143. MOVE J-APPENDTEXT(WS-TEXT, "Frame deiconfied" & X"0A") TO WS-RET
  144. END-IF
  145. END-PERFORM
  146. MOVE J-APPENDTEXT(WS-TEXT, "Frame closing, press again closing icon" & X"0A") TO WS-RET
  147. PERFORM FOREVER
  148. MOVE J-NEXTACTION() TO WS-OBJ
  149. IF WS-OBJ = WS-FRAME
  150. THEN
  151. EXIT PERFORM
  152. END-IF
  153. END-PERFORM
  154. MOVE J-DISPOSE(WS-FRAME) TO WS-RET
  155. PERFORM FOREVER
  156. MOVE J-NEXTACTION() TO WS-OBJ
  157. IF WS-OBJ = WS-CLOSED
  158. THEN
  159. EXIT PERFORM
  160. END-IF
  161. END-PERFORM
  162. DISPLAY "Frame closed" END-DISPLAY
  163. MOVE J-QUIT() TO WS-RET
  164. STOP RUN
  165. .
  166. MAIN-WINDOWLISTENER-EX.
  167. EXIT.
  168. END PROGRAM windowlistener.