Ejemplo n.º 1
0
def test_update_set_tag_on_inspected_items_out_of_layer(qApp):
    """ Show layer with people that have emotional process
    symbols that don’t have the layer’s tags, inspect those
    symbols from personal timeline, add tag for the layer -> symbols don’t appear.
    """
    tags = ['here']
    s = Document()
    s.setTags(tags)
    layer1 = Layer(tags=tags)
    s.addItem(layer1)
    p1 = Person(name='p1', tags=tags)
    p2 = Person(name='p2', tags=tags)
    s.addItems(p1, p2)
    cutoff = Emotion(kind=util.ITEM_CUTOFF, personA=p1, personB=p2)
    s.addItems(cutoff)
    layer1.setActive(True)
    date = QDate.currentDate()
    assert p1.shouldShowFor(date, tags) == True
    assert p2.shouldShowFor(date, tags) == True
    assert cutoff.shouldShowFor(date, tags) == False
    assert cutoff.isVisible() == False

    # Simulate inspecting a hidden emotion from person props
    cutoff.setTags(tags)
    assert cutoff.shouldShowFor(date, tags) == True
    assert cutoff.isVisible() == True
Ejemplo n.º 2
0
def test_init_deinit(qApp):
    model = LayerModel()
    assert model.rowCount() == 0

    document = Document()
    layer1 = Layer(name='Layer 1')
    layer2 = Layer(name='Layer 2', active=True)
    layer3 = Layer(name='Layer 3', active=True)
    document.addItems(layer1, layer2, layer3)
    model.document = document
    assert model.rowCount() == 3
    assert model.data(model.index(0, 0), model.IdRole) == layer1.id
    assert model.data(model.index(1, 0), model.IdRole) == layer2.id
    assert model.data(model.index(2, 0), model.IdRole) == layer3.id
    assert model.data(model.index(0, 0)) == 'Layer 1'
    assert model.data(model.index(1, 0)) == 'Layer 2'
    assert model.data(model.index(2, 0)) == 'Layer 3'
    assert model.data(model.index(0, 0), model.ActiveRole) == Qt.Unchecked
    assert model.data(model.index(1, 0), model.ActiveRole) == Qt.Checked
    assert model.data(model.index(2, 0), model.ActiveRole) == Qt.Checked

    model.resetDocument()
    assert model.rowCount() == 0
    with pytest.raises(IndexError):
        model.data(model.index(0, 0))
Ejemplo n.º 3
0
def test_exclusiveLayerSelection(qApp):
    document = Document()
    layerModel = LayerModel()
    layerModel.document = document
    layer1 = Layer(name='Layer 1', active=True)
    layer2 = Layer(name='Layer 2')
    document.addItems(layer1, layer2)
    assert layer1.active() == True

    layerModel.setActiveExclusively(1)
    assert layer2.active() == True
    assert layer1.active() == False
Ejemplo n.º 4
0
def test_reset_layered_props(qApp):
    """ Item.write was not explicitly requesting non-layered prop values. """
    document = Document()
    person = Person()
    layer = Layer(name='Layer 1', active=True, storeGeometry=True)
    document.addItems(person, layer)
    person.setItemPos(QPointF(10, 10))
    assert layer.active() == True
    assert person.pos() == QPointF(10, 10)
    
    document.resetAll() # was throwing exception in commands.py
    assert person.itemPos() == QPointF()
    assert person.pos() == QPointF()
Ejemplo n.º 5
0
def test_undo_add_remove_layered_item_props(qtbot, qApp):
    document = Document()
    male = Person(name='Male', kind='male')
    female = Person(name='Female', kind='female')
    marriage = Marriage(personA=male, personB=female)
    divorcedEvent = Event(parent=marriage, uniqueId='divorced', date=QDate(1900, 1, 1))
    layer = Layer(name='Layer 1')
    document.addItems(male, female, marriage, layer)
    #
    unlayered = {
        'male': QPointF(-100, -50),
        'maleDetails': QPointF(100, 100),
        'female': QPointF(100, -50),
        'femaleDetails': QPointF(-100,-200),
        'marriageSep': QPointF(100, 0),
        'marriageDetails': QPointF(-25, 0),
    }
    layered = {
        'male': QPointF(-200, -150),
        'maleDetails': QPointF(-100, -100),
        'female': QPointF(100, 50),
        'femaleDetails': QPointF(100, 200),
        'marriageSep': QPointF(100, 0),
        'marriageDetails': QPointF(25, -100),
    }
    # layered
    layer.setItemProperty(male.id, 'itemPos', layered['male'])
    layer.setItemProperty(male.detailsText.id, 'itemPos', layered['maleDetails'])
    layer.setItemProperty(female.id, 'itemPos', layered['female'])
    layer.setItemProperty(female.detailsText.id, 'itemPos', layered['femaleDetails'])
    layer.setItemProperty(marriage.detailsText.id, 'itemPos', layered['marriageDetails'])
    layer.setItemProperty(marriage.separationIndicator.id, 'itemPos', layered['marriageSep'])
    # unlayered
    male.setItemPos(unlayered['male'], undo=False)
    male.detailsText.setItemPos(unlayered['maleDetails'], undo=False)
    female.setItemPos(unlayered['female'], undo=False)
    female.detailsText.setItemPos(unlayered['femaleDetails'], undo=False)
    # marriage.setDivorced(True, undo=False)
    marriage.separationIndicator.setItemPos(unlayered['marriageSep'], undo=False)
    marriage.detailsText.setItemPos(unlayered['marriageDetails'], undo=False)
    assert len(document.items()) == 22

    document.selectAll()
    qtbot.clickYesAfter(lambda: document.removeSelection())
    assert len(document.items()) == 0

    commands.stack().undo()
    assert len(document.items()) == 22

    commands.stack().redo()
    assert len(document.items()) == 0
