/tools/cobjapi/examples_simple/filedialog.cob

https://gitlab.com/iladin/open-cobol-contrib · COBOL · 145 lines · 69 code · 22 blank · 54 comment · 0 complexity · 5747491df5979af094be46bb922b6a7c MD5 · raw file

  1. *>******************************************************************************
  2. *> This file is part of cobjapi.
  3. *>
  4. *> filedialog.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. *> filedialog.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 filedialog.cob.
  16. *> If not, see <http://www.gnu.org/licenses/>.
  17. *>******************************************************************************
  18. *>******************************************************************************
  19. *> Program: filedialog.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 filedialog.cob cobjapi.o \
  29. *> japilib.o \
  30. *> imageio.o \
  31. *> fileselect.o
  32. *>
  33. *> Usage: ./filedialog.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. *> - filedialog.c converted into filedialog.cob.
  44. *>******************************************************************************
  45. IDENTIFICATION DIVISION.
  46. PROGRAM-ID. filedialog.
  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-FILEDIALOG
  58. FUNCTION J-SHOW
  59. FUNCTION J-NEXTACTION
  60. FUNCTION J-QUIT
  61. FUNCTION ALL INTRINSIC.
  62. DATA DIVISION.
  63. WORKING-STORAGE SECTION.
  64. *> function return value
  65. 01 WS-RET BINARY-INT.
  66. *> GUI elements
  67. 01 WS-FRAME BINARY-INT.
  68. 01 WS-MENUBAR BINARY-INT.
  69. 01 WS-FILE BINARY-INT.
  70. 01 WS-QUIT BINARY-INT.
  71. 01 WS-OPEN BINARY-INT.
  72. 01 WS-SAVE BINARY-INT.
  73. 01 WS-OBJ BINARY-INT.
  74. *> function args
  75. 01 WS-DEBUG-LEVEL BINARY-INT.
  76. *> vars
  77. 01 WS-FILENAME PIC X(1024).
  78. PROCEDURE DIVISION.
  79. *>------------------------------------------------------------------------------
  80. MAIN-FILEDIALOG SECTION.
  81. *>------------------------------------------------------------------------------
  82. *> MOVE 5 TO WS-DEBUG-LEVEL
  83. *> MOVE J-SETDEBUG(WS-DEBUG-LEVEL) TO WS-RET
  84. MOVE J-START() TO WS-RET
  85. IF WS-RET = ZEROES
  86. THEN
  87. DISPLAY "can't connect to server"
  88. STOP RUN
  89. END-IF
  90. *> Generate GUI Objects
  91. MOVE J-FRAME("Filedialog Demo") TO WS-FRAME
  92. MOVE J-MENUBAR(WS-FRAME) TO WS-MENUBAR
  93. MOVE J-MENU(WS-MENUBAR, "File") TO WS-FILE
  94. MOVE J-MENUITEM(WS-FILE, "Open") TO WS-OPEN
  95. MOVE J-MENUITEM(WS-FILE, "Save") TO WS-SAVE
  96. MOVE J-MENUITEM(WS-FILE, "Quit") TO WS-QUIT
  97. MOVE J-SHOW(WS-FRAME) TO WS-RET
  98. *> Waiting for actions
  99. PERFORM FOREVER
  100. MOVE J-NEXTACTION() TO WS-OBJ
  101. IF WS-OBJ = WS-OPEN
  102. THEN
  103. MOVE J-FILEDIALOG(WS-FRAME, "Open File", "..", WS-FILENAME)
  104. TO WS-RET
  105. DISPLAY "Open File: " TRIM(WS-FILENAME)
  106. END-IF
  107. IF WS-OBJ = WS-SAVE
  108. THEN
  109. MOVE J-FILEDIALOG(WS-FRAME, "Save File", ".", WS-FILENAME)
  110. TO WS-RET
  111. DISPLAY "Save File: " TRIM(WS-FILENAME)
  112. END-IF
  113. IF (WS-OBJ = WS-QUIT) OR (WS-OBJ = WS-FRAME)
  114. THEN
  115. EXIT PERFORM
  116. END-IF
  117. END-PERFORM
  118. MOVE J-QUIT() TO WS-RET
  119. STOP RUN
  120. .
  121. MAIN-FILEDIALOG-EX.
  122. EXIT.
  123. END PROGRAM filedialog.