1 |
# Copyright (c) 2001, 2002 by Intevation GmbH |
# Copyright (c) 2001, 2002, 2003 by Intevation GmbH |
2 |
# Authors: |
# Authors: |
3 |
# Bernhard Herzog <[email protected]> |
# Bernhard Herzog <[email protected]> |
4 |
# |
# |
279 |
# if the mouse is outside the window. |
# if the mouse is outside the window. |
280 |
self.current_position = None |
self.current_position = None |
281 |
|
|
|
# If true, OnIdle will call do_redraw to do the actual |
|
|
# redrawing. Set by OnPaint to avoid some unnecessary redraws. |
|
|
# To force a redraw call full_redraw(). |
|
|
self.redraw_on_idle = 0 |
|
|
|
|
282 |
# the bitmap serving as backing store |
# the bitmap serving as backing store |
283 |
self.bitmap = None |
self.bitmap = None |
284 |
|
|
298 |
EVT_MOTION(self, self.OnMotion) |
EVT_MOTION(self, self.OnMotion) |
299 |
EVT_LEAVE_WINDOW(self, self.OnLeaveWindow) |
EVT_LEAVE_WINDOW(self, self.OnLeaveWindow) |
300 |
wx.EVT_SIZE(self, self.OnSize) |
wx.EVT_SIZE(self, self.OnSize) |
|
wx.EVT_IDLE(self, self.OnIdle) |
|
301 |
|
|
302 |
def __del__(self): |
def __del__(self): |
303 |
wxWindow.__del__(self) |
wxWindow.__del__(self) |
306 |
def OnPaint(self, event): |
def OnPaint(self, event): |
307 |
dc = wxPaintDC(self) |
dc = wxPaintDC(self) |
308 |
if self.map is not None and self.map.HasLayers(): |
if self.map is not None and self.map.HasLayers(): |
309 |
# We have a non-empty map. Redraw it in idle time |
self.do_redraw() |
|
self.redraw_on_idle = 1 |
|
310 |
else: |
else: |
311 |
# If we've got no map or if the map is empty, simply clear |
# If we've got no map or if the map is empty, simply clear |
312 |
# the screen. |
# the screen. |
497 |
offx, offy = self.offset |
offx, offy = self.offset |
498 |
self.set_view_transform(self.scale, (offx + dx, offy + dy)) |
self.set_view_transform(self.scale, (offx + dx, offy + dy)) |
499 |
|
|
500 |
|
def SelectTool(self, tool): |
501 |
|
"""Make tool the active tool. |
502 |
|
|
503 |
|
The parameter should be an instance of Tool or None to indicate |
504 |
|
that no tool is active. |
505 |
|
""" |
506 |
|
self.tool = tool |
507 |
|
|
508 |
def ZoomInTool(self): |
def ZoomInTool(self): |
509 |
"""Start the zoom in tool""" |
"""Start the zoom in tool""" |
510 |
self.tool = ZoomInTool(self) |
self.SelectTool(ZoomInTool(self)) |
511 |
|
|
512 |
def ZoomOutTool(self): |
def ZoomOutTool(self): |
513 |
"""Start the zoom out tool""" |
"""Start the zoom out tool""" |
514 |
self.tool = ZoomOutTool(self) |
self.SelectTool(ZoomOutTool(self)) |
515 |
|
|
516 |
def PanTool(self): |
def PanTool(self): |
517 |
"""Start the pan tool""" |
"""Start the pan tool""" |
518 |
self.tool = PanTool(self) |
self.SelectTool(PanTool(self)) |
519 |
|
|
520 |
def IdentifyTool(self): |
def IdentifyTool(self): |
521 |
"""Start the identify tool""" |
"""Start the identify tool""" |
522 |
self.tool = IdentifyTool(self) |
self.SelectTool(IdentifyTool(self)) |
523 |
|
|
524 |
def LabelTool(self): |
def LabelTool(self): |
525 |
"""Start the label tool""" |
"""Start the label tool""" |
526 |
self.tool = LabelTool(self) |
self.SelectTool(LabelTool(self)) |
527 |
|
|
528 |
def CurrentTool(self): |
def CurrentTool(self): |
529 |
"""Return the name of the current tool or None if no tool is active""" |
"""Return the name of the current tool or None if no tool is active""" |
569 |
self.set_current_position(event) |
self.set_current_position(event) |
570 |
if self.dragging: |
if self.dragging: |
571 |
self.ReleaseMouse() |
self.ReleaseMouse() |
572 |
self.tool.Hide(self.drag_dc) |
try: |
573 |
self.tool.MouseUp(event) |
self.tool.Hide(self.drag_dc) |
574 |
self.drag_dc = None |
self.tool.MouseUp(event) |
575 |
self.dragging = 0 |
finally: |
576 |
|
self.drag_dc = None |
577 |
|
self.dragging = 0 |
578 |
|
|
579 |
def OnMotion(self, event): |
def OnMotion(self, event): |
580 |
self.set_current_position(event) |
self.set_current_position(event) |
586 |
def OnLeaveWindow(self, event): |
def OnLeaveWindow(self, event): |
587 |
self.set_current_position(None) |
self.set_current_position(None) |
588 |
|
|
|
def OnIdle(self, event): |
|
|
if self.redraw_on_idle: |
|
|
self.do_redraw() |
|
|
self.redraw_on_idle = 0 |
|
|
|
|
589 |
def OnSize(self, event): |
def OnSize(self, event): |
590 |
# the window's size has changed. We have to get a new bitmap. If |
# the window's size has changed. We have to get a new bitmap. If |
591 |
# we want to be clever we could try to get by without throwing |
# we want to be clever we could try to get by without throwing |