def test_viewport_container(self): """ Tests event handling of viewports (scaling and translation) """ comp = TestComponent(position=[20, 20]) container = TestContainer(bounds=[100, 100], position=[50, 50]) container.add(comp) viewport = Viewport(component=container, bounds=[400, 400], position=[30, 30]) # Test unscaled event event = BasicEvent(x=105, y=105) viewport.dispatch(event, "left_down") self.assertTrue(container.last_event.x == 75) self.assertTrue(container.last_event.y == 75) self.assertTrue(comp.last_event.x == 25) self.assertTrue(comp.last_event.y == 25) # Translate the viewport's view_position container.last_event = None comp.last_event = None viewport.view_position = [-10, -10] event = BasicEvent(x=115, y=115) viewport.dispatch(event, "left_down") self.assertTrue(container.last_event.x == 75) self.assertTrue(container.last_event.y == 75) self.assertTrue(comp.last_event.x == 25) self.assertTrue(comp.last_event.y == 25) # Do a zoom container.last_event = None comp.last_event = None # Zoom in by a factor of 2, so view an area that is 200x200. viewport.zoom = 2.0 viewport.enable_zoom = True viewport.view_position = [-50, -50] viewport.view_bounds = [200, 200] event = BasicEvent(x=280, y=280) viewport.dispatch(event, "left_down") self.assertTrue(container.last_event.x == 75) self.assertTrue(container.last_event.y == 75) self.assertTrue(comp.last_event.x == 25) self.assertTrue(comp.last_event.y == 25) return
def _create_window(self): canvas = Canvas(bgcolor="lightsteelblue", draw_axes=True) canvas.overlays.append(EventTracer(canvas, color="green", size=8, angle=45.0)) viewport = Viewport(component=canvas, enable_zoom=True) viewport.view_position = [0,0] viewport.tools.append(ViewportPanTool(viewport, drag_button="right")) viewport.overlays.append(EventTracer(viewport)) if 1: scrolled = Scrolled(canvas, inside_padding_width = 0, mousewheel_scroll = False, viewport_component = viewport, always_show_sb = True, continuous_drag_update = True) return Window(self, -1, component=scrolled) elif 1: viewport.bounds = [300, 300] viewport.position = [10,10] container = Container(fit_window=True, auto_size=False, border_visible=True, border_color = "blue") container.padding = 20 container.add(viewport) return Window(self, -1, component=container) else: return Window(self, -1, component=viewport)
def test_viewport_container(self): """ Tests event handling of viewports (scaling and translation) """ comp = TestComponent(position=[20,20]) container = TestContainer(bounds=[100,100], position=[50,50]) container.add(comp) viewport = Viewport(component=container, bounds=[400,400], position=[30,30]) # Test unscaled event event = BasicEvent(x=105, y=105) viewport.dispatch(event, "left_down") self.assertTrue(container.last_event.x == 75) self.assertTrue(container.last_event.y == 75) self.assertTrue(comp.last_event.x == 25) self.assertTrue(comp.last_event.y == 25) # Translate the viewport's view_position container.last_event = None comp.last_event = None viewport.view_position = [-10,-10] event = BasicEvent(x=115, y=115) viewport.dispatch(event, "left_down") self.assertTrue(container.last_event.x == 75) self.assertTrue(container.last_event.y == 75) self.assertTrue(comp.last_event.x == 25) self.assertTrue(comp.last_event.y == 25) # Do a zoom container.last_event = None comp.last_event = None # Zoom in by a factor of 2, so view an area that is 200x200. viewport.zoom = 2.0 viewport.enable_zoom = True viewport.view_position = [-50, -50] viewport.view_bounds = [200, 200] event = BasicEvent(x=280, y=280) viewport.dispatch(event, "left_down") self.assertTrue(container.last_event.x == 75) self.assertTrue(container.last_event.y == 75) self.assertTrue(comp.last_event.x == 25) self.assertTrue(comp.last_event.y == 25) return
def __container_default(self): """ default setter for _container """ viewport = Viewport(component=self._canvas, enable_zoom=True) viewport.view_position = [0, 0] viewport.tools.append(ViewportPanTool(viewport)) return Scrolled(self._canvas, viewport_component=viewport)
def __container_default(self): """ default setter for _container """ viewport = Viewport(component=self._canvas, enable_zoom=True) viewport.view_position = [0, 0] viewport.tools.append(ViewportPanTool(viewport)) return Scrolled(self._canvas, viewport_component=viewport)
def _viewport_default(self): """ Trait initialiser. """ vp = Viewport(component=self.canvas) vp.enable_zoom=False vp.view_position = [-5, -5] return vp
def create_component(self): canvas = Canvas(bgcolor="lightsteelblue", draw_axes=True) from basic_move import Box box = Box(color="red", bounds=[50, 50], resizable="") box.position = [75, 75] canvas.add(box) viewport = Viewport(component=canvas) viewport.view_position = [0, 0] viewport.tools.append(ViewportPanTool(viewport)) return viewport
def _create_window(self): canvas = Canvas(bgcolor="lightsteelblue", draw_axes=True) from basic_move import Box box = Box(color="red", bounds=[50,50], resizable="") box.position= [75,75] canvas.add(box) viewport = Viewport(component=canvas) viewport.view_position = [0,0] viewport.tools.append(ViewportPanTool(viewport)) return Window(self, -1, component=viewport)
def _create_component(self): canvas = DropCanvas(bgcolor="lightsteelblue", draw_axes=True) canvas.overlays.append(EventTracer(canvas, color="green", size=8, angle=45.0)) viewport = Viewport(component=canvas, enable_zoom=True) viewport.view_position = [0, 0] viewport.tools.append(ViewportPanTool(viewport, drag_button="right")) viewport.overlays.append(EventTracer(viewport)) scrolled = Scrolled(canvas, inside_padding_width=0, mousewheel_scroll=False, viewport_component=viewport, always_show_sb=True, continuous_drag_update=True) return scrolled
def _create_window(self): canvas = Canvas(bgcolor="lightsteelblue", draw_axes=True) canvas.overlays.append(EventTracer(canvas, color="green", size=8, angle=45.0)) viewport = Viewport(component=canvas, enable_zoom=True) viewport.view_position = [0,0] viewport.tools.append(ViewportPanTool(viewport, drag_button="right")) viewport.overlays.append(EventTracer(viewport)) scrolled = Scrolled(canvas, inside_padding_width = 0, mousewheel_scroll = False, viewport_component = viewport, always_show_sb = True, continuous_drag_update = True) return Window(self, -1, component=scrolled)
def _create_window(self): canvas = Canvas(bgcolor="lightsteelblue", draw_axes=True) boxgridsize = 8 boxsize = 50 spacing = boxsize * 2 offset = spacing / 2 origin_color = array([0.0, 0.0, 1.0]) x_color = array([0.0, 1.0, 0.0]) y_color = array([1.0, 0.0, 0.0]) for i in range(boxgridsize): for j in range(boxgridsize): color = tuple(x_color / (boxgridsize - 1) * i + y_color / (boxgridsize - 1) * j + origin_color) + (1.0,) box = Box(color=color, bounds=[boxsize, boxsize], resizable="") box.position = [i * spacing + offset - boxsize / 2 + 0.5, j * spacing + offset - boxsize / 2 + 0.5] canvas.add(box) viewport = Viewport(component=canvas, enable_zoom=True) viewport.view_position = [0, 0] viewport.tools.append(ViewportPanTool(viewport)) # Uncomment the following to enforce limits on the zoom # viewport.min_zoom = 0.1 # viewport.max_zoom = 3.0 scrolled = Scrolled( canvas, fit_window=True, inside_padding_width=0, mousewheel_scroll=False, viewport_component=viewport, always_show_sb=True, continuous_drag_update=True, ) return Window(self, -1, component=scrolled)
def _create_window(self): self.canvas = Canvas(bgcolor='lightgrey', draw_axes=True, fit_window = True) sys,cat = load_system("datsun truck.repo") # sys,cat = load_system() # find_technologies(sys) self.make_components(sys) viewport = Viewport(component=self.canvas,enable_zoom=True) max_x = 0 max_y = 0 for art in sys.artifacts: try: if art.drawable.x2 > max_x: max_x = art.drawable.x2 if art.drawable.y2 > max_y: max_y = art.drawable.y2 except AttributeError: pass # max_x = max([art.drawable.x2 for art in sys.artifacts]) # max_y = max([art.drawable.y2 for art in sys.artifacts]) viewport.view_position = [max_x/2,max_y/2] viewport.view_bounds = self.canvas.bounds viewport.zoom = 0.3 viewport.zoom_tool.wheel_zoom_step = 1 viewport.tools.append(ViewportPanTool(viewport)) self.viewport = viewport self.fit_window() return Window(self, -1, component=viewport)