diff -r efedc9d06a59 -r b7062a7018ec graphics/GraphicCommons.py --- a/graphics/GraphicCommons.py Thu Jan 12 17:04:22 2012 +0100 +++ b/graphics/GraphicCommons.py Tue Jan 17 16:44:00 2012 +0100 @@ -101,6 +101,9 @@ # Define highlight refresh inhibition period in second REFRESH_HIGHLIGHT_PERIOD = 0.1 +# Define tooltip wait for displaying period in second +TOOLTIP_WAIT_PERIOD = 0.5 + HANDLE_CURSORS = { (1, 1) : 2, (3, 3) : 2, @@ -602,6 +605,13 @@ self.Size = wx.Size(0, 0) self.BoundingBox = wx.Rect(0, 0, 0, 0) self.Visible = False + self.ToolTip = None + self.ToolTipPos = None + self.ToolTipTimer = wx.Timer(self.Parent, -1) + self.Parent.Bind(wx.EVT_TIMER, self.OnToolTipTimer, self.ToolTipTimer) + + def __del__(self): + self def GetDefinition(self): return [self.Id], [] @@ -967,6 +977,36 @@ return movex, movey return 0, 0 + def OnToolTipTimer(self, event): + value = self.GetToolTipValue() + if value is not None and self.ToolTipPos is not None: + self.ToolTip = ToolTip(self.Parent, value) + self.ToolTip.MoveToolTip(self.ToolTipPos) + self.ToolTip.Show() + + def GetToolTipValue(self): + return None + + def CreateToolTip(self, pos): + value = self.GetToolTipValue() + if value is not None: + self.ToolTipPos = pos + self.ToolTipTimer.Start(int(TOOLTIP_WAIT_PERIOD * 1000), oneShot=True) + + def MoveToolTip(self, pos): + if self.ToolTip is not None: + self.ToolTip.MoveToolTip(pos) + elif self.ToolTipPos is not None: + self.ToolTipPos = pos + self.ToolTipTimer.Start(int(TOOLTIP_WAIT_PERIOD * 1000), oneShot=True) + + def ClearToolTip(self): + self.ToolTipTimer.Stop() + self.ToolTipPos = None + if self.ToolTip is not None: + self.ToolTip.Destroy() + self.ToolTip = None + # Override this method for defining the method to call for adding an highlight to this element def AddHighlight(self, infos, start, end, highlight_type): pass @@ -1792,7 +1832,6 @@ self.OverStart = False self.OverEnd = False self.ComputingType = False - self.ToolTip = None self.Font = parent.GetMiniFont() def GetDefinition(self): @@ -1806,24 +1845,13 @@ self.StartConnected = None self.EndConnected = None - def CreateToolTip(self, pos): + def GetToolTipValue(self): if self.Value is not None and self.Value != "undefined" and not isinstance(self.Value, BooleanType): if isinstance(self.Value, StringType) and self.Value.find("#") == -1: - computed_value = "\"%s\""%self.Value + return "\"%s\""%self.Value else: - computed_value = str(self.Value) - self.ToolTip = ToolTip(self.Parent, computed_value) - self.ToolTip.MoveToolTip(pos) - self.ToolTip.Show() - - def MoveToolTip(self, pos): - if self.ToolTip is not None: - self.ToolTip.MoveToolTip(pos) - - def ClearToolTip(self): - if self.ToolTip is not None: - self.ToolTip.Destroy() - self.ToolTip = None + return str(self.Value) + return None # Returns the RedrawRect def GetRedrawRect(self, movex = 0, movey = 0):