Update of /cvsroot/freevo/freevo/skins/main1
In directory sc8-pr-cvs1:/tmp/cvs-serv27185

Modified Files:
        area.py info_area.py listing_area.py skin_main1.py xml_skin.py 
Log Message:
switch to the new info area

Index: area.py
===================================================================
RCS file: /cvsroot/freevo/freevo/skins/main1/area.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** area.py     22 Jun 2003 11:34:46 -0000      1.6
--- area.py     29 Jun 2003 20:38:58 -0000      1.7
***************
*** 28,31 ****
--- 28,34 ----
  # -----------------------------------------------------------------------
  # $Log$
+ # Revision 1.7  2003/06/29 20:38:58  dischi
+ # switch to the new info area
+ #
  # Revision 1.6  2003/06/22 11:34:46  dischi
  # use null layer
***************
*** 230,233 ****
--- 233,237 ----
                      width = x2 - x1
                      if font.shadow.visible:
+                         width -= font.shadow.x
                          osd.drawstringframed(text, x1+font.shadow.x, 
y1+font.shadow.y,
                                               width, height, font.shadow.color, None,
***************
*** 444,463 ****
          e.g. mp3s inside a folder with cover file
          """
!         if hasattr(menu, '_skin_force_text_view'):
!             self.use_text_view = menu._skin_force_text_view
              return
!         image = None
          if len(menu.choices) < 5:
!             menu._skin_force_text_view = FALSE
              self.use_text_view = FALSE
              return
          for i in menu.choices:
              if image and i.image != image:
!                 menu._skin_force_text_view = FALSE
                  self.use_text_view = FALSE
                  return
              image = i.image
!         menu._skin_force_text_view = image
!         self.use_text_view = image
  
      
--- 448,475 ----
          e.g. mp3s inside a folder with cover file
          """
!         if hasattr(menu, 'skin_force_text_view'):
!             self.use_text_view = menu.skin_force_text_view
              return
!         image  = None
!         folder = 0
          if len(menu.choices) < 5:
!             menu.skin_force_text_view = FALSE
              self.use_text_view = FALSE
              return
          for i in menu.choices:
+             if i.type == 'dir':
+                 folder += 1
+                 # directory with mostly folder:
+                 if folder > 3:
+                     self.use_text_view = FALSE
+                     return
+                     
              if image and i.image != image:
!                 menu.skin_force_text_view = FALSE
                  self.use_text_view = FALSE
                  return
              image = i.image
!         menu.skin_force_text_view = TRUE
!         self.use_text_view = TRUE
  
      
***************
*** 712,717 ****
                                         mode=mode, ellipses=ellipses, 
layer=osd.null_layer)
  
!         self.tmp_objects.text.append((x, y, x+width, y+height2, text, font, height,
!                                             align_h, align_v, mode, ellipses ))
  
          if return_area:
--- 724,729 ----
                                         mode=mode, ellipses=ellipses, 
layer=osd.null_layer)
  
!         self.tmp_objects.text.append((x, y, x+width+font.shadow.x, 
y+height2+font.shadow.y,
!                                       text, font, height, align_h, align_v, mode, 
ellipses ))
  
          if return_area:

Index: info_area.py
===================================================================
RCS file: /cvsroot/freevo/freevo/skins/main1/info_area.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** info_area.py        20 Jun 2003 18:47:37 -0000      1.4
--- info_area.py        29 Jun 2003 20:38:58 -0000      1.5
***************
*** 10,24 ****
  # -----------------------------------------------------------------------
  # $Log$
! # Revision 1.4  2003/06/20 18:47:37  dischi
! # support for info_type to display, not normal item.type
! #
! # Revision 1.3  2003/04/24 19:57:52  dischi
! # comment cleanup for 1.3.2-pre4
! #
! # Revision 1.2  2003/04/20 17:13:55  dischi
! # respect the height
  #
- # Revision 1.1  2003/04/06 21:19:44  dischi
- # Switched to new main1 skin
  #
  # -----------------------------------------------------------------------
--- 10,16 ----
  # -----------------------------------------------------------------------
  # $Log$
! # Revision 1.5  2003/06/29 20:38:58  dischi
! # switch to the new info area
  #
  #
  # -----------------------------------------------------------------------
***************
*** 46,55 ****
  from area import Skin_Area
  from skin_utils import *
  
