# coding:iso-8859-1   Henrik Eriksson 2003-11-17

from tkinter import *

stor=("Courier",18,"bold")
liten=("Courier",14,"bold")
def ram(master,sidan):
    ramen=Frame(master,bg="white")
    ramen.pack(side=sidan,fill=BOTH)
    return ramen
def atomruta(master,namn,num):
    ruta=Frame(master,bg="yellow",borderwidth=2,relief=GROOVE)
    ruta.pack(side=LEFT)
    atom=Frame(ruta,bg="yellow")
    atom.pack(side=LEFT)
    Label(atom,text=namn,font=stor,bg="yellow").pack()
    Frame(atom, height=5, bg="yellow").pack()
    if num>1:
        Label(ruta, text=str(num),font=liten,bg="yellow").pack(side=BOTTOM)
def streck(master):
    strecket=Frame(master)
    strecket.pack(side=LEFT,fill=BOTH,expand=True)
    Frame(strecket,bg="white",height=20).pack(fill=X)
    Frame(strecket,bg="red",height=4,width=25).pack(fill=X)
    Frame(strecket,bg="white").pack(fill=BOTH,expand=1)
def stolpe(master):
    hela=ram(master,TOP)
    stolpen=ram(hela,LEFT)
    Frame(stolpen,bg="white",width=15).pack(side=LEFT)
    Frame(stolpen,bg="red",width=4,height=25).pack(side=LEFT)
    Frame(hela,bg="white").pack(fill=BOTH,expand=1)
def picture(master,p):
    if p is None: return
    storruta=ram(master,LEFT)
    rest=ram(master,LEFT)
    uppruta=ram(storruta,TOP)
    nerruta=ram(storruta,TOP)
    atomruta(uppruta,p.atom,p.num)
    if p.down:
        stolpe(nerruta)
        picture(nerruta,p.down)
        ram(nerruta,TOP)
    if p.next:
        streck(uppruta)
        picture(rest,p.next)
def show(p):
    Label(text="   ",font=stor,bg="white").pack(side=LEFT,fill=Y)
    picture(None,p)
