Just a little bit of work on the cover viewer. Added a clipping group to display this a little better and fixed up its positioning problems. More to come...

This commit is contained in:
noisymime 2008-01-15 12:58:09 +00:00
parent 5904a77c52
commit cae16838cf
3 changed files with 38 additions and 15 deletions

View File

@ -270,7 +270,7 @@ class VideoController:
return
current_pos = self.video_texture.get_position()
new_pos = int(current_pos + amount)
new_pos = int(int(current_pos) + int(amount))
if new_pos >= self.video_texture.get_duration():
new_pos = self.video_texture.get_duration()-1

View File

@ -23,17 +23,33 @@ class coverViewer(clutter.Group):
self.videoLibrary = []
self.textureLibrary = []
self.folderLibrary = []
self.covers_group = clutter.Group()
self.covers_width = int(width * self.covers_size_percent)
self.covers_height = int(height * self.covers_size_percent)
self.current_video_details = video_details_group(self.covers_width)
self.num_covers = 0
self.cover_gap = 1
self.num_visible_rows = rows
self.num_columns = columns
self.cover_size = int(self.covers_width / self.num_columns) #A cover will be cover_size * cover_size (X * Y)
#The viewer actually sits within another group that clips its size
self.covers_group_clip = clutter.Group()
self.covers_group_clip.add(self.covers_group)
#Nasty hack to get around centering problem
self.covers_group.set_position(int(self.cover_size/2), int(self.cover_size/2))
#And setup the clip size and position
scale_amount = int(self.cover_size * self.scaleFactor - self.cover_size)
clip_width = (self.cover_size*columns) + scale_amount #Width is the cover size by the number of colums, plus the additional amount required for scaling
clip_height = (self.cover_size*rows) + scale_amount
self.covers_group_clip.set_clip(-(scale_amount/2), -(scale_amount/2), clip_width, clip_height)
self.current_video_details = video_details_group(self.covers_width)
self.num_covers = 0
self.cover_gap = 1
#Setup input queue controller
self.input_queue = InputQueue()
self.input_queue.set_action(InputQueue.NORTH, self.move_up)
@ -48,12 +64,13 @@ class coverViewer(clutter.Group):
self.currentSelection = 0
self.add(self.covers_group)
self.add(self.covers_group_clip)
covers_x = int(width * (1-self.covers_size_percent)/2)
covers_y = int(height * (1-self.covers_size_percent)/2)
#self.covers_group.set_position(covers_x, covers_y)
#self.covers_group.set_depth(1) #self.cover_size)
self.covers_group.show()
self.covers_group_clip.show()
#self.stage.add(self.current_video_description)
self.current_video_details.show()
@ -284,6 +301,7 @@ class coverViewer(clutter.Group):
def addIncomingRow(self, min, max):
for i in range(min, max):
self.covers_group.add(self.textureLibrary[i])
self.textureLibrary[i].set_opacity(0)
self.textureLibrary[i].show()
def get_current_item(self):

View File

@ -20,6 +20,7 @@ from modules.video_player.folder_menu import folderMenu
class Module():
title = "Videos"
STATE_FOLDERS, STATE_COVERS, STATE_VIDEO = range(3)
coverViewerWidth = 750
coverViewerHeight = 600
@ -40,7 +41,7 @@ class Module():
#Setup initial vars
self.is_playing = False
self.controlState = "folder" #Options are "folder", "cover" or "video"
self.controlState = self.STATE_FOLDERS
self.foldersPosX = (self.coverViewerPosX - self.cover_size) / 2
self.foldersPosY = (self.stage.get_height() - self.coverViewerHeight) / 2
@ -53,6 +54,7 @@ class Module():
base_folder_menu.set_position(self.foldersPosX, self.foldersPosY)
self.folderLibrary.append(base_folder_menu)
self.load_base_folders(self.baseDir, base_folder_menu)
self.currentViewer = base_folder_menu.get_current_viewer()
def setup_ui(self):
@ -146,22 +148,22 @@ class Module():
#*****************************************************************
#"State based input handling
if self.controlState == "folder":
if self.controlState == self.STATE_FOLDERS:
if event.keyval == clutter.keysyms.Escape:
return True
elif event.keyval == right:
self.controlState = "cover"
self.controlState = self.STATE_COVERS
self.currentViewer = self.folderLibrary[self.folder_level].get_current_viewer()
self.currentViewer.select_first()
self.folderLibrary[self.folder_level].on_key_press_event(event)
#**********************************************************
elif self.controlState == "video":
elif self.controlState == self.STATE_VIDEO:
if event.keyval == clutter.keysyms.Escape:
self.videoController.stop_video()
self.is_playing = False
self.controlState = "cover"
self.controlState = self.STATE_COVERS
else:
self.videoController.on_key_press_event(event)
@ -173,7 +175,7 @@ class Module():
else:
self.pause()
#**********************************************************
elif self.controlState == "cover":
elif self.controlState == self.STATE_COVERS:
if (event.keyval == up) or (event.keyval == down) or (event.keyval == left) or (event.keyval == right):
self.currentViewer.on_key_press_event(event)
@ -187,7 +189,7 @@ class Module():
if event.keyval == clutter.keysyms.Escape:
self.currentViewer.select_none()
self.controlState = "folder"
self.controlState = self.STATE_FOLDERS
@ -220,8 +222,11 @@ class Module():
self.currentViewer.set_opacity(0)
self.currentViewer.show_all()
self.currentViewer.show()
#self.currentViewer_clip.show()
self.currentViewer.set_position(self.coverViewerPosX, self.coverViewerPosY)
self.stage.add(self.currentViewer)
#self.stage.add(self.currentViewer)
self.stage.add(self.currentViewer)
#Fade everything in
@ -270,7 +275,7 @@ class Module():
uri = "file://" + str(vid.filename)
self.videoController.play_video(uri, self)
self.is_playing = True
self.controlState = "video"
self.controlState = self.STATE_VIDEO
self.stage.remove(self.currentViewer)
@ -286,7 +291,7 @@ class Module():
self.behaviour = clutter.BehaviourOpacity(opacity_start=0, opacity_end=255, alpha=alpha)
self.behaviour.apply(self.currentViewer)
self.stage.add()
self.stage.add(self.currentViewer)
self.currentViewer.show()
timeline.start()