filelib.tcl 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. ###########################################################
  2. # Name: filelib.tcl
  3. # Author: Daniele Bonini (posta@elettronica.lol)
  4. # Date: 01/12/2023
  5. # Desc: Files namespace of RadXIDE.
  6. #
  7. # Files namespace and most of code
  8. # here presented and distributed contain excerpts
  9. # from [alited](https://github.com/aplsimple/alited
  10. # by Alex Plotnikov and contributors to the project.
  11. # The original code of these excerpts could be
  12. # borrowed from other sources which the author
  13. # and the contributors to this RadXIDE have no
  14. # knowledge about.
  15. #
  16. # License: MIT. Copyrights 5 Mode (Last implementation and adaptations.)
  17. # Copyright (c) 2021-2023 Alex Plotnikov https://aplsimple.github.io (original scaffolding and excerpts.)
  18. #
  19. ###########################################################
  20. namespace eval filelib {
  21. # __________________________ createFile _________________________ #
  22. proc createFile {{destfolder ""}} {
  23. # Create a file.
  24. # fname - file name
  25. # stxt - text to save
  26. namespace upvar ::radxide dan dan project project
  27. set n "newfile"
  28. #tk_messageBox -title $dan(TITLE) -icon error -message $destfolder
  29. if {$destfolder ne ""} {
  30. #tk_messageBox -title $dan(TITLE) -icon error -message "Yess!"
  31. set num 1
  32. while {[file exists $destfolder/$n$num]} {
  33. incr num
  34. }
  35. #tk_messageBox -title $dan(TITLE) -icon error -message $destfolder/$n$num
  36. set fname $destfolder/$n$num
  37. set fh [open $fname {WRONLY CREAT}]
  38. set stxt ""
  39. puts $fh $stxt
  40. close $fh
  41. }
  42. }
  43. # __________________________ delFile _________________________ #
  44. proc delFile {{fname ""}} {
  45. # Delete a file.
  46. # fname - file name
  47. if {($fname ne "")} {
  48. catch {[file delete $fname]}
  49. }
  50. }
  51. # __________________________ openFile _________________________ #
  52. proc openFile {{fname ""} {reload no} {islist no} {Message {}}} {
  53. # Handles "Open file" menu item.
  54. # fnames - file name (if not set, asks for it)
  55. # reload - if yes, loads the file even if it has a "strange" extension
  56. # islist - if yes, *fnames* is a file list
  57. # Message - name of procedure for "open file" message
  58. # Return the content of the file
  59. namespace upvar ::radxide dan dan
  60. set ret ""
  61. if {$fname ne ""} {
  62. if {[file size $fname] > $dan(MAXFILESIZE)} {
  63. tk_messageBox -title $dan(TITLE) -icon error -message "File exceed MAXFILESIZE=$dan(MAXFILESIZE)"
  64. return $ret
  65. }
  66. set fh [open $fname {RDONLY}]
  67. set ret [set data [read $fh]]
  68. close $fh
  69. }
  70. return $ret
  71. }
  72. # __________________________ saveFile _________________________ #
  73. proc saveFile {{fname ""} {stxt ""}} {
  74. # Saves a file.
  75. # fname - file name
  76. # stxt - text to save
  77. namespace upvar ::radxide dan dan project project
  78. if {($fname ne "") && ($stxt ne "")} {
  79. set fh [open $fname {WRONLY CREAT}]
  80. puts $fh $stxt
  81. close $fh
  82. }
  83. }
  84. #_______________________
  85. }
  86. # _________________________________ EOF _________________________________ #