§
    ÷¢±jØ  ã                   ó¶  — d Z ddlZddlZddlZddlZ	  ej        ¦   «          n# ej        $ r ddlZY nw xY wddlm	Z	 ej
        j                             dddd¦  «         ddgZdd	gZeez   Ze	j        e	j        gZ G d
„ d¦  «        Z G d„ d¦  «        Zd„ Zd„ Z G d„ de¦  «        Zd„ Zd„ Zedk    r$ej        j                             eee¬¦  «         dS dS )a·  
This sample implements a simple IE Button COM server
with access to the IWebBrowser2 interface.

To demonstrate:
* Execute this script to register the server.
* Open Pythonwin's Tools -> Trace Collector Debugging Tool, so you can
  see the output of 'print' statements in this demo.
* Open a new IE instance.  The toolbar should have a new "scissors" icon,
  with tooltip text "IE Button" - this is our new button - click it.
* Switch back to the Pythonwin window - you should see:
   IOleCommandTarget::Exec called.
  This is the button being clicked.  Extending this to do something more
  useful is left as an exercise.

Contribtions to this sample to make it a little "friendlier" welcome!
é    N)Ú	axcontrolz&{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}é   ÚSetSiteÚGetSiteÚExecÚQueryStatusc                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚStubzp
    this class serves as a method stub,
    outputting debug info whenever the object
    is being called.
    c                 ó   — || _         d S ©N)Úname)Úselfr   s     úcC:\Users\johnn\AppData\Local\Programs\Python\Python311\Lib\site-packages\win32com/demos/iebutton.pyÚ__init__zStub.__init__@   s   € ØˆŒ	ˆ	ˆ	ó    c                 ó2   — t          d| j        |¦  «         d S )NzSTUB: )Úprintr   )r   Úargss     r   Ú__call__zStub.__call__C   s   € Ýˆh˜œ	 4Ñ(Ô(Ð(Ð(Ð(r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r
   r
   9   s<   € € € € € ðð ðð ð ð)ð )ð )ð )ð )r   r
   c                   óV   — e Zd ZdZeZeZej	        Z
dZdZdZdZd„ Zd„ Zd„ Zd„ Zd	„ Zd
S )ÚIEButtonz%
    The actual COM server class
    ú	IE Buttonú+An example implementation for an IE Button.Ú c                 óš   — | j         D ]B}t          | |¦  «        s0t          d|z  ¦  «         t          | |t	          |¦  «        ¦  «         ŒCd S )Nzproviding default stub for %s)Ú_public_methods_Úhasattrr   Úsetattrr
   )r   Úmethods     r   r   zIEButton.__init__T   s]   € àÔ+ð 	4ð 	4ˆFÝ˜4 Ñ(Ô(ð 4ÝÐ5¸Ñ>Ñ?Ô?Ð?Ý˜˜f¥d¨6¡l¤lÑ3Ô3Ð3øð	4ð 	4r   c                 ó¸   — g }|D ]8\  }}|t           j        t           j        z  z  }|                     ||f¦  «         Œ9|€d }n|t           j        k    rd}nd}||fS )NzIEButton NamezIEButton State)r   ÚOLECMDF_SUPPORTEDÚOLECMDF_ENABLEDÚappendÚOLECMDTEXTF_NAME)r   ÚpguidCmdGroupÚprgCmdsÚcmdtextfÚresultÚidÚflagsÚcmdtexts           r   r   zIEButton.QueryStatus[   s}   € ð ˆØ ð 	'ð 	'‰IˆB�Ø•YÔ0µ9Ô3LÑLÑLˆEØ�MŠM˜2˜u˜+Ñ&Ô&Ð&Ð&ØÐØˆGˆGð �Ô3Ò3Ð3Ø%ˆGˆGà&ˆGØ�wˆÐr   c                 óH   — t          ||||¦  «         t          d¦  «         d S )NzIOleCommandTarget::Exec called.)r   )r   r*   ÚnCmdIDÚnCmdExecOptÚpvaIns        r   r   zIEButton.Execl   s+   € Ýˆm˜V [°%Ñ8Ô8Ð8ÝÐ/Ñ0Ô0Ð0Ð0Ð0r   c                 ó  — |r‚|                      t          j        ¦  «        }|                      t          j        ¦  «        }t
          j                             |                     dt          j	        ¦  «        ¦  «        | _
        d S d | _
        d S )Nz&{0002DF05-0000-0000-C000-000000000046})ÚQueryInterfacer   ÚIID_IOleCommandTargetÚ	pythoncomÚIID_IServiceProviderÚwin32comÚclientÚDispatchÚQueryServiceÚIID_IDispatchÚ
