
    e                     f    d dl mZ d dl mZ d dlmZmZmZ ddlmZ ddl	m	Z	 dgZ
 G d de	e      Zy	)
   )	functions)getConfigOption)QtCore	QtWidgetsQtGui   )GraphicsWidget)GraphicsWidgetAnchor	LabelItemc                   B    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zy)r   z
    GraphicsWidget displaying text.
    Used mainly as axis labels, titles, etc.
    
    Note: To display text inside a scaled view (ViewBox, PlotWidget, etc) use TextItem
    Nc                 *   t        j                  | |       t        j                  |        t        j                  |       | _        d dd| _        | j                  j                  |       i | _        | j                  |       | j                  |       y )Ncenter)colorjustify)r	   __init__r
   r   QGraphicsTextItemitemoptsupdate	_sizeHintsetTextsetAngle)selftextparentangleargss        C/usr/lib/python3/dist-packages/pyqtgraph/graphicsItems/LabelItem.pyr   zLabelItem.__init__   st    f-%%d+//5	
	 			Te    c                 "    || j                   |<   y)zCSet default text properties. See setText() for accepted parameters.N)r   )r   attrvalues      r   setAttrzLabelItem.setAttr   s    		$r   c                    || _         | j                  }|D ]
  }||   ||<    g }| j                  d   }|t        d      }t        j                  |      }|j                  d|j                  t        j                  j                  j                        z          d|v r|j                  d|d   z          d|v r|j                  d|d   z          d	|v r$|d	   d
v r|j                  dd	dd
|d	      z          d|v r$|d   d
v r|j                  dddd
|d      z          ddj                  |      d|d}| j                  j                  |       | j                          | j                  d       | j!                          y)a   Set the text and text properties in the label. Accepts optional arguments for auto-generating
        a CSS style string:

        ==================== ==============================
        **Style Arguments:**
        family               (str) example: 'Cantarell'
        color                (str) example: '#CCFF00'
        size                 (str) example: '8pt'
        bold                 (bool)
        italic               (bool)
        ==================== ==============================
        r   N
foregroundzcolor: familyzfont-family: sizezfont-size: bold)TFzfont-weight: normalitaliczfont-style: z<span style='z; z'>z</span>)r   r   r   fnmkColorappendnamer   QColor
NameFormatHexArgbjoinr   setHtml	updateMinresizeEventupdateGeometry)r   r   r   r   koptlistr   fulls           r   r   zLabelItem.setText#   st    	yy 	A1gDG	 		'"=#L1E

5!y5::ell.E.E.M.M#NNOtNN?T(^;<T>NN=4<78T>d6lm;NN?6-J4PV<-XXYtX- ?NN>((,KDQYN,[[\/3yy/A4H		$r   c                    | j                   j                  dd       | j                         }| j                  | j                   t	        j
                  dd            | j                  | j                   t	        j
                  dd            z
  }| j                         }| j                  d   dk(  r|j                         dk7  r|j                  |j                                |j                         dk  r!|j                  |j                                n|j                         dkD  r|j                  |j                                n| j                  d   dk(  r |j!                  |j#                                n| j                  d   dk(  r|j                         dk7  r|j%                  |j'                                |j                         dk  r |j                  |j                                n2|j                         dkD  r|j                  |j                                | j                   j                  |j)                         | j                         j)                         z
         | j+                          y )N    r   r   leftr   right)r   setPositemRectmapFromItemr   QPointFrectr   xmoveLeftr<   ymoveToptop
moveBottombottom
moveCenterr   	moveRightr=   topLeftr4   )r   evboundsr<   rB   s        r   r5   zLabelItem.resizeEventK   s    			1		6>>!A+>?$BRBRSWS\S\^d^l^lmnop^qBrryy{99Y6)vvx1}		,vvx!|txxz*A!!$++-0YYy!X-dkkm, YYy!W,vvx1}  .vvx!|!!$++-0Atxxz* 			)DMMO,C,C,EEFr   c                     || _         | j                  j                          | j                  j                  |       | j	                          y N)r   r   resetTransformsetRotationr4   )r   r   s     r   r   zLabelItem.setAngleo   s5    
		  "		e$r   c                 f   | j                         }| j                  |j                                | j                  |j	                                t
        j                  j                  j                  |j                         |j	                         ft
        j                  j                  j                  |j                         |j	                         ft
        j                  j                  j                  dt
        j                  j                  j                  di| _        | j                          y )N)rT   )r;   r;   )r?   setMinimumWidthwidthsetMinimumHeightheightr   QtSizeHintMinimumSizePreferredSizeMaximumSizeMinimumDescentr   r6   )r   rN   s     r   r4   zLabelItem.updateMinv   s    V\\^,fmmo. II**V\\^V]]_,MII,,v||~v}}.OII**HII--v	
 	r   c                     || j                   vrt        j                  dd      S t        j                  | j                   |    S )Nr;   )r   r   QSizeF)r   hint
constraints      r   sizeHintzLabelItem.sizeHint   s7    t~~%==A&&}}dnnT233r   c                 h    | j                   j                  | j                   j                               S rP   )r   mapRectToParentboundingRect)r   s    r   r?   zLabelItem.itemRect   s$    yy(()?)?)ABBr   ) Nr;   )__name__
__module____qualname____doc__r   r#   r   r5   r   r4   rc   r?    r   r   r   r   	   s2     &P"H4
Cr   N) r   r+   r   rY   r   r   r   r	   r
   __all__r   rl   r   r   <module>ro      s1      ) ) * 6-@C$n @Cr   