Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2010-06-08 18:27:45 (GMT)
committer Walter Bender <walter@sugarlabs.org>2010-06-08 18:27:45 (GMT)
commit5ccdc2f8a83492dfc10edb77bdfb8b3184bbd0e7 (patch)
tree89f04b2362066f6cbb7b9ce6ff1b669f3d321797
parent2e7ea5ea9c1338a825b9a9cfbb01230da44e2060 (diff)
added decimal abacus
-rw-r--r--AbacusActivity.py28
-rwxr-xr-xabacus.py2
-rw-r--r--abacus_window.py16
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'))
diff --git a/abacus.py b/abacus.py
index e8067fd..aa9f22c 100755
--- a/abacus.py
+++ b/abacus.py
@@ -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 """