1 #!/usr/bin/env python2.5
2 # -*- coding: utf-8 -*-
6 * Copyright (C) 2007 Christoph Würstle
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
29 class Notizen(gtk.HBox):
31 def getTitle(self,buf):
40 def noteChanged(self, widget=None, data=None):
41 if (self.pos==-1)or(self.noteid==-1):
43 buf=self.textviewNote.get_buffer().get_text(self.textviewNote.get_buffer().get_start_iter(),self.textviewNote.get_buffer().get_end_iter())
45 title=self.getTitle(buf)
46 value, key = self.noteslist.get_item(self.pos)
49 self.noteslist.change_item(self.pos,title,self.noteid)
53 def saveNote(self,widget=None,data=None,data2=None):
54 logging.info("saveNote params: pos:"+str(self.pos)+" noteid:"+str(self.noteid))
55 #print "params:",data,data2
56 buf=self.textviewNote.get_buffer().get_text(self.textviewNote.get_buffer().get_start_iter(),self.textviewNote.get_buffer().get_end_iter())
57 if (buf==None)or(len(buf)==0):
63 logging.info("Saving note: "+buf)
64 if (self.pos==-1)or(self.noteid==-1):
66 self.noteid=str(uuid.uuid4())
67 self.db.saveNote(self.noteid,buf,self.category)
68 self.noteslist.append_item(self.getTitle(buf), self.noteid)
69 self.pos=self.noteslist.select_last_item()
71 self.db.saveNote(self.noteid,buf,self.category)
73 self.topBox.defineThisCategory()
77 self.textviewNote.grab_focus()
80 def noteslist_changed(self,data=None,data2=None):
85 (pos, key, value) = self.noteslist.get_selection_data()
88 #print "(pos, key, value) =", self.noteslist.get_selection_data()
95 if (key=="new")or(data=="new"): #both methods supported click add note or new note (first one disabled)
96 self.noteid=str(uuid.uuid4())
97 self.db.saveNote(self.noteid,"",self.category)
99 self.noteslist.append_item("", self.noteid)
100 self.textviewNote.get_buffer().set_text("")
101 self.pos=self.noteslist.select_last_item()
104 self.noteid,pcdatum,self.category,self.note = self.db.loadNote(key)
105 self.statuslabel.set_text(time.strftime(_("Last change: %d.%m.%y %H:%M"), time.localtime(pcdatum)))
106 buf=self.textviewNote.get_buffer()
107 buf.set_text(self.note)
109 gobject.timeout_add(200, self.setFocus)
111 def add_note(self,widget=None,data=None):
112 self.noteslist_changed("new")
114 def del_note(self,widget=None,data=None):
115 if (self.noteid==-1): return
116 mbox=gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_WARNING,gtk.BUTTONS_YES_NO,_("Really delete?"))
120 if response==gtk.RESPONSE_YES:
121 self.db.delNote(self.noteid)
123 self.noteslist.remove_item(self.pos)
125 self.textviewNote.get_buffer().set_text("")
128 def loadNotes(self,data=None):
129 logging.info("loadNotes params: pos:"+str(self.pos)+" noteid:"+str(self.noteid))
130 self.noteslist.clear_items()
131 self.noteslist.append_item(_("new Note"), "new")
133 self.category=self.topBox.getCategory()
134 search=self.topBox.getSearchPattern()
135 notes=self.db.searchNotes(search,self.category)
139 noteid,category,noteText = note
140 title=self.getTitle(noteText)
141 self.noteslist.append_item(title, noteid)
145 self.textviewNote.get_buffer().set_text("")
148 def show_history(self, widget=None, data=None,label=None):
149 if (self.noteid==-1):
150 mbox = gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,_("No note selected."))
151 response = mbox.run()
156 rows=self.db.getNoteHistory(self.noteid)
159 dialog=libhistory.Dialog()
166 if (daten!="")and(lastNoteStr!=daten):
168 dialog.liststore.append([row[0],row[1],row[2],row[3],daten+"\n"])
172 dialog.vbox.show_all()
173 dialog.set_size_request(600,380)
176 if dialog.run() == gtk.RESPONSE_ACCEPT:
179 data=dialog.get_selected_row()
181 self.db.speichereSQL(data[2],data[3].split(" <<Tren-ner>> "),rowid=self.noteid)
182 logging.info("loading History")
183 self.noteslist_changed()
187 def __init__(self,db,topBox):
193 self.note=None #Last notetext
195 gtk.HBox.__init__(self,homogeneous=False, spacing=0)
196 logging.info("libnotizen, init")
198 self.noteslist = simple_list.SimpleList()
199 self.noteslist.set_eventfunction__cursor_changed(self.noteslist_changed)
201 self.noteslist.set_size_request(250,-1)
203 vbox = gtk.VBox(homogeneous=False, spacing=0)
205 #button=gtk.Button("add note")
206 #button.connect("clicked", self.add_note, None)
207 #vbox.pack_start(button, expand=False, fill=True, padding=3)
209 frame=gtk.Frame(_("Titles"))
210 frame.add(self.noteslist)
211 vbox.pack_start(frame, expand=True, fill=True, padding=3)
213 button=gtk.Button(_("add note"))
214 button.connect("clicked", self.add_note, None)
215 vbox.pack_start(button, expand=False, fill=True, padding=3)
217 button=gtk.Button(_("del note"))
218 button.connect("clicked", self.del_note, None)
219 vbox.pack_start(button, expand=False, fill=True, padding=3)
221 self.pack_start(vbox, expand=False, fill=True, padding=3)
223 self.textviewNote=gtk.TextView()
224 self.textviewNote.connect("focus-out-event",self.saveNote,"focus-out-event")
225 buf=self.textviewNote.get_buffer()
227 buf.connect("changed", self.noteChanged, None)
229 #self.textviewNotiz.set_size_request(-1,50)
230 scrolled_window = gtk.ScrolledWindow()
231 scrolled_window.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
232 scrolled_window.add(self.textviewNote)
234 frame=gtk.Frame(_("Note"))
235 frame.add(scrolled_window)
238 vbox = gtk.VBox(homogeneous=False, spacing=0)
239 vbox.pack_start(frame, expand=True, fill=True, padding=3)
241 hbox = gtk.VBox(homogeneous=False, spacing=0)
243 self.statuslabel=gtk.Label("Test")
244 self.statuslabel.set_alignment(0.0,0.5)
245 hbox.pack_start(self.statuslabel, expand=False, fill=True, padding=3)
247 button=gtk.Button(_("History"))
248 button.connect("clicked", self.show_history, None)
249 hbox.pack_start(button, expand=False, fill=True, padding=3)
252 vbox.pack_start(hbox, expand=False, fill=True, padding=3)
255 self.pack_start(vbox, expand=True, fill=True, padding=3)
260 self.topBox.connect("reload_notes",self.loadNotes)