X-Git-Url: http://git.maemo.org/git/?p=comic-widget;a=blobdiff_plain;f=src%2Fusr%2Flib%2Fhildon-desktop%2Fcomicwidget.py;h=03328d1fadc8b740c31ffe2fe5d9aaad8f9d36df;hp=df1d35f9a8c1e2e9258488ffb2c726bab1410592;hb=HEAD;hpb=e7835b2e2733b95c20ca7ba4fc7d1d7762c8676d diff --git a/src/usr/lib/hildon-desktop/comicwidget.py b/src/usr/lib/hildon-desktop/comicwidget.py index df1d35f..03328d1 100644 --- a/src/usr/lib/hildon-desktop/comicwidget.py +++ b/src/usr/lib/hildon-desktop/comicwidget.py @@ -18,13 +18,19 @@ socket.setdefaulttimeout(30) supports_alpha = False # LOGGING! -# sys.stdout = open('/home/user/.comic-widget/output_log.txt', 'a') -# sys.stderr = open('/home/user/.comic-widget/error_log.txt', 'a') +if not os.path.exists("/home/user/.comic-widget/"): + print "path not found: /home/user/.comic-widget/" + try: + os.makedirs("/home/user/.comic-widget/") + except: + print "logging failed on mkdir" +sys.stdout = open('/home/user/.comic-widget/output_log.txt', 'a', 0) +sys.stderr = open('/home/user/.comic-widget/error_log.txt', 'a', 0) # print "Start logging!" # constants. dbfile is the location of the csv # comiccache is the location of the images -APP_VERSION = "0.4.2" +APP_VERSION = "0.4.4" basedbdir = "/opt/comic-widget/db/" imagedir = "/opt/comic-widget/images/" @@ -40,7 +46,6 @@ comics = { "arlonjaniscomicscom":{"name":"Arlo and Janis","link":'http://comics.com/arlo&janis/',"start":"2010-02-01","dbfile":dbdir + "comicdb.arlonjanis.csv"}, "bccomicscom":{"name":"B.C.","link":"http://comics.com/bc/","start":"2010-02-01","dbfile":dbdir + "comicdb.bc.csv"}, "ballard_streetcomicscom":{"name":"Ballard Street","link":"http://comics.com/ballard_street/","start":"2010-02-01","dbfile":dbdir + "comicdb.ballardstreet.csv"}, - "babyblues":{"name":"Baby Blues","link":"http://www.babyblues.com/","start":"01/19/2010","dbfile":dbdir + "comicdb.babyblues.csv"}, "bencomicscom":{"name":"Ben","link":'http://comics.com/ben/',"start":"2010-02-01","dbfile":dbdir + "comicdb.ben.csv"}, "bettycomicscom":{"name":"Betty","link":"http://comics.com/betty/","start":"2010-02-01","dbfile":dbdir + "comicdb.betty.csv"}, "big_natecomicscom":{"name":"Big Nate","link":"http://comics.com/big_nate/","start":"2010-02-01","dbfile":dbdir + "comicdb.bignate.csv"}, @@ -141,6 +146,7 @@ comics = { "amazing_spidermanckdm":{"name":"The Amazing Spider-Man","link":'http://content.comicskingdom.net/Spiderman/',"start":"20100209","dbfile":dbdir + "comicdb.spiderman.csv"}, "apartment_3-gckdm":{"name":"Apartment 3-G","link":'http://content.comicskingdom.net/Apartment_3-G/',"start":"20100209","dbfile":dbdir + "comicdb.partment3g.csv"}, "arcticckdm":{"name":"Arctic Circle","link":'http://content.comicskingdom.net/Arctic/',"start":"20100209","dbfile":dbdir + "comicdb.arctic.csv"}, + "baby_bluesckdm":{"name":"Baby Blues","link":"http://content.comicskingdom.net/Baby_Blues/","start":"20100319","dbfile":dbdir + "comicdb.babybluesckdm.csv"}, "barney_googleckdm":{"name":"Barney Google and Snuffy Smith","link":'http://content.comicskingdom.net/Barney_Google/',"start":"20100209","dbfile":dbdir + "comicdb.barneygoogle.csv"}, "beetle_baileyckdm":{"name":"Beetle Bailey","link":'http://content.comicskingdom.net/Beetle_Bailey/',"start":"20100209","dbfile":dbdir + "comicdb.beetlebailey.csv"}, "better_halfckdm":{"name":"Better Half","link":'http://content.comicskingdom.net/Better_Half/',"start":"20100209","dbfile":dbdir + "comicdb.betterhalf.csv"}, @@ -201,6 +207,8 @@ comics = { "toddckdm":{"name":"Todd the Dinosaur","link":'http://content.comicskingdom.net/Todd/',"start":"20100209","dbfile":dbdir + "comicdb.todd.csv"}, "zippy_the_pinheadckdm":{"name":"Zippy the Pinhead","link":'http://content.comicskingdom.net/Zippy_the_Pinhead/',"start":"20100209","dbfile":dbdir + "comicdb.zippythepinhead.csv"}, "zitsckdm":{"name":"Zits","link":'http://content.comicskingdom.net/Zits/',"start":"20100209","dbfile":dbdir + "comicdb.zits.csv"}, + "viivijawagnerhesari":{"name":"Viivi ja Wagner","link":"http://www.hs.fi/viivijawagner/","start":"1135255013425","dbfile":dbdir + "comicdb.viivijawagner.csv"}, + "fingerporihesari":{"name":"Fingerpori","link":"http://www.hs.fi/fingerpori/","start":"1135255790645","dbfile":dbdir + "comicdb.fingerpori.csv"}, @@ -278,6 +286,7 @@ class ComicDb(): except: return 0 + def store_last(self, sid = 0): try: idf = open(self.dbfile + ".last", 'w') @@ -410,7 +419,7 @@ class ComicDb(): # fetch earlier def fetch_earlier(self, comic, earliest): print "fetch before, " + comic + " earliest" - if comic == "cyanide" or comic == "wulff" or comic == "babyblues" or comic[-9:] == "comicscom": + if comic == "cyanide" or comic == "wulff" or comic == "babyblues" or comic[-9:] == "comicscom" or comic[-6:] == "hesari": print "getting get_prev_id..." comicid = self.get_prev_id(comic,earliest) if not comicid: @@ -444,14 +453,14 @@ class ComicDb(): print "\ninserting...\n" self.insert_row_first([irow[0],irow[1],irow[2],irow[3],irow[4],irow[5]]) else: - print "No comic found at " + comicid + print "No comic found at " + str(comicid) def fetch_newer(self, comic, newest): - if comic == "cyanide" or comic == "wulff" or comic == "babyblues" or comic[-9:] == "comicscom": + if comic == "cyanide" or comic == "wulff" or comic == "babyblues" or comic[-9:] == "comicscom" or comic[-6:] == "hesari": comicid = self.get_next_id(comic,newest) if not comicid: print "already at last comic" @@ -644,7 +653,39 @@ class ComicDb(): s = f.read() f.close() return self.parse_comics_com(comic, s, 'next') - + elif comic[-6:] == "hesari": + realcomic = string.split( comic, 'hesari', 1) + linkname = realcomic[0] + link = comics[comic]['link'] + str(number) + print "link: " + link + try: + f = urllib2.urlopen(link) + hcode = f.code + except: + hcode = 404 + print "got hcode = " + str(hcode) + "\n" + if (hcode != 200): + return False + else: + print "checking next HS issue..." + s = f.read() + f.close() + # title: + vw = string.split(s, '
',1) + vw2=string.split(vw[1], '
', 1) + splt = string.split(vw3[0], 'Seuraava', 1) + if len(splt) < 2: + print "no 'next' found" + return False + else: + splt3=string.split(vw3[0], '',1) + vw2=string.split(vw[1], '
', 1) + splt = string.split(vw3[0], 'Edellinen', 1) + if len(splt) < 2: + print "no 'prev' found" + return False + else: + splt3=string.split(vw3[0], '',1) + splt4 = string.split(splt3[1], '

