From 0fe9c60b66890d5bb049e7a010f6328df4d51fdc Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Sat, 26 Apr 2008 22:45:22 +0100 Subject: [PATCH] Inital commit --- mythview/bbc1.jpg | Bin 0 -> 2684 bytes mythview/mythconnector.pyc | Bin 0 -> 1403 bytes mythview/mythicon.py | 48 +++++++++++++++++++ mythview/mythicon.pyc | Bin 0 -> 1882 bytes mythview/mythtv.py | 5 ++ mythview/mythview.glade | 92 +++++++++++++++++++++++++++++++++++++ mythview/mythview.py | 66 ++++++++++++++++++++++++++ mythview/sql.txt | 7 +++ 8 files changed, 218 insertions(+) create mode 100644 mythview/bbc1.jpg create mode 100644 mythview/mythconnector.pyc create mode 100644 mythview/mythicon.py create mode 100644 mythview/mythicon.pyc create mode 100644 mythview/mythtv.py create mode 100644 mythview/mythview.glade create mode 100755 mythview/mythview.py create mode 100644 mythview/sql.txt diff --git a/mythview/bbc1.jpg b/mythview/bbc1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b54b9f84b7a01cc7958c253f11f16debaaeda5b GIT binary patch literal 2684 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 G&FFvHX7vXE literal 0 HcmV?d00001 diff --git a/mythview/mythicon.py b/mythview/mythicon.py new file mode 100644 index 0000000..5f2deae --- /dev/null +++ b/mythview/mythicon.py @@ -0,0 +1,48 @@ +import sys +import os.path + +try: + import gtk +except: + print "GTK/GDK binding not found, exiting..." + sys.exit(1) + +from urllib import urlopen +from MythTV import * + +class MythIcon: + + def __init__(self, id, h, w): + + self.loaded = False + mythtv = MythTV() + pixbufload = gtk.gdk.PixbufLoader() + + if os.path.isfile("/tmp/mythtv/%d.jpg" % id): + # File has been cached before, reload from cache + urlstr = 'file:///tmp/mythtv/%d.jpg' % id + else: + urlstr = 'http://%s:%d/Myth/GetChannelIcon?ChanId=%s' % (mythtv.master_host, mythtv.master_port + 1, id) + + url = urlopen(urlstr) + for data in url: + pixbufload.write(data) + if pixbufload.get_pixbuf() != None: + self.pixbuf = pixbufload.get_pixbuf() + self.loaded = True + pixbufload.close() + + if os.path.exists('/tmp/mythtv') == False: + os.mkdir('/tmp/mythtv') + self.save('/tmp/mythtv/%d.jpg' % id, "jpeg", {}) + + if h or w: + self.resize(h,w) + + def resize(self, h, w): + if self.loaded: + self.pixbuf = self.pixbuf.scale_simple(w,h,gtk.gdk.INTERP_BILINEAR) + + def save(self, filename, type, opt): + if filename and self.loaded: + self.pixbuf.save(filename, type, opt) diff --git a/mythview/mythicon.pyc b/mythview/mythicon.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cd258545070f6e0503a57078ed62adbc5117b7ad GIT binary patch literal 1882 zcmZuyZEqVz5T3pBOPn@IgF`|Z5dy_v73xFcTP0LzTGFVkRb3+rkz_awBUjTi5>4*FMJex^*n3i&G88riyR>*O0`7s=jX7gI&+NK3wqLOaot9ShdjuO>PP zDQ}XRix}lPp&-g{%pkMw6F#nHAU6qxfg=QU5>UQcD(=suTulWtcIze<6mW88FPA$gG>7tt7%@n=y>cTS39w+ZpUrsi=J{g3t`v_tO; zXj|@aOGjMRXwUfFVK2)}$`yXX{J#F7<)ky*o&P%WT)C6N9JfCMgE|rY+)JGixijg& z*C0yso;F%oc5(2Fuq9L!ndsP$%C8>zyV$?67e}XqSA1>a7a=G_z;=9qZSKTD(L=E8 zz&egnRJQbk#&v$;8Sc2}yqP3JT)Mq4@`?AidRzeDnpoC7-;-$0C)OK*aBO^1!jKc) zJTv0^mh511YUEZw&5;8}hRJf?iEup9c2Xv$cV=XohCgK$4%B3otC z24pdbGMWezGi)(J2z6y-7D?j`n}X7&W?-Jl*y2^@JkePzC7dJ z?;bpl-y~1>U+s6F{}i_wSDDCp4&SFL{(`ligYXbI#!qTd$%Dk3c|Z|1csKGdZ=%WX zmt4qiGBmT1#K3+K4A)DN%dMI9#-;=_k1XEi1MJ9O7Dl=+FT6aAqX{52EC{ULU~ z-NBk+UsY|kJgX+VOA=|@BpK)W6zNOi2RI-xi|h9Wg)1|{by#An+`F})vDK(ZRRo^9 zbTTlx>+s~oJgM;lh(y7^A=1d0q0}D5P1drRn2id$_#57eg0GbZM2lS+p}>%-c)|+D U4;xxB2-T7bRaLD9OR66H3jnW0E&u=k literal 0 HcmV?d00001 diff --git a/mythview/mythtv.py b/mythview/mythtv.py new file mode 100644 index 0000000..cd3c697 --- /dev/null +++ b/mythview/mythtv.py @@ -0,0 +1,5 @@ +# MythTV Interface module + +class MythConnector: + + diff --git a/mythview/mythview.glade b/mythview/mythview.glade new file mode 100644 index 0000000..6143ef2 --- /dev/null +++ b/mythview/mythview.glade @@ -0,0 +1,92 @@ + + + + + + Myth View + 500 + 500 + + + True + + + True + + + True + Connect + gtk-connect + + + False + + + + + True + Refresh + gtk-refresh + + + False + + + + + False + + + + + True + True + True + + + 1 + + + + + True + 2 + + + False + 2 + + + + + + + 5 + About Glade + False + GTK_WIN_POS_CENTER_ON_PARENT + GDK_WINDOW_TYPE_HINT_DIALOG + False + Myth View + 0.1 + + + True + 2 + + + + + + True + GTK_BUTTONBOX_END + + + False + GTK_PACK_END + + + + + + diff --git a/mythview/mythview.py b/mythview/mythview.py new file mode 100755 index 0000000..d29916a --- /dev/null +++ b/mythview/mythview.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# example base.py + +import sys +try: + import pygtk + pygtk.require("2.0") +except: + pass +try: + import gtk + import gtk.glade +except: + sys.exit(1) + +from mythicon import MythIcon + +class MythViewUI: + def __init__(self): + + #Set the Glade file + self.gladefile = "mythview.glade" + self.wTree = gtk.glade.XML(self.gladefile) + + #Get the Main Window, and connect the "destroy" event + self.window = self.wTree.get_widget("MainWindow") + if (self.window): + self.window.connect("destroy", gtk.main_quit) + + self.channelStore = gtk.ListStore(int, gtk.gdk.Pixbuf, str) + + # Setup the TreeView + def addTreeColumn(tree, title, ctype, datafunc, visible,size): + column = gtk.TreeViewColumn(title, ctype) + if datafunc: column.set_cell_data_func(ctype, datafunc) + column.set_resizable(False) + column.set_expand(True) + column.set_visible(visible) + #if size: + # column.set_width(size) + tree.append_column(column) + + self.channelTree = self.wTree.get_widget("ChannelView") + addTreeColumn(self.channelTree, "Channel", gtk.CellRendererText(), None, False,64) + addTreeColumn(self.channelTree, "Icon", gtk.CellRendererPixbuf(), self.FillChanIcon, True, 0) + addTreeColumn(self.channelTree, "Now", gtk.CellRendererText(), None, True, 0) + + # Test Data + self.channelStore.append([1,MythIcon(1126,64,64).pixbuf,"test 1"]) + self.channelStore.append([2,None,"test 2"]) + + self.channelTree.set_model(self.channelStore) + + self.window.show() + + def FillChanIcon(self, column, cell, model, iter): + cell.set_property('pixbuf', model.get_value(iter, 1) ) + return + + def main(self): + gtk.main() + +print __name__ +if __name__ == "__main__": + base = MythViewUI() + base.main() diff --git a/mythview/sql.txt b/mythview/sql.txt new file mode 100644 index 0000000..f55aa85 --- /dev/null +++ b/mythview/sql.txt @@ -0,0 +1,7 @@ +SELECT channel.chanid, cast(channel.channum as signed) as channum, channel.name, program.title, time_to_sec(timediff(time(program.endtime), time(now()) )) as timetoend +FROM channel, program +WHERE program.chanid = channel.chanid +AND program.starttime <= NOW( ) +AND program.endtime >= NOW( ) +AND channum <> 0 +ORDER BY channum