[Ocemp-CVS] ocempgui/ocempgui/widgets Editable.py, 1.32, 1.33 FileDialog.py, 1.9, 1.10 FileList.py,
Status: Beta
Brought to you by:
marcusva
From: Marcus v. A. <mar...@us...> - 2007-01-26 22:43:30
|
Update of /cvsroot/ocemp/ocempgui/ocempgui/widgets In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv18054/ocempgui/widgets Modified Files: Editable.py FileDialog.py FileList.py Graph2D.py ImageMap.py Scale.py ScrollBar.py ScrolledList.py ScrolledWindow.py ToggleButton.py Log Message: Fixed event issues in various widget classes, which could occur, when used on Window widgets. Fixed superfluous update in FileDialog class. Index: Editable.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/Editable.py,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- Editable.py 22 Jan 2007 19:59:45 -0000 1.32 +++ Editable.py 26 Jan 2007 22:43:27 -0000 1.33 @@ -235,45 +235,54 @@ elif event.signal == SIG_KEYDOWN: self.run_signal_handlers (SIG_KEYDOWN, event.data) - self._input (event.data) + event.handled = self._input (event.data) self._caretvisible= True BaseWidget.notify (self, event) def _input (self, event): - """E._input (...) -> None + """E._input (...) -> bool Receives the SIG_KEYDOWN events and updates the text. """ + handled = False + # Those key sequences have no effect. if event.key in _EDITABLE_DEAD_KEYS: - return + return False elif event.key == K_ESCAPE: if self.editable: self._text = self._temp # Undo text input. self.run_signal_handlers (SIG_INPUT) - + handled = True + elif event.key in (K_RETURN, K_KP_ENTER): if self.editable: self._temp = self.text self.run_signal_handlers (SIG_INPUT) + handled = True # Move caret right and left on the corresponding key press. elif event.key == K_RIGHT: if self._caret < len (self._text): self._caret += 1 + handled = True + elif event.key == K_LEFT: if self._caret > 0: self._caret -= 1 + handled = True # Go the start (home) of the text. elif event.key == K_HOME: self._caret = 0 + handled = True # Go to the end (end) of the text. elif event.key == K_END: self._caret = len (self._text) + handled = True # The next statements directly influence the text, thus we have # to check, if it is editable or not. @@ -283,6 +292,7 @@ if self._caret < len (self._text): self._text = self._text[:self._caret] + \ self._text[self._caret + 1:] + handled = True # Delete backwards (backspace). elif event.key == K_BACKSPACE: @@ -290,12 +300,13 @@ self._text = self._text[:self._caret - 1] + \ self._text[self._caret:] self._caret -= 1 + handled = True # Non-printable characters or maximum exceeded. elif ord (event.unicode) <32: # Any unicode character smaller than 0x0020 (32, SPC) is # ignored as those are control sequences. - return + return False # Any other case is okay, so show it. else: @@ -303,7 +314,10 @@ self._text = self._text[:self._caret] + event.unicode + \ self._text[self._caret:] self._caret += 1 + handled = True + self.dirty = True + return handled # properties text = property (lambda self: self._text, Index: ScrollBar.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/ScrollBar.py,v retrieving revision 1.48 retrieving revision 1.49 diff -u -d -r1.48 -r1.49 --- ScrollBar.py 14 Sep 2006 23:27:57 -0000 1.48 +++ ScrollBar.py 26 Jan 2007 22:43:27 -0000 1.49 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2004-2006, Marcus von Appen +# Copyright (c) 2004-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -222,6 +222,7 @@ self.value = val dirty = False self.dirty = dirty + event.handled = True elif self.state == STATE_ENTERED: self.state = STATE_NORMAL @@ -237,6 +238,7 @@ if self.state == STATE_ACTIVE: self.state = STATE_ENTERED self.run_signal_handlers (SIG_MOUSEUP, event.data) + event.handled = True else: self.state = STATE_NORMAL # Reset timer @@ -258,24 +260,30 @@ elif (event.signal == SIG_KEYDOWN) and self.focus: if event.data.key in (K_KP_PLUS, K_PLUS, K_RIGHT, K_DOWN): self.increase () + event.handled = True elif event.data.key in (K_KP_MINUS, K_MINUS, K_LEFT, K_UP): self.decrease () + event.handled = True elif event.data.key == K_PAGEUP: val = self.value - 10 * self.step if val > self.minimum: self.value = val else: self.value = self.minimum + event.handled = True elif event.data.key == K_PAGEDOWN: val = self.value + 10 * self.step if val < self.maximum: self.value = val else: self.value = self.maximum + event.handled = True elif event.data.key == K_END: self.value = self.maximum + event.handled = True elif event.data.key == K_HOME: self.value = self.minimum + event.handled = True Range.notify (self, event) Index: ImageMap.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/ImageMap.py,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- ImageMap.py 22 Jan 2007 22:26:36 -0000 1.8 +++ ImageMap.py 26 Jan 2007 22:43:27 -0000 1.9 @@ -199,7 +199,8 @@ self.state = STATE_ACTIVE self.__click = True self.run_signal_handlers (SIG_MOUSEDOWN, event.data) - + event.handled = True + elif event.signal == SIG_MOUSEUP: if eventarea.collidepoint (event.data.pos): self._lastevent = event @@ -212,6 +213,7 @@ if self.__click: self.__click = False self.run_signal_handlers (SIG_CLICKED) + event.handled = True elif (event.data.button == 1) and (self.state == STATE_ACTIVE): self.__click = False self.state = STATE_NORMAL @@ -222,6 +224,7 @@ if self.state == STATE_NORMAL: self.state = STATE_ENTERED self.run_signal_handlers (SIG_MOUSEMOVE, event.data) + event.handled = True elif self.state == STATE_ENTERED: self.state = STATE_NORMAL Index: ToggleButton.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/ToggleButton.py,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- ToggleButton.py 14 Nov 2006 12:45:37 -0000 1.32 +++ ToggleButton.py 26 Jan 2007 22:43:27 -0000 1.33 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2004-2006, Marcus von Appen +# Copyright (c) 2004-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -218,6 +218,7 @@ self.__click = True self.state = STATE_ACTIVE self.run_signal_handlers (SIG_MOUSEDOWN, event.data) + event.handled = True elif event.signal == SIG_MOUSEUP: if eventarea.collidepoint (event.data.pos): @@ -231,6 +232,7 @@ self.run_signal_handlers (SIG_TOGGLED) if not self.active: self.state = STATE_ENTERED + event.handled = True elif (event.data.button == 1) and self.__click and \ not self.active: # Only a half click was made, reset the state of the Index: ScrolledWindow.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/ScrolledWindow.py,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- ScrolledWindow.py 14 Sep 2006 23:27:57 -0000 1.40 +++ ScrolledWindow.py 26 Jan 2007 22:43:27 -0000 1.41 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2004-2006, Marcus von Appen +# Copyright (c) 2004-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -176,40 +176,51 @@ self.hscrollbar.decrease () elif event.data.button == 5: self.hscrollbar.increase () + event.handled = True elif (event.signal == SIG_KEYDOWN) and self.focus: if self._hscroll_visible: # Horizontal scrollbar key movement if event.data.key == K_RIGHT: self.hscrollbar.increase () + event.handled = True elif event.data.key == K_LEFT: self.hscrollbar.decrease () + event.handled = True elif event.data.key == K_END: self.hscrollbar.value = self.hscrollbar.maximum + event.handled = True elif event.data.key == K_HOME: self.hscrollbar.value = self.hscrollbar.minimum + event.handled = True if self._vscroll_visible: # Vertical scrollbar key movement if event.data.key == K_DOWN: self.vscrollbar.increase () + event.handled = True elif event.data.key == K_UP: self.vscrollbar.decrease () + event.handled = True elif event.data.key == K_PAGEUP: val = self.vscrollbar.value - 10 * self.vscrollbar.step if val > self.vscrollbar.minimum: self.vscrollbar.value = val else: self.vscrollbar.value = self.vscrollbar.minimum + event.handled = True elif event.data.key == K_PAGEDOWN: val = self.vscrollbar.value + 10 * self.vscrollbar.step if val < self.vscrollbar.maximum: self.vscrollbar.value = val else: self.vscrollbar.value = self.vscrollbar.maximum + event.handled = True elif event.data.key == K_END: self.vscrollbar.value = self.vscrollbar.maximum + event.handled = True elif event.data.key == K_HOME: self.vscrollbar.value = self.vscrollbar.minimum + event.handled = True Bin.notify (self, event) Index: ScrolledList.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/ScrolledList.py,v retrieving revision 1.65 retrieving revision 1.66 diff -u -d -r1.65 -r1.66 --- ScrolledList.py 12 Oct 2006 07:40:55 -0000 1.65 +++ ScrolledList.py 26 Jan 2007 22:43:27 -0000 1.66 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2004-2006, Marcus von Appen +# Copyright (c) 2004-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -548,6 +548,7 @@ """ if not self.sensitive: return + if self.focus and (event.signal == SIG_KEYDOWN): if len (self.items) > 0: self._navigate (event.data.key, event.data.mod) @@ -555,12 +556,16 @@ elif event.signal == SIG_MOUSEDOWN: eventarea = self.rect_to_client () if eventarea.collidepoint (event.data.pos): - self.focus = True - self.run_signal_handlers (SIG_MOUSEDOWN, event.data) - if event.data.button == 1: - self._click (event.data.pos) - else: - ScrolledWindow.notify (self, event) + for c in self.controls: + c.notify (event) + if not event.handled: + self.focus = True + self.run_signal_handlers (SIG_MOUSEDOWN, event.data) + if event.data.button == 1: + self._click (event.data.pos) + else: + ScrolledWindow.notify (self, event) + event.handled = True else: ScrolledWindow.notify (self, event) Index: FileDialog.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/FileDialog.py,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- FileDialog.py 30 Jun 2006 10:13:51 -0000 1.9 +++ FileDialog.py 26 Jan 2007 22:43:27 -0000 1.10 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2004-2006, Marcus von Appen +# Copyright (c) 2004-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -102,9 +102,7 @@ path = os.path.normpath (self._txtpath.text) if os.path.isdir (path): if path != self.filelist.directory: - self.filelist.set_directory (path) - self.dirty = True - self._set_path () + self.filelist.directory = path def get_filenames (self): """F.get_filenames () -> list Index: Scale.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/Scale.py,v retrieving revision 1.44 retrieving revision 1.45 diff -u -d -r1.44 -r1.45 --- Scale.py 16 Sep 2006 11:26:10 -0000 1.44 +++ Scale.py 26 Jan 2007 22:43:27 -0000 1.45 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2004-2006, Marcus von Appen +# Copyright (c) 2004-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -135,6 +135,7 @@ self.value = val else: self.value = self.maximum + event.handled = True elif event.signal == SIG_MOUSEUP: if eventarea.collidepoint (event.data.pos): @@ -145,6 +146,7 @@ self.state = STATE_NORMAL self.__click = False self.run_signal_handlers (SIG_MOUSEUP, event.data) + event.handled = True elif (event.data.button == 1) and self.__click: self.state = STATE_NORMAL self.__click = False @@ -167,24 +169,30 @@ elif (event.signal == SIG_KEYDOWN) and self.focus: if event.data.key in (K_KP_PLUS, K_PLUS, K_RIGHT, K_DOWN): self.increase () + event.handled = True elif event.data.key in (K_KP_MINUS, K_MINUS, K_LEFT, K_UP): self.decrease () + event.handled = True elif event.data.key == K_PAGEUP: val = self.value - 10 * self.step if val > self.minimum: self.value = val else: self.value = self.minimum + event.handled = True elif event.data.key == K_PAGEDOWN: val = self.value + 10 * self.step if val < self.maximum: self.value = val else: self.value = self.maximum + event.handled = True elif event.data.key == K_END: self.value = self.maximum + event.handled = True elif event.data.key == K_HOME: self.value = self.minimum + event.handled = True Range.notify (self, event) Index: FileList.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/FileList.py,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- FileList.py 14 Sep 2006 23:27:57 -0000 1.10 +++ FileList.py 26 Jan 2007 22:43:27 -0000 1.11 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2004-2006, Marcus von Appen +# Copyright (c) 2004-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -95,7 +95,6 @@ except OSError: print "\a" self._directory = olddir - self.dirty = True def _list_contents (self): """F.list_contents (...) -> None @@ -146,11 +145,14 @@ if item and item.selected and stat.S_ISDIR (item.filetype): self.set_directory (os.path.join (self.directory, item.text)) + event.handled = True + elif event.signal == SIG_KEYDOWN: if event.data.key == K_RETURN: if self.cursor and stat.S_ISDIR (self.cursor.filetype): self.set_directory (os.path.join (self.directory, self.cursor.text)) + event.handled = True ScrolledList.notify (self, event) directory = property (lambda self: self._directory, Index: Graph2D.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/Graph2D.py,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- Graph2D.py 23 Jan 2007 12:01:16 -0000 1.13 +++ Graph2D.py 26 Jan 2007 22:43:27 -0000 1.14 @@ -1,6 +1,6 @@ # $Id$ # -# Copyright (c) 2006, Marcus von Appen +# Copyright (c) 2006-2007, Marcus von Appen # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -353,17 +353,23 @@ # Zoom in and out. if event.data.key in (K_PLUS, K_KP_PLUS): self.zoom_in () + event.handled = True elif event.data.key in (K_MINUS, K_KP_MINUS): self.zoom_out () + event.handled = True # Axis movement. elif event.data.key == K_UP: self.origin = (self.origin[0], self.origin[1] - 5) + event.handled = True elif event.data.key == K_DOWN: self.origin = (self.origin[0], self.origin[1] + 5) + event.handled = True elif event.data.key == K_LEFT: self.origin = (self.origin[0] + 5, self.origin[1]) + event.handled = True elif event.data.key == K_RIGHT: self.origin = (self.origin[0] - 5, self.origin[1]) + event.handled = True Diagram.notify (self, event) |