import dbus
from datetime import *
		
BUS_NAME = 'org.gnome.Tomboy'
OBJ_PATH = '/org/gnome/Tomboy/RemoteControl'
IFACE_NAME = 'org.gnome.Tomboy.RemoteControl'

class RemoteControl:
	def __init__(self):
		bus = dbus.SessionBus()
		obj = bus.get_object(BUS_NAME,OBJ_PATH)
		self.remote = dbus.Interface(obj,IFACE_NAME)
		
	def version(self):
		return self.remote.Version()
		
	def open_search(self,text=None):
		if text:
			self.remote.DisplaySearchWithText(text)
		else:
			self.remote.DisplaySearch()
			
	def open_note(self, uri):
		self.remote.DisplayNote(uri)

	def open_named_note(self, name, search=None):
		uri = self.remote.FindNote(name)
		if search:
			self.remote.DisplayNoteWithSearch(uri, search)
		else:
			self.remote.DisplayNote(uri)

	def create_note(self, name=None):
		if name:
			new_uri = self.remote.FindNote(name)
		
			if (not new_uri) or new_uri == "":
				new_uri = self.remote.CreateNamedNote(name)
		else:
			new_uri = self.remote.CreateNote()
			
		if new_uri:
			self.remote.DisplayNote(new_uri)
			
	def delete_note(self, uri):
		return self.remote.DeleteNote(uri)
		
	def note_exists(self, uri):
		return self.remote.NoteExists(uri)
		
	def list_all_notes(self, title=False):
		results = self.remote.ListAllNotes()
		
		if title:
			tmp = []
			for uri in results:
				tmp.append(self.get_note_title(uri))
			results = tmp
			
		return results

	def get_note_title(self, uri):
		return self.remote.GetNoteTitle(uri)

	def get_note_contents(self, uri):
		return self.remote.GetNoteContents(uri)
	
	def get_note_contents_xml(self, uri):
		return self.remote.GetNoteContentsXml(uri)
		
	def set_note_contents(self, uri, text):
		return self.remote.SetNoteContents(uri, text)
		
	def set_note_contents_xml(self, uri, xml):
		return self.remote.SetNoteContentsXml(uri, xml)
		
	def get_note_create_date(self, uri):
		return datetime.fromtimestamp(self.remote.GetNoteCreateDate(uri))
		
	def get_note_change_date(self, uri):
		return datetime.fromtimestamp(self.remote.GetNoteChangeDate(uri))
		
if __name__ == "__main__":
	instance = RemoteControl()
	for i in instance.list_all_notes():
		print i
		print instance.get_note_title(i)
		print instance.get_note_change_date(i)

