renamed files, added imagedir variable
authormece <mece@mariehamn.(none)>
Wed, 27 Jan 2010 14:09:42 +0000 (16:09 +0200)
committermece <mece@mariehamn.(none)>
Wed, 27 Jan 2010 14:09:42 +0000 (16:09 +0200)
comic_widget.desktop [deleted file]
comic_widget.py [deleted file]

diff --git a/comic_widget.desktop b/comic_widget.desktop
deleted file mode 100644 (file)
index fc41d4b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[Desktop Entry]
-Name=Comic Widget
-Comment=Simple Comic widget
-Type=python
-X-Path=comic_widget.py
diff --git a/comic_widget.py b/comic_widget.py
deleted file mode 100644 (file)
index a253b72..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-import hildon
-import hildondesktop
-import gtk
-import csv
-import urllib2
-import urllib
-import string
-import os
-import osso
-
-# constants. dbfile is the location of the csv
-# comiccache is the location of the images
-dbfile = "/home/user/.comicdb.csv"
-comiccache = "/home/user/MyDocs/comics/"
-comics = {"xkcd":{"name":"xkcd","link":"http://xkcd.org/","start":666,"dbfile":"/home/user/.comicdb.xkcd.csv"},
-               "sinfest":{"name":"Sinfest","link":"http://sinfest.com/","start":3400,"dbfile":"/home/user/.comicdb.sinfest.csv"}}
-
-# handling of the comics
-class ComicDb():
-       def __init__(self, comic):
-               #if no db, start from this comic id.
-               self.comic = comic
-               self.start = comics[self.comic]["start"]
-               self.dbfile = comics[self.comic]["dbfile"]
-
-               #if db file exist, read it
-               if os.path.isfile(self.dbfile) == True:
-                       dbf = open(self.dbfile, 'r')
-               # if not, create it.
-               else:
-                       dbf = open(self.dbfile, 'w')
-                       dbf.write('comic,id,link,url,filename,title\n')
-                       dbf.close()
-                       dbf = open(self.dbfile, 'r')
-                       self.fetch_latest_std(self.comic, self.start)
-
-               if not os.path.exists(comiccache + self.comic + "/"):
-                       os.makedirs(comiccache + self.comic + "/")
-               dbr = csv.DictReader(dbf)
-               self.db = []
-               for row in dbr:
-                       self.db.insert(0,row)
-               dbf.close()
-               self.currentcomic = 0
-
-       def get_comic(self):
-               print str(self.currentcomic)
-               if self.currentcomic < 0:
-                       self.refresh()
-                       self.currentcomic = 0
-               if  len(self.db) < (self.currentcomic + 1):
-                       self.currentcomic -= 1
-                       self.refresh()
-                       self.currentcomic = len(self.db) - 1
-                       
-               dbrow = self.db[self.currentcomic]
-               filename = comiccache + self.comic + "/" + dbrow['filename']
-               print filename + "\n"
-               
-               if os.path.isfile(filename):
-                       print "found, returning " + filename + "\n"
-                       return filename
-               else:
-                       #fetch file
-                       print filename + " not found\nretrieving " + dbrow['url'] + "\n"
-                       urllib.urlretrieve(dbrow['url'], filename)
-                       print "success\n"
-                       return filename
-
-       def get_current_row(self):
-               return self.db[self.currentcomic]               
-
-       def get_link(self):
-               print str(self.currentcomic)
-               if self.currentcomic < 0:
-                       self.refresh()
-                       self.currentcomic = 0
-               if  len(self.db) < (self.currentcomic + 1):
-                       self.currentcomic -= 1
-               return self.db[self.currentcomic]['link']
-
-
-
-       def insert_row(self, irow):
-               dbf = open(self.dbfile, 'a')
-               dbw = csv.writer(dbf)
-               dbw.writerow(irow)
-               dbf.close()
-
-       def insert_row_first(self, irow):
-               dbf = open(self.dbfile, 'w')
-               dbf.write('comic,id,link,url,filename,title\n')
-               dbw = csv.writer(dbf)
-               dbw.writerow(irow)
-               dbf.close()
-               dbf = open(self.dbfile, 'a')
-               dbw = csv.DictWriter(dbf, ['comic','id','link','url','filename','title'])
-               tmpdb = self.db
-               tmpdb.reverse()
-               for row in tmpdb:
-                       dbw.writerow(row)
-               dbf.close()
-
-       def refresh(self):
-               if len(self.db) < 1:
-                       self.fetch_latest_std(self.comic, self.start)
-               elif self.currentcomic == 0 or self.currentcomic < 0:
-                       self.fetch_latest_std(self.comic, self.db[0]['id'])
-               elif self.currentcomic == (len(self.db) - 1):
-                       self.fetch_earlier(self.comic, self.db[self.currentcomic]['id'])
-               dbf = open(self.dbfile, 'r')
-               dbr = csv.DictReader(dbf)
-               self.db = []
-               for row in dbr:
-                       self.db.insert(0,row)
-               dbf.close()
-
-       def fetch_earlier(self, comic, earliest):
-               number = int(earliest) - 1
-               if number < 0:
-                       return False
-               print "number is now: " + str(number) + "\n"
-               if comic == 'xkcd':
-                       link = "http://xkcd.org/" + str(number) + "/"
-               elif comic == 'sinfest':
-                       link = "http://www.sinfest.net/archive_page.php?comicID=" + str(number)
-               else:
-                       return False
-               print "link: " + link + "\n"
-               try:
-                       f = urllib2.urlopen(link)
-                       hcode = f.code
-               except:
-                       hcode = 404
-               print "got hcode = " + str(hcode) + "\n"
-               if (hcode != 200):
-                       return False
-               else:
-                       # Build db entry.
-                       # they look like: comic,id,link,url,filename,title
-                       # We already have comic, number/id and link
-                       
-                       if comic == 'xkcd':
-                               s = f.read()
-                               f.close()
-                               splt = string.split(s, "<h3>Image URL (for hotlinking/embedding): ", 1)
-                               splt2 = string.split(splt[1], "</h3>", 1)
-                               url = splt2[0]
-                               splt = string.split(splt[0], "<h1>", 1)
-                               splt = string.split(splt[1], "</h1>", 1)
-                               title = splt[0]
-
-                       elif comic == 'sinfest':
-                               s = f.read()
-                               f.close()
-                               splt = string.split(s, 'height="107"', 1)
-                               splt = string.split(splt[1], '<img src="', 1)
-                               splt = string.split(splt[1], '" alt="', 1)
-                               url = splt[0]
-                               if len(url) < 49:
-                                       print "Fake 404! Break break break!"
-                                       return False
-                               splt = string.split(splt[1], '" border="0" />', 1)
-                               title = splt[0]
-                       splt2 = string.rsplit(url, "/", 1)
-                       filename = splt2[1]                             
-                       irow = [comic,number,link,url,filename,title]
-                       print "got irow: "
-                       print irow
-                       print "\ninserting first...\n"
-                       self.insert_row_first(irow)
-
-
-       def fetch_latest_std(self, comic, latest):
-               
-               print "fetching new after " + str(comic) + " " + str(latest) + "\n"
-               hcode = 200
-               number = int(latest) + 1
-               while hcode == 200:
-                       print "number is now: " + str(number) + "\n"
-                       if comic == 'xkcd':
-                               link = "http://xkcd.org/" + str(number) + "/"
-                       elif comic == 'sinfest':
-                               link = "http://www.sinfest.net/archive_page.php?comicID=" + str(number)
-                       else:
-                               break
-                       print "link: " + link + "\n"
-                       try:
-                               f = urllib2.urlopen(link)
-                               hcode = f.code
-                       except:
-                               hcode = 404
-                       print "got hcode = " + str(hcode) + "\n"
-                       if (hcode != 200):
-                               break
-                       else:
-                               # Build db entry.
-                               # they look like: comic,id,link,url,filename,title
-                               # We already have comic, number/id and link
-                               
-                               if comic == 'xkcd':
-                                       s = f.read()
-                                       f.close()
-                                       splt = string.split(s, "<h3>Image URL (for hotlinking/embedding): ", 1)
-                                       splt2 = string.split(splt[1], "</h3>", 1)
-                                       url = splt2[0]
-                                       splt = string.split(splt[0], "<h1>", 1)
-                                       splt = string.split(splt[1], "</h1>", 1)
-                                       title = splt[0]
-
-                               elif comic == 'sinfest':
-                                       s = f.read()
-                                       f.close()
-                                       splt = string.split(s, 'height="107"', 1)
-                                       splt = string.split(splt[1], '<img src="', 1)
-                                       splt = string.split(splt[1], '" alt="', 1)
-                                       url = splt[0]
-                                       if len(url) < 49:
-                                               print "Fake 404! Break break break!"
-                                               break
-                                       splt = string.split(splt[1], '" border="0" />', 1)
-                                       title = splt[0]
-
-                               splt2 = string.rsplit(url, "/", 1)
-                               filename = splt2[1]                                     
-                               irow = [comic,number,link,url,filename,title]
-                               print "got irow: "
-                               print irow
-                               print "\ninserting...\n"
-                               
-                               self.insert_row(irow)
-
-                       number += 1
-
-class ComicHomePlugin(hildondesktop.HomePluginItem):
-       def __init__(self):
-               hildondesktop.HomePluginItem.__init__(self)
-               self.osso_c = osso.Context("comic_widget", "0.0.1", False)
-               self.osso_rpc = osso.Rpc(self.osso_c)
-               self.keys = comics.keys()
-               self.keypointer = 1
-               self.db = ComicDb(self.keys[self.keypointer])
-               self.comicname = comics[self.keys[self.keypointer]]['name']
-               screen = self.get_screen()
-               colormap = screen.get_rgba_colormap()
-               self.set_colormap(colormap)
-               #setup internal area
-               self.set_size_request(480, 230)
-               self.imgvpos = 0;
-               self.vbox = gtk.VBox()
-               self.hbox = gtk.HBox()
-               self.label = gtk.Label(self.comicname + " " + str(self.db.db[self.db.currentcomic]['id']))
-               self.e_goweb = gtk.EventBox()
-               self.e_open = gtk.EventBox()
-               self.e_switch = gtk.EventBox()
-               self.e_next = gtk.EventBox()
-               self.e_prev = gtk.EventBox()
-               self.e_up = gtk.EventBox()
-               self.e_down = gtk.EventBox()
-               self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos)
-               self.comic_image.show()
-               self.next = gtk.image_new_from_file("/home/user/comic_widget/right.png")
-               self.prev = gtk.image_new_from_file("/home/user/comic_widget/left.png")
-               self.up = gtk.image_new_from_file("/home/user/comic_widget/up.png")
-               self.down = gtk.image_new_from_file("/home/user/comic_widget/down.png")
-               self.switch = gtk.image_new_from_file("/home/user/comic_widget/star.png")
-
-               self.e_goweb.add(self.label)
-               self.e_goweb.set_events(gtk.gdk.BUTTON_PRESS_MASK)
-               self.e_goweb.connect("button-press-event", self.view_comic)
-
-               self.e_open.add(self.comic_image)
-
-               self.e_switch.add(self.switch)
-               self.e_switch.set_events(gtk.gdk.BUTTON_PRESS_MASK)
-               self.e_switch.connect("button-press-event", self.switch_comic)
-
-
-               self.e_next.add(self.next)
-               self.e_next.set_events(gtk.gdk.BUTTON_PRESS_MASK)
-               self.e_next.connect("button-press-event", self.get_next)
-
-               self.e_prev.add(self.prev)
-               self.e_prev.set_events(gtk.gdk.BUTTON_PRESS_MASK)
-               self.e_prev.connect("button_press_event", self.get_prev)
-
-               self.e_up.add(self.up)
-               self.e_up.set_events(gtk.gdk.BUTTON_PRESS_MASK)
-               self.e_up.connect("button-press-event", self.scroll_up)
-
-               self.e_down.add(self.down)
-               self.e_down.set_events(gtk.gdk.BUTTON_PRESS_MASK)
-               self.e_down.connect("button-press-event", self.scroll_down)
-
-               self.vbox.pack_start(self.e_open,False,False,0)
-               self.vbox.pack_end(self.hbox,False,False,0)
-
-               self.hbox.pack_start(self.e_switch,False,False,5)
-               self.hbox.pack_start(self.e_goweb,False,False,5)
-               self.hbox.pack_end(self.e_next,False,False,5)
-               self.hbox.pack_end(self.e_down,False,False,5)
-               self.hbox.pack_end(self.e_up,False,False,5)
-               self.hbox.pack_end(self.e_prev,False,False,5)
-               self.vbox.show_all()
-               self.add(self.vbox)
-
-
-       def switch_comic(self, widget, event):
-               if not event.type == gtk.gdk.BUTTON_PRESS:
-                       return False
-               self.keypointer = (self.keypointer + 1) % 2
-               self.imgvpos = 0
-               self.db = []
-               print "switching to " + self.keys[self.keypointer]
-               self.comicname = comics[self.keys[self.keypointer]]['name']
-               self.db = ComicDb(self.keys[self.keypointer])
-               self.e_goweb.remove(self.label)
-               self.label = gtk.Label(self.comicname + " " + str(self.db.db[self.db.currentcomic]['id']))
-               self.e_goweb.add(self.label)
-               self.e_goweb.show_all()
-               self.e_open.remove(self.comic_image)
-               self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos)
-               self.e_open.add(self.comic_image)
-               self.e_open.show_all()          
-
-       def switch_rel(self, widget, event):
-               if not event.type == gtk.gdk.BUTTON_RELEASE:
-                       return False
-               widget.remove(self.switch)
-               self.switch = gtk.image_new_from_file("/home/user/comic_widget/star.png")
-               widget.add(self.switch)
-               widget.show_all()
-
-       def view_comic(self, widget, event):
-               if not event.type == gtk.gdk.BUTTON_PRESS:
-                       return False
-               link = self.db.get_link()
-               self.osso_rpc.rpc_run_with_defaults("osso_browser", "open_new_window", (link,))
-
-       def scroll_down(self, widget, event):
-               if not event.type == gtk.gdk.BUTTON_PRESS:
-                       return False
-               self.e_open.remove(self.comic_image)
-               self.imgvpos = self.imgvpos + 50
-               self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos)
-               self.e_open.add(self.comic_image)
-               self.e_open.show_all()
-
-       def scroll_up(self, widget, event):
-               if not event.type == gtk.gdk.BUTTON_PRESS:
-                       return False
-               self.e_open.remove(self.comic_image)
-               self.imgvpos = self.imgvpos - 50
-               if self.imgvpos < 0:
-                       self.imgvpos = 0
-               self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos)
-               self.e_open.add(self.comic_image)
-               self.e_open.show_all()
-
-       def get_next(self, widget, event):
-               if not event.type == gtk.gdk.BUTTON_PRESS:
-                       return False
-               self.db.currentcomic -= 1
-               self.imgvpos = 0
-               self.e_open.remove(self.comic_image)
-               self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos)
-               self.e_open.add(self.comic_image)
-               self.e_open.show_all()
-               self.e_goweb.remove(self.label)
-               self.label = gtk.Label(self.comicname + " " + str(self.db.db[self.db.currentcomic]['id']))
-               self.e_goweb.add(self.label)
-               self.e_goweb.show_all()
-                       
-       def get_prev(self, widget, event):
-               if not event.type == gtk.gdk.BUTTON_PRESS:
-                       return False
-               self.db.currentcomic += 1
-               self.imgvpos = 0
-               self.e_open.remove(self.comic_image)
-               self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos)
-               self.e_open.add(self.comic_image)
-               self.e_open.show_all()
-               self.e_goweb.remove(self.label)
-               self.label = gtk.Label(self.comicname + " " + str(self.db.db[self.db.currentcomic]['id']))
-               self.e_goweb.add(self.label)
-               self.e_goweb.show_all()
-
-       def get_resized_pixmap(self, filename, vpos):
-               pixbuf = gtk.gdk.pixbuf_new_from_file(filename)
-               parent_buf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, pixbuf.get_has_alpha(), 8, 478, 190)
-               parent_buf.fill(0x00000000)
-               retimg = gtk.Image()
-               # get correct width/height
-               new_width = 0
-               new_height = 1
-               new_width = 478
-               new_height = int((478.0 / pixbuf.get_width()) * pixbuf.get_height())
-               scaled_buf = pixbuf.scale_simple(new_width,new_height,gtk.gdk.INTERP_BILINEAR)
-
-               if scaled_buf.get_height() > 190:
-                       if scaled_buf.get_height() - (vpos + 190) < 0:
-                               vpos = scaled_buf.get_height() - 190
-                       scaled_buf.copy_area(0,vpos,478,190,parent_buf,0,0)
-
-               else:
-                       tmpy = 190 - scaled_buf.get_height()
-                       if tmpy > 0:
-                               tmpy = tmpy / 2
-
-                       scaled_buf.copy_area(0,vpos,478,scaled_buf.get_height(),parent_buf,0,tmpy)
-
-               retimg.set_from_pixbuf(parent_buf)
-               return retimg
-
-
-hd_plugin_type = ComicHomePlugin
-
-
-if __name__ == "__main__":
-       import gobject
-       gobject.type_register(hd_plugin_type)
-       obj = gobject.new(hd_plugin_type, plugin_id="plugin_id")
-       obj.show_all()
-       gtk.main()