import json
from collections import OrderedDict

f_out = open("patch.sav","w") 


nr=0
dmx=1
def add(jdata,att):
    global nr,dmx,name,fix,sub
    print("======", "{}_{} {:03}".format( name,fix,sub) )
    #for i in jdata:
    #    print(i )

    
    if "ATTRIBUT" in jdata:
        for a in att:
            if a == "":
                print("---",nr+dmx-1,nr,"")
                nr+=1
                continue
            rdata = '{"NR": 1, "MASTER": "0", "MODE": "S", "VALUE": 0, "ACTIVE": 0, "FX": "", "FX2": {}}'
            rdata = '{"NR": 1, "MASTER": "0", "MODE": "S", "VALUE": 0, "ACTIVE": 0, "FX": "", "FX2": {}}'
            jattr = json.loads(rdata,object_pairs_hook=OrderedDict)
            jattr["NR"] = nr
            if a in ["DIM","RED","GREEN","BLUE"]: #,"PAN","TILT","ZOOM","IRIS"]:
                jattr["MODE"] = "F"

            jdata["ATTRIBUT"][a] = jattr
            print("add",nr+dmx-1,nr,a)
            nr+=1
    print()


fix = 1
sub =1
name="VPU"
dmx=1
univ=2
#for i in range(9*13): # fixtures
#for i in range(8+1*12+1): # fixtures
#for i in range((8*2)+1*(12*2)+1): # fixtures
for i in range(96): # fixtures
    print("====================================")
    rdata='{"DMX": 1, "UNIVERS": 2, "NAME": "VPU_01", "TYPE": "MOVER", "VENDOR": "AYERTON", "ATTRIBUT":{}}'
    jdata = json.loads(rdata,object_pairs_hook=OrderedDict)

    jdata["NAME"] = "{}_{}{:02}".format( name,fix,sub)
    jdata["NAME"] = "{}_{:03}".format( name,fix)#,sub)
    nr=1

    jdata["UNIVERS"] = univ
    jdata["DMX"] = dmx

    att = []
    #att.append("PAN")
    #att.append("PAN-FINE")
    #att.append("TITL")
    #att.append("TILT-FINE")
    #att.append("")
    #att.append("SHUTTER")
    #att.append("DIM")
    #att.append("ZOOM")
    #att.append("GOBO")
    #att.append("")
    #att.append("GOBO2")
    #att.append("G-ROT")
    #att.append("")
    #att.append("PRISMA")
    #att.append("P-ROT")
    #att.append("")
    #att.append("")
    att.append("DIM")
    att.append("RED")
    att.append("GREEN")
    
    att.append("BLUE")

    add(jdata,att)
    fnr="{}{:02}".format(fix,sub)
    fnr="{}".format(fix,sub)
    fnr="{:04}".format(fix,sub)
    f_out.write("{}\t{}\t{}\n".format(fnr,fnr,json.dumps(jdata) ) )
    f_out.flush()   

    rdata='{"DMX": 1, "UNIVERS": 2, "NAME": "SPX7_01", "TYPE": "MOVER", "VENDOR": "JB", "ATTRIBUT":{}}'
    jdata = json.loads(rdata,object_pairs_hook=OrderedDict)


    if 0:#for i in range(3):
        sub+=1
        jdata["NAME"] = "{}_{:03}{:03}".format( name,fix,sub)

        dmx+=nr-1
        univ=2
        nr=1

        jdata["UNIVERS"] = univ
        jdata["DMX"] = dmx

        att = []
        att.append("RED")
        att.append("GREEN")
        att.append("BLUE")
        att.append("WHITE")

        add(jdata,att)
        fnr="{}{:02}".format(fix,sub)
        fnr="{:04}".format(fix,sub)
        f_out.write("{}\t{}\t{}\n".format(fnr,fnr,json.dumps(jdata) ) )
        f_out.flush()
    fix += 1
    sub=1
    dmx+=nr-1
    if dmx >= 512:
        univ +=1
        dmx = 1