class Trigger(object):

	def __init__(self, editor):
		self.__init_attributes(editor)
		self.__sigid1 = self.__trigger.connect("activate", self.__activate_cb)

	def __init_attributes(self, editor):
		self.__editor = editor
		self.__trigger = self.__create_trigger()
		self.__manager = None
		return

	def __destroy(self):
		if self.__manager: self.__manager.destroy()
		self.__editor.remove_trigger(self.__trigger)
		self.__editor.disconnect_signal(self.__sigid1, self.__trigger)
		del self
		self = None
		return False

	def __activate(self):
		try :
			self.__manager.show()
		except AttributeError :
			from Manager import Manager
			self.__manager = Manager(self.__editor)
			self.__manager.show()
		finally:
			self.__editor.response()
		return False

	def __create_trigger(self):
		trigger = self.__editor.create_trigger("show-quick-open-window", "<ctrl><alt>o")
		self.__editor.add_trigger(trigger)
		return trigger

	def __activate_cb(self, *args):
		from gobject import idle_add
		idle_add(self.__activate, priority=9999)
		return

	def destroy(self):
		self.__destroy()
		return
