diff --git a/GlossMgr.py b/GlossMgr.py index 3d82d3b..928198a 100644 --- a/GlossMgr.py +++ b/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): diff --git a/Menu.py b/Menu.py index 9fe9169..dc94a74 100644 --- a/Menu.py +++ b/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) diff --git a/VideoController.py b/VideoController.py index 710ebf2..3b70aac 100644 --- a/VideoController.py +++ b/VideoController.py @@ -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() diff --git a/modules/dvd_player/dvd_player.py b/modules/dvd_player/dvd_player.py index 7fb79ea..7a5b290 100644 --- a/modules/dvd_player/dvd_player.py +++ b/modules/dvd_player/dvd_player.py @@ -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 diff --git a/modules/myth_tv_player/myth_tv_player.py b/modules/myth_tv_player/myth_tv_player.py index 9b49be8..5d32bcd 100644 --- a/modules/myth_tv_player/myth_tv_player.py +++ b/modules/myth_tv_player/myth_tv_player.py @@ -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 diff --git a/modules/video_player/elements/CoverItem.py b/modules/video_player/elements/CoverItem.py index fa79c48..11de0bf 100644 --- a/modules/video_player/elements/CoverItem.py +++ b/modules/video_player/elements/CoverItem.py @@ -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 diff --git a/modules/video_player/elements/cover_viewer.py b/modules/video_player/elements/cover_viewer.py index 4e09489..76ebf82 100644 --- a/modules/video_player/elements/cover_viewer.py +++ b/modules/video_player/elements/cover_viewer.py @@ -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] @@ -332,8 +333,13 @@ class coverViewer(clutter.Group): #If there is movement, make the scale happen 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() diff --git a/modules/video_player/elements/folder_menu.py b/modules/video_player/elements/folder_menu.py index 468176f..03f3000 100644 --- a/modules/video_player/elements/folder_menu.py +++ b/modules/video_player/elements/folder_menu.py @@ -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() diff --git a/modules/video_player/elements/video_details.py b/modules/video_player/elements/video_details.py index fe0b12e..22323bd 100644 --- a/modules/video_player/elements/video_details.py +++ b/modules/video_player/elements/video_details.py @@ -81,4 +81,16 @@ class video_details(clutter.Group): self.director.set_width(int(self.width - self.year.get_width())) self.plot.set_text(video.plot) - self.plot.set_width(self.width) \ No newline at end of file + 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("") \ No newline at end of file diff --git a/modules/video_player/video_player.py b/modules/video_player/video_player.py index 5f63992..9ef541a 100644 --- a/modules/video_player/video_player.py +++ b/modules/video_player/video_player.py @@ -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) diff --git a/themeMgr.py b/themeMgr.py index 1173761..68b48de 100644 --- a/themeMgr.py +++ b/themeMgr.py @@ -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 diff --git a/ui/Pear/main.xml b/ui/Pear/main.xml index bb87668..d01b2cf 100644 --- a/ui/Pear/main.xml +++ b/ui/Pear/main.xml @@ -61,6 +61,8 @@ active_bar.png + + 120 40% default diff --git a/ui/active_bar.png b/ui/active_bar.png deleted file mode 100644 index 6f2d09b..0000000 Binary files a/ui/active_bar.png and /dev/null differ diff --git a/ui/backdrop.png b/ui/backdrop.png deleted file mode 100644 index 8c7d997..0000000 Binary files a/ui/backdrop.png and /dev/null differ diff --git a/ui/background.png b/ui/background.png deleted file mode 100644 index 354be86..0000000 Binary files a/ui/background.png and /dev/null differ diff --git a/ui/cover_bg.png b/ui/cover_bg.png deleted file mode 100644 index ad63698..0000000 Binary files a/ui/cover_bg.png and /dev/null differ diff --git a/ui/cover_bg_long.png b/ui/cover_bg_long.png deleted file mode 100644 index 3882d68..0000000 Binary files a/ui/cover_bg_long.png and /dev/null differ diff --git a/ui/default/main.xml b/ui/default/main.xml index 99d2141..8f21063 100644 --- a/ui/default/main.xml +++ b/ui/default/main.xml @@ -64,6 +64,8 @@ active_bar.png + + 100 40% default diff --git a/ui/default/video.xml b/ui/default/video.xml index 985b59b..1c2b673 100644 --- a/ui/default/video.xml +++ b/ui/default/video.xml @@ -1,13 +1,13 @@ - video_player/cover_bg_long.png + video_player/cover_bg_new.png - 80% + 70% 80% - 15% - 15% + 24% + 4% @@ -24,6 +24,8 @@ + video_player/video_default.png + video_player/mv_gallery_folder_sel.png 60% 60% @@ -56,4 +58,6 @@ + + diff --git a/ui/default/video_osd.xml b/ui/default/video_osd.xml new file mode 100644 index 0000000..886552a --- /dev/null +++ b/ui/default/video_osd.xml @@ -0,0 +1,14 @@ + + + video_osd/osd_bar3.png + + 70% + 5% + + + 95% + 0 + + + + diff --git a/ui/osd_bar.png b/ui/default/video_osd/osd_bar.png similarity index 100% rename from ui/osd_bar.png rename to ui/default/video_osd/osd_bar.png diff --git a/ui/osd_bar3.png b/ui/default/video_osd/osd_bar3.png similarity index 100% rename from ui/osd_bar3.png rename to ui/default/video_osd/osd_bar3.png diff --git a/ui/default/video_player/cover_bg_new.png b/ui/default/video_player/cover_bg_new.png new file mode 100644 index 0000000..57117e9 Binary files /dev/null and b/ui/default/video_player/cover_bg_new.png differ diff --git a/ui/default/video_player/video_default.png b/ui/default/video_player/video_default.png new file mode 100755 index 0000000..8b90f5c Binary files /dev/null and b/ui/default/video_player/video_default.png differ diff --git a/ui/mv_gallery_folder_sel.png b/ui/mv_gallery_folder_sel.png deleted file mode 100644 index 698a065..0000000 Binary files a/ui/mv_gallery_folder_sel.png and /dev/null differ diff --git a/ui/spinner1.gif b/ui/spinner1.gif deleted file mode 100644 index d04bd39..0000000 Binary files a/ui/spinner1.gif and /dev/null differ diff --git a/ui/vid_details_bg.png b/ui/vid_details_bg.png deleted file mode 100644 index 2c1d663..0000000 Binary files a/ui/vid_details_bg.png and /dev/null differ diff --git a/ui/vid_folders_select_box.png b/ui/vid_folders_select_box.png deleted file mode 100644 index e0b1403..0000000 Binary files a/ui/vid_folders_select_box.png and /dev/null differ