[Spambayes-checkins] spambayes/Outlook2000/dialogs ClassifyDialog.py,1.4,1.5 FilterDialog.py,1.4,1.5 FolderSelector.py,1.2,1.3 ManagerDialog.py,1.2,1.3 RuleDialog.py,1.3,1.4TrainingDialog.py,1.3,1.4

Mark Hammond mhammond@users.sourceforge.net
Thu, 24 Oct 2002 23:58:22 -0700


Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs
In directory usw-pr-cvs1:/tmp/cvs-serv11097/dialogs

Modified Files:
	ClassifyDialog.py FilterDialog.py FolderSelector.py 
	ManagerDialog.py RuleDialog.py TrainingDialog.py 
Log Message:
Remove the rest of CDO/MAPI - we no longer need this for *anything*


Index: ClassifyDialog.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/ClassifyDialog.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ClassifyDialog.py	24 Oct 2002 13:06:39 -0000	1.4
--- ClassifyDialog.py	25 Oct 2002 06:58:20 -0000	1.5
***************
*** 54,58 ****
          self.classifier = classifier
          self.config = mgr.config.classify
-         self.mapi = mgr.mapi
          self.mgr = mgr
          AsyncDialogBase.__init__ (self, self.dt)
--- 54,57 ----
***************
*** 66,78 ****
      def UpdateStatus(self):
          names = []
-         cwd = os.getcwd()  # mapi.GetFolder() switches to the system MAPI dir
          for eid in self.config.folder_ids:
              try:
!                 name = self.mapi.GetFolder(eid).Name.encode("ascii", "replace")
              except pythoncom.com_error:
                  name = "<unknown folder>"
              names.append(name)
          self.SetDlgItemText(IDC_STATIC_FOLDERS, "; ".join(names))
-         os.chdir(cwd)
  
      def OnBrowse(self, id, code):
--- 65,75 ----
      def UpdateStatus(self):
          names = []
          for eid in self.config.folder_ids:
              try:
!                 name = self.mgr.message_store.GetFolder(eid).name
              except pythoncom.com_error:
                  name = "<unknown folder>"
              names.append(name)
          self.SetDlgItemText(IDC_STATIC_FOLDERS, "; ".join(names))
  
      def OnBrowse(self, id, code):
***************
*** 80,84 ****
              import FolderSelector
              l = self.config.folder_ids
!             d = FolderSelector.FolderSelector(self.mapi, l,checkbox_state=self.config.include_sub)
              if d.DoModal()==win32con.IDOK:
                  l[:], self.config.include_sub = d.GetSelectedIDs()[:]
--- 77,81 ----
              import FolderSelector
              l = self.config.folder_ids
!             d = FolderSelector.FolderSelector(self.mgr.message_store.session, l,checkbox_state=self.config.include_sub)
              if d.DoModal()==win32con.IDOK:
                  l[:], self.config.include_sub = d.GetSelectedIDs()[:]

Index: FilterDialog.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/FilterDialog.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** FilterDialog.py	20 Oct 2002 18:53:06 -0000	1.4
--- FilterDialog.py	25 Oct 2002 06:58:20 -0000	1.5
***************
*** 261,265 ****
          for eid in folder_ids:
              try:
!                 name = self.mgr.mapi.GetFolder(eid).Name.encode("ascii", "replace")
              except pythoncom.com_error:
                  name = "<unknown folder>"
--- 261,265 ----
          for eid in folder_ids:
              try:
!                 name = self.mgr.message_store.GetFolder(eid).name
              except pythoncom.com_error:
                  name = "<unknown folder>"
***************
*** 271,275 ****
              import FolderSelector
              filter = self.mgr.config.filter
!             d = FolderSelector.FolderSelector(self.mgr.mapi, filter.folder_ids,checkbox_state=filter.include_sub)
              if d.DoModal()==win32con.IDOK:
                  filter.folder_ids, filter.include_sub = d.GetSelectedIDs()
--- 271,275 ----
              import FolderSelector
              filter = self.mgr.config.filter
!             d = FolderSelector.FolderSelector(self.mgr.message_store.session, filter.folder_ids,checkbox_state=filter.include_sub)
              if d.DoModal()==win32con.IDOK:
                  filter.folder_ids, filter.include_sub = d.GetSelectedIDs()
***************
*** 334,338 ****
          for eid in self.mgr.config.filter_now.folder_ids:
              try:
!                 name = self.mgr.mapi.GetFolder(eid).Name.encode("ascii", "replace")
              except pythoncom.com_error:
                  name = "<unknown folder>"
--- 334,338 ----
          for eid in self.mgr.config.filter_now.folder_ids:
              try:
