From df48841b8aa385932ab6418a84c8dec753c5dfdc Mon Sep 17 00:00:00 2001 From: Martin Baeuml Date: Thu, 5 May 2011 17:47:35 +0200 Subject: [PATCH] use ItemFactory inserters --- annotationscene.py | 24 +++--------------------- sceneitems/annotationitem.py | 8 +++++--- 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/annotationscene.py b/annotationscene.py index 5841f5d..7a96019 100644 --- a/annotationscene.py +++ b/annotationscene.py @@ -15,7 +15,6 @@ class AnnotationScene(QGraphicsScene): self.model_ = None self.mode_ = None - self.inserters_ = {} self.inserter_ = None self.debug_ = True self.message_ = "" @@ -23,12 +22,6 @@ class AnnotationScene(QGraphicsScene): self.setBackgroundBrush(Qt.darkGray) - self.addItemInserter('point', PointItemInserter(self)) - self.addItemInserter('rect', RectItemInserter(self)) - self.addItemInserter('ratiorect', FixedRatioRectItemInserter(self)) - self.addItemInserter('poly', PolygonItemInserter(self)) - self.addItemInserter('polygon', PolygonItemInserter(self)) - self.setMode(None) self.reset() @@ -115,10 +108,11 @@ class AnnotationScene(QGraphicsScene): self.inserter_ = None return - if not self.mode_['type'] in self.inserters_: + inserter = ItemFactory.createItemInserter(self.mode_['type'], self) + if inserter is None: raise InvalidArgumentException("Invalid mode") - self.inserter_ = self.inserters_[self.mode_['type']] + self.inserter_ = inserter self.inserter_.setMode(self.mode_) # @@ -133,18 +127,6 @@ class AnnotationScene(QGraphicsScene): QGraphicsScene.addItem(self, item) # TODO emit signal itemAdded - def addItemInserter(self, type, inserter, replace=False): - type = type.lower() - if type in self.inserters_ and not replace: - raise Exception("Type %s already has an inserter" % type) - - self.inserters_[type] = inserter - - def removeItemInserter(self, type): - type = type.lower() - if type in self.inserters_: - del self.inserters_[type] - # # mouse event handlers #______________________________________________________________________________________________________ diff --git a/sceneitems/annotationitem.py b/sceneitems/annotationitem.py index eeb28be..6ddf18c 100644 --- a/sceneitems/annotationitem.py +++ b/sceneitems/annotationitem.py @@ -356,9 +356,11 @@ class AnnotationGraphicsItemFactory: # register common item types ItemFactory = AnnotationGraphicsItemFactory() -ItemFactory.register('rect', AnnotationGraphicsRectItem, RectItemInserter) -ItemFactory.register('point', AnnotationGraphicsPointItem, PointItemInserter) -ItemFactory.register('polygon', AnnotationGraphicsRectItem, PolygonItemInserter) +ItemFactory.register('rect', AnnotationGraphicsRectItem, RectItemInserter) +ItemFactory.register('ratiorect', None, FixedRatioRectItemInserter) +ItemFactory.register('point', AnnotationGraphicsPointItem, PointItemInserter) +ItemFactory.register('polygon', AnnotationGraphicsRectItem, PolygonItemInserter) +ItemFactory.register('poly', AnnotationGraphicsRectItem, PolygonItemInserter) ### testing import pytest