Пример #1
0
 def __init__(self, parent, value="", output=False, *args, **kwargs):
     
     self._preferences = medipy.gui.base.Preferences(
         wx.GetApp().GetAppName(), wx.GetApp().GetVendorName())
     
     ##############
     # Properties #
     ##############
     self._value = None
     self._default_value = None
     self._output = False 
     
     ##################
     # Initialization #
     ##################
     kwargs["style"] = kwargs.get("style", 0) | wx.TAB_TRAVERSAL
     wx.Panel.__init__(self, parent, *args, **kwargs)
     Observable.__init__(self, ["value"])
     
     # Widgets
     self._text = wx.TextCtrl(self)
     self._button = wx.Button(self, label="...", size=(30, -1))
     # Layout
     sizer = wx.BoxSizer(wx.HORIZONTAL)
     self.SetSizer(sizer)
     sizer.Add(self._text, 1)
     sizer.Add(self._button)
     # Events
     self._text.Bind(wx.EVT_TEXT, self.OnText)
     self._button.Bind(wx.EVT_BUTTON, self.OnButton)
     
     self._set_value(value)
     self._set_default_value(value)
     self._set_output(output)
Пример #2
0
    def __init__(self, parent, value=False, *args, **kwargs):
        ##############
        # Properties #
        ##############
        self._value = None
        self._default_value = None

        ##################
        # Initialization #
        ##################
        wx.Panel.__init__(self, parent, *args, **kwargs)
        Observable.__init__(self, ["value"])

        # Widgets
        self._checkbox = wx.CheckBox(self)
        # Layout
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.SetSizer(sizer)
        sizer.Add(self._checkbox, 0)

        # Events
        self._checkbox.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)

        self._set_value(value)
        self._set_default_value(value)
Пример #3
0
    def __init__(self, parent, choices=None, value=None, *args, **kwargs):

        choices = choices or []

        ##############
        # Properties #
        ##############
        self._value = None
        self._default_value = None
        self._choices = None

        ##############
        # Initialize #
        ##############
        if value is None and choices:
            value = choices[0]

        wx.Panel.__init__(self, parent, *args, **kwargs)
        Observable.__init__(self, ["value"])

        # Widgets
        self._choices_widget = wx.Choice(self)
        # Layout
        sizer = wx.BoxSizer()
        sizer.Add(self._choices_widget)
        self.SetSizer(sizer)
        self.Layout()
        # Events :
        self._choices_widget.Bind(wx.EVT_CHOICE, self.OnChoiceChanged)

        self._set_choices(choices)
        self._set_default_value(value)
        self._set_value(value)
Пример #4
0
 def __init__(self, parent, value=0, range=None, *args, **kwargs):
     
     ##############
     # Properties #
     ##############
     self._value = None
     self._default_value = None 
     self._range = None
     
     ##################
     # Initialization #
     ##################
     kwargs["style"] = kwargs.get("style", 0) | wx.TAB_TRAVERSAL
     wx.Panel.__init__(self, parent, *args, **kwargs)
     Observable.__init__(self, ["value"])
     
     # Widgets
     self._text = wx.TextCtrl(self)
     self._slider = wx.Slider(self)
     # Layout
     sizer = wx.BoxSizer(wx.HORIZONTAL)
     self.SetSizer(sizer)
     sizer.Add(self._text, 1, wx.ALIGN_CENTER)
     sizer.Add(self._slider, 2, wx.ALIGN_CENTER)
     # Events
     self._text.Bind(wx.EVT_TEXT, self.OnText)
     self._slider.Bind(wx.EVT_SLIDER, self.OnSlider)
     
     self._set_value(value)
     self._set_default_value(value)
     self._set_range(range)
