def drawbreakpoints(self, eraseall=0): breakrect = bl, bt, br, bb = self._getbreakrect() br = br - 1 self.SetPort() Qd.PenPat(Qd.GetQDGlobalsGray()) Qd.PaintRect((br, bt, br + 1, bb)) Qd.PenNormal() self._parentwindow.tempcliprect(breakrect) Qd.RGBForeColor((0xffff, 0, 0)) try: lasttop = bt self_ted = self.ted Qd_PaintOval = Qd.PaintOval Qd_EraseRect = Qd.EraseRect for lineno in self._debugger.get_file_breaks(self.file): start, end = self_ted.WEGetLineRange(lineno - 1) if lineno <> self_ted.WEOffsetToLine(start) + 1: # breakpoints beyond our text: erase rest, and back out Qd_EraseRect((bl, lasttop, br, bb)) break (x, y), h = self_ted.WEGetPoint(start, 0) bottom = y + h #print y, (lasttop, bottom) if bottom > lasttop: Qd_EraseRect((bl, lasttop, br, y + h * eraseall)) lasttop = bottom redbullet = bl + 2, y + 3, bl + 8, y + 9 Qd_PaintOval(redbullet) else: Qd_EraseRect((bl, lasttop, br, bb)) Qd.RGBForeColor((0, 0, 0)) finally: self._parentwindow.restoreclip()
def draw(self, visRgn=None): if self._visible: if not visRgn: visRgn = self._parentwindow.wid.GetWindowPort().visRgn Qd.PenPat(Qd.GetQDGlobalsGray()) rect = self._bounds Qd.FrameRect(rect) rect = Qd.InsetRect(rect, 3, 3) Qd.PenNormal() Qd.RGBForeColor(self._color) Qd.PaintRect(rect) Qd.RGBForeColor((0, 0, 0))
def click(self, point, modifiers): # what a mess... orgmouse = point[self._direction] halfgutter = self._gutter / 2 l, t, r, b = self._bounds if self._direction: begin, end = t, b else: begin, end = l, r i = self.findgutter(orgmouse, begin, end) if i is None: return pos = orgpos = begin + (end - begin) * self._gutters[ i] # init pos too, for fast click on border, bug done by Petr minpos = self._panesizes[i][0] maxpos = self._panesizes[i + 1][1] minpos = begin + (end - begin) * minpos + 64 maxpos = begin + (end - begin) * maxpos - 64 if minpos > orgpos and maxpos < orgpos: return #SetCursor("fist") self.SetPort() if self._direction: rect = l, orgpos - 1, r, orgpos else: rect = orgpos - 1, t, orgpos, b # track mouse --- XXX move to separate method? Qd.PenMode(QuickDraw.srcXor) Qd.PenPat(Qd.GetQDGlobalsGray()) Qd.PaintRect(_intRect(rect)) lastpos = None while Evt.Button(): pos = orgpos - orgmouse + Evt.GetMouse()[self._direction] pos = max(pos, minpos) pos = min(pos, maxpos) if pos == lastpos: continue Qd.PenPat(Qd.GetQDGlobalsGray()) Qd.PaintRect(_intRect(rect)) if self._direction: rect = l, pos - 1, r, pos else: rect = pos - 1, t, pos, b Qd.PenPat(Qd.GetQDGlobalsGray()) Qd.PaintRect(_intRect(rect)) lastpos = pos self._parentwindow.wid.GetWindowPort().QDFlushPortBuffer(None) Evt.WaitNextEvent(0, 3) Qd.PaintRect(_intRect(rect)) Qd.PenNormal() SetCursor("watch") newpos = (pos - begin) / float(end - begin) self._gutters[i] = newpos self._panesizes[i] = self._panesizes[i][0], newpos self._panesizes[i + 1] = newpos, self._panesizes[i + 1][1] self.makepanebounds() self.installbounds() self._calcbounds()