From 6c1241b211db9b3985940c0c87610c29bba250aa Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 21 Nov 2009 12:11:40 +0100 Subject: plugin: really remove dock widgets --- nephilim/plugin.py | 27 +++++++++++---------------- nephilim/winMain.py | 2 +- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/nephilim/plugin.py b/nephilim/plugin.py index 560081b..4fc20cd 100644 --- a/nephilim/plugin.py +++ b/nephilim/plugin.py @@ -31,9 +31,8 @@ class Plugin(QtCore.QObject): settings = None # public, read-only - loaded = None - - _dock_widget = None + loaded = False + dock_widget = None _parent = None o = None @@ -66,7 +65,10 @@ class Plugin(QtCore.QObject): self.logger.info('loading') self._load() opts = QtGui.QDockWidget.DockWidgetClosable|QtGui.QDockWidget.DockWidgetMovable - QtGui.QApplication.instance().main_win.add_dock(self.get_dock_widget(opts)) + self.dock_widget = self._get_dock_widget() + if self.dock_widget: + self.dock_widget.setFeatures(opts) + QtGui.QApplication.instance().main_win.add_dock(self.dock_widget) QtGui.QApplication.instance().main_win.restore_layout() self.mpclient.connect_changed.connect(self.set_enabled) self.loaded = True @@ -75,24 +77,16 @@ class Plugin(QtCore.QObject): return self.logger.info("unloading") self._unload() - dock_widget = self.get_dock_widget() - if dock_widget: - QtGui.QApplication.instance().main_win.remove_dock(dock_widget) - self._dock_widget = None + if self.dock_widget: + QtGui.QApplication.instance().main_win.remove_dock(self.dock_widget) + self.dock_widget = None self.settingsWidget = None self.mpclient.connect_changed.disconnect(self.set_enabled) - self.loaded = False + self.loaded = False def set_enabled(self, val): if self.o: self.o.setEnabled(val) - def get_dock_widget(self, opts = None): - self._dock_widget = self._get_dock_widget() - if self._dock_widget and opts: - self._dock_widget.setFeatures(opts) - self._dock_widget.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas) - return self._dock_widget - class SettingsWidget(QtGui.QWidget): """ plugins should subclass this""" plugin = None @@ -132,6 +126,7 @@ class Plugin(QtCore.QObject): dock=QtGui.QDockWidget(self.name, QtGui.QApplication.instance().main_win) dock.setObjectName(self.name) dock.setWidget(widget) + dock.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas) return dock def _load(self): diff --git a/nephilim/winMain.py b/nephilim/winMain.py index c765038..d4668c9 100644 --- a/nephilim/winMain.py +++ b/nephilim/winMain.py @@ -143,9 +143,9 @@ class winMain(QtGui.QMainWindow): self.__update_layout_menu() def remove_dock(self, dock): if dock: + self.removeDockWidget(dock) if dock in self.__docks: self.__docks.remove(dock) - self.removeDockWidget(dock) self.__update_layout_menu() def setStatus(self, status): -- cgit v1.2.3