diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-07-17 17:03:52 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-07-17 17:03:52 (GMT) |
commit | 5e655deb5a27ed31dd0507b4646bd06f766b47e1 (patch) | |
tree | a27f13a50a4904608da056bef09c3e286c365df0 /shell | |
parent | e78c0106cea83180775981234e9c2c684e9b09df (diff) |
Eben specification and the new B3 keyboard (marco)
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hardware/hardwaremanager.py | 21 | ||||
-rw-r--r-- | shell/view/keyhandler.py | 81 |
2 files changed, 51 insertions, 51 deletions
diff --git a/shell/hardware/hardwaremanager.py b/shell/hardware/hardwaremanager.py index b997bcf..5a85707 100644 --- a/shell/hardware/hardwaremanager.py +++ b/shell/hardware/hardwaremanager.py @@ -48,6 +48,17 @@ class HardwareManager(object): if track.flags & gst.interfaces.MIXER_TRACK_MASTER: self._master = track + def get_volume(self): + if not self._mixer or not self._master: + logging.error('Cannot get the volume') + return self._convert_volume(0) + + max_volume = self._master.max_volume + min_volume = self._master.min_volume + volume = self._mixer.get_volume(self._master)[0] + + return volume * 100.0 / (max_volume - min_volume) + min_volume + def set_volume(self, volume): if not self._mixer or not self._master: logging.error('Cannot set the volume') @@ -59,7 +70,7 @@ class HardwareManager(object): max_volume = self._master.max_volume min_volume = self._master.min_volume - volume = (volume / 100.0) * (max_volume - min_volume) + min_volume + volume = volume * (max_volume - min_volume) / 100.0 + min_volume volume_list = [ volume ] * self._master.num_channels self._mixer.set_volume(self._master, tuple(volume_list)) @@ -83,10 +94,18 @@ class HardwareManager(object): def set_display_brightness(self, level): if not self._service: + logging.error('Cannot set display brightness') return self._service.set_display_brightness(level) + def get_display_brightness(self): + if not self._service: + logging.error('Cannot get display brightness') + return + + return self._service.get_display_brightness() + def toggle_keyboard_brightness(self): if not self._service: return diff --git a/shell/view/keyhandler.py b/shell/view/keyhandler.py index e639cab..a20064c 100644 --- a/shell/view/keyhandler.py +++ b/shell/view/keyhandler.py @@ -26,22 +26,19 @@ from hardware import hardwaremanager from model.shellmodel import ShellModel from sugar._sugarext import KeyGrabber +_BRIGHTNESS_STEP = 2 +_VOLUME_STEP = 10 + _actions_table = { 'F1' : 'zoom_mesh', 'F2' : 'zoom_friends', 'F3' : 'zoom_home', 'F4' : 'zoom_activity', - 'F5' : 'brightness_1', - 'F6' : 'brightness_2', - 'F7' : 'brightness_3', - 'F8' : 'brightness_4', - 'F9' : 'volume_1', - 'F10' : 'volume_2', - 'F11' : 'volume_3', - 'F12' : 'volume_4', + 'F9' : 'brightness_down', + 'F10' : 'brightness_up', + 'F11' : 'volume_down', + 'F12' : 'volume_up', '<alt>1' : 'screenshot', - '<alt>F8' : 'color_mode', - '<alt>F5' : 'b_and_w_mode', '<alt>equal' : 'console', '<alt>0' : 'console', '<alt>f' : 'frame', @@ -72,17 +69,26 @@ class KeyHandler(object): for key in _actions_table.keys(): self._key_grabber.grab(key) - def _set_display_brightness(self, level): + def _change_volume(self, step): + hw_manager = hardwaremanager.get_manager() + + volume = hw_manager.get_volume() + step + volume = min(max(0, volume), 100) + + hw_manager.set_volume(volume) + hw_manager.set_mute(volume == 0) + + def _change_brightness(self, step): hw_manager = hardwaremanager.get_manager() + + level = hw_manager.get_display_brightness() + step + level = min(max(0, level), 15) + hw_manager.set_display_brightness(level) if level == 0: - self._set_display_mode(hardwaremanager.B_AND_W_MODE) + hw_manager.set_display_mode(hardwaremanager.B_AND_W_MODE) else: - self._set_display_mode(hardwaremanager.COLOR_MODE) - - def _set_display_mode(self, mode): - hw_manager = hardwaremanager.get_manager() - hw_manager.set_display_mode(mode) + hw_manager.set_display_mode(hardwaremanager.COLOR_MODE) def handle_zoom_mesh(self): self._shell.set_zoom_level(ShellModel.ZOOM_MESH) @@ -96,46 +102,21 @@ class KeyHandler(object): def handle_zoom_activity(self): self._shell.set_zoom_level(ShellModel.ZOOM_ACTIVITY) - def handle_brightness_1(self): - self._set_display_brightness(0) + def handle_brightness_up(self): + self._change_brightness(_BRIGHTNESS_STEP) - def handle_brightness_2(self): - self._set_display_brightness(5) + def handle_brightness_down(self): + self._change_brightness(-_BRIGHTNESS_STEP) - def handle_brightness_3(self): - self._set_display_brightness(9) + def handle_volume_up(self): + self._change_volume(_VOLUME_STEP) - def handle_brightness_4(self): - self._set_display_brightness(15) - - def handle_volume_1(self): - hw_manager = hardwaremanager.get_manager() - hw_manager.set_mute(True) - - def handle_volume_2(self): - hw_manager = hardwaremanager.get_manager() - hw_manager.set_mute(False) - hw_manager.set_volume(50) - - def handle_volume_3(self): - hw_manager = hardwaremanager.get_manager() - hw_manager.set_mute(False) - hw_manager.set_volume(80) - - def handle_volume_4(self): - hw_manager = hardwaremanager.get_manager() - hw_manager.set_mute(False) - hw_manager.set_volume(100) - - def handle_color_mode(self): - self._set_display_mode(hardwaremanager.COLOR_MODE) + def handle_volume_down(self): + self._change_volume(-_VOLUME_STEP) def handle_screenshot(self): self._shell.take_screenshot() - def handle_b_and_w_mode(self): - self._set_display_mode(hardwaremanager.B_AND_W_MODE) - def handle_console(self): gobject.idle_add(self._toggle_console_visibility_cb) |