AcceleratorTable when using AUI manager

Hi all

What: We are making an editor that uses AUI manager with
dock/undock able windows. We would like to have global shortcuts accessible from
all windows (except modal dialogs), e.g. the behavior of Photoshop where you
can select crop tool on © and select tool on (v), etc.

The correct way seems to be using an AcceleratorTable on the
main window, which also works fine if all windows are docked. But when a window
is undocked it is not a part of the main window and therefore the AcceleratorTable
does not receive the key event. This again can be solved by having the same AcceleratorTable
set on all windows that are made into AUI panes. But…

Problem: When the focus in on the main window (manager) and
clicking on the caption of a pane then the focus is on the pane window. That
window is out of our hands and the AcceleratorTable then does not receive any
events. Clicking on the contents in the pane works.

Question: Is there any way to get the window that the pane
is in? GetAllPanes() returns only a PaneInfo object.

Is there another (smarter) way of handling global key events
in an application that works independent on focus?

Question 2: Is it possible to use Key event up/down with AcceleratorTables?
Currently we are using EVT_MENU… We would like to be able to hold space and
use a hand tool and when space is released, use whatever tool you used before.

Bjarke

Bjarke
Pjedsted-Rasmussen
**** ****/ Software Developer

···

NDS Denmark A/S

Vesterbrogade 149, Building 9, DK-1620 Copenhagen
V

Tel: +45 3693 6000 Dir: +45 3690 6032

Mob: +45 30258789

E-mail: bprasmussen@nds.com

www.nds.com

This e-mail is confidential, the property of NDS Ltd and intended for the addressee only. Any dissemination, copying or distribution of this message or any attachments by anyone other than the intended recipient is strictly prohibited. If you have received this message in error, please immediately notify the postmaster@nds.com and destroy the original message. Messages sent to and from NDS may be monitored. NDS cannot guarantee any message delivery method is secure or error-free. Information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. We do not accept responsibility for any errors or omissions in this message and/or attachment that arise as a result of transmission. You should carry out your own virus checks before opening any attachment. Any views or opinions presented are solely those of the author and do not necessarily represent those of NDS.

To protect the environment please do not print this e-mail unless necessary.

Pjedsted-Rasmussen, Bjarke wrote:

Problem: When the focus in on the main window (manager) and clicking on the caption of a pane then the focus is on the pane window. That window is out of our hands and the AcceleratorTable then does not receive any events. Clicking on the contents in the pane works.

Question: Is there any way to get the window that the pane is in? GetAllPanes() returns only a PaneInfo object.

Calling the GetTopLevelParent method on the pane's content window should do it.

Is there another (smarter) way of handling global key events in an application that works independent on focus?

I think I would take the same approach.

Question 2: Is it possible to use Key event up/down with AcceleratorTables? Currently we are using EVT_MENU… We would like to be able to hold space and use a hand tool and when space is released, use whatever tool you used before.

Yes, you could probably use them together without problems. Just keep in mind that the key events are only sent to the window with the focus., so they do not traverse up the containment hierarchy like the menu events do.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!