#!/usr/bin/env python
# -*- coding: utf-8 -*-

# test script for TechDraw module
# creates a page and 2 views
# adds 1 length dimension to view1
# adds 1 radius dimension to view2
from __future__ import print_function

import FreeCAD
from FreeCAD import Units
import Part
import Measure
import TechDraw
import os

def DVBalloonTest():
    path = os.path.dirname(os.path.abspath(__file__))
    print ('TDBalloon path: ' + path)
    templateFileSpec = path + '/TestTemplate.svg'

    FreeCAD.newDocument("TDBalloon")
    FreeCAD.setActiveDocument("TDBalloon")
    FreeCAD.ActiveDocument=FreeCAD.getDocument("TDBalloon")

    #make source feature
    box = FreeCAD.ActiveDocument.addObject("Part::Box","Box")
    sphere = FreeCAD.ActiveDocument.addObject("Part::Sphere","Sphere")

    #make a page
    page = FreeCAD.ActiveDocument.addObject('TechDraw::DrawPage','Page')
    FreeCAD.ActiveDocument.addObject('TechDraw::DrawSVGTemplate','Template')
    FreeCAD.ActiveDocument.Template.Template = templateFileSpec
    FreeCAD.ActiveDocument.Page.Template = FreeCAD.ActiveDocument.Template
    page.Scale = 5.0
#    page.ViewObject.show()   # unit tests run in console mode 

    #make Views
    view1 = FreeCAD.ActiveDocument.addObject('TechDraw::DrawViewPart','View')
    FreeCAD.ActiveDocument.View.Source = [FreeCAD.ActiveDocument.Box]
    rc = page.addView(view1)
    view1.X = Units.Quantity(30.0,Units.Length)
    view1.Y = Units.Quantity(150.0,Units.Length)
    view2 = FreeCAD.activeDocument().addObject('TechDraw::DrawViewPart','View001')
    FreeCAD.activeDocument().View001.Source = [FreeCAD.activeDocument().Sphere]
    rc = page.addView(view2)
    view2.X = Units.Quantity(220.0,Units.Length)
    view2.Y = Units.Quantity(150.0,Units.Length)
    FreeCAD.ActiveDocument.recompute()

    print("Place balloon")
    balloon1 = FreeCAD.ActiveDocument.addObject('TechDraw::DrawViewBalloon','Balloon1')
    balloon1.SourceView=view1
#    balloon1.OriginIsSet=1        ##OriginIsSet property removed March 2020
    balloon1.OriginX=view1.X + Units.Quantity(20.0,Units.Length)
    balloon1.OriginY=view1.Y + Units.Quantity(20.0,Units.Length)
    balloon1.Text="1"
    balloon1.Y=balloon1.OriginX + Units.Quantity(20.0,Units.Length)
    balloon1.X=balloon1.OriginY + Units.Quantity(20.0,Units.Length)

    print("adding balloon1 to page")
    rc = page.addView(balloon1)

    balloon2 = FreeCAD.ActiveDocument.addObject('TechDraw::DrawViewBalloon','Balloon2')
    balloon2.SourceView=view2
#    balloon2.OriginIsSet=1
    balloon2.OriginX=view2.X + Units.Quantity(20.0,Units.Length)
    balloon2.OriginY=view2.Y + Units.Quantity(20.0,Units.Length)
    balloon2.Text="2"
    balloon2.Y=balloon2.OriginX + Units.Quantity(20.0,Units.Length)
    balloon2.X=balloon2.OriginY + Units.Quantity(20.0,Units.Length)

    print("adding balloon2 to page")
    rc = page.addView(balloon2)

    FreeCAD.ActiveDocument.recompute()

    rc = False
    if ("Up-to-date" in balloon2.State) and ("Up-to-date" in balloon2.State):
        rc = True
    FreeCAD.closeDocument("TDBalloon")
    return rc

if __name__ == '__main__':
    DVBalloonTest()