! import re
  
  TRUE  = 1
  FALSE = 0
  
  class Info_Area(Skin_Area):
      """
--- 38,51 ----
  from area import Skin_Area
  from skin_utils import *
+ import xml_skin
+ import copy
+ from area import Geometry
  
! import traceback
  
  TRUE  = 1
  FALSE = 0
  
+ 
  class Info_Area(Skin_Area):
      """
***************
*** 57,157 ****
      """
  
!     def __init__(self, parent, screen):
          Skin_Area.__init__(self, 'info', screen)
!         self.re_space    = re.compile('^\t *(.*)')
!         self.re_var      = re.compile('@[a-z_]*@')
!         self.re_table    = re.compile('^(.*)\\\\t(.*)')
! 
!         self.last_item   = None
!         self.auto_update = []
!         self.table       = []
  
!     def update_content_needed(self):
          """
          check if the content needs an update
          """
!         return self.auto_update or (self.last_item != self.infoitem)
!         
  
!     def update_content(self):
          """
          update the info area
          """
  
!         content   = self.calc_geometry(self.layout.content, copy_object=TRUE)
!         item      = self.infoitem
  
!         if hasattr(item, 'info_type') and content.types.has_key(item.info_type):
!             val = content.types[item.info_type]
!         elif hasattr(item, 'type') and content.types.has_key(item.type):
!             val = content.types[item.type]
!         else:
!             val = content.types['default']
  
!         table = [ [], [] ]
!         self.auto_update = []
  
!         for line in val.cdata.encode('Latin-1').split('\n'):
!             m = self.re_space.match(line)
!             if m:
!                 line = m.groups(1)[0]
  
!             has_vars       = FALSE 
!             autoupdate     = ''
!             vars_exists    = FALSE
  
-             for m in self.re_var.findall(line):
-                 has_vars = TRUE
-                 if m[1:-1] == 'elapsed':
-                     autoupdate = 'elapsed'
  
!                 a = item.getattr(m[1:-1])
!                 if a:
!                     line = re.sub(m, a, line)
!                     vars_exists = TRUE
!                 else:
!                     line = re.sub(m, '', line)
  
!             if ((not has_vars) or vars_exists) and (line or table[0]):
!                 m = self.re_table.match(line)
!                 if m:
!                     table[0] += [ m.groups(1)[0] ]
!                     table[1] += [ m.groups(2)[1] ]
!                     if autoupdate:
!                         self.auto_update += [ ( autoupdate, len(table[0]) - 1) ]
                  else:
!                     table[0] += [ line ]
!                     table[1] += [ '' ]
  
!         x0 = content.x
  
!         font = content.font
!         y_spacing = font.h * 1.1
              
!         w = 0
!         for i in range(0,len(table[0])):
!             if table[1][i]:
!                 w = max(w, osd.stringsize(table[0][i], font=font.name, 
ptsize=font.size)[0])
!                 if x0 + w > content.x + content.width:
!                     w = content.x + content.width - x0
  
-         y0 = content.y
-         for i in range(0,len(table[0])):
-             if table[0][i] and not table[1][i]:
-                 rec = self.write_text(table[0][i], font, content, x=x0, y=y0,
-                                       width=content.width,
-                                       height=content.height + content.y - y0, 
mode='soft',
-                                       return_area = TRUE)
-                 y0 += rec[3]-rec[1]
-             elif content.height + content.y - y0 > font.h:
-                 if table[0][i]:
-                     self.write_text(table[0][i], font, content, x=x0, y=y0, width=w,
-                                     height=-1, mode='hard')
-                 if table[1][i]:
-                     self.write_text(table[1][i], font, content, 
x=x0+w+content.spacing, y=y0,
-                                     width=content.width - w - content.spacing,
-                                     height=-1, mode='hard')
-                 y0 += y_spacing
  
-         self.last_item = self.infoitem
-         self.table = table
--- 53,375 ----
      """
  
!     def __init__( self, parent, screen ):
          Skin_Area.__init__(self, 'info', screen)
!         self.last_item = None
!         self.content = None
!         self.layout_content = None
!         self.list = None
!         self.updated = 0
!         self.sellist = None
  
!         
!     def update_content_needed( self ):
          """
          check if the content needs an update
          """
!         update = 0
!     
!         if self.layout_content is not self.layout.content:
!             return TRUE
  
