Merged Ddocumentation updates for DockArea
This commit is contained in:
commit
8b950e807f
@ -77,6 +77,11 @@ class Dock(QtGui.QWidget, DockDrop):
|
|||||||
return name == 'dock'
|
return name == 'dock'
|
||||||
|
|
||||||
def setStretch(self, x=None, y=None):
|
def setStretch(self, x=None, y=None):
|
||||||
|
"""
|
||||||
|
Set the 'target' size for this Dock.
|
||||||
|
The actual size will be determined by comparing this Dock's
|
||||||
|
stretch value to the rest of the docks it shares space with.
|
||||||
|
"""
|
||||||
#print "setStretch", self, x, y
|
#print "setStretch", self, x, y
|
||||||
#self._stretch = (x, y)
|
#self._stretch = (x, y)
|
||||||
if x is None:
|
if x is None:
|
||||||
@ -100,6 +105,10 @@ class Dock(QtGui.QWidget, DockDrop):
|
|||||||
#return self._stretch
|
#return self._stretch
|
||||||
|
|
||||||
def hideTitleBar(self):
|
def hideTitleBar(self):
|
||||||
|
"""
|
||||||
|
Hide the title bar for this Dock.
|
||||||
|
This will prevent the Dock being moved by the user.
|
||||||
|
"""
|
||||||
self.label.hide()
|
self.label.hide()
|
||||||
self.labelHidden = True
|
self.labelHidden = True
|
||||||
if 'center' in self.allowedAreas:
|
if 'center' in self.allowedAreas:
|
||||||
@ -107,12 +116,21 @@ class Dock(QtGui.QWidget, DockDrop):
|
|||||||
self.updateStyle()
|
self.updateStyle()
|
||||||
|
|
||||||
def showTitleBar(self):
|
def showTitleBar(self):
|
||||||
|
"""
|
||||||
|
Show the title bar for this Dock.
|
||||||
|
"""
|
||||||
self.label.show()
|
self.label.show()
|
||||||
self.labelHidden = False
|
self.labelHidden = False
|
||||||
self.allowedAreas.add('center')
|
self.allowedAreas.add('center')
|
||||||
self.updateStyle()
|
self.updateStyle()
|
||||||
|
|
||||||
def setOrientation(self, o='auto', force=False):
|
def setOrientation(self, o='auto', force=False):
|
||||||
|
"""
|
||||||
|
Sets the orientation of the title bar for this Dock.
|
||||||
|
Must be one of 'auto', 'horizontal', or 'vertical'.
|
||||||
|
By default ('auto'), the orientation is determined
|
||||||
|
based on the aspect ratio of the Dock.
|
||||||
|
"""
|
||||||
#print self.name(), "setOrientation", o, force
|
#print self.name(), "setOrientation", o, force
|
||||||
if o == 'auto' and self.autoOrient:
|
if o == 'auto' and self.autoOrient:
|
||||||
if self.container().type() == 'tab':
|
if self.container().type() == 'tab':
|
||||||
@ -127,6 +145,7 @@ class Dock(QtGui.QWidget, DockDrop):
|
|||||||
self.updateStyle()
|
self.updateStyle()
|
||||||
|
|
||||||
def updateStyle(self):
|
def updateStyle(self):
|
||||||
|
## updates orientation and appearance of title bar
|
||||||
#print self.name(), "update style:", self.orientation, self.moveLabel, self.label.isVisible()
|
#print self.name(), "update style:", self.orientation, self.moveLabel, self.label.isVisible()
|
||||||
if self.labelHidden:
|
if self.labelHidden:
|
||||||
self.widgetArea.setStyleSheet(self.nStyle)
|
self.widgetArea.setStyleSheet(self.nStyle)
|
||||||
@ -154,6 +173,10 @@ class Dock(QtGui.QWidget, DockDrop):
|
|||||||
return self._container
|
return self._container
|
||||||
|
|
||||||
def addWidget(self, widget, row=None, col=0, rowspan=1, colspan=1):
|
def addWidget(self, widget, row=None, col=0, rowspan=1, colspan=1):
|
||||||
|
"""
|
||||||
|
Add a new widget to the interior of this Dock.
|
||||||
|
Each Dock uses a QGridLayout to arrange widgets within.
|
||||||
|
"""
|
||||||
if row is None:
|
if row is None:
|
||||||
row = self.currentRow
|
row = self.currentRow
|
||||||
self.currentRow = max(row+1, self.currentRow)
|
self.currentRow = max(row+1, self.currentRow)
|
||||||
@ -188,7 +211,8 @@ class Dock(QtGui.QWidget, DockDrop):
|
|||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<Dock %s %s>" % (self.name(), self.stretch())
|
return "<Dock %s %s>" % (self.name(), self.stretch())
|
||||||
|
|
||||||
|
|
||||||
class DockLabel(VerticalLabel):
|
class DockLabel(VerticalLabel):
|
||||||
|
|
||||||
sigClicked = QtCore.Signal(object, object)
|
sigClicked = QtCore.Signal(object, object)
|
||||||
@ -287,76 +311,3 @@ class DockLabel(VerticalLabel):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#class DockLabel(QtGui.QWidget):
|
|
||||||
#def __init__(self, text, dock):
|
|
||||||
#QtGui.QWidget.__init__(self)
|
|
||||||
#self._text = text
|
|
||||||
#self.dock = dock
|
|
||||||
#self.orientation = None
|
|
||||||
#self.setOrientation('horizontal')
|
|
||||||
|
|
||||||
#def text(self):
|
|
||||||
#return self._text
|
|
||||||
|
|
||||||
#def mousePressEvent(self, ev):
|
|
||||||
#if ev.button() == QtCore.Qt.LeftButton:
|
|
||||||
#self.pressPos = ev.pos()
|
|
||||||
#self.startedDrag = False
|
|
||||||
#ev.accept()
|
|
||||||
|
|
||||||
#def mouseMoveEvent(self, ev):
|
|
||||||
#if not self.startedDrag and (ev.pos() - self.pressPos).manhattanLength() > QtGui.QApplication.startDragDistance():
|
|
||||||
#self.dock.startDrag()
|
|
||||||
#ev.accept()
|
|
||||||
##print ev.pos()
|
|
||||||
|
|
||||||
#def mouseReleaseEvent(self, ev):
|
|
||||||
#ev.accept()
|
|
||||||
|
|
||||||
#def mouseDoubleClickEvent(self, ev):
|
|
||||||
#if ev.button() == QtCore.Qt.LeftButton:
|
|
||||||
#self.dock.float()
|
|
||||||
|
|
||||||
#def setOrientation(self, o):
|
|
||||||
#if self.orientation == o:
|
|
||||||
#return
|
|
||||||
#self.orientation = o
|
|
||||||
#self.update()
|
|
||||||
#self.updateGeometry()
|
|
||||||
|
|
||||||
#def paintEvent(self, ev):
|
|
||||||
#p = QtGui.QPainter(self)
|
|
||||||
#p.setBrush(QtGui.QBrush(QtGui.QColor(100, 100, 200)))
|
|
||||||
#p.setPen(QtGui.QPen(QtGui.QColor(50, 50, 100)))
|
|
||||||
#p.drawRect(self.rect().adjusted(0, 0, -1, -1))
|
|
||||||
|
|
||||||
#p.setPen(QtGui.QPen(QtGui.QColor(255, 255, 255)))
|
|
||||||
|
|
||||||
#if self.orientation == 'vertical':
|
|
||||||
#p.rotate(-90)
|
|
||||||
#rgn = QtCore.QRect(-self.height(), 0, self.height(), self.width())
|
|
||||||
#else:
|
|
||||||
#rgn = self.rect()
|
|
||||||
#align = QtCore.Qt.AlignTop|QtCore.Qt.AlignHCenter
|
|
||||||
|
|
||||||
#self.hint = p.drawText(rgn, align, self.text())
|
|
||||||
#p.end()
|
|
||||||
|
|
||||||
#if self.orientation == 'vertical':
|
|
||||||
#self.setMaximumWidth(self.hint.height())
|
|
||||||
#self.setMaximumHeight(16777215)
|
|
||||||
#else:
|
|
||||||
#self.setMaximumHeight(self.hint.height())
|
|
||||||
#self.setMaximumWidth(16777215)
|
|
||||||
|
|
||||||
#def sizeHint(self):
|
|
||||||
#if self.orientation == 'vertical':
|
|
||||||
#if hasattr(self, 'hint'):
|
|
||||||
#return QtCore.QSize(self.hint.height(), self.hint.width())
|
|
||||||
#else:
|
|
||||||
#return QtCore.QSize(19, 50)
|
|
||||||
#else:
|
|
||||||
#if hasattr(self, 'hint'):
|
|
||||||
#return QtCore.QSize(self.hint.width(), self.hint.height())
|
|
||||||
#else:
|
|
||||||
#return QtCore.QSize(50, 19)
|
|
||||||
|
@ -35,8 +35,18 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
|||||||
|
|
||||||
def addDock(self, dock, position='bottom', relativeTo=None):
|
def addDock(self, dock, position='bottom', relativeTo=None):
|
||||||
"""Adds a dock to this area.
|
"""Adds a dock to this area.
|
||||||
position may be: bottom, top, left, right, over, under
|
|
||||||
If relativeTo specifies an existing dock, the new dock is added adjacent to it"""
|
=========== =================================================================
|
||||||
|
Arguments:
|
||||||
|
dock The new Dock object to add.
|
||||||
|
position 'bottom', 'top', 'left', 'right', 'over', or 'under'
|
||||||
|
relativeTo If relativeTo is None, then the new Dock is added to fill an
|
||||||
|
entire edge of the window. If relativeTo is another Dock, then
|
||||||
|
the new Dock is placed adjacent to it (or in a tabbed
|
||||||
|
configuration for 'over' and 'under').
|
||||||
|
=========== =================================================================
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
## Determine the container to insert this dock into.
|
## Determine the container to insert this dock into.
|
||||||
## If there is no neighbor, then the container is the top.
|
## If there is no neighbor, then the container is the top.
|
||||||
@ -90,6 +100,17 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
|||||||
dock.area = self
|
dock.area = self
|
||||||
self.docks[dock.name()] = dock
|
self.docks[dock.name()] = dock
|
||||||
|
|
||||||
|
def moveDock(self, dock, position, neighbor):
|
||||||
|
"""
|
||||||
|
Move an existing Dock to a new location.
|
||||||
|
"""
|
||||||
|
old = dock.container()
|
||||||
|
## Moving to the edge of a tabbed dock causes a drop outside the tab box
|
||||||
|
if position in ['left', 'right', 'top', 'bottom'] and neighbor is not None and neighbor.container() is not None and neighbor.container().type() == 'tab':
|
||||||
|
neighbor = neighbor.container()
|
||||||
|
self.addDock(dock, position, neighbor)
|
||||||
|
old.apoptose()
|
||||||
|
|
||||||
def getContainer(self, obj):
|
def getContainer(self, obj):
|
||||||
if obj is None:
|
if obj is None:
|
||||||
return self
|
return self
|
||||||
@ -131,13 +152,6 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
|||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def moveDock(self, dock, position, neighbor):
|
|
||||||
old = dock.container()
|
|
||||||
## Moving to the edge of a tabbed dock causes a drop outside the tab box
|
|
||||||
if position in ['left', 'right', 'top', 'bottom'] and neighbor is not None and neighbor.container() is not None and neighbor.container().type() == 'tab':
|
|
||||||
neighbor = neighbor.container()
|
|
||||||
self.addDock(dock, position, neighbor)
|
|
||||||
old.apoptose()
|
|
||||||
|
|
||||||
#def paintEvent(self, ev):
|
#def paintEvent(self, ev):
|
||||||
#self.drawDockOverlay()
|
#self.drawDockOverlay()
|
||||||
@ -159,6 +173,7 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
|||||||
return area
|
return area
|
||||||
|
|
||||||
def floatDock(self, dock):
|
def floatDock(self, dock):
|
||||||
|
"""Removes *dock* from this DockArea and places it in a new window."""
|
||||||
area = self.addTempArea()
|
area = self.addTempArea()
|
||||||
area.win.resize(dock.size())
|
area.win.resize(dock.size())
|
||||||
area.moveDock(dock, 'top', None)
|
area.moveDock(dock, 'top', None)
|
||||||
@ -170,6 +185,9 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
|||||||
area.window().close()
|
area.window().close()
|
||||||
|
|
||||||
def saveState(self):
|
def saveState(self):
|
||||||
|
"""
|
||||||
|
Return a serialized (storable) representation of the state of
|
||||||
|
all Docks in this DockArea."""
|
||||||
state = {'main': self.childState(self.topContainer), 'float': []}
|
state = {'main': self.childState(self.topContainer), 'float': []}
|
||||||
for a in self.tempAreas:
|
for a in self.tempAreas:
|
||||||
geo = a.win.geometry()
|
geo = a.win.geometry()
|
||||||
@ -188,6 +206,10 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
|||||||
|
|
||||||
|
|
||||||
def restoreState(self, state):
|
def restoreState(self, state):
|
||||||
|
"""
|
||||||
|
Restore Dock configuration as generated by saveState.
|
||||||
|
"""
|
||||||
|
|
||||||
## 1) make dict of all docks and list of existing containers
|
## 1) make dict of all docks and list of existing containers
|
||||||
containers, docks = self.findAll()
|
containers, docks = self.findAll()
|
||||||
oldTemps = self.tempAreas[:]
|
oldTemps = self.tempAreas[:]
|
||||||
|
Loading…
Reference in New Issue
Block a user