|
+ def advanceState(self, item, attributeName):
+ # If there is one, remove the existing reminder
+ remindable = pim.Remindable(item)
+ if remindable.getUserReminder(expiredToo=False) is not None:
+ remindable.userReminderTime = None
+ return
+
+ # No existing one -- create one.
+ # @@@ unless this is a recurring event, for now.
+ if pim.has_stamp(item, pim.EventStamp) and pim.EventStamp(item).isRecurring():
+ return # ignore the click.
+ remindable.userReminderTime = pim.Reminder.defaultTime()
+
+ def ReadOnly (self, (item, attribute)):
+ """
+ Until the Detail View supports read-only reminders, always allow
+ reminders to be removed.
+
+ """
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| Parlante |
+ def advanceState(self, item, attributeName):
+ # If there is one, remove the existing reminder
+ remindable = pim.Remindable(item)
+ if remindable.getUserReminder(expiredToo=False) is not None:
+ remindable.userReminderTime = None
+ return
+
+ # No existing one -- create one.
+ # @@@ unless this is a recurring event, for now.
+ if pim.has_stamp(item, pim.EventStamp) and pim.EventStamp(item).isRecurring():
+ return # ignore the click.
+ remindable.userReminderTime = pim.Reminder.defaultTime()
+
+ def ReadOnly (self, (item, attribute)):
+ """
+ Until the Detail View supports read-only reminders, always allow
+ reminders to be removed.
+
+ """
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 09 Apr, 03:30 |
| Parlante |
+ def advanceState(self, item, attributeName):
+ # If there is one, remove the existing reminder
+ remindable = pim.Remindable(item)
+ if remindable.getUserReminder(expiredToo=False) is not None:
+ remindable.userReminderTime = None
+ return
+
+ # No existing one -- create one.
+ # @@@ unless this is a recurring event, for now.
+ if pim.has_stamp(item, pim.EventStamp) and pim.EventStamp(item).isRecurring():
+ return # ignore the click.
+ remindable.userReminderTime = pim.Reminder.defaultTime()
+
+ def ReadOnly (self, (item, attribute)):
+ """
+ Until the Detail View supports read-only reminders, always allow
+ reminders to be removed.
+
+ """
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 09 Apr, 03:30 |
| Parlante |
+ def advanceState(self, item, attributeName):
+ # If there is one, remove the existing reminder
+ remindable = pim.Remindable(item)
+ if remindable.getUserReminder(expiredToo=False) is not None:
+ remindable.userReminderTime = None
+ return
+
+ # No existing one -- create one.
+ # @@@ unless this is a recurring event, for now.
+ if pim.has_stamp(item, pim.EventStamp) and pim.EventStamp(item).isRecurring():
+ return # ignore the click.
+ remindable.userReminderTime = pim.Reminder.defaultTime()
+
+ def ReadOnly (self, (item, attribute)):
+ """
+ Until the Detail View supports read-only reminders, always allow
+ reminders to be removed.
+
+ """
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 09 Apr, 03:30 |
| Parlante |
+ def advanceState(self, item, attributeName):
+ # If there is one, remove the existing reminder
+ remindable = pim.Remindable(item)
+ if remindable.getUserReminder(expiredToo=False) is not None:
+ remindable.userReminderTime = None
+ return
+
+ # No existing one -- create one.
+ # @@@ unless this is a recurring event, for now.
+ if pim.has_stamp(item, pim.EventStamp) and pim.EventStamp(item).isRecurring():
+ return # ignore the click.
+ remindable.userReminderTime = pim.Reminder.defaultTime()
+
+ def ReadOnly (self, (item, attribute)):
+ """
+ Until the Detail View supports read-only reminders, always allow
+ reminders to be removed.
+
+ """
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 09 Apr, 03:30 |
| Parlante |
+ def advanceState(self, item, attributeName):
+ # If there is one, remove the existing reminder
+ remindable = pim.Remindable(item)
+ if remindable.getUserReminder(expiredToo=False) is not None:
+ remindable.userReminderTime = None
+ return
+
+ # No existing one -- create one.
+ # @@@ unless this is a recurring event, for now.
+ if pim.has_stamp(item, pim.EventStamp) and pim.EventStamp(item).isRecurring():
+ return # ignore the click.
+ remindable.userReminderTime = pim.Reminder.defaultTime()
+
+ def ReadOnly (self, (item, attribute)):
+ """
+ Until the Detail View supports read-only reminders, always allow
+ reminders to be removed.
+
+ """
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 09 Apr, 03:30 |
|
h will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
|
h will have "Read", "Unread", and "NeedsReply" tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ ("Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 07 Apr, 02:32 |
|
;""
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| ic |
;""
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sun, 07 Jun, 03:49 |
| ic |
;""
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sun, 07 Jun, 03:49 |
| ic |
;""
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sun, 07 Jun, 03:49 |
|
uot;Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| m.@osafoundation.org> |
uot;Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Mon, 03 May, 09:42 |
| m.@osafoundation.org> |
uot;Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Mon, 03 May, 09:42 |
|
;quot;Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| ia |
;quot;Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Mon, 26 May, 09:29 |
|
ot;Plain", False),
+ ("InDraft", True),
+ ("In", False),
+ ("OutDraft", True),
+ ("Out", False),
+ ("OutdateDraft", True),
+ ("Outdate", False),
+ ("IndateDraft", True),
+ ("Indate", False),
+ ("Queued", True),
+ ("Error", True),
+)
+
+def getItemCommState(itemOrUUID):
+ """ Given an item or a UUID, determine its communications state """
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ """ Return the actual name for this state """
+
+ read = (commState & readBit) and "Read" or "Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| <andre_mueningh...@fastmail.fm> |
ot;Plain&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Wed, 28 May, 18:41 |
|
><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest1.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemobmp_sourcewiztest2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemodatapic2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/data/pic2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesduplicatebmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/duplicate.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesfillOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/fillOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslogobmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/logo.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveBackbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveBack.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveForwardbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveForward.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonEnddate/time</li></span> |
|
| is |
><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest1.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemobmp_sourcewiztest2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemodatapic2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/data/pic2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesduplicatebmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/duplicate.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesfillOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/fillOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslogobmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/logo.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveBackbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveBack.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveForwardbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveForward.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonEnddate/time</li></span> |
Sun, 22 Jun, 20:09 |
|
/li></span> |
|
| is |
/li></span> |
Sun, 22 Jun, 20:09 |
| is |
/li></span> |
Sun, 22 Jun, 20:09 |
|
lways allow
+ reminders to be removed.
+
+ &amp;quot;&amp;quot;&amp;quot;
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have &amp;quot;Read&amp;quot;, &amp;quot;Unread&amp;quot;, and &amp;quot;NeedsReply&amp;quot; tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ (&amp;quot;Plain&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| <dmlyn...@gmail.com> |
lways allow
+ reminders to be removed.
+
+ &amp;quot;&amp;quot;&amp;quot;
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have &amp;quot;Read&amp;quot;, &amp;quot;Unread&amp;quot;, and &amp;quot;NeedsReply&amp;quot; tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ (&amp;quot;Plain&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Mon, 22 Nov, 00:00 |
| <dmlyn...@gmail.com> |
lways allow
+ reminders to be removed.
+
+ &amp;quot;&amp;quot;&amp;quot;
+ return False
+
+# These flag bits govern the sort position of each communications state:
+# Update = 1
+# In = 1
+# Out = 1
+# Draft = 1
+# Queued = 1
+# Sent = 1
+# NeedsReply = 1
+# Read = 1
+# Error = 1
+updateBit = 1
+inBit = updateBit * 2
+outBit = inBit * 2
+draftBit = outBit * 2
+queuedBit = draftBit * 2
+sentBit = queuedBit * 2
+needsReplyBit = sentBit * 2
+readBit = needsReplyBit * 2
+errorBit = readBit * 2
+
+# For each bit, the attribute that contributes to it
+# @@@ The ones given as strings are just placeholders.
+bitSources = (
+ (updateBit, 'isUpdate'),
+ (inBit, 'toMe'),
+ (outBit, 'fromMe'),
+ (draftBit, 'isDraft'),
+ (queuedBit, 'isQueued'),
+ (sentBit, 'isSent'),
+ (needsReplyBit, pim.ContentItem.needsReply.name),
+ (readBit, pim.ContentItem.read.name),
+ (errorBit, 'error'),
+)
+
+# All the attribute names from the above, to use for
+# monitoring on the index we build
+bitSourceAttributes = map(lambda x: x[1], bitSources)
+
+# Each entry in this list corresponds to a row in the icon grid in
+# the spec. Each will have &amp;quot;Read&amp;quot;, &amp;quot;Unread&amp;quot;, and &amp;quot;NeedsReply&amp;quot; tacked on
+# when we ask the domain model.
+statePairNames = (
+ # Base name, True if it shows an icon when 'read'
+ (&amp;quot;Plain&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Mon, 22 Nov, 00:00 |
|
in&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| <rcott...@cottiss.com> |
in&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 22 Jun, 00:06 |
| <rcott...@cottiss.com> |
in&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 22 Jun, 00:06 |
| <rcott...@cottiss.com> |
in&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 22 Jun, 00:06 |
| <rcott...@cottiss.com> |
in&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 22 Jun, 00:06 |
| <rcott...@cottiss.com> |
in&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 22 Jun, 00:06 |
| <rcott...@cottiss.com> |
in&amp;quot;, False),
+ (&amp;quot;InDraft&amp;quot;, True),
+ (&amp;quot;In&amp;quot;, False),
+ (&amp;quot;OutDraft&amp;quot;, True),
+ (&amp;quot;Out&amp;quot;, False),
+ (&amp;quot;OutdateDraft&amp;quot;, True),
+ (&amp;quot;Outdate&amp;quot;, False),
+ (&amp;quot;IndateDraft&amp;quot;, True),
+ (&amp;quot;Indate&amp;quot;, False),
+ (&amp;quot;Queued&amp;quot;, True),
+ (&amp;quot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Sat, 22 Jun, 00:06 |
|
x">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemobmp_sourcewiztest1bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest1.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemobmp_sourcewiztest2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemodatapic2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/data/pic2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesduplicatebmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/duplicate.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesfillOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/fillOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslogobmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/logo.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveBackbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveBack.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveForwardbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveForward.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonEnddate/time</li></span> |
|
| sut |
x">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemobmp_sourcewiztest1bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest1.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemobmp_sourcewiztest2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/bmp_source/wiztest2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythondemodatapic2bmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/demo/data/pic2.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesduplicatebmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/duplicate.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesellipseIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/ellipseIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesfillOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/fillOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineIconSelbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineIconSel.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslineOptIconbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/lineOptIcon.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimageslogobmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/logo.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveBackbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveBack.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonsamplespySketchimagesmoveForwardbmp"></a><divclass="propset"><h4>Propertychanges:trunk/internal/wxPython-2.5/wxPython/samples/pySketch/images/moveForward.bmp</h4><preclass="diff"><spanclass="cx">Name:svn:mime-type-application/octet-stream+image/x-ms-bmp</span></pre></div><aid="trunkinternalwxPython25wxPythonEnddate/time</li></span> |
Fri, 06 Mar, 15:55 |
|
uot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
|
| e |
uot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Tue, 21 Mar, 19:22 |
| e |
uot;Error&amp;quot;, True),
+)
+
+def getItemCommState(itemOrUUID):
+ &amp;quot;&amp;quot;&amp;quot; Given an item or a UUID, determine its communications state &amp;quot;&amp;quot;&amp;quot;
+ result = 0
+ if isinstance(itemOrUUID, UUID):
+ values = view.findValues(itemOrUUID, bitSourceAttributes)
+ for (bit, ignored), v in izip(bitSources, values):
+ if v:
+ result |= bit
+ else:
+ for (bit, attributeName) in bitSources:
+ if getattr(itemOrUUID, attributeName, False):
+ result |= bit
+ return result
+
+def getCommStateName(commState):
+ &amp;quot;&amp;quot;&amp;quot; Return the actual name for this state &amp;quot;&amp;quot;&amp;quot;
+
+ read = (commState &amp;amp; readBit) and &amp;quot;Read&amp;quot; or &amp;quot;Unread&amuteEditor(attributeEditors.BaseAttributeEditor):
+ # Set this to '' to show |
Tue, 21 Mar, 19:22 |