123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- """
- @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 <stepan.turek seznam.cz> (GSoC 2012, mentor: Martin Landa)
- @author Lukas Bocan <silent_bob centrum.cz> (turn costs support)
- @author Eliska Kyzlikova <eliska.kyzlikova gmail.com> (turn costs support)
- """
- import wx
- from icons.icon import MetaIcon
- from gui_core.toolbars import BaseToolbar, BaseIcons
- from gui_core.wrap import ComboBox
- from core.gcmd import RunCommand
- 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, 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 = ComboBox(
- parent=self,
- id=wx.ID_ANY,
- choices=choices,
- style=wx.CB_READONLY,
- size=(
- 350,
- 30)) # FIXME
- self.anChoice.SetToolTip(_('Available 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(())
|