source: sasview/src/sas/sasgui/perspectives/calculator/calculator_widgets.py @ 3b8efec

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 3b8efec was d85c194, checked in by Piotr Rozyczko <piotr.rozyczko@…>, 9 years ago

Remaining modules refactored

  • Property mode set to 100644
File size: 3.3 KB
Line 
1"""
2This software was developed by the University of Tennessee as part of the
3Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
4project funded by the US National Science Foundation.
5
6See the license text in license.txt
7
8copyright 2009, University of Tennessee
9"""
10import wx
11import sys
12CHILD_FRAME = wx.MDIChildFrame
13if sys.platform.count("win32") < 1:
14    if sys.platform.count("darwin") < 1:
15        CHILD_FRAME = wx.Frame
16
17class InputTextCtrl(wx.TextCtrl):
18    """
19        Text control for model and fit parameters.
20        Binds the appropriate events for user interactions.
21    """
22    def __init__(self, parent=None, *args, **kwds):
23
24        wx.TextCtrl.__init__(self, parent, *args, **kwds)
25
26        ## Set to True when the mouse is clicked while the whole
27        #string is selected
28        self.full_selection = False
29        ## Call back for EVT_SET_FOCUS events
30        _on_set_focus_callback = None
31        # Bind appropriate events
32        self.Bind(wx.EVT_LEFT_UP, self._highlight_text)
33        self.Bind(wx.EVT_SET_FOCUS, self._on_set_focus)
34        self.Bind(wx.EVT_TEXT_ENTER, parent._onparamEnter)
35
36    def _on_set_focus(self, event):
37        """
38            Catch when the text control is set in focus to highlight the whole
39            text if necessary
40            @param event: mouse event
41        """
42        event.Skip()
43        self.full_selection = True
44
45    def _highlight_text(self, event):
46        """
47            Highlight text of a TextCtrl only of no text has be selected
48            @param event: mouse event
49        """
50        # Make sure the mouse event is available to other listeners
51        event.Skip()
52        control = event.GetEventObject()
53        if self.full_selection:
54            self.full_selection = False
55            # Check that we have a TextCtrl
56            if issubclass(control.__class__, wx.TextCtrl):
57                # Check whether text has been selected,
58                # if not, select the whole string
59                (start, end) = control.GetSelection()
60                if start == end:
61                    control.SetSelection(-1, -1)
62
63
64class InterActiveOutputTextCtrl(wx.TextCtrl):
65    """
66        Text control used to display outputs.
67        No editing allowed. The background is
68        grayed out. User can't select text.
69    """
70    def __init__(self, *args, **kwds):
71        wx.TextCtrl.__init__(self, *args, **kwds)
72        self.SetEditable(False)
73        self.SetBackgroundColour(self.GetParent().GetBackgroundColour())
74
75class OutputTextCtrl(InterActiveOutputTextCtrl):
76    """
77        Text control used to display outputs.
78        No editing allowed. The background is
79        grayed out. User can't select text.
80    """
81    def __init__(self, *args, **kwds):
82        InterActiveOutputTextCtrl.__init__(self, *args, **kwds)
83        self.SetEditable(False)
84        self.SetBackgroundColour(self.GetParent().GetBackgroundColour())
85
86        # Bind to mouse event to avoid text highlighting
87        # The event will be skipped once the call-back
88        # is called.
89        self.Bind(wx.EVT_MOUSE_EVENTS, self._click)
90
91    def _click(self, event):
92        """
93            Prevent further handling of the mouse event
94            by not calling Skip().
95        """
96        pass
97
Note: See TracBrowser for help on using the repository browser.