[kupfer] browser: Add accelerators for some actions
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer] browser: Add accelerators for some actions
- Date: Wed, 26 Aug 2009 18:24:31 +0000 (UTC)
commit c4d18a4bc2bcbb9a1f281c86bc8dc9bf9cf439f5
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Wed Aug 26 19:45:46 2009 +0200
browser: Add accelerators for some actions
Adding
* Ctrl+S Go to source (first pane)
* Ctrl+R Reset all
* Ctrl+. Untoggle text mode
We can make a more flexible system in the future, including
configuration of these (probably not user visible though).
kupfer/browser.py | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/kupfer/browser.py b/kupfer/browser.py
index ae69cd8..3c23a72 100644
--- a/kupfer/browser.py
+++ b/kupfer/browser.py
@@ -798,6 +798,13 @@ class Interface (gobject.GObject):
"""
keyv = event.keyval
key_book = self.key_book
+
+ # FIXME: These should be configurable
+ accels = {
+ "<Control>period" : "toggle_text_mode_quick",
+ "<Control>s" : "switch_to_source",
+ "<Control>r" : "reset_all",
+ }
# test for alt modifier (MOD1_MASK is alt/option)
modifiers = gtk.accelerator_get_default_mod_mask()
mod1_mask = ((event.state & modifiers) == gtk.gdk.MOD1_MASK)
@@ -813,6 +820,20 @@ class Interface (gobject.GObject):
if not text_mode and input_time_diff > self._slow_input_interval:
self.reset_text()
+ # process accelerators
+ for accel in accels:
+ keyvalue, modifiers = gtk.accelerator_parse(accel)
+ if not keyvalue:
+ continue
+ if keyv == keyvalue and (modifiers == (event.state & modifiers)):
+ action = accels[accel]
+ action_method = getattr(self, action, None)
+ if not action_method:
+ print "Error: no action", action
+ else:
+ action_method()
+ return True
+
has_selection = (self.current.get_match_state() is State.Match)
can_text_mode = self.get_can_enter_text_mode()
if not text_mode:
@@ -901,6 +922,14 @@ class Interface (gobject.GObject):
else:
self.current.reset()
+ def reset_all(self):
+ """Reset all panes and focus the first"""
+ self.reset_current()
+ self.reset()
+ self.switch_to_source()
+ while self._browse_up():
+ pass
+
def _reset_key_press(self, escape=False):
"""Handle leftarrow, backspace and escape
Go up back through browsed sources.
@@ -939,6 +968,14 @@ class Interface (gobject.GObject):
self.reset()
return val
+ def toggle_text_mode_quick(self):
+ """Toggle text mode or not, if we can, without reset"""
+ if self._is_text_mode:
+ self._is_text_mode = False
+ else:
+ self._is_text_mode = self.get_can_enter_text_mode()
+ self.update_text_mode()
+
def update_text_mode(self):
"""update appearance to whether text mode enabled or not"""
if not self._theme_colors:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]