import gtk import gobject class Window: def __init__(self, ds): self.ds = ds # Top-level Window creation self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_geometry_hints(); self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy_event) # Menu Bar self.menubar = gtk.MenuBar() mi = gtk.MenuItem('_File') self.menubar.append(mi) mi = gtk.MenuItem('_Report') self.menubar.append(mi) mi = gtk.MenuItem('_Help') self.menubar.append(mi) # Projects Table self.updateProjects() # Bottom Control Bar self.mark_label = gtk.Label() adjust_button = gtk.Button('Adjust') in_button = gtk.Button('In') out_button = gtk.Button('Out') hbox = gtk.HBox() hbox.pack_start(self.mark_label) hbox.pack_start(adjust_button) hbox.pack_start(in_button) hbox.pack_start(out_button) vbox = gtk.VBox() vbox.pack_start(self.menubar) vbox.pack_start(self.projects_table) vbox.pack_start(gtk.HSeparator()) vbox.pack_start(hbox) self.window.add(vbox) def updateProjects(self): self.projects = self.ds.getProjects() self.projects_table = gtk.Table(rows = 2, columns = 9) new_project_combobox = gtk.combo_box_entry_new_text() project_names = self.projects.values() project_names.sort() for project in project_names: new_project_combobox.append_text(project) col_headers = ('Project', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Tot') for i in range(len(col_headers)): l = gtk.Label() l.set_markup('%s' % col_headers[i]) l.set_size_request(35 if i > 0 else 200, -1) self.projects_table.attach(l, i, i + 1, 0, 1) self.projects_table.attach(new_project_combobox, 0, 1, 1, 2) def main(self): self.window.show_all() gtk.main() def delete_event(self, widget, event, data=None): return False def destroy_event(self, widget, data=None): gtk.main_quit()