!                 name = self.mgr.message_store.GetFolder(eid).name
              except pythoncom.com_error:
                  name = "<unknown folder>"
***************
*** 344,348 ****
              import FolderSelector
              filter = self.mgr.config.filter_now
!             d = FolderSelector.FolderSelector(self.mgr.mapi, filter.folder_ids,checkbox_state=filter.include_sub)
              if d.DoModal()==win32con.IDOK:
                  filter.folder_ids, filter.include_sub = d.GetSelectedIDs()
--- 344,348 ----
              import FolderSelector
              filter = self.mgr.config.filter_now
!             d = FolderSelector.FolderSelector(self.mgr.message_store.session, filter.folder_ids,checkbox_state=filter.include_sub)
              if d.DoModal()==win32con.IDOK:
                  filter.folder_ids, filter.include_sub = d.GetSelectedIDs()
***************
*** 368,371 ****
--- 368,372 ----
  
  if __name__=='__main__':
+     # This doesnt work - still uses CDO.
      from win32com.client import Dispatch
      import pythoncom

Index: FolderSelector.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/FolderSelector.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** FolderSelector.py	19 Oct 2002 18:14:01 -0000	1.2
--- FolderSelector.py	25 Oct 2002 06:58:20 -0000	1.3
***************
*** 11,22 ****
  # Helpers for building the folder list
  class FolderSpec:
!     def __init__(self, folder, name = None):
!         if name is None:
!             self.name = folder.Name
!         else:
!             self.name = name
!         self.name = self.name.encode("ascii", "replace")
          self.children = []
-         self.folder = folder
  
      def dump(self, level=0):
--- 11,18 ----
  # 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):
***************
*** 26,40 ****
              c.dump(level+1)
  
! def _BuildFolders(folders):
      children = []
      folder = folders.GetFirst()
      while folder:
!         spec = FolderSpec(folder)
!         spec.children = _BuildFolders(folder.Folders)
          children.append(spec)
          folder = folders.GetNext()
      return children
  
! def BuildFolderTree(session):
      infostores = session.InfoStores
      root = FolderSpec(None, "root")
--- 22,39 ----
              c.dump(level+1)
  
! #########################################################################
! ## CDO version of a folder walker.
! #########################################################################
! def _BuildFoldersCDO(folders):
      children = []
      folder = folders.GetFirst()
      while folder:
!         spec = FolderSpec(folder.ID, folder.Name.encode("mbcs", "replace"))
!         spec.children = _BuildFoldersCDO(folder.Folders)
          children.append(spec)
          folder = folders.GetNext()
      return children
  
! def BuildFolderTreeCDO(session):
      infostores = session.InfoStores
      root = FolderSpec(None, "root")
***************
*** 43,53 ****
          rootFolder = infostore.RootFolder
          folders = rootFolder.Folders
!         spec = FolderSpec(rootFolder, infostore.Name)
!         spec.children = _BuildFolders(folders)
          root.children.append(spec)
      return root
  
! #
! # The dialog itself
  
  # IDs for controls we use.
--- 42,87 ----
          rootFolder = infostore.RootFolder
          folders = rootFolder.Folders
!         spec = FolderSpec(rootFolder.ID, infostore.Name.encode("mbcs", "replace"))
!         spec.children = _BuildFoldersCDO(folders)
!         root.children.append(spec)
!     return root
! 
! #########################################################################
! ## An extended MAPI version
! #########################################################################
! from win32com.mapi import mapi
! from win32com.mapi.mapitags import *
! 
! def _BuildFoldersMAPI(msgstore, folder):
!     # Get the hierarchy table for it.
!     table = folder.GetHierarchyTable(0)
!     children = []
!     rows = mapi.HrQueryAllRows(table, (PR_ENTRYID,PR_DISPLAY_NAME_A), None, None, 0)
!     for (eid_tag, eid),(name_tag, name) in rows:
!         spec = FolderSpec(mapi.HexFromBin(eid), name)
!         child_folder = msgstore.OpenEntry(eid, None, mapi.MAPI_DEFERRED_ERRORS)
!         spec.children = _BuildFoldersMAPI(msgstore, child_folder)
!         children.append(spec)
!     return children
!     
! def BuildFolderTreeMAPI(session):
!     root = FolderSpec(None, "root")
!     tab = session.GetMsgStoresTable(0)
!     rows = mapi.HrQueryAllRows(tab, (PR_ENTRYID, PR_DISPLAY_NAME_A), None, None, 0)
!     for row in rows:
!         (eid_tag, eid), (name_tag, name) = row
!         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)
!         spec = FolderSpec(mapi.HexFromBin(subtree_eid), name)
!         spec.children = _BuildFoldersMAPI(msgstore, folder)
          root.children.append(spec)
      return root
  
