use ItemFactory inserters

This commit is contained in:
Martin Baeuml
2011-05-05 17:47:35 +02:00
parent 5c5526d34b
commit df48841b8a
2 changed files with 8 additions and 24 deletions
+3 -21
View File
@@ -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
#______________________________________________________________________________________________________
+5 -3
View File
@@ -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