Move window management keybindings inside sugar.
Add a TakeScreenshot dbus method and have the shell call it when the activity can safely take a screenshot to use as a preview.
This commit is contained in:
@@ -72,6 +72,10 @@ class ActivityHost:
|
||||
else:
|
||||
logging.error('Invite failed, activity service not ')
|
||||
|
||||
def toggle_fullscreen(self):
|
||||
fullscreen = not self._window.is_fullscreen()
|
||||
self._window.set_fullscreen(fullscreen)
|
||||
|
||||
def present(self):
|
||||
# wnck.Window.activate() expects a timestamp, but we don't
|
||||
# always have one, and libwnck will complain if we pass "0",
|
||||
|
||||
+34
-1
@@ -160,10 +160,20 @@ class Shell(gobject.GObject):
|
||||
self._activities_starting.add(activity_type)
|
||||
activityfactory.create(activity_type)
|
||||
|
||||
def take_activity_screenshot(self):
|
||||
home_model = self._model.get_home()
|
||||
service = home_model.get_active_activity().get_service()
|
||||
service.TakeScreenshot()
|
||||
|
||||
def set_zoom_level(self, level):
|
||||
if level == self._model.get_zoom_level():
|
||||
old_level = self._model.get_zoom_level()
|
||||
if level == old_level:
|
||||
return
|
||||
|
||||
if old_level == ShellModel.ZOOM_ACTIVITY and \
|
||||
not self.get_frame().visible:
|
||||
self.take_activity_screenshot()
|
||||
|
||||
if level == ShellModel.ZOOM_ACTIVITY:
|
||||
if self._pending_host is not None:
|
||||
self._pending_host.present()
|
||||
@@ -173,6 +183,29 @@ class Shell(gobject.GObject):
|
||||
self._screen.toggle_showing_desktop(True)
|
||||
self._home_window.set_zoom_level(level)
|
||||
|
||||
def toggle_activity_fullscreen(self):
|
||||
if self._model.get_zoom_level() == ShellModel.ZOOM_ACTIVITY:
|
||||
self.get_current_activity().toggle_fullscreen()
|
||||
|
||||
def activate_previous_activity(self):
|
||||
home_model = self._model.get_home()
|
||||
activity = home_model.get_previous_activity()
|
||||
if activity:
|
||||
self.take_activity_screenshot()
|
||||
activity.get_window().activate(1)
|
||||
|
||||
def activate_next_activity(self):
|
||||
home_model = self._model.get_home()
|
||||
activity = home_model.get_next_activity()
|
||||
if activity:
|
||||
self.take_activity_screenshot()
|
||||
activity.get_window().activate(1)
|
||||
|
||||
def close_current_activity(self):
|
||||
self.take_activity_screenshot()
|
||||
if self._model.get_zoom_level() == ShellModel.ZOOM_ACTIVITY:
|
||||
self.get_current_activity().close()
|
||||
|
||||
def get_current_activity(self):
|
||||
return self._current_host
|
||||
|
||||
|
||||
+37
-27
@@ -32,29 +32,34 @@ _BRIGHTNESS_MAX = 15
|
||||
_VOLUME_MAX = 100
|
||||
|
||||
_actions_table = {
|
||||
'F1' : 'zoom_mesh',
|
||||
'F2' : 'zoom_friends',
|
||||
'F3' : 'zoom_home',
|
||||
'F4' : 'zoom_activity',
|
||||
'F9' : 'brightness_down',
|
||||
'F10' : 'brightness_up',
|
||||
'<ctrl>F9' : 'brightness_min',
|
||||
'<ctrl>F10' : 'brightness_max',
|
||||
'F11' : 'volume_down',
|
||||
'F12' : 'volume_up',
|
||||
'<ctrl>F11' : 'volume_min',
|
||||
'<ctrl>F12' : 'volume_max',
|
||||
'<alt>1' : 'screenshot',
|
||||
'<alt>equal' : 'console',
|
||||
'<alt>0' : 'console',
|
||||
'<alt>f' : 'frame',
|
||||
'0x93' : 'frame',
|
||||
'<alt>o' : 'overlay',
|
||||
'0xE0' : 'overlay',
|
||||
'0xEB' : 'rotate',
|
||||
'<alt>r' : 'rotate',
|
||||
'<alt>Tab' : 'home',
|
||||
'<alt>q' : 'quit_emulator',
|
||||
'F1' : 'zoom_mesh',
|
||||
'F2' : 'zoom_friends',
|
||||
'F3' : 'zoom_home',
|
||||
'F4' : 'zoom_activity',
|
||||
'F9' : 'brightness_down',
|
||||
'F10' : 'brightness_up',
|
||||
'<ctrl>F9' : 'brightness_min',
|
||||
'<ctrl>F10' : 'brightness_max',
|
||||
'F11' : 'volume_down',
|
||||
'F12' : 'volume_up',
|
||||
'<ctrl>F11' : 'volume_min',
|
||||
'<ctrl>F12' : 'volume_max',
|
||||
'<alt>1' : 'screenshot',
|
||||
'<alt>equal' : 'console',
|
||||
'<alt>0' : 'console',
|
||||
'<alt>f' : 'frame',
|
||||
'0x93' : 'frame',
|
||||
'<alt>o' : 'overlay',
|
||||
'0xE0' : 'overlay',
|
||||
'0xEB' : 'rotate',
|
||||
'<alt>r' : 'rotate',
|
||||
'<alt>q' : 'quit_emulator',
|
||||
'<alt>tab' : 'next_window',
|
||||
'<alt>n' : 'next_window',
|
||||
'<ctrl><alt>tab' : 'previous_window',
|
||||
'<alt>p' : 'previous_window',
|
||||
'<ctrl>escape' : 'close_window',
|
||||
'<ctrl>q' : 'close_window'
|
||||
}
|
||||
|
||||
class KeyHandler(object):
|
||||
@@ -103,6 +108,15 @@ class KeyHandler(object):
|
||||
else:
|
||||
hw_manager.set_display_mode(hardwaremanager.COLOR_MODE)
|
||||
|
||||
def handle_previous_window(self):
|
||||
self._shell.activate_previous_activity()
|
||||
|
||||
def handle_next_window(self):
|
||||
self._shell.activate_next_activity()
|
||||
|
||||
def handle_close_window(self):
|
||||
self._shell.close_current_activity()
|
||||
|
||||
def handle_zoom_mesh(self):
|
||||
self._shell.set_zoom_level(ShellModel.ZOOM_MESH)
|
||||
|
||||
@@ -166,10 +180,6 @@ class KeyHandler(object):
|
||||
pid = int(os.environ['SUGAR_EMULATOR_PID'])
|
||||
os.kill(pid, signal.SIGTERM)
|
||||
|
||||
def handle_home(self):
|
||||
# FIXME: finish alt+tab support
|
||||
pass
|
||||
|
||||
def _key_pressed_cb(self, grabber, keycode, state):
|
||||
key = grabber.get_key(keycode, state)
|
||||
logging.debug('_key_pressed_cb: %i %i %s' % (keycode, state, key))
|
||||
|
||||
Reference in New Issue
Block a user