From: Neil Brown Date: Thu, 28 Aug 2008 10:04:42 +0000 (+1000) Subject: Enable renaming of pages. X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=0d12a2ad8bd6b092c8ed171e3ac8ffdd86368476;p=scribble.git Enable renaming of pages. If you click the page name, the current text is used as the name for the page. --- diff --git a/scribble.py b/scribble.py index 2707b23..f1a7979 100755 --- a/scribble.py +++ b/scribble.py @@ -685,7 +685,7 @@ class ScribblePad: delete = gtk.Button("-") ; delete.show() clear = gtk.Button("C") ; clear.show() text = gtk.ToggleButton("T") ; text.show(); text.set_sensitive(False) - name = gtk.Label("1.2.3.4.5") ; name.show() + name = gtk.Button("1.2.3.4.5") ; name.show() bar.add(back) bar.add(fore) @@ -707,6 +707,7 @@ class ScribblePad: delete.connect("clicked", self.delete) clear.connect("clicked", self.clear) text.connect("toggled", self.text_change) + name.connect("clicked", self.setname) self.name = name self.page = page self.line = None @@ -908,7 +909,7 @@ class ScribblePad: def refresh(self, area, ev): self.redraw() def redraw(self): - self.name.set_text(self.names[self.pagenum]) + self.name.set_label(self.names[self.pagenum]) self.page.window.draw_rectangle(self.bg, True, 0, 0, 480,640) for l in self.lines: @@ -984,7 +985,15 @@ class ScribblePad: # don't add after a blank page return self.save_page() - newname = self.names[self.pagenum] + newname = self.choose_unique(self.names[self.pagenum]) + + self.names = self.names[0:self.pagenum+1] + [ newname ] + \ + self.names[self.pagenum+1:] + self.pagenum += 1; + self.lines = [] + self.redraw() + return + def choose_unique(self, newname): while newname in self.pages: new2 = inc_name(newname) if new2 not in self.pages: @@ -993,13 +1002,7 @@ class ScribblePad: newname = newname + ".1" else: newname = newname + ".0.1" - - self.names = self.names[0:self.pagenum+1] + [ newname ] + \ - self.names[self.pagenum+1:] - self.pagenum += 1; - self.lines = [] - self.redraw() - return + return newname def delete(self,b): self.flush_text() if len(self.names) <= 1: @@ -1017,6 +1020,27 @@ class ScribblePad: self.redraw() return + def rename(self, newname): + # Rename current page and rename the file + # Maybe we should resort the name list, but then we need to update + # pagenum which is awkward. + if self.names[self.pagenum] == newname: + return + newname = self.choose_unique(newname) + oldpath = self.page_dir + "/" + self.names[self.pagenum] + newpath = self.page_dir + "/" + newname + try : + os.rename(oldpath, newpath) + self.names[self.pagenum] = newname + self.name.set_label(self.names[self.pagenum]) + except: + pass + + def setname(self,b): + if self.textstr: + if len(self.textstr) > 0: + self.rename(self.textstr) + def clear(self,b): while len(self.lines) > 0: self.hist.append(self.lines.pop())