def _checkSelectionDlgOverlap(self): if self.view.viewName not in ('Package', 'Application'): selStart, selEnd = self.view.GetSelection() selStartLnNo = self.view.LineFromPosition(selStart) if selStart != selEnd and selStartLnNo == self.view.LineFromPosition( selEnd): chrHeight = self.view.GetCharHeight() selPos = self.view.ClientToScreen( self.view.PointFromPosition(selStart)) selSize = wx.Size( self.view.ClientToScreen( self.view.PointFromPosition(selEnd)).x - selPos.x, chrHeight) dlgPos, dlgSize = self.GetPosition(), self.GetSize() r = wx.IntersectRect( wx.Rect(selPos.x, selPos.y, selSize.x, selSize.y), wx.Rect(dlgPos.x, dlgPos.y, dlgSize.x, dlgSize.y)) if r is not None: # simply moves dialog above or below selection # sometimes rather moving it to the sides would be more # appropriate mcp = self.ScreenToClient(wx.GetMousePosition()) if selStartLnNo < self.view.GetFirstVisibleLine() + \ self.view.LinesOnScreen()/2: self.SetPosition( (dlgPos.x, selPos.y + chrHeight + self._fudgeOffset)) else: self.SetPosition( (dlgPos.x, selPos.y - dlgSize.y - self._fudgeOffset)) self.WarpPointer(mcp.x, mcp.y)
def GetDayHit(self, mx, my): for key in self.rg.keys(): val = self.rg[key] ms_rect = wx.Rect(mx, my, 1, 1) if wx.IntersectRect(ms_rect, val) is not None: result = self.TestDay(key) return result return None
def GetDayHit(self, mx, my): """ Find the clicked area rectangle. :param `mx`: the x position :param `my`: the y positon """ for key in self.rg.keys(): val = self.rg[key] ms_rect = wx.Rect(mx, my, 1, 1) if wx.IntersectRect(ms_rect, val) is not None: result = self.TestDay(key) return result return None
def test_intersectRect02(self): r1 = wx.Rect(0, 0, 55, 55) r2 = wx.Rect(50, 50, 10, 10) r3 = wx.IntersectRect(r1, r2) self.assertEqual(r3, wx.Rect(50, 50, 5, 5))
def test_intersectRect01(self): r1 = wx.Rect(0, 0, 10, 10) r2 = wx.Rect(50, 50, 10, 10) r3 = wx.IntersectRect(r1, r2) self.assertEqual(r3, None)