def onMouseUp(self, e): if self._next_click_is_invalid: return if self._activeTool is not None: self._activeTool.onMouseUp(e.GetX(), e.GetY(), e.GetButton()) if not e.LeftIsDown() and not e.RightIsDown() and not e.MiddleIsDown(): self._activeTool = None if e.GetButton() == 3: focusObj = self._app.getView().getFocusObject() if focusObj is not None and hasattr(focusObj, 'getContextMenu'): menu = wx.Menu() menu.function_map = {} for name, function in focusObj.getContextMenu(): id_nr = wx.NewId() menu.function_map[id_nr] = function if name.startswith('*') or name.startswith('_'): item = menu.AppendCheckItem(id_nr, name[1:]) if name.startswith('*'): item.Check(True) else: item = menu.Append(id_nr, name) self.Bind(wx.EVT_MENU, lambda e: e.GetEventObject().function_map[e.GetId()](), item) self._next_click_is_invalid = True hideTooltip() self._app.getView().clearFocusObject() self.PopupMenu(menu)
def onMouseMotion(self, e): if self._next_click_is_invalid: self._next_click_is_invalid = False return self._app.getView().updateMousePos(e.GetX(), e.GetY()) if self._activeTool is not None: dx, dy = (e.GetX() - self._mousePos[0], e.GetY() - self._mousePos[1]) self._activeTool.onMouseMove(e.GetX(), e.GetY(), dx, dy) focusObj = self._app.getView().getFocusObject() if focusObj is not None and hasattr(focusObj, 'getName') and self._activeTool is None: if hasattr(focusObj, 'getInfoString'): showTooltip(focusObj.getName() + '\n' + focusObj.getInfoString()) else: showTooltip(focusObj.getName()) else: if self._activeTool is not None and self._activeTool.getTooltip() is not None: showTooltip(self._activeTool.getTooltip()) else: hideTooltip() self._mousePos = (e.GetX(), e.GetY())
def _onExit(self, e): hideTooltip(self)
def OnMouseExit(self, e): ctrl = e.GetEventObject() hideTooltip(ctrl) e.Skip()