示例#1
0
 def initialize(self):
     Triggers.instance = self
     keybindings.GetKeyboundObject().connect("keybinding",
                                             self.keybinding_callback)
     for target, (keystr, name, id_) in self.trigger_table.iteritems():
         keybindings.bind_key(keystr, target)
     self.output_debug("Loaded triggers, count:", len(self.trigger_table))
示例#2
0
 def _add_trigger(self, leaf, keystr):
     for target in xrange(*keybindings.KEYRANGE_TRIGGERS):
         if target not in self.trigger_table:
             break
     keybindings.bind_key(keystr, target)
     name = unicode(leaf)
     self.trigger_table[target] = (keystr, name, puid.get_unique_id(leaf))
     self.mark_for_update()
示例#3
0
	def _add_trigger(self, leaf, keystr):
		for target in xrange(*keybindings.KEYRANGE_TRIGGERS):
			if target not in self.trigger_table:
				break
		keybindings.bind_key(keystr, target)
		name = unicode(leaf)
		self.trigger_table[target] = (keystr, name, puid.get_unique_id(leaf))
		self.mark_for_update()
示例#4
0
	def on_buttonkeybinding_clicked(self, widget):
		keystr = getkey_dialog.ask_for_key(keybindings.bind_key,
					screen=widget.get_screen())
		if keystr:
			self.entrykeybinding.set_text(keystr)
			self.output_debug("Try set keybinding with", keystr)
			keybindings.bind_key(keystr)
			setctl = settings.GetSettingsController()
			setctl.set_keybinding(keystr)
示例#5
0
 def on_buttonkeybinding_clicked(self, widget):
     keystr = getkey_dialog.ask_for_key(keybindings.bind_key,
                                        screen=widget.get_screen())
     if keystr:
         self.entrykeybinding.set_text(keystr)
         self.output_debug("Try set keybinding with", keystr)
         keybindings.bind_key(keystr)
         setctl = settings.GetSettingsController()
         setctl.set_keybinding(keystr)
示例#6
0
def try_bind_key(keystr):
    label = gtk.accelerator_get_label(*gtk.accelerator_parse(keystr))
    ulabel = kupferstring.tounicode(label)
    if len(ulabel) == 1 and ulabel.isalnum():
        return False
    target = keybindings.KEYRANGE_TRIGGERS[-1] - 1
    succ = keybindings.bind_key(keystr, target)
    if succ:
        keybindings.bind_key(None, target)
    return succ
示例#7
0
def try_bind_key(keystr):
	label = gtk.accelerator_get_label(*gtk.accelerator_parse(keystr))
	ulabel = kupferstring.tounicode(label)
	if len(ulabel) == 1 and ulabel.isalnum():
		return False
	target = keybindings.KEYRANGE_TRIGGERS[-1] - 1
	succ = keybindings.bind_key(keystr, target)
	if succ:
		keybindings.bind_key(None, target)
	return succ
示例#8
0
	def main(self, quiet=False):
		"""Start WindowController, present its window (if not @quiet)"""
		signal.signal(signal.SIGINT, self._on_early_interrupt)

		try:
			kserv = listen.Service()
		except listen.AlreadyRunningError:
			self.output_info("An instance is already running, exiting...")
			self.quit_now()
		except listen.NoConnectionError:
			kserv = None
		else:
			kserv.connect("present", self.activate)
			kserv.connect("show-hide", self.show_hide)
			kserv.connect("put-text", self._put_text_received)
			kserv.connect("put-files", self._put_files_received)
			kserv.connect("execute-file", self._execute_file_received)
			kserv.connect("quit", self.quit)

		# Load data and present UI
		sch = scheduler.GetScheduler()
		sch.load()
		self._load_window_position()

		if not quiet:
			self.activate()
		gobject.idle_add(self.lazy_setup)

		def do_main_iterations(max_events=0):
			# use sentinel form of iter
			for idx, pending in enumerate(iter(gtk.events_pending, False)):
				if max_events and idx > max_events:
					break
				gtk.main_iteration()

		try:
			gtk.main()
			# put away window *before exiting further*
			self.put_away()
			do_main_iterations(10)
		finally:
			self.save_data()

		# tear down but keep hanging
		if kserv:
			kserv.unregister()
		keybindings.bind_key(None, keybindings.KEYBINDING_DEFAULT)
		keybindings.bind_key(None, keybindings.KEYBINDING_MAGIC)

		do_main_iterations(100)
		# if we are still waiting, print a message
		if gtk.events_pending():
			self.output_info("Waiting for tasks to finish...")
			do_main_iterations()
示例#9
0
	def on_button_reset_keys_clicked(self, button):
		if self.ask_user_for_reset_keybinding():
			setctl = settings.GetSettingsController()
			setctl.reset_keybindings()
			self._show_keybindings(setctl)
			# Unbind all before re-binding
			for keybind_id, target in self.KEYBINDING_TARGETS.iteritems():
				keybindings.bind_key(None, target)
			for keybind_id, target in self.KEYBINDING_TARGETS.iteritems():
				keystr = setctl.get_global_keybinding(keybind_id)
				keybindings.bind_key(keystr, target)
示例#10
0
 def on_button_reset_keys_clicked(self, button):
     if self.ask_user_for_reset_keybinding():
         setctl = settings.GetSettingsController()
         setctl.reset_keybindings()
         self._show_keybindings(setctl)
         # Unbind all before re-binding
         for keybind_id, target in self.KEYBINDING_TARGETS.items():
             keybindings.bind_key(None, target)
         for keybind_id, target in self.KEYBINDING_TARGETS.items():
             keystr = setctl.get_global_keybinding(keybind_id)
             keybindings.bind_key(keystr, target)
