Changeset 3822:0140eb3cc327 in orange


Ignore:
Timestamp:
04/22/08 11:27:00 (6 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
59be8c0f1fcd5d46eceec714c8c4829f304cc155
Message:

-moved to qt4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Associate/OWHierarchicalClustering.py

    r3815 r3822  
    1010from OWWidget import * 
    1111from sets import Set 
     12from OWQCanvasFuncts import * 
    1213import OWGUI 
    1314import OWGraphTools 
    1415import math 
    1516import os 
     17 
     18from PyQt4.QtCore import * 
     19from PyQt4.QtGui import * 
    1620 
    1721try: 
     
    7175 
    7276        #Tabs 
    73         self.tabs = OWGUI.tabWidget(self.controlArea,"tabWidget") 
     77        self.tabs = OWGUI.tabWidget(self.controlArea) 
    7478        self.settingsTab = OWGUI.createTabPage(self.tabs, "Settings") 
    7579        self.selectionTab= OWGUI.createTabPage(self.tabs, "Selection") 
     
    8589 
    8690        #Dendrogram graphics settings 
    87         dendogramBox = OWGUI.widgetBox(self.settingsTab, "Dendogram setings") 
     91        dendrogramBox = OWGUI.widgetBox(self.settingsTab, "Dendrogram setings") 
    8892        #OWGUI.spin(dendrogramBox, self, "Brightness", label="Brigthtness",min=1,max=9,step=1) 
    8993        OWGUI.checkWithSpin(dendrogramBox, self, "Print depth", 1, 100, "PrintDepthCheck", 
     
    120124        OWGUI.button(self.controlArea, self, "&Save Graph", self.saveGraph, debuggingEnabled = 0) 
    121125 
    122         self.mainAreaLayout=QVBoxLayout(self.mainArea, QVBoxLayout.TopToBottom,0) 
    123         scale=QCanvas(self) 
    124         self.headerView=ScaleCanvas(self, scale, self.mainArea) 
    125         self.footerView=ScaleCanvas(self, scale, self.mainArea) 
    126         self.dendogram = Dendogram(self) 
    127         self.dendogramView = DendogramView(self.dendogram, self.mainArea) 
     126        self.mainAreaLayout=QVBoxLayout() 
     127        scale=QGraphicsScene(self) 
     128        self.headerView=ScaleView(self, scale, self.mainArea) 
     129        self.footerView=ScaleView(self, scale, self.mainArea) 
     130        self.dendrogram = Dendrogram(self) 
     131        self.dendrogramView = DendrogramView(self.dendrogram, self.mainArea) 
    128132     
    129133        self.mainArea.layout().addWidget(self.headerView) 
    130         self.mainArea.layout().addWidget(self.dendogramView) 
     134        self.mainArea.layout().addWidget(self.dendrogramView) 
    131135        self.mainArea.layout().addWidget(self.footerView) 
    132  
     136        self.mainArea.setLayout(self.mainAreaLayout) 
     137         
    133138        self.dendrogram.header=self.headerView 
    134139        self.dendrogram.footer=self.footerView 
     
    138143        self.connect(self.dendrogramView.horizontalScrollBar(),SIGNAL("valueChanged(int)"), 
    139144                self.headerView.horizontalScrollBar().setValue) 
    140         self.dendrogram.resize(self.HDSize,self.VDSize) 
     145        self.dendrogram.setSceneRect(0, 0, self.HDSize,self.VDSize) 
    141146        self.dendrogram.update() 
    142147 
     
    231236 
    232237    def applySettings(self): 
    233         self.dendrogram.resize(self.HDSize, self.VDSize) 
     238        self.dendrogram.setSceneRect(0, 0, self.HDSize, self.VDSize) 
    234239        self.dendrogram.displayTree(self.rootCluster) 
    235240 
     
    252257        if self.SelectionMode: 
    253258            self.dendrogram.cutOffLine.show() 
    254             self.footerView.canvas().marker.show() 
     259            self.footerView.scene().marker.show() 
    255260        else: 
    256261            self.dendrogram.cutOffLine.hide() 
    257             self.footerView.canvas().marker.hide() 
     262            self.footerView.scene().marker.hide() 
    258263        self.dendrogram.update() 
    259         self.footerView.canvas().update() 
     264        self.footerView.scene().update() 
    260265 
    261266    def updateSelection(self, selection): 
     
    314319        ext = ext.upper() 
    315320        dSize= self.dendrogram.size() 
    316         sSize= self.footerView.canvas().size() 
     321        sSize= self.footerView.scene().size() 
    317322        buffer = QPixmap(dSize.width(),dSize.height()+2*sSize.height()) # any size can do, now using the window size 
    318323        bufferTmp= QPixmap(dSize) 
     
    338343scaleHeight=20 
    339344 
    340 class DendrogramView(QCanvasView): 
     345class DendrogramView(QGraphicsView): 
    341346    def __init__(self,*args): 
    342         apply(QCanvasView.__init__, (self,)+args) 
    343         self.parent=args[0] 
     347        apply(QGraphicsView.__init__, (self,)+args) 
    344348        self.viewport().setMouseTracking(True) 
    345349 
    346     def contentsMousePressEvent(self, e): 
    347         if e.button()==Qt.LeftButton: 
    348             self.canvas().pressEvent(e) 
    349  
    350     def contentsMouseReleaseEvent(self, e): 
    351         self.canvas().releaseEvent(e) 
    352  
    353     def contentsMouseMoveEvent(self, e): 
    354         self.canvas().mouseMove(e) 
    355  
    356350    def resizeEvent(self, e): 
    357         QCanvasView.resizeEvent(self,e) 
    358         if self.canvas().parent.FitToWindow: 
    359             self.canvas().displayTree(self.canvas().rootCluster) 
     351        QGraphicsView.resizeEvent(self,e) 
     352        if self.scene().parent.FitToWindow: 
     353            self.scene().displayTree(self.scene().rootCluster) 
    360354        #self.updateContents() 
    361355 
    362 class Dendrogram(QCanvas): 
     356class Dendrogram(QGraphicsScene): 
    363357    def __init__(self, *args): 
    364         apply(QCanvas.__init__, (self,)+args) 
     358        apply(QGraphicsScene.__init__, (self,)+args) 
    365359        self.parent=args[0] 
    366360        self.rootCluster=None 
    367361        self.rootTree=None 
    368         self.highlighted=MyCanvasRect(None) 
     362        self.highlighted=None #MyCanvasRect(None) 
    369363        self.header=None 
    370364        self.footer=None 
     
    379373        self.textObj=[] 
    380374        self.otherObj=[] 
    381         self.cutOffLine=QCanvasLine(self) 
     375        self.cutOffLine=QGraphicsLineItem(None, self) 
    382376        self.cutOffLine.setPen( QPen(QColor("black"),2)) 
    383         self.bublerRect=BubbleRect(None) 
    384         self.setDoubleBuffering(True) 
     377        self.bubbleRect=BubbleRect(None) 
     378        #self.setDoubleBuffering(True) 
    385379        self.holdoff=False 
     380        #self.setMouseTrackingEnabled(True) 
    386381 
    387382    def displayTree(self, root): 
     
    392387##        if self.parent.FitToWindow: 
    393388        width=self.parent.dendrogramView.size().width() 
    394         self.resize(width,self.height()) 
     389        self.setSceneRect(0, 0, width, self.height()) 
    395390        self.textAreaWidth=100 
    396391##        else: 
     
    404399        self.treeAreaWidth=self.width()-leftMargin-self.textAreaWidth 
    405400        self.font.setPointSize(self.textSize) 
    406         self.header.canvas().resize(self.width()+20,scaleHeight) 
     401        self.header.scene().setSceneRect(0, 0, self.width()+20, scaleHeight) 
    407402        (self.rootGraphics,a)=self.drawTree(self.rootCluster,0) 
    408403        self.updateLabel() 
     
    413408                    self.addSelection(new) 
    414409 
    415         self.bubbleRect=BubbleRect(self) 
     410        self.bubbleRect=BubbleRect(None) 
     411        self.addItem(self.bubbleRect) 
    416412        self.otherObj.append(self.bubbleRect) 
    417413        fix=max([a.boundingRect().width() for a in self.textObj]) 
    418         self.resize(leftMargin+self.treeAreaWidth+fix+rightMargin,2*topMargin+self.gTextPos) 
    419         self.cutOffLine.setPoints(0,0,0,self.height()) 
     414        self.setSceneRect(0, 0, leftMargin+self.treeAreaWidth+fix+rightMargin, 2*topMargin+self.gTextPos) 
     415        self.cutOffLine.setLine(0,0,0,self.height()) 
    420416        self.update() 
    421417 
     
    430426            rectW=self.width()-self.textAreaWidth-top 
    431427            rectH=low-hi 
    432             rect=MyCanvasRect(top, hi, rectW+2, rectH, self) 
     428            rect=MyCanvasRect(top, hi, rectW+2, rectH) 
     429            print top, hi, rectW+2, rectH 
     430            self.addItem(rect) 
    433431            rect.left=leftR 
    434432            rect.right=rightR 
     
    436434            rect.setBrush(self.brush) 
    437435            rect.setPen(self.pen) 
    438             rect.setZ(self.gZPos) 
     436            rect.setZValue(self.gZPos) 
    439437            self.gZPos-=1 
    440438            rect.show() 
     
    442440            return (rect, (hi+low)/2) 
    443441        else: 
    444             text=MyCanvasText(self) 
     442            text=MyCanvasText(self, font=self.font, alignment=Qt.AlignLeft) 
    445443            #if len(cluster)>1: 
    446444            #    text.setText("(%i items)" % len(cluster)) 
    447445            #else: 
    448446            #    text.setText(str(cluster[0])) 
    449             text.setText(" ") 
     447            text.setPlainText(" ") 
    450448            text.cluster=cluster 
    451             text.setFont(self.font) 
    452             text.move(leftMargin+self.treeAreaWidth+5,math.ceil(self.gTextPos)) 
    453             text.setTextFlags(Qt.AlignLeft) 
    454             text.setZ(1) 
    455             text.show() 
     449##            text.setFont(self.font) 
     450            text.setPos(leftMargin+self.treeAreaWidth+5,math.ceil(self.gTextPos)) 
     451##            text.setTextFlags(Qt.AlignLeft) 
     452            text.setZValue(1) 
     453##            text.show() 
    456454            self.textObj.append(text) 
    457455            self.gTextPos+=self.gTextPosInc 
     
    461459    def clear(self): 
    462460        for a in self.rectObj: 
    463             a.setCanvas(None) 
     461            self.removeItem(a) 
    464462        for a in self.textObj: 
    465             a.setCanvas(None) 
     463            self.removeItem(a) 
    466464        for a in self.otherObj: 
    467             a.setCanvas(None) 
     465            self.removeItem(a) 
    468466        self.rectObj=[] 
    469467        self.textObj=[] 
     
    472470        self.rootCluster=None 
    473471        self.cutOffLine.hide() 
    474         self.cutOffLine.move(0,0) 
     472        self.cutOffLine.setPos(0,0) 
    475473        self.oldSelection=[a.rootCluster for a in self.selectionList] 
    476474        self.clearSelection() 
     
    482480        for a in self.textObj: 
    483481            if len(a.cluster)>1 and not self.parent.Annotation==0: 
    484                 a.setText("(%i items)" % len(a.cluster)) 
     482                a.setPlainText("(%i items)" % len(a.cluster)) 
    485483            else: 
    486                 a.setText(str(a.cluster[0])) 
    487         self.resize(leftMargin+self.treeAreaWidth+max([a.boundingRect().width() \ 
     484                a.setPlainText(str(a.cluster[0])) 
     485        self.setSceneRect(0, 0, leftMargin+self.treeAreaWidth+max([a.boundingRect().width() \ 
    488486                for a in self.textObj])+rightMargin, self.height()) 
    489487        self.update() 
     
    522520 
    523521    def addSelection(self, obj): 
    524         new=SelectionPoly(self) 
    525522        vertList=[] 
    526523        ptr=obj 
     
    528525            rect=ptr.rect() 
    529526            ptr=ptr.left 
    530             vertList.append(QPoint(rect.left()-polyOffset,rect.top()-polyOffset)) 
     527            vertList.append(QPointF(rect.left()-polyOffset,rect.top()-polyOffset)) 
    531528            if ptr: 
    532                 vertList.append(QPoint(ptr.rect().left()-polyOffset, rect.top()-polyOffset)) 
     529                vertList.append(QPointF(ptr.rect().left()-polyOffset, rect.top()-polyOffset)) 
    533530            else: 
    534                 vertList.append(QPoint(rect.right()+3, rect.top()-polyOffset)) 
     531                vertList.append(QPointF(rect.right()+3, rect.top()-polyOffset)) 
    535532 
    536533        tmpList=[] 
     
    539536            rect=ptr.rect() 
    540537            ptr=ptr.right 
    541             tmpList.append(QPoint(rect.left()-polyOffset,rect.bottom()+polyOffset)) 
     538            tmpList.append(QPointF(rect.left()-polyOffset,rect.bottom()+polyOffset)) 
    542539            if ptr: 
    543                 tmpList.append(QPoint(ptr.rect().left()-polyOffset, rect.bottom()+polyOffset)) 
     540                tmpList.append(QPointF(ptr.rect().left()-polyOffset, rect.bottom()+polyOffset)) 
    544541            else: 
    545                 tmpList.append(QPoint(rect.right()+3, rect.bottom()+polyOffset)) 
     542                tmpList.append(QPointF(rect.right()+3, rect.bottom()+polyOffset)) 
    546543        tmpList.reverse() 
    547544        vertList.extend(tmpList) 
    548         array=QPointArray(len(vertList)) 
    549         for i in range(len(vertList)): 
    550             array.setPoint(i,vertList[i]) 
    551         new.setPoints(array) 
    552         new.setCanvas(self) 
     545        new=SelectionPoly(QPolygonF(vertList)) 
     546##        array=QPointArray(len(vertList)) 
     547##        for i in range(len(vertList)): 
     548##            array.setPoint(i,vertList[i]) 
     549##        new.setPoints(array) 
     550        self.addItem(new) 
    553551        new.rootCluster=obj.cluster 
    554552        new.rootGraphics=obj 
     
    563561            brush=QBrush(col,Qt.SolidPattern) 
    564562            el.setBrush(brush) 
    565         new.setZ(self.gZPos-2) 
    566         #new.setZ(2) 
     563        new.setZValue(self.gZPos-2) 
     564        #new.setZValue(2) 
    567565        ## 
    568566        new.show() 
     
    575573        self.selectionList.pop(i) 
    576574 
    577     def pressEvent(self, e): 
    578         if not self.rootCluster: 
    579             return 
     575    def mousePressEvent(self, e): 
     576        if not self.rootCluster or e.button()!=Qt.LeftButton: 
     577            return 
     578        pos=e.scenePos() 
    580579        if self.parent.SelectionMode: 
    581580            self.cutOffLineDragged=True 
    582             self.setCutOffLine(e.pos().x()) 
    583             return 
    584         pos=e.pos() 
    585         objList=self.collisions(pos) 
     581            self.setCutOffLine(pos.x()) 
     582            return 
     583        objList=self.items(pos.x(), pos.y(), 1, 1) 
    586584        if len(objList)==0 and not self.parent.ctrlPressed: 
    587585            self.clearSelection() 
     
    608606            self.update() 
    609607 
    610     def releaseEvent(self, e): 
     608    def mouseReleaseEvent(self, e): 
    611609        self.holdoff=False 
    612610        if not self.rootCluster: 
     
    615613            self.cutOffLineDragged=False 
    616614            self.bubbleRect.hide() 
    617             self.setCutOffLine(e.pos().x()) 
    618  
    619     def mouseMove(self, e): 
     615            self.setCutOffLine(e.scenePos().x()) 
     616 
     617    def mouseMoveEvent(self, e): 
    620618        if not self.rootCluster: 
    621619            return 
    622620        if self.parent.SelectionMode==1 and self.cutOffLineDragged: 
    623             self.setCutOffLine(e.pos().x()) 
     621            self.setCutOffLine(e.scenePos().x()) 
    624622            if not self.parent.DisableBubble: 
    625623                self.bubbleRect.setText("Cut off height: \n %f" % self.cutOffHeight) 
    626                 self.bubbleRect.move(e.pos().x(), e.pos().y()) 
     624                self.bubbleRect.setPos(e.scenePos().x(), e.scenePos().y()) 
    627625                self.bubbleRect.show() 
    628626            self.update() 
    629627            return 
    630         objList=self.collisions(e.pos()) 
     628        objList=self.items(e.scenePos()) 
    631629        self.highlight(objList) 
    632630        if not self.parent.DisableBubble and self.highlighted: 
     
    634632            text= "Items: %i \nCluster height: %f" % (len(cluster), cluster.height) 
    635633            self.bubbleRect.setText(text) 
    636             self.bubbleRect.move(e.pos().x(),e.pos().y()) 
     634            self.bubbleRect.setPos(e.scenePos().x(),e.scenePos().y()) 
    637635            self.bubbleRect.show() 
    638636            self.update() 
     
    640638            self.bubbleRect.hide() 
    641639            self.update() 
     640        print objList 
    642641        if objList and objList[0].__class__==MyCanvasText and not self.parent.DisableBubble: 
    643642            head="Items: %i" %len(objList[0].cluster) 
     
    649648                body="\n"+"\n".join(bodyItems) 
    650649            self.bubbleRect.setText(head+body) 
    651             self.bubbleRect.move(e.pos().x(),e.pos().y()) 
     650            self.bubbleRect.setPos(e.scenePos().x(),e.scenePos().y()) 
     651            print head+body 
    652652            if body!="": 
    653653                self.bubbleRect.show() 
     
    668668            self.cutOffHeight=self.treeHeight- \ 
    669669                self.treeHeight/self.treeAreaWidth*(x-leftMargin) 
    670             self.cutOffLine.move(x,0) 
     670            self.cutOffLine.setPos(x,0) 
    671671            self.footer.moveMarker(x) 
    672672            self.cutOffLine.show() 
     
    678678        else: 
    679679            self.cutOffLine.hide() 
    680             self.cutOffLine.move(x,0) 
     680            self.cutOffLine.setPos(x,0) 
    681681            self.update() 
    682682 
    683683 
    684 class ScaleCanvas(QCanvasView): 
     684class ScaleView(QGraphicsView): 
    685685    def __init__(self, parent, *args): 
    686         apply(QCanvasView.__init__, (self,)+args) 
     686        apply(QGraphicsView.__init__, (self,)+args) 
    687687        self.parent=parent 
    688688        self.setFixedHeight(20) 
    689         self.setHScrollBarMode(QScrollView.AlwaysOff) 
    690         self.setVScrollBarMode(QScrollView.AlwaysOff) 
    691         self.canvas().obj=[] 
    692         self.canvas().marker=QCanvasRectangle(None) 
     689        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 
     690        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 
     691        self.scene().obj=[] 
     692        self.scene().marker=QGraphicsRectItem(None, self.scene()) 
    693693        self.markerDragged=False 
    694694        self.markerPos=0 
    695695 
    696696    def clear(self): 
    697         for a in self.canvas().obj: 
    698             a.setCanvas(None) 
    699         self.canvas().marker.setCanvas(None) 
    700         self.canvas().obj=[] 
    701         self.canvas().update() 
     697        for a in self.scene().obj: 
     698            self.scene().removeItem(a) 
     699        self.scene().removeItem(self.scene().marker) 
     700        self.scene().obj=[] 
     701##        self.scene().update() 
    702702 
    703703    def drawScale(self, treeAreaW, height): 
    704704        self.clear() 
    705         self.canvas().treeAreaW=treeAreaW 
    706         self.canvas().treeHeight=height 
     705        self.scene().treeAreaW=treeAreaW 
     706        self.scene().treeHeight=height 
    707707        xPos=leftMargin+treeAreaW 
    708708        dist=0 
     
    711711            distInc=0.25 
    712712        while xPos>=leftMargin: 
    713             text=QCanvasText(str(dist),self.canvas()) 
    714             text.move(xPos,9) 
    715             text.setZ(0) 
    716             text.setTextFlags(Qt.AlignCenter) 
    717             text.show() 
    718             line1=QCanvasLine(self.canvas()) 
    719             line2=QCanvasLine(self.canvas()) 
    720             line1.setPoints(xPos,0,xPos,2) 
    721             line1.setZ(0) 
    722             line1.show() 
    723             line2.setPoints(xPos,16,xPos,20) 
    724             line2.setZ(0) 
    725             line2.show() 
    726             self.canvas().obj.append(text) 
    727             self.canvas().obj.append(line1) 
    728             self.canvas().obj.append(line2) 
     713            text=OWCanvasText(self.scene(), str(dist), xPos, 9, Qt.AlignCenter) 
     714##            text.setPos(xPos,9) 
     715            text.setZValue(0) 
     716##            text.setTextFlags(Qt.AlignCenter) 
     717##            text.show() 
     718            line1=OWCanvasLine(self.scene(), xPos, 0, xPos, 2) 
     719            line2=OWCanvasLine(self.scene(), xPos, 16, xPos, 20) 
     720##            line1.setPoints(xPos,0,xPos,2) 
     721            line1.setZValue(0) 
     722##            line1.show() 
     723##            line2.setPoints(xPos,16,xPos,20) 
     724            line2.setZValue(0) 
     725##            line2.show() 
     726            self.scene().obj.append(text) 
     727            self.scene().obj.append(line1) 
     728            self.scene().obj.append(line2) 
    729729            xPos-=(distInc/height)*treeAreaW 
    730730            dist+=distInc 
    731731 
    732         self.marker=QCanvasRectangle(self.markerPos-3,0,1,20,self.canvas()) 
    733         self.marker.setBrush(QBrush(QColor("blue"),2)) 
    734         self.marker.setZ(1) 
    735         self.marker.show() 
    736         self.canvas().obj.append(self.marker) 
    737         self.canvas().marker=self.marker 
    738         self.canvas().update() 
    739  
    740     def contentsMousePressEvent(self, e): 
    741         if e.pos().x()<0 and e.pos().x()>leftMargin+self.canvas().treeAreaW: 
     732        self.marker=OWCanvasRectangle(self.scene(),self.markerPos-3,0,1,20, brushColor=QColor("blue")) 
     733        self.marker.setZValue(1) 
     734##        self.marker.show() 
     735        self.scene().obj.append(self.marker) 
     736        self.scene().marker=self.marker 
     737##        self.scene().update() 
     738 
     739    def mousePressEvent(self, e): 
     740        if e.pos().x()<0 and e.pos().x()>leftMargin+self.scene().treeAreaW: 
    742741            return 
    743742        self.commitStatus=self.parent.CommitOnChange 
    744743        self.parent.CommitOnChange=False 
    745         self.marker=self.canvas().marker 
     744        self.marker=self.scene().marker 
    746745        self.markerPos=e.pos().x()+3 
    747         self.marker.move(self.markerPos-3,0) 
     746        self.marker.setPos(self.markerPos-3,0) 
    748747        self.markerDragged=True 
    749         self.canvas().update() 
     748##        self.scene().update() 
    750749        self.parent.dendrogram.setCutOffLine(e.pos().x()) 
    751750 
    752     def contentsMouseReleaseEvent(self, e): 
     751    def mouseReleaseEvent(self, e): 
    753752        self.markerDragged=False 
    754753        self.parent.CommitOnChange=self.commitStatus 
    755754        self.parent.dendrogram.setCutOffLine(e.pos().x()) 
    756755 
    757     def contentsMouseMoveEvent(self, e): 
    758         if e.pos().x()<0 or e.pos().x()>leftMargin+self.canvas().treeAreaW: 
     756    def mouseMoveEvent(self, e): 
     757        if e.pos().x()<0 or e.pos().x()>leftMargin+self.scene().treeAreaW: 
    759758            return 
    760759        if self.markerDragged and e.pos(): 
    761760           self.markerPos=e.pos().x()+3 
    762            self.marker.move(self.markerPos-3,0) 
    763            self.canvas().update() 
     761           self.marker.setPos(self.markerPos-3,0) 
     762##           self.scene().update() 
    764763           self.parent.dendrogram.setCutOffLine(e.pos().x()) 
    765764 
    766765    def moveMarker(self, x): 
    767         self.canvas().marker.move(x,0) 
    768         self.canvas().update() 
    769  
    770 class MyCanvasRect(QCanvasRectangle): 
     766        self.scene().marker.setPos(x,0) 
     767##        self.scene().update() 
     768 
     769class MyCanvasRect(QGraphicsRectItem): 
    771770    left=None 
    772771    right=None 
    773772    cluster=None 
     773    def __init__(self, *args): 
     774        QGraphicsRectItem.__init__(self, *args) 
     775        print args 
    774776    def highlight(self, pen): 
    775777        if self.pen()==pen: 
     
    781783        self.setPen(pen) 
    782784 
    783     def drawShape(self, painter): 
    784         painter.drawLine(self.x(),self.y(),self.x(),self.y()+self.height()) 
     785    #def drawShape(self, painter): 
     786    def paint(self, painter, option, widget=None): 
     787        rect=self.rect() 
     788        painter.drawLine(rect.x(),rect.y(),rect.x(),rect.y()+rect.height())    
    785789        if self.left: 
    786             painter.drawLine(self.x(),self.y(),self.left.x(),self.y()) 
    787         else: 
    788             painter.drawLine(self.x(),self.y(),self.x()+self.width(),self.y()) 
     790            rectL=self.left.rect() 
     791            painter.drawLine(rect.x(),rect.y(),rectL.x(),rect.y()) 
     792        else: 
     793            painter.drawLine(rect.x(),rect.y(),rect.x()+rect.width(),rect.y()) 
    789794        if self.right: 
    790             painter.drawLine(self.x(),self.y()+self.height(),self.right.x(), 
    791                 self.y()+self.height()) 
    792         else: 
    793             painter.drawLine(self.x(),self.y()+self.height(),self.x()+self.width(), 
    794                 self.y()+self.height()) 
    795  
    796 class MyCanvasText(QCanvasText): 
     795            rectR=self.right.rect() 
     796            painter.drawLine(rect.x(),rect.y()+rect.height(),rectR.x(), 
     797                rect.y()+rect.height()) 
     798        else: 
     799            painter.drawLine(rect.x(),rect.y()+rect.height(),rect.x()+rect.width(), 
     800                rect.y()+rect.height()) 
     801##        if self.left: 
     802##            painter.drawLine(self.x(),self.y(),self.left.x(),self.y()) 
     803##        else: 
     804##            painter.drawLine(self.x(),self.y(),self.x()+self.rect().width(),self.y()) 
     805##        if self.right: 
     806##            painter.drawLine(self.x(),self.y()+self.rect().height(),self.right.x(), 
     807##                self.y()+self.rect().height()) 
     808##        else: 
     809##            painter.drawLine(self.x(),self.y()+self.rect().height(),self.x()+self.rect().width(), 
     810##                self.y()+self.rect().height()) 
     811         
     812 
     813class MyCanvasText(OWCanvasText): 
    797814    cluster=None 
    798815 
    799 class SelectionPoly(QCanvasPolygon): 
     816class SelectionPoly(QGraphicsPolygonItem): 
    800817    rootCluster=None 
    801818    rootGraphics=None 
    802819    def __init__(self, *args): 
    803         apply(QCanvasPolygon.__init__, (self,)+args) 
    804         self.setZ(20) 
     820        apply(QGraphicsPolygonItem.__init__, (self,)+args) 
     821        self.setZValue(20) 
    805822 
    806823    def clearGraphics(self): 
    807         #self.rootGraphics.setBrush(self.canvas().brush) 
    808         self.setCanvas(None) 
    809  
    810 class BubbleRect(QCanvasRectangle): 
     824        self.scene().removeItem(self) 
     825 
     826class BubbleRect(QGraphicsRectItem): 
    811827    def __init__(self,*args): 
    812         apply(QCanvasRectangle.__init__, (self,)+args) 
     828        apply(QGraphicsRectItem.__init__, (self,)+args) 
    813829        self.setBrush(QBrush(Qt.white)) 
    814         self.text=QCanvasText(self.canvas()) 
    815         self.setZ(30) 
    816         self.text.setZ(31) 
     830        self.text=QGraphicsTextItem(self) 
     831        self.text.setPos(5, 5) 
     832##        self.setZValue(30) 
     833##        self.text.setZValue(31) 
    817834 
    818835    def setText(self, text): 
    819         self.text.setText(text) 
    820         self.setSize(self.text.boundingRect().width()+6,self.text.boundingRect().height()+6) 
    821  
    822     def show(self): 
    823         QCanvasRectangle.show(self) 
    824         self.text.show() 
    825  
    826     def hide(self): 
    827         QCanvasRectangle.hide(self) 
    828         self.text.hide() 
    829  
    830     def move(self, x, y): 
    831         if self.canvas().onCanvas(x+self.width(),y): 
    832             QCanvasRectangle.move(self, x+5, y+5) 
    833             self.text.move(x+6,y+6) 
    834         else: 
    835             QCanvasRectangle.move(self, x-self.width()-5, y+5) 
    836             self.text.move(x-self.width()-3,y+6) 
     836        self.text.setPlainText(text) 
     837        self.setRect(0, 0, self.text.boundingRect().width()+6,self.text.boundingRect().height()+6) 
     838##        self.rect().setWidth(self.text.boundingRect().width()) 
     839##        self.rect().setHeight(self.text.boundingRect().height()) 
     840 
     841##    def show(self): 
     842##        QGraphicsRectItem.show(self) 
     843##        self.text.show() 
     844## 
     845##    def hide(self): 
     846##        QGraphicsRectItem.hide(self) 
     847##        self.text.hide() 
     848 
     849    def setPos(self, x, y): 
     850        if self.scene().sceneRect().contains(x+self.rect().width(),y): 
     851            QGraphicsRectItem.setPos(self, x+5, y+5) 
     852##            self.text.move(x+6,y+6) 
     853        else: 
     854            QGraphicsRectItem.setPos(self, x-self.rect().width()-5, y+5) 
     855##            self.text.move(x-self.width()-3,y+6) 
    837856        #if not self.canvas().onCanvas(1,y+self.height()): 
    838857        #    self.move(x,y-self.height()) 
     
    844863 
    845864 
    846     def setCanvas(self, canvas): 
    847         QCanvasRectangle.setCanvas(self,canvas) 
    848         self.text.setCanvas(canvas) 
     865##    def setCanvas(self, canvas): 
     866##        QCanvasRectangle.setCanvas(self,canvas) 
     867##        self.text.setCanvas(canvas) 
    849868 
    850869if __name__=="__main__": 
Note: See TracChangeset for help on using the changeset viewer.