summaryrefslogtreecommitdiff
path: root/winMain.py
diff options
context:
space:
mode:
Diffstat (limited to 'winMain.py')
-rw-r--r--winMain.py88
1 files changed, 66 insertions, 22 deletions
diff --git a/winMain.py b/winMain.py
index b34d069..d4cb3bf 100644
--- a/winMain.py
+++ b/winMain.py
@@ -23,10 +23,12 @@ 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"
mConnect=None
mDisconnect=None
+ mLayout=None
" connection window"
wConnect=None
@@ -40,19 +42,8 @@ class winMain(QtGui.QMainWindow):
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle("montypc - An MPD client")
- self.plugins={}
- opts=QtGui.QDockWidget.DockWidgetClosable|QtGui.QDockWidget.DockWidgetMovable
- for p in plugins.listPlugins():
- pkg,name=p[0],p[1]
- # WARNING - dirty hack ahead!
- plugin=eval('%s.%s'%(pkg,name))(self)
- self.plugins[plugin.getName().lower()]=plugin
- dock=plugin.getDockWidget(opts)
- if dock:
- self.addDockWidget(QtCore.Qt.TopDockWidgetArea, plugin.getDockWidget(opts))
-
self.wConnect=winConnect()
-
+
self.statusBar() # create a statusbar
mBar=self.menuBar() # create a menubar
# menu file
@@ -76,16 +67,22 @@ class winMain(QtGui.QMainWindow):
m.addAction("Settings", self.showWinSettings).setIcon(QtGui.QIcon('gfx/gtk-preferences.svg'))
# menu layout
- m=mBar.addMenu("Layout")
- m.setTearOffEnabled(True)
- m.addAction('Save layout', self.saveLayout)
- m.addAction('Restore layout', self.restoreLayout)
- m.addSeparator()
- # can not use iterators, as that gives some creepy error 'bout c++
- actions=self.createPopupMenu().actions()
- for i in xrange(len(actions)):
- m.addAction(actions[i])
+ 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()
+ self.updateLayoutMenu()
self.setDockOptions(QtGui.QMainWindow.AllowNestedDocks \
|QtGui.QMainWindow.AllowTabbedDocks \
|QtGui.QMainWindow.VerticalTabs)
@@ -113,9 +110,55 @@ class winMain(QtGui.QMainWindow):
self.wConnect.monitor()
self.show()
- #self.showWinSettings()
+ if newPlugins:
+ self.showWinSettings()
doEvents()
+ def updateLayoutMenu(self):
+ self.mLayout.clear()
+ self.mLayout.addAction('Save layout', self.saveLayout)
+ self.mLayout.addAction('Restore layout', self.restoreLayout)
+ self.mLayout.addSeparator()
+ # create checkable menu
+ a=QtGui.QAction('Show titlebars', self)
+ a.setCheckable(True)
+ a.setChecked(settings.get('winMain.show.titlebars', '1')=='1')
+ self.toggleTitleBars(a.isChecked())
+ self.connect(a, QtCore.SIGNAL('toggled(bool)'), self.toggleTitleBars)
+ self.mLayout.addAction(a)
+ self.mLayout.addSeparator()
+ # can not use iterators, as that gives some creepy error 'bout c++
+ actions=self.createPopupMenu().actions()
+ for i in xrange(len(actions)):
+ self.mLayout.addAction(actions[i])
+
+ def toggleTitleBars(self, val):
+ if val:
+ settings.set('winMain.show.titlebars', '1')
+ else:
+ settings.set('winMain.show.titlebars', '0')
+ for dock in self.docks:
+ if val:
+ 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)
+ self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dock)
+ self.updateLayoutMenu()
+ def removeDock(self, dock):
+ if dock:
+ self.docks.remove(dock)
+ self.removeDockWidget(dock)
+ self.updateLayoutMenu()
mMenuVisible=None
def createPopupMenu(self):
@@ -156,6 +199,7 @@ class winMain(QtGui.QMainWindow):
if not self.wSettings:
self.wSettings=winSettings(self)
self.wSettings.show()
+ self.wSettings.raise_()
def onReady(self, params):
self.initialiseData()