diff options
author | Walter Bender <walter.bender@gmail.com> | 2013-02-20 21:13:47 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2013-02-20 21:13:47 (GMT) |
commit | 56711091cd951a7c747db63922f646258648feb4 (patch) | |
tree | 5de6d164caff9e7f2e9213e49ca799774a72469a | |
parent | dde410e81d9463cf6262ac6a476caa8af394fce7 (diff) |
Add rotation support
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | abacus_window.py | 22 | ||||
-rw-r--r-- | activity/activity.info | 2 |
3 files changed, 24 insertions, 5 deletions
@@ -1,3 +1,8 @@ +47 + +BUG_FIX +* Add support for screen rotation + 45 ENHANCEMENTS diff --git a/abacus_window.py b/abacus_window.py index 028b80f..52a6673 100644 --- a/abacus_window.py +++ b/abacus_window.py @@ -733,6 +733,7 @@ class Abacus(): self.canvas.connect('button-release-event', self._button_release_cb) self.canvas.connect('motion-notify-event', self._mouse_move_cb) self.canvas.connect('key_press_event', self._keypress_cb) + Gdk.Screen.get_default().connect('size-changed', self._configure_cb) self.width = Gdk.Screen.width() self.height = Gdk.Screen.height() - GRID_CELL_SIZE self.sprites = Sprites(self.canvas) @@ -746,9 +747,9 @@ class Abacus(): if self.decimal_point == '' or self.decimal_point is None: self.decimal_point = '.' - background_svg = _svg_header(self.width, self.height, 1.0) + \ - _svg_rect(self.width, self.height, 0, 0, 0, 0, '#FFFFFF', - '#FFFFFF') + \ + size = max(self.width, self.height) + background_svg = _svg_header(size, size, 1.0) + \ + _svg_rect(size, size, 0, 0, 0, 0, '#FFFFFF', '#FFFFFF') + \ _svg_footer() background = Sprite(self.sprites, 0, 0, _svg_str_to_pixbuf(background_svg)) @@ -791,6 +792,17 @@ class Abacus(): self.mode = self.chinese self.mode.show() + def _configure_cb(self, event): + self.width = Gdk.Screen.width() + self.height = Gdk.Screen.height() - GRID_CELL_SIZE + if self.width > self.height: + self.scale = 1.33 * Gdk.Screen.height() / 900.0 + else: + self.scale = 1.33 * Gdk.Screen.width() / 1200.0 + self.canvas.set_size_request(Gdk.Screen.width(), Gdk.Screen.height()) + self.mode.hide() + self.mode.show(reset=True) + def select_abacus(self, abacus): self.mode.hide() @@ -1173,8 +1185,10 @@ class AbacusGeneric(): for dot in self.dots: dot.hide() - def show(self): + def show(self, reset=False): ''' Show the rod, beads, mark, and frame. ''' + if reset: + self.create() self.frame.set_layer(FRAME_LAYER) for i in range(self.num_rods): self.rods[i].show() diff --git a/activity/activity.info b/activity/activity.info index 82490ce..d519191 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,6 +1,6 @@ [Activity] name = Abacus -activity_version = 45 +activity_version = 47 license = GPLv3 bundle_id = org.sugarlabs.AbacusActivity exec = sugar-activity AbacusActivity.AbacusActivity |