[Spambayes-checkins] spambayes/Outlook2000/dialogs
FolderSelector.py, 1.17, 1.18
Mark Hammond
mhammond at users.sourceforge.net
Mon Jun 16 21:22:04 EDT 2003
Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs
In directory sc8-pr-cvs1:/tmp/cvs-serv18244
Modified Files:
FolderSelector.py
Log Message:
Prevent "Deleted items", Outbox and Sent Items from appearing in the
folder list. Fixes:
[ 749277 ] Should prevent "Deleted Items" being target folder
Index: FolderSelector.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/FolderSelector.py,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** FolderSelector.py 15 May 2003 01:00:04 -0000 1.17
--- FolderSelector.py 17 Jun 2003 03:22:02 -0000 1.18
***************
*** 18,25 ****
# Helpers for building the folder list
class FolderSpec:
! def __init__(self, folder_id, name):
self.folder_id = folder_id
self.name = name
self.children = []
def dump(self, level=0):
--- 18,26 ----
# Helpers for building the folder list
class FolderSpec:
! def __init__(self, folder_id, name, ignore_eids = None):
self.folder_id = folder_id
self.name = name
self.children = []
+ self.ignore_eids = ignore_eids
def dump(self, level=0):
***************
*** 53,60 ****
import pythoncom
! def _BuildFoldersMAPI(manager, folder_id):
# This is called dynamically as folders are expanded.
win32ui.DoWaitCursor(1)
! folder = manager.message_store.GetFolder(folder_id).OpenEntry()
# Get the hierarchy table for it.
table = folder.GetHierarchyTable(0)
--- 54,61 ----
import pythoncom
! def _BuildFoldersMAPI(manager, folder_spec):
# This is called dynamically as folders are expanded.
win32ui.DoWaitCursor(1)
! folder = manager.message_store.GetFolder(folder_spec.folder_id).OpenEntry()
# Get the hierarchy table for it.
table = folder.GetHierarchyTable(0)
***************
*** 68,75 ****
# re-fetch from the object itself (which is what our manager does,
# so no need to do it explicitly - just believe folder.id over eid)
temp_id = mapi.HexFromBin(store_eid), mapi.HexFromBin(eid)
child_folder = manager.message_store.GetFolder(temp_id)
if child_folder is not None:
! spec = FolderSpec(child_folder.GetID(), name)
# If we have no children at all, indicate
# the item is not expandable.
--- 69,83 ----
# re-fetch from the object itself (which is what our manager does,
# so no need to do it explicitly - just believe folder.id over eid)
+ ignore = False
+ for check_eid in folder_spec.ignore_eids:
+ if manager.message_store.session.CompareEntryIDs(check_eid, eid):
+ ignore = True
+ break
+ if ignore:
+ continue
temp_id = mapi.HexFromBin(store_eid), mapi.HexFromBin(eid)
child_folder = manager.message_store.GetFolder(temp_id)
if child_folder is not None:
! spec = FolderSpec(child_folder.GetID(), name, folder_spec.ignore_eids)
# If we have no children at all, indicate
# the item is not expandable.
***************
*** 83,87 ****
return children
! def BuildFolderTreeMAPI(session):
root = FolderSpec(None, "root")
tab = session.GetMsgStoresTable(0)
--- 91,95 ----
return children
! def BuildFolderTreeMAPI(session, ignore_ids):
root = FolderSpec(None, "root")
tab = session.GetMsgStoresTable(0)
***************
*** 94,100 ****
msgstore = session.OpenMsgStore(0, eid, None, mapi.MDB_NO_MAIL |
mapi.MAPI_DEFERRED_ERRORS)
! hr, data = msgstore.GetProps((PR_IPM_SUBTREE_ENTRYID,), 0)
subtree_eid = data[0][1]
! folder = msgstore.OpenEntry(subtree_eid, None, mapi.MAPI_DEFERRED_ERRORS)
except pythoncom.com_error, details:
# Some weird error opening a folder tree
--- 102,108 ----
msgstore = session.OpenMsgStore(0, eid, None, mapi.MDB_NO_MAIL |
mapi.MAPI_DEFERRED_ERRORS)
! hr, data = msgstore.GetProps((PR_IPM_SUBTREE_ENTRYID,)+ignore_ids, 0)
subtree_eid = data[0][1]
! ignore_eids = [item[1] for item in data[1:] if PROP_TYPE(item[0])==PT_BINARY]
except pythoncom.com_error, details:
# Some weird error opening a folder tree
***************
*** 104,108 ****
continue
folder_id = hex_eid, mapi.HexFromBin(subtree_eid)
! spec = FolderSpec(folder_id, name)
spec.children = None
root.children.append(spec)
--- 112,116 ----
continue
folder_id = hex_eid, mapi.HexFromBin(subtree_eid)
! spec = FolderSpec(folder_id, name, ignore_eids)
spec.children = None
root.children.append(spec)
***************
*** 155,159 ****
checkbox_text=None,
desc_noun="Select",
! desc_noun_suffix="ed"):
assert not single_select or selected_ids is None or len(selected_ids)<=1
dialog.Dialog.__init__ (self, self.dt)
--- 163,171 ----
checkbox_text=None,
desc_noun="Select",
! desc_noun_suffix="ed",
! exclude_prop_ids=(PR_IPM_WASTEBASKET_ENTRYID,
! PR_IPM_SENTMAIL_ENTRYID,
! PR_IPM_OUTBOX_ENTRYID)
! ):
assert not single_select or selected_ids is None or len(selected_ids)<=1
dialog.Dialog.__init__ (self, self.dt)
***************
*** 168,171 ****
--- 180,184 ----
self.checkbox_state = checkbox_state
self.checkbox_text = checkbox_text or "Include &subfolders"
+ self.exclude_prop_ids = exclude_prop_ids
def CompareIDs(self, id1, id2):
***************
*** 316,320 ****
win32ui.DoWaitCursor(1)
self.expand_ids = self._DetermineFoldersToExpand()
! tree = BuildFolderTreeMAPI(self.manager.message_store.session)
self._InsertSubFolders(0, tree)
self.selected_ids = [] # Only use this while creating dialog.
--- 329,333 ----
win32ui.DoWaitCursor(1)
self.expand_ids = self._DetermineFoldersToExpand()
! tree = BuildFolderTreeMAPI(self.manager.message_store.session, self.exclude_prop_ids)
self._InsertSubFolders(0, tree)
self.selected_ids = [] # Only use this while creating dialog.
***************
*** 387,391 ****
folderSpec = self.item_map[info[7]]
if folderSpec.children is None:
! folderSpec.children = _BuildFoldersMAPI(self.manager, folderSpec.folder_id)
self._InsertSubFolders(itemHandle, folderSpec)
return 0
--- 400,404 ----
folderSpec = self.item_map[info[7]]
if folderSpec.children is None:
! folderSpec.children = _BuildFoldersMAPI(self.manager, folderSpec)
self._InsertSubFolders(itemHandle, folderSpec)
return 0
More information about the Spambayes-checkins
mailing list