From 58d8b79f86b25e6fa29a64f48106af832f5c6644 Mon Sep 17 00:00:00 2001 From: David Aguilar Date: Fri, 25 Nov 2011 22:46:28 -0800 Subject: [PATCH] dockwidgets: Use a prettier titlebar widget Use a custom widget for the dock title bar. We can later do nice things like add custom menus, etc. Signed-off-by: David Aguilar --- cola/qt.py | 40 ++++++++++++++++++++++++++++++++++++++++ cola/qtutils.py | 10 ++++++++++ 2 files changed, 50 insertions(+) diff --git a/cola/qt.py b/cola/qt.py index 96c29bd6..447bd5ac 100644 --- a/cola/qt.py +++ b/cola/qt.py @@ -29,11 +29,51 @@ def create_button(text, layout=None, tooltip=None, icon=None): return button +class DockTitleBarWidget(QtGui.QWidget): + def __init__(self, parent, title): + QtGui.QWidget.__init__(self, parent) + label = QtGui.QLabel() + font = label.font() + font.setCapitalization(QtGui.QFont.SmallCaps) + label.setFont(font) + label.setText(title) + + self.close_button = QtGui.QPushButton() + self.close_button.setFlat(True) + self.close_button.setFixedSize(QtCore.QSize(16, 16)) + self.close_button.setIcon(qtutils.titlebar_close_icon()) + + self.toggle_button = QtGui.QPushButton() + self.toggle_button.setFlat(True) + self.toggle_button.setFixedSize(QtCore.QSize(16, 16)) + self.toggle_button.setIcon(qtutils.titlebar_normal_icon()) + + layout = QtGui.QHBoxLayout() + layout.setMargin(2) + layout.setSpacing(defs.spacing) + layout.addWidget(label) + layout.addStretch() + layout.addWidget(self.toggle_button) + layout.addWidget(self.close_button) + self.setLayout(layout) + + self.connect(self.toggle_button, SIGNAL('clicked()'), + self.toggle_floating) + + self.connect(self.close_button, SIGNAL('clicked()'), + self.parent().toggleViewAction().trigger) + + def toggle_floating(self): + self.parent().setFloating(not self.parent().isFloating()) + + def create_dock(title, parent): """Create a dock widget and set it up accordingly.""" dock = QtGui.QDockWidget(parent) dock.setWindowTitle(tr(title)) dock.setObjectName(title) + titlebar = DockTitleBarWidget(dock, title) + dock.setTitleBarWidget(titlebar) return dock diff --git a/cola/qtutils.py b/cola/qtutils.py index 3e1a9b8b..46bfecd1 100644 --- a/cola/qtutils.py +++ b/cola/qtutils.py @@ -428,6 +428,16 @@ def dir_close_icon(): return cached_icon(QtGui.QStyle.SP_DirClosedIcon) +def titlebar_close_icon(): + """Return a dock widget close icon""" + return cached_icon(QtGui.QStyle.SP_TitleBarCloseButton) + + +def titlebar_normal_icon(): + """Return a dock widget close icon""" + return cached_icon(QtGui.QStyle.SP_TitleBarNormalButton) + + def git_icon(): return icon('git.svg') -- 2.11.4.GIT