From 6dd1fe470dace49dab35835888664942376f8424 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Mon, 01 Feb 2010 18:01:16 +0000 Subject: portfolio mostly working now. --- diff --git a/tacanvas.py b/tacanvas.py index 759434e..91a7b0c 100644 --- a/tacanvas.py +++ b/tacanvas.py @@ -274,6 +274,7 @@ class TurtleGraphics: try: fd.set_size(int(size*self.tw.coord_scale)*pango.SCALE) except: + print "set size (%d) failed" % (int(size*self.tw.coord_scale)) pass if type(label) == str or type(label) == unicode: pl = self.tw.window.create_pango_layout(label.replace("\0"," ")) diff --git a/talogo.py b/talogo.py index bee7d9c..d48cfe5 100644 --- a/talogo.py +++ b/talogo.py @@ -320,7 +320,7 @@ class LogoCode: self.defprim('forever', 1, self.prim_forever, True) self.defprim('if', 2, self.prim_if, True) self.defprim('ifelse', 3, self.prim_ifelse, True) - self.defprim('stopstack', 0, self.prim_stopstack, True) + self.defprim('stopstack', 0, self.prim_stopstack) # blocks primitives self.defprim('stack1', 0, self.prim_stack1, True) @@ -354,7 +354,7 @@ class LogoCode: self.defprim('sound', 1, lambda self,x: self.play_sound(x)) self.defprim('video', 1, lambda self,x: self.play_movie(x)) self.defprim('t1x2', 3, - lambda self,x,y,z: self.show_template1z2(x, y, z)) + lambda self,x,y,z: self.show_template1x2(x, y, z)) self.defprim('t2x2', 5, lambda self,x,y,z,a,b: self.show_template2x2(x, y, z, a, b)) self.defprim('hideblocks', 0, lambda self: self.hideblocks()) @@ -378,9 +378,9 @@ class LogoCode: self.gplay = None self.ag = None self.nobox = "" - self.title_height = int((self.tw.canvas.height/30)*self.tw.scale) - self.body_height = int((self.tw.canvas.height/60)*self.tw.scale) - self.bullet_height = int((self.tw.canvas.height/45)*self.tw.scale) + self.title_height = int((self.tw.canvas.height/20)*self.tw.scale) + self.body_height = int((self.tw.canvas.height/40)*self.tw.scale) + self.bullet_height = int((self.tw.canvas.height/30)*self.tw.scale) self.scale = 33 @@ -549,8 +549,13 @@ class LogoCode: self.icall(self.cfun.fcn, *self.arglist) yield True result = None - else: - result = self.cfun.fcn(self, *self.arglist) + else: + # TODO: find out why stopstack args are mismatched + if token.name == 'stopstack': + print "%s: %d" % (token.name, len(self.arglist)) + result = self.cfun.fcn() + else: + result = self.cfun.fcn(self, *self.arglist) self.cfun, self.arglist = oldcfun, oldarglist if self.arglist is not None and result == None: raise logoerror("%s didn't output to %s (arglist %s, result %s)" % \ @@ -652,7 +657,7 @@ class LogoCode: self.ireturn() yield True - def prim_ifelse(self, bool, list1,list2): + def prim_ifelse(self, bool, list1, list2): if bool: self.ijmp(self.evline, list1[:]) yield True @@ -783,7 +788,7 @@ class LogoCode: if self.tw.running_sugar(): try: dsobject = datastore.get(media[6:]) - text = dsobject.metadata['description'] + text = str(dsobject.metadata['description']) dsobject.destroy() except: print "no description in %s" % (media[6:]) @@ -799,7 +804,7 @@ class LogoCode: self.tw.canvas.draw_text(text, int(x), int(y), self.body_height, int(w)) - def draw_title(self, title,x,y): + def draw_title(self, title, x, y): self.tw.canvas.draw_text(title,int(x),int(y),self.title_height, self.tw.canvas.width-x) @@ -817,18 +822,18 @@ class LogoCode: # calculate and set scale for media blocks myscale = 45 * (self.tw.canvas.height - self.title_height*2) \ / self.tw.canvas.height - set_scale(self,myscale) + self.set_scale(myscale) # set body text size self.tw.canvas.settextsize(self.body_height) # render media object # leave some space below the title y -= int(self.title_height*2*self.tw.lead) self.tw.canvas.setxy(x, y) - self.show( media) + self.show(media) if self.tw.running_sugar(): x = 0 self.tw.canvas.setxy(x, y) - self.show( media.replace("media_","descr_")) + self.show(media.replace("media_","descr_")) # restore text size self.tw.canvas.settextsize(save_text_size) @@ -846,24 +851,24 @@ class LogoCode: # calculate and set scale for media blocks myscale = 45 * (self.tw.canvas.height - self.title_height*2)/\ self.tw.canvas.height - self.set_scale( myscale) + self.set_scale(myscale) # set body text size self.tw.canvas.settextsize(self.body_height) # render four quadrents # leave some space below the title y -= int(self.title_height*2*self.tw.lead) self.tw.canvas.setxy(x, y) - self.show( media1) + self.show(media1) x = 0 self.tw.canvas.setxy(x, y) - self.show( media2) + self.show(media2) y = -self.title_height if self.tw.running_sugar(): self.tw.canvas.setxy(x, y) - self.show( media2.replace("media_","descr_")) + self.show(media2.replace("media_","descr_")) x = -(self.tw.canvas.width/2)+xo self.tw.canvas.setxy(x, y) - self.show( media1.replace("media_","descr_")) + self.show(media1.replace("media_","descr_")) # restore text size self.tw.canvas.settextsize(save_text_size) @@ -884,14 +889,14 @@ class LogoCode: y -= int(self.title_height*2*self.tw.lead) for s in sarray: self.tw.canvas.setxy(x, y) - self.show( s) + self.show(s) y -= int(self.bullet_height*2*self.tw.lead) # restore text size self.tw.canvas.settextsize(save_text_size) # title, two images (vertical), two desciptions def show_template1x2(self, title, media1, media2): - w,h,xo,yo,dx,dy = self.calc_position('t1x2') + w,h,xo,yo,dx,dy = calc_position(self.tw, 't1x2') x = -(self.tw.canvas.width/2)+xo y = self.tw.canvas.height/2 self.tw.canvas.setxy(x, y) @@ -910,23 +915,23 @@ class LogoCode: # leave some space below the title y -= int(self.title_height*2*self.tw.lead) self.tw.canvas.setxy(x, y) - self.show( media1) + self.show(media1) if self.tw.running_sugar(): x = 0 self.tw.canvas.setxy(x, y) - self.show( media1.replace("media_","descr_")) + self.show(media1.replace("media_","descr_")) y = -self.title_height self.tw.canvas.setxy(x, y) - self.show( media2.replace("media_","descr_")) + self.show(media2.replace("media_","descr_")) x = -(self.tw.canvas.width/2)+xo self.tw.canvas.setxy(x, y) - self.show( media2) + self.show(media2) # restore text size self.tw.canvas.settextsize(save_text_size) # title and four images def show_template2x2(self, title, media1, media2, media3, media4): - w,h,xo,yo,dx,dy = self.calc_position('t2x2') + w,h,xo,yo,dx,dy = calc_position(self.tw, 't2x2') x = -(self.tw.canvas.width/2)+xo y = self.tw.canvas.height/2 self.tw.canvas.setxy(x, y) @@ -945,16 +950,16 @@ class LogoCode: # leave some space below the title y -= int(self.title_height*2*self.tw.lead) self.tw.canvas.setxy(x, y) - self.show( media1) + self.show(media1) x = 0 self.tw.canvas.setxy(x, y) - self.show( media2) + self.show(media2) y = -self.title_height self.tw.canvas.setxy(x, y) - self.show( media4) + self.show(media4) x = -(self.tw.canvas.width/2)+xo self.tw.canvas.setxy(x, y) - self.show( media3) + self.show(media3) # restore text size self.tw.canvas.settextsize(save_text_size) @@ -979,7 +984,7 @@ class LogoCode: # leave some space below the title y -= int(self.title_height*2*self.tw.lead) self.tw.canvas.setxy(x, y) - self.show( media1) + self.show(media1) # restore text size self.tw.canvas.settextsize(save_text_size) @@ -1072,7 +1077,11 @@ class LogoCode: try: while (millis()-starttime)<120: try: - self.step.next() + if self.step is not None: + self.step.next() + else: # TODO: where is doevalstep getting called with None? + print "step is None" + return False except StopIteration: self.tw.active_turtle.show() return False diff --git a/taproject.py b/taproject.py index 29495de..5227d97 100644 --- a/taproject.py +++ b/taproject.py @@ -207,14 +207,17 @@ def load_block(tw, b): blk.spr.set_image(tw.media_shapes[btype+'on'], 1, 37, 6) elif tw.running_sugar(): try: - dsobject = datastore.get(blk.values[0]) - if not movie_media_type(dsobject.file_path[-4:]): - pixbuf = get_pixbuf_from_journal(dsobject, 80, 60) - if pixbuf is not None: - blk.spr.set_image(pixbuf, 1, 17, 2) - dsobject.destroy() + if blk.values[0] != 'None': + dsobject = datastore.get(blk.values[0]) + if not movie_media_type(dsobject.file_path[-4:]): + pixbuf = get_pixbuf_from_journal(dsobject, 80, 60) + if pixbuf is not None: + blk.spr.set_image(pixbuf, 1, 17, 2) + else: + blk.spr.set_image(tw.media_shapes['journalon'], + 1, 37, 6) + dsobject.destroy() except: - blk.spr.set_image(tw.media_shapes['journalon'], 1, 37, 6) print "couldn't open dsobject (%s)" % (blk.values[0]) else: if not movie_media_type(blk.values[0][-4:]): -- cgit v0.9.1