.. wxPython Phoenix documentation
   This file was generated by Phoenix's sphinx generator and associated
   tools, do not edit by hand.
   Copyright: (c) 2011-2025 by Total Control Software
   License:   wxWindows License
.. include:: headings.inc
.. currentmodule:: wx.lib.agw.shortcuteditor
.. highlight:: python
.. _wx.lib.agw.shortcuteditor.ShortcutEditor:
==========================================================================================================================================
|phoenix_title|  **wx.lib.agw.shortcuteditor.ShortcutEditor**
==========================================================================================================================================
:class:`ShortcutEditor` is a widget that allows the user to customize and change keyboard
shortcuts via a dialog. It can be used to edit :class:`wx.MenuItem` shortcuts or accelerators
defined in a :class:`AcceleratorTable`.
The interface itself is very much inpired by the GIMP shortcut editor:
http://graphicssoft.about.com/od/gimptutorials/tp/keyboard-shortcut-editor.htm
There are very few minor UI differences between :class:`ShortcutEditor` and the GIMP one,
although the behaviour should be pretty much equivalent.
|
|class_hierarchy| Class Hierarchy
=================================
.. raw:: html
   
   
|
|appearance| Control Appearance
===============================
|
.. container:: control-appearance-figures
   .. figure:: _static/images/widgets/fullsize/wxmsw/wx.lib.agw.shortcuteditor.shortcuteditor.png
      :alt: wxMSW
      :figclass: appearance-figure
      **wxMSW**
   .. figure:: _static/images/widgets/fullsize/wxgtk/wx.lib.agw.shortcuteditor.shortcuteditor.png
      :alt: wxGTK
      :figclass: appearance-figure
      **wxGTK**
   .. figure:: _static/images/widgets/fullsize/wxmac/../no_appearance.png
      :alt: wxMAC
      :figclass: appearance-figure
      **wxMAC**
