toolbars.py 11 KB

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