Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
class EmulatorScreen(object):
"""Class for screen related emulator commands."""
SO_PORTRAIT_PRIMARY = "portrait-primary"
SO_PORTRAIT_SECONDARY = "portrait-secondary"
SO_LANDSCAPE_PRIMARY = "landscape-primary"
SO_LANDSCAPE_SECONDARY = "landscape-secondary"
def __init__(self, emulator):
self.emulator = emulator
def initialize(self):
self.orientation = self.SO_PORTRAIT_PRIMARY
def _get_raw_orientation(self):
"""Get the raw value of the current device orientation."""
response = self.emulator._run_telnet("sensor get orientation")
return response[0].split("=")[1].strip()
def _set_raw_orientation(self, data):
"""Set the raw value of the specified device orientation."""
self.emulator._run_telnet("sensor set orientation %s" % data)
def get_orientation(self):
"""Get the current device orientation.
Returns;
orientation -- Orientation of the device. One of:
SO_PORTRAIT_PRIMARY - system buttons at the bottom
SO_PORTRIAT_SECONDARY - system buttons at the top
SO_LANDSCAPE_PRIMARY - system buttons at the right
SO_LANDSCAPE_SECONDARY - system buttons at the left
"""
data = self._get_raw_orientation()
if data == "0:-90:0":
orientation = self.SO_PORTRAIT_PRIMARY
elif data == "0:90:0":
orientation = self.SO_PORTRAIT_SECONDARY
elif data == "0:0:90":
orientation = self.SO_LANDSCAPE_PRIMARY
elif data == "0:0:-90":
orientation = self.SO_LANDSCAPE_SECONDARY
else:
raise ValueError("Unknown orientation sensor value: %s." % data)
return orientation
def set_orientation(self, orientation):
"""Set the specified device orientation.
Args
orientation -- Orientation of the device. One of:
SO_PORTRAIT_PRIMARY - system buttons at the bottom
SO_PORTRIAT_SECONDARY - system buttons at the top
SO_LANDSCAPE_PRIMARY - system buttons at the right
SO_LANDSCAPE_SECONDARY - system buttons at the left
"""
orientation = SCREEN_ORIENTATIONS[orientation]
if orientation == self.SO_PORTRAIT_PRIMARY:
data = "0:-90:0"
elif orientation == self.SO_PORTRAIT_SECONDARY:
data = "0:90:0"
elif orientation == self.SO_LANDSCAPE_PRIMARY:
data = "0:0:90"
elif orientation == self.SO_LANDSCAPE_SECONDARY:
data = "0:0:-90"
else:
raise ValueError("Invalid orientation: %s" % orientation)
self._set_raw_orientation(data)
orientation = property(get_orientation, set_orientation)
SCREEN_ORIENTATIONS = {
"portrait": EmulatorScreen.SO_PORTRAIT_PRIMARY,
"landscape": EmulatorScreen.SO_LANDSCAPE_PRIMARY,
"portrait-primary": EmulatorScreen.SO_PORTRAIT_PRIMARY,
"landscape-primary": EmulatorScreen.SO_LANDSCAPE_PRIMARY,
"portrait-secondary": EmulatorScreen.SO_PORTRAIT_SECONDARY,
"landscape-secondary": EmulatorScreen.SO_LANDSCAPE_SECONDARY,
}