
    %
iUQ                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ d Zej        j        j        Z G d d          Z G d d	e          Z G d
 de	j                  Z G d d          Z G d dej        e          Zd dlZ G d dej        j        j        e          ZeZ G d dej                  Z d Z!d Z"d Z#e$dk    r e#             dS dS )    N)appwindow)docview)scintillaconc                     d S N )msgs    C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\pythonwin/pywin/framework/winout.py<lambda>r   "   s    D     c                       e Zd ZdZdZdZdS )flagsr         N)__name__
__module____qualname__WQ_NONEWQ_LINEWQ_IDLEr	   r   r   r   r   +   s        GGGGGr   r   c                       e Zd Zd Zd ZdS )WindowOutputDocumentc                     dS Nr   r	   selfs    r   SaveModifiedz!WindowOutputDocument.SaveModified3   s    qr   c                     t          j        dd           	 |                     |           n/# t          $ r"}t          j        d|z             Y d }~dS d }~ww xY wt          j        d           dS )NzSaving file...r   z!Error - could not save file

%sr   Ready)win32uiSetStatusTextSaveFileOSError
MessageBox)r   fileNamedetailss      r   OnSaveDocumentz#WindowOutputDocument.OnSaveDocument6   s    .222	MM(#### 	 	 	FPQQQ11111	 	g&&&qs   - 
AAAN)r   r   r   r   r(   r	   r   r   r   r   2   s2              r   r   c                   .    e Zd ZddZd Zd Zd Zd ZdS )WindowOutputFrameNc                     t           j                            | |           |                     | j        t
          j                   |                     | j        t
          j                   d S r   )r   MDIChildWnd__init__HookMessage
OnSizeMovewin32conWM_SIZEWM_MOVE)r   wnds     r   r-   zWindowOutputFrame.__init__B   sW    ##D#...(*:;;;(*:;;;;;r   c                 T    |j         | _         | j                            ||||          S r   )template_obj_	LoadFrame)r   
idResourcestyle	wndParentcontexts        r   r7   zWindowOutputFrame.LoadFrameG   s(    (z##Jy'JJJr   c           
      P   | j                             |          }| j        j        r| j        j        d         | j        j        d         k    rYt	          j        | j        j                  }|d         |d         |d         |d         ||d         |d         |d         |d         f	}|S )	Nr   r   r                  )r6   PreCreateWindowr5   defSizer   RectToCreateStructRect)r   ccrects      r   rB   z!WindowOutputFrame.PreCreateWindowK   s    Z''++M!	N%a(DM,A!,DDD-dm.CDDDA1r!ubeT2a5"Q%A1MB	r   c                     |                                  }|                    |                                           | j        _        d S r   )	GetParentScreenToClientGetWindowRectr5   rC   )r   r
   	mdiClients      r   r/   zWindowOutputFrame.OnSizeMoveU   s=     NN$$	 ) 8 89K9K9M9M N Nr   c                 :    | j                             |            dS r   )r5   OnFrameDestroyr   messages     r   	OnDestroyzWindowOutputFrame.OnDestroy\   s    $$T***qr   r   )r   r   r   r-   r7   rB   r/   rP   r	   r   r   r*   r*   A   sj        < < < <
K K K  O O O    r   r*   c                   J    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S )WindowOutputViewImplc                     t          j        d          | _        |                                                                 | _        d S )Nz\W*File "(.*)", line ([0-9]+))recompilepatErrorMessageGetDocumentGetDocTemplater5   r   s    r   r-   zWindowOutputViewImpl.__init__b   s8    !z*JKK((**99;;r   c                 P    |                      | j        t          j                   d S r   )r.   OnRClickr0   WM_RBUTTONDOWNr   s    r   HookHandlersz!WindowOutputViewImpl.HookHandlersf   s#    (?@@@@@r   c                 :    | j                             |            d S r   )r5   OnViewDestroyr   r
   s     r   rP   zWindowOutputViewImpl.OnDestroyj   s    ##D)))))r   c                 X    |                                   |                     d           d S N)RestoreKillBufferSetSelr   s    r   OnInitialUpdatez$WindowOutputViewImpl.OnInitialUpdatem   s'       Br   c                     g }t           j        t           j        z  }|                    |t          j        df           |                    |t          j        df           |S )Nz&Copyz&Select all)r0   	MF_STRING
MF_ENABLEDappendr!   ID_EDIT_COPYID_EDIT_SELECT_ALL)r   retr   s      r   GetRightMenuItemsz&WindowOutputViewImpl.GetRightMenuItemsq   sT    "X%88

