Corrective work now that the mess of files in ui dir has been removed.
10
GlossMgr.py
|
@ -22,14 +22,16 @@ class GlossMgr:
|
|||
transition_path = "transitions/menus/" + self.transition
|
||||
self.transition = __import__(transition_path).Transition(self)
|
||||
|
||||
#The background is a bit messy due to the depth issues :(
|
||||
background = self.themeMgr.get_texture("background", None, None)
|
||||
(width, height) = background.get_abs_size()
|
||||
print background.get_abs_size()
|
||||
background.set_anchor_point(0, 0)
|
||||
#background.set_anchor_point_from_gravity(clutter.GRAVITY_NORTH_WEST)
|
||||
background.set_anchor_point(int(background.get_width()/3), int(background.get_height()/3))
|
||||
#background.set_anchor_point_from_gravity(clutter.GRAVITY_CENTER)
|
||||
background.set_depth(-self.stage.get_width())
|
||||
print background.get_abs_size()
|
||||
background.set_anchor_point_from_gravity(clutter.GRAVITY_NORTH_WEST)
|
||||
#
|
||||
(width_new, height_new) = background.get_abs_size()
|
||||
#width = width * (width / width_new) + width_new
|
||||
#height = height * (height / height_new) + height_new
|
||||
|
@ -68,7 +70,7 @@ class GlossMgr:
|
|||
tmpLabel.set_text("AAA")
|
||||
tmpLabel.set_font_name(self.currentMenu.font)
|
||||
#Selector bar height is 20% larger than the labels
|
||||
self.selector_bar.set_height( int(tmpLabel.get_height()*1.2) )
|
||||
self.selector_bar.set_height( int(tmpLabel.get_height()*self.selector_bar.height_percent) )
|
||||
self.selector_bar.set_menu(self.currentMenu)
|
||||
tmpLabel = None
|
||||
|
||||
|
@ -154,6 +156,7 @@ class GlossMgr:
|
|||
|
||||
class MenuSelector(clutter.Texture):
|
||||
x_offset = -50
|
||||
height_percent = 1
|
||||
position_0 = None
|
||||
|
||||
def __init__ (self, glossMgr):
|
||||
|
@ -162,6 +165,7 @@ class MenuSelector(clutter.Texture):
|
|||
glossMgr.themeMgr.get_texture("selector_bar", glossMgr.stage, self)
|
||||
self.set_position(0, self.get_y())
|
||||
self.x_offset = int(glossMgr.themeMgr.get_value("texture", "selector_bar", "position.x"))
|
||||
self.height_percent = float(glossMgr.themeMgr.get_value("texture", "selector_bar", "height_percent")) / float(100)
|
||||
|
||||
#This is a utility function that gets the coordinates of an that has been scaled
|
||||
def get_true_abs_position(self, selectee):
|
||||
|
|
4
Menu.py
|
@ -360,6 +360,10 @@ class ListItem (clutter.Label):
|
|||
|
||||
alpha = clutter.Alpha(timeline, clutter.ramp_inc_func)
|
||||
self.behaviour1 = clutter.BehaviourScale(scale_start=self.currentZoom, scale_end=zoomTo, alpha=alpha) #scale_gravity=clutter.GRAVITY_WEST,
|
||||
#self.behaviour1 = clutter.BehaviourScale(x_scale_start=self.currentZoom, y_scale_start=self.currentZoom, x_scale_end=zoomTo, y_scale_end=zoomTo, alpha=alpha) #scale_gravity=clutter.GRAVITY_WEST,
|
||||
#self.behaviour1 = clutter.BehaviourScale(x_scale_start=1, y_scale_start=1, x_scale_end=1, y_scale_end=1, alpha=alpha) #scale_gravity=clutter.GRAVITY_WEST,
|
||||
#self.set_scale(zoomTo, zoomTo)
|
||||
self.set_anchor_point_from_gravity(clutter.GRAVITY_WEST)
|
||||
self.behaviour1.set_property("scale-gravity", clutter.GRAVITY_WEST) #As at Clutter r1807 you cannot set the gravity on the line above.
|
||||
self.behaviour2 = clutter.BehaviourOpacity(opacity_start=self.currentOpacity, opacity_end=opacityTo, alpha=alpha)
|
||||
self.behaviour1.apply(self)
|
||||
|
|
|
@ -5,8 +5,8 @@ import os
|
|||
|
||||
class VideoController:
|
||||
|
||||
def __init__(self, stage):
|
||||
self.stage = stage
|
||||
def __init__(self, glossMgr):
|
||||
self.stage = glossMgr.stage
|
||||
self.overlay = None
|
||||
self.blackdrop = None
|
||||
|
||||
|
@ -17,7 +17,7 @@ class VideoController:
|
|||
self.video_texture.set_position(0,0)
|
||||
|
||||
|
||||
self.osd = osd(stage)
|
||||
self.osd = osd(glossMgr)
|
||||
|
||||
|
||||
def on_key_press_event(self, event):
|
||||
|
@ -287,19 +287,25 @@ import time
|
|||
|
||||
class osd:
|
||||
|
||||
def __init__(self, stage):
|
||||
self.stage = stage
|
||||
def __init__(self, glossMgr):
|
||||
self.glossMgr = glossMgr
|
||||
self.stage = glossMgr.stage
|
||||
self.timerRunning = False
|
||||
self.setup_ui()
|
||||
|
||||
self.bar_group = clutter.Group()
|
||||
|
||||
self.background = clutter.Texture()
|
||||
self.background.set_pixbuf( gtk.gdk.pixbuf_new_from_file("ui/osd_bar3.png") )
|
||||
self.background.set_opacity(255)
|
||||
self.background.set_width(stage.get_width())
|
||||
|
||||
#self.background = clutter.Texture()
|
||||
#self.background.set_pixbuf( gtk.gdk.pixbuf_new_from_file("ui/default/osd_bar3.png") )
|
||||
#self.background.set_opacity(255)
|
||||
#self.background.set_width(stage.get_width())
|
||||
self.bar_group.add(self.background)
|
||||
self.bar_group.show_all()
|
||||
|
||||
def setup_ui(self):
|
||||
self.background = self.glossMgr.themeMgr.get_texture("video_osd_bar", self.stage, None)
|
||||
|
||||
def enter(self):
|
||||
self.stage.add(self.bar_group)
|
||||
self.bar_group.show()
|
||||
|
|
|
@ -38,7 +38,7 @@ class Module:
|
|||
|
||||
def begin(self, glossMgr):
|
||||
uri = "dvd://1"
|
||||
self.videoController = VideoController(self.stage)
|
||||
self.videoController = VideoController(glossMgr)
|
||||
self.video = self.videoController.play_video(uri, self)
|
||||
self.isPlaying = True
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class Module:
|
|||
self.glossMgr = glossMgr
|
||||
self.setup_ui()
|
||||
|
||||
self.videoController = VideoController(self.stage)
|
||||
self.videoController = VideoController(glossMgr)
|
||||
self.dbMgr = dbMgr
|
||||
self.isRunning = False
|
||||
|
||||
|
|
|
@ -10,14 +10,15 @@ class cover_item(clutter.Group):
|
|||
main_font_size = 22
|
||||
plot_font_size = 18
|
||||
|
||||
def __init__(self, video, folder_name, cover_size):
|
||||
def __init__(self, glossMgr, video, folder_name, cover_size):
|
||||
clutter.Group.__init__(self)
|
||||
self.width = cover_size
|
||||
self.height = cover_size
|
||||
|
||||
#Set whether or not this is a folder or a video cover
|
||||
if not folder_name is None:
|
||||
imagePath = "ui/mv_gallery_folder_sel.png"
|
||||
element = glossMgr.themeMgr.search_docs("video_cover_viewer", "main").childNodes
|
||||
imagePath = "ui/" + glossMgr.themeMgr.currentTheme + "/" + glossMgr.themeMgr.find_child_value(element, "folder_img_src")
|
||||
pixbuf = gtk.gdk.pixbuf_new_from_file(imagePath)
|
||||
self.isFolder = True
|
||||
else:
|
||||
|
@ -25,7 +26,8 @@ class cover_item(clutter.Group):
|
|||
#Check that coverfile exists
|
||||
# In the future this will change so that the video is still included with a blank image
|
||||
if not os.path.exists(imagePath):
|
||||
imagePath = "ui/mv_gallery_folder_sel.png"
|
||||
element = glossMgr.themeMgr.search_docs("video_cover_viewer", "main").childNodes
|
||||
imagePath = "ui/" + glossMgr.themeMgr.currentTheme + "/" + glossMgr.themeMgr.find_child_value(element, "video_default_src")
|
||||
|
||||
pixbuf = gtk.gdk.pixbuf_new_from_file(imagePath)
|
||||
self.isFolder = False
|
||||
|
|
|
@ -17,9 +17,10 @@ class coverViewer(clutter.Group):
|
|||
update_details = False
|
||||
|
||||
|
||||
def __init__(self, stage, width, height, rows, columns):
|
||||
def __init__(self, glossMgr, width, height, rows, columns):
|
||||
clutter.Group.__init__(self)
|
||||
self.stage = stage
|
||||
self.glossMgr = glossMgr
|
||||
self.stage = glossMgr.stage
|
||||
self.videoLibrary = []
|
||||
self.textureLibrary = []
|
||||
self.folderLibrary = []
|
||||
|
@ -72,17 +73,13 @@ class coverViewer(clutter.Group):
|
|||
self.covers_group.show()
|
||||
self.covers_group_clip.show()
|
||||
|
||||
#self.stage.add(self.current_video_description)
|
||||
#self.current_video_details.show()
|
||||
#self.current_video_details.show_all()
|
||||
|
||||
def add_video(self, video):
|
||||
self.videoLibrary.append(video)
|
||||
tempTexture = cover_item(video, None, self.cover_size)
|
||||
tempTexture = cover_item(self.glossMgr, video, None, self.cover_size)
|
||||
self.add_texture_group(tempTexture)
|
||||
|
||||
def add_folder(self, folder_name):
|
||||
tempTexture = cover_item(None, folder_name, self.cover_size)
|
||||
tempTexture = cover_item(self.glossMgr, None, folder_name, self.cover_size)
|
||||
self.folderLibrary.append(folder_name)
|
||||
self.add_texture_group(tempTexture)
|
||||
|
||||
|
@ -188,6 +185,7 @@ class coverViewer(clutter.Group):
|
|||
|
||||
alpha = clutter.Alpha(self.timeline, clutter.ramp_inc_func)
|
||||
self.behaviourNew_scale = clutter.BehaviourScale(scale_start=1, scale_end=self.scaleFactor, alpha=alpha)
|
||||
#self.behaviourNew_scale = clutter.BehaviourScale(x_scale_start=1, y_scale_start=1, x_scale_end=self.scaleFactor, y_scale_end=self.scaleFactor, alpha=alpha)
|
||||
self.behaviourNew_z = clutter.BehaviourDepth(depth_start=1, depth_end=2, alpha=alpha)
|
||||
self.behaviourNew_opacity = clutter.BehaviourOpacity(opacity_start=self.inactiveOpacity, opacity_end=255, alpha=alpha)
|
||||
|
||||
|
@ -286,7 +284,10 @@ class coverViewer(clutter.Group):
|
|||
return self.textureLibrary[self.currentSelection]
|
||||
|
||||
def get_current_video(self):
|
||||
return self.videoLibrary[self.currentSelection]
|
||||
if self.textureLibrary[self.currentSelection].isFolder:
|
||||
return None #self.folderLibrary[(self.currentSelection-len(self.folderLibrary))]
|
||||
else:
|
||||
return self.videoLibrary[(self.currentSelection-len(self.folderLibrary))]
|
||||
|
||||
def get_item_x(self, itemNo):
|
||||
return self.textureLibrary[itemNo]
|
||||
|
@ -333,7 +334,12 @@ class coverViewer(clutter.Group):
|
|||
if not newItem == None:
|
||||
self.select_item(newItem, self.currentSelection)
|
||||
|
||||
if self.update_details:
|
||||
self.details_group.set_video_bare(self.videoLibrary[self.currentSelection])
|
||||
self.update_details = False
|
||||
|
||||
if self.update_details:
|
||||
if not self.textureLibrary[self.currentSelection].isFolder:
|
||||
self.details_group.set_video_bare(self.videoLibrary[self.currentSelection])
|
||||
self.update_details = False
|
||||
else:
|
||||
self.details_group.set_folder(self.folderLibrary[(self.currentSelection-len(self.folderLibrary))])
|
||||
#self.details_group.clear()
|
||||
|
||||
|
|
|
@ -14,30 +14,33 @@ class folderMenu(clutter.Group):
|
|||
inactiveOpacity = 150
|
||||
selection_box_src = "ui/vid_folders_select_box.png"
|
||||
|
||||
def __init__(self, stage, rows, item_size):
|
||||
def __init__(self, glossMgr, rows, item_size):
|
||||
clutter.Group.__init__(self)
|
||||
self.stage = stage
|
||||
self.glossMgr = glossMgr
|
||||
self.stage = glossMgr.stage
|
||||
self.max_rows = rows
|
||||
self.item_size = item_size
|
||||
self.currentItemNo = None
|
||||
|
||||
"""
|
||||
self.selector_box = clutter.Texture()
|
||||
pixbuf = gtk.gdk.pixbuf_new_from_file(self.selection_box_src)
|
||||
self.selector_box.set_pixbuf(pixbuf)
|
||||
self.selector_box.set_size(item_size, item_size)
|
||||
#self.add(self.selector_box)
|
||||
self.selector_box.show()
|
||||
"""
|
||||
|
||||
self.folderLibrary = []
|
||||
self.viewerLibrary = []
|
||||
|
||||
self.folder_group = coverViewer(self.stage, item_size, (item_size*rows), rows, 1)
|
||||
self.folder_group = coverViewer(glossMgr, item_size, (item_size*rows), rows, 1)
|
||||
self.folder_group.scaleFactor = 1
|
||||
self.folder_group.show()
|
||||
self.add(self.folder_group)
|
||||
|
||||
def add_base_dir(self, folderName, cover_viewer):
|
||||
tempItem = cover_item(None, folderName, self.item_size)
|
||||
tempItem = cover_item(self.glossMgr, None, folderName, self.item_size)
|
||||
rows = len(self.folderLibrary)
|
||||
x = 0 #Change this later to center it
|
||||
y = rows * self.item_size
|
||||
|
@ -152,7 +155,7 @@ class folderMenu(clutter.Group):
|
|||
)
|
||||
|
||||
self.behaviour_selectorBox_path = clutter.BehaviourPath(alpha, knots)
|
||||
self.behaviour_selectorBox_path.apply(self.selector_box)
|
||||
#self.behaviour_selectorBox_path.apply(self.selector_box)
|
||||
|
||||
def completeSwitch(self, data, old_viewer):
|
||||
#self.viewerLibrary[self.currentItemNo].select_first()
|
||||
|
|
|
@ -82,3 +82,15 @@ class video_details(clutter.Group):
|
|||
|
||||
self.plot.set_text(video.plot)
|
||||
self.plot.set_width(self.width)
|
||||
|
||||
def set_folder(self, folder_name):
|
||||
self.title.set_text("Folder: " + str(folder_name))
|
||||
self.year.set_text("")
|
||||
self.director.set_text("")
|
||||
self.plot.set_text("")
|
||||
|
||||
def clear(self):
|
||||
self.title.set_text("")
|
||||
self.year.set_text("")
|
||||
self.director.set_text("")
|
||||
self.plot.set_text("")
|
|
@ -43,7 +43,7 @@ class Module():
|
|||
self.setup_ui()
|
||||
self.viewerLibrary = []
|
||||
self.folderLibrary = []
|
||||
self.videoController = VideoController(self.stage)
|
||||
self.videoController = VideoController(glossMgr)
|
||||
|
||||
#Setup initial vars
|
||||
self.is_playing = False
|
||||
|
@ -55,7 +55,7 @@ class Module():
|
|||
self.baseDir = dbMgr.get_setting("VideoStartupDir")
|
||||
self.cwd = self.baseDir
|
||||
self.folder_level = 0
|
||||
base_folder_menu = folderMenu(self.stage, self.coverViewerRows, self.folders_cover_size)
|
||||
base_folder_menu = folderMenu(glossMgr, self.coverViewerRows, self.folders_cover_size)
|
||||
base_folder_menu.set_position(self.foldersPosX, self.foldersPosY)
|
||||
self.folderLibrary.append(base_folder_menu)
|
||||
self.load_base_folders(self.baseDir, base_folder_menu)
|
||||
|
@ -110,7 +110,7 @@ class Module():
|
|||
for dir_entry in new_file_list:
|
||||
tempPath = dirPath + "/" + dir_entry
|
||||
if os.path.isdir(tempPath) and not ( dir_entry[0] == "."):
|
||||
tempViewer = coverViewer(self.stage, self.coverViewerWidth, self.coverViewerHeight, self.coverViewerRows, self.coverViewerColumns)
|
||||
tempViewer = coverViewer(self.glossMgr, self.coverViewerWidth, self.coverViewerHeight, self.coverViewerRows, self.coverViewerColumns)
|
||||
self.loadDir(tempPath, tempViewer)
|
||||
folder_menu.add_base_dir(dir_entry, tempViewer)
|
||||
|
||||
|
@ -209,8 +209,12 @@ class Module():
|
|||
#Do a check to see if the input queue is currently processing
|
||||
#
|
||||
if not self.currentViewer.input_queue.is_in_queue():
|
||||
self.video_details.set_video_bare(video)
|
||||
self.currentViewer.set_details_update(False, None)
|
||||
if not video is None:
|
||||
self.video_details.set_video_bare(video)
|
||||
self.currentViewer.set_details_update(False, None)
|
||||
else:
|
||||
self.video_details.set_folder(self.currentViewer.folderLibrary[(self.currentViewer.currentSelection-len(self.currentViewer.folderLibrary))])
|
||||
#self.video_details.clear()
|
||||
else:
|
||||
self.currentViewer.set_details_update(True, self.video_details)
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ from xml.dom import minidom
|
|||
class ThemeMgr:
|
||||
defaultTheme = "default"
|
||||
currentTheme = "default"
|
||||
currentTheme = "Pear"
|
||||
#currentTheme = "Pear"
|
||||
|
||||
def __init__(self, glossMgr):
|
||||
self.stage = glossMgr.stage
|
||||
|
@ -30,6 +30,7 @@ class ThemeMgr:
|
|||
|
||||
for file in file_list:
|
||||
conf_file = dir + "/" + file
|
||||
print conf_file
|
||||
docs.append(minidom.parse(conf_file))
|
||||
|
||||
#Filter function for fiding XML files
|
||||
|
|
|
@ -61,6 +61,8 @@
|
|||
|
||||
<texture id="selector_bar">
|
||||
<image>active_bar.png</image>
|
||||
<!-- This is a special property of selector bar the sets the height of the bar relative to the menu items its selecting -->
|
||||
<height_percent>120</height_percent>
|
||||
<dimensions type="relativeToStage">
|
||||
<width>40%</width>
|
||||
<height>default</height>
|
||||
|
|
Before Width: | Height: | Size: 3.9 KiB |
BIN
ui/backdrop.png
Before Width: | Height: | Size: 238 KiB |
Before Width: | Height: | Size: 86 KiB |
BIN
ui/cover_bg.png
Before Width: | Height: | Size: 517 KiB |
Before Width: | Height: | Size: 26 KiB |
|
@ -64,6 +64,8 @@
|
|||
|
||||
<texture id="selector_bar">
|
||||
<image>active_bar.png</image>
|
||||
<!-- This is a special property of selector bar the sets the height of the bar relative to the menu items its selecting -->
|
||||
<height_percent>100</height_percent>
|
||||
<dimensions type="relativeToStage">
|
||||
<width>40%</width>
|
||||
<height>default</height>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<gloss-theme>
|
||||
<texture id="video_covers_background">
|
||||
<image>video_player/cover_bg_long.png</image>
|
||||
<image>video_player/cover_bg_new.png</image>
|
||||
<dimensions type="relativeToStage">
|
||||
<width>80%</width>
|
||||
<width>70%</width>
|
||||
<height>80%</height>
|
||||
</dimensions>
|
||||
<position type="relativeToStage">
|
||||
<x>15%</x>
|
||||
<y>15%</y>
|
||||
<x>24%</x>
|
||||
<y>4%</y>
|
||||
</position>
|
||||
</texture>
|
||||
|
||||
|
@ -24,6 +24,8 @@
|
|||
</texture>
|
||||
|
||||
<video_cover_viewer id="main">
|
||||
<video_default_src>video_player/video_default.png</video_default_src>
|
||||
<folder_img_src>video_player/mv_gallery_folder_sel.png</folder_img_src>
|
||||
<dimensions type="relativeToStage">
|
||||
<width>60%</width>
|
||||
<height>60%</height>
|
||||
|
@ -56,4 +58,6 @@
|
|||
</position>
|
||||
</video_folder_menu>
|
||||
|
||||
|
||||
|
||||
</gloss-theme>
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<gloss-theme>
|
||||
<texture id="video_osd_bar">
|
||||
<image>video_osd/osd_bar3.png</image>
|
||||
<dimensions type="relativeToStage">
|
||||
<width>70%</width>
|
||||
<height>5%</height>
|
||||
</dimensions>
|
||||
<position type="relativeToStage">
|
||||
<x>95%</x>
|
||||
<y>0</y>
|
||||
</position>
|
||||
</texture>
|
||||
|
||||
</gloss-theme>
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 732 KiB |
After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 2.4 KiB |
BIN
ui/spinner1.gif
Before Width: | Height: | Size: 875 B |
Before Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 14 KiB |