Changeset 11181:a60586c66457 in orange


Ignore:
Timestamp:
11/13/12 13:23:43 (17 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added channel names to the LinkItems.

Location:
Orange/OrangeCanvas/canvas
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/canvas/items/linkitem.py

    r11141 r11181  
    66from PyQt4.QtGui import ( 
    77    QGraphicsItem, QGraphicsEllipseItem, QGraphicsPathItem, QGraphicsObject, 
    8     QGraphicsDropShadowEffect, QPen, QBrush, QColor, QPainterPath 
     8    QGraphicsTextItem, QGraphicsDropShadowEffect, QPen, QBrush, QColor, 
     9    QPainterPath, QFont, QTransform 
    910) 
    1011 
     
    124125        self.sinkIndicator.hide() 
    125126 
     127        self.linkTextItem = QGraphicsTextItem(self) 
     128        self.linkTextItem.setFont(QFont("Helvetica", 11)) 
     129 
     130        self.__sourceName = "" 
     131        self.__sinkName = "" 
     132 
    126133        self.hover = False 
    127134 
     
    222229 
    223230        self.__updateCurve() 
     231 
     232    def setChannelNamesVisible(self, visible): 
     233        self.linkTextItem.setVisible(visible) 
     234 
     235    def setSourceName(self, name): 
     236        if self.__sourceName != name: 
     237            self.__sourceName = name 
     238            self.__updateText() 
     239 
     240    def sourceName(self): 
     241        return self.__sourceName 
     242 
     243    def setSinkName(self, name): 
     244        if self.__sinkName != name: 
     245            self.__sinkName = name 
     246            self.__updateText() 
     247 
     248    def sinkName(self): 
     249        return self.__sinkName 
    224250 
    225251    def _sinkPosChanged(self, *arg): 
     
    246272            self.sourceIndicator.setPos(source_pos) 
    247273            self.sinkIndicator.setPos(sink_pos) 
     274            self.__updateText() 
    248275        else: 
    249276            self.setHoverState(False) 
    250277            self.curveItem.setPath(QPainterPath()) 
     278 
     279    def __updateText(self): 
     280        if self.__sourceName or self.__sinkName: 
     281            text = "{0} --> {1}".format(self.__sourceName, self.__sinkName) 
     282        else: 
     283            text = "" 
     284        self.linkTextItem.setPlainText(text) 
     285 
     286        path = self.curveItem.path() 
     287        if not path.isEmpty(): 
     288            center = path.pointAtPercent(0.5) 
     289            angle = path.angleAtPercent(0.5) 
     290 
     291            brect = self.linkTextItem.boundingRect() 
     292 
     293            transform = QTransform() 
     294            transform.translate(center.x(), center.y()) 
     295            transform.rotate(-angle) 
     296 
     297            # Center and move above the curve path. 
     298            transform.translate(-brect.width() / 2, -brect.height()) 
     299 
     300            self.linkTextItem.setTransform(transform) 
    251301 
    252302    def removeLink(self): 
  • Orange/OrangeCanvas/canvas/scene.py

    r11180 r11181  
    66import logging 
    77from operator import attrgetter 
     8 
     9from xml.sax.saxutils import escape 
    810 
    911from PyQt4.QtGui import QGraphicsScene, QPainter, QBrush, \ 
     
    9294        self.addItem(self.__anchor_layout) 
    9395 
     96        self.__channel_names_visible = True 
     97 
    9498        self.user_interaction_handler = None 
    9599 
     
    200204        return self.__anchor_layout 
    201205 
     206    def set_channel_names_visible(self, visible): 
     207        self.__channel_names_visible = visible 
     208        for link in self.__link_items: 
     209            link.setChannelNamesVisible(visible) 
     210 
     211    def channel_names_visible(self): 
     212        return self.__channel_names_visible 
     213 
    202214    def add_node_item(self, item): 
    203215        """Add a :class:`NodeItem` instance to the scene. 
     
    359371        item.setSourceItem(source_item) 
    360372        item.setSinkItem(sink_item) 
     373        fmt = "<b>{0}</b>&nbsp;-->&nbsp;<b>{1}</b>" 
     374        item.setToolTip( 
     375            fmt.format(escape(source_channel.name), 
     376                       escape(sink_channel.name)) 
     377        ) 
     378 
     379        item.setSourceName(source_channel.name) 
     380        item.setSinkName(sink_channel.name) 
     381        item.setChannelNamesVisible(self.__channel_names_visible) 
     382 
    361383        return item 
    362384 
Note: See TracChangeset for help on using the changeset viewer.