The branch, dharma has been updated
via 1794b584af4446e069e370bfdc858485d7939199 (commit)
from 9c6a01c9cbafceb715eeed38f547ff522413e468 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=1794b584af4446e069e370bfdc858485d7939199
commit 1794b584af4446e069e370bfdc858485d7939199
Author: spiff <[email protected]>
Date: Tue Oct 11 09:44:38 2011 +0200
[script.tvguide] -v 0.4.0
diff --git a/script.tvguide/addon.py b/script.tvguide/addon.py
index ede2d64..aa9df02 100644
--- a/script.tvguide/addon.py
+++ b/script.tvguide/addon.py
@@ -17,12 +17,14 @@ sourceRef = SOURCES[ADDON.getSetting('source')]
SETTINGS = {
'cache.path' : xbmc.translatePath(ADDON.getAddonInfo('profile')),
'xmltv.file' : ADDON.getSetting('xmltv.file'),
- 'youseetv.category' : ADDON.getSetting('youseetv.category')
+ 'youseetv.category' : ADDON.getSetting('youseetv.category'),
+ 'notifications.enabled' : ADDON.getSetting('notifications.enabled'),
+ 'cache.data.on.xbmc.startup' :
ADDON.getSetting('cache.data.on.xbmc.startup')
}
SOURCE = sourceRef(SETTINGS)
-xbmc.log("Loading TVGuide [script.tvguide] source: " + str(sourceRef))
+xbmc.log("[script.tvguide] Using source: " + str(sourceRef))
if __name__ == '__main__':
w = gui.TVGuide(source = SOURCE)
diff --git a/script.tvguide/addon.xml b/script.tvguide/addon.xml
index 098968a..fdad3ab 100644
--- a/script.tvguide/addon.xml
+++ b/script.tvguide/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.tvguide"
name="TV Guide"
- version="0.3.1"
+ version="0.4.0"
provider-name="twinther [[email protected]]">
<requires>
<import addon="xbmc.python" version="1.0"/>
diff --git a/script.tvguide/changelog.txt b/script.tvguide/changelog.txt
index 0e5b9c4..16b085d 100644
--- a/script.tvguide/changelog.txt
+++ b/script.tvguide/changelog.txt
@@ -1,3 +1,8 @@
+[B]Version 0.4.0 - 2011-10-09[/B]
+- Add option to get notified before programs start
+- New graphics
+- Readded initial support for streaming channels
+
[B]Version 0.3.1 - 2011-09-10[/B]
- Made paging of channels more logical to navigate
- Better handling of errors if EPG data is unavailable
diff --git a/script.tvguide/clear_cache.py b/script.tvguide/clear_cache.py
index a78d4a4..3bfc62c 100644
--- a/script.tvguide/clear_cache.py
+++ b/script.tvguide/clear_cache.py
@@ -5,14 +5,13 @@ import xbmcgui
from strings import *
-
xbmc.log("Clearing TVGuide [script.tvguide] caches...")
cachePath = xbmc.translatePath(xbmcaddon.Addon(id =
'script.tvguide').getAddonInfo('profile'))
for file in os.listdir(cachePath):
- if file != 'settings.xml':
+ if file not in ['settings.xml', 'notification.db']:
os.unlink(os.path.join(cachePath, file))
-xbmcgui.Dialog().ok(strings(CLEAR_CACHE), strings(CLEAR_CACHE_DONE))
+xbmcgui.Dialog().ok(strings(CLEAR_CACHE), strings(DONE))
xbmc.log("Clearing TVGuide [script.tvguide] caches. Done!")
\ No newline at end of file
diff --git a/script.tvguide/gui.py b/script.tvguide/gui.py
index 6f09607..afb3373 100644
--- a/script.tvguide/gui.py
+++ b/script.tvguide/gui.py
@@ -19,7 +19,7 @@ KEY_INFO = 11
KEY_NAV_BACK = 92
KEY_CONTEXT_MENU = 117
-CHANNELS_PER_PAGE = 8
+CHANNELS_PER_PAGE = 9
CELL_HEIGHT = 50
CELL_WIDTH = 275
@@ -28,8 +28,10 @@ CELL_WIDTH_CHANNELS = 180
HALF_HOUR = datetime.timedelta(minutes = 30)
ADDON = xbmcaddon.Addon(id = 'script.tvguide')
-TEXTURE_BUTTON_NOFOCUS =
os.path.join(xbmc.translatePath(ADDON.getAddonInfo('path')), 'resources',
'skins', 'Default', 'media', 'cell-bg.png')
-TEXTURE_BUTTON_FOCUS =
os.path.join(xbmc.translatePath(ADDON.getAddonInfo('path')), 'resources',
'skins', 'Default', 'media', 'cell-bg-selected.png')
+TEXTURE_BUTTON_NOFOCUS =
os.path.join(xbmc.translatePath(ADDON.getAddonInfo('path')), 'resources',
'skins', 'Default', 'media', 'tvguide-program-grey.png')
+TEXTURE_BUTTON_FOCUS =
os.path.join(xbmc.translatePath(ADDON.getAddonInfo('path')), 'resources',
'skins', 'Default', 'media', 'tvguide-program-grey-focus.png')
+TEXTURE_BUTTON_NOFOCUS_NOTIFY =
os.path.join(xbmc.translatePath(ADDON.getAddonInfo('path')), 'resources',
'skins', 'Default', 'media', 'tvguide-program-red.png')
+TEXTURE_BUTTON_FOCUS_NOTIFY =
os.path.join(xbmc.translatePath(ADDON.getAddonInfo('path')), 'resources',
'skins', 'Default', 'media', 'tvguide-program-red-focus.png')
class TVGuide(xbmcgui.WindowXML):
C_MAIN_TITLE = 4020
@@ -38,13 +40,17 @@ class TVGuide(xbmcgui.WindowXML):
C_MAIN_IMAGE = 4023
C_MAIN_LOADING = 4200
C_MAIN_LOADING_PROGRESS = 4201
+ C_MAIN_BACKGROUND = 4600
def __new__(cls, source):
return super(TVGuide, cls).__new__(cls, 'script-tvguide-main.xml',
ADDON.getAddonInfo('path'))
def __init__(self, source):
+ """
+ @param source: the source of EPG data
+ @type source: source.Source
+ """
super(TVGuide, self).__init__()
-
self.source = source
self.controlToProgramMap = {}
self.focusX = 0
@@ -93,10 +99,14 @@ class TVGuide(xbmcgui.WindowXML):
def onClick(self, controlId):
program = self.controlToProgramMap[controlId]
- if program.imageLarge is not None:
- d = TVGuideInfo(program)
- d.doModal()
- del d
+
+ d = PopupMenu(program)
+ d.doModal()
+ buttonClicked = d.buttonClicked
+ del d
+
+ if buttonClicked == PopupMenu.C_POPUP_PLAY:
+ program.channel.play()
def onFocus(self, controlId):
controlInFocus = self.getControl(controlId)
@@ -104,7 +114,6 @@ class TVGuide(xbmcgui.WindowXML):
if left > self.focusX or left + controlInFocus.getWidth() <
self.focusX:
self.focusX = left
-
program = self.controlToProgramMap[controlId]
self.getControl(self.C_MAIN_TITLE).setLabel('[B]%s[/B]' %
program.title)
@@ -114,6 +123,9 @@ class TVGuide(xbmcgui.WindowXML):
if program.imageSmall is not None:
self.getControl(self.C_MAIN_IMAGE).setImage(program.imageSmall)
+ if ADDON.getSetting('program.background.enabled') == 'true' and
program.imageLarge is not None:
+
self.getControl(self.C_MAIN_BACKGROUND).setImage(program.imageLarge)
+
def _left(self, currentX, currentY):
control = self._findControlOnLeft(currentX, currentY)
if control is None:
@@ -158,7 +170,7 @@ class TVGuide(xbmcgui.WindowXML):
self.page = self.onRedrawEPG(self.page+ 1, self.date)
return self._findControlBelow(0)
- def onRedrawEPG(self, page, startTime):
+ def onRedrawEPG(self, page, startTime, autoChangeFocus = True):
oldControltoProgramMap = self.controlToProgramMap.copy()
self.controlToProgramMap.clear()
@@ -223,13 +235,14 @@ class TVGuide(xbmcgui.WindowXML):
if cellWidth > 1:
control = xbmcgui.ControlButton(
cellStart,
- 25 + CELL_HEIGHT * (1 + idx),
- cellWidth,
- CELL_HEIGHT,
+ 60 + CELL_HEIGHT * idx,
+ cellWidth - 2,
+ CELL_HEIGHT - 2,
program.title,
noFocusTexture = TEXTURE_BUTTON_NOFOCUS,
focusTexture = TEXTURE_BUTTON_FOCUS
)
+
controlsToAdd.append([control, program])
@@ -244,7 +257,7 @@ class TVGuide(xbmcgui.WindowXML):
try:
self.getFocus()
except TypeError:
- if len(self.controlToProgramMap.keys()) > 0:
+ if len(self.controlToProgramMap.keys()) > 0 and autoChangeFocus:
self.setFocus(self.getControl(self.controlToProgramMap.keys()[0]))
self.getControl(self.C_MAIN_LOADING).setVisible(False)
@@ -343,24 +356,33 @@ class TVGuide(xbmcgui.WindowXML):
-class TVGuideInfo(xbmcgui.WindowXMLDialog):
- C_INFO_IMAGE = 4000
+class PopupMenu(xbmcgui.WindowXMLDialog):
+ C_POPUP_PLAY = 4000
+ C_POPUP_CANCEL = 4001
def __new__(cls, program):
- return super(TVGuideInfo, cls).__new__(cls, 'script-tvguide-info.xml',
ADDON.getAddonInfo('path'))
+ return super(PopupMenu, cls).__new__(cls, 'script-tvguide-menu.xml',
ADDON.getAddonInfo('path'))
def __init__(self, program):
- def __init__(self, program): s).__new__(cls, 'script-tvguide-menu.xml',
ADDON.getAddonInfo('path')) ns', 'Default', 'media',
'tvguide-program-red-focus.png') u=p+ h9q
+ Ð2bÿ [q+ Å2bÿ PÄ2bÿ kpp+ 6
è è! è! Ð2bÿ Ð2bÿ x$9q
+ Æ2bÿ Rp+ pp+ Ð2bÿ `Rp
+ _Ð2bÿ Àq+ uZp+ q+ Øq+ ¨q+ zp+ x$9q
+ Æ2bÿ PÅ2bÿ kpp+ à! à! Ð2bÿ Ð2bÿ Hîq
+ `Ç2bÿ Rp+ pp+ Ð2bÿ `Rp
+ _Ð2bÿ PÐ2bÿ HÐ2bÿ 8{=p+ p Ð2bÿ uZp+ zp
+ `Ç2bÿ 0Æ2bÿ kpp
+ G H I J K M N O P
Ð2bÿ Ð2bÿ H¥ïp+ É2bÿ Rp+ pp+
Ð2bÿ 0q+ uZp+ 09q+ ÙÌp+ q+ Øq+ ¨q+ zp
+ H¥ïp+ É2bÿ @Ç2bÿ kpp+ 8¥ïp
+ É2bÿ pÇ2bÿ kpp+ (¥ïp
+ É2bÿ Ç2bÿ kpp+ ¥ïp
+ É2bÿ ÐÇ2bÿ kpp+ ¨q+ uZp+ ¨q
+ PÂ2bÿ (Íp+ eYp+ Øq+ pÈ2bÿ y(Íp+ eYp
+ q+ È2bÿ Z(Íp+ eYp+ ØÔÌp+ 09q+ ÙÌp+ q
+ Ø49q+ Øq+ ¨q+ zp+ 8{=p+ p
+ Ð2bÿ pkÌp+ PÊ2bÿ É2bÿ kpp
+ 5 6 7 8 : <