toolbars.py 11 KB

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