g.gui.mapswipe.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/usr/bin/env python
  2. ############################################################################
  3. #
  4. # MODULE: Map Swipe
  5. # AUTHOR(S): Anna Kratochvilova
  6. # PURPOSE: The Map Swipe is a wxGUI component which allows the user to
  7. # interactively compare two maps
  8. # COPYRIGHT: (C) 2012 by Anna Kratochvilova, and the GRASS Development Team
  9. #
  10. # This program is free software; you can redistribute it and/or modify
  11. # it under the terms of the GNU General Public License as published by
  12. # the Free Software Foundation; either version 2 of the License, or
  13. # (at your option) any later version.
  14. #
  15. # This program is distributed in the hope that it will be useful,
  16. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. # GNU General Public License for more details.
  19. #
  20. ############################################################################
  21. #%module
  22. #% description: Interactively compares two maps by swiping a visibility bar.
  23. #% keywords: general
  24. #% keywords: GUI
  25. #% keywords: display
  26. #%end
  27. #%option G_OPT_R_INPUT
  28. #% key: first
  29. #% description: First (top/right) raster map
  30. #% required: no
  31. #%end
  32. #%option G_OPT_R_INPUT
  33. #% key: second
  34. #% description: Second (bottom/left) raster map
  35. #% required: no
  36. #%end
  37. #%option
  38. #% key: mode
  39. #% description: View mode
  40. #% options: swipe,mirror
  41. #% descriptions:swipe;swiping the upper map layer to show the map layer below ;mirror;synchronized maps side by side
  42. #% answer: swipe
  43. #% required: no
  44. #%end
  45. import os
  46. import sys
  47. import wx
  48. import grass.script as grass
  49. if __name__ == '__main__':
  50. wxbase = os.path.join(os.getenv('GISBASE'), 'etc', 'gui', 'wxpython')
  51. if wxbase not in sys.path:
  52. sys.path.append(wxbase)
  53. from core.settings import UserSettings
  54. from core.globalvar import CheckWxVersion
  55. from core.giface import StandaloneGrassInterface
  56. from core.utils import _, GuiModuleMain
  57. from mapswipe.frame import SwipeMapFrame
  58. def main():
  59. driver = UserSettings.Get(group = 'display', key = 'driver', subkey = 'type')
  60. if driver == 'png':
  61. os.environ['GRASS_RENDER_IMMEDIATE'] = 'png'
  62. else:
  63. os.environ['GRASS_RENDER_IMMEDIATE'] = 'cairo'
  64. first = options['first']
  65. second = options['second']
  66. mode = options['mode']
  67. for mapName in [first, second]:
  68. if mapName:
  69. gfile = grass.find_file(name = mapName)
  70. if not gfile['name']:
  71. grass.fatal(_("Raster map <%s> not found") % mapName)
  72. app = wx.App()
  73. if not CheckWxVersion([2, 9]):
  74. wx.InitAllImageHandlers()
  75. frame = SwipeMapFrame(parent = None, giface = StandaloneGrassInterface())
  76. if first:
  77. frame.SetFirstRaster(first)
  78. if second:
  79. frame.SetSecondRaster(second)
  80. if first or second:
  81. frame.SetRasterNames()
  82. frame.SetViewMode(mode)
  83. frame.Show()
  84. app.MainLoop()
  85. if __name__ == '__main__':
  86. options, flags = grass.parser()
  87. GuiModuleMain(main)