diff --git a/GlossMgr.py b/GlossMgr.py index 00ac534..f00a1ef 100644 --- a/GlossMgr.py +++ b/GlossMgr.py @@ -15,7 +15,7 @@ class GlossMgr: self.uiMsg = message(stage) self.themeMgr = ThemeMgr(self.stage) - background = self.themeMgr.get_texture("background", None) + background = self.themeMgr.get_texture("background", None, None) background.show() self.stage.add(background) diff --git a/Menu.py b/Menu.py index 6039128..16f35a3 100644 --- a/Menu.py +++ b/Menu.py @@ -7,14 +7,18 @@ from ReflectionTexture import Texture_Reflection class Menu: item_gap = 10 #Distance between items + font = "" + zoomLevel = 0.5 + opacityStep = 120 def __init__ (self, glossMgr): self.glossMgr = glossMgr self.stage = self.glossMgr.get_stage() + self.glossMgr.themeMgr.setup_menu("main", self) + self.menuItems = [] self.selected = 0 self.displayMin = 0 #The number of menu items that will be shown at a time - self.displayMax = 6 self.moveQueue = 0 self.displaySize = self.displayMax - self.displayMin self.displayPosition = (0, 0) @@ -277,9 +281,10 @@ class ListItem (clutter.Label): def __init__ (self, menu, itemLabel, y, imagePath): clutter.Label.__init__ (self) glossMgr = menu.getGlossMgr() - self.itemTexturesGroup = clutter.Group() - font = glossMgr.get_themeMgr().get_font("menu_item") self.stage = glossMgr.get_stage() + + self.itemTexturesGroup = clutter.Group() + font = menu.font #glossMgr.get_themeMgr().get_font("menu_item") self.set_font_name(font) self.set_text(itemLabel) self.color = clutter.Color(0xff, 0xff, 0xff, 0xdd) @@ -313,16 +318,16 @@ class ListItem (clutter.Label): zoomTo=0 opacityTo = 255 if level==0: - zoomTo = 1 #self.zoomLevel * 1.5 - opacityTo = 255 + zoomTo = self.menu.zoomStep0 #self.zoomLevel * 1.5 + opacityTo = self.menu.opacityStep0 self.itemTexturesGroup.show_all() if level==1: - zoomTo = self.zoomLevel * 1.2 - opacityTo = 255 - self.opacityStep + zoomTo = self.zoomLevel * self.menu.zoomStep1 + opacityTo = self.menu.opacityStep1 self.itemTexturesGroup.hide_all() if level==2: - zoomTo = self.zoomLevel - opacityTo = 255 - 2*self.opacityStep + zoomTo = self.zoomLevel * self.menu.zoomStep2 + opacityTo = self.menu.opacityStep2 self.itemTexturesGroup.hide_all() if zoomTo == self.currentZoom: diff --git a/themeMgr.py b/themeMgr.py index 1c853d4..6477728 100644 --- a/themeMgr.py +++ b/themeMgr.py @@ -214,9 +214,10 @@ class ThemeMgr: opacity = int(opacity) actor.set_opacity(opacity) - def get_texture(self, name, parent): + def get_texture(self, name, parent, texture): texture_src = None - texture = clutter.Texture() + if texture is None: + texture = clutter.Texture() element = self.search_docs("texture", name).childNodes #Quick check to make sure we found something @@ -234,5 +235,53 @@ class ThemeMgr: return texture - def get_font(self, name): - return 'Tahoma 40' \ No newline at end of file + def get_font(self, name, element): + if element is None: + element = self.search_docs("font", name).childNodes + #Quick check to make sure we found something + if element is None: + return None + + + face = self.find_child_value(element, "face") + res = str(self.stage.get_width()) + "x" + str(self.stage.get_height()) + + size = None + defSize = None + #Loop through all the different sizes until we find the right one (or else use the default) + for node in element: + if node.nodeType == node.ELEMENT_NODE: + if node.tagName == "size": + if node.attributes["id"].value == res: + size = node.childNodes[0].data + elif node.attributes["id"].value == "default": + defSize = node.childNodes[0].data + if size is None: + size = defSize + + fontString = str(face) + " " + str(size) + return fontString + + def setup_menu(self, name, menu): + element = self.search_docs("menu", name).childNodes + #Quick check to make sure we found something + if element is None: + return None + + menu.item_gap = int(self.find_child_value(element, "item_gap")) + menu.displayMax = int(self.find_child_value(element, "num_visible_elements")) + + #Grab the font + for node in element: + if node.nodeType == node.ELEMENT_NODE: + if node.tagName == "font": + fontString = self.get_font("main", node.childNodes) #print node.tagName + menu.font = fontString + + #Set the selection effect steps + menu.zoomStep0 = float(self.find_child_value(element, "scale_step0")) + menu.zoomStep1 = float(self.find_child_value(element, "scale_step1")) + menu.zoomStep2 = float(self.find_child_value(element, "scale_step2")) + menu.opacityStep0 = int(self.find_child_value(element, "opacity_step0")) + menu.opacityStep1 = int(self.find_child_value(element, "opacity_step1")) + menu.opacityStep2 = int(self.find_child_value(element, "opacity_step2")) \ No newline at end of file diff --git a/ui/default/main.xml b/ui/default/main.xml index ca3c64f..73c001b 100644 --- a/ui/default/main.xml +++ b/ui/default/main.xml @@ -1,4 +1,36 @@ + + + + Tahoma + 40 + 40 + 30 + + + 10 + 6 + + + 255 + 135 + 50 + 1 + 0.85 + 0.75 + + + + + + + Tahoma + 40 + 40 + 30 + + background.png