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)
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())