Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter 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)
commit56711091cd951a7c747db63922f646258648feb4 (patch)
tree5de6d164caff9e7f2e9213e49ca799774a72469a
parentdde410e81d9463cf6262ac6a476caa8af394fce7 (diff)
Add rotation support
-rw-r--r--NEWS5
-rw-r--r--abacus_window.py22
-rw-r--r--activity/activity.info2
3 files changed, 24 insertions, 5 deletions
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