The Following User Says Thank You to qwerty12 For This Useful Post: | ||
![]() |
2009-07-11
, 21:38
|
Posts: 146 |
Thanked: 15 times |
Joined on Oct 2008
|
#12
|
If so, catching and subsuming their events should be as simple as:
The "returnValue = True" is the import part because it will keep these events from propagating.Code:... window = gtk.Window() window.connect("key-press-event", on_key_press) ... def on_key_press(widget, event, *args): returnValue = False .... if event.keyval == gtk.keysyms.<DPAD_LEFT> or\ event.keyval == gtk.keysyms.<DPAD_RIGHT> or\ event.keyval == gtk.keysyms.<DPAD_UP> or\ event.keyval == gtk.keysyms.<DPAD_DOWN>: ... returnValue = True ... return returnValue ...
EDIT:
I tested this by just returning True and it worked.
The Following User Says Thank You to luis For This Useful Post: | ||
![]() |
2011-02-21
, 20:33
|
Posts: 146 |
Thanked: 15 times |
Joined on Oct 2008
|
#13
|
Maybe start with a variation of something like this:
I originally ported/stole this from Bundyo's Tear.Code:... def __init__(s, aScrolledWindow, ...): ... s.sw = aScrolledWindow s.oldx = -1 s.oldy = -1 ... s.connect('button-press-event', s.on_button_press) s.connect('motion-notify-event', s.on_motion) ... def on_button_press(s, view, event): ... s.oldx = event.x s.oldy = event.y ... def on_motion(s, view, event): ... sw = s.sw if event.x != s.oldx: aux = sw.props.hadjustment.value + s.oldx - event.x if sw.props.hadjustment.lower <= aux and \ aux <= sw.props.hadjustment.upper - sw.props.hadjustment.page_size: sw.props.hadjustment.value = aux if event.y != s.oldy: aux = sw.props.vadjustment.value + s.oldy - event.y if sw.props.vadjustment.lower <= aux and \ aux <= sw.props.vadjustment.upper - sw.props.vadjustment.page_size: sw.props.vadjustment.value = aux s.oldx = event.x s.oldy = event.y ... ...
def pressimg(self, swi, event): .... self.oldxpos = event.x self.oldypos = event.y def scrollimg(self, swi, event): swih = swi.parent.props.hadjustment swiv = swi.parent.props.vadjustment if event.x != self.oldxpos: aux = swih.value + self.oldxpos - event.x if swih.lower <= aux and \ aux <= swih.upper - swih.page_size: swih.value = aux if event.y != self.oldypos: aux = swiv.value + self.oldypos - event.y if swiv.lower <= aux and \ aux <= swiv.upper - swiv.page_size: swiv.value = aux def __init__(self): .... self.mpics_scroll = gtk.ScrolledWindow(None, None) event_box = gtk.EventBox() self.mpics = gtk.Image() event_box.add(self.mpics) self.mpics_scroll.add_with_viewport(event_box) self.mpics_scroll.set_policy(gtk.POLICY_NEVER, \ gtk.POLICY_NEVER) event_box.connect("button-press-event", self.pressimg) event_box.connect('motion-notify-event', self.scrollimg)
self.oldxpos = event.x self.oldypos = event.y
event_box.set_events(gtk.gdk.BUTTON_MOTION_MASK)
![]() |
2011-02-21
, 21:09
|
Posts: 146 |
Thanked: 15 times |
Joined on Oct 2008
|
#15
|
![]() |
2011-02-24
, 02:50
|
Posts: 146 |
Thanked: 15 times |
Joined on Oct 2008
|
#16
|
if event.is_hint: xpos, ypos, state = \ event.window.get_pointer() else: xpos = event.x ypos = event.y state = event.state if state & gtk.gdk.BUTTON1_MASK: ...
event_box.set_events(gtk.gdk.POINTER_MOTION_HINT_MASK)
self.oldxpos = -1 self.oldypos = -1
def scrollimg(self, swi, event): "The method that actually scrolls" if event.is_hint: xpos, ypos, state = \ event.window.get_pointer() else: xpos = event.x ypos = event.y state = event.state if state & gtk.gdk.BUTTON1_MASK: swih = swi.props.hadjustment swiv = swi.props.vadjustment if xpos != self.oldxpos: aux = swih.value + self.oldxpos - xpos if swih.lower <= aux and aux <= \ swih.upper - swih.page_size: swih.value = aux if ypos != self.oldypos: aux = swiv.value + self.oldypos - ypos if swiv.lower <= aux and aux <= \ swiv.upper - swiv.page_size: swiv.value = aux else: self.oldxpos = -1 self.oldypos = -1 def pressimg(self, swi, event): "The method that sets the initial positions" self.oldxpos = event.x self.oldypos = event.y def __init__(self): ... self.mpics_scroll = gtk.ScrolledWindow(None, None) event_box = gtk.EventBox() self.mpics = gtk.Image() event_box.add(self.mpics) event_box.set_above_child(True) self.mpics_scroll.add_with_viewport\ (event_box) self.mpics_scroll.connect\ ("button-press-event", self.pressimg) self.mpics_scroll.connect ("motion-notify-event", self.scrollimg) event_box.set_events\ (gtk.gdk.POINTER_MOTION_HINT_MASK) ....
The Following User Says Thank You to luis For This Useful Post: | ||
And etc
GDK_Up
GDK_Right
GDK_Down