]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/hyperlink.py
move wxPython to new trunk
[wxWidgets.git] / wxPython / wx / lib / hyperlink.py
diff --git a/wxPython/wx/lib/hyperlink.py b/wxPython/wx/lib/hyperlink.py
deleted file mode 100644 (file)
index 1795e46..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-# --------------------------------------------------------------------------- #
-# HYPERLINKSCTRL wxPython IMPLEMENTATION
-# Ported From Angelo Mandato C++ Code By:
-#
-# Andrea Gavana, @ 27 Mar 2005
-# Latest Revision: 05 Nov 2005, 22.30 CET
-#
-#
-# Original Web Site (For The C++ Code):
-#
-# http://www.spaceblue.com/codedetail.php?CodeID=7
-#
-#
-# Thanks to E. A. Tacao for his nice suggestions and improvements of the code.
-#
-# For all kind of problems, requests of enhancements and bug reports, please
-# write to me at:
-#
-# andrea.gavana@agip.it
-# andrea_gavan@tin.it
-#
-# Or, obviously, to the wxPython mailing list!!!
-#
-#
-# End Of Comments
-# --------------------------------------------------------------------------- #
-
-"""
-`HyperLinkCtrl` is a control for wxPython that acts like a hyper link
-in a typical browser. Latest features include the ability to capture
-your own Left, Middle, and Right click events to perform your own
-custom event handling and ability to open link in a new or current
-browser window.
-
-Special thanks to Robin Dunn for the event binder for the 3 mouse buttons.
-
-
-Latest Revision: Andrea Gavana @ 05 Nov 2005, 22.30 CET
-
-"""
-
-import wx
-from wx.lib.stattext import GenStaticText as StaticText
-
-# Import the useful webbrowser module for platform-independent results
-import webbrowser
-
-# Set no delay time to open the web page
-webbrowser.PROCESS_CREATION_DELAY = 0
-
-# To show a popup that copies the hyperlinks on the clipboard
-wxHYPERLINKS_POPUP_COPY = 1000
-
-
-#-----------------------------------#
-#        HyperLinksEvents
-#-----------------------------------#
-
-# wxEVT_HYPERLINK_LEFT: Respond To A Left Mouse Button Event
-# wxEVT_HYPERLINK_MIDDLE: Respond To A Middle Mouse Button Event
-# wxEVT_HYPERLINK_RIGHT: Respond To A Right Mouse Button Event
-
-wxEVT_HYPERLINK_LEFT = wx.NewEventType()
-wxEVT_HYPERLINK_MIDDLE = wx.NewEventType()
-wxEVT_HYPERLINK_RIGHT = wx.NewEventType()
-
-EVT_HYPERLINK_LEFT = wx.PyEventBinder(wxEVT_HYPERLINK_LEFT, 1)
-EVT_HYPERLINK_MIDDLE = wx.PyEventBinder(wxEVT_HYPERLINK_MIDDLE, 1)
-EVT_HYPERLINK_RIGHT = wx.PyEventBinder(wxEVT_HYPERLINK_RIGHT, 1)
-
-
-# ------------------------------------------------------------
-# This class implements the event listener for the hyperlinks
-# ------------------------------------------------------------
-
-class HyperLinkEvent(wx.PyCommandEvent):
-    """
-    Event object sent in response to clicking on a `HyperLinkCtrl`.
-    """
-
-    def __init__(self, eventType, id):
-        """ Default Class Constructor. """        
-        wx.PyCommandEvent.__init__(self, eventType, id)
-        self._eventType = eventType
-
-
-    def SetPosition(self, pos):
-        """ Sets Event Position """        
-        self._pos = pos
-
-
-    def GetPosition(self):
-        """ Returns Event Position """        
-        return self._pos
-
-
-# -------------------------------------------------
-# This is the main HyperLinkCtrl implementation
-# it user the StatiText from wx.lib.stattext
-# because of its "quasi-dynamic" behavior
-# -------------------------------------------------
-
-class HyperLinkCtrl(StaticText):
-    """
-    `HyperLinkCtrl` is a control for wxPython that acts like a hyper
-    link in a typical browser. Latest features include the ability to
-    capture your own Left, Middle, and Right click events to perform
-    your own custom event handling and ability to open link in a new
-    or current browser window.
-
-    Events
-    ------
-        ====================  =======================================
-        EVT_HYPERLINK_LEFT    Sent when the left mouse button is
-                              clicked, but only if `AutoBrowse` is set
-                              to ``False``.
-        EVT_HYPERLINK_MIDDLE  Sent when the middle mouse button is
-                              clicked.
-        EVT_HYPERLINK_RIGHT   Sent when the right mouse button is
-                              clicked, but only if `DoPopup` is set
-                              to ``False``.
-        ====================  =======================================
-    """
-    
-    def __init__(self, parent, id=-1, label="", pos=wx.DefaultPosition,
-                 size=wx.DefaultSize, style=0, name="staticText", URL=""):
-        """
-        Default class constructor.
-                       
-        Pass URL == "" to use the label as the url link to navigate to
-        """
-        
-        StaticText.__init__(self, parent, id, label, pos, size,
-                            style, name)
-
-        if URL.strip() == "":
-            self._URL = label
-        else:
-            self._URL = URL
-
-        # Set Tooltip
-        self.SetToolTip(wx.ToolTip(self._URL))
-
-        # Set default properties
-        # default: True
-        self.ReportErrors()
-
-        # default: True, True, True
-        self.SetUnderlines()
-
-        # default: blue, violet, blue        
-        self.SetColours()
-
-        # default: False
-        self.SetVisited()
-
-        # default: False 
-        self.EnableRollover()
-
-        # default: False        
-        self.SetBold()
-
-        # default: wx.CURSOR_HAND        
-        self.SetLinkCursor() 
-
-        # default True
-        self.AutoBrowse()
-
-        # default True        
-        self.DoPopup() 
-
-        # default False
-        self.OpenInSameWindow()
-
-        # Set control properties and refresh
-        self.UpdateLink(True)
-
-        self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouseEvent)
-        self.Bind(wx.EVT_MOTION, self.OnMouseEvent)        
-    
-    
-    def GotoURL(self, URL, ReportErrors=True, NotSameWinIfPossible=False):
-        """
-        Goto The Specified URL.
-
-        :param ReportErrors: Use True to display error dialog if an
-            error occurrs navigating to the URL.
-
-        :param NotSameWinIfPossible: Use True to attempt to open the
-            URL in new browser window.
-
-        """
-    
-        logOff = wx.LogNull()
-
-        try:            
-            webbrowser.open(URL, new=NotSameWinIfPossible)
-            self.SetVisited(True)
-            self.UpdateLink(True)
-
-            return True
-        
-        except:            
-            self.DisplayError("Unable To Launch Browser.", ReportErrors)
-            return False
-
-
-    def OnMouseEvent(self, event):
-        """ Captures mouse events for cursor, link colors and underlines. """
-
-        if event.Moving():
-            # Mouse Is Moving On The StaticText
-            # Set The Hand Cursor On The Link
-            self.SetCursor(self._CursorHand)
-
-            if self._EnableRollover:
-                fontTemp = self.GetFont()
-                fontTemp.SetUnderlined(self._RolloverUnderline)
-                if self._Bold:
-                    fontTemp.SetWeight(wx.BOLD)
-                    
-                needRefresh = False
-
-                if self.GetFont() != fontTemp:
-                    self.SetFont(fontTemp)
-                    needRefresh = True
-
-                if self.GetForegroundColour() != self._LinkRolloverColor:
-                    self.SetForegroundColour(self._LinkRolloverColor)
-                    needRefresh = True
-
-                if needRefresh:
-                    self.Refresh()
-            
-        else:            
-            # Restore The Original Cursor            
-            self.SetCursor(wx.NullCursor)
-            if self._EnableRollover:
-                self.UpdateLink(True)
-            
-            if event.LeftUp():
-                # Left Button Was Pressed
-                if self._AutoBrowse:                    
-                    self.GotoURL(self._URL, self._ReportErrors,
-                                 self._NotSameWinIfPossible)
-
-                else:
-                    eventOut = HyperLinkEvent(wxEVT_HYPERLINK_LEFT, self.GetId())
-                    eventOut.SetEventObject(self)
-                    eventOut.SetPosition(event.GetPosition())
-                    self.GetEventHandler().ProcessEvent(eventOut)
-
-                self.SetVisited(True)
-
-            elif event.RightUp():
-                # Right Button Was Pressed
-                if self._DoPopup:
-                    # Popups A Menu With The "Copy HyperLynks" Feature
-                    menuPopUp = wx.Menu("", wx.MENU_TEAROFF)
-                    menuPopUp.Append(wxHYPERLINKS_POPUP_COPY, "Copy HyperLink")
-                    self.Bind(wx.EVT_MENU, self.OnPopUpCopy, id=wxHYPERLINKS_POPUP_COPY)
-                    self.PopupMenu(menuPopUp, wx.Point(event.m_x, event.m_y))
-                    menuPopUp.Destroy()
-                    self.Unbind(wx.EVT_MENU, id=wxHYPERLINKS_POPUP_COPY)
-                    
-                else:                    
-                    eventOut = HyperLinkEvent(wxEVT_HYPERLINK_RIGHT, self.GetId())
-                    eventOut.SetEventObject(self)
-                    eventOut.SetPosition(event.GetPosition())
-                    self.GetEventHandler().ProcessEvent(eventOut)
-
-            elif event.MiddleUp():
-                # Middle Button Was Pressed
-                eventOut = HyperLinkEvent(wxEVT_HYPERLINK_MIDDLE, self.GetId())
-                eventOut.SetEventObject(self)
-                eventOut.SetPosition(event.GetPosition())
-                self.GetEventHandler().ProcessEvent(eventOut)
-
-        event.Skip()
-
-
-    def OnPopUpCopy(self, event):
-        """ Copy data from the HyperLink to the clipboard. """
-
-        wx.TheClipboard.UsePrimarySelection(False)
-        if not wx.TheClipboard.Open():
-            return
-        data = wx.TextDataObject(self._URL)
-        wx.TheClipboard.SetData(data)
-        wx.TheClipboard.Close()
-
-
-    def UpdateLink(self, OnRefresh=True):
-        """
-        Updates the link.
-
-        Changing text properties if:
-            - User Specific Setting
-            - Link Visited
-            - New Link
-        
-        """
-
-        fontTemp = self.GetFont()
-
-        if self._Visited:
-            self.SetForegroundColour(self._VisitedColour)
-            fontTemp.SetUnderlined(self._VisitedUnderline)
-        
-        else:
-
-            self.SetForegroundColour(self._LinkColour)
-            fontTemp.SetUnderlined(self._LinkUnderline)
-
-        if self._Bold:
-            fontTemp.SetWeight(wx.BOLD)
-
-        if self.GetFont() != fontTemp:
-            self.SetFont(fontTemp)
-            self.Refresh(OnRefresh)            
-
-
-    def DisplayError(self, ErrorMessage, ReportErrors=True):
-        """
-        Displays an error message (according to ReportErrors variable)
-        in a MessageBox.
-        """
-        if ReportErrors:
-            wx.MessageBox(ErrorMessage, "HyperLinks Error", wx.OK | wx.CENTRE | wx.ICON_ERROR)
-
-
-    def SetColours(self,
-                   link=wx.Colour(0, 0, 255),
-                   visited=wx.Colour(79, 47, 79),
-                   rollover=wx.Colour(0, 0, 255)):
-        """ Sets the colours for the link, the visited link and the mouse rollover.
-
-        Defaults Are:
-            - New Link: RED
-            - Visited Link: VIOLET
-            - Rollover: BLUE
-
-        """        
-        self._LinkColour = link
-        self._VisitedColour = visited
-        self._LinkRolloverColor = rollover
-
-    
-    def GetColours(self):
-        """
-        Gets the colours for the link, the visited link and the mouse
-        rollover.
-        """        
-        return self._LinkColour, self._VisitedColour, self._LinkRolloverColor
-
-    
-    def SetUnderlines(self, link=True, visited=True, rollover=True):
-        """ Underlines Properties. """        
-        self._LinkUnderline = link
-        self._RolloverUnderline = rollover
-        self._VisitedUnderline = visited
-
-
-    def GetUnderlines(self):
-        """
-        Returns if link is underlined, if the mouse rollover is
-        underlined and if the visited link is underlined.
-        """
-        return self._LinkUnderline, self._RolloverUnderline, self._VisitedUnderline
-    
-
-    def SetLinkCursor(self, cur=wx.CURSOR_HAND):
-        """ Sets link cursor properties. """        
-        self._CursorHand = wx.StockCursor(cur)
-
-
-    def GetLinkCursor(self):
-        """ Gets the link cursor. """        
-        return self._CursorHand
-
-
-    def SetVisited(self, Visited=False):
-        """ Sets a link as visited. """
-        
-        self._Visited = Visited
-
-        
-    def GetVisited(self):
-        """ Returns whether a link has been visited or not. """        
-        return self._Visited
-
-
-    def SetBold(self, Bold=False):
-        """ Sets the HyperLink in bold text. """        
-        self._Bold = Bold
-
-        
-    def GetBold(self):
-        """ Returns whether the HyperLink has text in bold or not. """
-        return self._Bold
-
-
-    def SetURL(self, URL):
-        """ Sets the HyperLink text to the specified URL. """        
-        self._URL = URL
-
-        
-    def GetURL(self):
-        """ Retrieve the URL associated to the HyperLink. """        
-        return self._URL
-
-
-    def OpenInSameWindow(self, NotSameWinIfPossible=False):
-        """ Open multiple URL in the same window (if possible). """        
-        self._NotSameWinIfPossible = NotSameWinIfPossible
-
-
-    def EnableRollover(self, EnableRollover=False):
-        """ Enable/disable rollover. """        
-        self._EnableRollover = EnableRollover
-
-    
-    def ReportErrors(self, ReportErrors=True):
-        """ Set whether to report browser errors or not. """        
-        self._ReportErrors = ReportErrors
-
-
-    def AutoBrowse(self, AutoBrowse=True):
-        """
-        Automatically browse to URL when clicked. set to False to
-        receive EVT_HYPERLINK_LEFT event.
-        """        
-        self._AutoBrowse = AutoBrowse
-
-
-    def DoPopup(self, DoPopup=True):
-        """ Sets whether to show popup menu on right click or not. """        
-        self._DoPopup = DoPopup
-
-