!         update += self.set_content()    # set self.content
!         update += self.set_list(update) # set self.list
! 
!         list = self.eval_expressions( self.list )
!         if self.sellist  != list:
!             self.sellist = list
!             update += 1
! 
!         if update:
!             self.updated = 1
!         return update
!     
! 
!     def update_content( self ):
          """
          update the info area
          """
  
!         if not self.updated: # entered a menu for the first time
!             self.set_list(self.set_content())
!             self.sellist = self.eval_expressions( self.list )
  
!         if not self.list: # nothing to draw
!             self.updated = 0
!             return
  
!         # get items to be draw
!         list = self.return_formatedtext( self.sellist )
  
!         for i in list:
!             if i.y + i.height > self.content.height:
!                 break
!             self.write_text( i.text,
!                              i.font, self.content,
!                              ( self.content.x + i.x), ( self.content.y + i.y ),
!                              i.width , i.height,
!                              align_v = i.valign, align_h = i.align,
!                              mode = i.mode )    
!         self.last_item = self.infoitem
  
!         # always set this to 0 because we don't call update_content
!         # when everything changes
!         self.updated = 0
  
  
!     def set_content( self ):
!         """
!         set self.content and self.layout_content if they need to be set (return 1)
!         or does nothing (return 0)
!         """        
!         if self.layout_content is not self.layout.content:
!             types = self.layout.content.types
!             self.content = self.calc_geometry( self.layout.content, copy_object=TRUE 
)
!             # backup types, which have the previously calculated fcontent
!             self.content.types = types 
!             self.layout_content = self.layout.content
!             return 1
!         return 0
  
! 
!     def set_list( self, force = 0 ):
!         """
!         set self.list if need (return 1) or does nothing (return 0)
!         """
!         if force or self.infoitem is not self.last_item or self.infoitem != 
self.last_item:
!             key = 'default'
!             if hasattr( self.infoitem, 'info_type'):
!                 key = self.infoitem.info_type or key
!             
!             elif hasattr( self.infoitem, 'type' ):
!                 key = self.infoitem.type or key
! 
!             try:
!                 val = self.content.types[ key ]
!             except:
!                 val = self.content.types[ 'default' ]
! 
!             if not hasattr( val, 'fcontent' ):
!                 self.list = None
!                 return 1
! 
!             self.list = val.fcontent
!             return 1
!         
!         return 0
! 
! 
! 
!     def get_expression( self, expression ):
!         """
!         create the python expression
!         """        
!         exp = ''                
!         for b in expression.split( ' ' ):
!             if b in ( 'and', 'or', 'not' ):
!                 # valid operator
!                 exp += ' %s' % ( b )
!                 
!             elif b[ :4 ] == 'len(' and b.find( ')' ) > 0 and \
!                      len(b) - b.find(')') < 5:
!                 # lenght of something
!                 exp += ' item.getattr("%s") %s' % ( b[ : ( b.find(')') + 1 ) ],
!                                                     b[ ( b.find(')') + 1 ) : ])
!             else:
!                 # an attribute
!                 exp += ' item.getattr("%s")' % b
!                 
!         return exp.strip()
! 
! 
! 
! 
!     def eval_expressions( self, list, index = [ ] ):
!         """
!         travesse the list evaluating the expressions,
!         return a flat list with valid elements indexes only
!         (false 'if' expressions eliminated). Also, text elements
!         are in the list too in a tuple:
!            ( index, 'text value' )
!         so you can check if it changed just comparing two lists
!         (useful in music player, to update 'elapsed')
!         """        
!         item = self.infoitem
!         ret_list = [ ]
! 
!         if not list:
!             return
!         
!         rg = range( len( list ) )
!         for i in rg:
!             if isinstance( list[ i ], xml_skin.XML_FormatIf ):
!                 if list[ i ].expression_analized == 0:
!                     list[ i ].expression_analized = 1
!                     exp = self.get_expression( list[ i ].expression )
!                     list[ i ].expression = exp
                  else:
!                     exp = list[ i ].expression
  
