Author: bugman Date: Thu Oct 16 18:31:34 2014 New Revision: 26303 URL: http://svn.gna.org/viewcvs/relax?rev=26303&view=rev Log: Merged revisions 26293-26296 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/trunk ........ r26293 | bugman | 2014-10-15 19:32:18 +0200 (Wed, 15 Oct 2014) | 7 lines Modified the behaviour of the relax controller window so that pressing escape closes the window. This involves setting the initial focus on the LogCtrl, and catching the ESC key press in the LogCtrl as well as all relax controller read only wx.Field elements and calling the parent controller handle_close() method. ........ r26294 | bugman | 2014-10-15 23:57:44 +0200 (Wed, 15 Oct 2014) | 5 lines Replaced the hardcoded integer keycodes in the relax controller with the wx variables. This is for the LogCtrl.capture_keys() handler method for dealing with key presses. ........ r26295 | bugman | 2014-10-16 10:46:02 +0200 (Thu, 16 Oct 2014) | 8 lines Improvement for all wizards and user functions in the relax GUI. The focus is now set on the currently displayed page of the wizard. This allows the keyboard to be active without requiring a mouse click. Now text can be instantly input into the first text control and the tab key can jump between elements. As the GUI user functions are wizards with a single page, this is a significant usability improvement for the GUI. ........ r26296 | bugman | 2014-10-16 10:49:18 +0200 (Thu, 16 Oct 2014) | 7 lines The ESC character now closes all wizards and user functions in the relax GUI. By using an accelerator table set to the entire wizard window to catch the ESC keyboard event, the ESC key will cause the _handler_escape() method to be called which then calls the windows Close() method to close the window. ........ Modified: branches/space_mapping_refactor/ (props changed) branches/space_mapping_refactor/gui/controller.py branches/space_mapping_refactor/gui/wizards/wiz_objects.py Propchange: branches/space_mapping_refactor/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Thu Oct 16 18:31:34 2014 @@ -1 +1 @@ -/trunk:1-26279,26283-26292 +/trunk:1-26302 Modified: branches/space_mapping_refactor/gui/controller.py URL: http://svn.gna.org/viewcvs/relax/branches/space_mapping_refactor/gui/controller.py?rev=26303&r1=26302&r2=26303&view=diff ============================================================================== --- branches/space_mapping_refactor/gui/controller.py (original) +++ branches/space_mapping_refactor/gui/controller.py Thu Oct 16 18:31:34 2014 @@ -125,6 +125,9 @@ info = Info_box() print(info.intro_text()) + # Set the focus on the log control. + self.log_panel.SetFocus() + # Register functions with the observer objects. status.observers.pipe_alteration.register('controller', self.update_controller, method_name='update_controller') status.observers.auto_analyses.register('controller', self.update_controller, method_name='update_controller') @@ -234,6 +237,9 @@ text.SetToolTipString(tooltip) field.SetToolTipString(tooltip) + # Handle key events. + field.Bind(wx.EVT_KEY_DOWN, self.handler_key_down) + # Return the control. return field @@ -312,6 +318,18 @@ # Close the window. self.Hide() + + + def handler_key_down(self, event=None): + """Event handler for key strokes. + + @keyword event: The wx event. + @type event: wx event + """ + + # Use ESC to close the window. + if event.GetKeyCode() == wx.WXK_ESCAPE: + self.handler_close(event) def handler_timer(self, event): @@ -688,16 +706,16 @@ # Find next (Ctrl-G on Mac OS X, F3 on all others). if 'darwin' in sys.platform and event.ControlDown() and event.GetKeyCode() == 71: self.find_next(event) - elif 'darwin' not in sys.platform and event.GetKeyCode() == 342: + elif 'darwin' not in sys.platform and event.GetKeyCode() == wx.WXK_F3: self.find_next(event) # Allow caret movements (arrow keys, home, end). - if event.GetKeyCode() in [312, 313, 314, 315, 316, 317]: + if event.GetKeyCode() in [wx.WXK_END, wx.WXK_HOME, wx.WXK_LEFT, wx.WXK_UP, wx.WXK_RIGHT, wx.WXK_DOWN]: self.at_end = False event.Skip() # Allow scrolling (pg up, pg dn): - if event.GetKeyCode() in [366, 367]: + if event.GetKeyCode() in [wx.WXK_PAGEUP, wx.WXK_PAGEDOWN]: self.at_end = False event.Skip() @@ -710,10 +728,14 @@ self.on_zoom_in(event) # Jump to start or end (Ctrl-Home and Ctrl-End). - if event.ControlDown() and event.GetKeyCode() == 313: + if event.ControlDown() and event.GetKeyCode() == wx.WXK_HOME: self.on_goto_start(event) - elif event.ControlDown() and event.GetKeyCode() == 312: + elif event.ControlDown() and event.GetKeyCode() == wx.WXK_END: self.on_goto_end(event) + + # Use ESC to close the window. + if event.GetKeyCode() == wx.WXK_ESCAPE: + self.controller.handler_close(event) def capture_mouse(self, event): Modified: branches/space_mapping_refactor/gui/wizards/wiz_objects.py URL: http://svn.gna.org/viewcvs/relax/branches/space_mapping_refactor/gui/wizards/wiz_objects.py?rev=26303&r1=26302&r2=26303&view=diff ============================================================================== --- branches/space_mapping_refactor/gui/wizards/wiz_objects.py (original) +++ branches/space_mapping_refactor/gui/wizards/wiz_objects.py Thu Oct 16 18:31:34 2014 @@ -481,6 +481,13 @@ # Bind some events. self.Bind(wx.EVT_CLOSE, self._handler_close) + # ESC to exit, via an accelerator table which creates menu events. + id = wx.NewId() + self.acc_list = [(wx.ACCEL_NORMAL, wx.WXK_ESCAPE, id)] + self.acc_table = wx.AcceleratorTable(self.acc_list) + self.SetAcceleratorTable(self.acc_table) + self.Bind(wx.EVT_MENU, self._handler_escape, id=self.acc_list[0][2]) + def _apply(self, event=None): """Execute the current page's 'Apply' method. @@ -635,6 +642,9 @@ # Execute the page's on_init() method. self._pages[i].on_init() + # Set the focus to this page to allow the keyboard to be functional without a mouse click. + self._pages[i].SetFocus() + def _go_back(self, event=None): """Return to the previous page. @@ -713,6 +723,17 @@ # Continue with the window closing. event.Skip() + + + def _handler_escape(self, event=None): + """Event handler for key strokes. + + @keyword event: The wx event. + @type event: wx event + """ + + # Close the window. + self.Close() def _next_fn(self):