From 09060a52fcf1c7a856546c3a3555d3c596c1dc6b Mon Sep 17 00:00:00 2001 From: Martin Baeuml Date: Tue, 11 Oct 2011 11:06:33 +0200 Subject: [PATCH] pep8 --- sloth/items/inserters.py | 77 ++++++++++++++++++++++++---------------- sloth/items/items.py | 31 +++++++++++----- 2 files changed, 69 insertions(+), 39 deletions(-) diff --git a/sloth/items/inserters.py b/sloth/items/inserters.py index fd2d8ae..50be339 100644 --- a/sloth/items/inserters.py +++ b/sloth/items/inserters.py @@ -2,24 +2,28 @@ from PyQt4.QtGui import * from PyQt4.Qt import * import math + class ItemInserter(QObject): """ The base class for all item insertion handlers. """ # Signals annotationFinished = pyqtSignal() - inserterFinished = pyqtSignal() + inserterFinished = pyqtSignal() - def __init__(self, labeltool, scene, default_properties=None, prefix="", commit=True): + def __init__(self, labeltool, scene, default_properties={}, + prefix="", commit=True): QObject.__init__(self) - self._labeltool = labeltool - self._scene = scene - self._default_properties = default_properties if default_properties is not None else {} - self._prefix = prefix - self._ann = {} - self._commit = commit - self._item = None - self._pen = Qt.red + self._labeltool = labeltool + self._scene = scene + self._default_properties = default_properties + if self._default_properties is None: + self._default_properties = {} + self._prefix = prefix + self._ann = {} + self._commit = commit + self._item = None + self._pen = Qt.red def annotation(self): return self._ann @@ -57,6 +61,7 @@ class ItemInserter(QObject): def abort(self): self.inserterFinished.emit() + class PointItemInserter(ItemInserter): def mousePressEvent(self, event, image_item): pos = event.scenePos() @@ -66,15 +71,19 @@ class PointItemInserter(ItemInserter): self._ann.update(self._default_properties) if self._commit: image_item.addAnnotation(self._ann) - self._item = QGraphicsEllipseItem(QRectF(pos.x()-2, pos.y()-2, 5, 5)) + self._item = QGraphicsEllipseItem(QRectF(pos.x() - 2, + pos.y() - 2, 5, 5)) self._item.setPen(self.pen()) self.annotationFinished.emit() event.accept() + class RectItemInserter(ItemInserter): - def __init__(self, labeltool, scene, default_properties=None, prefix="", commit=True): - ItemInserter.__init__(self, labeltool, scene, default_properties, prefix, commit) - self._init_pos = None + def __init__(self, labeltool, scene, default_properties={}, + prefix="", commit=True): + ItemInserter.__init__(self, labeltool, scene, default_properties, + prefix, commit) + self._init_pos = None def mousePressEvent(self, event, image_item): pos = event.scenePos() @@ -120,36 +129,41 @@ class RectItemInserter(ItemInserter): self._init_pos = None ItemInserter.abort(self) + class FixedRatioRectItemInserter(RectItemInserter): - def __init__(self, labeltool, scene, default_properties=None, prefix="", commit=True): - RectItemInserter.__init__(self, labeltool, scene, default_properties, prefix, commit) - self._ratio = 1 - if default_properties is not None: - self._ratio = float(default_properties.get('_ratio', 1)) + def __init__(self, labeltool, scene, default_properties={}, + prefix="", commit=True): + RectItemInserter.__init__(self, labeltool, scene, default_properties, + prefix, commit) + self._ratio = float(default_properties.get('_ratio', 1)) def mouseMoveEvent(self, event, image_item): if self._current_item is not None: - new_geometry = QRectF(self._current_item.rect().topLeft(), event.scenePos()) + new_geometry = QRectF(self._current_item.rect().topLeft(), + event.scenePos()) dx = new_geometry.width() dy = new_geometry.height() - d = math.sqrt(dx*dx + dy*dy) + d = math.sqrt(dx * dx + dy * dy) r = self._ratio - k = math.sqrt(r*r+1) - h = d/k - w = d*r/k + k = math.sqrt(r * r + 1) + h = d / k + w = d * r / k new_geometry.setWidth(w) new_geometry.setHeight(h) self._current_item.setRect(new_geometry.normalized()) event.accept() + class SequenceItemInserter(ItemInserter): inserters = [] - def __init__(self, labeltool, scene, default_properties=None, prefix="", commit=True): - ItemInserter.__init__(self, labeltool, scene, default_properties, prefix, commit) - self._items = [] - self._state = 0 + def __init__(self, labeltool, scene, default_properties={}, + prefix="", commit=True): + ItemInserter.__init__(self, labeltool, scene, default_properties, + prefix, commit) + self._items = [] + self._state = 0 self._current_inserter = None self._current_image_item = None @@ -171,8 +185,7 @@ class SequenceItemInserter(ItemInserter): next_state = self._state + 1 if self._current_inserter is not None: - if self._current_inserter is not None: - self.updateAnnotation(self._current_inserter.annotation()) + self.updateAnnotation(self._current_inserter.annotation()) item = self._current_inserter.item() if item is not None: self._scene.addItem(item) @@ -189,7 +202,8 @@ class SequenceItemInserter(ItemInserter): next_state = 0 callable_, prefix, message = self.inserters[next_state] - self._current_inserter = callable_(self._labeltool, self._scene, prefix=prefix, commit=False) + self._current_inserter = callable_(self._labeltool, self._scene, + prefix=prefix, commit=False) self._current_inserter.annotationFinished.connect(self.nextState) if message: self._scene.setMessage(message) @@ -217,6 +231,7 @@ class SequenceItemInserter(ItemInserter): self._cleanup() self.inserterFinished.emit() + class BBoxFaceInserter(SequenceItemInserter): inserters = [ (RectItemInserter, "bbox", "Labelling bounding box"), diff --git a/sloth/items/items.py b/sloth/items/items.py index d8b2a54..ea48185 100644 --- a/sloth/items/items.py +++ b/sloth/items/items.py @@ -4,12 +4,15 @@ from PyQt4.Qt import * import logging LOG = logging.getLogger(__name__) + class IgnorePrefix: def __init__(self, value): self.value = value + def __str__(self): return self.value + class BaseItem(QAbstractGraphicsShapeItem): """ Base class for visualization items. @@ -29,9 +32,9 @@ class BaseItem(QAbstractGraphicsShapeItem): parent : """ QAbstractGraphicsShapeItem.__init__(self, parent) - self.setFlags(QGraphicsItem.ItemIsSelectable | \ - QGraphicsItem.ItemIsMovable | \ - QGraphicsItem.ItemSendsGeometryChanges | \ + self.setFlags(QGraphicsItem.ItemIsSelectable | + QGraphicsItem.ItemIsMovable | + QGraphicsItem.ItemSendsGeometryChanges | QGraphicsItem.ItemSendsScenePositionChanges) self._model_item = model_item @@ -45,6 +48,7 @@ class BaseItem(QAbstractGraphicsShapeItem): self._text = "" self._text_bg_brush = None self._auto_text_keys = self.defaultAutoTextKeys[:] + self._valid = True def changeColor(self): if self._model_item is not None: @@ -190,7 +194,8 @@ class BaseItem(QAbstractGraphicsShapeItem): nextindex = 0 else: try: - nextindex = (valuelist.index(oldvalue)+1) % len(valuelist) + nextindex = valuelist.index(oldvalue) + 1 + nextindex %= len(valuelist) except ValueError: nextindex = 0 newvalue = valuelist[nextindex] @@ -296,7 +301,8 @@ class RectItem(BaseItem): self._resize_start_rect = None self._updateRect(self._dataToRect(self._model_item)) - LOG.debug("Constructed rect %s for model item %s" % (self._rect, model_item)) + LOG.debug("Constructed rect %s for model item %s" % + (self._rect, model_item)) def __call__(self, model_item=None, parent=None): item = RectItem(model_item, parent) @@ -365,7 +371,9 @@ class RectItem(BaseItem): def mouseMoveEvent(self, event): if self._resize: diff = event.scenePos() - self._resize_start - rect = QRectF(self._resize_start_rect.topLeft(), self._resize_start_rect.bottomRight() + diff).normalized() + tl = self._resize_start_rect.topLeft() + br = self._resize_start_rect.bottomRight() + rect = QRectF(tl, br + diff).normalized() self._updateRect(rect) self.updateModel() event.accept() @@ -398,6 +406,7 @@ class RectItem(BaseItem): self.updateModel() event.accept() + class GroupItem(BaseItem): items = [] @@ -421,6 +430,7 @@ class GroupItem(BaseItem): def boundingRect(self): return self.childrenBoundingRect() + class OccludablePointItem(PointItem): cycleValuesOnKeypress = { 'o': ('occluded', [True, False]) @@ -440,6 +450,7 @@ class OccludablePointItem(PointItem): occluded = self._model_item[key] self.setColor(Qt.red if occluded else Qt.yellow) + class IDRectItem(RectItem): cycleValuesOnKeypress = dict( [('i', (IgnorePrefix('id'), range(10)))] + @@ -447,6 +458,7 @@ class IDRectItem(RectItem): ) defaultAutoTextKeys = ['id'] + class BBoxFaceItem(GroupItem): items = [ (IDRectItem, "bbox"), @@ -455,6 +467,7 @@ class BBoxFaceItem(GroupItem): (OccludablePointItem, "mc"), ] + class ControlItem(QGraphicsItem): def __init__(self, parent=None): QGraphicsItem.__init__(self, parent) @@ -467,6 +480,7 @@ class ControlItem(QGraphicsItem): color.setAlpha(200) painter.fillRect(self.boundingRect(), color) + class NPointFacePointItem(QGraphicsEllipseItem): def __init__(self, landmark, *args, **kwargs): self._landmark = landmark @@ -489,6 +503,7 @@ class NPointFacePointItem(QGraphicsEllipseItem): self.setPen(color) self.update() + class NPointFaceItem(GroupItem): items = [ (OccludablePointItem, "leoc"), @@ -506,7 +521,8 @@ class NPointFaceItem(GroupItem): def createChildren(self): for callable_, prefix in self.items: - if prefix + 'x' in self._model_item and prefix + 'y' in self._model_item: + if prefix + 'x' in self._model_item and \ + prefix + 'y' in self._model_item: child = callable_(self._model_item, prefix, self) self._children.append(child) @@ -523,4 +539,3 @@ class NPointFaceItem(GroupItem): pen.setStyle(Qt.DashLine) painter.setPen(pen) painter.drawRect(self.boundingRect()) -