Ejemplo n.º 1
0
    def __init__(self, printer_uuid):
        template = os.path.split(__file__)[0]
        template = os.path.join(template, "templates", "printer_control.glade")
        self.builder = Gtk.Builder()
        self.builder.add_from_file(template)
        self.builder.connect_signals(self)

        window = self.builder.get_object("window1")
        self.widget = window.get_child()
        window.remove(self.widget)

        self.controls = self.builder.get_object("control_widgets_box")
        self.crosshair = Crosshair(self)
        self.info = None
        self.gauges = {
            "b": None,
            "t": [],
        }
        self.update_controls()
        self.disable()
        self.set_printer_name("Unknown Printer")

        PrinterInterface.__init__(self, printer_uuid)
Ejemplo n.º 2
0
    def __init__(self,
                 world_to_slice,
                 layers=None,
                 annotations=None,
                 interpolation=False,
                 display_coordinates="physical",
                 scalar_bar_visibility=False,
                 orientation_visibility=True,
                 corner_annotations_visibility=False,
                 crosshair="full"):

        layers = layers or []
        annotations = annotations or ObservableList()

        ############################
        # Property-related members #
        ############################

        self._interpolation = None
        self._display_coordinates = None
        self._scalar_bar_visibility = True
        self._orientation_visibility = None
        self._corner_annotations_visibility = None
        self._crosshair = None

        self._world_to_slice = None

        self._slice_to_world = None

        self._layers = []

        self._annotations = None
        self._gui_annotations = {}

        self._image_physical_position = None
        self._image_index_position = None

        self._cursor_physical_position = None
        self._cursor_index_position = None

        self._zoom = None

        self._mouse_tools = {}
        self._keyboard_tools = {}

        self._renderer = vtkRenderer()

        ###################
        # Private members #
        ###################

        # World-to-slice matrix, with rows and columns added or removed so that
        # it is 3x3.
        self._3d_world_to_slice = None
        self._3d_slice_to_world = None

        # Slice extent is the physical extent of all layers,
        # given as (x_min, x_max, y_min, y_max)
        self._slice_extent = (-100, 100, -100, 100)

        # VTK objects
        self._scalar_bar_actor = vtkScalarBarActor()
        self._corner_annotation = vtkCornerAnnotation()
        self._orientation_annotation = vtkOrientationAnnotation()
        self._crosshair = Crosshair()

        # Tools and interactions
        self._observer_tags = []
        self._active_source = None

        ##################
        # Initialization #
        ##################

        super(Slice, self).__init__([
            "world_to_slice", "interpolation", "display_coordinates",
            "scalar_bar_visibility", "orientation_visibility",
            "corner_annotations_visibility", "crosshair", "zoom"
        ])
        self.add_allowed_event("cursor_position")
        self.add_allowed_event("image_position")
        self.add_allowed_event("center")
        self.add_allowed_event("layer_visibility")

        # Configure camera
        camera = self._renderer.GetActiveCamera()
        camera.ParallelProjectionOn()
        camera.SetPosition(0, 0, self._actors_altitudes["camera"])
        camera.SetFocalPoint(0, 0, 0)

        # Create cursor
        self._crosshair.altitude = self._actors_altitudes["cursor"]
        self._crosshair.hole_size = 5
        self._renderer.AddActor(self._crosshair.actor)

        # Create scalar bar (from vtkInria3D)
        self._scalar_bar_actor.GetLabelTextProperty().SetColor(1.0, 1.0, 1.0)
        self._scalar_bar_actor.GetTitleTextProperty().SetColor(1.0, 1.0, 1.0)
        self._scalar_bar_actor.GetLabelTextProperty().BoldOff()
        self._scalar_bar_actor.GetLabelTextProperty().ShadowOff()
        self._scalar_bar_actor.GetLabelTextProperty().ItalicOff()
        self._scalar_bar_actor.SetNumberOfLabels(3)
        self._scalar_bar_actor.GetLabelTextProperty().SetFontSize(8)
        self._scalar_bar_actor.GetPositionCoordinate(
        ).SetCoordinateSystemToNormalizedViewport()
        self._scalar_bar_actor.SetWidth(0.1)
        self._scalar_bar_actor.SetHeight(0.5)
        self._scalar_bar_actor.SetPosition(0.8, 0.3)
        self._scalar_bar_actor.PickableOff()
        self._renderer.AddActor(self._scalar_bar_actor)

        # Setup text-annotation actors
        self._corner_annotation.SetNonlinearFontScaleFactor(0.3)
        self._renderer.AddActor(self._corner_annotation)
        self._orientation_annotation.SetNonlinearFontScaleFactor(0.25)
        self._renderer.AddActor(self._orientation_annotation)

        self._set_interpolation(interpolation)
        self._set_display_coordinates(display_coordinates)

        self._set_scalar_bar_visibility(scalar_bar_visibility)
        self._set_orientation_visibility(orientation_visibility)
        self._set_corner_annotations_visibility(corner_annotations_visibility)
        self._set_crosshair(crosshair)

        self._set_world_to_slice(world_to_slice)

        for layer in layers:
            self.append_layer(**layer)

        if annotations is not None:
            self._set_annotations(annotations)

        # Position slice at middle of layer 0
        self.reset_view()

        # Configure default tools
        self.set_mouse_button_tool("Left", mouse_tools.Select())
        self.set_mouse_button_tool("Middle", mouse_tools.Pan())
        self.set_mouse_button_tool("Right", mouse_tools.WindowLevel())
        self.set_wheel_tool("Forward", mouse_tools.Zoom(1.1))
        self.set_wheel_tool("Backward", mouse_tools.Zoom(1. / 1.1))
        self.set_keyboard_tool("Left", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("Right", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("Up", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("Down", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("Prior", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("Next", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("PageUp", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("PageDown", keyboard_tools.MoveCursor())
        self.set_keyboard_tool("+", keyboard_tools.Zoom(1.1))
        self.set_keyboard_tool("-", keyboard_tools.Zoom(1. / 1.1))
        self.set_keyboard_tool("i", keyboard_tools.ToggleInterpolation())
        self.set_keyboard_tool("b", keyboard_tools.ToggleScalarBarVisibility())
        self.set_keyboard_tool(
            "c", keyboard_tools.ToggleCornerAnnotationsVisibility())
        self.set_keyboard_tool("o",
                               keyboard_tools.ToggleOrientationVisibility())