toolbars.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. """!
  2. @package vnet.toolbars
  3. @brief Vector network analysis dialog - toolbars
  4. Classes:
  5. - toolbars::PointListToolbar
  6. - toolbars::MainToolbar
  7. (C) 2012 by the GRASS Development Team
  8. This program is free software under the GNU General Public License
  9. (>=v2). Read the file COPYING that comes with GRASS for details.
  10. @author Stepan Turek <stepan.turek seznam.cz> (GSoC 2012, mentor: Martin Landa)
  11. """
  12. import wx
  13. from icon import MetaIcon
  14. from gui_core.toolbars import BaseToolbar, BaseIcons
  15. from core.gcmd import RunCommand
  16. class PointListToolbar(BaseToolbar):
  17. """!Toolbar for managing list of points
  18. @param parent reference to VNETDialog
  19. """
  20. def __init__(self, parent, list):
  21. BaseToolbar.__init__(self, parent)
  22. self.list = list
  23. self.InitToolbar(self._toolbarData())
  24. # realize the toolbar
  25. self.Realize()
  26. def _toolbarData(self):
  27. icons = {
  28. 'insertPoint' : MetaIcon(img = 'pointer',
  29. label = _('Insert points from Map Display')),
  30. 'snapping' : MetaIcon(img = 'move',
  31. label = _('Activate snapping to nodes')),
  32. 'pointAdd' : MetaIcon(img = 'point-create',
  33. label = _('Add new point')),
  34. 'pointDelete' : MetaIcon(img = 'gcp-delete',
  35. label = _('Delete selected point'))
  36. }
  37. return self._getToolbarData((('insertPoint', icons['insertPoint'],
  38. self.list.dialog.OnInsertPoint,#TODO self.list.dialog
  39. wx.ITEM_CHECK),
  40. ('snapping', icons['snapping'],
  41. self.list.dialog.OnSnapping,
  42. wx.ITEM_CHECK),
  43. (None, ),
  44. ('pointAdd', icons["pointAdd"],
  45. self.list.AddItem),
  46. ('pointDelete', icons["pointDelete"],
  47. self.list.DeleteItem)))
  48. def GetToolId(self, toolName): #TODO can be useful in base
  49. return vars(self)[toolName]
  50. class MainToolbar(BaseToolbar):
  51. """!Main toolbar
  52. """
  53. def __init__(self, parent):
  54. BaseToolbar.__init__(self, parent)
  55. self.InitToolbar(self._toolbarData())
  56. choices = []
  57. for moduleName in self.parent.vnetModulesOrder:
  58. choices.append(self.parent.vnetParams[moduleName]['label'])
  59. self.UpdateUndoRedo()
  60. # realize the toolbar
  61. self.Realize()
  62. def _toolbarData(self):
  63. icons = {
  64. 'run' : MetaIcon(img = 'execute',
  65. label = _('Execute analysis')),
  66. 'undo' : MetaIcon(img = 'undo',
  67. label = _('Go to previous analysis result')),
  68. 'redo' : MetaIcon(img = 'redo',
  69. label = _('Go to next analysis result')),
  70. 'showResult' : MetaIcon(img = 'layer-add',
  71. label = _("Show analysis result")),
  72. 'saveTempLayer' : MetaIcon(img = 'map-export',
  73. label = _('Save temporary result')),
  74. 'settings' : BaseIcons['settings'].SetLabel( _('Vector network analysis settings')),
  75. 'help' : MetaIcon(img = 'help',
  76. label = _('Show manual'))
  77. }
  78. return self._getToolbarData((
  79. ("run", icons['run'],
  80. self.parent.OnAnalyze),
  81. (None, ),
  82. ("undo", icons['undo'],
  83. self.parent.OnUndo),
  84. ("redo", icons['redo'],
  85. self.parent.OnRedo),
  86. (None, ),
  87. ("showResult", icons['showResult'],
  88. self.parent.OnShowResult, wx.ITEM_CHECK),
  89. ("saveTempLayer", icons['saveTempLayer'],
  90. self.parent.OnSaveTmpLayer),
  91. (None, ),
  92. ('settings', icons["settings"],
  93. self.parent.OnSettings),
  94. ('help', icons["help"],
  95. self.OnHelp),
  96. ("quit", BaseIcons['quit'],
  97. self.parent.OnCloseDialog)
  98. ))
  99. def UpdateUndoRedo(self):
  100. id = vars(self)['showResult']
  101. self.ToggleTool(id =id,
  102. toggle = True)
  103. if self.parent.history.GetCurrHistStep() >= self.parent.history.GetStepsNum():
  104. self.Enable("undo", False)
  105. else:
  106. self.Enable("undo", True)
  107. if self.parent.history.GetCurrHistStep() <= 0:
  108. self.Enable("redo", False)
  109. else:
  110. self.Enable("redo", True)
  111. def OnHelp(self, event) :
  112. RunCommand('g.manual',
  113. entry = 'wxGUI.vnet')
  114. class AnalysisToolbar(BaseToolbar):
  115. """!Main toolbar
  116. """
  117. def __init__(self, parent):
  118. BaseToolbar.__init__(self, parent)
  119. self.InitToolbar(self._toolbarData())
  120. choices = []
  121. for moduleName in self.parent.vnetModulesOrder:
  122. choices.append(self.parent.vnetParams[moduleName]['label'])
  123. self.anChoice = wx.ComboBox(parent = self, id = wx.ID_ANY,
  124. choices = choices,
  125. style = wx.CB_READONLY, size = (350, 30))#FIXME
  126. self.anChoice.SetToolTipString(_('Availiable analyses'))
  127. self.anChoice.SetSelection(0)
  128. self.anChoiceId = self.AddControl(self.anChoice)
  129. self.parent.Bind(wx.EVT_COMBOBOX, self.parent.OnAnalysisChanged, self.anChoiceId)
  130. # workaround for Mac bug. May be fixed by 2.8.8, but not before then.
  131. self.anChoice.Hide()
  132. self.anChoice.Show()
  133. # realize the toolbar
  134. self.Realize()
  135. def _toolbarData(self):
  136. icons = {}
  137. return self._getToolbarData(())