+#!/usr/bin/python
import gtk
import gobject
self.show()
def Up( self ) :
- self.hide()
- self.reftile_y -= 1
- self.composeMap()
- self.show()
+ self.mapwidget.reftile_y -= 1
+ self.mapwidget._bg.vport[1] += 256
+ self.mapwidget.update_background()
def Down( self ) :
- self.hide()
- self.reftile_y += 1
- self.composeMap()
- self.show()
+ self.mapwidget.reftile_y += 1
+ self.mapwidget._bg.vport[1] -= 256
+ self.mapwidget.update_background()
def Right( self ) :
- self.hide()
- self.reftile_x += 1
- self.composeMap()
- self.show()
+ self.mapwidget.reftile_x += 1
+ self.mapwidget._bg.vport[0] += 256
+ self.mapwidget.update_background()
def Left( self ) :
- self.hide()
- self.reftile_x -= 1
- self.composeMap()
- self.show()
+ self.mapwidget.reftile_x -= 1
+ self.mapwidget._bg.vport[0] -= 256
+ self.mapwidget.update_background()
+
class simpleMapWidget ( AbstractmapWidget , gtk.Image ) :
self.get_pixbuf().get_from_drawable( pixmap , pixmap.get_colormap() , 0, 0 , 0 , 0 , self.win_x, self.win_y )
-class mapWidget ( simpleMapWidget , interactiveMapWidget ) :
+class mapWidget ( gtk.EventBox , interactiveMapWidget ) :
- def Up( self ) :
- self._bg.vport[1] += 256
- self.update_background()
+ def __init__ ( self , config ) :
+ gtk.EventBox.__init__( self )
+ self.mapwidget = simpleMapWidget( config )
+ self.add( self.mapwidget )
- def Down( self ) :
- self._bg.vport[1] -= 256
- self.update_background()
-
- def Right( self ) :
- self._bg.vport[0] += 256
- self.update_background()
+ self.click_x , self.click_y = None , None
+ self.set_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK )
+ self.connect_object('button_press_event', self.press_event, self.mapwidget)
+ self.connect_object('button_release_event', self.release_event, self)
- def Left( self ) :
- self._bg.vport[0] -= 256
- self.update_background()
+ def press_event ( self , widget , event ) :
+ self.click_x , self.click_y = event.x , event.x
+ def release_event ( self , widget, event ) :
+ shift = math.sqrt( (event.x-self.click_x)**2 + (event.y-self.click_y)**2 )
+ widget.Shift(delta_x, delta_y)
+ self.click_x , self.click_y = None , None
if __name__ == "__main__" :
map = mapWidget( config )
window = gtk.Window()
window.connect("destroy", gtk.main_quit )
- #window.connect_object("destroy", gtk.Window.destroy , window )
window.connect("key-press-event", on_key_press, map )
window.add( map )
window.show_all()