! 
! #########################################################################
! ## The dialog itself
! #########################################################################
  
  # IDs for controls we use.
***************
*** 110,114 ****
                  mask = state = 0
              else:
!                 if self.selected_ids and child.folder.ID in self.selected_ids:
                      state = INDEXTOSTATEIMAGEMASK(IIL_CHECKED)
                      num_children_selected += 1
--- 144,148 ----
                  mask = state = 0
              else:
!                 if self.selected_ids and child.folder_id in self.selected_ids:
                      state = INDEXTOSTATEIMAGEMASK(IIL_CHECKED)
                      num_children_selected += 1
***************
*** 118,122 ****
              item_id = self._MakeItemParam(child)
              hitem = self.list.InsertItem(hParent, 0, (None, state, mask, text, bitmapCol, bitmapSel, cItems, item_id))
!             if self.single_select and self.selected_ids and child.folder.ID in self.selected_ids:
                  self.list.SelectItem(hitem)
  
--- 152,156 ----
              item_id = self._MakeItemParam(child)
              hitem = self.list.InsertItem(hParent, 0, (None, state, mask, text, bitmapCol, bitmapSel, cItems, item_id))
!             if self.single_select and self.selected_ids and child.folder_id in self.selected_ids:
                  self.list.SelectItem(hitem)
  
***************
*** 193,197 ****
              self.GetDlgItem(IDC_BUTTON_CLEARALL).ShowWindow(win32con.SW_HIDE)
  
!         tree = BuildFolderTree(self.mapi)
          self._InsertSubFolders(0, tree)
          self.selected_ids = [] # wipe this out while we are alive.
--- 227,236 ----
              self.GetDlgItem(IDC_BUTTON_CLEARALL).ShowWindow(win32con.SW_HIDE)
  
!         if hasattr(self.mapi, "_oleobj_"): # Dispatch COM object
!             # CDO
!             tree = BuildFolderTreeCDO(self.mapi)
!         else:
!             # Extended MAPI.
!             tree = BuildFolderTreeMAPI(self.mapi)
          self._InsertSubFolders(0, tree)
          self.selected_ids = [] # wipe this out while we are alive.
***************
*** 269,281 ****
          ret = []
          for info, spec in self._YieldCheckedChildren():
!             ret.append(spec.folder.ID)
          return ret, self.GetDlgItem(IDC_BUTTON_SEARCHSUB).GetCheck() != 0
  
! def TestWithMAPI():
      from win32com.client import Dispatch
      mapi = Dispatch("MAPI.Session")
      mapi.Logon("", "", False, False)
      ids = [u'0000000071C4408983B0B24F8863EE66A8F79AFF82800000']
!     d=FolderSelector(mapi, ids, single_select = True)
      d.DoModal()
      print d.GetSelectedIDs()
--- 308,329 ----
          ret = []
          for info, spec in self._YieldCheckedChildren():
!             ret.append(spec.folder_id)
          return ret, self.GetDlgItem(IDC_BUTTON_SEARCHSUB).GetCheck() != 0
  
! def TestWithCDO():
      from win32com.client import Dispatch
      mapi = Dispatch("MAPI.Session")
      mapi.Logon("", "", False, False)
      ids = [u'0000000071C4408983B0B24F8863EE66A8F79AFF82800000']
!     d=FolderSelector(mapi, ids, single_select = False)
!     d.DoModal()
!     print d.GetSelectedIDs()
! 
! def TestWithMAPI():
!     mapi.MAPIInitialize(None)
!     logonFlags = mapi.MAPI_NO_MAIL | mapi.MAPI_EXTENDED | mapi.MAPI_USE_DEFAULT
!     session = mapi.MAPILogonEx(0, None, None, logonFlags)
!     ids = [u'0000000071C4408983B0B24F8863EE66A8F79AFF82800000']
!     d=FolderSelector(session, ids, single_select = False)
      d.DoModal()
      print d.GetSelectedIDs()

Index: ManagerDialog.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/ManagerDialog.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ManagerDialog.py	20 Oct 2002 18:53:06 -0000	1.2
--- ManagerDialog.py	25 Oct 2002 06:58:20 -0000	1.3
***************
*** 89,93 ****
          names = []
          for eid in self.mgr.config.filter.folder_ids:
!             names.append(self.mgr.mapi.GetFolder(eid).Name.encode("ascii", "replace"))
          # count enabled rules
          num = len([r for r in self.mgr.config.rules if r.enabled ])
--- 89,93 ----
          names = []
          for eid in self.mgr.config.filter.folder_ids:
!             names.append(self.mgr.message_store.GetFolder(eid).name)
          # count enabled rules
          num = len([r for r in self.mgr.config.rules if r.enabled ])

