toolbars.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  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. (
  45. ("workspaceNew", _("New workspace")),
  46. icons["workspaceNew"],
  47. self.parent.OnWorkspaceNew,
  48. ),
  49. (
  50. ("workspaceOpen", _("Open workspace")),
  51. icons["workspaceOpen"],
  52. self.parent.OnWorkspaceOpen,
  53. ),
  54. (
  55. ("workspaceSave", _("Save workspace")),
  56. icons["workspaceSave"],
  57. self.parent.OnWorkspaceSave,
  58. ),
  59. )
  60. )
  61. class DisplayPanelToolbar(BaseToolbar):
  62. """Toolbar for display tab"""
  63. def __init__(self, guiparent, parent):
  64. BaseToolbar.__init__(self, guiparent)
  65. self.parent = parent
  66. self.InitToolbar(self._toolbarData())
  67. # realize the toolbar
  68. self.Realize()
  69. def _toolbarData(self):
  70. """Toolbar data"""
  71. icons = {
  72. "addMulti": MetaIcon(
  73. img="layer-open",
  74. label=_("Add multiple raster or vector map layers (Ctrl+Shift+L)"),
  75. ),
  76. "addRast": BaseIcons["addRast"].SetLabel(
  77. _("Add raster map layer (Ctrl+Shift+R)")
  78. ),
  79. "rastMisc": MetaIcon(
  80. img="layer-raster-more",
  81. label=_("Add various raster map layers (RGB, HIS, shaded relief...)"),
  82. ),
  83. "addVect": BaseIcons["addVect"].SetLabel(
  84. _("Add vector map layer (Ctrl+Shift+V)")
  85. ),
  86. "vectMisc": MetaIcon(
  87. img="layer-vector-more",
  88. label=_("Add various vector map layers (thematic, chart...)"),
  89. ),
  90. "addWS": MetaIcon(
  91. img="layer-wms-add",
  92. label=_("Add web service layer (WMS, WMTS, NASA OnEarth)"),
  93. ),
  94. "addGroup": MetaIcon(img="layer-group-add", label=_("Add group")),
  95. "addOverlay": MetaIcon(img="layer-more", label=_("Add various overlays")),
  96. "delCmd": MetaIcon(
  97. img="layer-remove",
  98. label=_("Remove selected map layer(s) from layer tree"),
  99. ),
  100. "vdigit": MetaIcon(img="edit", label=_("Edit selected vector map")),
  101. "attrTable": MetaIcon(
  102. img="table", label=_("Show attribute data for selected vector map")
  103. ),
  104. }
  105. return self._getToolbarData(
  106. (
  107. (
  108. ("addMulti", _("Add multiple map layers")),
  109. icons["addMulti"],
  110. self.parent.OnAddMaps,
  111. ),
  112. (
  113. ("addrast", _("Add raster map")),
  114. icons["addRast"],
  115. self.parent.OnAddRaster,
  116. ),
  117. (
  118. ("rastmisc", _("Add various raster maps")),
  119. icons["rastMisc"],
  120. self.parent.OnAddRasterMisc,
  121. ),
  122. (
  123. ("addvect", _("Add vector map")),
  124. icons["addVect"],
  125. self.parent.OnAddVector,
  126. ),
  127. (
  128. ("vectmisc", _("Add various vector maps")),
  129. icons["vectMisc"],
  130. self.parent.OnAddVectorMisc,
  131. ),
  132. (
  133. ("addovl", _("Add various overlays")),
  134. icons["addOverlay"],
  135. self.parent.OnAddOverlay,
  136. ),
  137. (
  138. ("addWS", _("Add web service map")),
  139. icons["addWS"],
  140. self.parent.OnAddWS,
  141. ),
  142. (None,),
  143. (
  144. ("addgrp", icons["addGroup"].label),
  145. icons["addGroup"],
  146. self.parent.OnAddGroup,
  147. ),
  148. (
  149. ("delcmd", _("Delete map layer")),
  150. icons["delCmd"],
  151. self.parent.OnDeleteLayer,
  152. ),
  153. (None,),
  154. (
  155. ("vdigit", icons["vdigit"].label),
  156. icons["vdigit"],
  157. self.parent.OnVDigit,
  158. ),
  159. (
  160. ("attribute", icons["attrTable"].label),
  161. icons["attrTable"],
  162. self.parent.OnShowAttributeTable,
  163. ),
  164. )
  165. )
  166. class LMToolsToolbar(BaseToolbar):
  167. """Layer Manager `tools` toolbar"""
  168. def __init__(self, parent):
  169. BaseToolbar.__init__(self, parent)
  170. self.InitToolbar(self._toolbarData())
  171. # realize the toolbar
  172. self.Realize()
  173. def _toolbarData(self):
  174. """Toolbar data"""
  175. icons = {
  176. "newdisplay": MetaIcon(
  177. img="monitor-create", label=_("Start new map display")
  178. ),
  179. "mapcalc": MetaIcon(
  180. img="raster-calculator", label=_("Raster Map Calculator")
  181. ),
  182. "modeler": MetaIcon(img="modeler-main", label=_("Graphical Modeler")),
  183. "georectify": MetaIcon(img="georectify", label=_("Georectifier")),
  184. "composer": MetaIcon(img="print-compose", label=_("Cartographic Composer")),
  185. "script-load": MetaIcon(
  186. img="script-load", label=_("Launch user-defined script")
  187. ),
  188. "python": MetaIcon(
  189. img="python", label=_("Open a simple Python code editor")
  190. ),
  191. }
  192. return self._getToolbarData(
  193. (
  194. (
  195. ("newdisplay", _("New display")),
  196. icons["newdisplay"],
  197. self.parent.OnNewDisplay,
  198. ),
  199. (None,),
  200. (
  201. ("mapCalc", icons["mapcalc"].label),
  202. icons["mapcalc"],
  203. self.parent.OnMapCalculator,
  204. ),
  205. (
  206. ("georect", icons["georectify"].label),
  207. icons["georectify"],
  208. self.parent.OnGCPManager,
  209. ),
  210. (
  211. ("modeler", icons["modeler"].label),
  212. icons["modeler"],
  213. self.parent.OnGModeler,
  214. ),
  215. (
  216. ("mapOutput", icons["composer"].label),
  217. icons["composer"],
  218. self.parent.OnPsMap,
  219. ),
  220. (None,),
  221. (
  222. ("script-load", icons["script-load"].label),
  223. icons["script-load"],
  224. self.parent.OnRunScript,
  225. ),
  226. (
  227. ("python", _("Python code editor")),
  228. icons["python"],
  229. self.parent.OnSimpleEditor,
  230. ),
  231. )
  232. )
  233. class LMMiscToolbar(BaseToolbar):
  234. """Layer Manager `misc` toolbar"""
  235. def __init__(self, parent):
  236. BaseToolbar.__init__(self, parent)
  237. self.InitToolbar(self._toolbarData())
  238. # realize the toolbar
  239. self.Realize()
  240. def _toolbarData(self):
  241. """Toolbar data"""
  242. icons = {
  243. "settings": BaseIcons["settings"].SetLabel(_("GUI settings")),
  244. "help": BaseIcons["help"].SetLabel(_("GRASS manual")),
  245. }
  246. return self._getToolbarData(
  247. (
  248. (
  249. ("settings", icons["settings"].label),
  250. icons["settings"],
  251. self.parent.OnPreferences,
  252. ),
  253. (
  254. ("help", icons["help"].label),
  255. icons["help"],
  256. self.parent.OnHelp,
  257. ),
  258. )
  259. )
  260. class LMNvizToolbar(BaseToolbar):
  261. """Nviz toolbar"""
  262. def __init__(self, parent):
  263. self.lmgr = parent
  264. BaseToolbar.__init__(self, parent)
  265. # only one dialog can be open
  266. self.settingsDialog = None
  267. self.InitToolbar(self._toolbarData())
  268. # realize the toolbar
  269. self.Realize()
  270. def _toolbarData(self):
  271. """Toolbar data"""
  272. icons = {
  273. "cmd": MetaIcon(
  274. img="script-save",
  275. label=_("Generate command for m.nviz.image"),
  276. desc=_("Generate command for m.nviz.image based on current state"),
  277. ),
  278. "settings": MetaIcon(
  279. img="3d-settings",
  280. label=_("3D view mode settings"),
  281. desc=_("Show 3D view mode settings dialog"),
  282. ),
  283. "help": MetaIcon(img="3d-help", label=_("Show 3D view mode manual")),
  284. }
  285. return self._getToolbarData(
  286. (
  287. (
  288. ("nvizCmd", icons["cmd"].label),
  289. icons["cmd"],
  290. self.OnNvizCmd,
  291. ),
  292. (None,),
  293. (
  294. ("settings", icons["settings"].label),
  295. icons["settings"],
  296. self.parent.OnNvizPreferences,
  297. ),
  298. (
  299. ("help", icons["help"].label),
  300. icons["help"],
  301. self.OnHelp,
  302. ),
  303. )
  304. )
  305. def OnNvizCmd(self, event):
  306. """Show m.nviz.image command"""
  307. self.lmgr.GetLayerTree().GetMapDisplay().GetWindow().OnNvizCmd()
  308. def OnHelp(self, event):
  309. """Show 3D view mode help"""
  310. if not self.lmgr:
  311. RunCommand("g.manual", entry="wxGUI.nviz")
  312. else:
  313. log = self.lmgr.GetLogWindow()
  314. log.RunCmd(["g.manual", "entry=wxGUI.nviz"])