
    e                     b   d dl Zd dlmZmZmZ ej                  Zej                  Zej                  Zej                  Z	ej                  Z
ddZ G d d      Z G d d      Z eej                  d       eej                  d       eej                          eej"                  d       eej$                         eej&                         eej(                  d	       eej                  d       eej*                        d
	Z eej                  d       eej                  d       eej                          eej"                  d       eej$                         eej&                         eej(                  d	       eej                  d       eej*                        d
	Z G d de
      Zy)    N)QtCoreQtGui	QtWidgetsc                     t         j                  j                  |       }t               }|j	                  |       d|v r)|j                  t        j                  j                         d|v r|j                  d       |S )z=
    Return a QTextCharFormat with the given attributes.
    bolditalicT)
pg	functionsmkColorQTextCharFormatsetForegroundsetFontWeightQFontWeightBoldsetFontItalic)colorstyle_color_formats       ;/usr/lib/python3/dist-packages/pyqtgraph/examples/syntax.pyformatr      sh     \\!!%(FG&!ell//05d#N    c                   X    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZy)LightThemeColorsz#B71C1Cz#FCE4ECz#4A148Cz#311B92z#1A237Ez#0D47A1z#01579Bz#006064z#004D40z#1B5E20z#33691Ez#827717z#F57F17z#FF6F00z#E65100z#BF360Cz#3E2723z#212121z#263238N__name__
__module____qualname__RedPinkPurple
DeepPurpleIndigoBlue	LightBlueCyanTealGreen
LightGreenLimeYellowAmberOrange
DeepOrangeBrownGreyBlueGrey r   r   r   r      a    
CDFJFDIDDEJDFEFJEDHr   r   c                   X    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZy)DarkThemeColorsz#F44336z#F48FB1z#CE93D8z#B39DDBz#9FA8DAz#90CAF9z#81D4FAz#80DEEAz#80CBC4z#A5D6A7z#C5E1A5z#E6EE9Cz#FFF59Dz#FFE082z#FFCC80z#FFAB91z#BCAAA4z#EEEEEEz#B0BEC5Nr   r3   r   r   r6   r6   5   r4   r   r6   r   r   )	keywordoperatorbracedefclassstringstring2commentselfnumbersc                   J    e Zd ZdZg dZg dZg dZd Zed        Z	d Z
d Zy	)
PythonHighlighterz0Syntax highlighter for the Python language.
    )"andassertbreakclasscontinuedefdelelifelseexceptexecfinallyforfromglobalifimportinislambdanotorpassprintraisereturntrywhileyieldNoneTrueFalseasyncawait)=z==z!=<z<=>z>=z\+-z\*/z//z\%z\*\*z\+=z-=z\*=z/=z\%=z\^z\|z\&z\~z>>z<<)z\{z\}z\(z\)z\[z\]c                    t         j                  | |       t        d      ddf| _        t        d      ddf| _        g }|t
        j                  D cg c]
  }d|z  ddf c}z  }|t
        j                  D cg c]
  }d	|z  dd
f c}z  }|t
        j                  D cg c]
  }d	|z  ddf c}z  }|g dz  }|D cg c]  \  }}}t        |      ||f c}}}| _	        y c c}w c c}w c c}w c c}}}w )Nz'''   r<   z"""   z\b%s\br   r7   z%sr8   r9   )	)z\bself\br   r>   )z\bdef\b\s*(\w+)rj   r:   )z\bclass\b\s*(\w+)rj   r:   )z\b[+-]?[0-9]+[lL]?\br   r?   )z\b[+-]?0[xX][0-9A-Fa-f]+[lL]?\br   r?   )z0\b[+-]?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\br   r?   )z"[^"\\]*(\\.[^"\\]*)*"r   r;   )z'[^'\\]*(\\.[^'\\]*)*'r   r;   )z#[^\n]*r   r=   )
QSyntaxHighlighter__init__QRegExp
tri_single
tri_doublerA   keywords	operatorsbracesrules)	r>   documentrt   wobpatindexfmts	            r   rm   zPythonHighlighter.__init__   s*   ##D(3
 #5>1i8"5>1i8 	,557 q=!Y/ 7 	7,668 19a, 8 	8,335 19a) 5 	5 	 
 	
6 056 6+3s s|UC0 6
E785<6s   C%9C* C/C4c                 x    t         j                  j                         }|j                  d      rt        S t
        S )NdarkMode)r   QApplicationinstancepropertyDARK_STYLESLIGHT_STYLES)r>   apps     r   styleszPythonHighlighter.styles   s,    $$--/!ll:6{HLHr   c                    | j                   D ]  \  }}}|j                  |d      }| j                  |   }|dk\  s.|j                  |      }t	        |j                  |            }| j                  |||       |j                  |||z         }|dk\  rY | j                  d        | j                  |g| j                   }|s | j                  |g| j                   }yy)z>Apply syntax highlighting to the given block of text.
        r   N)rt   indexInr   poslencap	setFormatsetCurrentBlockStatematch_multilinero   rp   )r>   text
expressionnthr   rz   lengthin_multilines           r   highlightBlockz PythonHighlighter.highlightBlock   s     (,zz 		A#JV&&tQ/E[[(F1*"s+Z^^C01uff5"**4@ 1*			A 	!!!$ ,t++DC4??C/4//GtGL r   c                    | j                         |k(  rd}d}n!|j                  |      }|j                         }|dk\  r|j                  |||z         }||k\  r+||z
  |z   |j                         z   }| j                  d       n"| j                  |       t	        |      |z
  |z   }| j                  ||| j                  |          |j                  |||z         }|dk\  r| j                         |k(  ryy)ar  Do highlighting of multi-line strings. ``delimiter`` should be a
        ``QRegExp`` for triple-single-quotes or triple-double-quotes, and
        ``in_state`` should be a unique integer to represent the corresponding
        state changes when inside those strings. Returns True if we're still
        inside a multi-line string when this function is finished.
        r   TF)previousBlockStater   matchedLengthr   r   r   r   currentBlockState)	r>   r   	delimiterin_stater   startaddendr   s	            r   r   z!PythonHighlighter.match_multiline   s    ""$0EC %%d+E))+C qj##D%#+6Cczus*Y-D-D-FF))!, ))(3TU*S0NN5&$++e*<=%%dEFN;E qj" !!#x/r   N)r   r   r   __doc__rq   rr   rs   rm   r   r   r   r   r3   r   r   rA   rA   f   sC    H
IF/6b I IH,&r   rA   ) )	pyqtgraphr	   pyqtgraph.Qtr   r   r   rn   r   QColorr   rl   r   r   r6   r%   r    r"   r$   r-   r#   r)   r(   r   r   rA   r3   r   r   <module>r      s    1 1
..	''--   . 0 &++V4'++V4$++,'..7%++,&112&,,h7#((&1&++,
 o**F3**F3O**+--v6_**+o001o++X6?''0o**+
Q* Qr   