~rick-rickspencer3/+junk/journal

« back to all changes in this revision

Viewing changes to bin/daily-journal

  • Committer: Rick Spencer
  • Date: 2010-06-15 03:48:30 UTC
  • Revision ID: rick.spencer@canonical.com-20100615034830-fevpofosz6utllhv
added cross date undo/redo stack

Show diffs side-by-side

added added

removed removed

Lines of Context:
247
247
                          "insert":self.buffer.get_property("cursor-position")
248
248
        })
249
249
 
250
 
        
 
250
    def _select_date(self, date):
 
251
            for i, r in enumerate(self.grid.rows):
 
252
                if r["Date"] == date:
 
253
                    selection = self.grid.get_selection()
 
254
                    selection.unselect_all()
 
255
                    selection.select_path(i)
 
256
                    break
 
257
            self.change_note(self, self.grid.selected_rows)
 
258
 
251
259
    def undo(self, widget, data=None):
252
260
        if len(self.undos) == 0:
253
261
            return
254
262
 
255
263
        self.buffer.disconnect(self.delete_event)
256
264
        self.buffer.disconnect(self.insert_event)
 
265
 
 
266
        undo = self.undos[-1]
 
267
        if undo["Date"] != self.current_row["Date"]:
 
268
            self._select_date(undo["Date"])
 
269
 
257
270
        start_iter = self.buffer.get_iter_at_offset(0)
258
271
        end_iter =  self.buffer.get_iter_at_offset(-1)
259
272
        stri = self.buffer.get_text(start_iter,end_iter)
260
 
 
261
273
        self.redos.append({"Date":self.current_row["Date"],
262
274
                          "Text":stri,
263
275
                          "insert":self.buffer.get_property("cursor-position")
264
276
        })
265
277
 
266
 
        undo = self.undos[-1]
267
278
        self.buffer.set_text(undo["Text"])
268
279
        insert_iter = self.buffer.get_iter_at_offset(undo["insert"])
269
280
        self.buffer.place_cursor(insert_iter)
 
281
 
270
282
        del(self.undos[-1])
271
283
 
272
284
        self.insert_event = self.buffer.connect("insert-text",self.on_insert)
280
292
        self.buffer.disconnect(self.delete_event)
281
293
        self.buffer.disconnect(self.insert_event)
282
294
 
283
 
        start_iter = self.buffer.get_iter_at_offset(0)
284
 
        end_iter =  self.buffer.get_iter_at_offset(-1)
285
 
        stri = self.buffer.get_text(start_iter,end_iter)
286
 
        self.undos.append({"Date":self.current_row["Date"],
287
 
                          "Text":stri,
288
 
                          "insert":self.buffer.get_property("cursor-position")
289
 
        })
290
 
 
291
295
        redo = self.redos[-1]
292
 
        del(self.redos[-1])
 
296
        if redo["Date"] != self.current_row["Date"]:
 
297
            self._select_date(redo["Date"])
 
298
 
 
299
        start_iter = self.buffer.get_iter_at_offset(0)
 
300
        end_iter =  self.buffer.get_iter_at_offset(-1)
 
301
        stri = self.buffer.get_text(start_iter,end_iter)
 
302
 
 
303
        self.undos.append({"Date":self.current_row["Date"],
 
304
                          "Text":stri,
 
305
                          "insert":self.buffer.get_property("cursor-position")
 
306
        })
 
307
 
293
308
        self.buffer.set_text(redo["Text"])
294
309
        insert_iter = self.buffer.get_iter_at_offset(redo["insert"])
295
310
        self.buffer.place_cursor(insert_iter)
 
311
 
 
312
        del(self.redos[-1])
296
313
        
297
314
        self.insert_event = self.buffer.connect("insert-text",self.on_insert)
298
315
        self.delete_event = self.buffer.connect("delete-range",self.on_delete)
 
316
 
299
317
        self.highlight()
300
318
 
301
319
    def copy(self, widget, data=None):