webbrowser)r   ÚunknownÚ	cmdtargetÚserviceproviders       r   r   zIEButton.SetSiteq   s{   € Øð 	#à×.Ò.­yÔ/NÑOÔOˆIà'×6Ò6µyÔ7UÑVÔVˆOå&œo×6Ò6Ø×,Ò,Ø<½iÔ>Uñô ñô ˆDŒOˆOˆOð #ˆDŒOˆOˆOr   c                 ó   — | j         S r   )Ú_reg_clsid_)r   s    r   Ú
GetClassIDzIEButton.GetClassID�   s   € ØÔÐr   N)r   r   r   r   Ú_iebutton_com_interfaces_Ú_com_interfaces_Ú_iebutton_methods_r!   r8   ÚCLSCTX_INPROC_SERVERÚ_reg_clsctx_Ú_button_text_Ú
_tool_tip_Ú_icon_Ú
_hot_icon_r   r   r   r   rE   r   r   r   r   r   G   s“   € € € € € ðð ð 1ÐØ)ÐØÔ1€LØ€MØ>€JØ€FØ€Jð4ð 4ð 4ðð ð ð"1ð 1ð 1ð
#ð #ð #ð  ð  ð  ð  ð  r   r   c                 óŽ  — dd l }d| j        z  }	 |                     |j        |¦  «        }|                     |dd|j        | j        ¦  «        }|                     |dd|j        | j        ¦  «         |                     |dd|j        d¦  «         |                     |dd|j        d¦  «         |                     |d	d|j        | j        ¦  «         |                     |d
d|j        | j        ¦  «         |                     |dd|j        | j	        ¦  «         t          d¦  «         d S # t          $ r t          d¦  «         Y d S w xY w)Nr   ú4SOFTWARE\Microsoft\Internet Explorer\Extensions\%38sÚ
ButtonTextÚClsidExtensionÚCLSIDz&{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}úDefault VisibleÚYesÚToolTipÚIconÚHotIconzSet standard toolbar reg keys.z'Couldn't set standard toolbar reg keys.)ÚwinregrD   Ú	CreateKeyÚHKEY_LOCAL_MACHINEÚ
SetValueExÚREG_SZrK   rL   rM   rN   r   ÚOSError©ÚclassobjrY   ÚsubKeyCLSIDÚhKeyÚsubKeys        r   Úregisterrd   …   s…  € Ø€M€M€Mð 	CØ
Ô
ñ	ð ð0Ø×Ò Ô 9¸;ÑGÔGˆØ×"Ò"Ø�,  6¤=°(Ô2Hñ
ô 
ˆð 	×ÒØÐ" A v¤}°hÔ6Jñ	
ô 	
ð 	
ð 	×ÒØ�'˜1˜fœmÐ-Uñ	
ô 	
ð 	
ð 	×Ò˜$Ð 1°1°f´mÀUÑKÔKÐKØ×Ò˜$ 	¨1¨f¬m¸XÔ=PÑQÔQÐQØ×Ò˜$ ¨¨6¬=¸(¼/ÑJÔJÐJØ×Ò˜$ 	¨1¨f¬m¸XÔ=PÑQÔQÐQõ 	Ð.Ñ/Ô/Ð/Ð/Ð/øõ ð 9ð 9ð 9ÝÐ7Ñ8Ô8Ð8Ð8Ð8Ð8ð9øøøs   �DD' Ä'EÅEc                 ó"  — dd l }d| j        z  }	 |                     |j        |¦  «        }|                     |d¦  «        }|                     |d¦  «         |                     |d¦  «         |                     |d¦  «         |                     |d¦  «         |                     |d¦  «         |                     |d	¦  «         |                     |j        |¦  «         t          d
¦  «         d S # t          $ r t          d¦  «         Y d S w xY w)Nr   rP   rQ   rR   rS   rT   rV   rW   rX   z Deleted Standard toolbar regkey.z(Couldn't delete Standard toolbar regkey.)rY   rD   rZ   r[   ÚDeleteValueÚ	DeleteKeyr   r^   r_   s        r   Ú
unregisterrh   ¡   s>  € Ø€M€M€Mð 	CØ
Ô
ñ	ð ð2Ø×Ò Ô 9¸;ÑGÔGˆØ×#Ò# D¨,Ñ7Ô7ˆØ×Ò˜4Ð!1Ñ2Ô2Ð2Ø×Ò˜4 Ñ)Ô)Ð)Ø×Ò˜4Ð!2Ñ3Ô3Ð3Ø×Ò˜4 Ñ+Ô+Ð+Ø×Ò˜4 Ñ(Ô(Ð(Ø×Ò˜4 Ñ+Ô+Ð+Ø×Ò˜Ô2°KÑ@Ô@Ð@õ 	Ð0Ñ1Ô1Ð1Ð1Ð1øõ ð :ð :ð :ÝÐ8Ñ9Ô9Ð9Ð9Ð9Ð9ð:øøøs   �CC1 Ã1DÄDc                   ó*   — e Zd ZdZdZdZdZdZdZeZ	dS )ÚPyWin32InternetExplorerButtonz&{104B66A9-9E68-49D1-A3F5-94754BE9E0E6}zPyWin32.IEButtonzTest Buttonr   r   r   N)
r   r   r   rD   Ú_reg_progid_Ú
_reg_desc_rK   rL   rM   rN   r   r   r   rj   rj   ½   s1   € € € € € Ø:€KØ%€LØ€JØ€MØ>€JØ€FØ€J€J€Jr   rj   c                  ó.   — t          t          ¦  «         d S r   )rd   rj   r   r   r   ÚDllRegisterServerrn   Ç   s   € ÝÕ*Ñ+Ô+Ð+Ð+Ð+r   c                  ó.   — t          t          ¦  «         d S r   )rh   rj   r   r   r   ÚDllUnregisterServerrp   Ë   s   € ÝÕ,Ñ-Ô-Ð-Ð-Ð-r   Ú__main__)Úfinalize_registerÚfinalize_unregister)r   r8   Úwin32apir:   Úwin32com.server.registerÚGetConsoleTitleÚerrorÚwin32traceutilÚwin32com.axcontrolr   r;   ÚgencacheÚEnsureModuleÚIObjectWithSite_methodsÚIOleCommandTarget_methodsrH   r7   ÚIID_IObjectWithSiterF   r
   r   rd   rh   rj   rn   rp   r   ÚserverÚUseCommandLiner   r   r   ú<module>r�      sõ  ððð ð( Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð ðØ€HÔÑÔÐÐøØ„~ð ð ð ØÐÐÐÐÐðøøøð )Ð (Ð (Ð (Ð (Ð (ð 	„Ô × %Ò %Ð&NÐPQÐSTÐVWÑ XÔ XÐ Xð % iÐ0Ð Ø# ]Ð3Ð à.Ð1HÑHÐ àÔ#ØÔ!ðÐ ð)ð )ð )ð )ð )ñ )ô )ð )ð; ð ; ð ; ð ; ð ; ñ ; ô ; ð ; ð|0ð 0ð 0ð82ð 2ð 2ð8ð ð ð ð  Hñ ô ð ð,ð ,ð ,ð.ð .ð .ð ˆzÒÐØ„OÔ×+Ò+Ø%Ø+Ø/ð ,ñ ô ð ð ð ð Ðs   ”$ ¤5´5