merged bugfixes
This commit is contained in:
commit
af4980d153
|
@ -2,10 +2,16 @@ PyQtGraph - A pure-Python graphics library for PyQt/PySide
|
||||||
Copyright 2012 Luke Campagnola, University of North Carolina at Chapel Hill
|
Copyright 2012 Luke Campagnola, University of North Carolina at Chapel Hill
|
||||||
http://www.pyqtgraph.org
|
http://www.pyqtgraph.org
|
||||||
|
|
||||||
Authors:
|
Maintainer:
|
||||||
Luke Campagnola ('luke.campagnola@%s.com' % 'gmail')
|
Luke Campagnola ('luke.campagnola@%s.com' % 'gmail')
|
||||||
|
|
||||||
|
Contributors:
|
||||||
Megan Kratz
|
Megan Kratz
|
||||||
|
Paul Manis
|
||||||
Ingo Breßler
|
Ingo Breßler
|
||||||
|
Christian Gavin
|
||||||
|
Michael Cristopher Hogg
|
||||||
|
Ulrich Leutner
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
PyQt 4.7+ or PySide
|
PyQt 4.7+ or PySide
|
||||||
|
|
|
@ -40,11 +40,11 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
||||||
Arguments:
|
Arguments:
|
||||||
dock The new Dock object to add. If None, then a new Dock will be
|
dock The new Dock object to add. If None, then a new Dock will be
|
||||||
created.
|
created.
|
||||||
position 'bottom', 'top', 'left', 'right', 'over', or 'under'
|
position 'bottom', 'top', 'left', 'right', 'above', or 'below'
|
||||||
relativeTo If relativeTo is None, then the new Dock is added to fill an
|
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
|
entire edge of the window. If relativeTo is another Dock, then
|
||||||
the new Dock is placed adjacent to it (or in a tabbed
|
the new Dock is placed adjacent to it (or in a tabbed
|
||||||
configuration for 'over' and 'under').
|
configuration for 'above' and 'below').
|
||||||
=========== =================================================================
|
=========== =================================================================
|
||||||
|
|
||||||
All extra keyword arguments are passed to Dock.__init__() if *dock* is
|
All extra keyword arguments are passed to Dock.__init__() if *dock* is
|
||||||
|
@ -316,4 +316,4 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
|
||||||
DockDrop.dropEvent(self, *args)
|
DockDrop.dropEvent(self, *args)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,52 @@ class GraphicsWidgetAnchor(object):
|
||||||
self.__parentAnchor = parentPos
|
self.__parentAnchor = parentPos
|
||||||
self.__offset = offset
|
self.__offset = offset
|
||||||
self.__geometryChanged()
|
self.__geometryChanged()
|
||||||
|
|
||||||
|
|
||||||
|
def autoAnchor(self, pos, relative=True):
|
||||||
|
"""
|
||||||
|
Set the position of this item relative to its parent by automatically
|
||||||
|
choosing appropriate anchor settings.
|
||||||
|
|
||||||
|
If relative is True, one corner of the item will be anchored to
|
||||||
|
the appropriate location on the parent with no offset. The anchored
|
||||||
|
corner will be whichever is closest to the parent's boundary.
|
||||||
|
|
||||||
|
If relative is False, one corner of the item will be anchored to the same
|
||||||
|
corner of the parent, with an absolute offset to achieve the correct
|
||||||
|
position.
|
||||||
|
"""
|
||||||
|
pos = Point(pos)
|
||||||
|
br = self.mapRectToParent(self.boundingRect()).translated(pos - self.pos())
|
||||||
|
pbr = self.parentItem().boundingRect()
|
||||||
|
anchorPos = [0,0]
|
||||||
|
parentPos = Point()
|
||||||
|
itemPos = Point()
|
||||||
|
if abs(br.left() - pbr.left()) < abs(br.right() - pbr.right()):
|
||||||
|
anchorPos[0] = 0
|
||||||
|
parentPos[0] = pbr.left()
|
||||||
|
itemPos[0] = br.left()
|
||||||
|
else:
|
||||||
|
anchorPos[0] = 1
|
||||||
|
parentPos[0] = pbr.right()
|
||||||
|
itemPos[0] = br.right()
|
||||||
|
|
||||||
|
if abs(br.top() - pbr.top()) < abs(br.bottom() - pbr.bottom()):
|
||||||
|
anchorPos[1] = 0
|
||||||
|
parentPos[1] = pbr.top()
|
||||||
|
itemPos[1] = br.top()
|
||||||
|
else:
|
||||||
|
anchorPos[1] = 1
|
||||||
|
parentPos[1] = pbr.bottom()
|
||||||
|
itemPos[1] = br.bottom()
|
||||||
|
|
||||||
|
if relative:
|
||||||
|
relPos = [(itemPos[0]-pbr.left()) / pbr.width(), (itemPos[1]-pbr.top()) / pbr.height()]
|
||||||
|
self.anchor(anchorPos, relPos)
|
||||||
|
else:
|
||||||
|
offset = itemPos - parentPos
|
||||||
|
self.anchor(anchorPos, anchorPos, offset)
|
||||||
|
|
||||||
def __geometryChanged(self):
|
def __geometryChanged(self):
|
||||||
if self.__parent is None:
|
if self.__parent is None:
|
||||||
return
|
return
|
||||||
|
|
|
@ -101,7 +101,6 @@ class LegendItem(GraphicsWidget, GraphicsWidgetAnchor):
|
||||||
label.close()
|
label.close()
|
||||||
self.updateSize() # redraq box
|
self.updateSize() # redraq box
|
||||||
|
|
||||||
|
|
||||||
def updateSize(self):
|
def updateSize(self):
|
||||||
if self.size is not None:
|
if self.size is not None:
|
||||||
return
|
return
|
||||||
|
@ -115,15 +114,22 @@ class LegendItem(GraphicsWidget, GraphicsWidgetAnchor):
|
||||||
#print(width, height)
|
#print(width, height)
|
||||||
#print width, height
|
#print width, height
|
||||||
self.setGeometry(0, 0, width+25, height)
|
self.setGeometry(0, 0, width+25, height)
|
||||||
|
|
||||||
def boundingRect(self):
|
def boundingRect(self):
|
||||||
return QtCore.QRectF(0, 0, self.width(), self.height())
|
return QtCore.QRectF(0, 0, self.width(), self.height())
|
||||||
|
|
||||||
def paint(self, p, *args):
|
def paint(self, p, *args):
|
||||||
p.setPen(fn.mkPen(255,255,255,100))
|
p.setPen(fn.mkPen(255,255,255,100))
|
||||||
p.setBrush(fn.mkBrush(100,100,100,50))
|
p.setBrush(fn.mkBrush(100,100,100,50))
|
||||||
p.drawRect(self.boundingRect())
|
p.drawRect(self.boundingRect())
|
||||||
|
|
||||||
|
def hoverEvent(self, ev):
|
||||||
|
ev.acceptDrags(QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
def mouseDragEvent(self, ev):
|
||||||
|
if ev.button() == QtCore.Qt.LeftButton:
|
||||||
|
dpos = ev.pos() - ev.lastPos()
|
||||||
|
self.autoAnchor(self.pos() + dpos)
|
||||||
|
|
||||||
class ItemSample(GraphicsWidget):
|
class ItemSample(GraphicsWidget):
|
||||||
""" Class responsible for drawing a single item in a LegendItem (sans label).
|
""" Class responsible for drawing a single item in a LegendItem (sans label).
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
from pyqtgraph.Qt import QtGui, QtCore
|
from pyqtgraph.Qt import QtGui, QtCore, USE_PYSIDE
|
||||||
import matplotlib
|
import matplotlib
|
||||||
|
|
||||||
|
if USE_PYSIDE:
|
||||||
|
matplotlib.rcParams['backend.qt4']='PySide'
|
||||||
|
|
||||||
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
|
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
|
||||||
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
|
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
|
||||||
from matplotlib.figure import Figure
|
from matplotlib.figure import Figure
|
||||||
|
|
Loading…
Reference in New Issue
Block a user