""" @package swipe.toolbars @brief Map Swipe toolbars and icons. Classes: - toolbars::SwipeMapToolbar - toolbars::SwipeMainToolbar - toolbars::SwipeMiscToolbar (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 Anna Kratochvilova """ import wx from gui_core.toolbars import BaseToolbar, BaseIcons from gui_core.wrap import Menu from icons.icon import MetaIcon swipeIcons = { "tools": MetaIcon(img="tools", label=_("Tools")), "quit": BaseIcons["quit"].SetLabel(_("Quit Map Swipe")), "addRast": BaseIcons["addRast"].SetLabel(_("Select raster maps")), "query": MetaIcon( img="info", label=_("Query raster/vector map(s)"), desc=_("Query selected raster/vector map(s)"), ), } class SwipeMapToolbar(BaseToolbar): """Map toolbar (to control map zoom and rendering)""" def __init__(self, parent, toolSwitcher): """Map toolbar constructor""" BaseToolbar.__init__(self, parent, toolSwitcher) self.InitToolbar(self._toolbarData()) self._default = self.pan # realize the toolbar self.Realize() for tool in (self.pointer, self.query, self.pan, self.zoomIn, self.zoomOut): self.toolSwitcher.AddToolToGroup(group="mouseUse", toolbar=self, tool=tool) self.EnableTool(self.zoomBack, False) def _toolbarData(self): """Returns toolbar data (name, icon, handler)""" # BaseIcons are a set of often used icons. It is possible # to reuse icons in ./trunk/gui/icons/grass or add new ones there. icons = BaseIcons return self._getToolbarData( ( ("rendermap", icons["render"], self.parent.OnRender), ("pointer", icons["pointer"], self.parent.OnPointer, wx.ITEM_CHECK), ("query", swipeIcons["query"], self.parent.OnQuery, wx.ITEM_CHECK), ("pan", icons["pan"], self.parent.OnPan, wx.ITEM_CHECK), # toggle tool ("zoomIn", icons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK), ("zoomOut", icons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK), (None,), ("zoomBack", icons["zoomBack"], self.parent.OnZoomBack), ("zoomToMap", icons["zoomExtent"], self.parent.OnZoomToMap), (None,), ("saveFile", icons["saveFile"], self.parent.SaveToFile), ) ) def SetActiveMap(self, index): """Set currently selected map. Unused, needed because of DoubleMapFrame API. """ pass class SwipeMainToolbar(BaseToolbar): """Toolbar with tools related to application functionality""" def __init__(self, parent): """Toolbar constructor""" BaseToolbar.__init__(self, parent) self.InitToolbar(self._toolbarData()) # add tool to toggle active map window self.toggleMode = wx.Choice(parent=self) for label, cdata in zip( [_("Swipe mode"), _("Mirror mode")], ["swipe", "mirror"] ): self.toggleMode.Append(label, cdata) self.toggleMode.SetSelection(0) self.toggleMode.SetSize(self.toggleMode.GetBestSize()) self.toggleMode.Bind( wx.EVT_CHOICE, lambda event: self.parent.SetViewMode( self.toggleMode.GetClientData(event.GetSelection()) ), ) self.InsertControl(3, self.toggleMode) help = _("Choose view mode") self.SetToolShortHelp(self.toggleMode.GetId(), help) # realize the toolbar self.Realize() def _toolbarData(self): """Toolbar data""" return self._getToolbarData( ( ("addRaster", swipeIcons["addRast"], self.parent.OnSelectLayers), (None,), ("tools", swipeIcons["tools"], self.OnToolMenu), ) ) def SetMode(self, mode): for i in range(self.toggleMode.GetCount()): if mode == self.toggleMode.GetClientData(i): self.toggleMode.SetSelection(i) def OnToolMenu(self, event): """Menu for additional tools""" toolMenu = Menu() for label, itype, handler, desc in ( ( _("Switch orientation"), wx.ITEM_NORMAL, self.parent.OnSwitchOrientation, "switchOrientation", ), ( _("Switch maps"), wx.ITEM_NORMAL, self.parent.OnSwitchWindows, "switchMaps", ), ): # Add items to the menu item = wx.MenuItem( parentMenu=toolMenu, id=wx.ID_ANY, text=label, kind=itype ) toolMenu.AppendItem(item) self.parent.GetWindow().Bind(wx.EVT_MENU, handler, item) # Popup the menu. If an item is selected then its handler # will be called before PopupMenu returns. self.parent.GetWindow().PopupMenu(toolMenu) toolMenu.Destroy() class SwipeMiscToolbar(BaseToolbar): """Toolbar with miscellaneous tools related to app""" def __init__(self, parent): """Toolbar constructor""" BaseToolbar.__init__(self, parent) self.InitToolbar(self._toolbarData()) # realize the toolbar self.Realize() def _toolbarData(self): """Toolbar data""" return self._getToolbarData( ( ("settings", BaseIcons["settings"], self.parent.OnPreferences), ("help", BaseIcons["help"], self.parent.OnHelp), ("quit", swipeIcons["quit"], self.parent.OnCloseWindow), ) )