From 8ac4782b685ffba7b78197b6b78aaf4fb6325470 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Sun, 8 Apr 2012 01:35:22 +0200
Subject: [PATCH] remove snarl test plugin. It is now in plugins repos

---
 plugins/snarl_notifications/PySnarl.py   | 772 -----------------------
 plugins/snarl_notifications/__init__.py  |   1 -
 plugins/snarl_notifications/manifest.ini |  11 -
 plugins/snarl_notifications/plugin.py    |  71 ---
 4 files changed, 855 deletions(-)
 delete mode 100755 plugins/snarl_notifications/PySnarl.py
 delete mode 100644 plugins/snarl_notifications/__init__.py
 delete mode 100644 plugins/snarl_notifications/manifest.ini
 delete mode 100644 plugins/snarl_notifications/plugin.py

diff --git a/plugins/snarl_notifications/PySnarl.py b/plugins/snarl_notifications/PySnarl.py
deleted file mode 100755
index c3c657e56f..0000000000
--- a/plugins/snarl_notifications/PySnarl.py
+++ /dev/null
@@ -1,772 +0,0 @@
-"""
-A python version of the main functions to use Snarl
-(http://www.fullphat.net/snarl)
-
-Version 1.0
-
-This module can be used in two ways.  One is the normal way
-the other snarl interfaces work. This means you can call snShowMessage
-and get an ID back for manipulations.
-
-The other way is there is a class this module exposes called SnarlMessage.
-This allows you to keep track of the message as a python object.  If you
-use the send without specifying False as the argument it will set the ID
-to what the return of the last SendMessage was.  This is of course only
-useful for the SHOW message.
-
-Requires one of:
-    pywin32 extensions from http://pywin32.sourceforge.net
-    ctypes (included in Python 2.5, downloadable for earlier versions)
-
-Creator: Sam Listopad II (samlii@users.sourceforge.net)
-
-Copyright 2006-2008 Samuel Listopad II
-
-Licensed under the Apache License, Version 2.0 (the "License"); you may not
-use this file except in compliance with the License. You may obtain a copy
-of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
-by applicable law or agreed to in writing, software distributed under the
-License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, either express or implied. See the License for the specific
-language governing permissions and limitations under the License.
-"""
-
-import array, struct
-
-def LOWORD(dword):
-    """Return the low WORD of the passed in integer"""
-    return dword & 0x0000ffff
-#get the hi word
-def HIWORD(dword):
-    """Return the high WORD of the passed in integer"""
-    return dword >> 16
-
-class Win32FuncException(Exception):
-    def __init__(self, value):
-        self.value = value
-
-    def __str__(self):
-        return repr(self.value)
-
-class Win32Funcs:
-    """Just a little class to hide the details of finding and using the
-correct win32 functions.  The functions may throw a UnicodeEncodeError if
-there is not a unicode version and it is sent a unicode string that cannot
-be converted to ASCII."""
-    WM_USER = 0x400
-    WM_COPYDATA = 0x4a
-    #Type of String the functions are expecting.
-    #Used like function(myWin32Funcs.strType(param)).
-    __strType = str
-    #FindWindow function to use
-    __FindWindow = None
-    #FindWindow function to use
-    __FindWindowEx = None
-    #SendMessage function to use
-    __SendMessage = None
-    #SendMessageTimeout function to use
-    __SendMessageTimeout = None
-    #IsWindow function to use
-    __IsWindow = None
-    #RegisterWindowMessage to use
-    __RegisterWindowMessage = None
-    #GetWindowText to use
-    __GetWindowText = None
-
-    def FindWindow(self, lpClassName, lpWindowName):
-        """Wraps the windows API call of FindWindow"""
-        if lpClassName is not None:
-            lpClassName = self.__strType(lpClassName)
-        if lpWindowName is not None:
-            lpWindowName = self.__strType(lpWindowName)
-        return self.__FindWindow(lpClassName, lpWindowName)
-
-    def FindWindowEx(self, hwndParent, hwndChildAfter, lpClassName, lpWindowName):
-        """Wraps the windows API call of FindWindow"""
-        if lpClassName is not None:
-            lpClassName = self.__strType(lpClassName)
-        if lpWindowName is not None:
-            lpWindowName = self.__strType(lpWindowName)
-        return self.__FindWindowEx(hwndParent, hwndChildAfter, lpClassName, lpWindowName)
-
-    def SendMessage(self, hWnd, Msg, wParam, lParam):
-        """Wraps the windows API call of SendMessage"""
-        return self.__SendMessage(hWnd, Msg, wParam, lParam)
-
-    def SendMessageTimeout(self, hWnd, Msg,
-                           wParam, lParam, fuFlags,
-                           uTimeout, lpdwResult = None):
-        """Wraps the windows API call of SendMessageTimeout"""
-        idToRet = None
-        try:
-            idFromMsg = array.array('I', [0])
-            result = idFromMsg.buffer_info()[0]
-            response = self.__SendMessageTimeout(hWnd, Msg, wParam,
-                                         lParam, fuFlags,
-                                         uTimeout, result)
-            if response == 0:
-                raise Win32FuncException, "SendMessageTimeout TimedOut"
-
-            idToRet = idFromMsg[0]
-        except TypeError:
-            idToRet = self.__SendMessageTimeout(hWnd, Msg, wParam,
-                                                lParam, fuFlags,
-                                                uTimeout)
-
-        if lpdwResult is not None and lpdwResult.typecode == 'I':
-            lpdwResult[0] = idToRet
-
-        return idToRet
-
-    def IsWindow(self, hWnd):
-        """Wraps the windows API call of IsWindow"""
-        return self.__IsWindow(hWnd)
-
-    def RegisterWindowMessage(self, lpString):
-        """Wraps the windows API call of RegisterWindowMessage"""
-        return self.__RegisterWindowMessage(self.__strType(lpString))
-
-    def GetWindowText(self, hWnd, lpString = None, nMaxCount = None):
-        """Wraps the windows API call of SendMessageTimeout"""
-        text = ''
-        if hWnd == 0:
-            return text
-
-        if nMaxCount is None:
-            nMaxCount = 1025
-
-        try:
-            arrayType = 'c'
-            if self.__strType == unicode:
-                arrayType = 'u'
-            path_string = array.array(arrayType, self.__strType('\x00') * nMaxCount)
-            path_buffer = path_string.buffer_info()[0]
-            result = self.__GetWindowText(hWnd,
-                                          path_buffer,
-                                          nMaxCount)
-            if result > 0:
-                if self.__strType == unicode:
-                    text = path_string[0:result].tounicode()
-                else:
-                    text = path_string[0:result].tostring()
-        except TypeError:
-            text = self.__GetWindowText(hWnd)
-
-        if lpString is not None and lpString.typecode == 'c':
-            lpdwResult[0:len(text)] = array.array('c', str(text));
-
-        if lpString is not None and lpString.typecode == 'u':
-            lpdwResult[0:len(text)] = array.array('u', unicode(text));
-
-        return text
-
-    def __init__(self):
-        """Load up my needed functions"""
-        # First see if they already have win32gui imported.  If so use it.
-        # This has to be checked first since the auto check looks for ctypes
-        # first.
-        try:
-            self.__FindWindow = win32gui.FindWindow
-            self.__FindWindowEx = win32gui.FindWindowEx
-            self.__GetWindowText = win32gui.GetWindowText
-            self.__IsWindow = win32gui.IsWindow
-            self.__SendMessage = win32gui.SendMessage
-            self.__SendMessageTimeout = win32gui.SendMessageTimeout
-            self.__RegisterWindowMessage = win32gui.RegisterWindowMessage
-            self.__strType = unicode
-
-        #Something threw a NameError,  most likely the win32gui lines
-        #so do auto check
-        except NameError:
-            try:
-                from ctypes import windll
-                self.__FindWindow            = windll.user32.FindWindowW
-                self.__FindWindowEx          = windll.user32.FindWindowExW
-                self.__GetWindowText         = windll.user32.GetWindowTextW
-                self.__IsWindow              = windll.user32.IsWindow
-                self.__SendMessage           = windll.user32.SendMessageW
-                self.__SendMessageTimeout    = windll.user32.SendMessageTimeoutW
-                self.__RegisterWindowMessage = windll.user32.RegisterWindowMessageW
-                self.__strType = unicode
-
-            #FindWindowW wasn't found, look for FindWindowA
-            except AttributeError:
-                try:
-                    self.__FindWindow            = windll.user32.FindWindowA
-                    self.__FindWindowEx          = windll.user32.FindWindowExA
-                    self.__GetWindowText         = windll.user32.GetWindowTextA
-                    self.__IsWindow              = windll.user32.IsWindow
-                    self.__SendMessage           = windll.user32.SendMessageA
-                    self.__SendMessageTimeout    = windll.user32.SendMessageTimeoutA
-                    self.__RegisterWindowMessage = windll.user32.RegisterWindowMessageA
-                # Couldn't find either so Die and tell user why.
-                except AttributeError:
-                    import sys
-                    sys.stderr.write("Your Windows TM setup seems to be corrupt."+
-                                     "  No FindWindow found in user32.\n")
-                    sys.stderr.flush()
-                    sys.exit(3)
-
-            except ImportError:
-                try:
-                    import win32gui
-                    self.__FindWindow = win32gui.FindWindow
-                    self.__FindWindowEx = win32gui.FindWindowEx
-                    self.__GetWindowText = win32gui.GetWindowText
-                    self.__IsWindow = win32gui.IsWindow
-                    self.__SendMessage = win32gui.SendMessage
-                    self.__SendMessageTimeout = win32gui.SendMessageTimeout
-                    self.__RegisterWindowMessage = win32gui.RegisterWindowMessage
-                    self.__strType = unicode
-
-                except ImportError:
-                    import sys
-                    sys.stderr.write("You need to have either"+
-                                     " ctypes or pywin32 installed.\n")
-                    sys.stderr.flush()
-                    #sys.exit(2)
-
-
-myWin32Funcs = Win32Funcs()
-
-
-SHOW                        = 1
-HIDE                        = 2
-UPDATE                      = 3
-IS_VISIBLE                  = 4
-GET_VERSION                 = 5
-REGISTER_CONFIG_WINDOW      = 6
-REVOKE_CONFIG_WINDOW        = 7
-REGISTER_ALERT              = 8
-REVOKE_ALERT                = 9
-REGISTER_CONFIG_WINDOW_2    = 10
-GET_VERSION_EX              = 11
-SET_TIMEOUT                 = 12
-
-EX_SHOW                     = 32
-
-GLOBAL_MESSAGE = "SnarlGlobalMessage"
-GLOBAL_MSG = "SnarlGlobalEvent"
-
-#Messages That may be received from Snarl
-SNARL_LAUNCHED                   = 1
-SNARL_QUIT                       = 2
-SNARL_ASK_APPLET_VER             = 3
-SNARL_SHOW_APP_UI                = 4
-
-SNARL_NOTIFICATION_CLICKED       = 32   #notification was right-clicked by user
-SNARL_NOTIFICATION_CANCELLED     = SNARL_NOTIFICATION_CLICKED #Name clarified
-SNARL_NOTIFICATION_TIMED_OUT     = 33
-SNARL_NOTIFICATION_ACK           = 34   #notification was left-clicked by user
-
-#Snarl Test Message
-WM_SNARLTEST = myWin32Funcs.WM_USER + 237
-
-M_ABORTED           =   0x80000007L
-M_ACCESS_DENIED     =   0x80000009L
-M_ALREADY_EXISTS    =   0x8000000CL
-M_BAD_HANDLE        =   0x80000006L
-M_BAD_POINTER       =   0x80000005L
-M_FAILED            =   0x80000008L
-M_INVALID_ARGS      =   0x80000003L
-M_NO_INTERFACE      =   0x80000004L
-M_NOT_FOUND         =   0x8000000BL
-M_NOT_IMPLEMENTED   =   0x80000001L
-M_OK                =   0x00000000L
-M_OUT_OF_MEMORY     =   0x80000002L
-M_TIMED_OUT         =   0x8000000AL
-
-ErrorCodeRev = {
-                    0x80000007L : "M_ABORTED",
-                    0x80000009L : "M_ACCESS_DENIED",
-                    0x8000000CL : "M_ALREADY_EXISTS",
-                    0x80000006L : "M_BAD_HANDLE",
-                    0x80000005L : "M_BAD_POINTER",
-                    0x80000008L : "M_FAILED",
-                    0x80000003L : "M_INVALID_ARGS",
-                    0x80000004L : "M_NO_INTERFACE",
-                    0x8000000BL : "M_NOT_FOUND",
-                    0x80000001L : "M_NOT_IMPLEMENTED",
-                    0x00000000L : "M_OK",
-                    0x80000002L : "M_OUT_OF_MEMORY",
-                    0x8000000AL : "M_TIMED_OUT"
-                }
-
-class SnarlMessage(object):
-    """The main Snarl interface object.
-
-    ID = Snarl Message ID for most operations.  See SDK for more info
-         as to other values to put here.
-    type = Snarl Message Type.  Valid values are : SHOW, HIDE, UPDATE,
-           IS_VISIBLE, GET_VERSION, REGISTER_CONFIG_WINDOW, REVOKE_CONFIG_WINDOW
-           all which are constants in the PySnarl module.
-    timeout = Timeout in seconds for the Snarl Message
-    data = Snarl Message data.  This is dependant upon message type.  See SDK
-    title = Snarl Message title.
-    text = Snarl Message text.
-    icon = Path to the icon to display in the Snarl Message.
-    """
-    __msgType     = 0
-    __msgID       = 0
-    __msgTimeout  = 0
-    __msgData     = 0
-    __msgTitle    = ""
-    __msgText     = ""
-    __msgIcon     = ""
-    __msgClass    = ""
-    __msgExtra    = ""
-    __msgExtra2   = ""
-    __msgRsvd1    = 0
-    __msgRsvd2    = 0
-    __msgHWnd     = 0
-
-    lastKnownHWnd = 0
-
-    def getType(self):
-        """Type Attribute getter."""
-        return self.__msgType
-    def setType(self, value):
-        """Type Attribute setter."""
-        if( isinstance(value, (int, long)) ):
-            self.__msgType = value
-    type = property(getType, setType, doc="The Snarl Message Type")
-
-    def getID(self):
-        """ID Attribute getter."""
-        return self.__msgID
-    def setID(self, value):
-        """ID Attribute setter."""
-        if( isinstance(value, (int, long)) ):
-            self.__msgID = value
-    ID = property(getID, setID, doc="The Snarl Message ID")
-
-    def getTimeout(self):
-        """Timeout Attribute getter."""
-        return self.__msgTimeout
-    def updateTimeout(self, value):
-        """Timeout Attribute setter."""
-        if( isinstance(value, (int, long)) ):
-            self.__msgTimeout = value
-    timeout = property(getTimeout, updateTimeout,
-                       doc="The Snarl Message Timeout")
-
-    def getData(self):
-        """Data Attribute getter."""
-        return self.__msgData
-    def setData(self, value):
-        """Data Attribute setter."""
-        if( isinstance(value, (int, long)) ):
-            self.__msgData = value
-    data = property(getData, setData, doc="The Snarl Message Data")
-
-    def getTitle(self):
-        """Title Attribute getter."""
-        return self.__msgTitle
-    def setTitle(self, value):
-        """Title Attribute setter."""
-        if( isinstance(value, basestring) ):
-            self.__msgTitle = value
-    title = property(getTitle, setTitle, doc="The Snarl Message Title")
-
-    def getText(self):
-        """Text Attribute getter."""
-        return self.__msgText
-    def setText(self, value):
-        """Text Attribute setter."""
-        if( isinstance(value, basestring) ):
-            self.__msgText = value
-    text = property(getText, setText, doc="The Snarl Message Text")
-
-    def getIcon(self):
-        """Icon Attribute getter."""
-        return self.__msgIcon
-    def setIcon(self, value):
-        """Icon Attribute setter."""
-        if( isinstance(value, basestring) ):
-            self.__msgIcon = value
-    icon = property(getIcon, setIcon, doc="The Snarl Message Icon")
-
-    def getClass(self):
-        """Class Attribute getter."""
-        return self.__msgClass
-    def setClass(self, value):
-        """Class Attribute setter."""
-        if( isinstance(value, basestring) ):
-            self.__msgClass = value
-    msgclass = property(getClass, setClass, doc="The Snarl Message Class")
-
-    def getExtra(self):
-        """Extra Attribute getter."""
-        return self.__msgExtra
-    def setExtra(self, value):
-        """Extra Attribute setter."""
-        if( isinstance(value, basestring) ):
-            self.__msgExtra = value
-    extra = property(getExtra, setExtra, doc="Extra Info for the Snarl Message")
-
-    def getExtra2(self):
-        """Extra2 Attribute getter."""
-        return self.__msgExtra2
-    def setExtra2(self, value):
-        """Extra2 Attribute setter."""
-        if( isinstance(value, basestring) ):
-            self.__msgExtra2 = value
-    extra2 = property(getExtra2, setExtra2,
-                      doc="More Extra Info for the Snarl Message")
-
-    def getRsvd1(self):
-        """Rsvd1 Attribute getter."""
-        return self.__msgRsvd1
-    def setRsvd1(self, value):
-        """Rsvd1 Attribute setter."""
-        if( isinstance(value, (int, long)) ):
-            self.__msgRsvd1 = value
-    rsvd1 = property(getRsvd1, setRsvd1, doc="The Snarl Message Field Rsvd1")
-
-    def getRsvd2(self):
-        """Rsvd2 Attribute getter."""
-        return self.__msgRsvd2
-    def setRsvd2(self, value):
-        """Rsvd2 Attribute setter."""
-        if( isinstance(value, (int, long)) ):
-            self.__msgRsvd2 = value
-    rsvd2 = property(getRsvd2, setRsvd2, doc="The Snarl Message Field Rsvd2")
-
-    def getHwnd(self):
-        """hWnd Attribute getter."""
-        return self.__msgHWnd
-    def setHwnd(self, value):
-        """hWnd Attribute setter."""
-        if( isinstance(value, (int, long)) ):
-            self.__msgHWnd = value
-
-    hWnd = property(getHwnd, setHwnd, doc="The hWnd of the window this message is being sent from")
-
-
-    def __init__(self, title="", text="", icon="", msg_type=1, msg_id=0):
-        self.__msgTimeout  = 0
-        self.__msgData     = 0
-        self.__msgClass    = ""
-        self.__msgExtra    = ""
-        self.__msgExtra2   = ""
-        self.__msgRsvd1    = 0
-        self.__msgRsvd2    = 0
-        self.__msgType = msg_type
-        self.__msgText = text
-        self.__msgTitle = title
-        self.__msgIcon = icon
-        self.__msgID = msg_id
-
-    def createCopyStruct(self):
-        """Creates the struct to send as the copyData in the message."""
-        return struct.pack("ILLL1024s1024s1024s1024s1024s1024sLL",
-                           self.__msgType,
-                           self.__msgID,
-                           self.__msgTimeout,
-                           self.__msgData,
-                           self.__msgTitle.encode('utf-8'),
-                           self.__msgText.encode('utf-8'),
-                           self.__msgIcon.encode('utf-8'),
-                           self.__msgClass.encode('utf-8'),
-                           self.__msgExtra.encode('utf-8'),
-                           self.__msgExtra2.encode('utf-8'),
-                           self.__msgRsvd1,
-                           self.__msgRsvd2
-                           )
-    __lpData = None
-    __cds = None
-
-    def packData(self, dwData):
-        """This packs the data in the necessary format for a
-WM_COPYDATA message."""
-        self.__lpData = None
-        self.__cds = None
-        item = self.createCopyStruct()
-        self.__lpData = array.array('c', item)
-        lpData_ad = self.__lpData.buffer_info()[0]
-        cbData = self.__lpData.buffer_info()[1]
-        self.__cds = array.array('c',
-                                 struct.pack("IIP",
-                                             dwData,
-                                             cbData,
-                                             lpData_ad)
-                                 )
-        cds_ad = self.__cds.buffer_info()[0]
-        return cds_ad
-
-    def reset(self):
-        """Reset this SnarlMessage to the default state."""
-        self.__msgType     = 0
-        self.__msgID       = 0
-        self.__msgTimeout  = 0
-        self.__msgData     = 0
-        self.__msgTitle    = ""
-        self.__msgText     = ""
-        self.__msgIcon     = ""
-        self.__msgClass    = ""
-        self.__msgExtra    = ""
-        self.__msgExtra2   = ""
-        self.__msgRsvd1    = 0
-        self.__msgRsvd2    = 0
-
-
-    def send(self, setid=True):
-        """Send this SnarlMessage to the Snarl window.
-Args:
-        setid - Boolean defining whether or not to set the ID
-                of this SnarlMessage to the return value of
-                the SendMessage call.  Default is True to
-                make simple case of SHOW easy.
-        """
-        hwnd = myWin32Funcs.FindWindow(None, "Snarl")
-        if myWin32Funcs.IsWindow(hwnd):
-            if self.type == REGISTER_CONFIG_WINDOW or self.type == REGISTER_CONFIG_WINDOW_2:
-                self.hWnd = self.data
-            try:
-                response = myWin32Funcs.SendMessageTimeout(hwnd,
-                                                           myWin32Funcs.WM_COPYDATA,
-                                                           self.hWnd, self.packData(2),
-                                                           2, 500)
-            except Win32FuncException:
-                return False
-
-            idFromMsg = response
-            if setid:
-                self.ID = idFromMsg
-                return True
-            else:
-                return idFromMsg
-        print "No snarl window found"
-        return False
-
-    def hide(self):
-        """Hide this message.  Type will revert to type before calling hide
-to allow for better reuse of object."""
-        oldType = self.__msgType
-        self.__msgType = HIDE
-        retVal = bool(self.send(False))
-        self.__msgType = oldType
-        return retVal
-
-    def isVisible(self):
-        """Is this message visible.  Type will revert to type before calling
-hide to allow for better reuse of object."""
-        oldType = self.__msgType
-        self.__msgType = IS_VISIBLE
-        retVal = bool(self.send(False))
-        self.__msgType = oldType
-        return retVal
-
-    def update(self, title=None, text=None, icon=None):
-        """Update this message with given title and text.  Type will revert
-to type before calling hide to allow for better reuse of object."""
-        oldType = self.__msgType
-        self.__msgType = UPDATE
-        if text:
-            self.__msgText = text
-        if title:
-            self.__msgTitle = title
-        if icon:
-            self.__msgIcon = icon
-        retVal = self.send(False)
-        self.__msgType = oldType
-        return retVal
-
-    def setTimeout(self, timeout):
-        """Set the timeout in seconds of the message"""
-        oldType = self.__msgType
-        oldData = self.__msgData
-        self.__msgType = SET_TIMEOUT
-        #self.timeout = timeout
-        #self.__msgData = self.__msgTimeout
-        self.__msgData = timeout
-        retVal = self.send(False)
-        self.__msgType = oldType
-        self.__msgData = oldData
-        return retVal
-
-    def show(self, timeout=None, title=None,
-             text=None, icon=None,
-             replyWindow=None, replyMsg=None, msgclass=None, soundPath=None):
-        """Show a message"""
-        oldType = self.__msgType
-        oldTimeout = self.__msgTimeout
-        self.__msgType = SHOW
-        if text:
-            self.__msgText = text
-        if title:
-            self.__msgTitle = title
-        if timeout:
-            self.__msgTimeout = timeout
-        if icon:
-            self.__msgIcon = icon
-        if replyWindow:
-            self.__msgID = replyMsg
-        if replyMsg:
-            self.__msgData = replyWindow
-        if soundPath:
-            self.__msgExtra = soundPath
-        if msgclass:
-            self.__msgClass = msgclass
-
-        if ((self.__msgClass and self.__msgClass != "") or
-           (self.__msgExtra and self.__msgExtra != "")):
-            self.__msgType = EX_SHOW
-
-
-        retVal = bool(self.send())
-        self.__msgType = oldType
-        self.__msgTimeout = oldTimeout
-        return retVal
-
-
-def snGetVersion():
-    """ Get the version of Snarl that is running as a tuple.  (Major, Minor)
-
-If Snarl is not running or there was an error it will
-return False."""
-    msg = SnarlMessage(msg_type=GET_VERSION)
-    version = msg.send(False)
-    if not version:
-        return False
-    return (HIWORD(version), LOWORD(version))
-
-def snGetVersionEx():
-    """ Get the internal version of Snarl that is running.
-
-If Snarl is not running or there was an error it will
-return False."""
-    sm = SnarlMessage(msg_type=GET_VERSION_EX)
-    verNum = sm.send(False)
-    if not verNum:
-        return False
-    return verNum
-
-def snGetGlobalMessage():
-    """Get the Snarl global message id from windows."""
-    return myWin32Funcs.RegisterWindowMessage(GLOBAL_MSG)
-
-def snShowMessage(title, text, timeout=0, iconPath="",
-                  replyWindow=0, replyMsg=0):
-    """Show a message using Snarl and return its ID.  See SDK for arguments."""
-    sm = SnarlMessage( title, text, iconPath, msg_id=replyMsg)
-    sm.data = replyWindow
-    if sm.show(timeout):
-        return sm.ID
-    else:
-        return False
-
-def snShowMessageEx(msgClass, title, text, timeout=0, iconPath="",
-                  replyWindow=0, replyMsg=0, soundFile=None, hWndFrom=None):
-    """Show a message using Snarl and return its ID.  See SDK for arguments.
-    One added argument is hWndFrom that allows one to make the messages appear
-    to come from a specific window.  This window should be the one you registered
-    earlier with RegisterConfig"""
-    sm = SnarlMessage( title, text, iconPath, msg_id=replyMsg)
-    sm.data = replyWindow
-    if hWndFrom is not None:
-        sm.hWnd = hWndFrom
-    else:
-        sm.hWnd = SnarlMessage.lastKnownHWnd
-    if sm.show(timeout, msgclass=msgClass, soundPath=soundFile):
-        return sm.ID
-    else:
-        return False
-
-def snUpdateMessage(msgId, msgTitle, msgText, icon=None):
-    """Update a message"""
-    sm = SnarlMessage(msg_id=msgId)
-    if icon:
-        sm.icon = icon
-    return sm.update(msgTitle, msgText)
-
-def snHideMessage(msgId):
-    """Hide a message"""
-    return SnarlMessage(msg_id=msgId).hide()
-
-def snSetTimeout(msgId, timeout):
-    """Update the timeout of a message already shown."""
-    sm = SnarlMessage(msg_id=msgId)
-    return sm.setTimeout(timeout)
-
-def snIsMessageVisible(msgId):
-    """Returns True if the message is visible False otherwise."""
-    return SnarlMessage(msg_id=msgId).isVisible()
-
-def snRegisterConfig(replyWnd, appName, replyMsg):
-    """Register a config window.  See SDK for more info."""
-    global lastRegisteredSnarlMsg
-    sm = SnarlMessage(msg_type=REGISTER_CONFIG_WINDOW,
-                      title=appName,
-                      msg_id=replyMsg)
-    sm.data = replyWnd
-    SnarlMessage.lastKnownHWnd = replyWnd
-
-    return sm.send(False)
-
-def snRegisterConfig2(replyWnd, appName, replyMsg, icon):
-    """Register a config window.  See SDK for more info."""
-    global lastRegisteredSnarlMsg
-    sm = SnarlMessage(msg_type=REGISTER_CONFIG_WINDOW_2,
-                      title=appName,
-                      msg_id=replyMsg,
-                      icon=icon)
-    sm.data = replyWnd
-    SnarlMessage.lastKnownHWnd = replyWnd
-    return sm.send(False)
-
-def snRegisterAlert(appName, classStr) :
-    """Register an alert for an already registered config.  See SDK for more info."""
-    sm = SnarlMessage(msg_type=REGISTER_ALERT,
-                      title=appName,
-                      text=classStr)
-    return sm.send(False)
-
-def snRevokeConfig(replyWnd):
-    """Revoke a config window"""
-    sm = SnarlMessage(msg_type=REVOKE_CONFIG_WINDOW)
-    sm.data = replyWnd
-    if replyWnd == SnarlMessage.lastKnownHWnd:
-        SnarlMessage.lastKnownHWnd = 0
-    return sm.send(False)
-
-def snGetSnarlWindow():
-    """Returns the hWnd of the snarl window"""
-    return myWin32Funcs.FindWindow(None, "Snarl")
-
-def snGetAppPath():
-    """Returns the application path of the currently running snarl window"""
-    app_path = None
-    snarl_handle = snGetSnarlWindow()
-    if snarl_handle != 0:
-        pathwin_handle = myWin32Funcs.FindWindowEx(snarl_handle,
-                                                   0,
-                                                   "static",
-                                                   None)
-        if pathwin_handle != 0:
-            try:
-                result = myWin32Funcs.GetWindowText(pathwin_handle)
-                app_path = result
-            except Win32FuncException:
-                pass
-
-
-    return app_path
-
-def snGetIconsPath():
-    """Returns the path to the icons of the program"""
-    s = snGetAppPath()
-    if s is None:
-        return ""
-    else:
-        return s + "etc\\icons\\"
-
-def snSendTestMessage(data=None):
-    """Sends a test message to Snarl.  Used to make sure the
-api is connecting"""
-    param = 0
-    command = 0
-    if data:
-        param = struct.pack("I", data)
-        command = 1
-    myWin32Funcs.SendMessage(snGetSnarlWindow(), WM_SNARLTEST, command, param)
diff --git a/plugins/snarl_notifications/__init__.py b/plugins/snarl_notifications/__init__.py
deleted file mode 100644
index b504dfd50a..0000000000
--- a/plugins/snarl_notifications/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from plugin import SnarlNotificationsPlugin
diff --git a/plugins/snarl_notifications/manifest.ini b/plugins/snarl_notifications/manifest.ini
deleted file mode 100644
index 45597bfc09..0000000000
--- a/plugins/snarl_notifications/manifest.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[info]
-name: Snarl Notifications
-short_name: snarl_notifications
-version: 0.1
-description: Shows events notification using Snarl (http://www.fullphat.net/) under Windows. Snarl needs to be installed in system.
- PySnarl bindings are used (http://code.google.com/p/pysnarl/).
-authors = Mateusz Biliński <mateusz@bilinski.it>
-homepage = http://blog.bilinski.it
-
-
-
diff --git a/plugins/snarl_notifications/plugin.py b/plugins/snarl_notifications/plugin.py
deleted file mode 100644
index 82247c5e69..0000000000
--- a/plugins/snarl_notifications/plugin.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- coding: utf-8 -*-
-##
-## This file is part of Gajim.
-##
-## Gajim 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; version 3 only.
-##
-## Gajim 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 Gajim.  If not, see <http://www.gnu.org/licenses/>.
-##
-'''
-Events notifications using Snarl
-
-Fancy events notifications under Windows using Snarl infrastructure.
-
-:note: plugin is at proof-of-concept state.
-
-:author: Mateusz Biliński <mateusz@bilinski.it>
-:since: 15th August 2008
-:copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it>
-:license: GPL
-'''
-
-import new
-from pprint import pformat
-
-#import PySnarl
-
-from common import gajim
-from plugins import GajimPlugin
-from plugins.helpers import log_calls, log
-from common import ged
-
-class SnarlNotificationsPlugin(GajimPlugin):
-
-    @log_calls('SnarlNotificationsPlugin')
-    def init(self):
-        self.description = _('Shows events notification using Snarl '
-            '(http://www.fullphat.net/) under Windows. '
-            'Snarl needs to be installed in system.\n'
-            'PySnarl bindings are used (http://code.google.com/p/pysnarl/).')
-        self.config_dialog = None
-        #self.gui_extension_points = {}
-        #self.config_default_values = {}
-
-        self.events_handlers = {'notification' : (ged.POSTCORE, self.notif)}
-
-    @log_calls('SnarlNotificationsPlugin')
-    def activate(self):
-        pass
-
-    @log_calls('SnarlNotificationsPlugin')
-    def deactivate(self):
-        pass
-
-    @log_calls('SnarlNotificationsPlugin')
-    def notif(self, obj):
-        print "Event '%s' occured.\n\n===\n" % obj.popup_event_type
-
-        #if PySnarl.snGetVersion() != False:
-            #(major, minor) = PySnarl.snGetVersion()
-            #print "Found Snarl version",str(major)+"."+str(minor),"running."
-            #PySnarl.snShowMessage(obj.popup_title, obj.popup_text)
-        #else:
-            #print "Sorry Snarl does not appear to be running"
-- 
GitLab