E7/9:::

E75}EFFF
r   c                     |                                  }t          j                    }|D ]$}t          |t                    s|f} |j        |  %|                    |d                    dS )Nr>   r   )rm   r!   CreatePopupMenu
isinstancetuple
AppendMenuTrackPopupMenu)r   params
paramsListmenuappendParamss        r   rZ   zWindowOutputViewImpl.OnRClick{   sx    ++--
&((& 	+ 	+LlE22 / ,DO\***F1I&&&qr   c                    ddl m} |                                 }|d d         dk    r	 dd l}dd l}t          ||                    d          dz   d                                                    }t          j	        d           ddl m
} |                    |d	         d
         |j        |d	         d                    dS # |j        $ r'}t          j	        d|j        z             Y d }~dS d }~w t          j	        d           Y nxY w| j                            |          }|L|                                 }	|	dk    r2|                     |	dz
            }| j                            |          }||                    d          }
|
d         dk    rt          j	        d           dS |                    d	          }|
}|                    |
          }
|
t          j	        d|z  d           dS t          j	        d|z   dz   |
z   d           |                    |
t+          |                    st          j	        d|
z             dS dS dS )Nr   )scriptutils   zcom_error: r   :z!Opening help file on OLE error...)helpr   r=      z&The help file could not be opened - %sz9Line is a COM error, but no WinHelp details can be parsed<zCan not load this filezCan't locate the file '%s'zJumping to line z	 of file zCould not open %s) ry   GetLinewin32apir0   evalfindstripr!   r"   r|   OpenHelpFileHELP_CONTEXTerrorstrerrorrV   matchLineFromChargroupLocatePythonFileJumpToDocumentint)r   ry   liner   r0   detr|   r'   matchResultlineNor&   lineNoStringfileNameSpecs                r   HandleSpecialLinez&WindowOutputViewImpl.HandleSpecialLine   s   !!!!!!||~~9%%4		# 2 4 45;;==>>%&IJJJ""""""!!#a&)X-BCF1INNNq>   %<w?OO   qqqqq%O     *0066&&((Fzz||FQJ//"288>>""((++H{c!!%&>???q*0033'&77AA#)4Eq   1%&5ChNPQ   #11(C<M<MNN )*=*HIII1qqs   BC 
DC--Dc                 6    | j                             |          S r   )r5   writer_   s     r   r   zWindowOutputViewImpl.write   s    }""3'''r   c                 :    |D ]}|                      |           d S r   r   r   linesr   s      r   
writelineszWindowOutputViewImpl.writelines   0     	 	DJJt	 	r   c                 8    | j                                          d S r   )r5   flushr   s    r   r   zWindowOutputViewImpl.flush   s    r   N)r   r   r   r-   r\   rP   re   rm   rZ   r   r   r   r   r	   r   r   rR   rR   a   s        < < <A A A* * *      ; ; ;z( ( (      r   rR   c                   J    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S )WindowOutputViewRTFc                 z    t           j                            | |           t                              |            d S r   )r   RichEditViewr-   rR   r   docs     r   r-   zWindowOutputViewRTF.__init__   s5    %%dC000%%d+++++r   c                 t    t                               |            t          j                            |           S r   )rR   re   r   r   r   s    r   re   z#WindowOutputViewRTF.OnInitialUpdate   s-    ,,T222#33D999r   c                 |    t                               | |           t          j                            | |           d S r   )rR   rP   r   r   r_   s     r   rP   zWindowOutputViewRTF.OnDestroy   s7    &&tS111&&tS11111r   c                     t                               |            |                     | j        t          j                   d S r   )rR   r\   r.   OnLDoubleClickr0   WM_LBUTTONDBLCLKr   s    r   r\   z WindowOutputViewRTF.HookHandlers   s8    ))$///,h.GHHHHHr   c                 2    |                                  rdS dS Nr   r   r   )r   rt   s     r   r   z"WindowOutputViewRTF.OnLDoubleClick   s     !!## 	1qr   c                     t          | j        j                  r3|                     t          j        | j                   g | j        _        d S d S r   )lenr5   
killBufferStreamInr0   SF_RTF_StreamRTFInr   s    r   rc   z%WindowOutputViewRTF.RestoreKillBuffer   sJ    t}'(( 	*MM(/4+<===')DM$$$	* 	*r   c                 P    |                      t          j        | j                   d S r   )	StreamOutr0   SF_RTFNOOBJS_StreamRTFOutr   s    r   SaveKillBufferz"WindowOutputViewRTF.SaveKillBuffer   s"    x,d.@AAAAAr   c                 D    | j         j                            |           dS r   )r5   r   ri   )r   datas     r   r   z!WindowOutputViewRTF._StreamRTFOut   s      ''---qr   c                     	 | j         j        d         }| j         j                            |           |t          |          k     rt	          d           |S # t
          $ r Y d S w xY w)Nr   z'Warning - output buffer not big enough!)r5   r   remover   print
IndexError)r   bytesitems      r   r   z WindowOutputViewRTF._StreamRTFIn   sv    	=+A.DM$++D111s4yy  ?@@@K 	 	 	44	s   AA 
A%$A%c                 Z    |                      d           |                     |           d S ra   )rd   
ReplaceSel)r   strs     r   dowritezWindowOutputViewRTF.dowrite   s)    Br   N)r   r   r   r-   re   rP   r\   r   rc   r   r   r   r   r	   r   r   r   r      s        , , ,: : :2 2 2I I I  
* * *
B B B        r   r   c                   L    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
dd
Zd ZdS )WindowOutputViewScintillac                     t           j        j        j                            | |           t
                              |            d S r   )pywin	scintillaviewCScintillaViewr-   rR   r   s     r   r-   z"WindowOutputViewScintilla.__init__  s:    +44T3???%%d+++++r   c                     t           j        j        j                            |            |                     d           t                              |            d S )Nr=   )r   r   r   r   re   SCISetMarginWidthrR   r   s    r   re   z)WindowOutputViewScintilla.OnInitialUpdate  sL    +;;DAAAq!!!,,T22222r   c                     t                               | |           t          j        j        j                            | |           d S r   )rR   rP   r   r   r   r   r_   s     r   rP   z#WindowOutputViewScintilla.OnDestroy  s<    &&tS111+55dC@@@@@r   c                     t                               |            t          j        j        j                            |            |                                                     | j        t          j
                   d S r   )rR   r\   r   r   r   r   rH   
HookNotifyOnScintillaDoubleClickr   SCN_DOUBLECLICKr   s    r   r\   z&WindowOutputViewScintilla.HookHandlers  si    ))$///+88>>>##')E	
 	
 	
 	
 	
r   c                 .    |                                   d S r   r   )r   stdextras      r   r   z0WindowOutputViewScintilla.OnScintillaDoubleClick!  s         r   c                     t          | j        j                  dv s
J d            | j        j        r%|                     | j        j        d                    g | j        _        d S )N)r   r   zUnexpected killbuffer contentsr   )r   r5   r   
SCIAddTextr   s    r   rc   z+WindowOutputViewScintilla.RestoreKillBuffer'  sb    4=+,,6668X666=# 	9OODM4Q7888#%   r   c                 H    |                      dd          g| j        _        d S )Nr   )GetTextRanger5   r   r   s    r   r   z(WindowOutputViewScintilla.SaveKillBuffer-  s%    $($5$5a$<$<#=   r   c                     |                                  }||                                 d         k    }|                     ||           |r)|                     |                                             d S d S )Nr   )GetTextLengthGetSelSCIInsertTextrd   )r   r   endatEnds       r   r   z!WindowOutputViewScintilla.dowrite0  sv      ""t{{}}Q''3$$$ 	.KK**,,-----	. 	.r   r   c                 f    |rt           j        }nt           j        }|                     |           d S r   )r   SC_WRAP_WORDSC_WRAP_NONESCISetWrapMode)r   bWrapOn	wrap_modes      r   SetWordWrapz%WindowOutputViewScintilla.SetWordWrap7  s6     	2$1II$1II&&&&&r   c                     d S r   r	   r   s    r   _MakeColorizerz(WindowOutputViewScintilla._MakeColorizer>  s    tr   N)r   )r   r   r   r-   re   rP   r\   r   rc   r   r   r   r   r	   r   r   r   r     s        , , ,3 3 3
A A A
 
 
! ! !& & &> > >. . .' ' ' '    r   r   c                       e Zd ZdZdZddej        dddddfdZd ZddZ	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd ZdS )WindowOutputzLooks like a general Output Window - text can be written by the 'write' method.
    Will auto-create itself on first write, and also on next write after being closedr   Nc	                    |t           }|t          }|t          }t          j                            | t          j        |||           |                     d           t          j	                    
                    |            || _        d| _        g | _        || _        || _        || _        d| _        d| _        t'          |t(                    r-|| _        t-          j        |          | _        | j        | _        nd| _        || _        d| _        t7          j        d          | _        t=          j                    | _         d| _!        | "                                 dS )a  init the output window -
        Params
        title=None -- What is the title of the window
        defSize=None -- What is the default size for the window - if this
                        is a string, the size will be loaded from the ini file.
        queueing = flags.WQ_LINE -- When should output be written
        bAutoRestore=1 -- Should a minimized window be restored.
        style -- Style for Window, or None for default.
        makeDoc, makeFrame, makeView -- Classes for frame, view and window respectively.
        Nz'
Output

Text Documents (*.txt)
.txt


r   r   )#r   r*   r   r   DocTemplater-   r!   IDR_PYTHONTYPESetDocStringsGetAppAddDocTemplatewriteQueueingerrorCantRecreater   r9   bAutoRestoretitle	bCreatinginterruptCountrp   r   iniSizeSectionr   LoadWindowSizerC   
loadedSizecurrentViewqueueQueueoutputQueuer   GetCurrentThreadIdmainThreadIdidleHandlerSetSetIdleHandler)	r   r   rC   queueingr   r9   makeDoc	makeFramemakeViews	            r   r-   zWindowOutput.__init__O  sK   * ?*G)I0H$$'('9h	
 	
 	
 	KLLL''---%!"
(
gs## 	#")D-g66DL"lDOO"&D"DL ;r??$799r   c                 .    |                                   d S r   )Closer   s    r   __del__zWindowOutput.__del__  s    

r   c                     d| _         |r|| _        |r|| _        |                                 }|d S |                                | _        d| _         | j        r|                    | j                   d S d S Nr   r   )r   r   r9   OpenDocumentFileGetFirstViewr   SetTitle)r   r   r9   r   s       r   CreatezWindowOutput.Create  s     	DJ 	DJ##%%;F++--: 	%LL$$$$$	% 	%r   c                     |                                   	 | j                                        }n# t          t          j        f$ r Y d S w xY w|                                 d S r   )RemoveIdleHandlerr   rH   AttributeErrorr!   r   DestroyWindow)r   parents     r   r  zWindowOutput.Close  sp       	%//11FF. 	 	 	FF	s   0 A
	A
c                     || _         | j        r3| j                                                            | j                    d S d S r   )r   r   rW   r  )r   r   s     r   r  zWindowOutput.SetTitle  sL    
 	@((**33DJ?????	@ 	@r   c                 F    | j                                          d | _         d S r   )r   r   )r   r   s     r   r^   zWindowOutput.OnViewDestroy  s%    '')))r   c                     | j         rA|                                d         }| j        |k    rt          j        | j         |           d S d S d S )Nr}   )r   GetWindowPlacementr   r   SaveWindowSize)r   framenewSizes      r   rM   zWindowOutput.OnFrameDestroy  sa     	A..003G'))"4#6@@@@@		A 	A *)r   c                     | j         sCt          d           t          j                                        | j                   d| _         d S d S )NzIdle handler set
r   )r  debugr!   r   AddIdleHandlerQueueIdleHandlerr   s    r   r  zWindowOutput.SetIdleHandler  sS    " 	$&'''N++D,ABBB"#D	$ 	$r   c                     | j         rVt          d           t          j                                        | j                  dk    rt          d           d| _         d S d S )NzIdle handler reset
r   zError deleting idle handler
)r  r  r!   r   DeleteIdleHandlerr  r   s    r   r  zWindowOutput.RemoveIdleHandler  sg     	$()))~11$2GHHAMM5666"#D		$ 	$r   c                    | j         rt          d           dS 	 t          j                                                     |                                  dS # t          j        t          f$ r d| _         t          d           Y dS w xY w)NzError = not trying againr   r   z$Winout can not recreate the Window!
)r   r  r!   GetMainFrameGetSafeHwndr  r   r  r   s    r   RecreateWindowzWindowOutput.RecreateWindow  s    ! 	,---1	 ""..000KKMMM1~. 	 	 	%&D"9:::11	s   9A ,BBc                     	 |                      d          }|rd| _        nW# t          $ rJ | xj        dz  c_        | j        dk    r+t          j        d          | _        t          d           d}n Y nw xY w| S )N   r   r   r   zInterrupted.)
QueueFlushr   KeyboardInterruptr   r   r   r   )r   handlercountbEmptys       r   r  zWindowOutput.QueueIdleHandler  s    	__R((F (&'#  
	 
	 
	 1$"Q&&#(;r?? n%%% 
	 zs   ! AA54A5c                     	 | j         | j                                         rdS n# t          j        t          f$ r Y nw xY wdS r   )r   IsWindowr!   r   r  r   s    r   NeedRecreateWindowzWindowOutput.NeedRecreateWindow  s]    	+0@0I0I0K0K+qM
 	 	 	 D		
 qs    % >>c                 ~    | j         rdS |                                 sdS | j        r|                                 rdS dS r  )r   r/  r   r%  r   s    r   CheckRecreateWindowz WindowOutput.CheckRecreateWindow  sS    > 	1&&(( 	1 	""$$ qqr   c                    | j         rdS g }d}||dk    rV	 | j                                        }|                    |           n# t          j        $ r d}Y nw xY w||dz  }|P|dk    Vt          |          dk    re|                                 st          d           dS t          j
                     | j                            d                    |                     |S )Nr   r   z:Recreate failed!
