From 56711091cd951a7c747db63922f646258648feb4 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Wed, 20 Feb 2013 21:13:47 +0000 Subject: Add rotation support --- diff --git a/NEWS b/NEWS index e177964..26b26c8 100644 --- a/NEWS +++ b/NEWS @@ -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 -- cgit v0.9.1