!                 # Evaluate the expression:
!                 try:
!                     if exp and eval( exp ):
!                         # It's true, we should recurse into children
!                         ret_list += self.eval_expressions( list[ i ].content, index 
+ [ i ] )
!                 except:
!                     print "ERROR: Could not evaluate 'if' condition in info_area"
!                     print "expression was: 'if %s:', Item was: %s" % ( exp, 
item.type )
!                     traceback.print_exc()
!                     
!                 continue
!             
!             elif isinstance( list[ i ], xml_skin.XML_FormatText ):
!                 exp = None
!                 if list[ i ].expression:
!                     if list[ i ].expression_analized == 0:
!                         list[ i ].expression_analized = 1
!                         exp = self.get_expression( list[ i ].expression )
!                         list[ i ].expression = exp
!                     else:
!                         exp = list[ i ].expression
!                     try:
!                         # evaluate the expression:
!                         if exp:
!                             exp = eval( exp )
!                             if exp:
!                                 list[ i ].text = exp
!                     except:
!                         print "ERROR: Parsing XML in info_area:"
!                         print "could not evaluate: '%s'" % ( exp )
!                         traceback.print_exc()
!                 # I add a tuple here to be able to compare lists and know if we need 
to
!                 # update, this is useful in the mp3 player
!                 ret_list += [ index + [ ( i, list[ i ].text ) ] ]
!             else:   
!                 ret_list += [ index + [ i ] ]
  
!         return ret_list
! 
! 
! 
! 
! 
!     def return_formatedtext( self, sel_list ):
!         """
!         receives a list of indexex of elements to be used and
!         returns a array with XML_FormatText ready to print (with its elements
!         x, y, width and height already calculated)
!         """
!         x, y = 0, 0
!         
!         item = self.infoitem
! 
!         list = self.list
!         ret_list = [ ]        
!         last_newline = 0 # index of the last line
!         for i in sel_list:
!             newline = 0
! 
!             # find the element
!             element = self.list
!             for j in range( len( i ) - 1 ):
!                 element = element[ i[ j ] ].content
!             if isinstance( i[ -1 ], tuple ):
!                 element = element[ i[ -1 ][ 0 ] ]
!             else:
!                 element = element[ i[ -1 ] ]
              
!             #
!             # Tag: <goto_pos>
!             #
!             if isinstance( element, xml_skin.XML_FormatGotopos ):
!                 # move to pos
!                 if element.mode == 'absolute':
!                     if element.x != None:
!                         x = element.x
!                     if element.y != None:
!                         y = element.y
!                 else: # relative
!                     if element.x != None:
!                         x += element.x
!                     if element.y != None:
!                         y = y + element.y
! 
!             #
!             # Tag: <newline>
!             # 
!             elif isinstance( element, xml_skin.XML_FormatNewline ):
!                 newline = 1 # newline height will be added later
!                 x = 0
!                 
!             #
!             # Tag: <text>
!             #
!             elif isinstance( element, xml_skin.XML_FormatText ):
!                 element = copy.deepcopy( element )
!                 # text position is the current position:
!                 element.x = x
!                 element.y = y
! 
! 
!                 # Calculate the geometry
!                 r = Geometry( x, y, element.width, element.height)
!                 r = self.get_item_rectangle( r,
!                                              self.content.width - x,
!                                              self.content.height - y )[ 2 ]
!                 size = osd.drawstringframed( element.text, 0, 0,
!                                              r.width-element.font.shadow.x, r.height,
!                                              None, None,
!                                              element.font.name, element.font.size,
!                                              element.align, element.valign,
!                                              element.mode, layer=osd.null_layer )[ 1 
]
!                 m_width  = size[ 2 ] - size[ 0 ]
!                 m_height = size[ 3 ] - size[ 1 ]
! 
!                 if isinstance( element.width, int ):
!                     if element.width <= 0:
!                         element.width = min( m_width, r.width )
!                 else:
!                     element.width = min( m_width, r.width )
! 
!                 if isinstance( element.height, int ) or element.height == 
'line_height':
!                     if element.height <= 0 or element.height == 'line_height':
!                         element.height = osd.stringsize( element.text,
!                                                          element.font.name,
!                                                          element.font.size)[ 1 ]
!                 else:
!                     element.height = min( m_height, r.height )
! 
! 
!                 x += element.width
! 
!                 ret_list += [ element ]
! 
! 
!             # We should shrink the width and go next line (overflow)
!             if x > self.content.width:
!                 x = 0
!                 newline = 1
!                 element.width = self.content.width - element.x
! 
!             # Need to recalculate line height?
!             if newline and ret_list:
!                 newline_height = 0
!                 # find the tallest string
!                 new_last_newline = len( ret_list )
!                 last_line = ret_list[ last_newline : new_last_newline ]
!                 for j in last_line:
!                     font = j.font
!                     if j.text and j.height > newline_height:
!                         newline_height = j.height
!                 y = y + newline_height
!                 last_newline = new_last_newline
!                 # update the height of the elements in this line,
!                 # so vertical alignment will be respected
!                 for j in last_line:
!                     j.height = newline_height
!                 
! 
!         return ret_list
! 
! 
  
  

