"""
"""
import pygame
import container
import layout
class _document_widget:
def __init__(self,w,align=None):
#w.rect.w,w.rect.h = w.resize()
#self.rect = w.rect
self.widget = w
if align != None: self.align = align
class Document(container.Container):
"""A document container contains many widgets strung together in a document format. (How informative!)
Document()
"""
def __init__(self,**params):
params.setdefault('cls','document')
container.Container.__init__(self,**params)
self.layout = layout.Layout(pygame.Rect(0,0,self.rect.w,self.rect.h))
def add(self,e,align=None):
"""Add a widget.
Document.add(e,align=None)
- e
- widget
- align
- alignment (None,-1,0,1)
"""
dw = _document_widget(e,align)
self.layout.add(dw)
e.container = self
e._c_dw = dw
self.widgets.append(e)
self.chsize()
def remove(self,e):
self.layout._widgets.remove(e._c_dw)
self.widgets.remove(e)
self.chsize()
def block(self,align):
"""Start a new block.
Document.block(align)
- align
- alignment of block (-1,0,1)
"""
self.layout.add(align)
def space(self,e):
"""Add a spacer.
Document.space(e)
- e
- a (w,h) size for the spacer
"""
self.layout.add(e)
def br(self,height):
"""Add a line break.
Document.br(height)
- height
- height of line break
"""
self.layout.add((0,height))
def resize(self,width=None,height=None):
if self.style.width: width = self.style.width
if self.style.height: height = self.style.height
for w in self.widgets:
w.rect.w,w.rect.h = w.resize()
if (width != None and w.rect.w > width) or (height != None and w.rect.h > height):
w.rect.w,w.rect.h = w.resize(width,height)
dw = w._c_dw
dw.rect = pygame.Rect(0,0,w.rect.w,w.rect.h)
if width == None: width = 65535
self.layout.rect = pygame.Rect(0,0,width,0)
self.layout.resize()
_max_w = 0
for w in self.widgets:
#xt,xl,xb,xr = w.getspacing()
dw = w._c_dw
w.style.x,w.style.y,w.rect.w,w.rect.h = dw.rect.x,dw.rect.y,dw.rect.w,dw.rect.h
#w.resize()
w.rect.x,w.rect.y = w.style.x,w.style.y
_max_w = max(_max_w,w.rect.right)
#self.rect.w = _max_w #self.layout.rect.w
#self.rect.h = self.layout.rect.h
#print 'document',_max_w,self.layout.rect.h
return _max_w,self.layout.rect.h