X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Flibnotizen.py;h=b18e5997999853a9d40fb1e43778ce4ec4a2f602;hb=8679b5e1510e859b696e6400731b0ba957dbdf4c;hp=82fa2a1a87a8a6f69c387915d09df0127fc651ad;hpb=b0ecd0417f8024719107d39e65c9723976069ddb;p=quicknote diff --git a/src/libnotizen.py b/src/libnotizen.py index 82fa2a1..b18e599 100644 --- a/src/libnotizen.py +++ b/src/libnotizen.py @@ -7,8 +7,6 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. - -@todo Add hiding of the history button on zoom """ import time @@ -17,6 +15,10 @@ import uuid import gobject import gtk +try: + import gtkspell +except ImportError: + gtkspell = None import simple_list @@ -27,6 +29,9 @@ except NameError: _ = lambda x: x +_moduleLogger = logging.getLogger("notizen") + + class Notizen(gtk.HBox): def __init__(self, db, topBox): @@ -38,10 +43,10 @@ class Notizen(gtk.HBox): self._categoryName = "" gtk.HBox.__init__(self, homogeneous = False, spacing = 0) - logging.info("libnotizen, init") + _moduleLogger.info("libnotizen, init") self._noteslist = simple_list.SimpleList() - self._noteslist.set_eventfunction__cursor_changed(self._update_noteslist) + self._noteslist.set_eventfunction_cursor_changed(self._update_noteslist) self._noteslist.set_size_request(250, -1) @@ -69,6 +74,10 @@ class Notizen(gtk.HBox): buf = self._noteBodyView.get_buffer() buf.set_text("") buf.connect("changed", self._on_note_changed, None) + if gtkspell is not None: + self._noteBodySpellChecker = gtkspell.Spell(self._noteBodyView) + else: + self._noteBodySpellChecker = None #self.textviewNotiz.set_size_request(-1, 50) self._noteScrollWindow = gtk.ScrolledWindow() @@ -81,17 +90,17 @@ class Notizen(gtk.HBox): vbox = gtk.VBox(homogeneous = False, spacing = 0) vbox.pack_start(frame, expand = True, fill = True, padding = 3) - hbox = gtk.HBox(homogeneous = False, spacing = 0) + self._historyBox = gtk.HBox(homogeneous = False, spacing = 0) - self._statusLabel = gtk.Label("Test") - self._statusLabel.set_alignment(0.0, 0.5) - hbox.pack_start(self._statusLabel, expand = True, fill = True, padding = 3) + self._historyStatusLabel = gtk.Label(_("No History")) + self._historyStatusLabel.set_alignment(0.0, 0.5) + self._historyBox.pack_start(self._historyStatusLabel, expand = True, fill = True, padding = 3) button = gtk.Button(_("History")) button.connect("clicked", self._on_show_history, None) - hbox.pack_start(button, expand = True, fill = True, padding = 3) + self._historyBox.pack_start(button, expand = True, fill = True, padding = 3) - vbox.pack_start(hbox, expand = False, fill = True, padding = 3) + vbox.pack_start(self._historyBox, expand = False, fill = True, padding = 3) self.pack_start(vbox, expand = True, fill = True, padding = 3) @@ -106,30 +115,33 @@ class Notizen(gtk.HBox): self._noteScrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self._noteBodyView.set_wrap_mode(gtk.WRAP_NONE) - def _get_title(self, buf): - """ - @returns the title of the current note - """ - eol = buf.find("\n") - if -1 == eol: - eol = len(buf) - title = buf[:eol] - return title + def show_history_area(self, visible): + if visible: + self._historyBox.show() + else: + self._historyBox.hide() - def _on_note_changed(self, widget = None, data = None): - if self._pos == -1 or self.noteId == -1: - return + def load_notes(self, data = None): + _moduleLogger.info("load_notes params: pos:"+str(self._pos)+" noteid:"+str(self.noteId)) + self._noteslist.clear_items() + self._noteslist.append_item(_("New Note..."), "new") - buf = self._noteBodyView.get_buffer().get_text(self._noteBodyView.get_buffer().get_start_iter(), self._noteBodyView.get_buffer().get_end_iter()) + self._categoryName = self._topBox.get_category() + search = self._topBox.get_search_pattern() + notes = self._db.searchNotes(search, self._categoryName) - title = self._get_title(buf) - value, key = self._noteslist.get_item(self._pos) + if notes is not None: + for note in notes: + noteid, category, noteText = note + title = self._get_title(noteText) + self._noteslist.append_item(title, noteid) - if value != title: - self._noteslist.change_item(self._pos, title, self.noteId) + self.noteId = -1 + self._pos = -1 + self._noteBodyView.get_buffer().set_text("") def save_note(self, widget = None, data = None, data2 = None): - logging.info("save_note params: pos:"+str(self._pos)+" noteid:"+str(self.noteId)) + _moduleLogger.info("save_note params: pos:"+str(self._pos)+" noteid:"+str(self.noteId)) #print "params:", data, data2 buf = self._noteBodyView.get_buffer().get_text(self._noteBodyView.get_buffer().get_start_iter(), self._noteBodyView.get_buffer().get_end_iter()) if buf is None or len(buf) == 0: @@ -138,18 +150,28 @@ class Notizen(gtk.HBox): if buf == self._noteBody: return - logging.info("Saving note: "+buf) + _moduleLogger.info("Saving note: "+buf) if self._pos == -1 or self.noteId == -1: self._pos = -1 self.noteId = str(uuid.uuid4()) - self._db.save_note(self.noteId, buf, self._categoryName) + self._db.saveNote(self.noteId, buf, self._categoryName) self._noteslist.append_item(self._get_title(buf), self.noteId) self._pos = self._noteslist.select_last_item() else: - self._db.save_note(self.noteId, buf, self._categoryName) + self._db.saveNote(self.noteId, buf, self._categoryName) self._topBox.define_this_category() + def _get_title(self, buf): + """ + @returns the title of the current note + """ + eol = buf.find("\n") + if -1 == eol: + eol = len(buf) + title = buf[:eol] + return title + def _set_focus(self): self._noteBodyView.grab_focus() return False @@ -170,7 +192,7 @@ class Notizen(gtk.HBox): if key == "new" or data == "new": #both methods supported click add note or new note (first one disabled) self.noteId = str(uuid.uuid4()) - self._db.save_note(self.noteId, "", self._categoryName) + self._db.saveNote(self.noteId, "", self._categoryName) self._pos = -1 self._noteslist.append_item("", self.noteId) self._noteBodyView.get_buffer().set_text("") @@ -178,12 +200,24 @@ class Notizen(gtk.HBox): else: self._pos = pos self.noteId, pcdatum, self._categoryName, self._noteBody = self._db.loadNote(key) - self._statusLabel.set_text(time.strftime(_("Last change: %d.%m.%y %H:%M"), time.localtime(pcdatum))) + self._historyStatusLabel.set_text(time.strftime(_("Last change: %d.%m.%y %H:%M"), time.localtime(pcdatum))) buf = self._noteBodyView.get_buffer() buf.set_text(self._noteBody) gobject.timeout_add(200, self._set_focus) + def _on_note_changed(self, widget = None, data = None): + if self._pos == -1 or self.noteId == -1: + return + + buf = self._noteBodyView.get_buffer().get_text(self._noteBodyView.get_buffer().get_start_iter(), self._noteBodyView.get_buffer().get_end_iter()) + + title = self._get_title(buf) + value, key = self._noteslist.get_item(self._pos) + + if value != title: + self._noteslist.change_item(self._pos, title, self.noteId) + def _on_add_note(self, widget = None, data = None): self._update_noteslist("new") @@ -201,25 +235,6 @@ class Notizen(gtk.HBox): self._pos = -1 self._noteBodyView.get_buffer().set_text("") - def load_notes(self, data = None): - logging.info("load_notes params: pos:"+str(self._pos)+" noteid:"+str(self.noteId)) - self._noteslist.clear_items() - self._noteslist.append_item(_("new Note"), "new") - - self._categoryName = self._topBox.get_category() - search = self._topBox.get_search_pattern() - notes = self._db.searchNotes(search, self._categoryName) - - if notes is not None: - for note in notes: - noteid, category, noteText = note - title = self._get_title(noteText) - self._noteslist.append_item(title, noteid) - - self.noteId = -1 - self._pos = -1 - self._noteBodyView.get_buffer().set_text("") - def _on_show_history(self, widget = None, data = None, label = None): if self.noteId == -1: mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, _("No note selected.")) @@ -249,7 +264,7 @@ class Notizen(gtk.HBox): data = dialog.get_selected_row() if data is not None: self._db.speichereSQL(data[2], data[3].split(" <> "), rowid = self.noteId) - logging.info("loading History") + _moduleLogger.info("loading History") self._update_noteslist() dialog.destroy()