Index: listing_area.py
===================================================================
RCS file: /cvsroot/freevo/freevo/skins/main1/listing_area.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** listing_area.py     24 May 2003 04:29:54 -0000      1.5
--- listing_area.py     29 Jun 2003 20:38:58 -0000      1.6
***************
*** 10,13 ****
--- 10,16 ----
  # -----------------------------------------------------------------------
  # $Log$
+ # Revision 1.6  2003/06/29 20:38:58  dischi
+ # switch to the new info area
+ #
  # Revision 1.5  2003/05/24 04:29:54  gsbarbieri
  # Now we have support to use "type images" in front of items in text listing.
***************
*** 81,85 ****
              return self.last_get_items_geometry[1]
  
!         if self.last_get_items_geometry[0] == ( menu, settings, display_style ):
              return self.last_get_items_geometry[1]
          
--- 84,89 ----
              return self.last_get_items_geometry[1]
  
!         if self.last_get_items_geometry[0] == ( menu, settings, display_style ) and \
!                hasattr(menu, 'skin_force_text_view'):
              return self.last_get_items_geometry[1]
          

Index: skin_main1.py
===================================================================
RCS file: /cvsroot/freevo/freevo/skins/main1/skin_main1.py,v
retrieving revision 1.100
retrieving revision 1.101
diff -C2 -d -r1.100 -r1.101
*** skin_main1.py       24 Jun 2003 21:37:06 -0000      1.100
--- skin_main1.py       29 Jun 2003 20:38:58 -0000      1.101
***************
*** 10,13 ****
--- 10,16 ----
  # -----------------------------------------------------------------------
  # $Log$
+ # Revision 1.101  2003/06/29 20:38:58  dischi
+ # switch to the new info area
+ #
  # Revision 1.100  2003/06/24 21:37:06  outlyer
  # Allow skins screenshots for SkinSelector to be jpeg. The PNG files bloat the
***************
*** 343,347 ****
              if  menu.force_skin_layout != -1:
                  return menu.force_skin_layout
!             elif menu.choices:
                  different = 0
                  last = menu.choices[ 0 ].image
--- 346,353 ----
              if  menu.force_skin_layout != -1:
                  return menu.force_skin_layout
! 
! 
!             # XXX don't change the global display_style
!             elif 0 and menu.choices:
                  different = 0
                  last = menu.choices[ 0 ].image

Index: xml_skin.py
===================================================================
RCS file: /cvsroot/freevo/freevo/skins/main1/xml_skin.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** xml_skin.py 24 May 2003 04:29:54 -0000      1.6
--- xml_skin.py 29 Jun 2003 20:38:58 -0000      1.7
***************
*** 10,26 ****
  # -----------------------------------------------------------------------
  # $Log$
! # Revision 1.6  2003/05/24 04:29:54  gsbarbieri
! # Now we have support to use "type images" in front of items in text listing.
! # I.E.: you can have a playlist icon in front of playlists, a folder icon in
! # front of folders, and goes...
! #
! # Revision 1.5  2003/05/04 16:45:10  dischi
! # added font scale
! #
! # Revision 1.4  2003/04/24 19:57:54  dischi
! # comment cleanup for 1.3.2-pre4
  #
- # Revision 1.3  2003/04/06 21:19:44  dischi
- # Switched to new main1 skin
  #
  # -----------------------------------------------------------------------
--- 10,16 ----
  # -----------------------------------------------------------------------
  # $Log$
! # Revision 1.7  2003/06/29 20:38:58  dischi
! # switch to the new info area
  #
  #
  # -----------------------------------------------------------------------
