import Image
import string, os, sys
import picture
from functions import getYesNo, getTitle

####################
#    class body
####################
"""
Model of body in main index file
Picture is head of linked list with picture objects
Can print the main indexfile
"""
class Body:
    def __init__(self, props=None):
        if props:
            self.columns  = props["columns"]
            self.fullsize = props["fullsize"]
            self.headline = props["title"]
            self.padding  = props["padding"]
        else:
            self.columns   = None
            self.fullsize  = None
            self.headline  = None
            self.padding   = None
            
        self.targetdir = None
        self.props = props


    def tostring(self):
        return "Picture:\"", "Columns:", self.columns , "\n" + "Fullsize:" , self.fullsize , "\n", "Headline:", self.headline, "\n", "Signature:", self.signature, "\n", "Padding:", "\n", "targetdir:", self.targetdir;
        

    def getSignature(self):
        return self.signature

    def getColumns(self):
        return self.columns

    def getFullsize(self):
        return self.fullsize

    def getHeadline(self):
        if  (self.headline is None) or len(self.headline) == 0:
            head,self.headline = os.path.split(os.getcwd())
        return getTitle(self.headline, self.props)

    def getPadding(self):
        return self.padding

    def gettargetdir(self):
        return self.targetdir
    
    def setSignature(self, signature):
        self.signature = signature

    def setColumns(self, columns):
        self.columns = columns

    def setFullsize(self, fullsize):
        if fullsize == 'Yes':
            self.fullsize = 1
        else:
            self.fullsize = 0

    def setPadding(self, padding):
        if padding is None:
            self.padding = 0
        else:
            self.padding = padding

    def setHeadline(self, headline):
        self.headline = headline

    def settargetdir(self, directory):
        if directory is None or directory == '':
            raise  NE_InvalidDirectory
        else:
            self.targetdir = directory


    def getHTML(self, pictureHead):
        "Generate html for index.html, get html for each picture from picture itself"
        html = []
        html.append("\n  <body>")
        html.append("\n    <hr class=\"headlineupper\">\n       <H1>" + self.getHeadline() + "</H1>\n    <hr class=\"headlinelower\">\n")
        html.append("\n   <table cellpadding=" + str(self.padding) + ">\n    ")
        html.append("<tr>")

        curPic = pictureHead
        curColumn = 1
        
        if curPic is None:
            pass
        elif curPic.next is None:
            html.append(curPic.getLinkHTMLForSinglePic(self.fullsize))
        else:
            while curPic:
                html.append(curPic.getLinkHTML(self.fullsize))
                if curColumn >= self.columns:
                    html.append("\n    </tr>\n    <tr>")
                    curColumn = 0
                curColumn = curColumn + 1
                curPic = curPic.getNext()

        html.append("\n    </tr>\n   </table>\n")
        return string.joinfields(html)
        


    def getXML(self, pictureManager):
        bodyXML = "\n        <body>\n            <columns>" + str(self.columns) + "</columns>\n            <padding>" + str(self.padding) + "</padding>\n            <fullsize>" + getYesNo(self.fullsize) + "</fullsize>" + "\n            <headline>" + self.headline + "</headline>"     
        bodyXML = bodyXML + "\n        </body>"
        return bodyXML

                