示例#11
0
	def on_keybindings_row_activate(self, treeview, path, view_column):
		def bind_key_func(target):
			def bind_key(keystr):
				return keybindings.bind_key(keystr, target)
			return bind_key

		it = self.keybind_store.get_iter(path)
		keybind_id = self.keybind_store.get_value(it, 2)
		setctl = settings.GetSettingsController()
		curr_key = setctl.get_global_keybinding(keybind_id)
		bind_func = bind_key_func(self.KEYBINDING_TARGETS[keybind_id])
		keystr = getkey_dialog.ask_for_key(bind_func, curr_key)
		if keystr == '':
			keybindings.bind_key(None, self.KEYBINDING_TARGETS[keybind_id])
			setctl.set_global_keybinding(keybind_id, keystr)
			self.keybind_store.set_value(it, 1, '')
		elif keystr is not None:
			setctl.set_global_keybinding(keybind_id, keystr)
			label = gtk.accelerator_get_label(*gtk.accelerator_parse(keystr))
			self.keybind_store.set_value(it, 1, label)
示例#12
0
文件: browser.py 项目: chmouel/kupfer
	def lazy_setup(self):
		"""Do all setup that can be done after showing main interface.
		Connect to desktop services (keybinding callback, session logout
		callbacks etc).
		"""
		import signal
		from kupfer.ui import session
		from kupfer.core import settings

		self.output_debug("in lazy_setup")

		setctl = settings.GetSettingsController()
		if setctl.get_show_status_icon():
			self.show_statusicon()
		setctl.connect("value-changed", self._settings_changed)
		keystr = setctl.get_keybinding()
		magickeystr = setctl.get_magic_keybinding()

		if keystr:
			succ = keybindings.bind_key(keystr)
			self.output_info("Trying to register %s to spawn kupfer.. %s"
					% (keystr, "success" if succ else "failed"))
		if magickeystr:
			succ = keybindings.bind_key(magickeystr,
					keybindings.KEYBINDING_MAGIC)
			self.output_debug("Trying to register %s to spawn kupfer.. %s"
					% (magickeystr, "success" if succ else "failed"))
		keyobj = keybindings.GetKeyboundObject()
		keyobj.connect("keybinding", self._key_binding)

		signal.signal(signal.SIGINT, self._sigterm)
		signal.signal(signal.SIGTERM, self._sigterm)
		signal.signal(signal.SIGHUP, self._sigterm)

		client = session.SessionClient()
		client.connect("save-yourself", self._session_save)
		client.connect("die", self._session_die)

		self.output_debug("finished lazy_setup")
示例#13
0
    def on_keybindings_row_activate(self, treeview, path, view_column):
        def bind_key_func(target):
            def bind_key(keystr):
                return keybindings.bind_key(keystr, target)

            return bind_key

        it = self.keybind_store.get_iter(path)
        keybind_id = self.keybind_store.get_value(it, 2)
        setctl = settings.GetSettingsController()
        curr_key = setctl.get_global_keybinding(keybind_id)
        bind_func = bind_key_func(self.KEYBINDING_TARGETS[keybind_id])
        keystr = getkey_dialog.ask_for_key(bind_func,
                                           curr_key,
                                           screen=treeview.get_screen())
        if keystr == '':
            keybindings.bind_key(None, self.KEYBINDING_TARGETS[keybind_id])
            setctl.set_global_keybinding(keybind_id, keystr)
            self.keybind_store.set_value(it, 1, '')
        elif keystr is not None:
            setctl.set_global_keybinding(keybind_id, keystr)
            label = gtk.accelerator_get_label(*gtk.accelerator_parse(keystr))
            self.keybind_store.set_value(it, 1, label)
示例#14
0
	def on_buttonkeybinding_clicked(self, widget):
		keystr = self.entrykeybinding.get_text()
		self.output_debug("Try set keybinding with", keystr)
		succ = keybindings.bind_key(keystr)
		if succ:
			self.imagekeybindingaux.set_property("stock", gtk.STOCK_APPLY)
			self.labelkeybindingaux.set_text(_("Applied"))
			self.buttonkeybinding.set_sensitive(False)
		else:
			self.imagekeybindingaux.set_property("stock",
					gtk.STOCK_DIALOG_WARNING)
			self.labelkeybindingaux.set_text(_("Keybinding could not be bound"))
		self.imagekeybindingaux.show()
		self.labelkeybindingaux.show()
		if succ:
			setctl = settings.GetSettingsController()
			setctl.set_keybinding(keystr)
示例#15
0
			def bind_key(keystr):
				return keybindings.bind_key(keystr, target)
示例#16
0
 def _remove_trigger(self, target):
     self.trigger_table.pop(target, None)
     keybindings.bind_key(None, target)
     self.mark_for_update()
示例#17
0
	def _remove_trigger(self, target):
		self.trigger_table.pop(target, None)
		keybindings.bind_key(None, target)
		self.mark_for_update()
示例#18
0
 def bind_key(keystr):
     return keybindings.bind_key(keystr, target)
示例#19
0
 def finalize(self):
     for target, (keystr, name, id_) in self.trigger_table.iteritems():
         keybindings.bind_key(None, target)