graphics/ToolTipProducer.py
changeset 1170 074e46cdedbc
parent 1169 53e4a2b775a7
child 1177 4cbbc58b91b4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics/ToolTipProducer.py	Thu May 23 20:39:10 2013 +0200
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor
+#based on the plcopen standard. 
+#
+#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
+#
+#See COPYING file for copyrights details.
+#
+#This library is free software; you can redistribute it and/or
+#modify it under the terms of the GNU General Public
+#License as published by the Free Software Foundation; either
+#version 2.1 of the License, or (at your option) any later version.
+#
+#This library is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#General Public License for more details.
+#
+#You should have received a copy of the GNU General Public
+#License along with this library; if not, write to the Free Software
+#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import wx
+
+from controls.CustomToolTip import CustomToolTip, TOOLTIP_WAIT_PERIOD
+    
+#-------------------------------------------------------------------------------
+#                           Tool Tip Producer class
+#-------------------------------------------------------------------------------
+
+"""
+Class that implements an element that generate Tool Tip
+"""
+
+class ToolTipProducer:
+    
+    def __init__(self, parent):
+        """
+        Constructor
+        @param parent: Parent Viewer
+        """
+        self.Parent = parent
+        
+        self.ToolTip = None
+        self.ToolTipPos = None
+        
+        # Timer for firing Tool tip display
+        self.ToolTipTimer = wx.Timer(self.Parent, -1)
+        self.Parent.Bind(wx.EVT_TIMER, 
+            self.OnToolTipTimer, 
+            self.ToolTipTimer)
+    
+    def __del__(self):
+        """
+        Destructor
+        """
+        self.DestroyToolTip()
+    
+    def OnToolTipTimer(self, event):
+        """
+        Callback for Tool Tip firing timer Event
+        @param event: Tool tip text
+        """
+        # Get Tool Tip text
+        value = self.GetToolTipValue()
+        
+        if value is not None and self.ToolTipPos is not None:
+            # Create Tool Tip
+            self.ToolTip = CustomToolTip(self.Parent, value)
+            self.ToolTip.SetToolTipPosition(self.ToolTipPos)
+            self.ToolTip.Show()
+    
+    def GetToolTipValue(self):
+        """
+        Generic method that have to be overridden by derived classes 
+        @return: Tool tip text (None if not overridden) 
+        """
+        return None
+    
+    def DisplayToolTip(self, pos):
+        """
+        Display Tool tip
+        @param pos: Tool tip position
+        """
+        # Destroy current displayed Tool tip
+        self.DestroyToolTip()
+        
+        # Save Tool Tip position
+        self.ToolTipPos = pos
+        # Start Tool tip firing timer
+        self.ToolTipTimer.Start(
+            int(TOOLTIP_WAIT_PERIOD * 1000), 
+            oneShot=True)
+    
+    def SetToolTipText(self, text):
+        """
+        Set current Tool tip text
+        @param text: Tool tip Text
+        """
+        if self.ToolTip is not None:
+            self.ToolTip.SetTip(text)
+    
+    def DestroyToolTip(self):
+        """
+        Destroy current displayed Tool Tip
+        """
+        # Stop Tool tip firing timer
+        self.ToolTipTimer.Stop()
+        self.ToolTipPos = None
+        
+        # Destroy Tool Tip
+        if self.ToolTip is not None:
+            self.ToolTip.Destroy()
+            self.ToolTip = None