
    e                     D    d dl mZmZ dgZ G d dej                        Zy)   )QtCore	QtWidgetsFeedbackButtonc                      e Zd ZdZ ej
                  eee      Z ej
                  eee      Z ej
                  eee      Z	 ej
                         Z
d ZddZddZddZddZd Zdd	Zd
 Zd ZddZddZddZy)r   zc
    QPushButton which flashes success/failure indication for slow or asynchronous procedures.
    c                    t        j                  j                  | g|  d | _        | j	                         | _        | j                         | _        | j                         | _        d| _	        | j                  j                  | j                         | j                  j                  | j                         | j                  j                  | j                          | j"                  j                  | j$                         y )NT)r   QPushButton__init__	origStyletextorigText
styleSheettoolTiporigTiplimitedTimesigCallSuccessconnectsuccesssigCallFailurefailuresigCallProcess
processingsigResetreset)selfargss     B/usr/lib/python3/dist-packages/pyqtgraph/widgets/FeedbackButton.pyr	   zFeedbackButton.__init__   s    &&t3d3		*||~ 	##DLL1##DLL1##DOO4djj)    Nc                 Z    |r| j                  |||       y| j                  |||       y)zCalls success() or failure(). If you want the message to be displayed until the user takes an action, set limitedTime to False. Then call self.reset() after the desired action.Threadsafe.r   N)r   r   )r   r   messagetipr   s        r   feedbackzFeedbackButton.feedback%   s)    LL#;L?LL#;L?r   c                 &   t         j                  j                         t         j                  j	                         j                         k(  }|r'| j                  d       | j                  d|||       y| j                  j                  |||       y)a  Displays specified message on button and flashes button green to let user know action was successful. If you want the success to be displayed until the user takes an action, set limitedTime to False. Then call self.reset() after the desired action. Threadsafe.Tz#0F0r   N)
r   QThreadcurrentThreadQCoreApplicationinstancethread
setEnabled
startBlinkr   emitr   r    r!   r   isGuiThreads        r   r   zFeedbackButton.success,   l    nn2248O8O8X8X8Z8a8a8ccOOD!OOFGSkOJ$$Wc;?r   c                 &   t         j                  j                         t         j                  j	                         j                         k(  }|r'| j                  d       | j                  d|||       y| j                  j                  |||       y)zDisplays specified message on button and flashes button red to let user know there was an error. If you want the error to be displayed until the user takes an action, set limitedTime to False. Then call self.reset() after the desired action. Threadsafe. Tz#F00r   N)
r   r$   r%   r&   r'   r(   r)   r*   r   r+   r,   s        r   r   zFeedbackButton.failure6   r.   r   c                    t         j                  j                         t         j                  j	                         j                         k(  }|rY| j                  d       | j                  |d       | j                  |d       |rt        j                  j                          yy| j                  j                  |||       y)z]Displays specified message on button to let user know the action is in progress. Threadsafe. FT	temporaryN)r   r$   r%   r&   r'   r(   r)   setText
setToolTipr   QApplicationprocessEventsr   r+   )r   r    r!   r6   r-   s        r   r   zFeedbackButton.processing@   s    nn2248O8O8X8X8Z8a8a8ccOOE"LLDL1OOC4O0&&446  $$Wc=Ar   c                 B   t         j                  j                         t         j                  j	                         j                         k(  }|r8d| _        | j                          | j                          | j                          y| j                  j                          y)z=Resets the button to its original text and style. Threadsafe.TN)r   r$   r%   r&   r'   r(   r   r3   r4   setStyleSheetr   r+   )r   r-   s     r   r   zFeedbackButton.resetM   sk    nn2248O8O8X8X8Z8a8a8cc#DLLNOO MM r   c                    | j                  | j                                || j                  |d       | j                  |d       d| _        d|z  | _        || _        | j                          |rUt        j                  j                  d| j                         t        j                  j                  d| j                         y y )NTr1       z"QPushButton {background-color: %s}i  i'  )setFixedHeightheightr3   r4   countindStyler   borderOnr   QTimer
singleShot)r   colorr    r!   r   s        r   r*   zFeedbackButton.startBlinkX   s     	DKKM*LLDL1t,
<uD&MM$$T4<<8MM$$UDOO< r   c                     | j                  | j                  d       | j                  s| j                  dk  r+t        j
                  j                  d| j                         y y )NTr1   r   d   )r8   r>   r   r=   r   r@   rA   	borderOffr   s    r   r?   zFeedbackButton.borderOnj   sI    4==D9tzzA~MM$$S$..9  .r   c                     | j                          | xj                  dz  c_        | j                  dk\  r| j                  ry t        j                  j                  d| j                         y )N   r      )r8   r=   r   r   r@   rA   r?   rF   s    r   rE   zFeedbackButton.borderOffp   sJ    

a
::?  T]]3r   c                 t    || j                   }t        j                  j                  | |       |s|| _         y y N)r   r   r   r3   r   r   r2   s      r   r3   zFeedbackButton.setTexty   s5    <==D%%dD1 DM r   c                 t    || j                   }t        j                  j                  | |       |s|| _         y y rK   )r   r   r   r4   rL   s      r   r4   zFeedbackButton.setToolTip   s5    <<<D((t4DL r   c                 t    || j                   }t        j                  j                  | |       |s|| _         y y rK   )r
   r   r   r8   )r   styler2   s      r   r8   zFeedbackButton.setStyleSheet   s5    =NNE++D%8"DN r   )N T)zProcessing..rP   T)NF)__name__
__module____qualname____doc__r   Signalobjectr   r   r   r   r	   r"   r   r   r   r   r*   r?   rE   r3   r4   r8    r   r   r   r      s     #V]]666:N"V]]666:N"V]]666:Nv}}H*(@@@
B	!=$:4! #r   N)Qtr   r   __all__r   r   rW   r   r   <module>rZ      s$    "
H#Y** H#r   