def show_project_dialog(pid=None): projectdialog = gtk.Dialog(title="Project", flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) projectdialog.vbox.set_size_request(250, 215) label = gtk.Label() label.set_alignment(0, 0) if pid is None: label.set_markup("<big><b>Add Project</b></big>") else: label.set_markup("<big><b>Edit Project</b></big>") projectdialog.vbox.pack_start(label, False) label = gtk.Label("Name") label.set_alignment(0.0, 0.0) projectdialog.vbox.pack_start(label, False) projectdialog.ProjectNameEntry = gtk.Entry(max=50) projectdialog.ProjectNameEntry.set_activates_default(True) projectdialog.vbox.pack_start(projectdialog.ProjectNameEntry, False) hbox = gtk.HBox() vbox = gtk.VBox() label = gtk.Label("Status") label.set_alignment(0.0, 0.0) vbox.pack_start(label) projectdialog.ProjectStatusCombo = gtk.combo_box_new_text() for status in statuslist: projectdialog.ProjectStatusCombo.append_text(status) vbox.pack_start(projectdialog.ProjectStatusCombo) projectdialog.ProjectPriorityEntry = gtk.Entry(max=3) hbox.pack_start(vbox, False) vbox = gtk.VBox() label = gtk.Label("Priority") label.set_alignment(0.0, 0.0) vbox.pack_start(label) vbox.pack_start(projectdialog.ProjectPriorityEntry) hbox.pack_start(vbox) projectdialog.vbox.pack_start(hbox, False, padding=5) label = gtk.Label("Categories (comma seperated)") label.set_alignment(0.0, 0.0) projectdialog.vbox.pack_start(label) projectdialog.ProjectTagEntry = gtk.Entry() projectdialog.ProjectTagEntry.set_activates_default(True) projectdialog.vbox.pack_start(projectdialog.ProjectTagEntry, False) projectdialog.set_default_response(gtk.RESPONSE_ACCEPT) if pid is not None: projectdata = DBConnection.get_data("project", pid) projectdialog.ProjectNameEntry.set_text(projectdata[1]) for index, status in enumerate(statuslist): if projectdata[2] == status: projectdialog.ProjectStatusCombo.set_active(index) projectdialog.ProjectPriorityEntry.set_text(str(projectdata[3])) projectdialog.ProjectTagEntry.set_text(",".join(tag[0] for tag in DBConnection.get_tags(pid))) else: projectdialog.ProjectStatusCombo.set_active(1) projectdialog.ProjectPriorityEntry.set_text("100") projectdialog.set_position(gtk.WIN_POS_CENTER_ALWAYS) projectdialog.show_all() response = projectdialog.run() if response == gtk.RESPONSE_ACCEPT: if projectdialog.ProjectPriorityEntry.get_text().isdigit(): if pid is None: pid = DBConnection.add_project(projectdialog.ProjectNameEntry.get_text(), get_active_text(projectdialog.ProjectStatusCombo), projectdialog.ProjectPriorityEntry.get_text()) else: DBConnection.update_table("project", "name = '%(name)s', status = '%(status)s', priority = %(priority)s" % { "name": projectdialog.ProjectNameEntry.get_text().replace("'", "''"), "status": get_active_text(projectdialog.ProjectStatusCombo), "priority": projectdialog.ProjectPriorityEntry.get_text()}, pid) DBConnection.set_tags(pid, projectdialog.ProjectTagEntry.get_text().replace(", ", ",")) projectdialog.destroy() return True else: projectdialog.destroy() return False