Example #1
0
 def draw(self, visRgn=None):
     if self._visible:
         penstate = Qd.GetPenState()
         Qd.PenPat(self._framepattern)
         Qd.RGBForeColor(self._framecolor)
         Qd.FrameRect(self._bounds)
         Qd.RGBForeColor((0, 0, 0))
         Qd.SetPenState(penstate)
Example #2
0
File: Wtext.py Project: mmrvka/xbmc
 def draw(self, visRgn=None):
     if self._visible:
         (font, style, size, color) = self.fontsettings
         fontid = GetFNum(font)
         savestate = Qd.GetPenState()
         Qd.TextFont(fontid)
         Qd.TextFace(style)
         Qd.TextSize(size)
         Qd.RGBForeColor(color)
         Qd.RGBBackColor(self._backgroundcolor)
         TE.TETextBox(self.text, self._bounds, self.align)
         Qd.RGBBackColor((0xffff, 0xffff, 0xffff))
         Qd.SetPenState(savestate)
Example #3
0
    def listDefHighlight(self, selected, cellRect, theCell, dataOffset,
                         dataLen, theList):
        savedPort = Qd.GetPort()
        Qd.SetPort(theList.GetListPort())
        savedClip = Qd.NewRgn()
        Qd.GetClip(savedClip)
        Qd.ClipRect(cellRect)
        savedPenState = Qd.GetPenState()
        Qd.PenNormal()
        Qd.PenMode(hilitetransfermode)
        Qd.PaintRect(cellRect)

        #restore graphics environment
        Qd.SetPort(savedPort)
        Qd.SetClip(savedClip)
        Qd.DisposeRgn(savedClip)
        Qd.SetPenState(savedPenState)
Example #4
0
    def listDefDraw(self, selected, cellRect, theCell, dataOffset, dataLen,
                    theList):
        savedPort = Qd.GetPort()
        Qd.SetPort(theList.GetListPort())
        savedClip = Qd.NewRgn()
        Qd.GetClip(savedClip)
        Qd.ClipRect(cellRect)
        savedPenState = Qd.GetPenState()
        Qd.PenNormal()
        Qd.EraseRect(cellRect)

        #draw the cell if it contains data
        ascent, descent, leading, size, hm = Fm.FontMetrics()
        linefeed = ascent + descent + leading

        if dataLen:
            left, top, right, bottom = cellRect
            data = theList.LGetCell(dataLen, theCell)
            lines = data.split("\r")
            line1 = lines[0]
            if len(lines) > 1:
                line2 = lines[1]
            else:
                line2 = ""
            Qd.MoveTo(int(left + 4), int(top + ascent))
            Qd.DrawText(line1, 0, len(line1))
            if line2:
                Qd.MoveTo(int(left + 4), int(top + ascent + linefeed))
                Qd.DrawText(line2, 0, len(line2))
            Qd.PenPat("\x11\x11\x11\x11\x11\x11\x11\x11")
            bottom = top + theList.cellSize[1]
            Qd.MoveTo(left, bottom - 1)
            Qd.LineTo(right, bottom - 1)
        if selected:
            self.listDefHighlight(selected, cellRect, theCell, dataOffset,
                                  dataLen, theList)
        #restore graphics environment
        Qd.SetPort(savedPort)
        Qd.SetClip(savedClip)
        Qd.DisposeRgn(savedClip)
        Qd.SetPenState(savedPenState)
Example #5
0
    def myDrawCell(self, onlyHilite, selected, cellRect, theCell,
                    dataOffset, dataLen, theList):
        savedPort = Qd.GetPort()
        Qd.SetPort(theList.GetListPort())
        savedClip = Qd.NewRgn()
        Qd.GetClip(savedClip)
        Qd.ClipRect(cellRect)
        savedPenState = Qd.GetPenState()
        Qd.PenNormal()

        l, t, r, b = cellRect

        if not onlyHilite:
            Qd.EraseRect(cellRect)

            ascent, descent, leading, size, hm = Fm.FontMetrics()
            linefeed = ascent + descent + leading

            if dataLen >= 6:
                data = theList.LGetCell(dataLen, theCell)
                iconId, indent, tab = struct.unpack("hhh", data[:6])
                try:
                    key, value = data[6:].split("\t", 1)
                except ValueError:
                    # bogus data, at least don't crash.
                    indent = 0
                    tab = 0
                    iconId = 0
                    key = ""
                    value = data[6:]

                if iconId:
                    try:
                        theIcon = Icn.GetCIcon(iconId)
                    except Icn.Error:
                        pass
                    else:
                        rect = (0, 0, 16, 16)
                        rect = Qd.OffsetRect(rect, l, t)
                        rect = Qd.OffsetRect(rect, 0, (theList.cellSize[1] - (rect[3] - rect[1])) / 2)
                        Icn.PlotCIcon(rect, theIcon)

                if len(key) >= 0:
                    cl, ct, cr, cb = cellRect
                    vl, vt, vr, vb = self._viewbounds
                    cl = vl + PICTWIDTH + indent
                    cr = vl + tab
                    if cr > vr:
                        cr = vr
                    if cl < cr:
                        drawTextCell(key, (cl, ct, cr, cb), ascent, theList)
                    cl = vl + tab
                    cr = vr
                    if cl < cr:
                        drawTextCell(value, (cl, ct, cr, cb), ascent, theList)
            #elif dataLen != 0:
            #       drawTextCell("???", 3, cellRect, ascent, theList)
            else:
                return  # we have bogus data

            # draw nice dotted line
            l, t, r, b = cellRect
            l = self._viewbounds[0] + tab
            r = l + 1;
            if not (theList.cellSize[1] & 0x01) or (t & 0x01):
                myPat = "\xff\x00\xff\x00\xff\x00\xff\x00"
            else:
                myPat = "\x00\xff\x00\xff\x00\xff\x00\xff"
            Qd.PenPat(myPat)
            Qd.PenMode(QuickDraw.srcCopy)
            Qd.PaintRect((l, t, r, b))
            Qd.PenNormal()

        if selected or onlyHilite:
            l, t, r, b = cellRect
            l = self._viewbounds[0] + PICTWIDTH
            r = self._viewbounds[2]
            Qd.PenMode(hilitetransfermode)
            Qd.PaintRect((l, t, r, b))

        # restore graphics environment
        Qd.SetPort(savedPort)
        Qd.SetClip(savedClip)
        Qd.DisposeRgn(savedClip)
        Qd.SetPenState(savedPenState)