19 |
|
|
20 |
from math import hypot |
from math import hypot |
21 |
|
|
22 |
from wxPython.wx import wxWindow,\ |
from wxPython.wx import wxWindow, wxYield,\ |
23 |
wxPaintDC, wxColour, wxClientDC, wxINVERT, wxTRANSPARENT_BRUSH, wxFont,\ |
wxPaintDC, wxColour, wxClientDC, wxINVERT, wxTRANSPARENT_BRUSH, wxFont,\ |
24 |
EVT_PAINT, EVT_LEFT_DOWN, EVT_LEFT_UP, EVT_MOTION, EVT_LEAVE_WINDOW, \ |
EVT_PAINT, EVT_LEFT_DOWN, EVT_LEFT_UP, EVT_MOTION, EVT_LEAVE_WINDOW, \ |
25 |
wxBITMAP_TYPE_XPM, wxBeginBusyCursor, wxEndBusyCursor, wxCursor, \ |
wxBITMAP_TYPE_XPM, wxCursor, wxImageFromBitmap, wxPlatform |
|
wxImageFromBitmap, wxPlatform |
|
26 |
|
|
27 |
# Export related stuff |
# Export related stuff |
28 |
if wxPlatform == '__WXMSW__': |
if wxPlatform == '__WXMSW__': |
43 |
from Thuban.Lib.connector import Publisher |
from Thuban.Lib.connector import Publisher |
44 |
from Thuban.Model.color import Color |
from Thuban.Model.color import Color |
45 |
|
|
46 |
|
from Thuban.UI.common import ThubanBeginBusyCursor, ThubanEndBusyCursor |
47 |
|
|
48 |
import resource |
import resource |
49 |
|
|
50 |
from selection import Selection |
from selection import Selection |
275 |
self.selected_layer, self.selected_shapes) |
self.selected_layer, self.selected_shapes) |
276 |
return True |
return True |
277 |
|
|
|
|
|
278 |
class MapCanvas(wxWindow, Publisher): |
class MapCanvas(wxWindow, Publisher): |
279 |
|
|
280 |
"""A widget that displays a map and offers some interaction""" |
"""A widget that displays a map and offers some interaction""" |
383 |
dc = wxPaintDC(self) |
dc = wxPaintDC(self) |
384 |
clear = self.map is None or not self.map.HasLayers() |
clear = self.map is None or not self.map.HasLayers() |
385 |
|
|
386 |
wxBeginBusyCursor() |
ThubanBeginBusyCursor() |
387 |
try: |
try: |
388 |
if not clear: |
if not clear: |
389 |
self.do_redraw() |
self.do_redraw() |
405 |
dc.Clear() |
dc.Clear() |
406 |
dc.EndDrawing() |
dc.EndDrawing() |
407 |
finally: |
finally: |
408 |
wxEndBusyCursor() |
ThubanEndBusyCursor() |
409 |
|
|
410 |
def do_redraw(self): |
def do_redraw(self): |
411 |
# This should only be called if we have a non-empty map. |
# This should only be called if we have a non-empty map. |
943 |
layer = layers[layer_index] |
layer = layers[layer_index] |
944 |
|
|
945 |
# search only in visible layers |
# search only in visible layers |
946 |
if not layer.Visible(): |
if not layer.Visible() or not layer.HasShapes(): |
947 |
continue |
continue |
948 |
|
|
949 |
filled = layer.GetClassification().GetDefaultFill() \ |
filled = layer.GetClassification().GetDefaultFill() \ |