gmlib.tcl 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. ##########################################################################
  2. #
  3. # gmlib.tcl
  4. #
  5. # Procedures library for GIS Manager: GUI for GRASS 6
  6. # Author: Michael Barton (Arizona State University)
  7. # with contributions by Glynn Clements, Markus Neteler, Lorenzo Moretti,
  8. # Florian Goessmann, and others
  9. #
  10. # January 2008
  11. #
  12. # COPYRIGHT: (C) 1999 - 2008 by the GRASS Development Team
  13. #
  14. # This program is free software under the GNU General Public
  15. # License (>=v2). Read the file COPYING that comes with GRASS
  16. # for details.
  17. #
  18. ##########################################################################
  19. namespace eval GmLib {
  20. global array filename ;# mon
  21. }
  22. ###############################################################################
  23. #read_moncap
  24. proc GmLib::color { color } {
  25. if {$color == "white"} {
  26. set r 255
  27. set g 255
  28. set b 255
  29. } else {
  30. regexp -- {#(..)(..)(..)} $color x r g b
  31. set r [expr 0x$r ]
  32. set g [expr 0x$g ]
  33. set b [expr 0x$b ]
  34. }
  35. return "$r:$g:$b"
  36. }
  37. ###############################################################################
  38. # Deprecated
  39. # Use guarantee_xmon and any run command instead.
  40. proc GmLib::xmon { type cmd } {
  41. guarantee_xmon
  42. if { $type == "term" } {
  43. term_panel $cmd
  44. } else {
  45. run_panel $cmd
  46. }
  47. return
  48. }
  49. ###############################################################################
  50. # Determine if an element already exists
  51. proc GmLib::element_exists {elem name} {
  52. global devnull
  53. set exists 1
  54. set failure [catch {exec g.findfile element=$elem file=$name >& $devnull}]
  55. return [expr {! $failure}]
  56. }
  57. ###############################################################################
  58. #open dialog box
  59. proc GmLib::OpenFileBox { } {
  60. global filename
  61. global mon
  62. # thanks for brace tip to suchenwi from #tcl@freenode
  63. set types [list \
  64. [list [G_msg "Map Resource File"] [list ".dm" ".dmrc" ".grc"]] \
  65. [list [G_msg "All Files"] "*"] \
  66. ]
  67. set filename_new [tk_getOpenFile -parent $Gm::mainwindow -filetypes $types \
  68. -title [G_msg "Open File"] ]
  69. if { $filename_new == "" } { return}
  70. set filename($mon) $filename_new
  71. GmTree::load $filename($mon)
  72. };
  73. ###############################################################################
  74. #save dialog box
  75. proc GmLib::SaveFileBox { } {
  76. global filename
  77. global mon
  78. catch {
  79. if {[ regexp -- {^Untitled_} $filename($mon) r]} {
  80. set filename($mon) ""
  81. }
  82. }
  83. if { $filename($mon) != "" } {
  84. GmTree::save $filename($mon)
  85. } else {
  86. set types [list \
  87. [list [G_msg "Map Resource File"] {.grc}] \
  88. [list [G_msg "DM Resource File"] [list {.dm} {.dmrc}]] \
  89. [list [G_msg "All Files"] "*"] \
  90. ]
  91. set filename($mon) [tk_getSaveFile -parent $Gm::mainwindow -filetypes $types \
  92. -title [G_msg "Save File"] -defaultextension .grc]
  93. if { $filename($mon) == "" } { return}
  94. GmTree::save $filename($mon)
  95. }
  96. };
  97. ###############################################################################
  98. proc GmLib::errmsg { error args } {
  99. # send error report and optional message (args) to tk_messageBox
  100. set message ""
  101. if { $args != ""} {
  102. set message [join $args]
  103. append message ": "
  104. }
  105. tk_messageBox -type ok -icon error -title [G_msg "Error"] \
  106. -message "$message[G_msg $error]"
  107. uplevel 1 return
  108. };