Index: RuleDialog.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/RuleDialog.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** RuleDialog.py	19 Oct 2002 22:30:03 -0000	1.3
--- RuleDialog.py	25 Oct 2002 06:58:20 -0000	1.4
***************
*** 95,102 ****
              if not self.folder_id:
                  name = ""
-             elif self.mgr.mapi is None:
-                 name = "<no mapi!>"
              else:
!                 name = self.mgr.mapi.GetFolder(self.folder_id).Name.encode("ascii", "replace")
          except pythoncom.com_error:
              name = "<unknown folder>"
--- 95,100 ----
              if not self.folder_id:
                  name = ""
              else:
!                 name = self.mgr.message_store.GetFolder(self.folder_id).name
          except pythoncom.com_error:
              name = "<unknown folder>"
***************
*** 122,126 ****
              import FolderSelector
              ids = [self.folder_id]
!             d = FolderSelector.FolderSelector(self.mgr.mapi, ids,single_select=True,checkbox_state=None)#, allow_multi=False)
              if d.DoModal()==win32con.IDOK:
                  new_ids, cb_state = d.GetSelectedIDs()
--- 120,124 ----
              import FolderSelector
              ids = [self.folder_id]
!             d = FolderSelector.FolderSelector(self.mgr.message_store.session, ids,single_select=True,checkbox_state=None)#, allow_multi=False)
              if d.DoModal()==win32con.IDOK:
                  new_ids, cb_state = d.GetSelectedIDs()
***************
*** 190,199 ****
  
  if __name__=='__main__':
!     from win32com.client import Dispatch
!     try:
!         mapi = Dispatch("MAPI.Session")
!         mapi.Logon()
!     except pythoncom.com_error:
!         mapi = None
      class Rule:
          def __init__(self):
--- 188,193 ----
  
  if __name__=='__main__':
!     # This doesn't work
!     
      class Rule:
          def __init__(self):

Index: TrainingDialog.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/TrainingDialog.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TrainingDialog.py	20 Oct 2002 05:52:50 -0000	1.3
--- TrainingDialog.py	25 Oct 2002 06:58:20 -0000	1.4
***************
*** 6,9 ****
--- 6,10 ----
  import win32ui
  import win32api
+ import pythoncom
  
  #these are the atom numbers defined by Windows for basic dialog controls
***************
*** 54,58 ****
          self.trainer = trainer
          self.config = mgr.config.training
-         self.mapi = mgr.mapi
          AsyncDialogBase.__init__ (self, self.dt)
  
--- 55,58 ----
***************
*** 65,72 ****
      def UpdateStatus(self):
          names = []
-         cwd = os.getcwd()  # mapi.GetFolder() switches to the system MAPI dir
          for eid in self.config.ham_folder_ids:
              try:
!                 name = self.mapi.GetFolder(eid).Name.encode("ascii", "replace")
              except pythoncom.com_error:
                  name = "<unknown folder>"
--- 65,71 ----
      def UpdateStatus(self):
          names = []
          for eid in self.config.ham_folder_ids:
              try:
!                 name = self.mgr.message_store.GetFolder(eid).name
              except pythoncom.com_error:
                  name = "<unknown folder>"
***************
*** 77,86 ****
          for eid in self.config.spam_folder_ids:
              try:
!                 name = self.mapi.GetFolder(eid).Name.encode("ascii", "replace")
              except pythoncom.com_error:
                  name = "<unknown folder>"
              names.append(name)
          self.SetDlgItemText(IDC_STATIC_SPAM, "; ".join(names))
-         os.chdir(cwd)
  
      def OnBrowse(self, id, code):
--- 76,84 ----
          for eid in self.config.spam_folder_ids:
              try:
!                 name = self.mgr.message_store.GetFolder(eid).name
              except pythoncom.com_error:
                  name = "<unknown folder>"
              names.append(name)
          self.SetDlgItemText(IDC_STATIC_SPAM, "; ".join(names))
  
      def OnBrowse(self, id, code):
***************
*** 94,98 ****
                  sub_attr = "ham_include_sub"
              include_sub = getattr(self.config, sub_attr)
!             d = FolderSelector.FolderSelector(self.mapi, l, checkbox_state=include_sub)
              if d.DoModal()==win32con.IDOK:
                  l[:], include_sub = d.GetSelectedIDs()[:]
--- 92,96 ----
                  sub_attr = "ham_include_sub"
              include_sub = getattr(self.config, sub_attr)
!             d = FolderSelector.FolderSelector(self.mgr.message_store.session, l, checkbox_state=include_sub)
              if d.DoModal()==win32con.IDOK:
                  l[:], include_sub = d.GetSelectedIDs()[:]