graphics/ToolTipProducer.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Tue, 13 Sep 2016 21:42:11 +0300
changeset 1533 aca8f43483e9
parent 1177 4cbbc58b91b4
child 1571 486f94a8032c
permissions -rw-r--r--
fix issues in PLCOpenEditor with moving from wxWidgets 2.8 to 3.0

1)
./PLCOpenEditor.py:63: wxPyDeprecationWarning: Using deprecated class PySimpleApp.
app = wx.PySimpleApp()

2)
./PLCOpenEditor.py:475: wxPyDeprecationWarning: Call to deprecated item.
wx.InitAllImageHandlers()

3)
Traceback (most recent call last):
File "./PLCOpenEditor.py", line 480, in <module>
frame = PLCOpenEditor(None, fileOpen=fileOpen)
File "./PLCOpenEditor.py", line 163, in __init__
IDEFrame.__init__(self, parent)
File "/tmp/f/beremiz/IDEFrame.py", line 657, in __init__
self._init_ctrls(parent)
File "/tmp/f/beremiz/IDEFrame.py", line 485, in _init_ctrls
self._init_icon(prnt)
File "/tmp/f/beremiz/IDEFrame.py", line 476, in _init_icon
if self.icon:
AttributeError: 'PLCOpenEditor' object has no attribute 'icon'
#!/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):
        """
        Return tool tip text
        Have to be overridden by inherited 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