def getItemTooltipData(self, task): if not self.settings.getboolean('view', 'descriptionpopups'): return [] result = [(self.iconName(task, task in self.curselection()), [self.getItemText(task)])] if task.description(): result.append((None, map(lambda x: x.rstrip('\n'), task.description().split('\n')))) if task.notes(): result.append(('note_icon', sorted([note.subject() for note in task.notes()]))) if task.attachments(): result.append(('paperclip_icon', sorted([unicode(attachment) for attachment in task.attachments()]))) return result
def taskNode(self, task): node = self.baseCompositeNode(task, 'task', self.taskNode) node.setAttribute('status', str(task.getStatus())) if task.startDate() != date.Date(): node.setAttribute('startdate', str(task.startDate())) if task.dueDate() != date.Date(): node.setAttribute('duedate', str(task.dueDate())) if task.completionDate() != date.Date(): node.setAttribute('completiondate', str(task.completionDate())) if task.recurrence(): node.appendChild(self.recurrenceNode(task.recurrence())) if task.budget() != date.TimeDelta(): node.setAttribute('budget', self.budgetAsAttribute(task.budget())) if task.priority() != 0: node.setAttribute('priority', str(task.priority())) if task.hourlyFee() != 0: node.setAttribute('hourlyFee', str(task.hourlyFee())) if task.fixedFee() != 0: node.setAttribute('fixedFee', str(task.fixedFee())) if task.reminder() != None: node.setAttribute('reminder', str(task.reminder())) if task.shouldMarkCompletedWhenAllChildrenCompleted != None: node.setAttribute('shouldMarkCompletedWhenAllChildrenCompleted', str(task.shouldMarkCompletedWhenAllChildrenCompleted)) for effort in task.efforts(): node.appendChild(self.effortNode(effort)) for note in task.notes(): node.appendChild(self.noteNode(note)) for attachment in task.attachments(): node.appendChild(self.attachmentNode(attachment)) return node
def __init__(self, parent, task, settings, *args, **kwargs): super(AttachmentPage, self).__init__(parent, task, *args, **kwargs) self.settings = settings attachmentBox = widgets.BoxWithBoxSizer(self, label=_("Attachments")) self._listCtrl = wx.ListCtrl(attachmentBox, style=wx.LC_REPORT) self._listCtrl.InsertColumn(0, _("Attachment filenames")) self._listCtrl.SetColumnWidth(0, 500) attachmentBox.add(self._listCtrl, flag=wx.EXPAND | wx.ALL, proportion=1) self._listData = {} boxSizer = wx.BoxSizer(wx.HORIZONTAL) self._buttonBox = widgets.ButtonBox( attachmentBox, (_("Open attachment"), self.onOpen), (_("Remove attachment"), self.onRemove), (_("Edit filename"), self.onEdit), orientation=wx.HORIZONTAL, ) boxSizer.Add(self._buttonBox) buttonBox2 = widgets.ButtonBox( attachmentBox, (_("Browse for new attachment..."), self.onBrowse), orientation=wx.HORIZONTAL ) boxSizer.Add(buttonBox2) attachmentBox.add(boxSizer) attachmentBox.fit() filenameBox = widgets.BoxWithBoxSizer(self, label=_("Attachment filename"), orientation=wx.HORIZONTAL) self._urlEntry = widgets.SingleLineTextCtrlWithEnterButton( filenameBox, label=_("Add attachment"), onEnter=self.onAdd ) filenameBox.add(self._urlEntry, proportion=1) filenameBox.fit() self.add(attachmentBox, proportion=1, border=5) self.add(filenameBox, proportion=0, border=5) self.fit() self.bindEventHandlers() for att in task.attachments(): self.addAttachmentToListCtrl(att) if task.attachments(): self._listCtrl.SetItemState(0, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED) else: self.onDeselectItem()
def taskNode(self, parentNode, task): # pylint: disable=W0621 maxDateTime = self.maxDateTime node = self.baseCompositeNode(parentNode, task, 'task', self.taskNode) node.attrib['status'] = str(task.getStatus()) if task.plannedStartDateTime() != maxDateTime: node.attrib['plannedstartdate'] = str(task.plannedStartDateTime()) if task.dueDateTime() != maxDateTime: node.attrib['duedate'] = str(task.dueDateTime()) if task.actualStartDateTime() != maxDateTime: node.attrib['actualstartdate'] = str(task.actualStartDateTime()) if task.completionDateTime() != maxDateTime: node.attrib['completiondate'] = str(task.completionDateTime()) if task.percentageComplete(): node.attrib['percentageComplete'] = str(task.percentageComplete()) if task.recurrence(): self.recurrenceNode(node, task.recurrence()) if task.budget() != date.TimeDelta(): node.attrib['budget'] = self.budgetAsAttribute(task.budget()) if task.priority(): node.attrib['priority'] = str(task.priority()) if task.hourlyFee(): node.attrib['hourlyFee'] = str(task.hourlyFee()) if task.fixedFee(): node.attrib['fixedFee'] = str(task.fixedFee()) reminder = task.reminder() if reminder != maxDateTime and reminder != None: node.attrib['reminder'] = str(reminder) reminderBeforeSnooze = task.reminder(includeSnooze=False) if reminderBeforeSnooze != None and reminderBeforeSnooze < task.reminder(): node.attrib['reminderBeforeSnooze'] = str(reminderBeforeSnooze) prerequisiteIds = ' '.join([prerequisite.id() for prerequisite in \ sortedById(task.prerequisites())]) if prerequisiteIds: node.attrib['prerequisites'] = prerequisiteIds if task.shouldMarkCompletedWhenAllChildrenCompleted() != None: node.attrib['shouldMarkCompletedWhenAllChildrenCompleted'] = \ str(task.shouldMarkCompletedWhenAllChildrenCompleted()) for effort in sortedById(task.efforts()): self.effortNode(node, effort) for eachNote in sortedById(task.notes()): self.noteNode(node, eachNote) for attachment in sortedById(task.attachments()): self.attachmentNode(node, attachment) return node
def edit(self, tasks=None, edits=None): tasks = tasks or [] editcommand = command.EditTaskCommand(self.taskList, tasks) for task in tasks: task.setSubject('New subject') task.setDescription('New description') task.setBudget(date.TimeDelta(hours=1)) task.setCompletionDate() att = attachment.FileAttachment('attachment') if att in task.attachments(): task.removeAttachments(att) else: task.addAttachments(att) if self.category in task.categories(): task.removeCategory(self.category) else: task.addCategory(self.category) for edit in edits or []: edit() editcommand.do()
def taskNode(self, task): # pylint: disable-msg=W0621 maxDateTime = self.maxDateTime node = self.baseCompositeNode(task, 'task', self.taskNode) node.setAttribute('status', str(task.getStatus())) if task.startDateTime() != maxDateTime: node.setAttribute('startdate', str(task.startDateTime())) if task.dueDateTime() != maxDateTime: node.setAttribute('duedate', str(task.dueDateTime())) if task.completionDateTime() != maxDateTime: node.setAttribute('completiondate', str(task.completionDateTime())) if task.percentageComplete() != 0: node.setAttribute('percentageComplete', str(task.percentageComplete())) if task.recurrence(): node.appendChild(self.recurrenceNode(task.recurrence())) if task.budget() != date.TimeDelta(): node.setAttribute('budget', self.budgetAsAttribute(task.budget())) if task.priority() != 0: node.setAttribute('priority', str(task.priority())) if task.hourlyFee() != 0: node.setAttribute('hourlyFee', str(task.hourlyFee())) if task.fixedFee() != 0: node.setAttribute('fixedFee', str(task.fixedFee())) if task.reminder() != None: node.setAttribute('reminder', str(task.reminder())) prerequisiteIds = ' '.join([prerequisite.id() for prerequisite in \ task.prerequisites()]) if prerequisiteIds: node.setAttribute('prerequisites', prerequisiteIds) if task.shouldMarkCompletedWhenAllChildrenCompleted() != None: node.setAttribute('shouldMarkCompletedWhenAllChildrenCompleted', str(task.shouldMarkCompletedWhenAllChildrenCompleted())) for effort in task.efforts(): node.appendChild(self.effortNode(effort)) for eachNote in task.notes(): node.appendChild(self.noteNode(eachNote)) for attachment in task.attachments(): node.appendChild(self.attachmentNode(attachment)) return node
def taskNode(self, task): # pylint: disable-msg=W0621 node = self.baseCompositeNode(task, "task", self.taskNode) node.setAttribute("status", str(task.getStatus())) if task.startDateTime() != date.DateTime(): node.setAttribute("startdate", str(task.startDateTime())) if task.dueDateTime() != date.DateTime(): node.setAttribute("duedate", str(task.dueDateTime())) if task.completionDateTime() != date.DateTime(): node.setAttribute("completiondate", str(task.completionDateTime())) if task.percentageComplete() != 0: node.setAttribute("percentageComplete", str(task.percentageComplete())) if task.recurrence(): node.appendChild(self.recurrenceNode(task.recurrence())) if task.budget() != date.TimeDelta(): node.setAttribute("budget", self.budgetAsAttribute(task.budget())) if task.priority() != 0: node.setAttribute("priority", str(task.priority())) if task.hourlyFee() != 0: node.setAttribute("hourlyFee", str(task.hourlyFee())) if task.fixedFee() != 0: node.setAttribute("fixedFee", str(task.fixedFee())) if task.reminder() != None: node.setAttribute("reminder", str(task.reminder())) prerequisiteIds = " ".join([prerequisite.id() for prerequisite in task.prerequisites()]) if prerequisiteIds: node.setAttribute("prerequisites", prerequisiteIds) if task.shouldMarkCompletedWhenAllChildrenCompleted() != None: node.setAttribute( "shouldMarkCompletedWhenAllChildrenCompleted", str(task.shouldMarkCompletedWhenAllChildrenCompleted()) ) for effort in task.efforts(): node.appendChild(self.effortNode(effort)) for eachNote in task.notes(): node.appendChild(self.noteNode(eachNote)) for attachment in task.attachments(): node.appendChild(self.attachmentNode(attachment)) return node
def attachmentImageIndex(self, task, which): return self.imageIndex['attachment'] if task.attachments() else -1