Ejemplo n.º 6
0
def __test_getPrintRect(qApp): # was always changing by a few pixels...
    s = Document()
    s.setTags(['NW', 'NE', 'SW', 'SE'])
    northWest = Person(name='NW', pos=QPointF(-1000, -1000), tags=['NW'])
    northEast = Person(name='NE', pos=QPointF(1000, -1000), tags=['NE'])
    southWest = Person(name='SW', pos=QPointF(-1000, 1000), tags=['SW'])
    southEast = Person(name='SE', pos=QPointF(1000, 1000), tags=['SE'])
    s.addItems(northWest, northEast, southWest, southEast)

    fullRect = s.getPrintRect()
    assert fullRect == QRectF(-1162.5, -1181.25, 2407.5, 2343.75)

    nwRect = s.getPrintRect(forTags=['NW'])
    assert nwRect == QRectF(-1162.5, -1181.25, 417.5, 343.75)
Ejemplo n.º 7
0
def test_moveLayer(qApp):
    document = Document()
    model = LayerModel()
    layer0 = Layer(name='Layer 0')
    layer1 = Layer(name='Layer 1')
    layer2 = Layer(name='Layer 2')
    document.addItems(layer0, layer1, layer2)
    model.document = document

    assert layer0.order() == 0
    assert layer1.order() == 1
    assert layer2.order() == 2

    model.moveLayer(2, 1)
    assert layer0.order() == 0
    assert layer1.order() == 2
    assert layer2.order() == 1

    model.moveLayer(0, 2)
    assert layer0.order() == 2
    assert layer1.order() == 1
    assert layer2.order() == 0
    assert document.layers() == [layer2, layer1, layer0]

    # test reload file after reordering layers

    data = {}
    document.write(data)
    document2 = Document()
    document2.read(data)

    _layer0 = document2.query1(name='Layer 0')
    _layer1 = document2.query1(name='Layer 1')
    _layer2 = document2.query1(name='Layer 2')
    assert _layer0.order() == 2
    assert _layer1.order() == 1
    assert _layer2.order() == 0
    assert document2.layers() == [_layer2, _layer1, _layer0]
Ejemplo n.º 8
0
def test_read_write_layered_props(qApp):
    """ Item.write was not explicitly requesting non-layered prop values. """
    document = Document()
    person = Person()
    layer = Layer(name='Layer 1', active=True)
    document.addItems(person, layer)
    person.setItemPos(QPointF(10, 10))
    person.setColor('#ff0000')
    #
    data = {}
    document.write(data)
    document = Document()
    document.read(data)
    assert document.people()[0].pos() == QPointF(10, 10)
    assert document.people()[0].color() == '#ff0000'
    assert document.people()[0].pen().color().name() == '#ff0000'
    
    document.layers()[0].setActive(False)
    assert document.people()[0].color() == None
    assert document.people()[0].pen().color().name() == util.PEN.color().name()
    
    document.layers()[0].setActive(True)
    assert document.people()[0].color() == '#ff0000'
    assert document.people()[0].pen().color().name() == '#ff0000'
Ejemplo n.º 9
0
def test_set_active(qApp):
    model = LayerModel()
    document = Document()
    layer1 = Layer(name='Layer 1')
    layer2 = Layer(name='Layer 2')
    layer3 = Layer(name='Layer 3')
    document.addItems(layer1, layer2, layer3)
    model.document = document

    assert layer1.active() == False
    assert layer2.active() == False
    assert layer3.active() == False

    def set(row, value):
        assert model.setData(model.index(row, 0), value,
                             model.ActiveRole) is True

    set(0, True)
    assert layer1.active() == True
    assert layer2.active() == False
    assert layer2.active() == False

    set(2, True)
    assert layer1.active() == True
    assert layer2.active() == False
    assert layer3.active() == True

    set(0, False)
    assert layer1.active() == False
    assert layer2.active() == False
    assert layer3.active() == True

    set(2, False)
    assert layer1.active() == False
    assert layer2.active() == False
    assert layer3.active() == False
