23 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
23 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
24 |
24 |
25 import wx |
25 import wx |
26 |
26 |
27 from controls.CustomToolTip import CustomToolTip, TOOLTIP_WAIT_PERIOD |
27 from controls.CustomToolTip import CustomToolTip, TOOLTIP_WAIT_PERIOD |
28 |
28 |
29 #------------------------------------------------------------------------------- |
29 #------------------------------------------------------------------------------- |
30 # Tool Tip Producer class |
30 # Tool Tip Producer class |
31 #------------------------------------------------------------------------------- |
31 #------------------------------------------------------------------------------- |
32 |
32 |
33 """ |
33 """ |
34 Class that implements an element that generate Tool Tip |
34 Class that implements an element that generate Tool Tip |
35 """ |
35 """ |
36 |
36 |
37 class ToolTipProducer: |
37 class ToolTipProducer: |
38 |
38 |
39 def __init__(self, parent): |
39 def __init__(self, parent): |
40 """ |
40 """ |
41 Constructor |
41 Constructor |
42 @param parent: Parent Viewer |
42 @param parent: Parent Viewer |
43 """ |
43 """ |
44 self.Parent = parent |
44 self.Parent = parent |
45 |
45 |
46 self.ToolTip = None |
46 self.ToolTip = None |
47 self.ToolTipPos = None |
47 self.ToolTipPos = None |
48 |
48 |
49 # Timer for firing Tool tip display |
49 # Timer for firing Tool tip display |
50 self.ToolTipTimer = wx.Timer(self.Parent, -1) |
50 self.ToolTipTimer = wx.Timer(self.Parent, -1) |
51 self.Parent.Bind(wx.EVT_TIMER, |
51 self.Parent.Bind(wx.EVT_TIMER, |
52 self.OnToolTipTimer, |
52 self.OnToolTipTimer, |
53 self.ToolTipTimer) |
53 self.ToolTipTimer) |
54 |
54 |
55 def __del__(self): |
55 def __del__(self): |
56 """ |
56 """ |
57 Destructor |
57 Destructor |
58 """ |
58 """ |
59 self.DestroyToolTip() |
59 self.DestroyToolTip() |
60 |
60 |
61 def OnToolTipTimer(self, event): |
61 def OnToolTipTimer(self, event): |
62 """ |
62 """ |
63 Callback for Tool Tip firing timer Event |
63 Callback for Tool Tip firing timer Event |
64 @param event: Tool tip text |
64 @param event: Tool tip text |
65 """ |
65 """ |
66 # Get Tool Tip text |
66 # Get Tool Tip text |
67 value = self.GetToolTipValue() |
67 value = self.GetToolTipValue() |
68 |
68 |
69 if value is not None and self.ToolTipPos is not None: |
69 if value is not None and self.ToolTipPos is not None: |
70 # Create Tool Tip |
70 # Create Tool Tip |
71 self.ToolTip = CustomToolTip(self.Parent, value) |
71 self.ToolTip = CustomToolTip(self.Parent, value) |
72 self.ToolTip.SetToolTipPosition(self.ToolTipPos) |
72 self.ToolTip.SetToolTipPosition(self.ToolTipPos) |
73 self.ToolTip.Show() |
73 self.ToolTip.Show() |
74 |
74 |
75 def GetToolTipValue(self): |
75 def GetToolTipValue(self): |
76 """ |
76 """ |
77 Return tool tip text |
77 Return tool tip text |
78 Have to be overridden by inherited classes |
78 Have to be overridden by inherited classes |
79 @return: Tool tip text (None if not overridden) |
79 @return: Tool tip text (None if not overridden) |
80 """ |
80 """ |
81 return None |
81 return None |
82 |
82 |
83 def DisplayToolTip(self, pos): |
83 def DisplayToolTip(self, pos): |
84 """ |
84 """ |
85 Display Tool tip |
85 Display Tool tip |
86 @param pos: Tool tip position |
86 @param pos: Tool tip position |
87 """ |
87 """ |
88 # Destroy current displayed Tool tip |
88 # Destroy current displayed Tool tip |
89 self.DestroyToolTip() |
89 self.DestroyToolTip() |
90 |
90 |
91 # Save Tool Tip position |
91 # Save Tool Tip position |
92 self.ToolTipPos = pos |
92 self.ToolTipPos = pos |
93 # Start Tool tip firing timer |
93 # Start Tool tip firing timer |
94 self.ToolTipTimer.Start( |
94 self.ToolTipTimer.Start( |
95 int(TOOLTIP_WAIT_PERIOD * 1000), |
95 int(TOOLTIP_WAIT_PERIOD * 1000), |
96 oneShot=True) |
96 oneShot=True) |
97 |
97 |
98 def SetToolTipText(self, text): |
98 def SetToolTipText(self, text): |
99 """ |
99 """ |
100 Set current Tool tip text |
100 Set current Tool tip text |
101 @param text: Tool tip Text |
101 @param text: Tool tip Text |
102 """ |
102 """ |
103 if self.ToolTip is not None: |
103 if self.ToolTip is not None: |
104 self.ToolTip.SetTip(text) |
104 self.ToolTip.SetTip(text) |
105 |
105 |
106 def DestroyToolTip(self): |
106 def DestroyToolTip(self): |
107 """ |
107 """ |
108 Destroy current displayed Tool Tip |
108 Destroy current displayed Tool Tip |
109 """ |
109 """ |
110 # Stop Tool tip firing timer |
110 # Stop Tool tip firing timer |
111 self.ToolTipTimer.Stop() |
111 self.ToolTipTimer.Stop() |
112 self.ToolTipPos = None |
112 self.ToolTipPos = None |
113 |
113 |
114 # Destroy Tool Tip |
114 # Destroy Tool Tip |
115 if self.ToolTip is not None: |
115 if self.ToolTip is not None: |
116 self.ToolTip.Destroy() |
116 self.ToolTip.Destroy() |
117 self.ToolTip = None |
117 self.ToolTip = None |