r   )r   r   
get_nowaitri   r   Emptyr   r1  r  r!   PumpWaitingMessagesr   r   join)r   maxitemsrcr   s        r   r(  zWindowOutput.QueueFlush  s    > 	1kS1WW'2244T"""";    q kS1WW u::??++-- +,,,q')))$$RWWU^^444	s   .A AAc                    | j                             |           t          j                    | j        k    rnr| j        t          j        k    r2|                    d          }|dk    r| 	                                 d S n+| j        t          j
        k    r| 	                                 d S 	 t          j                                        t          j                   d S # t          j        $ r t          j        |           Y d S w xY w)N
r   )r   putr   r   r   r   r   r   rfindr(  r   r!   r#  PostMessager0   WM_USERr   OutputDebugString)r   rO   poss      r   HandleOutputzWindowOutput.HandleOutput  s   W%%%&((D,===5=00--%%Caxx!!!  5=00OOF	0 ""..      } 	0 	0 	0&w//////	0s   +0C #DDc                 :    |D ]}|                      |           d S r   r   r   s      r   r   zWindowOutput.writelines%  r   r   c                 0    |                      |           d S r   )rB  rN   s     r   r   zWindowOutput.write)  s    '"""""r   c                 .    |                                   d S r   )r(  r   s    r   r   zWindowOutput.flush,  s    r   c                 8    | j                                          d S r   )r   r   r   s    r   r   zWindowOutput.HandleSpecialLine/  s    **,,,,,r   )NNr   )r   r   r   __doc__	softspacer   r   r-   r	  r  r  r  r^   rM   r  r  r%  r  r/  r1  r(  rB  r   r   r   r   r	   r   r   r   r   I  sv       Y Y I 3 3 3 3j  % % % %  @ @ @
     A A A$ $ $$ $ $    (	 	 	     00 0 04  # # #  - - - - -r   r   c                  .    t           |d<   t          | i |S )Nr  )r   r   )argskws     r   RTFWindowOutputrL  3  s    (BzN$$$$r   c                     t          d          D ]?}|                     dt          j                    z             t          j        d           @d S )Nr>   zHi from thread %d
d   )ranger   r   r   Sleep)ois     r   thread_testrS  8  sU    1XX  	%)D)F)FGHHHs r   c                  h   t          t          j                  } |                     d           dd l}t          d          D ]3}|                     d           |                    t          | f           4t          d          D ]+}|                     d           t          j	        d           ,| S )N)r  zFirst bit of text
r   r>   zHello from the main thread
r   2   )
r   r   r   r   _threadrO  	start_newrS  r   rP  )wrV  rR  s      r   testrY  >  s    em,,,AGG!"""NNN1XX - -	.///+t,,,,1XX  	.///rHr   __main__)%r   rT   pywin.scintilla.documentr   r   r0   r!   pywin.frameworkr   r   	pywin.mfcr   pywin.scintillar   r  r   documentCScintillaDocumentWindowOutputDocumentParentr   r   r,   r*   rR   r   r   pywin.scintilla.viewr   r   r   WindowOutputViewr   r   rL  rS  rY  r   r	   r   r   <module>rd     sK  .  				        ' ' ' ' ' ' ' '       ( ( ( ( ( ( #_5H            5       *   @m m m m m m m m`1 1 1 1 1'.0D 1 1 1h    7 7 7 7 7	O')=7 7 7t - g- g- g- g- g-7& g- g- g-T% % %
     zDFFFFF r   