]> git.neil.brown.name Git - scribble.git/commitdiff
Enable renaming of pages.
authorNeil Brown <neilb@notabene.brown>
Thu, 28 Aug 2008 10:04:42 +0000 (20:04 +1000)
committerNeil Brown <neilb@notabene.brown>
Thu, 28 Aug 2008 10:04:42 +0000 (20:04 +1000)
If you click the page name, the current text is used as the name for
the page.

scribble.py

index 2707b236d383746434d954fd5cd9e0da42cbb228..f1a797984a932f93d9dac4a82219cf717b24ced8 100755 (executable)
@@ -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())