', 1) + splt5 = string.split(splt4[1], '

', 1) + title = splt5[0] + #print title + filename = str(number) + ".gif" + irow = [comic,number,link,url,filename,title] + return irow elif comic[-4:] == 'ckdm': url = link title = number[:4] + "-" + number[4:6] + "-" + number[6:8] @@ -1082,9 +1174,11 @@ class ComicHomePlugin(hildondesktop.HomePluginItem): self.e_goweb.add(self.label) self.e_goweb.set_events(gtk.gdk.BUTTON_RELEASE_MASK) - self.e_goweb.connect("button-release-event", self.view_comic) + self.e_goweb.connect("button-release-event", self.view_comic_web) self.e_open.add(self.comic_image) + self.e_open.set_events(gtk.gdk.BUTTON_PRESS_MASK) + self.e_open.connect("button-press-event", self.view_comic) # self.e_switch.add(self.switch) self.e_switch.set_events(gtk.gdk.BUTTON_PRESS_MASK|gtk.gdk.BUTTON_RELEASE_MASK|gtk.gdk.LEAVE_NOTIFY) @@ -1287,12 +1381,20 @@ class ComicHomePlugin(hildondesktop.HomePluginItem): self.draw(widget, "0") # no fancy cairo stuff here. simply launches url in browser. - def view_comic(self, widget, event): + def view_comic_web(self, widget, event): if not event.type == gtk.gdk.BUTTON_RELEASE: return False link = self.db.get_link() self.osso_rpc.rpc_run_with_defaults("osso_browser", "open_new_window", (link,)) + # simply launches image in browser. + def view_comic(self, widget, event): + if not event.type == gtk.gdk._2BUTTON_PRESS: + return False + #link = self.db.get_link() + link = 'file:///home/user/MyDocs/.comics/' + self.db.comic + '/' + self.db.db[self.db.currentcomic]['filename'] + self.osso_rpc.rpc_run_with_defaults("osso_browser", "open_new_window", (link,)) + # this function modifies the image to fit the widget and then returns it. @@ -1304,11 +1406,22 @@ class ComicHomePlugin(hildondesktop.HomePluginItem): height = int(self.sizes['height']) picwidth = width - 2 maxheight = height - 48 - + retimg = gtk.Image() + if os.path.isfile(filename) == False: + filename = "/opt/comic-widget/images/up0-48x48.png" + pixbuf = gtk.gdk.pixbuf_new_from_file(filename) + parent_buf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, pixbuf.get_has_alpha(), 8, width, maxheight) + parent_buf.fill(0x00000000) + tmpy = (maxheight / 2) - 24 + tmpx = (width / 2) - 24 + pixbuf.copy_area(0,0,48,48,parent_buf,int(tmpx),int(tmpy)) + retimg.set_from_pixbuf(parent_buf) + print retimg.get_pixel_size() + print "No image found, posting up arrow" + return retimg pixbuf = gtk.gdk.pixbuf_new_from_file(filename) parent_buf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, pixbuf.get_has_alpha(), 8, width, maxheight) parent_buf.fill(0xffffffff) - retimg = gtk.Image() # get correct width/height new_height = 1 new_width = picwidth @@ -1485,7 +1598,7 @@ class ComicHomePlugin(hildondesktop.HomePluginItem): dialog.set_name("Comic widget") dialog.set_version(APP_VERSION) dialog.set_copyright("Copyright 2010 Marcus Wikstrom") - dialog.set_authors(["Marcus Wikstrom \nLogo by Martin Wikstrom\n\nSpecial thanks to all the great python developers on t.m.o who share their code, and the helpful wizards on #maemo."]) + dialog.set_authors(["Marcus Wikstrom \nAdditional code by Lari Tuononen\nLogo by Martin Wikstrom\n\nSpecial thanks to all the great python developers on t.m.o,\n and the helpful wizards on #maemo."]) dialog.set_logo(gtk.gdk.pixbuf_new_from_file("/opt/comic-widget/images/icon2-64x64.png")) dialog.set_comments("Silly rabbit, tricks are for kids.") dialog.set_license("""This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License. .""") @@ -1578,8 +1691,8 @@ class ComicHomePlugin(hildondesktop.HomePluginItem): def get_size_settings(self): # defaults = {'width':480,'height':230} - # options: w 798 700 600 500 480 400 - # options: h 420 360 310 270 240 200 + # options: w 798 - 400 + # options: h 420 - 200 print "checking to see if config file is available" if os.path.isfile(sizefile) == True: print "found " + sizefile