Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/RulerActivity.py
diff options
context:
space:
mode:
Diffstat (limited to 'RulerActivity.py')
-rw-r--r--RulerActivity.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/RulerActivity.py b/RulerActivity.py
index 5396726..32f7c25 100644
--- a/RulerActivity.py
+++ b/RulerActivity.py
@@ -1,5 +1,6 @@
# Copyright (c) 2007 Mitchell N. Charity
# Copyright (c) 2009-2011 Walter Bender
+# Copyright (c) 2012-2013 Aneesh Dogra <lionaneesh@gmail.com>
#
# This file is part of Ruler.
#
@@ -180,6 +181,47 @@ class RulerActivity(activity.Activity):
group=self.rulers)
toolbar_box.toolbar.insert(self.checker, -1)
+ # Add custom units toolbar
+
+ # Toolitems
+ self.wrapper = gtk.ToolItem()
+ self.wrapper2 = gtk.ToolItem()
+ self.wrapper3 = gtk.ToolItem()
+
+ self.custom_unit_entry = gtk.Entry()
+ self.txt1 = gtk.Label()
+ self.txt1.set_text(_('1 custom unit equals '))
+ self.txt2 = gtk.Label()
+
+ # TRANS: mm is for Milli Meters
+ self.txt2.set_text(_(' mm.'))
+
+ self.wrapper.add(self.txt1)
+ self.wrapper2.add(self.custom_unit_entry)
+ self.wrapper3.add(self.txt2)
+ self.wrapper.show_all()
+ self.wrapper2.show_all()
+ self.wrapper3.show_all()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = True
+ separator.set_expand(False)
+ separator.show()
+ toolbar_box.toolbar.insert(separator, -1)
+
+ custom_units_toolbox = ToolbarBox()
+ custom_units_toolbox.toolbar.insert(self.wrapper, -1)
+ custom_units_toolbox.toolbar.insert(self.wrapper2, -1)
+ custom_units_toolbox.toolbar.insert(self.wrapper3, -1)
+ custom_units_toolbox.show()
+
+ self.custom_units_button = ToolbarButton(icon_name='view-source',
+ page=custom_units_toolbox)
+ toolbar_box.toolbar.insert(self.custom_units_button, -1)
+ self.custom_unit_entry.connect('changed', self.custom_unit_change_cb)
+ self.custom_units_button.show()
+
+
if not self.known_dpi:
print self.known_dpi
separator = gtk.SeparatorToolItem()
@@ -233,6 +275,10 @@ class RulerActivity(activity.Activity):
if HAS_TOOLARBOX:
self.button_dict[self.metadata['ruler']].set_active(True)
self.callback_dict[self.metadata['ruler']]
+ if 'custom_unit' in self.metadata:
+ self.custom_unit_entry.set_text(str(self.metadata['custom_unit']))
+ else: # set the default
+ self.custom_unit_entry.set_text("25.4")
else:
self._rulers_cb()
if HAS_TOOLARBOX:
@@ -243,14 +289,29 @@ class RulerActivity(activity.Activity):
#
def _rulers_cb(self, button=None):
if self._ready:
+ self.custom_units_button.set_sensitive(True)
self._current = self._r
self._canvas.add_a_ruler(self._current)
_logger.debug('selecting ruler')
self.metadata['ruler'] = 'ruler'
return False
+ def custom_unit_change_cb(self, widget):
+ try:
+ new = float(widget.get_text())
+ if new > 7: # less than 7 results in overlapping.
+ self._canvas.add_a_ruler(self._r)
+ self._r.custom_unit_in_mm = new
+ self._r.draw_custom_ruler(self._r.custom_unit_in_mm)
+ self.metadata['custom_unit'] = new
+ except ValueError:
+ if widget.get_text() != '':
+ widget.set_text('25.4')
+ self.metadata['custom_unit'] = 25.4
+
def _grids_cb(self, button=None):
if self._ready:
+ self.custom_units_button.set_sensitive(False)
if self._grids_mode == "cm":
self._current = self._gcm
if hasattr(self, 'grids'):
@@ -268,6 +329,7 @@ class RulerActivity(activity.Activity):
def _angles_cb(self, button=None):
if self._ready:
+ self.custom_units_button.set_sensitive(False)
if self._angles_mode == "90":
self._current = self._a90
if hasattr(self, 'angles'):
@@ -285,6 +347,7 @@ class RulerActivity(activity.Activity):
def _checker_cb(self, button=None):
if self._ready:
+ self.custom_units_button.set_sensitive(False)
self._current = self._c
self._canvas.add_a_ruler(self._current)
_logger.debug('selecting checker')