summaryrefslogtreecommitdiff
path: root/winMain.py
diff options
context:
space:
mode:
authorjerous <jerous@gmail.com>2008-11-15 17:23:14 +0100
committerjerous <jerous@gmail.com>2008-11-15 17:23:14 +0100
commitb22148c1bf833464dfc87ce696b4184ae0184e16 (patch)
treebab8bee4a96817772a62a9f1b3b57249edc5d163 /winMain.py
parent536e8e3be5a5dcb0e9c6e0f8664e84b5eb65d796 (diff)
redesign of plugin-handling
plugin-handling is performed in plugins/__init__.py (instead of winMain) robustness against plugins containing errors (like syntax etc)
Diffstat (limited to 'winMain.py')
-rw-r--r--winMain.py52
1 files changed, 19 insertions, 33 deletions
diff --git a/winMain.py b/winMain.py
index 31536d7..d811d6a 100644
--- a/winMain.py
+++ b/winMain.py
@@ -1,7 +1,6 @@
from PyQt4 import QtGui, QtCore, QtSvg
from traceback import print_exc
import time
-import sys
import copy
from misc import *
@@ -18,8 +17,6 @@ import log
class winMain(QtGui.QMainWindow):
"""The winMain class is mpc's main window, showing the playlists and control-interface"""
- " list of plugins that are loaded. name=>Plugin"
- plugins={}
docks=[]
" menus"
@@ -31,10 +28,6 @@ class winMain(QtGui.QMainWindow):
wConnect=None
wSettings=None
- "Other vars"
- " all objects which should be disabled when there is no connection"
- plugins=None
-
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle("montypc - An MPD client")
@@ -67,18 +60,18 @@ class winMain(QtGui.QMainWindow):
self.mLayout=mBar.addMenu("Layout")
self.mLayout.setTearOffEnabled(True)
- self.plugins={}
newPlugins=False # are there new plugins?
- for p in plugins.listPlugins():
- pkg,name=p[0],p[1]
- # WARNING - dirty hack ahead!
- plugin=eval('%s.%s'%(pkg,name))(self)
- newPlugins=newPlugins|(settings.get('%s.load'%(plugin.getName(True)), None)==None)
- self.plugins[plugin.getName().lower()]=plugin
- if settings.get('%s.load'%(plugin.getName(True)), '1')=='1':
- # load new plugins by default
- plugin.load()
-
+ for k, entry in plugins.listPlugins().iteritems():
+ # load the plugin
+ plugin=plugins.loadPlugin(entry[plugins.PLUGIN_CLASS], self)
+ if plugin:
+ newPlugins=newPlugins|(settings.get('%s.load'%(plugin.getName(True)), None)==None)
+ if settings.get('%s.load'%(plugin.getName(True)), '1')=='1':
+ # load new plugins by default
+ plugin.load()
+ else:
+ newPlugins=True
+
self.updateLayoutMenu()
self.setDockOptions(QtGui.QMainWindow.AllowNestedDocks \
|QtGui.QMainWindow.AllowTabbedDocks \
@@ -113,12 +106,11 @@ class winMain(QtGui.QMainWindow):
def quit(self):
# unload all plugins
- for k in self.plugins:
- p=self.plugins[k]
- if p.isLoaded():
+ for entry in plugins.listPlugins().values():
+ p=entry[plugins.PLUGIN_INSTANCE]
+ if p and p.isLoaded():
p.unload()
- self.plugins=[]
QtCore.QCoreApplication.exit()
@@ -150,13 +142,6 @@ class winMain(QtGui.QMainWindow):
dock.setTitleBarWidget(None)
else:
dock.setTitleBarWidget(QtGui.QWidget())
-
- def getPlugin(self, name):
- try:
- return self.plugins[name.lower()]
- except:
- return None
-
def addDock(self, dock):
if dock:
self.docks.append(dock)
@@ -222,9 +207,10 @@ class winMain(QtGui.QMainWindow):
doEvents()
def enableAll(self, value):
- for o in self.plugins:
+ for k,entry in plugins.listPlugins().iteritems():
try:
- self.plugins[o].o.setEnabled(value)
+ plugin=entry[plugins.PLUGIN_INSTANCE]
+ plugin.o.setEnabled(value)
except:
pass
@@ -280,14 +266,14 @@ class winMain(QtGui.QMainWindow):
def getPlaylistList(self):
try:
- return self.plugins['playlist'].getList()
+ return plugins.getPlugin('Playlist').getList()
except:
print "Missing playlist plugin!"
return None
def getLibraryList(self):
try:
- return self.plugins['library'].getList()
+ return plugins.getPlugin('Library').getList()
except:
print "Missing library plugin!"
return None