diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-06-08 18:27:45 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-06-08 18:27:45 (GMT) |
commit | 5ccdc2f8a83492dfc10edb77bdfb8b3184bbd0e7 (patch) | |
tree | 89f04b2362066f6cbb7b9ce6ff1b669f3d321797 | |
parent | 2e7ea5ea9c1338a825b9a9cfbb01230da44e2060 (diff) |
added decimal abacus
-rw-r--r-- | AbacusActivity.py | 28 | ||||
-rwxr-xr-x | abacus.py | 2 | ||||
-rw-r--r-- | abacus_window.py | 16 |
3 files changed, 46 insertions, 0 deletions
diff --git a/AbacusActivity.py b/AbacusActivity.py index 99f4696..e11dd31 100644 --- a/AbacusActivity.py +++ b/AbacusActivity.py @@ -74,6 +74,14 @@ class AbacusActivity(activity.Activity): toolbar_box.toolbar.insert(self.japanese, -1) self.japanese.show() + # Decimal (decimal abacus) 0:10 + self.decimal = ToolButton( "Doff" ) + self.decimal.set_tooltip(_('Decimal')) + self.decimal.props.sensitive = True + self.decimal.connect('clicked', self._decimal_cb) + toolbar_box.toolbar.insert(self.decimal, -1) + self.decimal.show() + # Schety (Russian abacus) 0:10 self.russian = ToolButton( "Roff" ) self.russian.set_tooltip(_('Schety')) @@ -288,6 +296,8 @@ class AbacusActivity(activity.Activity): self._hex_cb(None) elif self.metadata['abacus'] == 'fraction': self._fraction_cb(None) + elif self.metadata['abacus'] == 'decimal': + self._decimal_cb(None) else: self._chinese_cb(None) except: @@ -306,6 +316,7 @@ class AbacusActivity(activity.Activity): self.binary.set_icon("Boff") self.hex.set_icon("Hoff") self.fraction.set_icon("Foff") + self.decimal.set_icon("Doff") self.abacus.chinese.hide() self.abacus.japanese.hide() self.abacus.russian.hide() @@ -313,6 +324,7 @@ class AbacusActivity(activity.Activity): self.abacus.binary.hide() self.abacus.hex.hide() self.abacus.fraction.hide() + self.abacus.decimal.hide() if self.abacus.custom is not None: self.abacus.custom.hide() @@ -392,6 +404,14 @@ class AbacusActivity(activity.Activity): self.abacus.mode = self.abacus.hex _logger.debug("Setting mode to %s" % (self.abacus.mode.name)) + def _decimal_cb(self, button): + """ Display the decimal; hide the others """ + self._all_off() + self.decimal.set_icon("Don") + self.abacus.decimal.show() + self.abacus.mode = self.abacus.decimal + _logger.debug("Setting mode to %s" % (self.abacus.mode.name)) + def _fraction_cb(self, button): """ Display the fraction; hide the others """ self._all_off() @@ -581,6 +601,14 @@ class ProjectToolbar(gtk.Toolbar): self.insert(self.activity.hex, -1) self.activity.hex.show() + # decimal style + self.activity.decimal = ToolButton( "Doff" ) + self.activity.decimal.set_tooltip(_('Decimal')) + self.activity.decimal.props.sensitive = True + self.activity.decimal.connect('clicked', self.activity._decimal_cb) + self.insert(self.activity.decimal, -1) + self.activity.decimal.show() + # Fraction style self.activity.fraction = ToolButton( "Foff" ) self.activity.fraction.set_tooltip(_('Fraction')) @@ -53,6 +53,7 @@ class AbacusMain: "b": _("Binary"), "h": _("Hexadecimal"), "f": _("Fraction"), + "d": _("Decimal") } menu = gtk.Menu() @@ -109,6 +110,7 @@ class AbacusMain: "j": self.abacus.japanese, "m": self.abacus.mayan, "r": self.abacus.russian, + "d": self.abacus.decimal } self.abacus.mode.hide() self.abacus.mode = ABACI[user] diff --git a/abacus_window.py b/abacus_window.py index f45bc38..677ce86 100644 --- a/abacus_window.py +++ b/abacus_window.py @@ -258,6 +258,7 @@ class Abacus(): self.mayan = Nepohualtzintzin(self) self.binary = Binary(self) self.hex = Hex(self) + self.decimal = Decimal(self) self.fraction = Fractions(self) self.custom = None @@ -266,6 +267,7 @@ class Abacus(): self.russian.hide() self.mayan.hide() self.binary.hide() + self.decimal.hide() self.hex.hide() self.fraction.hide() self.mode = self.chinese @@ -296,6 +298,7 @@ class Abacus(): elif self.press.type == 'mark': mx, my = self.mode.mark.get_xy() self.mode.move_mark(x-mx) + return True def _button_release_cb(self, win, event): """ Callback to handle the button releases """ @@ -697,6 +700,19 @@ class Hex(AbacusGeneric): self.top_factor = 8 +class Decimal(AbacusGeneric): + """ A decimal abacus """ + + def set_parameters(self): + """ create a decimal abacus: 10 by (10,0) """ + self.name = 'decimal' + self.num_rods = 10 + self.bot_beads = 10 + self.top_beads = 0 + self.base = 10 + self.top_factor = 5 + + class Binary(AbacusGeneric): """ A binary abacus """ |