***************
*** 488,492 ****
--- 478,497 ----
                              self.types[type].rectangle = XML_rectangle()
                              self.types[type].rectangle.parse(rnode, scale, 
current_dir)
+                         elif rnode.name in ( u'if', u'text', u'newline', u'goto_pos' 
):
+                             if not hasattr( self.types[ type ], 'fcontent' ):
+                                 self.types[ type ].fcontent = [ ]
+                             child = None
+                             if rnode.name == u'if':
+                                 child = XML_FormatIf()
+                             elif rnode.name == u'text':
+                                 child = XML_FormatText()
+                             elif rnode.name == u'newline':
+                                 child = XML_FormatNewline()
+                             elif rnode.name == u'goto_pos':
+                                 child = XML_FormatGotopos()
  
+                             self.types[ type ].fcontent += [ child ]
+                             self.types[ type ].fcontent[ -1 ].parse( rnode, scale, 
current_dir )
+                             
          if not self.types.has_key('default'):
              self.types['default'] = XML_data(('font',))
***************
*** 516,520 ****
--- 521,627 ----
              if self.types[type].rectangle:
                  self.types[type].rectangle.prepare(color)
+ 
+             if hasattr( self.types[type], 'fcontent' ):
+                 for i in self.types[type].fcontent:
+                     i.prepare( font, color )
+ 
+ 
+ 
+ # ======================================================================
+ # Formating
+ class XML_FormatText(XML_data):
+     def __init__( self ):
+         XML_data.__init__( self, ( 'align', 'valign', 'font', 'width', 'height' ) )
+         self.mode = 'hard'
+         self.text = ''
+         self.expression = None
+         self.expression_analized = 0
+         self.x = 0
+         self.y = 0
          
+     def __str__( self ):
+         str = "XML_FormatText( Text: '%s', Expression: '%s', Expression Analized: 
%s, Mode: %s, Font: %s, Width: %s, Height: %s, x: %s, y: %s ) " % ( self.text, 
self.expression, self.expression_analized, self.mode, self.font, self.width, 
self.height, self.x, self.y )
+         return str
+ 
+     def parse( self, node, scale, c_dir = '' ):
+         XML_data.parse( self, node, scale, c_dir )
+         self.text = node.textof()
+         self.mode = attr_str( node, 'mode', self.mode )
+         if self.mode != 'hard' and self.mode != 'soft':
+             self.mode = 'hard'
+         self.expression = attr_str( node, 'expression', self.expression )
+         if self.expression: self.expression = self.expression.strip()
+ 
+     def prepare(self, font, color):
+         if self.font:
+             try:
+                 self.font = font[self.font]
+             except:
+                 print 'can\'t find font %s' % self.font
+                 print font
+                 self.font = font['default']
+         else:
+             self.font = font['default']
+ 
+     
+ 
+         
+ class XML_FormatGotopos(XML_data):
+     def __init__( self ):
+         XML_data.__init__( self, ( 'x', 'y' ) )
+         self.mode = 'relative'
+         self.x = None
+         self.y = None
+         
+     def parse( self, node, scale, c_dir = '' ):
+         XML_data.parse( self, node, scale, c_dir )
+         self.mode = attr_str( node, 'mode', self.mode )
+         if self.mode != 'relative' and self.mode != 'absolute':
+             self.mode = 'relative'
+         
+     def prepare(self, font, color):
+         pass
+     
+ class XML_FormatNewline:
+     def __init__( self ):
+         pass
+ 
+     def parse( self, node, scale, c_dir = '' ):
+         pass
+ 
+     def prepare(self, font, color):
+         pass
+ 
+ 
+ class XML_FormatIf:
+     def __init__( self ):
+         self.expression = ''
+         self.content = [ ]
+         self.expression_analized = 0
+         
+     def parse( self, node, scale, c_dir = '' ):
+         self.expression = attr_str( node, 'expression', self.expression )
+         for subnode in node.children:
+             if subnode.name == u'if':
+                 child = XML_FormatIf()
+             elif subnode.name == u'text':
+                 child = XML_FormatText()
+             elif subnode.name == u'newline':
+                 child = XML_FormatNewline()
+             elif subnode.name == u'goto_pos':
+                 child = XML_FormatGotopos()
+             
+             child.parse( subnode, scale, c_dir )
+             self.content += [ child ]
+ 
+     def prepare(self, font, color):
+         for i in self.content:
+             i.prepare( font, color )
+ 
+                               
+ 
+ 
+ 
+ 
  # ======================================================================
  




-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to