Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2014-07-10 15:37:11 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2014-07-10 15:37:11 (GMT)
commit735871567090053d3c132e4396b8fec880ec70a6 (patch)
tree3ebd72a71f09272ebb6c4f2c6f9af67ddedb9ec9
parentcbdea15def11047f0c8e28eb0acb2b1478db1c10 (diff)
Use black fonts to improve text readability
-rw-r--r--budgetscreen.py12
-rw-r--r--chartscreen.py16
-rw-r--r--colors.py20
-rw-r--r--registerscreen.py6
4 files changed, 45 insertions, 9 deletions
diff --git a/budgetscreen.py b/budgetscreen.py
index 48e952b..432a237 100644
--- a/budgetscreen.py
+++ b/budgetscreen.py
@@ -125,10 +125,18 @@ class BudgetScreen(Gtk.VBox):
# If there is no category, display as Unknown
if c is '':
description = _('Unknown')
- catbox = Gtk.Label(label=description)
- catbox.set_padding(10, 0)
color = colors.get_category_color_str(c)
+ if colors.is_too_light(color):
+ font_color = '#000000'
+ else:
+ font_color = '#FFFFFF'
+
+ catbox = Gtk.Label()
+ catbox.set_markup(
+ '<span color="%s">%s</span>' % (font_color, description))
+
+ catbox.set_padding(10, 0)
ebox = Gtk.EventBox()
parse, color = Gdk.Color.parse(color)
diff --git a/chartscreen.py b/chartscreen.py
index 94f765d..139a48c 100644
--- a/chartscreen.py
+++ b/chartscreen.py
@@ -130,18 +130,24 @@ class ChartScreen(Gtk.VBox):
# If there is no category, display as Unknown
if c is '':
description = _('Unknown')
+
+ color = colors.get_category_color_str(c)
+ if colors.is_too_light(color):
+ font_color = '#000000'
+ else:
+ font_color = '#FFFFFF'
+
catlabel = Gtk.Label()
catlabel.set_markup(
- '<span size="x-large" color="white">%s</span>' % description)
+ '<span size="x-large" color="%s">%s</span>' % (font_color,
+ description))
catlabel.props.margin = 10
catgroup.add_widget(catlabel)
- color = colors.get_category_color_str(c)
-
amountlabel = Gtk.Label()
amountlabel.set_markup(
- '<span size="x-large" color="white">%s</span>' %
- locale.currency(self.category_total[c]))
+ '<span size="x-large" color="%s">%s</span>' %
+ (font_color, locale.currency(self.category_total[c])))
amountgroup.add_widget(amountlabel)
hbox.pack_start(catlabel, True, True, 20)
diff --git a/colors.py b/colors.py
index af75e1a..161c0e6 100644
--- a/colors.py
+++ b/colors.py
@@ -1,3 +1,5 @@
+import logging
+
CREDIT_COLOR = '#009900'
DEBIT_COLOR = '#ff4040'
@@ -41,3 +43,21 @@ def get_category_color_str(catname):
color = get_category_color(catname)
return "#%02x%02x%02x" % \
(int(color[0] * 255), int(color[1] * 255), int(color[2] * 255))
+
+
+def is_too_light(color):
+ return _luminance(color) > 96
+
+
+def _luminance(color):
+ ''' Calculate luminance value '''
+ return int(color[1:3], 16) * 0.3 + int(color[3:5], 16) * 0.6 + \
+ int(color[5:7], 16) * 0.1
+
+
+def test_luminances():
+ for cat_color in CATEGORY_COLORS:
+ color = "#%02x%02x%02x" % \
+ (int(cat_color[0] * 255), int(cat_color[1] * 255),
+ int(cat_color[2] * 255))
+ logging.error('color %s luminance %s', color, _luminance(color))
diff --git a/registerscreen.py b/registerscreen.py
index e5d9d46..0797e67 100644
--- a/registerscreen.py
+++ b/registerscreen.py
@@ -200,8 +200,10 @@ class RegisterScreen(Gtk.VBox):
category = t['category']
cell_renderer.set_property('text', category)
if category:
- cell_renderer.set_property(
- 'background', colors.get_category_color_str(category))
+ category_color = colors.get_category_color_str(category)
+ cell_renderer.set_property('background', category_color)
+ if not colors.is_too_light(category_color):
+ cell_renderer.set_property('foreground', '#FFFFFF')
else:
cell_renderer.set_property('background', None)