Commands.py :  » Network » emesene » emesene-1.6.2 » plugins_base » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Network » emesene 
emesene » emesene 1.6.2 » plugins_base » Commands.py
# -*- coding: utf-8 -*-

#   This file is part of emesene.
#
#    Eval plugin 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 of the License, or
#    (at your option) any later version.
#
#    Eval plugin 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 emesene; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

VERSION = '0.2'
import os
import sys
import time
import socket
import commands

import emesenelib.common

import Plugin

class MainClass( Plugin.Plugin ):
    '''Main plugin class'''
    description = _('Make some useful commands available, try /help')
    authors = { 'marianoguerra' : 'luismarianoguerra gmail com' }
    website = 'http://emesene.org'
    displayName = _('Commands')
    name = 'Commands'

    def __init__( self, controller, msn ):
        '''Contructor'''

        Plugin.Plugin.__init__( self, controller, msn )

        self.description = _('Make some useful commands available, try /help')
        self.authors = { 'marianoguerra' : 'luismarianoguerra gmail com' }
        self.website = 'http://emesene.org'
        self.displayName = _('Commands')
        self.name = 'Commands'
        self.controller = controller
        self.Slash = controller.Slash

        self.vars = {}
    #    self.vars['%me%'] = self._me
        self.vars['%nick%'] = self._nick
        self.vars['%status%'] = self._status
        self.vars['%mail%'] = self._mail
        self.vars['%date%'] = self._date
        self.vars['%time%'] = self._time
        self.vars['%host%'] = self._host
        self.vars['%ip%'] = self._ip

    #def _me(self):
    #    return self.controller.msn.user.split('@')[0]

    def _nick(self):
        return self.controller.msn.nick

    def _status(self):
        return emesenelib.common.reverse_status[self.controller.msn.status]

    def _mail(self):
        return self.controller.msn.user

    def _date(self):
        return time.strftime('%d-%b-%y')

    def _time(self):
        return time.strftime( '%H:%M' )

    def _host(self):
        return socket.gethostname()

    def _ip(self):
        try:
            result = socket.getaddrinfo(self._host(), None, 0, socket.SOCK_STREAM)
            return ''.join([x[4][0] for x in result])
        except socket.gaierror:
            return '0.0.0.0'

    def start( self ):
        '''start the plugin'''
        self.Slash.register('repl', self.repl, _('Replaces variables'))
    #    self.Slash.register('me', self.slash_me,
    #        _('Replaces me with your username'))
        self.Slash.register('me', self.slash_action_message,
            _('Sends an action'))
        self.Slash.register('nudge', self.slash_nudge,
            _('Sends a nudge'))
        self.Slash.register('invite', self.slash_invite,
            _('Invites a buddy'))
        self.Slash.register('send', self.slash_send,
            _('Send a file'))
        self.Slash.register('add', self.slash_contact_actions,
            _('Add a contact'))
        self.Slash.register('remove', self.slash_contact_actions,
            _('Remove a contact'))
        self.Slash.register('block', self.slash_contact_actions,
            _('Block a contact'))
        self.Slash.register('unblock', self.slash_contact_actions,
            _('Unblock a contact'))
        self.Slash.register('clear', self.slash_clear,
            _('Clear the conversation'))
        self.Slash.register('nick', self.slash_nick_psm,
            _('Set your nick'))
        self.Slash.register('psm', self.slash_nick_psm,
            _('Set your psm'))
        self.Slash.register('amsg', self.slash_amsg,
            _('Send a message to your opened conversations'))
        self.Slash.register('exec', self.slash_exec,
            _('Executes a system command and sends it to current conversation'))
        self.Slash.register('offline', self.slash_offline,
            _('Change the status to offline'))
        self.Slash.register('online', self.slash_online,
            _('Change the status to online'))
        self.Slash.register('busy', self.slash_busy,
            _('Change the status to busy'))
        self.Slash.register('away', self.slash_away,
            _('Change the status to away'))
        self.Slash.register('idle', self.slash_idle,
            _('Change the status to idle'))
        self.Slash.register('logout', self.slash_logout,
            _('Logs you out'))

        self.enabled = True

    def repl(self, slash_action):
        data = slash_action.getParams()

        for (var,replacement) in self.vars.iteritems():
            data = data.replace(var, replacement())

        slash_action.outputText(data, True)

    #def slash_me(self, slash_action):
    #    data = slash_action.getParams()
    #
    #    slash_action.outputText(self._nick() + ' ' + data, True)

    def slash_nick_psm(self, slash_action):
        '''Set your nick or psm'''
        data = slash_action.params
        name = slash_action.name
        contact_manager = self.controller.contacts
        if name == 'nick':
            contact_manager.set_nick(data)
        elif name == 'psm':
            contact_manager.set_message(data)

    def slash_nudge(self, slash_action):
        slash_action.conversation.doNudge()

    def slash_invite(self, slash_action):
        slash_action.conversation.parentConversationWindow.show_invite_dialog()

    def slash_contact_actions(self, slash_action):
        contacts = self.controller.contacts
        data = slash_action.params
        name = slash_action.name
        if name == "add" and (data == "" or data.find("@") == -1):
            slash_action.outputText(_("Usage /%s contact_email" % name))
            return
        if name != "add":
            if data == "":
                slash_action.outputText(_("No user specified, applying action to current contact.\n Usage /%s contact_email" % name))
                data = slash_action.conversation.userMail
            elif data.find("@") == -1:
                slash_action.outputText(_("%1 is not a valid parameter. Usage /%2 contact_email") % (data, name))
                return

        if name == 'add':
            contacts.add(data, "")
        elif name == 'block':
            contacts.block(data)
        elif name == 'unblock':
            contacts.unblock(data)
        elif name == 'remove':
            contacts.remove(data)

    def slash_send(self, slash_action):
        '''Send a file'''
        conversation = slash_action.conversation
        file_path = slash_action.params
        if file_path:
            if os.path.exists(file_path):
                conversation.sendFile(file_path)
            else:
                slash_action.outputText(_("File doesn't exist"))
        else:
            conversation.parentConversationWindow.send_file_dialog()

    def slash_clear(self, slash_action):
        slash_action.conversation.parentConversationWindow.clearOutputText()

    def slash_action_message(self, slash_action):
        data = slash_action.getParams()

        slash_action.sendActionMessage(data)
        
    def slash_amsg(self, slash_action):
        """Sends a message to every opened conversation"""
        #Let's get parameters
        params = slash_action.getParams()
        if params :
            #if there are parameters
            for i, j in self.controller.conversationManager.conversations :
                j.sendMessage(params)
        else:
            #if there are not parameters
            slash_action.outputText(_('Error: missing text parameter'))
            slash_action.outputText(_('USAGE: /amsg <text>'))

    def slash_exec(self, slash_action):
        """Run shell command and send it to conversation"""
        params = slash_action.getParams()

        if params:
            command = commands.getoutput(params)
            slash_action.outputText(command, True)
        else:
            slash_action.outputText(_('Usage: /exec <system command>'))

    def slash_logout(self, slash_action):
        self.controller.logout()

    def slash_online(self, slash_action):
        self.controller.contacts.set_status("NLN")

    def slash_busy(self, slash_action):
        self.controller.contacts.set_status("BSY")

    def slash_away(self, slash_action):
        self.controller.contacts.set_status("AWY")

    def slash_idle(self, slash_action):
        self.controller.contacts.set_status("IDL")

    def slash_offline(self, slash_action):
        self.controller.contacts.set_status("HDN")

    def stop( self ):
        '''stop the plugin'''
        self.Slash.unregister('repl')
        self.Slash.unregister('me')
        self.Slash.unregister('nudge')
        self.Slash.unregister('invite')
        self.Slash.unregister('send')
        self.Slash.unregister('add')
        self.Slash.unregister('remove')
        self.Slash.unregister('block')
        self.Slash.unregister('unblock')
        self.Slash.unregister('clear')
        self.Slash.unregister('psm')
        self.Slash.unregister('amsg')
        self.Slash.unregister('exec')
        self.Slash.unregister('offline')
        self.Slash.unregister('online')
        self.Slash.unregister('busy')
        self.Slash.unregister('away')
        self.Slash.unregister('idle')
        self.Slash.unregister('logout')
        self.enabled = False

    def check( self ):
        return ( True, 'Ok' )
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.