
    eB                     X    d dl mZ ddlmZ ddlmZ dgZ G d dej                        Z	y)    )perf_counter   )	functions)	QtWidgets
ValueLabelc                   H     e Zd ZdZd	dZd Zd Zd Zd Z fdZ	d Z
 xZS )
r   z
    QLabel specifically for displaying numerical values.
    Extends QLabel adding some extra functionality:

      - displaying units with si prefix
      - built-in exponential averaging
    c                     t         j                  j                  | |       g | _        || _        || _        || _        |d}|| _        y)a-  
        ==============      ==================================================================================
        **Arguments:**
        suffix              (str or None) The suffix to place after the value
        siPrefix            (bool) Whether to add an SI prefix to the units and display a scaled value
        averageTime         (float) The length of time in seconds to average values. If this value
                            is 0, then no averaging is performed. As this value increases
                            the display value will appear to change more slowly and smoothly.
        formatStr           (str) Optionally, provide a format string to use when displaying text. The text
                            will be generated by calling formatStr.format(value=, avgValue=, suffix=)
                            (see Python documentation on str.format)
                            This option is not compatible with siPrefix
        ==============      ==================================================================================
        Nz{avgValue:0.2g} {suffix})r   QLabel__init__valuesaverageTimesuffixsiPrefix	formatStr)selfparentr   r   r   r   s         >/usr/lib/python3/dist-packages/pyqtgraph/widgets/ValueLabel.pyr   zValueLabel.__init__   sI     	!!$/& 2I"    c                 |   t               }| j                  j                  ||f       || j                  z
  }t	        | j                        dkD  r^| j                  d   d   |k  rI| j                  j                  d       t	        | j                        dkD  r| j                  d   d   |k  rI| j                          y )Nr   )r   r   appendr   lenpopupdate)r   valuenowcutoffs       r   setValuezValueLabel.setValue)   s    nC<(t'''$++"t{{1~a'86'AKKOOA $++"t{{1~a'86'Ar   c                 2    || _         | j                          y N)r   r   )r   texts     r   setFormatStrzValueLabel.setFormatStr1   s    r   c                     || _         y r   )r   )r   ts     r   setAverageTimezValueLabel.setAverageTime5   s
    r   c                 x    t        d | j                  D              t        t        | j                              z  S )Nc              3   &   K   | ]	  }|d      yw)   N ).0vs     r   	<genexpr>z*ValueLabel.averageValue.<locals>.<genexpr>9   s     -A1Q4-s   )sumr   floatr   )r   s    r   averageValuezValueLabel.averageValue8   s*    ---c$++6F0GGGr   c                 `    | j                  | j                                t        |   |      S r   )setTextgenerateTextsuper
paintEvent)r   ev	__class__s     r   r3   zValueLabel.paintEvent<   s(    T&&()w!"%%r   c                 "   t        | j                        dk(  ry| j                         }| j                  d   d   }| j                  r!t	        j
                  || j                        S | j                  j                  ||| j                        S )Nr    r'   )r   )r   avgValuer   )	r   r   r.   r   fnsiFormatr   r   format)r   avgvals      r   r1   zValueLabel.generateText@   sr    t{{q !kk"oa ==;;s4;;77>>((sS(UUr   )Nr7   Fr   N)__name__
__module____qualname____doc__r   r   r!   r$   r.   r3   r1   __classcell__)r5   s   @r   r   r      s-    #0H&Vr   N)
timer   r7   r   r:   Qtr   __all__r
   r   r(   r   r   <module>rG      s+      .@V!! @Vr   