billreminder r690 - in trunk: . src/gui src/gui/widgets
- From: ogmaciel svn gnome org
- To: svn-commits-list gnome org
- Subject: billreminder r690 - in trunk: . src/gui src/gui/widgets
- Date: Sun, 25 Jan 2009 20:41:28 +0000 (UTC)
Author: ogmaciel
Date: Sun Jan 25 20:41:28 2009
New Revision: 690
URL: http://svn.gnome.org/viewvc/billreminder?rev=690&view=rev
Log:
Trying to make Timeline Bullets handle multiple status.
Modified:
trunk/ChangeLog
trunk/src/gui/maindialog.py
trunk/src/gui/widgets/timeline.py
Modified: trunk/src/gui/maindialog.py
==============================================================================
--- trunk/src/gui/maindialog.py (original)
+++ trunk/src/gui/maindialog.py Sun Jan 25 20:41:28 2009
@@ -78,7 +78,7 @@
if exists(join(USER_CFG_PATH, CFG_NAME)):
from lib.migrate_to_gconf import migrate
migrate(join(USER_CFG_PATH, CFG_NAME))
-
+
self.gconf_client = gconf.client_get_default()
self.message = Message()
# Connects to the database
@@ -228,7 +228,7 @@
if not records:
return 0
-
+
# Loops through bills collection
path = 0
for rec in records:
@@ -240,6 +240,7 @@
def reloadTreeView(self, *arg):
# Update list with updated record
status = self.gconf_client.get_int(GCONF_GUI_PATH + 'show_paid_bills')
+
month = self.timeline.value.month
year = self.timeline.value.year
Modified: trunk/src/gui/widgets/timeline.py
==============================================================================
--- trunk/src/gui/widgets/timeline.py (original)
+++ trunk/src/gui/widgets/timeline.py Sun Jan 25 20:41:28 2009
@@ -15,7 +15,7 @@
OVERDUE, TO_BE_PAID, PAID = range(-1, 2)
debug = False
-
+
def __init__(self, date=None, amountDue=None, estimated=False, status=0,
overthreshold=False, multi=False, tooltip=''):
self.date = date
@@ -60,7 +60,7 @@
- callback is a functions that receive a datatetime.date object
and return a Bullet object
"""
-
+
# Treat the parameter
if date and not isinstance(date, datetime.date) and \
isinstance(date, tuple) and len(date) == 3:
@@ -131,12 +131,12 @@
self.style.attach(self.window)
self.style.set_background(self.window, gtk.STATE_NORMAL)
self.set_property('can-focus', True)
-
+
self.select_date(self.value.day, self.value.month, self.value.year)
-
+
# Define widget minimum size
self.set_size_request(540, 81)
-
+
def do_unrealize(self):
self.window.destroy()
@@ -162,7 +162,7 @@
# TODO Organize
""" Draw a horizontal timeline """
self._layout = self.create_pango_layout('')
-
+
# base box
self.window.draw_rectangle(self.style.base_gc[gtk.STATE_NORMAL], True,
self._box_rect.x,
@@ -187,85 +187,87 @@
x = self._box_rect.x + self._div_width * i + self._div_width / 2
width = self._bullet_radius
-
+
# bullets
if self._bullets[i] and i < self._display_days:
arc = (2 * pi) / 40
bullet_ = self._bullets[i]
- if bullet_.status == Bullet.PAID:
- cr.set_source_rgb(0.27, 0.81, 0.44)
- cr.set_source_rgb(0.19, 0.51, 0)
- elif bullet_.status == Bullet.OVERDUE:
- cr.set_source_rgb(1, 0.16, 0.16)
- else:
- cr.set_source_rgb(0.52, 0.81, 0.87)
- if bullet_.multi:
- x += width / 4
- y += width / 3
+
+ for status in bullet_.status:
+ if status == Bullet.PAID:
+ cr.set_source_rgb(0.27, 0.81, 0.44)
+ cr.set_source_rgb(0.19, 0.51, 0)
+ elif status == Bullet.OVERDUE:
+ cr.set_source_rgb(1, 0.16, 0.16)
+ else:
+ cr.set_source_rgb(0.52, 0.81, 0.87)
+ if bullet_.multi:
+ x += width / 4
+ y += width / 3
+ cr.arc(x, y, width, 0, 2 * pi)
+ cr.fill_preserve()
+ cr.set_line_width(width / 8)
+ if status == Bullet.PAID:
+ cr.set_source_rgb(0.19, 0.51, 0)
+ elif status == Bullet.OVERDUE:
+ cr.set_source_rgb(0.47, 0, 0)
+ else:
+ cr.set_source_rgb(0.13, 0.4, 0.48)
+ #cr.arc(x, y, width, 0, 2 * pi)
+ cr.stroke()
+ x -= width / 4
+ y -= width / 3
+ if status == Bullet.PAID:
+ cr.set_source_rgb(0.27, 0.81, 0.44)
+ elif status == Bullet.OVERDUE:
+ cr.set_source_rgb(1, 0.16, 0.16)
+ else:
+ cr.set_source_rgb(0.52, 0.81, 0.87)
cr.arc(x, y, width, 0, 2 * pi)
- cr.fill_preserve()
- cr.set_line_width(width / 8)
- if bullet_.status == Bullet.PAID:
+ cr.fill()
+
+ if status == Bullet.PAID:
cr.set_source_rgb(0.19, 0.51, 0)
- elif bullet_.status == Bullet.OVERDUE:
+ elif status == Bullet.OVERDUE:
cr.set_source_rgb(0.47, 0, 0)
else:
cr.set_source_rgb(0.13, 0.4, 0.48)
- #cr.arc(x, y, width, 0, 2 * pi)
- cr.stroke()
- x -= width / 4
- y -= width / 3
- if bullet_.status == Bullet.PAID:
- cr.set_source_rgb(0.27, 0.81, 0.44)
- elif bullet_.status == Bullet.OVERDUE:
- cr.set_source_rgb(1, 0.16, 0.16)
- else:
- cr.set_source_rgb(0.52, 0.81, 0.87)
- cr.arc(x, y, width, 0, 2 * pi)
- cr.fill()
- if bullet_.status == Bullet.PAID:
- cr.set_source_rgb(0.19, 0.51, 0)
- elif bullet_.status == Bullet.OVERDUE:
- cr.set_source_rgb(0.47, 0, 0)
- else:
- cr.set_source_rgb(0.13, 0.4, 0.48)
-
- if bullet_.overthreshold:
- cr.set_line_width(width / 3)
- else:
- cr.set_line_width(width / 5)
- if bullet_.estimated:
- for j in range(0, 40, 2):
- if bullet_.overthreshold:
- cr.arc(x, y, width, arc * j, arc * (j + 1))
- else:
- cr.arc(x, y, width, arc * j, arc * (j + 0.5))
+ if bullet_.overthreshold:
+ cr.set_line_width(width / 3)
+ else:
+ cr.set_line_width(width / 5)
+ if bullet_.estimated:
+ for j in range(0, 40, 2):
+ if bullet_.overthreshold:
+ cr.arc(x, y, width, arc * j, arc * (j + 1))
+ else:
+ cr.arc(x, y, width, arc * j, arc * (j + 0.5))
+ cr.stroke()
+ else:
+ cr.arc(x, y, width, 0, 2 * pi)
cr.stroke()
- else:
- cr.arc(x, y, width, 0, 2 * pi)
- cr.stroke()
- y = y_
+ y = y_
- cr.set_source_rgb(0.4, 0.4, 0.4)
- cr.arc(x, y, width / 5, 0, 2 * pi)
- cr.fill()
- if self._dates[i].weekday() == 0:
- cr.set_line_width(max(width / 8, 0.8))
- cr.move_to(x, y - max(width / 2, 4))
- cr.line_to(x, y + max(width / 2, 4))
- cr.stroke()
-
- if self._dates[i] == datetime.date.today():
- cr.set_line_width(max(width / 8, 0.8))
cr.set_source_rgb(0.4, 0.4, 0.4)
- h_ = (self._box_rect.height + self._box_rect.y) / 10
- for j in range(0, 10, 2):
- cr.move_to(x, self._box_rect.y + h_ * j + 1)
- cr.line_to(x, self._box_rect.y + h_ * (j + 1))
+ cr.arc(x, y, width / 5, 0, 2 * pi)
+ cr.fill()
+ if self._dates[i].weekday() == 0:
+ cr.set_line_width(max(width / 8, 0.8))
+ cr.move_to(x, y - max(width / 2, 4))
+ cr.line_to(x, y + max(width / 2, 4))
cr.stroke()
+ if self._dates[i] == datetime.date.today():
+ cr.set_line_width(max(width / 8, 0.8))
+ cr.set_source_rgb(0.4, 0.4, 0.4)
+ h_ = (self._box_rect.height + self._box_rect.y) / 10
+ for j in range(0, 10, 2):
+ cr.move_to(x, self._box_rect.y + h_ * j + 1)
+ cr.line_to(x, self._box_rect.y + h_ * (j + 1))
+ cr.stroke()
+
## year label
if (self._dates[i].day, self._dates[i].month) == (1, 1) or \
(self._dates[i].month == 1 and self._dates[i].day <= 7 and
@@ -281,7 +283,7 @@
self._box_rect.y + \
self._box_rect.height + 12,
self._layout)
-
+
line_h = 6
## month label
@@ -299,7 +301,7 @@
self._box_rect.y + \
self._box_rect.height + 12,
self._layout)
-
+
line_h = 6
self.window.draw_rectangle(line_cg[self.state],
@@ -372,7 +374,7 @@
1,
self.width - 2,
self.height -2)
-
+
def do_key_press_event(self, event):
if gtk.gdk.keyval_name(event.keyval) == 'Right':
@@ -544,7 +546,7 @@
self._bullet_radius = (self._box_rect.height / 2) / 2
else:
self._bullet_radius = (self._div_width - self._div_width / 4) / 2
-
+
return False
def _dist_dates(self, first=None):
@@ -566,7 +568,7 @@
first = selected.replace(month=month, year=year)
elif self._type == self.YEAR:
first = selected.replace(year=selected.year - self.position)
-
+
if self._type == self.DAY:
for i in range(self._display_days + 1):
self._dates[i] = first + datetime.timedelta(days=i)
@@ -635,14 +637,14 @@
self.set_position(self.position - 1, True)
elif self.position < (self._display_days - 1) / 2:
self.set_position(self.position + 1, True)
-
+
if self.position == (self._display_days - 1) / 2:
self.value = self._dates[self.position]
self._dist_dates()
self._value_changed()
-
+
return self.position != (self._display_days - 1) / 2
-
+
def move(self, pos, update=True, redraw=True):
position_old = self.position
self.position = round((pos - self._box_rect.x) / self._div_width)
@@ -738,7 +740,7 @@
self.value = self.value.replace(day=day, month=month, year=year)
self.queue_draw_area(0, 0, self.width, self.height)
self._value_changed()
-
+
def set_bullet_function(self, func):
self._bullet_func = func
@@ -746,8 +748,27 @@
if debug:
print date.day
+ bullets = []
+
+ today = datetime.date.today()
+ yesterday = today - datetime.timedelta(days=1)
+ tomorrow = today + datetime.timedelta(days=1)
+
+ # date=None, amountDue=None, estimated=False, status=0,
+ # overthreshold=False, multi=False, tooltip=''
+ if date == today:
+ # return a multi-record bullet
+ return Bullet(date, 50, False, [1,0], False, True, 'Tooltip')
+ elif date == yesterday:
+ return Bullet(date, 200, True, [0,1], True, True, 'Yep. This is a tooltip')
+ elif date == tomorrow:
+ return Bullet(date, 20, True, [0], False, False, 'What? Ah, tooltip...')
+
+ return None
+
+ """
if date == datetime.date(2008, 9, 10):
- return Bullet(date, 50, False, 1, False, False, 'Tooltip')
+ return Bullet(today, 50, False, 1, False, False, 'Tooltip')
elif date == datetime.date(2008, 9, 20):
return Bullet(date, 200, False, -1, True, True, 'Another tooltip')
elif date == datetime.date(2008, 9, 29):
@@ -758,6 +779,7 @@
return Bullet(date, 700, False, 0, True, False, 'Do you really want more tooltip?')
return None
+ """
if __name__ == '__main__':
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]