toolbars.py 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. """
  2. @package lmgr.toolbars
  3. @brief wxGUI Layer Manager - toolbars
  4. Classes:
  5. - toolbars::LMWorkspaceToolbar
  6. - toolbars::DisplayPanelToolbar
  7. - toolbars::LMToolsToolbar
  8. - toolbars::LMMiscToolbar
  9. - toolbars::LMNvizToolbar
  10. (C) 2007-2013 by the GRASS Development Team
  11. This program is free software under the GNU General Public License
  12. (>=v2). Read the file COPYING that comes with GRASS for details.
  13. @author Michael Barton
  14. @author Jachym Cepicky
  15. @author Martin Landa <landa.martin gmail.com>
  16. @author Anna Kratochvilova <kratochanna gmail.com>
  17. @author Linda Kladivova <linda.kladivova gmail com>
  18. """
  19. from core.gcmd import RunCommand
  20. from gui_core.toolbars import BaseToolbar, BaseIcons
  21. from icons.icon import MetaIcon
  22. class LMWorkspaceToolbar(BaseToolbar):
  23. """Layer Manager `workspace` toolbar"""
  24. def __init__(self, parent):
  25. BaseToolbar.__init__(self, parent)
  26. self.InitToolbar(self._toolbarData())
  27. # realize the toolbar
  28. self.Realize()
  29. def _toolbarData(self):
  30. """Toolbar data"""
  31. icons = {
  32. "workspaceNew": MetaIcon(
  33. img="create", label=_("Create new workspace (Ctrl+N)")
  34. ),
  35. "workspaceOpen": MetaIcon(
  36. img="open", label=_("Open existing workspace file (Ctrl+O)")
  37. ),
  38. "workspaceSave": MetaIcon(
  39. img="save", label=_("Save current workspace to file (Ctrl+S)")
  40. ),
  41. }
  42. return self._getToolbarData(
  43. (
  44. ("workspaceNew", icons["workspaceNew"], self.parent.OnWorkspaceNew),
  45. ("workspaceOpen", icons["workspaceOpen"], self.parent.OnWorkspaceOpen),
  46. ("workspaceSave", icons["workspaceSave"], self.parent.OnWorkspaceSave),
  47. )
  48. )
  49. class DisplayPanelToolbar(BaseToolbar):
  50. """Toolbar for display tab"""
  51. def __init__(self, guiparent, parent):
  52. BaseToolbar.__init__(self, guiparent)
  53. self.parent = parent
  54. self.InitToolbar(self._toolbarData())
  55. # realize the toolbar
  56. self.Realize()
  57. def _toolbarData(self):
  58. """Toolbar data"""
  59. icons = {
  60. "newdisplay": MetaIcon(
  61. img="monitor-create", label=_("Start new map display")
  62. ),
  63. "addMulti": MetaIcon(
  64. img="layer-open",
  65. label=_("Add multiple raster or vector map layers (Ctrl+Shift+L)"),
  66. ),
  67. "addRast": BaseIcons["addRast"].SetLabel(
  68. _("Add raster map layer (Ctrl+Shift+R)")
  69. ),
  70. "rastMisc": MetaIcon(
  71. img="layer-raster-more",
  72. label=_("Add various raster map layers (RGB, HIS, shaded relief...)"),
  73. ),
  74. "addVect": BaseIcons["addVect"].SetLabel(
  75. _("Add vector map layer (Ctrl+Shift+V)")
  76. ),
  77. "vectMisc": MetaIcon(
  78. img="layer-vector-more",
  79. label=_("Add various vector map layers (thematic, chart...)"),
  80. ),
  81. "addWS": MetaIcon(
  82. img="layer-wms-add",
  83. label=_("Add web service layer (WMS, WMTS, NASA OnEarth)"),
  84. ),
  85. "addGroup": MetaIcon(img="layer-group-add", label=_("Add group")),
  86. "addOverlay": MetaIcon(img="layer-more", label=_("Add various overlays")),
  87. "delCmd": MetaIcon(
  88. img="layer-remove",
  89. label=_("Remove selected map layer(s) from layer tree"),
  90. ),
  91. "vdigit": MetaIcon(img="edit", label=_("Edit selected vector map")),
  92. "attrTable": MetaIcon(
  93. img="table", label=_("Show attribute data for selected vector map")
  94. ),
  95. }
  96. return self._getToolbarData(
  97. (
  98. ("newdisplay", icons["newdisplay"], self.parent.OnNewDisplay),
  99. (None,),
  100. ("addMulti", icons["addMulti"], self.parent.OnAddMaps),
  101. ("addrast", icons["addRast"], self.parent.OnAddRaster),
  102. ("rastmisc", icons["rastMisc"], self.parent.OnAddRasterMisc),
  103. ("addvect", icons["addVect"], self.parent.OnAddVector),
  104. ("vectmisc", icons["vectMisc"], self.parent.OnAddVectorMisc),
  105. ("addovl", icons["addOverlay"], self.parent.OnAddOverlay),
  106. ("addWS", icons["addWS"], self.parent.OnAddWS),
  107. (None,),
  108. ("addgrp", icons["addGroup"], self.parent.OnAddGroup),
  109. ("delcmd", icons["delCmd"], self.parent.OnDeleteLayer),
  110. (None,),
  111. ("vdigit", icons["vdigit"], self.parent.OnVDigit),
  112. ("attribute", icons["attrTable"], self.parent.OnShowAttributeTable),
  113. )
  114. )
  115. class LMToolsToolbar(BaseToolbar):
  116. """Layer Manager `tools` toolbar"""
  117. def __init__(self, parent):
  118. BaseToolbar.__init__(self, parent)
  119. self.InitToolbar(self._toolbarData())
  120. # realize the toolbar
  121. self.Realize()
  122. def _toolbarData(self):
  123. """Toolbar data"""
  124. icons = {
  125. "mapcalc": MetaIcon(
  126. img="raster-calculator", label=_("Raster Map Calculator")
  127. ),
  128. "modeler": MetaIcon(img="modeler-main", label=_("Graphical Modeler")),
  129. "georectify": MetaIcon(img="georectify", label=_("Georectifier")),
  130. "composer": MetaIcon(img="print-compose", label=_("Cartographic Composer")),
  131. "script-load": MetaIcon(
  132. img="script-load", label=_("Launch user-defined script")
  133. ),
  134. "python": MetaIcon(
  135. img="python", label=_("Open a simple Python code editor")
  136. ),
  137. }
  138. return self._getToolbarData(
  139. (
  140. ("mapCalc", icons["mapcalc"], self.parent.OnMapCalculator),
  141. ("georect", icons["georectify"], self.parent.OnGCPManager),
  142. ("modeler", icons["modeler"], self.parent.OnGModeler),
  143. ("mapOutput", icons["composer"], self.parent.OnPsMap),
  144. (None,),
  145. ("script-load", icons["script-load"], self.parent.OnRunScript),
  146. ("python", icons["python"], self.parent.OnSimpleEditor),
  147. )
  148. )
  149. class LMMiscToolbar(BaseToolbar):
  150. """Layer Manager `misc` toolbar"""
  151. def __init__(self, parent):
  152. BaseToolbar.__init__(self, parent)
  153. self.InitToolbar(self._toolbarData())
  154. # realize the toolbar
  155. self.Realize()
  156. def _toolbarData(self):
  157. """Toolbar data"""
  158. icons = {
  159. "settings": BaseIcons["settings"].SetLabel(_("GUI settings")),
  160. "help": BaseIcons["help"].SetLabel(_("GRASS manual")),
  161. }
  162. return self._getToolbarData(
  163. (
  164. ("settings", icons["settings"], self.parent.OnPreferences),
  165. ("help", icons["help"], self.parent.OnHelp),
  166. )
  167. )
  168. class LMNvizToolbar(BaseToolbar):
  169. """Nviz toolbar"""
  170. def __init__(self, parent):
  171. self.lmgr = parent
  172. BaseToolbar.__init__(self, parent)
  173. # only one dialog can be open
  174. self.settingsDialog = None
  175. self.InitToolbar(self._toolbarData())
  176. # realize the toolbar
  177. self.Realize()
  178. def _toolbarData(self):
  179. """Toolbar data"""
  180. icons = {
  181. "cmd": MetaIcon(
  182. img="script-save",
  183. label=_("Generate command for m.nviz.image"),
  184. desc=_("Generate command for m.nviz.image based on current state"),
  185. ),
  186. "settings": MetaIcon(
  187. img="3d-settings",
  188. label=_("3D view mode settings"),
  189. desc=_("Show 3D view mode settings dialog"),
  190. ),
  191. "help": MetaIcon(img="3d-help", label=_("Show 3D view mode manual")),
  192. }
  193. return self._getToolbarData(
  194. (
  195. ("nvizCmd", icons["cmd"], self.OnNvizCmd),
  196. (None,),
  197. ("settings", icons["settings"], self.parent.OnNvizPreferences),
  198. ("help", icons["help"], self.OnHelp),
  199. )
  200. )
  201. def OnNvizCmd(self, event):
  202. """Show m.nviz.image command"""
  203. self.lmgr.GetLayerTree().GetMapDisplay().GetWindow().OnNvizCmd()
  204. def OnHelp(self, event):
  205. """Show 3D view mode help"""
  206. if not self.lmgr:
  207. RunCommand("g.manual", entry="wxGUI.nviz")
  208. else:
  209. log = self.lmgr.GetLogWindow()
  210. log.RunCmd(["g.manual", "entry=wxGUI.nviz"])