source: orange/orange/OrangeWidgets/OWQCanvasFuncts.py @ 6538:a5f65d7f0b2c

Revision 6538:a5f65d7f0b2c, 3.4 KB checked in by Mitar <Mitar@…>, 4 years ago (diff)

Made XPM version of the icon 32x32.

Line 
1from PyQt4.QtCore import *
2from PyQt4.QtGui import *
3
4class OWCanvasText(QGraphicsTextItem):
5    def __init__(self, canvas, text = "", x  = 0, y = 0, alignment = Qt.AlignLeft | Qt.AlignTop, bold = 0, font = None, z = 0, htmlText=None, tooltip = None, show = 1):
6        QGraphicsTextItem.__init__(self, text, None, canvas)
7
8        if font:
9            self.setFont(font)
10        if bold:
11            font = self.font(); font.setBold(bold); self.setFont(font)
12        if htmlText:
13            self.setHtml(htmlText)
14
15        self.alignment = alignment
16
17        self.setPos(x, y)
18        self.x, self.y = x, y
19        self.setZValue(z)
20        if tooltip: self.setToolTip(tooltip)
21
22        if show: self.show()
23        else: self.hide()
24
25    def setPos(self, x, y):
26        self.x, self.y = x, y
27        rect = self.boundingRect()
28        if int(self.alignment & Qt.AlignRight):     x -= rect.width()
29        elif int(self.alignment & Qt.AlignHCenter): x-= rect.width()/2.
30        if int(self.alignment & Qt.AlignBottom):    y-= rect.height()
31        elif int(self.alignment & Qt.AlignVCenter): y-= rect.height()/2.
32        QGraphicsTextItem.setPos(self, x, y)
33
34
35def OWCanvasRectangle(canvas, x = 0, y = 0, width = 0, height = 0, penColor = Qt.black, brushColor = None, penWidth = 1, z = 0, penStyle = Qt.SolidLine, pen = None, tooltip = None, show = 1):
36    rect = QGraphicsRectItem(x, y, width, height, None, canvas)
37    if brushColor: rect.setBrush(QBrush(brushColor))
38    if pen: rect.setPen(pen)
39    else:   rect.setPen(QPen(penColor, penWidth, penStyle))
40    rect.setZValue(z)
41    if tooltip: rect.setToolTip(tooltip)
42    if show: rect.show()
43    else: rect.hide()
44    return rect
45
46
47def OWCanvasLine(canvas, x1 = 0, y1 = 0, x2 = 0, y2 = 0, penWidth = 1, penColor = Qt.black, pen = None, z = 0, tooltip = None, show = 1):
48    r = QGraphicsLineItem(x1, y1, x2, y2, None, canvas)
49    if pen != None:
50        r.setPen(pen)
51    else:
52        r.setPen(QPen(penColor, penWidth))
53    r.setZValue(z)
54    if tooltip: r.setToolTip(tooltip)
55   
56    if show: r.show()
57    else: r.hide()
58   
59    return r
60
61def OWCanvasEllipse(canvas, x = 0, y = 0, width = 0, height = 0, penWidth = 1, startAngle = 0, angles = 360, penColor = Qt.black, brushColor = None, z = 0, penStyle = Qt.SolidLine, pen = None, tooltip = None, show = 1):
62    e = QGraphicsEllipseItem(x, y, width, height, None, canvas)
63    e.setZValue(z)
64    if brushColor != None:
65        e.setBrush(QBrush(brushColor))
66    if pen != None: e.setPen(pen)
67    else:           e.setPen(QPen(penColor, penWidth))
68    e.setStartAngle(startAngle)
69    e.setSpanAngle(angles*16)
70    if tooltip: e.setToolTip(tooltip)
71   
72    if show: e.show()
73    else: e.hide()
74   
75    return e
76
77#    if penColor != None and brushColor == None:
78#        # if we dont want to fill the ellipse then we have to draw it with a series of lines - QCanvasEllipse always draws with NoPen
79#        p = QPointArray()
80#        p.makeArc(x, y, width, height, startAngle, angles*16)
81#        lines = []
82#        for i in range(0,p.size(),2):
83#            l = OWCanvasLine(canvas, p.point(i)[0], p.point(i)[1], p.point((i+2)%p.size())[0], p.point((i+2)%p.size())[1], penWidth, penColor, z, show)
84#            lines.append(l)
85#        return lines
86#    else:
87#        e = QCanvasEllipse(width, height, canvas)
88#        e.setX(x)
89#        e.setY(y)
90#        e.setZValue(z)
91#        e.setBrush(QBrush(brushColor))
92#        e.setAngles(startAngle, angles*16)
93#        if show: e.show()
94#        return e
Note: See TracBrowser for help on using the repository browser.