
    G@d"                         d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
mZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZmZ  G d d          Z G d de          ZdS )z
Shortcuts Plugin.
    N)QtSignalSlot)QKeySequence)QAction	QShortcut)PluginsSpyderPluginV2)on_plugin_availableon_plugin_teardown_)ApplicationMenusHelpMenuSections)ShortcutsConfigPage)ShortcutsSummaryDialog)add_shortcut_to_tooltipSpyderActionc                       e Zd ZdZdS )ShortcutActionsshow_shortcut_summary_actionN)__name__
__module____qualname__ShortcutSummaryAction     ?lib/python3.11/site-packages/spyder/plugins/shortcuts/plugin.pyr   r   !   s        :r   r   c                      e Zd ZdZdZej        gZej        gZ	e
ZeZdZdZ e            Z	 ed             Zd Zd Zd Z eej                  d	             Z eej                  d
             Z eej                  d             Z eej                  d             Zd Zd Zd Z e            d             Z 	 ddZ!	 ddZ"d Z#ddZ$ddZ%dS )	Shortcutsz
    Shortcuts Plugin.
    	shortcutsFc                       t          d          S )NzKeyboard shortcutsr   r   r   r   get_namezShortcuts.get_name>   s    %&&&r   c                      t          d          S )Nz1Manage application, widget and actions shortcuts.r   selfs    r   get_descriptionzShortcuts.get_descriptionB   s    DEEEr   c                 ,    |                      d          S )Nkeyboard)create_iconr%   s    r   get_iconzShortcuts.get_iconE   s    
