# Quicknote -- a small sticky notes app for PyS60 using the topwindow module # # (c) 2/2008 Goetz Schwandtner # # see www.schwandtner.info import topwindow, graphics import appuifw, e32 class Quicknote(object): def __init__(self): self.dummyimg=graphics.Image.new((10,10)) ctmp=appuifw.Canvas() self.BORDER=10 self.MAXW=ctmp.size[0]-self.BORDER-50 self.MAXH=ctmp.size[1] self.tw=topwindow.TopWindow() self.running=False self.set(u"") self.show() def set(self,text): self.text=text self.update() def sum(self,seq): return(reduce(lambda x,y: x+y, seq)) def update(self): lines=self.wrap_all(self.text) l_w=[self.txw(t) for t in lines] l_h=[self.txh(t)+2 for t in lines] self.W=min(max(l_w)+self.BORDER,self.MAXW) self.H=self.sum(l_h)+self.BORDER self.tw.size=(self.W,self.H) self.buf=graphics.Image.new((self.W,self.H)) self.buf.clear(0xffff50) yp=self.BORDER//2 for l in lines: yp += self.txh(l)+2 self.buf.text((0,yp),l) self.buf.rectangle((self.W-8,self.H-8,self.W,self.H),outline=0) self.buf.line((self.W-8,self.H,self.W,self.H-8),outline=0) self.tw.add_image(self.buf,(0,0)) def show(self): self.tw.show() def hide(self): self.tw.hide() def menu_set(self): t=appuifw.query(u"Set Note", "text",self.text) if t: self.set(t) def run(self): self.running=True appuifw.app.menu=[(u"Set Note", self.menu_set),(u"Show",self.show),(u"Hide",self.hide),(u"about",self.about)] appuifw.app.exit_key_handler=self.stop while self.running: e32.ao_sleep(.5) def stop(self): self.hide() self.running=False def about(self): appuifw.note(u'Quicknote \n (c) 2008 Goetz Schwandtner\nschwandtner@googlemail.com') def txw(self,text): return (self.dummyimg.measure_text(text))[0][2] def txh(self,text): return -(self.dummyimg.measure_text(text))[0][1] def wrap_line(self,text): text=text.lstrip() op=len(text) np=text.find(" ") while np>0 and self.txw(text[:np])