g.gui.mapswipe.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/usr/bin/env python3
  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. # % keyword: general
  24. # % keyword: GUI
  25. # % keyword: 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 grass.script as gscript
  47. def main():
  48. options, flags = gscript.parser()
  49. import wx
  50. from grass.script.setup import set_gui_path
  51. set_gui_path()
  52. from core.settings import UserSettings
  53. from core.giface import StandaloneGrassInterface
  54. from core import globalvar
  55. from mapswipe.frame import SwipeMapDisplay
  56. driver = UserSettings.Get(group="display", key="driver", subkey="type")
  57. if driver == "png":
  58. os.environ["GRASS_RENDER_IMMEDIATE"] = "png"
  59. else:
  60. os.environ["GRASS_RENDER_IMMEDIATE"] = "cairo"
  61. first = options["first"]
  62. second = options["second"]
  63. mode = options["mode"]
  64. for mapName in [first, second]:
  65. if mapName:
  66. gfile = gscript.find_file(name=mapName)
  67. if not gfile["name"]:
  68. gscript.fatal(_("Raster map <%s> not found") % mapName)
  69. app = wx.App()
  70. # show main frame
  71. frame = wx.Frame(
  72. parent=None,
  73. size=globalvar.MAP_WINDOW_SIZE,
  74. title=_("Map Swipe Tool - GRASS GIS"),
  75. )
  76. frame = SwipeMapDisplay(
  77. parent=frame,
  78. giface=StandaloneGrassInterface(),
  79. )
  80. if first:
  81. frame.SetFirstRaster(first)
  82. if second:
  83. frame.SetSecondRaster(second)
  84. if first or second:
  85. frame.SetRasterNames()
  86. frame.SetViewMode(mode)
  87. frame.Show()
  88. app.MainLoop()
  89. if __name__ == "__main__":
  90. main()