diff --git a/common/thread.py b/common/thread.py index e90ec1f2f..9c593e94f 100644 --- a/common/thread.py +++ b/common/thread.py @@ -22,7 +22,10 @@ import threading import socket import sys import time -import plugins + +sys.path.append("..") + +import plugins.sock class GajimThread(threading.Thread): def __init__(self, name = None, queueIn = None, queueOut = None): @@ -34,10 +37,8 @@ class GajimThread(threading.Thread): # END __init__ def run(self): - #This is VERY bad - if self.getName() == 'gtkgui': - plugins.gtkgui.plugin(self.queueIn, self.queueOut) - elif self.getName() == 'logger': - plugins.logger.plugin(self.queueIn, self.queueOut) + mod = compile("import plugins.%s" % self.getName(), \ + self.getName(), "exec") + res = eval(mod) # END run # END GajimThread diff --git a/core/core.py b/core/core.py index 18b8e04f2..f36332b9d 100644 --- a/core/core.py +++ b/core/core.py @@ -18,19 +18,20 @@ ## GNU General Public License for more details. ## -import socket import sys + +sys.path.append("..") import time import string import logging -import plugins import common.hub import common.jabber import common.optparser log = logging.getLogger('core.core') log.setLevel(logging.DEBUG) + CONFPATH = "~/.gajimrc" class GajimCore: @@ -180,21 +181,24 @@ class GajimCore: # END main # END GajimCore +def loadPlugins(gc): + modStr = gc.cfgParser.Core_modules + mods = string.split (modStr, ' ') + + for mod in mods: + modObj = gc.hub.newPlugin(mod) + gc.hub.register(mod, 'ROSTER') + gc.hub.register(mod, 'NOTIFY') + gc.hub.register(mod, 'MSG') + gc.hub.register(mod, 'SUBSCRIBED') + gc.hub.register(mod, 'SUBSCRIBE') + gc.hub.register(mod, 'AGENTS') + gc.hub.register(mod, 'AGENT_INFO') + modObj.load() +# END loadPLugins + def start(): gc = GajimCore() - guiPl = gc.hub.newPlugin('gtkgui') - gc.hub.register('gtkgui', 'ROSTER') - gc.hub.register('gtkgui', 'NOTIFY') - gc.hub.register('gtkgui', 'MSG') - gc.hub.register('gtkgui', 'SUBSCRIBED') - gc.hub.register('gtkgui', 'SUBSCRIBE') - gc.hub.register('gtkgui', 'AGENTS') - gc.hub.register('gtkgui', 'AGENT_INFO') - guiPl.load() - logPl = gc.hub.newPlugin('logger') - gc.hub.register('logger', 'MSG') - gc.hub.register('logger', 'MSGSENT') - gc.hub.register('logger', 'NOTIFY') - gc.hub.register('logger', 'QUIT') - logPl.load() + loadPlugins(gc) gc.mainLoop() +# END start diff --git a/plugins/__init__.py b/plugins/__init__.py index bf20e5702..577c9133a 100644 --- a/plugins/__init__.py +++ b/plugins/__init__.py @@ -1,2 +1 @@ -import gtkgui -import logger +import sock diff --git a/plugins/gtkgui.glade b/plugins/gtk/gtkgui.glade similarity index 100% rename from plugins/gtkgui.glade rename to plugins/gtk/gtkgui.glade diff --git a/plugins/gtkgui.py b/plugins/gtk/gtkgui.py similarity index 100% rename from plugins/gtkgui.py rename to plugins/gtk/gtkgui.py diff --git a/plugins/logger.py b/plugins/logger.py deleted file mode 100644 index 02a2b130d..000000000 --- a/plugins/logger.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python -## plugins/logger.py -## -## Gajim Team: -## - Yann Le Boulanger -## - Vincent Hanquez -## - David Ferlier -## -## Copyright (C) 2003 Gajim Team -## -## This program 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 2 only. -## -## This program 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. -## - -import os -import string -import time -import common.optparser -CONFPATH = "~/.gajimrc" -LOGPATH = os.path.expanduser("~/.gajim/logs/") - -class plugin: - def read_queue(self): - while 1: - while self.queueIN.empty() == 0: - lognotsep = self.cfgParser.Logger_lognotsep - if lognotsep: - lognotsep = string.atoi(lognotsep) - else: - #default - lognotsep = 1 - lognotusr = self.cfgParser.Logger_lognotusr - if lognotusr: - lognotusr = string.atoi(lognotusr) - else: - #default - lognotusr = 1 -# tim = time.strftime("%d%m%y%H%M%S") - tim = time.time() - - ev = self.queueIN.get() - if ev[0] == 'QUIT': - return - elif ev[0] == 'NOTIFY': - status = ev[1][2] - if not status: - status = "" - if lognotsep == 1: - fic = open(LOGPATH + "notify.log", "a") - fic.write("%s:%s:%s:%s\n" % (tim, ev[1][0], \ - ev[1][1], status)) - fic.close() - if lognotusr == 1: - fic = open(LOGPATH + ev[1][0], "a") - fic.write("%s:%s:%s:%s\n" % (tim, ev[1][0], \ - ev[1][1], status)) - fic.close() - elif ev[0] == 'MSG': - fic = open(LOGPATH + ev[1][0], "a") - fic.write("%s:recv:%s\n" % (tim, ev[1][1])) - fic.close() - elif ev[0] == 'MSGSENT': - fic = open(LOGPATH + ev[1][0], "a") - fic.write("%s:sent:%s\n" % (tim, ev[1][1])) - fic.close() - time.sleep(0.5) - - def __init__(self, quIN, quOUT): - self.cfgParser = common.optparser.OptionsParser(CONFPATH) - self.cfgParser.parseCfgFile() - self.queueIN = quIN - self.queueOUT = quOUT - #create ~/.gajim/logs if it doesn't exist - try: - os.stat(os.path.expanduser("~/.gajim")) - except OSError: - os.mkdir(os.path.expanduser("~/.gajim")) - print "creating ~/.gajim/" - try: - os.stat(LOGPATH) - except OSError: - os.mkdir(LOGPATH) - print "creating ~/.gajim/logs/" - self.read_queue() - - -if __name__ == "__main__": - plugin(None, None) - -print "plugin logger loaded"