Author: duncan
Date: Fri Jun 8 16:57:04 2007
New Revision: 9671
Modified:
branches/rel-1/freevo/share/skins/main/basic.fxd
branches/rel-1/freevo/share/skins/main/bluestar.fxd
branches/rel-1/freevo/share/skins/main/blurr.fxd
branches/rel-1/freevo/share/skins/main/crystal.fxd
branches/rel-1/freevo/share/skins/main/dark.fxd
branches/rel-1/freevo/share/skins/main/info.fxd
branches/rel-1/freevo/share/skins/main/mediaportal.fxd
branches/rel-1/freevo/share/skins/main/noia.fxd
branches/rel-1/freevo/share/skins/main/rain.fxd
branches/rel-1/freevo/src/gui/Window.py
branches/rel-1/freevo/src/skin.py
branches/rel-1/freevo/src/skins/main/area.py
branches/rel-1/freevo/src/skins/main/listing_area.py
branches/rel-1/freevo/src/skins/main/tvlisting_area.py
branches/rel-1/freevo/src/skins/main/xml_skin.py
Log:
[ 1733061 ] Improved int attribute handling in xml skins
Large patch from Adam Charrett applied
Modified: branches/rel-1/freevo/share/skins/main/basic.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/basic.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/basic.fxd Fri Jun 8 16:57:04 2007
@@ -90,7 +90,7 @@
<view layout="view" x="580" y="110" width="200" height="300"/>
<!-- 4. listing area: the list of all items -->
- <listing layout="listing" x="50" y="110" width="510" height="470">
+ <listing layout="listing" x="50" y="110" width="510" height="470 -
(buttonbar * (buttonbar_height + 10))">
<image x="10" y="110" width="32" height="32" label="uparrow"
filename="up.png"/>
<image x="10" y="max-32" width="32" height="32"
label="downarrow"
@@ -111,7 +111,7 @@
<!-- default description: make listing area smaller, show info area -->
<menuset label="default description" inherits="normal text style">
<listing height="370"/>
- <info visible="yes" layout="info" x="10" y="490" height="100"
width="780"/>
+ <info visible="yes" layout="info" x="10" y="490 - (buttonbar *
(buttonbar_height + 10))" height="100" width="780"/>
</menuset>
<!-- default description no image: mix between the two above -->
@@ -472,12 +472,12 @@
<image width="16" height="16" label="leftarrow"
filename="left.png"/>
<image width="16" height="16" label="rightarrow"
filename="right.png"/>
</listing>
- <info layout="tv info" x="10" y="400" width="780" height="190"/>
+ <info layout="tv info" x="10" y="400" width="780" height="190 -
buttonbar_height"/>
</menuset>
<menuset label="tv submenu" inherits="default description no image">
<screen layout="screen" visible="yes"/>
- <listing x="10" y="390" height="200">
+ <listing x="10" y="390" height="200 - buttonbar_height">
<image x="750" y="390" label="uparrow"/>
<image x="750" label="downarrow"/>
</listing>
@@ -816,7 +816,20 @@
width="780" height="80"/>
<info layout="info" x="10" y="110" width="780" height="480"/>
</headlines>
-
+ <!--
+ *******************************************************
+ ** Button Bar TVGuide Info
+ ******************************************************* -->
+
+ <tvguideinfo>
+ <screen layout="screen" x="0" y="0" width="800" height="600"/>
+ <title layout="tvguideinfo title" x="10" y="70" width="780"
height="80"/>
+ <info layout="info" x="10" y="130" width="780" height="460"/>
+ </tvguideinfo>
+
+ <layout label="tvguideinfo title">
+ <content x="0" y="0" type="menu" font="title area" align="left"
valign="center"/>
+ </layout>
</skin>
</freevo>
<!-- Keep this comment at the end of the file
Modified: branches/rel-1/freevo/share/skins/main/bluestar.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/bluestar.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/bluestar.fxd Fri Jun 8 16:57:04 2007
@@ -140,13 +140,13 @@
<!-- default description: make listing area smaller, show info area -->
<menuset label="default description">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750" height="120 - buttonbar_height" />
</menuset>
<!-- default description no image: mix between the two above -->
<menuset label="default description no image">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750" height="120 - buttonbar_height" />
</menuset>
<!-- special settings for audio. The default style is an image based style
-->
@@ -184,13 +184,13 @@
<menuset label="video details" inherits="normal text style">
<subtitle layout="subtitle" x="10" y="100" width="780" height="60"/>
- <listing layout="video list" x="500" y="450" width="290" height="140">
+ <listing layout="video list" x="500" y="450" width="290" height="140-
buttonbar_height">
<image label="uparrow" filename=""/>
<image label="downarrow" filename=""/>
</listing>
<view x="545" y="150"/>
- <info layout="video info" x="10" y="160" width="480" height="430"/>
+ <info layout="video info" x="10" y="160" width="480" height="430-
buttonbar_height"/>
</menuset>
@@ -265,7 +265,7 @@
<listing y="140">
<image y="140" label="uparrow"/>
</listing>
- <info layout="tv info" y="440" height="150"/>
+ <info layout="tv info" y="440" height="150 - buttonbar_height"/>
</menuset>
<layout label="tv screen">
@@ -281,7 +281,7 @@
<listing y="140">
<image y="140" label="uparrow"/>
</listing>
- <info layout="tv info" y="290" height="290"/>
+ <info layout="tv info" y="290" height="290 - buttonbar_height"/>
</menuset>
<!-- tv info area -->
Modified: branches/rel-1/freevo/share/skins/main/blurr.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/blurr.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/blurr.fxd Fri Jun 8 16:57:04 2007
@@ -30,7 +30,7 @@
<!-- default with description and image -->
<menuset label="default description" inherits="normal text style">
<listing height="350"/>
- <info layout="description" visible="yes" x="20" y="460"
width="760" height="130"/>
+ <info layout="description" visible="yes" x="20" y="460"
width="760" height="130 - buttonbar_height"/>
</menuset>
<!-- default with description without an image -->
@@ -99,7 +99,7 @@
<!-- 4. listing area: the list of all items -->
<screen layout="video screen" visible="yes"/>
<view layout="view" x="10" y="90" width="280" height="250"
align="left"/>
- <listing x="30" y="350" width="710" height="230">
+ <listing x="30" y="350" width="710" height="230 -
buttonbar_height">
<image filename="up.png" label="uparrow" x="750" y="350"/>
<image filename="down.png" label="downarrow" x="750"
y="max-32"/>
</listing>
@@ -241,7 +241,7 @@
<menuset label="audio" inherits="normal text style">
<screen layout="audio screen"/>
<view layout="view" x="15" y="90" width="280" height="270"/>
- <info layout="audio info" x="28" y="370" width="273" height="190"/>
+ <info layout="audio info" x="28" y="370" width="273" height="190 -
buttonbar_height"/>
</menuset>
<layout label="audio screen">
@@ -250,7 +250,7 @@
<image filename="gant/music.png" x="435" y="230" width="370"
height="380"/>
<rectangle size="0" bgcolor="0x80000000" radius="10" x="12"
y="87"
- width="290" height="475"/>
+ width="290" height="475 - (buttonbar_height/2)"/>
</background>
</layout>
@@ -357,8 +357,8 @@
<menuset label="image" inherits="normal text style">
<screen layout="image screen"/>
- <listing y="80" x="60" height="430" width="700" layout="image
list"/>
- <info layout="image info" x="10" y="510" width="780" height="80"/>
+ <listing y="80" x="60"
height="430-(buttonbar*(buttonbar_height+10))" width="700" layout="image list"/>
+ <info layout="image info" x="10"
y="510-(buttonbar*(buttonbar_height-10))" width="780" height="80"/>
<view visible="no"/>
</menuset>
@@ -525,7 +525,7 @@
<screen layout="screen" x="0" y="0" width="800" height="600"/>
<title visible="no"/>
<info layout="tv info" x="10" y="80" width="760" height="115"/>
- <listing layout="tv listing" x="10" y="220" width="750"
height="350">
+ <listing layout="tv listing" x="10" y="220" width="750"
height="350-(buttonbar*(buttonbar_height-30))">
<image x="765" y="220" width="32" height="32" label="uparrow"
filename="up.png"/>
<image x="765" y="max-32" width="32" height="32"
label="downarrow"
Modified: branches/rel-1/freevo/share/skins/main/crystal.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/crystal.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/crystal.fxd Fri Jun 8 16:57:04 2007
@@ -120,13 +120,13 @@
<!-- default description: make listing area smaller, show info area -->
<menuset label="default description">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750" height="120-buttonbar_height" />
</menuset>
<!-- default description no image: mix between the two above -->
<menuset label="default description no image">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750" height="120-buttonbar_height" />
</menuset>
<!-- special settings for audio. The default style is an image based style
-->
@@ -164,13 +164,13 @@
<menuset label="video details" inherits="normal text style">
<subtitle layout="subtitle" x="10" y="100" width="780" height="60"/>
- <listing layout="video list" x="500" y="450" width="290" height="140">
+ <listing layout="video list" x="500" y="450" width="290"
height="140-buttonbar_height">
<image label="uparrow" filename=""/>
<image label="downarrow" filename=""/>
</listing>
<view x="545" y="150"/>
- <info layout="video info" x="10" y="160" width="480" height="430"/>
+ <info layout="video info" x="10" y="160" width="480"
height="430-buttonbar_height"/>
</menuset>
@@ -245,7 +245,7 @@
<listing y="140">
<image y="140" label="uparrow"/>
</listing>
- <info layout="tv info" y="440" height="150"/>
+ <info layout="tv info" y="440" height="150-buttonbar_height"/>
</menuset>
<layout label="tv screen">
@@ -261,7 +261,7 @@
<listing y="140">
<image y="140" label="uparrow"/>
</listing>
- <info layout="tv info" y="290" height="290"/>
+ <info layout="tv info" y="290" height="290-buttonbar_height"/>
</menuset>
<!-- tv info area -->
Modified: branches/rel-1/freevo/share/skins/main/dark.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/dark.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/dark.fxd Fri Jun 8 16:57:04 2007
@@ -209,7 +209,7 @@
<!-- video ************************** -->
<menuset label="video default" inherits="default textual">
- <info visible="yes" layout="video info" x="30" y="470" width="780"
height="150"/>
+ <info visible="yes" layout="video info" x="30" y="470" width="780"
height="150-"/>
</menuset>
<!-- MODE 0 -->
@@ -230,7 +230,7 @@
<!-- audio **************************** -->
<menuset label="audio default" inherits="default textual">
- <info visible="yes" layout="audio info" x="30" y="470" width="780"
height="150"/>
+ <info visible="yes" layout="audio info" x="30" y="470" width="780"
height="130-buttonbar_height"/>
</menuset>
<!-- MODE 0 -->
@@ -251,7 +251,7 @@
<!-- image **************************** -->
<menuset label="image default" inherits="default textual">
- <info visible="yes" layout="image info" x="30" y="470" width="780"
height="150"/>
+ <info visible="yes" layout="image info" x="30" y="470" width="780"
height="130-buttonbar_height"/>
</menuset>
<!-- MODE 0 -->
@@ -272,7 +272,7 @@
<!-- mail ***************************** -->
<menuset label="mail default" inherits="default textual">
- <info visible="yes" layout="mail info" x="30" y="470" width="780"
height="150"/>
+ <info visible="yes" layout="mail info" x="30" y="470" width="780"
height="130-buttonbar_height"/>
</menuset>
<menuset label="mail textual" inherits="mail default">
Modified: branches/rel-1/freevo/share/skins/main/info.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/info.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/info.fxd Fri Jun 8 16:57:04 2007
@@ -60,13 +60,13 @@
<!-- default description: make listing area smaller, show info area -->
<menuset label="default description">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750" height="120-buttonbar_height" />
</menuset>
<!-- default description no image: mix between the two above -->
<menuset label="default description no image">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750" height="120-buttonbar_height" />
</menuset>
<!-- special settings for audio. The default style is an image based style
-->
@@ -103,13 +103,13 @@
<menuset label="video details" inherits="normal text style">
<subtitle layout="subtitle" x="10" y="100" width="780" height="60"/>
- <listing layout="video list" x="500" y="450" width="290" height="140">
+ <listing layout="video list" x="500" y="450" width="290"
height="140-buttonbar_height">
<image label="uparrow" filename=""/>
<image label="downarrow" filename=""/>
</listing>
<view x="545" y="150"/>
- <info layout="video info" x="10" y="160" width="480" height="430"/>
+ <info layout="video info" x="10" y="160" width="480"
height="430-buttonbar_height"/>
</menuset>
Modified: branches/rel-1/freevo/share/skins/main/mediaportal.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/mediaportal.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/mediaportal.fxd Fri Jun 8
16:57:04 2007
@@ -101,7 +101,7 @@
<!-- 4. listing area: the list of all items -->
<screen layout="video screen" visible="yes"/>
<view layout="view" x="10" y="90" width="280" height="250"
align="left"/>
- <listing x="30" y="350" width="710" height="230">
+ <listing x="30" y="350" width="710"
height="230-(buttonbar*(buttonbar_height-10))">
<image filename="up.png" label="uparrow" x="750" y="350"/>
<image filename="down.png" label="downarrow" x="750"
y="max-32"/>
</listing>
@@ -243,7 +243,7 @@
<menuset label="audio" inherits="normal text style">
<screen layout="audio screen"/>
<view layout="view" x="15" y="90" width="280" height="300"/>
- <info layout="audio info" x="28" y="370" width="273" height="190"/>
+ <info layout="audio info" x="28" y="370" width="273"
height="190-(buttonbar*(buttonbar_height-30))"/>
</menuset>
<layout label="audio screen">
@@ -350,7 +350,7 @@
<menuset label="image" inherits="normal text style">
<screen layout="image screen"/>
<listing y="80" x="60" height="430" width="700" layout="image
list"/>
- <info layout="image info" x="10" y="510" width="780" height="80"/>
+ <info layout="image info" x="10" y="510" width="780"
height="80-buttonbar_height"/>
<view visible="no"/>
</menuset>
@@ -519,7 +519,7 @@
<screen layout="screen" x="0" y="0" width="800" height="600"/>
<title visible="no"/>
<info layout="tv info" x="10" y="80" width="760" height="115"/>
- <listing layout="tv listing" x="10" y="220" width="750"
height="350">
+ <listing layout="tv listing" x="10" y="220" width="750"
height="350-(buttonbar*(buttonbar_height-20))">
<image x="765" y="220" width="33" height="17" label="uparrow"
filename="tv_up.png"/>
<image x="765" y="max-32" width="33" height="17"
label="downarrow"
Modified: branches/rel-1/freevo/share/skins/main/noia.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/noia.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/noia.fxd Fri Jun 8 16:57:04 2007
@@ -76,7 +76,7 @@
<listing y="140">
<image y="140" label="uparrow"/>
</listing>
- <info layout="tv info" y="440" height="150"/>
+ <info layout="tv info" y="440" height="150-buttonbar_height"/>
</menuset>
<menuset label="tv menu more info">
@@ -84,7 +84,7 @@
<listing y="140">
<image y="140" label="uparrow"/>
</listing>
- <info layout="tv info" y="290" height="290"/>
+ <info layout="tv info" y="290"
height="290-(buttonbar*(buttonbar_height-10))"/>
</menuset>
<!-- tv info area -->
Modified: branches/rel-1/freevo/share/skins/main/rain.fxd
==============================================================================
--- branches/rel-1/freevo/share/skins/main/rain.fxd (original)
+++ branches/rel-1/freevo/share/skins/main/rain.fxd Fri Jun 8 16:57:04 2007
@@ -128,13 +128,13 @@
<!-- default description: make listing area smaller, show info area -->
<menuset label="default description">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750"
height="120-(buttonbar*(buttonbar_height-10))" />
</menuset>
<!-- default description no image: mix between the two above -->
<menuset label="default description no image">
<listing height="340"/>
- <info x="40" y="460" width="750" height="120" />
+ <info x="40" y="460" width="750"
height="120-(buttonbar*(buttonbar_height-10))" />
</menuset>
<!-- special settings for audio. The default style is an image based style
-->
@@ -178,7 +178,7 @@
</listing>
<view x="545" y="150"/>
- <info layout="video info" x="10" y="160" width="480" height="430"/>
+ <info layout="video info" x="10" y="160" width="480"
height="430-buttonbar_height"/>
</menuset>
@@ -266,7 +266,7 @@
<listing y="140">
<image y="140" label="uparrow"/>
</listing>
- <info layout="tv info" y="290" height="290"/>
+ <info layout="tv info" y="290"
height="290-(buttonbar*(buttonbar_height-10))"/>
</menuset>
<!-- tv info area -->
Modified: branches/rel-1/freevo/src/gui/Window.py
==============================================================================
--- branches/rel-1/freevo/src/gui/Window.py (original)
+++ branches/rel-1/freevo/src/gui/Window.py Fri Jun 8 16:57:04 2007
@@ -34,7 +34,7 @@
from GUIObject import GUIObject, Align
from Container import Container
-
+from skin import eval_attr
class Window(GUIObject):
"""
@@ -81,8 +81,8 @@
def __init__content__(self):
x, y, width, height = self.content_layout.x, self.content_layout.y, \
self.content_layout.width,
self.content_layout.height
- width = eval(str(width), { 'MAX': self.width }) or self.width
- height = eval(str(height), { 'MAX': self.height }) or self.height
+ width = eval_attr(str(width), self.width) or self.width
+ height = eval_attr(str(height), self.height) or self.height
self.content = Container('frame', x, y, width, height,
vertical_expansion=1)
GUIObject.add_child(self, self.content)
@@ -102,8 +102,8 @@
self.height += height
width, height = self.content_layout.width, self.content_layout.height
- self.content.width = eval(str(width), { 'MAX': self.width }) or
self.width
- self.content.height = eval(str(height), { 'MAX': self.height }) or
self.height
+ self.content.width = eval_attr(str(width), self.width ) or self.width
+ self.content.height = eval_attr(str(height), self.height) or
self.height
self.left = self.osd.width/2 - self.width/2
self.top = self.osd.height/2 - self.height/2
@@ -136,8 +136,8 @@
for o in self.background_layout:
if o[0] == 'rectangle':
r = copy.deepcopy(o[1])
- r.width = eval(str(r.width), { 'MAX' : self.get_size()[0] })
- r.height = eval(str(r.height), { 'MAX' : self.get_size()[1] })
+ r.width = eval_attr(str(r.width), self.get_size()[0])
+ r.height = eval_attr(str(r.height), self.get_size()[1])
if not r.width:
r.width = self.get_size()[0]
if not r.height:
Modified: branches/rel-1/freevo/src/skin.py
==============================================================================
--- branches/rel-1/freevo/src/skin.py (original)
+++ branches/rel-1/freevo/src/skin.py Fri Jun 8 16:57:04 2007
@@ -42,6 +42,7 @@
# -----------------------------------------------------------------------
+import plugin
import config
import sys
import os.path
@@ -84,6 +85,43 @@
"""
return not _singleton.force_redraw
+def eval_attr(attr_value, max):
+ """
+ Returns attr_value if it is not a string or evaluates it substituting max
+ for 'MAX' or 'max' in the attr_value string.
+ """
+ if isinstance(attr_value,str):
+ global attr_global_dict
+ if attr_global_dict is None:
+ attr_global_dict = {}
+
+ # Setup idlebar related values
+ p = plugin.getbyname('idlebar')
+ if p:
+ attr_global_dict['idlebar'] = 1
+ attr_global_dict['idlebar_height'] = 60
+ else:
+ attr_global_dict['idlebar'] = 0
+ attr_global_dict['idlebar_height'] = 0
+
+ # Setup buttonbar related values
+ p = plugin.getbyname('buttonbar')
+ if p:
+ attr_global_dict['buttonbar'] = 1
+ attr_global_dict['buttonbar_height'] = 60
+ else:
+ attr_global_dict['buttonbar'] = 0
+ attr_global_dict['buttonbar_height'] = 0
+ # Set max values
+ if max is not None:
+ attr_global_dict['MAX'] = max
+ attr_global_dict['max'] = max
+
+ return eval(attr_value, attr_global_dict)
+
+ return attr_value
+
+attr_global_dict = None
if __freevo_app__ == 'main':
# init the skin
Modified: branches/rel-1/freevo/src/skins/main/area.py
==============================================================================
--- branches/rel-1/freevo/src/skins/main/area.py (original)
+++ branches/rel-1/freevo/src/skins/main/area.py Fri Jun 8 16:57:04 2007
@@ -57,6 +57,7 @@
import util
from skin_utils import *
+from skin import eval_attr
import xml_skin
import screen
@@ -366,10 +367,10 @@
font_h=0
if isinstance(object.width, str):
- object.width = int(eval(object.width, {'MAX':self.area_val.width}))
+ object.width = int(eval_attr(object.width, self.area_val.width))
if isinstance(object.height, str):
- object.height = int(eval(object.height,
{'MAX':self.area_val.height}))
+ object.height = int(eval_attr(object.height, self.area_val.height))
object.x += self.area_val.x
object.y += self.area_val.y
@@ -398,9 +399,9 @@
# get the x and y value, based on MAX
if isinstance(r.x, str):
- r.x = int(eval(r.x, {'MAX':item_w}))
+ r.x = int(eval_attr(r.x, item_w))
if isinstance(r.y, str):
- r.y = int(eval(r.y, {'MAX':item_h}))
+ r.y = int(eval_attr(r.y, item_h))
# set rect width and height to something
if not r.width:
@@ -411,10 +412,10 @@
# calc width and height based on MAX settings
if isinstance(r.width, str):
- r.width = int(eval(r.width, {'MAX':item_w}))
+ r.width = int(eval_attr(r.width, item_w))
if isinstance(r.height, str):
- r.height = int(eval(r.height, {'MAX':item_h}))
+ r.height = int(eval_attr(r.height, item_h))
# correct item_w and item_h to fit the rect
item_w = max(item_w, r.width)
Modified: branches/rel-1/freevo/src/skins/main/listing_area.py
==============================================================================
--- branches/rel-1/freevo/src/skins/main/listing_area.py (original)
+++ branches/rel-1/freevo/src/skins/main/listing_area.py Fri Jun 8
16:57:04 2007
@@ -33,6 +33,7 @@
from area import Skin_Area
from skin_utils import *
+from skin import eval_attr
import config
class Listing_Area(Skin_Area):
@@ -468,7 +469,7 @@
if menuw.menu_items[-1] != menu.choices[-1] and
area.images['downarrow']:
if isinstance(area.images['downarrow'].y, str):
v = copy.copy(area.images['downarrow'])
- v.y = eval(v.y, {'MAX':(item_y0-vskip)})
+ v.y = eval_attr(v.y, (item_y0-vskip))
else:
v = area.images['downarrow']
self.drawimage(area.images['downarrow'].filename, v)
Modified: branches/rel-1/freevo/src/skins/main/tvlisting_area.py
==============================================================================
--- branches/rel-1/freevo/src/skins/main/tvlisting_area.py (original)
+++ branches/rel-1/freevo/src/skins/main/tvlisting_area.py Fri Jun 8
16:57:04 2007
@@ -36,7 +36,7 @@
import math
from area import Skin_Area, Geometry
from skin_utils import *
-
+from skin import eval_attr
class TVListing_Area(Skin_Area):
"""
@@ -389,7 +389,7 @@
if menuw.display_down_arrow and area.images['downarrow']:
if isinstance(area.images['downarrow'].y, str):
v = copy.copy(area.images['downarrow'])
- v.y = eval(v.y, {'MAX' : y0})
+ v.y = eval_attr(v.y, y0)
else:
v = area.images['downarrow']
self.drawimage(area.images['downarrow'].filename, v)
Modified: branches/rel-1/freevo/src/skins/main/xml_skin.py
==============================================================================
--- branches/rel-1/freevo/src/skins/main/xml_skin.py (original)
+++ branches/rel-1/freevo/src/skins/main/xml_skin.py Fri Jun 8 16:57:04 2007
@@ -53,6 +53,36 @@
#
# Help functions
#
+attr_global_dict = None
+
+def eval_attr(attr_value):
+ """
+ Returns attr_value if it is not a string or evaluates it substituting max
+ for 'MAX' or 'max' in the attr_value string.
+ """
+ global attr_global_dict
+
+ if attr_global_dict is None:
+ attr_global_dict = {}
+
+ # Setup idlebar related values
+ p = plugin.getbyname('idlebar')
+ if p:
+ attr_global_dict['idlebar'] = 1
+ attr_global_dict['idlebar_height'] = 60
+ else:
+ attr_global_dict['idlebar'] = 0
+ attr_global_dict['idlebar_height'] = 0
+
+ # Setup buttonbar related values
+ p = plugin.getbyname('buttonbar')
+ if p:
+ attr_global_dict['buttonbar'] = 1
+ attr_global_dict['buttonbar_height'] = 60
+ else:
+ attr_global_dict['buttonbar'] = 0
+ attr_global_dict['buttonbar_height'] = 0
+ return eval(attr_value, attr_global_dict)
def attr_int(node, attr, default, scale=0.0):
@@ -64,37 +94,12 @@
val = node.attrs[('', attr)]
if val == 'line_height':
return -1
- new_val = ''
-
- while val:
- ppos = val[1:].find('+') + 1
- mpos = val[1:].find('-') + 1
- if ppos and mpos:
- pos = min(ppos, mpos)
- elif ppos or mpos:
- pos = max(ppos, mpos)
- else:
- pos = len(val)
-
- try:
- i = int(round(scale*int(val[:pos])))
- if i < 0:
- new_val += str(i)
- else:
- new_val += '+' + str(i)
- except ValueError:
- if val[:pos].upper() in ( '+MAX', 'MAX', '-MAX' ):
- new_val += val[:pos].upper()
- elif val[:pos].lower() in ( '+font_h', 'font_h', '-font_h'
):
- new_val += val[:pos].lower()
- else:
- print 'WARNING: unsupported value %s' % val[:pos]
- val = val[pos:]
-
+
try:
- return int(new_val)
- except ValueError:
- return str(new_val)
+ value = eval(val)
+ return int(round(scale * value))
+ except:
+ return 'int(round(((%s) * %f)))' % (str(val), scale)
except ValueError:
pass
@@ -326,6 +331,14 @@
basic prepare function
"""
try:
+ for c in self.content:
+ if XML_types[c][0] == 'int' and isinstance(getattr(self,c),
str):
+ try:
+ result = eval_attr(getattr(self, c))
+ setattr(self, c, result)
+ except:
+ pass
+
if self.visible not in ('', 'yes'):
if len(self.visible) > 4 and self.visible[:4] == 'not ':
p = plugin.getbyname(self.visible[4:])
@@ -938,6 +951,8 @@
def prepare(self):
+ global attr_global_dict
+ attr_global_dict = None
self.prepared = True
self.sets = copy.deepcopy(self._sets)
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog