From: javiplx Date: Sun, 15 May 2011 15:37:21 +0000 (+0000) Subject: Implemented cursor based shifts X-Git-Url: http://git.maemo.org/git/?p=wifihood;a=commitdiff_plain;h=b1d04833af108fc5a8ca97c176b92cb4801f6340 Implemented cursor based shifts git-svn-id: file:///svnroot/wifihood/branches/mapview-redesign@189 c51dfc6a-5949-4919-9c8e-f207a149c383 --- diff --git a/view.py b/view.py index 95fbc49..32de00f 100755 --- a/view.py +++ b/view.py @@ -57,6 +57,11 @@ class background_map ( gtk.gdk.Pixmap ) : self.draw_pixbuf( None , pixbuf , 0 , 0 , dest_x , dest_y ) + def do_change_viewport ( self , dx , dy ) : + dx , dy = self.tileloader.do_change_refpix( dx , dy ) + if dx or dy : + self.do_change_reftile( dx , dy ) + def do_change_reftile( self , dx , dy ) : self.tileloader.do_change_reftile( dx , dy ) @@ -98,6 +103,14 @@ class tile_loader : self.rootdir = "%s/%s/%s" % ( conf.mapsdir , conf.mapclass , conf.zoom ) self.__reftile , self.__refpix = self.get_reference( conf ) + def do_change_refpix ( self , dx , dy ) : + self.__refpix[0] += dx + self.__refpix[1] += dy + tileshift = self.__refpix[0] / self.tilesize , self.__refpix[1] / self.tilesize + self.__refpix[0] %= self.tilesize + self.__refpix[1] %= self.tilesize + return tileshift + def do_change_reftile( self , dx , dy ) : self.__reftile[0] += dx self.__reftile[1] += dy @@ -250,16 +263,7 @@ class AbstractmapWidget : class interactiveMapWidget : def Shift( self , dx , dy ) : - -# tile_x , tile_y = ( self.refpix_x - dx ) / self.tile_size , ( self.refpix_y - dy ) / self.tile_size -# self.reftile_x += tile_x -# self.reftile_y += tile_y - -# self.refpix_x -= dx + self.tile_size * tile_x -# self.refpix_y -= dy + self.tile_size * tile_y - - self.mapwidget._bg.vport[0] += dx - self.mapwidget._bg.vport[1] += dy + self.mapwidget._bg.do_change_viewport( dx , dy ) self.mapwidget.update_background() def Up( self ) : @@ -414,6 +418,7 @@ class mapWidget ( gtk.EventBox , interactiveMapWidget ) : self.click_x , self.click_y = event.x , event.y def release_event ( self , widget, event ) : + # NOTE : we use origin-current for deltas because the map center moves in the opposite direction delta_x = int( self.click_x - event.x ) delta_y = int( self.click_y - event.y ) widget.Shift(delta_x, delta_y)