Пример #5
0
    def __init__(self, parent, value="", may_be_empty=True, *args, **kwargs):

        ####################
        # Public interface #
        ####################
        self.may_be_empty = may_be_empty

        ##############
        # Properties #
        ##############
        self._value = None
        self._default_value = None

        ##################
        # Initialization #
        ##################
        kwargs["style"] = kwargs.get("style", 0) | wx.TAB_TRAVERSAL
        wx.Panel.__init__(self, parent, *args, **kwargs)
        Observable.__init__(self, ["value"])

        # Widgets
        self._text = wx.TextCtrl(self)
        # Layout
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.SetSizer(sizer)
        sizer.Add(self._text, 1)
        # Events
        self._text.Bind(wx.EVT_TEXT, self.OnText)

        self._set_value(value)
        self._set_default_value(value)
Пример #6
0
    def __init__(self,
                 parent,
                 choices,
                 value=None,
                 output_checked=False,
                 *args,
                 **kwargs):
        """ Control to select a 3D scene to which the Object3D will be appended
        """
        ##############
        # Properties #
        ##############
        self._value = None
        self._default_value = None
        self._choices = choices
        self._default_output_checked = None

        ##############
        # Initialize #
        ##############
        if value is None and len(choices) > 0:
            value = choices[0]

        wx.Panel.__init__(self, parent, *args, **kwargs)
        Observable.__init__(self, ["value"])

        # Widgets
        self._checkbox = wx.CheckBox(self, label="(new)")
        # Layout
        sizer = wx.BoxSizer(wx.VERTICAL)
        self._radiobuttons_sizer = wx.GridSizer()
        sizer.Add(self._radiobuttons_sizer)
        sizer.Add(self._checkbox)
        self.SetSizer(sizer)
        # Events
        self._checkbox.Bind(wx.EVT_CHECKBOX, self.OnCheckBox)

        self._set_default_value(value)
        self._set_output_checked(output_checked)
        self._set_default_output_checked(output_checked)
        self._set_choices(choices)
        self._set_value(value)

        self._choices.add_observer("any", self._on_choices_modified)
    def __init__(self, parent, function, images, viewer_3ds, config_path=None):

        # The observers of these events are notified when the FunctionGUIBuilder
        # has to modify its images/viewer_3ds as a result of the user choices
        # in the GUI.
        Observable.__init__(self, [
            "new_image", "replace_image", "new_viewer_3d",
            "set_image_to_object_3d"
        ])

        self.panel = wx.Panel(parent)

        self._controls = {}
        self._function = function
        self._images = images
        self._viewer_3ds = viewer_3ds
        self.config_path = config_path

        self._parameters = parse_docstring(self._function.__doc__)

        # Run & reset buttons
        self._run_button = wx.Button(self.panel, label="Run")
        reset_button = wx.Button(self.panel, label="Reset")
        buttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
        buttons_sizer.AddStretchSpacer(1)
        buttons_sizer.Add(self._run_button)
        buttons_sizer.Add(reset_button)
        # Controls
        controls_sizer = wx.BoxSizer(wx.VERTICAL)
        self._create_gui(controls_sizer)
        #        self._load_parameters()
        # Main layout
        panel_sizer = wx.BoxSizer(wx.VERTICAL)
        panel_sizer.Add(controls_sizer, flag=wx.EXPAND)
        panel_sizer.Add(buttons_sizer, flag=wx.EXPAND)
        self.panel.SetSizer(panel_sizer)

        # Events
        self._run_button.Bind(wx.EVT_BUTTON, self.OnRunClicked)
        reset_button.Bind(wx.EVT_BUTTON, self.OnResetClicked)
        self._images.add_observer("any", self._on_images_modified)
        self._viewer_3ds.add_observer("any", self._on_viewer_3ds_modified)
