pygtk.require('2.0')
import gtk
import pango
+import gobject
from FukuiNoNamariExt import thread_view_extend
def __init__(self):
gtk.HBox.__init__(self, False, 0)
self.drawingarea = gtk.DrawingArea()
+ self.drawingarea.set_property("can_focus", True)
+
+ def set_focus():
+ top = self.drawingarea.get_toplevel()
+ if top.get_property("type") == gtk.WINDOW_TOPLEVEL:
+ top.set_focus(self.drawingarea)
+ gobject.idle_add(set_focus)
+
self.vscrollbar = gtk.VScrollbar()
self.pack_start(self.drawingarea)
self.pack_start(self.vscrollbar, expand=False)
self.adjustment = self.vscrollbar.get_adjustment()
self.drawingarea.add_events(
+ gtk.gdk.KEY_PRESS_MASK |
gtk.gdk.SCROLL_MASK |
gtk.gdk.POINTER_MOTION_MASK |
gtk.gdk.BUTTON_PRESS_MASK |
"button-release-event", self.on_drawingarea_button_release_event)
self.drawingarea.connect(
"style-set", self.on_drawingarea_style_set)
+ self.drawingarea.connect(
+ "key-press-event", self.on_drawingarea_key_press_event)
self.vscrollbar.connect(
"value-changed", self.on_vscrollbar_value_changed)
for layout in self.res_layout_list:
layout.recalc_char_widths()
self.wrap_relayout()
+
+ def on_drawingarea_key_press_event(self, widget, event, data=None):
+ if event.type is not gtk.gdk.KEY_PRESS:
+ return
+
+ if event.keyval in (gtk.keysyms.Up, gtk.keysyms.Down,
+ gtk.keysyms.Page_Up, gtk.keysyms.Page_Down,
+ gtk.keysyms.Home):
+ value = self.vscrollbar.get_value()
+ if event.keyval == gtk.keysyms.Up:
+ step_increment = self.adjustment.get_property("step-increment")
+ value = value - step_increment
+ elif event.keyval == gtk.keysyms.Down:
+ step_increment = self.adjustment.get_property("step-increment")
+ value = value + step_increment
+ elif event.keyval == gtk.keysyms.Page_Up:
+ step_increment = self.adjustment.get_property("page-increment")
+ value = value - step_increment
+ elif event.keyval == gtk.keysyms.Page_Down:
+ step_increment = self.adjustment.get_property("page-increment")
+ value = value + step_increment
+ elif event.keyval == gtk.keysyms.Home:
+ value = 0
+ self.jump(value)
+ elif event.keyval == gtk.keysyms.End:
+ self.jump_to_the_end()