Ejemplo n.º 10
0
def test_layered_property_undo_redo(qApp):
    """ commands.SetItemProperty wasn't working for non-layered properties. """
    document = Document()
    item = LayeredItem()
    layer = Layer(name='Layer 1')
    document.addItems(layer, item)  # 0
    assert item.num() == -1
    assert item.count == 0
    assert item.layeredCount == 0

    item.setNum(1, undo=True)  # 1
    assert item.num() == 1
    assert item.count == 1
    assert item.layeredCount == 0

    commands.stack().undo()  # 0
    assert item.num() == -1
    assert item.count == 2
    assert item.layeredCount == 0

    commands.stack().redo()  # 1
    assert item.num() == 1
    assert item.count == 3
    assert item.layeredCount == 0
Ejemplo n.º 11
0
def test_layered_properties(qApp):
    """ Ensure correct layered prop updates for marriage+marriage-indicators. """
    document = Document()
    male = Person(name='Male', kind='male')
    female = Person(name='Female', kind='female')
    marriage = Marriage(personA=male, personB=female)
    divorcedEvent = Event(parent=marriage, uniqueId='divorced', date=QDate(1900, 1, 1))
    layer = Layer(name='Layer 1')
    document.addItems(male, female, marriage, layer)
    #
    unlayered = {
        'male': QPointF(-100, -50),
        'maleDetails': QPointF(100, 100),
        'female': QPointF(100, -50),
        'femaleDetails': QPointF(-100,-200),
        'marriageSep': QPointF(100, 0),
        'marriageDetails': QPointF(-25, 0),
    }
    layered = {
        'male': QPointF(-200, -150),
        'maleDetails': QPointF(-100, -100),
        'female': QPointF(100, 50),
        'femaleDetails': QPointF(100, 200),
        'marriageSep': QPointF(100, 0),
        'marriageDetails': QPointF(25, -100),
    }
    # layered
    layer.setItemProperty(male.id, 'itemPos', layered['male'])
    layer.setItemProperty(male.detailsText.id, 'itemPos', layered['maleDetails'])
    layer.setItemProperty(female.id, 'itemPos', layered['female'])
    layer.setItemProperty(female.detailsText.id, 'itemPos', layered['femaleDetails'])
    layer.setItemProperty(marriage.detailsText.id, 'itemPos', layered['marriageDetails'])
    layer.setItemProperty(marriage.separationIndicator.id, 'itemPos', layered['marriageSep'])
    # unlayered
    male.setItemPos(unlayered['male'], undo=False)
    male.detailsText.setItemPos(unlayered['maleDetails'], undo=False)
    female.setItemPos(unlayered['female'], undo=False)
    female.detailsText.setItemPos(unlayered['femaleDetails'], undo=False)
    # marriage.setDivorced(True, undo=False)
    marriage.separationIndicator.setItemPos(unlayered['marriageSep'], undo=False)
    marriage.detailsText.setItemPos(unlayered['marriageDetails'], undo=False)
    
    assert male.pos() == unlayered['male']
    assert male.detailsText.pos() == unlayered['maleDetails']
    assert female.pos() == unlayered['female']
    assert female.detailsText.pos() == unlayered['femaleDetails']
    assert marriage.detailsText.pos() == unlayered['marriageDetails']
    assert marriage.separationIndicator.pos() == unlayered['marriageSep']

    layer.setActive(True)
    assert male.pos() == layered['male']
    assert male.detailsText.pos() == layered['maleDetails']
    assert female.pos() == layered['female']
    assert female.detailsText.pos() == layered['femaleDetails']
    assert marriage.detailsText.pos() == layered['marriageDetails']
    assert marriage.separationIndicator.pos() == layered['marriageSep']
    
    layer.setActive(False)
    assert male.pos() == unlayered['male']
    assert male.detailsText.pos() == unlayered['maleDetails']
    assert female.pos() == unlayered['female']
    assert female.detailsText.pos() == unlayered['femaleDetails']
    assert marriage.detailsText.pos() == unlayered['marriageDetails']
    assert marriage.separationIndicator.pos() == unlayered['marriageSep']
 
    layer.resetItemProperty(male.prop('itemPos'))
    layer.resetItemProperty(male.detailsText.prop('itemPos'))
    layer.resetItemProperty(female.prop('itemPos'))
    layer.resetItemProperty(female.detailsText.prop('itemPos'))
    layer.resetItemProperty(marriage.detailsText.prop('itemPos'))
    layer.resetItemProperty(marriage.separationIndicator.prop('itemPos'))
    layer.setActive(True)
    assert male.pos() == unlayered['male']
    assert male.detailsText.pos() == unlayered['maleDetails']
    assert female.pos() == unlayered['female']
    assert female.detailsText.pos() == unlayered['femaleDetails']
    assert marriage.detailsText.pos() == unlayered['marriageDetails']
    assert marriage.separationIndicator.pos() == unlayered['marriageSep']