project hour labels clickable to select project

This commit is contained in:
Josh Holtrop 2011-03-20 11:04:23 -04:00
parent 16f205178f
commit 19f3e8ec1b

View File

@ -97,6 +97,7 @@ class Window:
self.projects_container.remove(self.projects_table) self.projects_container.remove(self.projects_table)
self.projects = self.ds.getProjects() self.projects = self.ds.getProjects()
self.project_hour_labels = {} self.project_hour_labels = {}
self.project_labels_to_pnum = {}
projects_to_show = {} projects_to_show = {}
for p in self.shown_projects: for p in self.shown_projects:
projects_to_show[p] = 1 projects_to_show[p] = 1
@ -106,6 +107,7 @@ class Window:
self.tasks = self.ds.getTasks(self.currProject) self.tasks = self.ds.getTasks(self.currProject)
self.task_hour_labels = {} self.task_hour_labels = {}
self.task_labels_to_pnum = {}
# Header row # Header row
col_headers = ('Project', col_headers = ('Project',
@ -132,14 +134,17 @@ class Window:
pnum = self.getProjectNum(pname) pnum = self.getProjectNum(pname)
e = projTblCell(pname, pnum) e = projTblCell(pname, pnum)
e.get_child().set_alignment(0.0, 0.0) e.get_child().set_alignment(0.0, 0.0)
self.project_labels_to_pnum[e.get_child()] = pnum
e.add_events(gtk.gdk.BUTTON_PRESS_MASK) e.add_events(gtk.gdk.BUTTON_PRESS_MASK)
e.connect("button-press-event", self.project_click_event) e.connect("button-press-event", self.project_click_event)
self.projects_table.attach(e, 0, 1, row, row + 1) self.projects_table.attach(e, 0, 1, row, row + 1)
self.project_hour_labels[pnum] = {} self.project_hour_labels[pnum] = {}
for i in range(8): for i in range(8):
e = projTblCell(" ", pnum) e = projTblCell('', pnum)
self.projects_table.attach(e, i + 1, i + 2, row, row + 1) self.projects_table.attach(e, i + 1, i + 2, row, row + 1)
self.project_hour_labels[pnum][i] = e.get_child() self.project_hour_labels[pnum][i] = e.get_child()
e.connect("button-press-event", self.project_click_event)
self.project_labels_to_pnum[e.get_child()] = pnum
row += 1 row += 1
# Totals row # Totals row
@ -297,7 +302,7 @@ class Window:
pnum = 0 pnum = 0
if pnum: if pnum:
self.shown_projects[pnum] = 1 self.shown_projects[pnum] = 1
self.project_select_event(pname) self.project_select_event(pnum)
self.updateProjects() self.updateProjects()
def project_key_press_event(self, widget, event, data=None): def project_key_press_event(self, widget, event, data=None):
@ -310,14 +315,15 @@ class Window:
lbl = ebox.get_child() lbl = ebox.get_child()
if lbl: if lbl:
if event.button == 1: if event.button == 1:
return self.project_select_event(lbl.get_text()) if lbl in self.project_labels_to_pnum:
return self.project_select_event(
self.project_labels_to_pnum[lbl])
elif event.button == 3: elif event.button == 3:
# TODO: handle right-click # TODO: handle right-click
return True return True
return False return False
def project_select_event(self, projectName): def project_select_event(self, pnum):
pnum = self.getProjectNum(projectName)
if pnum: if pnum:
self.currProject = pnum self.currProject = pnum
self.updateProjects() self.updateProjects()