+++r   c                     g | _         |                     t          j        t	          d          | j        dt          j                   d S )NzShortcuts SummaryT)text	triggeredregister_shortcutcontext)_shortcut_datacreate_actionr   r   r   show_summaryr   ApplicationShortcutr%   s    r   on_initializezShortcuts.on_initializeH   sR     1&'''"* 	 	
 	
 	
 	
 	
r   )pluginc                 n    |                      t          j                  }|                    |            d S N)
get_pluginr	   Preferencesregister_plugin_preferencesr&   preferencess     r   on_preferences_availablez"Shortcuts.on_preferences_availableR   s0    oog&9:://55555r   c                     |                      t          j                  }|                     t          j                  }|                    |t          j        t          j
        t          j                   d S )N)menu_idsectionbefore_section)r9   r	   MainMenu
get_actionr   r   add_item_to_application_menur   Helpr   DocumentationSupport)r&   mainmenushortcuts_actions      r   on_main_menu_availablez Shortcuts.on_main_menu_availableW   sn    ??7#344??13 3 	--$)$2+3	 	. 	
 	
 	
 	
 	
r   c                 n    |                      t          j                  }|                    |            d S r8   )r9   r	   r:   deregister_plugin_preferencesr<   s     r   on_preferences_teardownz!Shortcuts.on_preferences_teardowne   s0    oog&9::11$77777r   c                     |                      t          j                  }|                    t          j        t          j                   d S )N)r@   )r9   r	   rC   !remove_item_from_application_menur   r   r   rF   )r&   rI   s     r   on_main_menu_teardownzShortcuts.on_main_menu_teardownj   sI    ??7#344221$) 	3 	
 	
 	
 	
 	
r   c                 .    |                                   d S r8   )apply_shortcutsr%   s    r   on_mainwindow_visiblezShortcuts.on_mainwindow_visibler   s    r   c                     | j         S )zW
        Return the registered shortcut data from the main application window.
        )r1   r%   s    r   get_shortcut_datazShortcuts.get_shortcut_dataw   s     ""r   c                 J    | j         r| j                                          dS dS )zReset shrotcuts.N)_confreset_shortcutsr%   s    r   rY   zShortcuts.reset_shortcuts}   s0    : 	)J&&(((((	) 	)r   c                 L    t          d          }|                                 dS )zReset shortcuts.N)r   exec_)r&   dlgs     r   r3   zShortcuts.show_summary   s"     %T**		r   TNc                 D    | j                             |||||f           dS )zz
        Register QAction or QShortcut to Spyder main application,
        with shortcut (context, name, default)
        N)r1   append)r&   qaction_or_qshortcutr0   nameadd_shortcut_to_tipplugin_names         r   r/   zShortcuts.register_shortcut   sA     	""$8'#')<k$K 	L 	L 	L 	L 	Lr   c                 ^    |||||f}|| j         v r| j                             |           dS dS )zO
        Unregister QAction or QShortcut from Spyder main application.
        N)r1   remove)r&   r_   r0   r`   ra   rb   datas          r   unregister_shortcutzShortcuts.unregister_shortcut   sM    
 %gt5H 4&&&&&t,,,,, '&r   c                    g }t          | j                  D ]j\  }\  }}}}}	 |                     |||          }n;# t          j        t          j        f$ r |                     ||d|           d}Y nw xY w|rt          |          }	nt                      }	|                    d          r#t          |t                    rt                      }		 t          |t                    rLt          j        dk    r|j        dk    r|	|_        n|                    |	           |rt!          |||           n*t          |t"                    r|                    |	           F# t&          $ r |                    |           Y hw xY wt+          |d          D ]}| j                            |           | j                                         dS )zB
        Apply shortcuts settings to all widgets/plugins.
         z	switch todarwinmissingT)reverseN)	enumerater1   get_shortcutconfigparserNoSectionErrorNoOptionErrorset_shortcutr   
startswith
isinstancer   r   sysplatform_shown_shortcutsetShortcutr   r   setKeyRuntimeErrorr^   sortedpopsig_shortcuts_updatedemit)
r&   toberemovedindexqobjectr0   r`   ra   rb   shortcut_sequencekeyseqs
             r   rS   zShortcuts.apply_shortcuts   s      %.d.A$B$B(	* (	* !E !GWd,?'$($5$5gt6A%C %C!! /1KL ' ' ' !!'4[AAA$&!!!' ! (%&788 &
 ,, ("7L99(%*gw// 
+00 ' 79 D D28//++F333* H/$GGG33 +NN6*** * * *""5)))))* K666 	+ 	+E##E****"'')))))s"   <5A43A4BEF ?F c                 <    | j                             |||          S )a  
        Get keyboard shortcut (key sequence string).

        Parameters
        ----------
        context:
            Context must be either '_' for global or the name of a plugin.
        name: str
            Name of the shortcut.
        plugin_id: spyder.api.plugins.SpyderpluginV2 or None
            The plugin for which the shortcut is registered. Default is None.

        Returns
        -------
        Shortcut
            A shortcut object.
        rb   )rX   rm   )r&   r0   r`   rb   s       r   rm   zShortcuts.get_shortcut   s!    $ z&&w+&NNNr   c                 B    | j                             ||||           dS )a  
        Set keyboard shortcut (key sequence string).

        Parameters
        ----------
        context:
            Context must be either '_' for global or the name of a plugin.
        name: str
            Name of the shortcut.
        keystr: str
            Shortcut keys in string form.
        plugin_id: spyder.api.plugins.SpyderpluginV2 or None
            The plugin for which the shortcut is registered. Default is None.
        r   N)rX   rq   )r&   r0   r`   keystr	plugin_ids        r   rq   zShortcuts.set_shortcut   s)     	
v9MMMMMr   )TNr8   )&r   r   r   __doc__NAMEr	   r:   REQUIRESrC   OPTIONALr   CONF_WIDGET_CLASSCONF_SECTION	CONF_FILECAN_BE_DISABLEDr   r|   staticmethodr#   r'   r+   r5   r   r>   rK   r   rN   rQ   rT   rV   rY   r   r3   r/   rf   rS   rm   rq   r   r   r   r    r    '   s,         D#$H !H+LIO #FHH ' ' \'F F F, , ,
 
 
  34446 6 546  0111
 
 21
 w23338 8 438 w/000
 
 10
  
# # #) ) )
 
TVV  V AEL L L L CG	- 	- 	- 	-6* 6* 6*pO O O O(N N N N N Nr   r    ) r   rn   rt   qtpy.QtCorer   r   r   
qtpy.QtGuir   qtpy.QtWidgetsr   r   spyder.api.pluginsr	   r
   )spyder.api.plugin_registration.decoratorsr   r   spyder.api.translationsr   spyder.plugins.mainmenu.apir   r   !spyder.plugins.shortcuts.confpager   (spyder.plugins.shortcuts.widgets.summaryr   spyder.utils.qthelpersr   r   r   r    r   r   r   <module>r      s   
     



 ) ( ( ( ( ( ( ( ( ( # # # # # # - - - - - - - - 7 6 6 6 6 6 6 6- - - - - - - - % % % % % % J J J J J J J J A A A A A A K K K K K K H H H H H H H H; ; ; ; ; ; ; ;PN PN PN PN PN PN PN PN PN PNr   