""" @package vnet.toolbars @brief Vector network analysis dialog - toolbars Classes: - toolbars::PointListToolbar - toolbars::MainToolbar (C) 2012 by the GRASS Development Team This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details. @author Stepan Turek (GSoC 2012, mentor: Martin Landa) @author Lukas Bocan (turn costs support) @author Eliska Kyzlikova (turn costs support) """ import wx from icons.icon import MetaIcon from gui_core.toolbars import BaseToolbar, BaseIcons from core.gcmd import RunCommand from core.utils import _ class PointListToolbar(BaseToolbar): """Toolbar for managing list of points :param parent: reference to VNETDialog """ def __init__(self, parent, toolSwitcher, dialog, vnet_mgr): BaseToolbar.__init__(self, parent, toolSwitcher) self.vnet_mgr = vnet_mgr self.vnet_pts_mgr = self.vnet_mgr.GetPointsManager() self.dialog = dialog self.InitToolbar(self._toolbarData()) self.toolSwitcher.AddToolToGroup('mouseUse', self, self.insertPoint) # realize the toolbar self.Realize() def _toolbarData(self): icons = { 'insertPoint' : MetaIcon(img = 'pointer', label = _('Insert points from Map Display')), 'snapping' : MetaIcon(img = 'move', label = _('Activate snapping to nodes')), 'isec_turn_edit' : MetaIcon(img = 'line-edit', label = _('Activate mode for turns editing')), 'global_turn_edit' : MetaIcon(img = 'vector-tools', label = _('Activate mode for global turns editing')), 'pointAdd' : MetaIcon(img = 'point-create', label = _('Add new point')), 'pointDelete' : MetaIcon(img = 'gcp-delete', label = _('Delete selected point')) } return self._getToolbarData((('insertPoint', icons['insertPoint'], self.OnEditPointMode,#TODO self.list.dialog wx.ITEM_CHECK), ('snapping', icons['snapping'], lambda event : self.vnet_mgr.Snapping(event.IsChecked()), wx.ITEM_CHECK), (None, ), ('pointAdd', icons["pointAdd"], lambda event : self.vnet_pts_mgr.AddPoint()), ('pointDelete', icons["pointDelete"], self.OnDeletePoint), (None, )#, #('isec_turn_edit', icons['isec_turn_edit'], #self.dialog.OnDefIsecTurnCosts, #wx.ITEM_CHECK), #('global_turn_edit', icons['global_turn_edit'], #self.dialog.OnDefGlobalTurnCosts) )) def GetToolId(self, toolName): #TODO can be useful in base return vars(self)[toolName] def OnEditPointMode(self, event): self.vnet_pts_mgr.EditPointMode(not self.vnet_pts_mgr.IsEditPointModeActive()) def OnDeletePoint(self, event): pt_id = self.vnet_pts_mgr.GetSelected() self.vnet_pts_mgr.DeletePoint(pt_id) class MainToolbar(BaseToolbar): """Main toolbar """ def __init__(self, parent, vnet_mgr): BaseToolbar.__init__(self, parent) self.InitToolbar(self._toolbarData()) self.vnet_mgr = vnet_mgr # realize the toolbar self.Realize() def _toolbarData(self): icons = { 'run' : MetaIcon(img = 'execute', label = _('Execute analysis')), 'undo' : MetaIcon(img = 'undo', label = _('Go to previous analysis result')), 'redo' : MetaIcon(img = 'redo', label = _('Go to next analysis result')), 'showResult' : MetaIcon(img = 'layer-add', label = _("Show analysis result")), 'saveTempLayer' : MetaIcon(img = 'map-export', label = _('Save temporary result')), 'settings' : BaseIcons['settings'].SetLabel( _('Vector network analysis settings')), 'help' : MetaIcon(img = 'help', label = _('Show manual')) } return self._getToolbarData(( ("run", icons['run'], self.parent.OnAnalyze), (None, ), ("undo", icons['undo'], self.parent.OnUndo), ("redo", icons['redo'], self.parent.OnRedo), (None, ), ("showResult", icons['showResult'], self.parent.OnShowResult, wx.ITEM_CHECK), ("saveTempLayer", icons['saveTempLayer'], self.parent.OnSaveTmpLayer), (None, ), ('settings', icons["settings"], self.parent.OnSettings), ('help', icons["help"], self.OnHelp), ("quit", BaseIcons['quit'], self.parent.OnCloseDialog) )) def UpdateUndoRedo(self, curr_step, steps_num): id = vars(self)['showResult'] self.ToggleTool(id =id, toggle = True) if curr_step >= steps_num: self.Enable("undo", False) else: self.Enable("undo", True) if curr_step <= 0: self.Enable("redo", False) else: self.Enable("redo", True) def OnHelp(self, event) : RunCommand('g.manual', entry = 'wxGUI.vnet') class AnalysisToolbar(BaseToolbar): """Main toolbar """ def __init__(self, parent, vnet_mgr): BaseToolbar.__init__(self, parent) self.vnet_mgr = vnet_mgr self.InitToolbar(self._toolbarData()) choices = [] for moduleName in self.vnet_mgr.GetAnalyses(): choices.append(self.vnet_mgr.GetAnalysisProperties(moduleName)['label']) self.anChoice = wx.ComboBox(parent = self, id = wx.ID_ANY, choices = choices, style = wx.CB_READONLY, size = (350, 30))#FIXME self.anChoice.SetToolTipString(_('Availiable analyses')) self.anChoice.SetSelection(0) self.anChoiceId = self.AddControl(self.anChoice) self.parent.Bind(wx.EVT_COMBOBOX, self.parent.OnAnalysisChanged, self.anChoiceId) # workaround for Mac bug. May be fixed by 2.8.8, but not before then. self.anChoice.Hide() self.anChoice.Show() # realize the toolbar self.Realize() def _toolbarData(self): icons = {} return self._getToolbarData(())