g.gui.mapswipe.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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: user interface
  25. #% keywords: GUI
  26. #% keywords: display
  27. #%end
  28. #%option G_OPT_R_INPUT
  29. #% key: first
  30. #% description: First (top/right) raster map
  31. #% required: no
  32. #%end
  33. #%option G_OPT_R_INPUT
  34. #% key: second
  35. #% description: Second (bottom/left) raster map
  36. #% required: no
  37. #%end
  38. #%option
  39. #% key: mode
  40. #% description: View mode
  41. #% options: swipe,mirror
  42. #% descriptions:swipe;swiping the upper map layer to show the map layer below ;mirror;synchronized maps side by side
  43. #% answer: swipe
  44. #% required: no
  45. #%end
  46. import os
  47. import wx
  48. import grass.script as grass
  49. from core.settings import UserSettings
  50. from core.globalvar import CheckWxVersion
  51. from core.giface import StandaloneGrassInterface
  52. from core.utils import _, GuiModuleMain
  53. from mapswipe.frame import SwipeMapFrame
  54. def main():
  55. driver = UserSettings.Get(group = 'display', key = 'driver', subkey = 'type')
  56. if driver == 'png':
  57. os.environ['GRASS_RENDER_IMMEDIATE'] = 'png'
  58. else:
  59. os.environ['GRASS_RENDER_IMMEDIATE'] = 'cairo'
  60. first = options['first']
  61. second = options['second']
  62. mode = options['mode']
  63. for mapName in [first, second]:
  64. if mapName:
  65. gfile = grass.find_file(name = mapName)
  66. if not gfile['name']:
  67. grass.fatal(_("Raster map <%s> not found") % mapName)
  68. app = wx.App()
  69. if not CheckWxVersion([2, 9]):
  70. wx.InitAllImageHandlers()
  71. frame = SwipeMapFrame(parent = None, giface = StandaloneGrassInterface())
  72. if first:
  73. frame.SetFirstRaster(first)
  74. if second:
  75. frame.SetSecondRaster(second)
  76. if first or second:
  77. frame.SetRasterNames()
  78. frame.SetViewMode(mode)
  79. frame.Show()
  80. app.MainLoop()
  81. if __name__ == '__main__':
  82. options, flags = grass.parser()
  83. GuiModuleMain(main)