Пример #8
0
 def __init__(self, parent, id=wx.ID_ANY, min_max=(0, 100), value=(20,80),
              orientation = wx.VERTICAL, pos=wx.DefaultPosition, size=wx.DefaultSize, 
              style=wx.TAB_TRAVERSAL|wx.NO_BORDER, name=wx.PanelNameStr) :
     
     self._range = min_max
     self._value = None
     self._orientation = None
     
     self._triangle_size = None
     self._line = None
     self._min_triangle = None
     self._max_triangle = None
     
     # Name of the cursor that will be moved by the mouse, or None
     self._moving_cursor = None
     
     wx.PyPanel.__init__(self, parent, id, pos, size, style, name)
     Observable.__init__(self, ["value"])
     
     point_size = self.GetFont().GetPointSize()
     
     self._panel = wx.Panel(self)
     self._min_text = wx.TextCtrl(self, size=(point_size*10, -1))
     self._max_text = wx.TextCtrl(self, size=(point_size*10, -1))
     
     self._triangle_size = point_size*1.2
     
     self._set_orientation(orientation)
     
     self._panel.Bind(wx.EVT_LEFT_DOWN, self.OnLeftClick)
     self._panel.Bind(wx.EVT_LEFT_UP, self.OnLeftRelease)
     self._panel.Bind(wx.EVT_SIZE, self.OnSize)
     self._panel.Bind(wx.EVT_MOTION, self.OnMouseMove)
     self._panel.Bind(wx.EVT_PAINT, self.OnPaint)
     self._panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
     self._min_text.Bind(wx.EVT_TEXT, self.OnText)
     self._max_text.Bind(wx.EVT_TEXT, self.OnText)
     
     self._set_value(value)
Пример #9
0
    def __init__(self, *args, **kwargs):

        wx.Panel.__init__(self, *args, **kwargs)
        Observable.__init__(self, ["active_object"])

        self._objects_3d = ObservableList()
        self._active_object = None

        # Currently pressed button, None if no button is pressed
        self._button = None

        # Bindings from mouse button to tool
        self.tools = {
            "LeftButton": viewer_3d_tools.Rotate(self),
            "MiddleButton": viewer_3d_tools.Pan(self),
            "RightButton": viewer_3d_tools.Dolly(self),
            "MouseWheelForward": viewer_3d_tools.WheelDolly(self, "forward"),
            "MouseWheelBackward": viewer_3d_tools.WheelDolly(self, "backward")
        }

        # Bindings from key to tool
        self.key_bindings = {
            # Nothing by default
        }

        # VTK objects for rendering
        self._renderer = vtkRenderer()
        self._renderer.SetBackground(82. / 255., 87. / 255., 110. / 255.)
        self._renderer.GetActiveCamera().ParallelProjectionOff()

        self._rwi = wxVTKRenderWindowInteractor(self, wx.ID_ANY)
        self._rwi.GetRenderWindow().AddRenderer(self._renderer)
        self._sizer = wx.BoxSizer()
        self._sizer.Add(self._rwi, 1, wx.EXPAND)
        self.SetSizer(self._sizer)

        # Interaction styles : customize events
        self._rwi.SetInteractorStyle(None)

        self._rwi.AddObserver("LeftButtonPressEvent", self._start_interaction)
        self._rwi.AddObserver("MiddleButtonPressEvent",
                              self._start_interaction)
        self._rwi.AddObserver("RightButtonPressEvent", self._start_interaction)

        self._rwi.AddObserver("LeftButtonReleaseEvent", self._stop_interaction)
        self._rwi.AddObserver("MiddleButtonReleaseEvent",
                              self._stop_interaction)
        self._rwi.AddObserver("RightButtonReleaseEvent",
                              self._stop_interaction)

        self._rwi.AddObserver("MouseWheelForwardEvent",
                              self._start_interaction)
        self._rwi.AddObserver("MouseWheelBackwardEvent",
                              self._start_interaction)

        self._rwi.AddObserver("MouseMoveEvent", self._dispatch_interaction)

        self._rwi.AddObserver("KeyPressEvent", self._keypress)
        self._rwi.AddObserver("KeyReleaseEvent", self._keyrelease)

        # Clean up when the window is closed
        self.Bind(wx.EVT_CLOSE, self.OnClose)

        self.objects_3d.add_observer("any", self._on_objects_3d_modified)