|
|super_classes| Known Superclasses
==================================
:class:`wx.Dialog`
|
|method_summary| Methods Summary
================================
================================================================================ ================================================================================
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.__init__`                       Default class constructor.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.BindEvents`                     Binds a few events we will need to process
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.CreateWidgets`                  Creates all the widgets needed to populate the interface, such as buttons,
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.DoLayout`                       Lays out the widgets using sizers in a platform-independent way.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.FromAcceleratorTable`           Builds the entire shortcut hierarchy starting from a modified version of a :class:`AcceleratorTable`.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.FromMenuBar`                    Builds the entire shortcut hierarchy starting from a :class:`wx.MenuBar`.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.GetShortcutManager`             Returns the root :class:`Shortcut` containing the whole shortcut hierarchy.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.Init`                           Common initialization procedures.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.OnClearFilter`                  Handles the ``wx.EVT_BUTTON`` event for :class:`ShortcutEditor` when the user clears the
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.OnHTMLHelp`                     Handles the ``wx.EVT_BUTTON`` event for :class:`ShortcutEditor` when the user presses the ``Help``
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.OnRestoreDefaults`              Handles the ``wx.EVT_BUTTON`` event for :class:`ShortcutEditor` when the user restores the
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.OnSetFilter`                    Handles the ``wx.EVT_TEXT`` event for :class:`ShortcutEditor`.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.PreShow`                        Does some more common initialization before showing :class:`ShortcutEditor`.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.SetColumnWidths`                Sets the :class:`ListShortcut` columns widths to acceptable and eye-pleasing
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.SetHTMLHelpFile`                Sets a new HTML help file (a valid html file) to be loaded when the user seeks
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.Show`                           Hides or shows the :class:`ShortcutEditor` dialog.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.ShowModal`                      Shows the :class:`ShortcutEditor` dialog in an application-modal way.
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.ToAcceleratorTable`             Dumps the entire shortcut hierarchy (for shortcuts associated with a :class:`AcceleratorTable`), into
:meth:`~wx.lib.agw.shortcuteditor.ShortcutEditor.ToMenuBar`                      Dumps the entire shortcut hierarchy (for shortcuts associated with a :class:`wx.MenuItem`), into
================================================================================ ================================================================================
|
|api| Class API
===============
.. class:: ShortcutEditor(wx.Dialog)
   :class:`ShortcutEditor` is a widget that allows the user to customize and change keyboard
   shortcuts via a dialog. It can be used to edit :class:`wx.MenuItem` shortcuts or accelerators
   defined in a :class:`AcceleratorTable`.
   
   The interface itself is very much inpired by the GIMP shortcut editor:
   
   http://graphicssoft.about.com/od/gimptutorials/tp/keyboard-shortcut-editor.htm
   
   There are very few minor UI differences between :class:`ShortcutEditor` and the GIMP one,
   although the behaviour should be pretty much equivalent.
   .. method:: __init__(self, parent)
      Default class constructor.
      
      :param `parent`: an instance of :class:`wx.Window`, it can also be ``None``.
   .. method:: BindEvents(self)
      Binds a few events we will need to process:
      
      * ``wx.EVT_TEXT`` for the label filtering;
      * ``wx.EVT_BUTTON`` for clearing the filtering, for the HTML help window and
        to reset all the shortcuts to their defaults.
   .. method:: CreateWidgets(self)
      Creates all the widgets needed to populate the interface, such as buttons,
      texts and, most importantly, :class:`ListShortcut`.
   .. method:: DoLayout(self)
      Lays out the widgets using sizers in a platform-independent way. 
   .. method:: FromAcceleratorTable(self, accelTable)
      Builds the entire shortcut hierarchy starting from a modified version of a :class:`AcceleratorTable`.
      
      :param `accelTable`: a modified version of :class:`AcceleratorTable`, is a list of tuples (4 elements per tuple),
       populated like this::
      
          accelTable = []
      
          # Every tuple is defined in this way:
      
          for label, flags, keyCode, cmdID in my_accelerators:
              # label:   the string used to show the accelerator into the ShortcutEditor dialog
              # flags:   a bitmask of wx.ACCEL_ALT, wx.ACCEL_SHIFT, wx.ACCEL_CTRL, wx.ACCEL_CMD,
              #          or wx.ACCEL_NORMAL used to specify which modifier keys are held down
              # keyCode: the keycode to be detected (i.e., ord('b'), wx.WXK_F10, etc...)
              # cmdID:   the menu or control command ID to use for the accelerator event.
      
              accel_tuple = (label, flags, keyCode, cmdID)
              accelTable.append(accel_tuple)
   .. method:: FromMenuBar(self, topWindow)
      Builds the entire shortcut hierarchy starting from a :class:`wx.MenuBar`.
      
      :param `topWindow`: an instance of :class:`TopLevelWindow`, containing the :class:`wx.MenuBar`
       we wish to scan.
   .. method:: GetShortcutManager(self)
      Returns the root :class:`Shortcut` containing the whole shortcut hierarchy. 
   .. method:: Init(self)
      Common initialization procedures. 
   .. method:: OnClearFilter(self, event)
      Handles the ``wx.EVT_BUTTON`` event for :class:`ShortcutEditor` when the user clears the
      label filter at the top of the user interface.
      
      :param `event`: an instance of :class:`CommandEvent`.
   .. method:: OnHTMLHelp(self, event)
      Handles the ``wx.EVT_BUTTON`` event for :class:`ShortcutEditor` when the user presses the ``Help``
      button.
      
      :param `event`: an instance of :class:`CommandEvent`.
      
      .. note::
      
         By default, this method launches a :class:`html.HtmlWindow` containing the default
         HTML help file. If you wish to load another help file, you should call :meth:`~ShortcutEditor.SetHTMLHelpFile`
         with another input HTML file.
   .. method:: OnRestoreDefaults(self, event)
      Handles the ``wx.EVT_BUTTON`` event for :class:`ShortcutEditor` when the user restores the
      original shortcuts.
      
      :param `event`: an instance of :class:`CommandEvent`.
   .. method:: OnSetFilter(self, event=None)
      Handles the ``wx.EVT_TEXT`` event for :class:`ShortcutEditor`.
      
      :param `event`: if not ``None``, an instance of :class:`KeyEvent`.
   .. method:: PreShow(self)
      Does some more common initialization before showing :class:`ShortcutEditor`. 
   .. method:: SetColumnWidths(self)
      Sets the :class:`ListShortcut` columns widths to acceptable and eye-pleasing
      numbers (in pixels).
   .. method:: SetHTMLHelpFile(self, htmlFile)
      Sets a new HTML help file (a valid html file) to be loaded when the user seeks
      for an explanation on how the UI works.
      
      :param string `htmlFile`: a valid HTML file.
   .. method:: Show(self, show=True)
      Hides or shows the :class:`ShortcutEditor` dialog.
      
      The preferred way of dismissing a modal dialog is to use `EndModal`.
      
      :param bool `show`: if ``True``, the dialog box is shown and brought to the front,
       otherwise the box is hidden. If ``False`` and the dialog is modal, control is
       returned to the calling program.
      
      .. note:: Reimplemented from :class:`wx.Window`.
   .. method:: ShowModal(self)
      Shows the :class:`ShortcutEditor` dialog in an application-modal way.
      
      Program flow does not return until the dialog has been dismissed with `EndModal`.
      
      :return: The value set with :meth:`~Dialog.SetReturnCode`.
      
      .. note::
      
         Notice that it is possible to call :meth:`~ShortcutEditor.ShowModal` for a dialog which had been
         previously shown with :meth:`~ShortcutEditor.Show`, this allows to make an existing modeless dialog
         modal. However :meth:`~ShortcutEditor.ShowModal` can't be called twice without intervening `EndModal` calls.
      
      
      .. note::
      
         Note that this function creates a temporary event loop which takes precedence
         over the application's main event loop (see :class:`EventLoopBase`) and which is
         destroyed when the dialog is dismissed. This also results in a call to
         :meth:`AppConsole.ProcessPendingEvents` ().
   .. method:: ToAcceleratorTable(self, window)
      Dumps the entire shortcut hierarchy (for shortcuts associated with a :class:`AcceleratorTable`), into
      a :class:`AcceleratorTable`. This method **does** rebuild the :class:`AcceleratorTable` and sets it back
      to the input `window`.
      
      :param `window`: an instance of :class:`wx.Window`, to which the new :class:`AcceleratorTable` should be set.
   .. method:: ToMenuBar(self, topWindow)
      Dumps the entire shortcut hierarchy (for shortcuts associated with a :class:`wx.MenuItem`), into
      a :class:`wx.MenuBar`, changing only the :class:`wx.Menu` / :class:`wx.MenuItem` labels (it does **not** rebuild
      the :class:`wx.MenuBar`).
      
      :param `topWindow`: an instance of :class:`TopLevelWindow`, containing the :class:`wx.MenuBar`
       we wish to repopulate.