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

Added annotation font and color serialization.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/scheme/annotations.py

    r11200 r11202  
    44""" 
    55 
    6 from PyQt4.QtCore import QObject 
     6from PyQt4.QtCore import QObject, QString 
    77from PyQt4.QtCore import pyqtSignal as Signal 
    88from PyQt4.QtCore import pyqtProperty as Property 
     9 
     10from .utils import check_type 
    911 
    1012 
     
    3032 
    3133    def set_line(self, start_pos, end_pos): 
     34        """Set arrow lines start and end position ((x, y) tuples). 
     35        """ 
    3236        if self.__start_pos != start_pos or self.__end_pos != end_pos: 
    3337            self.__start_pos = start_pos 
     
    3640 
    3741    def start_pos(self): 
     42        """Start position. 
     43        """ 
    3844        return self.__start_pos 
    3945 
     
    4147 
    4248    def end_pos(self): 
     49        """Arrows end position (arrow head points toward the end).""" 
    4350        return self.__end_pos 
    4451 
     
    4653 
    4754    def set_geometry(self, (start_pos, end_pos)): 
     55        """Set the geometry of the arrow as a start and end position tuples 
     56        (e.g. `set_geometry(((0, 0), (100, 0))). 
     57 
     58        """ 
    4859        self.set_line(start_pos, end_pos) 
    4960 
    5061    def geometry(self): 
     62        """Return the start and end positions of the arrow. 
     63 
     64        """ 
    5165        return (self.start_pos, self.end_pos) 
    5266 
     
    5468 
    5569    def set_color(self, color): 
     70        """Set the fill color for the arrow as a string (#RGB, #RRGGBB, 
     71        #RRRGGGBBB, #RRRRGGGGBBBB format or one of SVG color keyword 
     72        names). 
     73 
     74        """ 
     75        check_type(color, (basestring, QString)) 
     76        color = unicode(color) 
    5677        if self.__color != color: 
    5778            self.__color = color 
     
    5980 
    6081    def color(self): 
     82        """Return the arrow's fill color. 
     83        """ 
    6184        return self.__color 
    6285 
     
    6891    """ 
    6992    text_changed = Signal(unicode) 
    70     font_changed = Signal(unicode) 
     93    font_changed = Signal(dict) 
    7194 
    72     def __init__(self, rect, text="", font="", anchor=None, parent=None): 
     95    def __init__(self, rect, text="", font=None, anchor=None, parent=None): 
    7396        BaseSchemeAnnotation.__init__(self, parent) 
    7497        self.__rect = rect 
    7598        self.__text = text 
    76         self.__font = font 
     99        self.__font = {} if font is None else font 
    77100        self.__anchor = anchor 
    78101 
    79102    def set_rect(self, (x, y, w, h)): 
     103        """Set the text geometry bounding rectangle 
     104        ((x, y, width, height) tuple). 
     105 
     106        """ 
    80107        rect = (x, y, w, h) 
    81108        if self.__rect != rect: 
     
    84111 
    85112    def rect(self): 
     113        """Text bounding rectangle 
     114        """ 
    86115        return self.__rect 
    87116 
     
    89118 
    90119    def set_geometry(self, rect): 
     120        """Set the text geometry (same as `set_rect`) 
     121        """ 
    91122        self.set_rect(rect) 
    92123 
     
    97128 
    98129    def set_text(self, text): 
     130        """Set the annotation text. 
     131        """ 
     132        check_type(text, (basestring, QString)) 
     133        text = unicode(text) 
    99134        if self.__text != text: 
    100135            self.__text = text 
     
    102137 
    103138    def text(self): 
     139        """Annotation text. 
     140        """ 
    104141        return self.__text 
    105142 
     
    107144 
    108145    def set_font(self, font): 
     146        """Set the annotation's font as a dictionary of font properties 
     147        (at the moment only family and size are used). 
     148 
     149            annotation.set_font({"family": "Helvetica", "size": 16}) 
     150 
     151        """ 
     152        check_type(font, dict) 
     153        font = dict(font) 
    109154        if self.__font != font: 
    110155            self.__font = font 
     
    112157 
    113158    def font(self): 
    114         return self.__font 
     159        """Return the annotation's font property dictionary. 
     160        """ 
     161        return dict(self.__font) 
    115162 
    116163    font = Property(unicode, fget=font, fset=set_font) 
Note: See TracChangeset for help on using the changeset viewer.