From anadelonbrin at users.sourceforge.net Wed Mar 9 02:58:12 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 9 02:58:17 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_server.py,1.41,1.42 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8552/scripts Modified Files: sb_server.py Log Message: If a non-blocking socket is connect()ed, then it will return an error (could not complete without blocking), which doesn't tell us whether the connect() succeeded or failed. asyncore assumes that it succeeded and keeps going. If it failed, then select.select() will report it as an error if the socket is checked (which is the case in Python 2.4, but not earlier). This results in a warning printed to stderr, and because the error never goes away, this error is printed for every iteration of the asyncore.loop() loop, which is *very* often. This is the cause of the reasonably frequently reported "eating up all CPU" or "log file grows huge" bugs with 1.0.3. If we set the socket to blocking for the connect call, then it will fail properly if it is going to, which we know how to handle. We can then set it to nonblocking again after a successful connect. This should fix the problems. Backport candidate if there is a 1.0.4 (although this will only be a problem with Python 2.4). Index: sb_server.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_server.py,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** sb_server.py 7 Feb 2005 22:57:38 -0000 1.41 --- sb_server.py 9 Mar 2005 01:58:09 -0000 1.42 *************** *** 150,158 **** self.set_terminator('\r\n') self.create_socket(socket.AF_INET, socket.SOCK_STREAM) ! # create_socket creates a non-blocking socket. This is fine for ! # regular sockets, but not for ssl - if it is non-blocking then the ! # second ssl connection will fail. ! if ssl: ! self.socket.setblocking(1) try: self.connect((serverName, serverPort)) --- 150,161 ---- self.set_terminator('\r\n') self.create_socket(socket.AF_INET, socket.SOCK_STREAM) ! # create_socket creates a non-blocking socket. This is not great, ! # because then socket.connect() will return errno 10035, because ! # connect takes time. We then don't know if the connect call ! # succeeded or not. With Python 2.4, this means that we will move ! # into asyncore.loop(), and if the connect does fail, have a ! # loop something like 'while True: log(error)', which fills up ! # stdout very fast. Non-blocking is also a problem for ssl sockets. ! self.socket.setblocking(1) try: self.connect((serverName, serverPort)) *************** *** 193,198 **** self.send = self.send_ssl self.recv = self.recv_ssl ! self.socket.setblocking(0) ! print self._fileno def send_ssl(self, data): --- 196,200 ---- self.send = self.send_ssl self.recv = self.recv_ssl ! self.socket.setblocking(0) def send_ssl(self, data): From anadelonbrin at users.sourceforge.net Wed Mar 16 04:19:49 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:19:53 2005 Subject: [Spambayes-checkins] spambayes CHANGELOG.txt, 1.51, 1.52 WHAT_IS_NEW.txt, 1.37, 1.38 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14716 Modified Files: CHANGELOG.txt WHAT_IS_NEW.txt Log Message: Bring up-to-date. Index: CHANGELOG.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** CHANGELOG.txt 4 Jan 2005 03:35:42 -0000 1.51 --- CHANGELOG.txt 16 Mar 2005 03:19:44 -0000 1.52 *************** *** 3,6 **** --- 3,26 ---- Release 1.1a1 ============= + Tony Meyer 16/03/2005 Optionally load configuration file for each imap server. + Tony Meyer 09/03/2005 Use a blocking socket when connecting with sb_server, so that with Python 2.4 we don't end up with never-ending reports of errors. + Tony Meyer 23/02/2005 Add [ 1144670 ] SMTP slow on large files + Tony Meyer 14/02/2005 Handle multiple imap servers. Adds [ 1122067 ] Feature Request: Config sb_imapfilter for multiple accounts + Tony Meyer 14/02/2005 New script: A little script that outputs to stdout a 'show clues' report like the one that Outlook creates, with the clues, tokens and message stream. + Kenny Pitt 12/02/2005 Add a "Notifications" tab to SpamBayes Manager for configuring notification sounds. + Tony Meyer 08/02/2005 Move the ensureDir function to storage, as many scripts use it. + Tony Meyer 01/02/2005 Update setup script to use Inno Setup 5.x rather than 4.x (patch from Kenny Pitt) + Tony Meyer 28/01/2005 Distribute mscvr71.dll, as Microsoft recommend. + Tony Meyer 28/01/2005 The 'fix' for escaping subject lines was incorrect; do it correctly. + Tony Meyer 24/01/2005 Add new part of [ 1106457 ] bsddb185 has to be covered in dbmstorage.py + Tony Meyer 21/01/2005 Fix [ 1106457 ] bsddb185 has to be covered in dbmstorage.py + Tony Meyer 17/01/2005 Add a method to generate documentation for options that suits a HTML documentation file. + Tony Meyer 17/01/2005 OptionsClass: Add an optional flag add_comments to display(). If this is True (False by default) then the help string for the option is added in comments above the option. + Tony Meyer 17/01/2005 Outlook: Remove migrating the data directory - the need for this predates any of the combined binaries, so should be past now. + Tony Meyer 17/01/2005 Outlook: Look for a {profile name}_bayes_customize.ini file in the data directory, and add that (lastly) to the spambayes configuration files to load. This allows per-profile spambayes config changes, and makes things more consistent with the Outlook options. + Tony Meyer 14/01/2005 Try and work around the reasonably common problems with imaplib and OS X. + Kenny Pitt 12/01/2005 Outlook: Now that we have more space in the Manager dialog, split the "Filter status" info into separate lines for better readability. Also add information about the setting of the new good message folder option. + Kenny Pitt 12/01/2005 Outlook: General dialog template cleanup. + Kenny Pitt 08/01/2005 Since bsddb is the same as bsddb3 on any recent Python (2.3+), try using bsddb3 instead if we are unable to import bsddb. Tony Meyer 04/01/2005 If we are reloading the options, optionsPathname will already be set, so if we are a windows user using the default pathname, the object won't be reloaded. Fix so a reload is always done. Tony Meyer 04/01/2005 rcparser.py: Look for dialogs.h in this directory if it isn't with dialogs.rc. Index: WHAT_IS_NEW.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** WHAT_IS_NEW.txt 12 Jan 2005 00:55:48 -0000 1.37 --- WHAT_IS_NEW.txt 16 Mar 2005 03:19:44 -0000 1.38 *************** *** 72,76 **** o The "Delete As Spam" button is now simply "Spam", and the "Recover From Spam" button simply "Not Spam". ! o Notification sounds can now be set. o The SpamBayes menu now includes an "Empty Spam Folder" option. o Outlook users can now use a variety of different underlying database --- 72,76 ---- o The "Delete As Spam" button is now simply "Spam", and the "Recover From Spam" button simply "Not Spam". ! o Notification sounds can now be set, via the Manager dialog. o The SpamBayes menu now includes an "Empty Spam Folder" option. o Outlook users can now use a variety of different underlying database *************** *** 110,113 **** --- 110,121 ---- o Continue on (skipping) if a folder is unable to be acccesed for training or filtering. + o Filtering multiple servers with a single sb_imapfilter process is now + supported. Enter in the server names, separated by commas, and the + usernames and passwords separated by '\'s. The filter will also try + and load a configuration file for each server (it will look in the + same directory as the main configuration file, for a file called + server.name.ini or .spambayes_server_name_rc), where you can change + the folders to filter, the thresholds, or any other options (this + currently does not include the database names). o Many minor fixes and improvements. *************** *** 131,134 **** --- 139,144 ---- PostFix 2.1's content filter functionality. o The new pycksum.py script is a fuzzy checksum program. + o The new showclues.py script outputs to stdout a 'show clues' report like + the one that Outlook creates, with the clues, tokens and message stream. Other *************** *** 160,164 **** No feature requests tracked via the Sourceforge system were added for this release. ! 870524, 940547, 715248, 938992, 1039057, 909088, 887984, 753708, 848365 --- 170,175 ---- No feature requests tracked via the Sourceforge system were added for this release. ! 870524, 940547, 715248, 938992, 1039057, 909088, 887984, 753708, 848365, ! 1144670, 1122067 From anadelonbrin at users.sourceforge.net Wed Mar 16 04:21:18 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:21:22 2005 Subject: [Spambayes-checkins] spambayes/windows/py2exe README.txt,1.2,1.3 Message-ID: Update of /cvsroot/spambayes/spambayes/windows/py2exe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15036/windows/py2exe Modified Files: README.txt Log Message: Update build instructions. Index: README.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/py2exe/README.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** README.txt 3 Oct 2003 00:06:56 -0000 1.2 --- README.txt 16 Mar 2005 03:20:59 -0000 1.3 *************** *** 1,6 **** This is a py2exe setup script. ! Grab the CVS version of py2exe from sourceforge. Ensure you have Python 2.3. ! Install the py2exe\sandbox version, *not* the top-level py2exe version. Run "setup_all.py" --- 1,6 ---- This is a py2exe setup script. ! Grab the latest version of py2exe from sourceforge. Ensure you have Python ! 2.3 or above. Install py2exe. Run "setup_all.py" From anadelonbrin at users.sourceforge.net Wed Mar 16 04:22:56 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:23:00 2005 Subject: [Spambayes-checkins] spambayes/spambayes Corpus.py,1.20,1.21 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15429/spambayes Modified Files: Corpus.py Log Message: Remove the code that removed the notations from messages as this is now handled more centrally elsewhere. Index: Corpus.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Corpus.py,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Corpus.py 14 Jul 2004 07:15:38 -0000 1.20 --- Corpus.py 16 Mar 2005 03:22:53 -0000 1.21 *************** *** 185,214 **** msg = fromcorpus[key] msg.load() # ensure that the substance has been loaded - - # If the notate_to or notate_subject options are set, then the - # message in the cache has this information, and it will get used - # in training, which is not ideal. So if that option is set, strip - # that data before training. The only time I can see this failing - # is if the option is changed at some point, so older messages - # don't have the notation, but some other program did do the same - # notation, which would be lost. This shouldn't be a big deal, - # though. - if fromCache: - for header, header_opt in (("Subject", "notate_subject"), - ("To", "notate_to")): - # For Python 2.2, which doesn't allow "string in string". - if isinstance(options["Headers", header_opt], - types.StringTypes): - notate_opt = (options["Headers", header_opt],) - else: - notate_opt = options["Headers", header_opt] - - for opt, tag in (("ham", "header_ham_string"), - ("spam", "header_spam_string"), - ("unsure", "header_unsure_string")): - if opt in notate_opt and msg[header] is not None and \ - msg[header].startswith("%s," % options["Headers", tag]): - msg.replace_header(header, msg[header][len(tag)+1:]) - fromcorpus.removeMessage(msg) self.addMessage(msg) --- 185,188 ---- From anadelonbrin at users.sourceforge.net Wed Mar 16 04:26:26 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:26:30 2005 Subject: [Spambayes-checkins] spambayes/spambayes FileCorpus.py,1.17,1.18 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16139/spambayes Modified Files: FileCorpus.py Log Message: Move test code out into the unit test scripts. Change FileMessage from being a subclass of message so load doesn't have to use the deprecated setpayload function. Index: FileCorpus.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/FileCorpus.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** FileCorpus.py 21 Dec 2004 23:10:21 -0000 1.17 --- FileCorpus.py 16 Mar 2005 03:26:23 -0000 1.18 *************** *** 32,80 **** See Corpus.__doc__ for more information. - Test harness: - FileCorpus [options] - - options: - -h : show this message - -v : execute in verbose mode, useful for general understanding - and debugging purposes - -g : use GzipFileMessage and GzipFileMessageFactory - -s : setup self test, useful for seeing what is going into the - test - -t : setup and execute a self test. - -c : clean up file system after self test - - Please note that running with -s or -t will create file system artifacts - in the current directory. Be sure this doesn't stomp something of - yours... The artifacts created are: - - fctestmisc.bayes - fctestclass.bayes - fctestspamcorpus/MSG00001 - fctestspamcorpus/MSG00002 - fctestunsurecorpus/MSG00003 - fctestunsurecorpus/MSG00004 - fctestunsurecorpus/MSG00005 - fctestunsurecorpus/MSG00006 - fctesthamcorpus/ - - After the test has executed, the following file system artifacts - (should) will exist: - - fctestmisc.bayes - fctestclass.bayes - fctestspamcorpus/MSG00001 - fctestspamcorpus/MSG00004 - fctesthamcorpus/MSG00002 - fctesthamcorpus/MSG00005 - fctesthamcorpus/MSG00006 - fctestunsurecorpus/ - To Do: o Suggestions? - """ ! # This module is part of the spambayes project, which is Copyright 2002 # The Python Software Foundation and is covered by the Python Software # Foundation license. --- 32,40 ---- See Corpus.__doc__ for more information. To Do: o Suggestions? """ ! # This module is part of the spambayes project, which is Copyright 2002-5 # The Python Software Foundation and is covered by the Python Software # Foundation license. *************** *** 185,201 **** ! class FileMessage(message.SBHeaderMessage): '''Message that persists as a file system artifact.''' def __init__(self, file_name=None, directory=None): '''Constructor(message file name, corpus directory name)''' - message.SBHeaderMessage.__init__(self) self.file_name = file_name self.directory = directory self.loaded = False ! def as_string(self): self.load() # ensure that the substance is loaded ! return message.SBHeaderMessage.as_string(self) def pathname(self): --- 145,180 ---- ! class FileMessage(object): '''Message that persists as a file system artifact.''' def __init__(self, file_name=None, directory=None): '''Constructor(message file name, corpus directory name)''' self.file_name = file_name self.directory = directory self.loaded = False + self._msg = message.SBHeaderMessage() ! def __getattr__(self, att): ! """Pretend we are a subclass of message.SBHeaderMessage.""" ! if hasattr(self, "_msg") and hasattr(self._msg, att): ! return getattr(self._msg, att) ! raise AttributeError() ! ! def __getitem__(self, k): ! """Pretend we are a subclass of message.SBHeaderMessage.""" ! if hasattr(self, "_msg"): ! return self._msg[k] ! raise TypeError() ! ! def __setitem__(self, k, v): ! """Pretend we are a subclass of message.SBHeaderMessage.""" ! if hasattr(self, "_msg"): ! self._msg[k] = v ! return ! raise TypeError() ! ! def as_string(self, unixfrom=False): self.load() # ensure that the substance is loaded ! return self._msg.as_string(unixfrom) def pathname(self): *************** *** 230,234 **** fp = gzip.open(pn, 'rb') try: ! self.setPayload(fp.read()) except IOError, e: if str(e) == 'Not a gzipped file': --- 209,214 ---- fp = gzip.open(pn, 'rb') try: ! self._msg = email.message_from_string(\ ! fp.read(), _class = message.SBHeaderMessage) except IOError, e: if str(e) == 'Not a gzipped file': *************** *** 237,241 **** fp.close() fp = open(self.pathname(), 'rb') ! self.setPayload(fp.read()) fp.close() else: --- 217,222 ---- fp.close() fp = open(self.pathname(), 'rb') ! self._msg = email.message_from_string(\ ! fp.read(), _class = message.SBHeaderMessage) fp.close() else: *************** *** 256,286 **** fp.close() - def setPayload(self, payload): - # This is a less-than-ideal method. The Python email package - # has a clear distinction between parsing an email message and - # creating an email message object. Here, we don't share that - # distinction, because our message object is trying to do its - # own parsing. A better system would be to have the factory - # that creates these messages do the load from file bit (this - # does mean we lose the current load-on-demand feature, but - # I'm not sure that's ever used). Alternatively, we could have - # a third type of FileMessage - PickledFileMessage - that stored - # the parsed form of the message. This might also remove the - # need for some of the message database (although that would then - # expire along with the messages...). This is something to - # consider before 1.1, however. - self.loaded = True - - # We parse the content into a generic email.Message object. - msg = email.message_from_string(payload) - - # And then we set ourselves to be equal to it. - self.set_payload(msg.get_payload()) - self.set_unixfrom(msg.get_unixfrom()) - self.set_charset(msg.get_charset()) - for name, value in msg.items(): - del self[name] - self[name] = value - def remove(self): '''Message hara-kiri''' --- 237,240 ---- *************** *** 341,356 **** ! class FileMessageFactory(Corpus.MessageFactory): ! '''MessageFactory for FileMessage objects''' ! def create(self, key, directory, content=None): '''Create a message object from a filename in a directory''' if content: ! msg = email.message_from_string(content, _class=FileMessage) msg.file_name = key msg.directory = directory msg.loaded = True return msg ! return FileMessage(key, directory) --- 295,316 ---- ! class MessageFactory(Corpus.MessageFactory): ! # Subclass must define a concrete message klass. ! klass = None def create(self, key, directory, content=None): '''Create a message object from a filename in a directory''' if content: ! msg = email.message_from_string(content, ! _class=self.klass) msg.file_name = key msg.directory = directory msg.loaded = True return msg ! return self.klass(key, directory) ! ! ! class FileMessageFactory(MessageFactory): ! '''MessageFactory for FileMessage objects''' ! klass = FileMessage *************** *** 372,761 **** ! class GzipFileMessageFactory(FileMessageFactory): '''MessageFactory for FileMessage objects''' ! ! def create(self, key, directory, content=None): ! '''Create a message object from a filename in a directory''' ! if content: ! msg = email.message_from_string(content, ! _class=GzipFileMessage) ! msg.file_name = key ! msg.directory = directory ! msg.loaded = True ! return msg ! return GzipFileMessage(key, directory) ! ! ! def runTest(useGzip): ! ! print 'Executing Test' ! ! if useGzip: ! fmFact = GzipFileMessageFactory() ! print 'Executing with Gzipped files' ! else: ! fmFact = FileMessageFactory() ! print 'Executing with uncompressed files' ! ! print '\n\nCreating two Classifier databases' ! miscbayes = storage.PickledClassifier('fctestmisc.bayes') ! classbayes = storage.DBDictClassifier('fctestclass.bayes') ! ! print '\n\nSetting up spam corpus' ! spamcorpus = FileCorpus(fmFact, 'fctestspamcorpus') ! spamtrainer = storage.SpamTrainer(miscbayes) ! spamcorpus.addObserver(spamtrainer) ! anotherspamtrainer = storage.SpamTrainer(classbayes, storage.UPDATEPROBS) ! spamcorpus.addObserver(anotherspamtrainer) ! ! keys = spamcorpus.keys() ! keys.sort() ! for key in keys: # iterate the list of keys ! msg = spamcorpus[key] # corpus is a dictionary ! spamtrainer.train(msg) ! anotherspamtrainer.train(msg) ! ! ! print '\n\nSetting up ham corpus' ! hamcorpus = FileCorpus(fmFact, \ ! 'fctesthamcorpus', \ ! 'MSG*') ! hamtrainer = storage.HamTrainer(miscbayes) ! hamcorpus.addObserver(hamtrainer) ! hamtrainer.trainAll(hamcorpus) ! ! print '\n\nA couple of message related tests' ! if useGzip: ! fmFactory = GzipFileMessageFactory() ! else: ! fmFactory = FileMessageFactory() ! ! m1 = fmFactory.create('XMG00001', 'fctestspamcorpus', testmsg2()) ! ! print '\n\nAdd a message to hamcorpus that does not match the filter' ! ! try: ! hamcorpus.addMessage(m1) ! except ValueError: ! print 'Add failed, test passed' ! else: ! print 'Add passed, test failed' ! ! ! print '\n\nThis is the hamcorpus' ! print hamcorpus ! ! ! print '\n\nThis is the spamcorpus' ! print spamcorpus ! ! ! print '\n\nSetting up unsure corpus' ! # the unsure corpus is an expiry corpus with five second expiry ! # and a cache size of 2 (for testing purposes only...), and ! # no trainers, since there's no such thing as 'unsure training' ! unsurecorpus = ExpiryFileCorpus(5, fmFact, \ ! 'fctestunsurecorpus', 'MSG*', 2) ! unsurecorpus.removeExpiredMessages() ! ! ! print '\n\nIterate the unsure corpus twice, to make sure cache size \ ! is managed correctly, and to make sure iteration is repeatable. \ ! We should not see MSG00003 in this iteration.' ! for msg in unsurecorpus: ! print msg.key() # don't print msg, too much information ! print '...and again' ! for msg in unsurecorpus: ! print msg.key() # don't print msg, too much information ! ! ! print '\n\nRemoving expired messages from unsure corpus.' ! unsurecorpus.removeExpiredMessages() ! ! ! print '\n\nTrain with an individual message' ! anotherhamtrainer = storage.HamTrainer(classbayes) ! anotherhamtrainer.train(unsurecorpus['MSG00005']) ! ! ! print '\n\nMoving msg00002 from spamcorpus to hamcorpus' ! hamcorpus.takeMessage('MSG00002', spamcorpus) # Oops. made a mistake... ! ! ! print "\n\nLet's test printing a message" ! msg = spamcorpus['MSG00001'] ! print msg ! ! ! print '\n\nClassifying messages in unsure corpus' ! ! for msg in unsurecorpus: ! prob = classbayes.spamprob(msg.tokenize()) ! ! print 'Message %s spam probability is %f' % (msg.key(), prob) ! ! if prob < options["Categorization", "ham_cutoff"]: ! print 'Moving %s from unsurecorpus to hamcorpus, \ ! based on prob of %f' % (msg.key(), prob) ! hamcorpus.takeMessage(msg.key(), unsurecorpus) ! elif prob > options["Categorization", "spam_cutoff"]: ! print 'Moving %s from unsurecorpus to spamcorpus, \ ! based on prob of %f' % (msg.key(), prob) ! spamcorpus.takeMessage(msg.key(), unsurecorpus) ! ! ! print '\n\nThis is the new hamcorpus' ! print hamcorpus ! ! ! print '\n\nThis is the new spamcorpus' ! print spamcorpus ! ! ! print '\n\nThis is the new unsurecorpus' ! print unsurecorpus ! print 'unsurecorpus cache contains', unsurecorpus.keysInMemory ! print 'unsurecorpus msgs dict contains', unsurecorpus.msgs ! ! ! print '\n\nStoring bayes databases' ! miscbayes.store() ! classbayes.store() ! ! def cleanupTest(): ! ! print 'Cleaning up' ! ! cleanupDirectory('fctestspamcorpus') ! cleanupDirectory('fctesthamcorpus') ! cleanupDirectory('fctestunsurecorpus') ! ! if not useExistingDB: ! try: ! os.unlink('fctestmisc.bayes') ! except OSError, e: ! if e.errno != 2: # errno. ! raise ! ! try: ! os.unlink('fctestclass.bayes') ! except OSError, e: ! if e.errno != 2: # errno. ! raise ! ! def cleanupDirectory(dirname): ! ! try: ! flist = os.listdir(dirname) ! except OSError, e: ! if e.errno != 3: # errno. ! raise ! else: ! for filename in flist: ! fn = os.path.join(dirname, filename) ! os.unlink(fn) ! try: ! os.rmdir(dirname) ! except OSError, e: ! if e.errno != 2: # errno. ! raise ! ! def setupTest(useGzip): ! ! cleanupTest() ! ! print 'Setting up test' ! ! # no try blocks here, because if any of this dies, the test ! # cannot proceed ! ! os.mkdir('fctestspamcorpus') ! os.mkdir('fctesthamcorpus') ! os.mkdir('fctestunsurecorpus') ! ! tm1 = testmsg1() ! tm2 = testmsg2() ! ! if useGzip: ! fmFactory = GzipFileMessageFactory() ! else: ! fmFactory = FileMessageFactory() ! ! m1 = fmFactory.create('MSG00001', 'fctestspamcorpus', tm1) ! m1.store() ! ! m2 = fmFactory.create('MSG00002', 'fctestspamcorpus', tm2) ! m2.store() ! ! m3 = fmFactory.create('MSG00003', 'fctestunsurecorpus', tm1) ! m3.store() ! ! for x in range(11): ! time.sleep(1) # make sure MSG00003 has expired ! if 10-x == 1: ! s = '' ! else: ! s = 's' ! print 'wait',10-x,'more second%s' % (s) ! ! m4 = fmFactory.create('MSG00004', 'fctestunsurecorpus', tm1) ! m4.store() ! ! m5 = fmFactory.create('MSG00005', 'fctestunsurecorpus', tm2) ! m5.store() ! ! m6 = fmFactory.create('MSG00006', 'fctestunsurecorpus', tm2) ! m6.store() ! ! ! def testmsg1(): ! ! return """ ! X-Hd:skip@pobox.com Mon Nov 04 10:50:49 2002 ! Received:by mail.powweb.com (mbox timstone) (with Cubic Circle's cucipop (v1.31 ! 1998/05/13) Mon Nov 4 08:50:58 2002) ! X-From_:skip@mojam.com Mon Nov 4 08:49:03 2002 ! Return-Path: ! Delivered-To:timstone@mail.powweb.com ! Received:from manatee.mojam.com (manatee.mojam.com [199.249.165.175]) by ! mail.powweb.com (Postfix) with ESMTP id DC95A1BB1D0 for ! ; Mon, 4 Nov 2002 08:49:02 -0800 (PST) ! Received:from montanaro.dyndns.org (12-248-11-90.client.attbi.com ! [12.248.11.90]) by manatee.mojam.com (8.12.1/8.12.1) with ESMTP id ! gA4Gn0oY029655 for ; Mon, 4 Nov 2002 10:49:00 ! -0600 ! Received:from montanaro.dyndns.org (localhost [127.0.0.1]) by ! montanaro.dyndns.org (8.12.2/8.12.2) with ESMTP id gA4Gn3cP015572 for ! ; Mon, 4 Nov 2002 10:49:03 -0600 (CST) ! Received:(from skip@localhost) by montanaro.dyndns.org (8.12.2/8.12.2/Submit) ! id gA4Gn37l015569; Mon, 4 Nov 2002 10:49:03 -0600 (CST) ! From:Skip Montanaro ! MIME-Version:1.0 ! Content-Type:text/plain; charset=us-ascii ! Content- Transfer- Encoding:7bit ! Message-ID:<15814.42238.882013.702030@montanaro.dyndns.org> ! Date:Mon, 4 Nov 2002 10:49:02 -0600 ! To:Four Stones Expressions ! Subject:Reformat mail to 80 columns? ! In-Reply-To: ! References:<8285NLPL5YTTQJGXTAXU3WA8OB2.3dc5e3cc@riven> ! ! X-Mailer:VM 7.07 under 21.5 (beta9) "brussels sprouts" XEmacs Lucid ! Reply-To:skip@pobox.com ! X-Hammie- Disposition:Unsure ! ! ! 11/4/2002 10:49:02 AM, Skip Montanaro wrote: ! ! >(off-list) ! > ! >Tim, ! > ! >Any chance you can easily generate messages to the spambayes list which wrap ! >at something between 70 and 78 columns? I find I have to always edit your ! >messages to read them easily. ! > ! >Thanks, ! > ! >-- ! >Skip Montanaro - skip@pobox.com ! >http://www.mojam.com/ ! >http://www.musi-cal.com/ ! > ! > ! - Tim ! www.fourstonesExpressions.com """ ! ! def testmsg2(): ! return """ ! X-Hd:richie@entrian.com Wed Nov 06 12:05:41 2002 ! Received:by mail.powweb.com (mbox timstone) (with Cubic Circle's cucipop (v1.31 ! 1998/05/13) Wed Nov 6 10:05:45 2002) ! X-From_:richie@entrian.com Wed Nov 6 10:05:33 2002 ! Return-Path: ! Delivered-To:timstone@mail.powweb.com ! Received:from anchor-post-31.mail.demon.net (anchor-post-31.mail.demon.net ! [194.217.242.89]) by mail.powweb.com (Postfix) with ESMTP id 3DC431BB06A for ! ; Wed, 6 Nov 2002 10:05:33 -0800 (PST) ! Received:from sundog.demon.co.uk ([158.152.226.183]) by ! anchor-post-31.mail.demon.net with smtp (Exim 3.35 #1) id 189UYP-000IAw-0V for ! tim@fourstonesExpressions.com; Wed, 06 Nov 2002 18:05:25 +0000 ! From:Richie Hindle ! To:tim@fourstonesExpressions.com ! Subject:Re: What to call this training stuff ! Date:Wed, 06 Nov 2002 18:05:56 +0000 ! Organization:entrian.com ! Reply-To:richie@entrian.com ! Message-ID: ! References: ! In-Reply-To: ! X-Mailer:Forte Agent 1.7/32.534 ! MIME-Version:1.0 ! Content-Type:text/plain; charset=us-ascii ! Content- Transfer- Encoding:7bit ! X-Hammie- Disposition:Unsure ! ! ! Hi Tim, ! ! > Richie, I think we should package these classes I've been writing as ! > 'corpusManagement.py' What we're really doing here is creating a set of ! tools ! > that can be used to manage corpi (?) corpusses (?) corpae (?) whatever... ! of ! > messages. ! ! Good plan. Minor point of style: mixed-case module names (like class ! names) tend to have an initial capital: CorpusManagement.py ! ! On the name... sorry to disagree about names again, but what does the word ! 'management' add? This is a module for manipulating corpuses, so I reckon ! it should be called Corpus. Like Cookie, gzip, zipfile, locale, mailbox... ! see what I mean? ! ! -- ! Richie Hindle ! richie@entrian.com""" ! ! if __name__ == '__main__': ! try: ! opts, args = getopt.getopt(sys.argv[1:], 'estgvhcu') ! except getopt.error, msg: ! print >>sys.stderr, str(msg) + '\n\n' + __doc__ ! sys.exit() ! ! options["globals", "verbose"] = False ! runTestServer = False ! setupTestServer = False ! cleanupTestServer = False ! useGzip = False ! useExistingDB = False ! ! for opt, arg in opts: ! if opt == '-h': ! print >>sys.stderr, __doc__ ! sys.exit() ! elif opt == '-s': ! setupTestServer = True ! elif opt == '-e': ! runTestServer = True ! elif opt == '-t': ! setupTestServer = True ! runTestServer = True ! elif opt == '-c': ! cleanupTestServer = True ! elif opt == '-v': ! options["globals", "verbose"] = True ! elif opt == '-g': ! useGzip = True ! elif opt == '-u': ! useExistingDB = True ! ! if setupTestServer: ! setupTest(useGzip) ! if runTestServer: ! runTest(useGzip) ! elif cleanupTestServer: ! cleanupTest() ! else: ! print >>sys.stderr, __doc__ --- 332,336 ---- ! class GzipFileMessageFactory(MessageFactory): '''MessageFactory for FileMessage objects''' ! klass = GzipFileMessage From anadelonbrin at users.sourceforge.net Wed Mar 16 04:27:23 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:27:26 2005 Subject: [Spambayes-checkins] spambayes/spambayes TestDriver.py,1.5,1.6 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16346/spambayes Modified Files: TestDriver.py Log Message: Use Python 2.4 sets if available. Index: TestDriver.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/TestDriver.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TestDriver.py 18 Oct 2004 01:01:38 -0000 1.5 --- TestDriver.py 16 Mar 2005 03:27:21 -0000 1.6 *************** *** 23,29 **** try: ! from sets import Set ! except ImportError: ! from spambayes.compatsets import Set import cPickle as pickle --- 23,36 ---- try: ! # We have three possibilities for Set: ! # (a) With Python 2.2 and earlier, we use our compatsets class ! # (b) With Python 2.3, we use the sets.Set class ! # (c) With Python 2.4 and later, we use the builtin set class ! Set = set ! except NameError: ! try: ! from sets import Set ! except ImportError: ! from spambayes.compatsets import Set import cPickle as pickle From anadelonbrin at users.sourceforge.net Wed Mar 16 04:29:04 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:29:07 2005 Subject: [Spambayes-checkins] spambayes/spambayes UserInterface.py, 1.53, 1.54 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16734/spambayes Modified Files: UserInterface.py Log Message: Upload messages properly. Avoid creating pop3proxyham.mbox files all over the place, and update the message info database properly. Index: UserInterface.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/UserInterface.py,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** UserInterface.py 2 Jan 2005 05:01:50 -0000 1.53 --- UserInterface.py 16 Mar 2005 03:29:01 -0000 1.54 *************** *** 89,92 **** --- 89,94 ---- from spambayes import Stats from spambayes import Version + from spambayes import storage + from spambayes import FileCorpus from Options import options, optionsPathname, defaults, OptionsClass, _ *************** *** 494,513 **** content = content.replace('\r\n', '\n').replace('\r', '\n') ! # The upload might be a single message or am mbox file. messages = self._convertUploadToMessageList(content) ! # Append the message(s) to a file, to make it easier to rebuild ! # the database later. This is a temporary implementation - ! # it should keep a Corpus of trained messages. ! # XXX Temporary, heh. One of the problems with this is that ! # XXX these files get opened in whatever happens to be the cwd. ! # XXX I don't think anyone uses these anyway, but we should fix ! # XXX this for 1.1. I think that creating a new message in the ! # XXX Ham/Spam corpus would work, and not interfere with anything. ! # XXX We could later search for them, too, which would be a bonus. if isSpam: ! f = open("_pop3proxyspam.mbox", "a") else: ! f = open("_pop3proxyham.mbox", "a") # Train on the uploaded message(s). --- 496,538 ---- content = content.replace('\r\n', '\n').replace('\r', '\n') ! # The upload might be a single message or a dbx/mbox file. messages = self._convertUploadToMessageList(content) ! # Add the messages(s) to the appropriate corpus. This means ! # that we can rebuild the database later, if desired (as long as ! # they haven't expired), and can search for the messages later ! # (and even correct training). This also takes care of training ! # the messages. ! # This replaces the 1.0.x practice of opening a ! # "_pop3proxyham.mbox" or "_pop3proxyspam.mbox" in the CWD and ! # placing them there. if isSpam: ! desired_corpus = "spamCorpus" else: ! desired_corpus = "hamCorpus" ! if hasattr(self, desired_corpus): ! corpus = getattr(self, desired_corpus) ! else: ! if hasattr(self, "state"): ! # sb_server (exists in state) ! corpus = getattr(self.state, desired_corpus) ! setattr(self, desired_corpus, corpus) ! else: ! # sb_imapfilter (need to create) ! if isSpam: ! fn = storage.get_pathname_option("Storage", ! "spam_cache") ! else: ! fn = storage.get_pathname_option("Storage", ! "ham_cache") ! storage.ensureDir(fn) ! if self.gzipCache: ! factory = FileCorpus.GzipFileMessageFactory() ! else: ! factory = FileCorpus.FileMessageFactory() ! age = options["Storage", "cache_expiry_days"]*24*60*60 ! corpus = FileCorpus.ExpiryFileCorpus(age, factory, fn, ! '[0123456789\-]*', cacheSize=20) ! setattr(self, desired_corpus, corpus) # Train on the uploaded message(s). *************** *** 515,529 **** self.flush() for message in messages: ! # XXX Here, we should really use the message.Message class, ! # XXX so that the messageinfo database is updated (and so ! # XXX the stats are correct, and so on). ! tokens = tokenizer.tokenize(message) ! self.classifier.learn(tokens, isSpam) ! f.write("From pop3proxy@spambayes.org Sat Jan 31 00:00:00 2000\n") ! f.write(message) ! f.write("\n\n") ! # Save the database and return a link Home and another training form. ! f.close() self._doSave() self.write(_("%sOK. Return %sHome%s or train again:%s") % --- 540,549 ---- self.flush() for message in messages: ! msg = factory.create(key, message) ! corpus.addMessage(msg) ! msg.RememberClassification(isSpam) ! # Save the database and return a link Home and another training ! # form. self._doSave() self.write(_("%sOK. Return %sHome%s or train again:%s") % From anadelonbrin at users.sourceforge.net Wed Mar 16 04:30:18 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:30:22 2005 Subject: [Spambayes-checkins] spambayes/spambayes classifier.py,1.29,1.30 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16997/spambayes Modified Files: classifier.py Log Message: Remove unused import. Index: classifier.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/classifier.py,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** classifier.py 3 Nov 2004 01:15:04 -0000 1.29 --- classifier.py 16 Mar 2005 03:30:13 -0000 1.30 *************** *** 39,43 **** import math - import types try: # We have three possibilities for Set: --- 39,42 ---- From anadelonbrin at users.sourceforge.net Wed Mar 16 04:32:57 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:32:59 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_bnserver.py,1.2,1.3 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17609/scripts Modified Files: sb_bnserver.py Log Message: Nit picking in a comment. Index: sb_bnserver.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_bnserver.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** sb_bnserver.py 4 May 2004 13:03:47 -0000 1.2 --- sb_bnserver.py 16 Mar 2005 03:32:54 -0000 1.3 *************** *** 60,64 **** # get the server up before initializing spambayes, so that ! # we havent wasted time if we later find we cant start the server try: server = BNServer(args[0], BNRequest) --- 60,64 ---- # get the server up before initializing spambayes, so that ! # we haven't wasted time if we later find we can't start the server try: server = BNServer(args[0], BNRequest) From anadelonbrin at users.sourceforge.net Wed Mar 16 04:35:06 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:35:09 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.53,1.54 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17912/scripts Modified Files: sb_imapfilter.py Log Message: For each IMAP server, load a separate configuration file into the existing one for the duration of the classify/train, if it exists. Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** sb_imapfilter.py 14 Feb 2005 06:08:10 -0000 1.53 --- sb_imapfilter.py 16 Mar 2005 03:35:02 -0000 1.54 *************** *** 95,99 **** from spambayes import Stats from spambayes import message ! from spambayes.Options import options, get_pathname_option from spambayes import tokenizer, storage, message, Dibbler from spambayes.UserInterface import UserInterfaceServer --- 95,99 ---- from spambayes import Stats from spambayes import message ! from spambayes.Options import options, get_pathname_option, optionsPathname from spambayes import tokenizer, storage, message, Dibbler from spambayes.UserInterface import UserInterfaceServer *************** *** 1122,1125 **** --- 1122,1137 ---- imaps.append((IMAPSession(server, port, imapDebug, doExpunge), username, password)) + + # In order to make working with multiple servers easier, we + # allow the user to have separate configuration files for each + # server. These may specify different folders to watch, different + # spam/unsure folders, or any other options (e.g. thresholds). + # For each server we use the default (global) options, and load + # the specific options on top. To facilitate this, we use a + # restore point for the options with just the default (global) + # options. + # XXX What about when we are running with -l and change options + # XXX via the web interface? We need to handle that, really. + options.set_restore_point() while True: for imap, username, password in imaps: *************** *** 1127,1130 **** --- 1139,1157 ---- print "Account: %s:%s" % (imap.server, imap.port) if imap.connected: + # As above, we load a separate configuration file + # for each server, if it exists. We look for a + # file in the optionsPathname directory, with the + # name server.name.ini or .spambayes_server_name_rc + # XXX While 1.1 is in alpha these names can be + # XXX changed if desired. Please let Tony know! + basedir = os.path.dirname(optionsPathname) + fn1 = os.path.join(basedir, imap.server + ".ini") + fn2 = os.path.join(basedir, + imap.server.replace(".", "_") + \ + "_rc") + for fn in (fn1, fn2): + if os.path.exists(fn): + options.merge_file(fn) + imap.login(username, password) imap_filter.imap_server = imap *************** *** 1140,1143 **** --- 1167,1171 ---- imap.logout() + options.revert_to_restore_point() else: # Failed to connect. This may be a temporary problem, *************** *** 1145,1148 **** --- 1173,1177 ---- # running once we will end, otherwise we'll try again # in sleepTime seconds. + # XXX Maybe we should log this error message? pass From anadelonbrin at users.sourceforge.net Wed Mar 16 04:36:02 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:36:06 2005 Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.20,1.21 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18096 Modified Files: README-DEVEL.txt Log Message: Update a couple of comments about the build process and website. Index: README-DEVEL.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** README-DEVEL.txt 20 Jan 2005 16:01:03 -0000 1.20 --- README-DEVEL.txt 16 Mar 2005 03:35:59 -0000 1.21 *************** *** 499,502 **** --- 499,505 ---- % gpg -sab spambayes-1.0.1.exe Put the created *.asc files in the "sigs" directory of the website. + (Note that when you update the website, you will need to manually ssh + to shell1.sourceforge.net and chmod these files so that people can + access them.) o If your public key isn't already linked to on the Download page, put it there. *************** *** 538,543 **** COM typelibs that work with Outlook 2000, 2002 and 2003, you need to build the installer on a system that has Outlook 2000 (not a more recent ! version). You also need to have InnoSetup, resourcepackage and py2exe ! installed. o Get hold of a fresh copy of the source (Windows line endings, --- 541,546 ---- COM typelibs that work with Outlook 2000, 2002 and 2003, you need to build the installer on a system that has Outlook 2000 (not a more recent ! version). You also need to have InnoSetup, pywin32, resourcepackage and ! py2exe installed. o Get hold of a fresh copy of the source (Windows line endings, From anadelonbrin at users.sourceforge.net Wed Mar 16 04:37:14 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 04:37:21 2005 Subject: [Spambayes-checkins] spambayes/spambayes OptionsClass.py,1.26,1.27 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18352/spambayes Modified Files: OptionsClass.py Log Message: Speed up a couple of things. Allow an OptionClass object to set and restore from a particular point. Index: OptionsClass.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/OptionsClass.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** OptionsClass.py 16 Jan 2005 22:20:21 -0000 1.26 --- OptionsClass.py 16 Mar 2005 03:37:11 -0000 1.27 *************** *** 208,222 **** s = str(value) i = 0 ! vals = () while True: m = r.search(s[i:]) if m is None: break ! vals += (m.group(),) delimiter = s[i:i + m.start()] if self.delimiter is None and delimiter != "": self.delimiter = delimiter i += m.end() ! return vals def as_nice_string(self, section=None): --- 208,222 ---- s = str(value) i = 0 ! vals = [] while True: m = r.search(s[i:]) if m is None: break ! vals.append(m.group()) delimiter = s[i:i + m.start()] if self.delimiter is None and delimiter != "": self.delimiter = delimiter i += m.end() ! return tuple(vals) def as_nice_string(self, section=None): *************** *** 399,402 **** --- 399,403 ---- self.verbose = None self._options = {} + self.restore_point = {} self.conversion_table = {} # set by creator if they need it. # *************** *** 519,523 **** def load_defaults(self, defaults): ! '''Load default values (stored in this module).''' for section, opts in defaults.items(): for opt in opts: --- 520,524 ---- def load_defaults(self, defaults): ! '''Load default values (stored in Options.py).''' for section, opts in defaults.items(): for opt in opts: *************** *** 537,540 **** --- 538,563 ---- self._options[section, o.name] = o + def set_restore_point(self): + '''Remember what the option values are right now, to + be able to go back to them, via revert_to_restore_point(). + + Any existing restore point is wiped. Restore points do + not persist over sessions. + ''' + self.restore_point = {} + for key, opt_obj in self._options.iteritems(): + self.restore_point[key] = opt_obj.get() + + def revert_to_restore_point(self): + '''Restore option values to their values when set_restore_point() + was last called. + + If set_restore_point() has not been called, then this has no + effect. If new options have been added since set_restore_point, + their values are not effected. + ''' + for key, value in self.restore_point.iteritems(): + self._options[key].set(value) + def merge_files(self, file_list): for f in file_list: *************** *** 802,810 **** # where number represents the number of CHAR8 octets # but this is too complex for us at the moment. ! IMAP_ASTRING = "" for i in range(1, 128): if not chr(i) in ['"', '\\', '\n', '\r']: ! IMAP_ASTRING += chr(i) ! IMAP_ASTRING = r"\"?\\?[" + re.escape(IMAP_ASTRING) + r"]+\"?" # Similarly, each option must specify whether it should be reset to --- 825,833 ---- # where number represents the number of CHAR8 octets # but this is too complex for us at the moment. ! IMAP_ASTRING = [] for i in range(1, 128): if not chr(i) in ['"', '\\', '\n', '\r']: ! IMAP_ASTRING.append(chr(i)) ! IMAP_ASTRING = r"\"?[" + re.escape(''.join(IMAP_ASTRING)) + r"]+\"?" # Similarly, each option must specify whether it should be reset to From anadelonbrin at users.sourceforge.net Wed Mar 16 23:36:36 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 16 23:36:39 2005 Subject: [Spambayes-checkins] spambayes/spambayes UserInterface.py, 1.54, 1.55 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12487/spambayes Modified Files: UserInterface.py Log Message: Fix NameError found by Michal Vitecek Index: UserInterface.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/UserInterface.py,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** UserInterface.py 16 Mar 2005 03:29:01 -0000 1.54 --- UserInterface.py 16 Mar 2005 22:36:33 -0000 1.55 *************** *** 527,531 **** "ham_cache") storage.ensureDir(fn) ! if self.gzipCache: factory = FileCorpus.GzipFileMessageFactory() else: --- 527,531 ---- "ham_cache") storage.ensureDir(fn) ! if options["Storage", "cache_use_gzip"]: factory = FileCorpus.GzipFileMessageFactory() else: From montanaro at users.sourceforge.net Fri Mar 18 02:37:25 2005 From: montanaro at users.sourceforge.net (Skip Montanaro) Date: Fri Mar 18 02:37:28 2005 Subject: [Spambayes-checkins] spambayes/spambayes storage.py,1.48,1.49 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11209/spambayes Modified Files: storage.py Log Message: typo in comment Index: storage.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/storage.py,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** storage.py 7 Feb 2005 23:20:16 -0000 1.48 --- storage.py 18 Mar 2005 01:37:22 -0000 1.49 *************** *** 915,919 **** [standard getopts code] ! db_name, db_type = database_types(opts) storage = open_storage(db_name, db_type) --- 915,919 ---- [standard getopts code] ! db_name, db_type = database_type(opts) storage = open_storage(db_name, db_type) From montanaro at users.sourceforge.net Fri Mar 18 02:40:10 2005 From: montanaro at users.sourceforge.net (Skip Montanaro) Date: Fri Mar 18 02:40:13 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_unheader.py,1.2,1.3 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11642/scripts Modified Files: sb_unheader.py Log Message: Am I the only person who uses sb_unheader.py? ;-) I've had this change in my sandbox for ages. I believe the Generator.Generator __call__ method is either deprecated or gone altogether in favor of flatten. Index: sb_unheader.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_unheader.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** sb_unheader.py 21 Oct 2003 21:46:31 -0000 1.2 --- sb_unheader.py 18 Mar 2005 01:40:08 -0000 1.3 *************** *** 84,88 **** for msg in mailbox.PortableUnixMailbox(f, Parser().parse): process_message(msg, dosa, pats) ! gen(msg, unixfrom=1) def process_maildir(d, dosa=1, pats=None): --- 84,88 ---- for msg in mailbox.PortableUnixMailbox(f, Parser().parse): process_message(msg, dosa, pats) ! gen.flatten(msg, unixfrom=1) def process_maildir(d, dosa=1, pats=None): *************** *** 97,101 **** tmpfile = open(tmpfn, "w") print "writing to %s" % tmpfn ! email.Generator.Generator(tmpfile, maxheaderlen=0)(msg, unixfrom=0) os.rename(tmpfn, fn) --- 97,102 ---- tmpfile = open(tmpfn, "w") print "writing to %s" % tmpfn ! gen = email.Generator.Generator(tmpfile, maxheaderlen=0) ! gen.flatten(msg, unixfrom=0) os.rename(tmpfn, fn) From montanaro at users.sourceforge.net Fri Mar 18 02:57:30 2005 From: montanaro at users.sourceforge.net (Skip Montanaro) Date: Fri Mar 18 02:57:33 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_dbexpimp.py,1.17,1.18 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16377/scripts Modified Files: sb_dbexpimp.py Log Message: future imports have to come first... Index: sb_dbexpimp.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_dbexpimp.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** sb_dbexpimp.py 22 Nov 2004 00:11:52 -0000 1.17 --- sb_dbexpimp.py 18 Mar 2005 01:57:27 -0000 1.18 *************** *** 74,81 **** # Foundation license. - __author__ = "Tim Stone " - from __future__ import generators # Python 2.2 compatibility stuff try: --- 74,81 ---- # Foundation license. from __future__ import generators + __author__ = "Tim Stone " + # Python 2.2 compatibility stuff try: From montanaro at users.sourceforge.net Fri Mar 18 02:57:31 2005 From: montanaro at users.sourceforge.net (Skip Montanaro) Date: Fri Mar 18 02:57:34 2005 Subject: [Spambayes-checkins] spambayes/spambayes Corpus.py, 1.21, 1.22 FileCorpus.py, 1.18, 1.19 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16377/spambayes Modified Files: Corpus.py FileCorpus.py Log Message: future imports have to come first... Index: Corpus.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Corpus.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** Corpus.py 16 Mar 2005 03:22:53 -0000 1.21 --- Corpus.py 18 Mar 2005 01:57:28 -0000 1.22 *************** *** 77,85 **** # Foundation license. __author__ = "Tim Stone " __credits__ = "Richie Hindle, Tim Peters, all the spambayes contributors." - from __future__ import generators - try: True, False --- 77,85 ---- # Foundation license. + from __future__ import generators + __author__ = "Tim Stone " __credits__ = "Richie Hindle, Tim Peters, all the spambayes contributors." try: True, False Index: FileCorpus.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/FileCorpus.py,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** FileCorpus.py 16 Mar 2005 03:26:23 -0000 1.18 --- FileCorpus.py 18 Mar 2005 01:57:28 -0000 1.19 *************** *** 40,48 **** # Foundation license. __author__ = "Tim Stone " __credits__ = "Richie Hindle, Tim Peters, all the spambayes contributors." - from __future__ import generators - import email --- 40,48 ---- # Foundation license. + from __future__ import generators + __author__ = "Tim Stone " __credits__ = "Richie Hindle, Tim Peters, all the spambayes contributors." import email From anadelonbrin at users.sourceforge.net Wed Mar 23 00:14:46 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 23 00:14:52 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_server.py, 1.21.4.2, 1.21.4.3 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19581/scripts Modified Files: Tag: release_1_0-branch sb_server.py Log Message: Backport two fixes: Report connection errors with sb_server only once per hour unless verbose. Connect with a blocking socket so that the connection will fail if appropriate. Index: sb_server.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_server.py,v retrieving revision 1.21.4.2 retrieving revision 1.21.4.3 diff -C2 -d -r1.21.4.2 -r1.21.4.3 *** sb_server.py 15 Oct 2004 05:56:01 -0000 1.21.4.2 --- sb_server.py 22 Mar 2005 23:14:41 -0000 1.21.4.3 *************** *** 144,156 **** self.set_terminator('\r\n') self.create_socket(socket.AF_INET, socket.SOCK_STREAM) try: self.connect((serverName, serverPort)) except socket.error, e: error = "Can't connect to %s:%d: %s" % (serverName, serverPort, e) ! print >>sys.stderr, error self.lineCallback('-ERR %s\r\n' % error) self.lineCallback('') # "The socket's been closed." self.close() ! def collect_incoming_data(self, data): self.request = self.request + data --- 144,183 ---- self.set_terminator('\r\n') self.create_socket(socket.AF_INET, socket.SOCK_STREAM) + # create_socket creates a non-blocking socket. This is not great, + # because then socket.connect() will return errno 10035, because + # connect takes time. We then don't know if the connect call + # succeeded or not. With Python 2.4, this means that we will move + # into asyncore.loop(), and if the connect does fail, have a + # loop something like 'while True: log(error)', which fills up + # stdout very fast. + self.socket.setblocking(1) try: self.connect((serverName, serverPort)) except socket.error, e: error = "Can't connect to %s:%d: %s" % (serverName, serverPort, e) ! # Some people have their system setup to check mail very ! # frequently, but without being clever enough to check whether ! # the network is available. If we continually print the ! # "can't connect" error, we use up lots of CPU and disk space. ! # To avoid this, if not verbose only print each distinct error ! # once per hour. ! # See also: [ 1113863 ] sb_tray eats all cpu time ! now = time.time() ! then = time.time() - 3600 ! if error not in state.reported_errors or \ ! options["globals", "verbose"] or \ ! state.reported_errors[error] < then: ! print >>sys.stderr, error ! ! # Record this error in the list of ones we have seen this ! # session. ! state.reported_errors[error] = now ! self.lineCallback('-ERR %s\r\n' % error) self.lineCallback('') # "The socket's been closed." self.close() ! else: ! self.socket.setblocking(0) ! def collect_incoming_data(self, data): self.request = self.request + data *************** *** 672,675 **** --- 699,705 ---- sys.exit() + # Remember reported errors. + self.reported_errors = {} + # Set up the statistics. self.totalSessions = 0 From anadelonbrin at users.sourceforge.net Wed Mar 23 00:16:08 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 23 00:16:11 2005 Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.44.4.9,1.44.4.10 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20191 Modified Files: Tag: release_1_0-branch CHANGELOG.txt Log Message: Update for 1.0.4 Index: CHANGELOG.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v retrieving revision 1.44.4.9 retrieving revision 1.44.4.10 diff -C2 -d -r1.44.4.9 -r1.44.4.10 *** CHANGELOG.txt 28 Jan 2005 01:26:20 -0000 1.44.4.9 --- CHANGELOG.txt 22 Mar 2005 23:16:00 -0000 1.44.4.10 *************** *** 1,4 **** --- 1,8 ---- [Note that all dates are in English, not American format - i.e. day/month/year] + Release 1.0.4 + ============= + Tony Meyer 09/03/2005 Use a blocking socket when connecting with sb_server, so that with Python 2.4 we don't end up with never-ending reports of errors. + Release 1.0.3 ============= From anadelonbrin at users.sourceforge.net Wed Mar 23 00:16:22 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 23 00:16:26 2005 Subject: [Spambayes-checkins] spambayes WHAT_IS_NEW.txt,1.35.4.6,1.35.4.7 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20389 Modified Files: Tag: release_1_0-branch WHAT_IS_NEW.txt Log Message: Update for 1.0.4 Index: WHAT_IS_NEW.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v retrieving revision 1.35.4.6 retrieving revision 1.35.4.7 diff -C2 -d -r1.35.4.6 -r1.35.4.7 *** WHAT_IS_NEW.txt 28 Jan 2005 01:26:21 -0000 1.35.4.6 --- WHAT_IS_NEW.txt 22 Mar 2005 23:16:20 -0000 1.35.4.7 *************** *** 11,68 **** release, it is likely that this will be the last release in the 1.0.x series. ! New in 1.0.3 ! ============ ! ! 1.0.3 fixes two problems with 1.0.2 - firstly, as a result of building with ! Python 2.4, the Microsoft file mscvr71.dll must be distributed with SpamBayes, ! which was not done in 1.0.2 (so those without an existing copy would not be ! able to use the binary). In addition, a bug with a web interface fix meant ! that headers would contain data like '<' instead of '<'. This has also ! been fixed. ! ! Since 1.0.2 was only around for about a day, this file also details changes ! from 1.0.1. ! ! New in 1.0.2 ============ ! o The SpamBayes 1.0.2 binaries (for users of the Windows installers) are ! built with Python 2.4 (earlier versions used Python 2.3). The most ! significant effect of this is that this should solve all email parsing ! problems for non-Outlook users (those messages that previously failed ! to classify and had a X-Spambayes-Exception header added). Both the ! Outlook plug-in and sb_server should also be (nearly unnoticeably) ! faster, as well. ! ! o Similarly, all SpamBayes 1.0.2 scripts should work correctly with Python ! 2.4 (for those running from source), as well as Python 2.3 and Python 2.2 ! (now including 2.2.0 and 2.2.1) as previously. ! ! o The web interface has been fixed to correctly handle subject lines and ! configuration file names that include the characters &, <, and >. ! ! o AUTH-Digest authentication for the web interface has been fixed and should ! now work correctly. ! ! o The web interface had a bug where changing any options via the ! configuration pages would mean that some options were reset to their ! default values until the next time that sb_server was reloaded. This bug ! has been fixed. ! o The reasonably common problem with sb_imapfilter, Mac OS X and ! MemoryErrors is hopefully fixed (although we have not been able to ! verify this). ! Reported Bugs Fixed ! =================== ! The following bug tracked via the SourceForge system was fixed: ! 1078923 ! More details regarding this bug can be found at: ! http://sourceforge.net/tracker/index.php?func=detail&group_id=61702&atid=498103&aid=1078923 ! As this is a bugfix release, no feature requests or patches tracked via the ! SourceForge system were added. --- 11,45 ---- release, it is likely that this will be the last release in the 1.0.x series. ! New in 1.0.4 ============ ! 1.0.4 has three changes, all as a response to the same problem with 1.0.3. ! 1.0.3 was built with Python 2.4, which, while offering many advantages, ! also introduced a problem when failing to connect to a POP3 server with ! sb_server.py. Basically, if your mail client tried to connect to the ! POP3 server and the connect failed (but the DNS lookup succeeded) then ! a never-ending stream of warnings would be written to your log. This ! both consumes all available disk space and all available processing time. ! This release does not address any issues with sb_imapfilter, the Outlook ! plug-in, or any other SpamBayes application except sb_server. Users of ! those applications are welcome to continue using 1.0.3. + The three changes are: ! o 1.0.4 is built with Python 2.3, as all previous releases were. If ! there are any future 1.0.x releases, they will also be built with ! Python 2.3. 1.1.x will be built with Python 2.4. ! o Unless you have set the [globals] verbose option to True, sb_server ! will only report unique connection errors once per hour. In other ! words, if you have three different servers proxied, and they all ! fail, you will get only three errors logged per hour, no matter how ! many times the connection fails. ! o The connection to the server will now properly fail if the connection ! cannot be established, and this error will be reported only once, ! rather than the partial success and continual warnings experienced ! with 1.0.3. From anadelonbrin at users.sourceforge.net Wed Mar 23 00:17:20 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 23 00:17:23 2005 Subject: [Spambayes-checkins] spambayes/windows spambayes.iss, 1.15.4.8, 1.15.4.9 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20808/windows Modified Files: Tag: release_1_0-branch spambayes.iss Log Message: Go back to building with Python 2.3. Prepare for 1.0.4 Index: spambayes.iss =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v retrieving revision 1.15.4.8 retrieving revision 1.15.4.9 diff -C2 -d -r1.15.4.8 -r1.15.4.9 *** spambayes.iss 28 Jan 2005 01:22:32 -0000 1.15.4.8 --- spambayes.iss 22 Mar 2005 23:17:16 -0000 1.15.4.9 *************** *** 5,11 **** [Setup] ; Version specific constants ! AppVerName=SpamBayes 1.0.3 ! AppVersion=1.0.3 ! OutputBaseFilename=spambayes-1.0.3 ; Normal constants. Be careful about changing 'AppName' AppName=SpamBayes --- 5,11 ---- [Setup] ; Version specific constants ! AppVerName=SpamBayes 1.0.4 ! AppVersion=1.0.4 ! OutputBaseFilename=spambayes-1.0.4 ; Normal constants. Be careful about changing 'AppName' AppName=SpamBayes *************** *** 21,26 **** Source: "py2exe\dist\lib\*.*"; DestDir: "{app}\lib"; Flags: ignoreversion ! Source: "py2exe\dist\bin\python24.dll"; DestDir: "{app}\bin"; Flags: ignoreversion ! Source: "py2exe\dist\bin\msvcr71.dll"; DestDir: "{app}\bin"; Flags: ignoreversion Source: "py2exe\dist\bin\outlook_addin.dll"; DestDir: "{app}\bin"; Check: InstallingOutlook; Flags: ignoreversion --- 21,25 ---- Source: "py2exe\dist\lib\*.*"; DestDir: "{app}\lib"; Flags: ignoreversion ! Source: "py2exe\dist\bin\python23.dll"; DestDir: "{app}\bin"; Flags: ignoreversion Source: "py2exe\dist\bin\outlook_addin.dll"; DestDir: "{app}\bin"; Check: InstallingOutlook; Flags: ignoreversion From anadelonbrin at users.sourceforge.net Wed Mar 23 00:17:52 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 23 00:18:03 2005 Subject: [Spambayes-checkins] spambayes/spambayes __init__.py, 1.11.4.7, 1.11.4.8 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21042/spambayes Modified Files: Tag: release_1_0-branch __init__.py Log Message: Update for 1.0.4 Index: __init__.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/__init__.py,v retrieving revision 1.11.4.7 retrieving revision 1.11.4.8 diff -C2 -d -r1.11.4.7 -r1.11.4.8 *** __init__.py 28 Jan 2005 01:22:31 -0000 1.11.4.7 --- __init__.py 22 Mar 2005 23:17:43 -0000 1.11.4.8 *************** *** 1,3 **** # package marker. ! __version__ = '1.0.3' --- 1,3 ---- # package marker. ! __version__ = '1.0.4' From anadelonbrin at users.sourceforge.net Wed Mar 23 00:17:55 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 23 00:18:03 2005 Subject: [Spambayes-checkins] spambayes/spambayes Version.py, 1.31.4.7, 1.31.4.8 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21092/spambayes Modified Files: Tag: release_1_0-branch Version.py Log Message: Update for 1.0.4 Index: Version.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Version.py,v retrieving revision 1.31.4.7 retrieving revision 1.31.4.8 diff -C2 -d -r1.31.4.7 -r1.31.4.8 *** Version.py 28 Jan 2005 01:22:31 -0000 1.31.4.7 --- Version.py 22 Mar 2005 23:17:52 -0000 1.31.4.8 *************** *** 38,48 **** # "description" strings below - they just need to increment # so automated version checking works. ! "Version": 1.03, ! "BinaryVersion": 1.03, "Description": "SpamBayes Outlook Addin", ! "Date": "January 2005", ! "Full Description": "%(Description)s Version 1.0.3 (%(Date)s)", "Full Description Binary": ! "%(Description)s Binary Version 1.0.3 (%(Date)s)", # Note this means we can change the download page later, and old # versions will still go to the new page. --- 38,48 ---- # "description" strings below - they just need to increment # so automated version checking works. ! "Version": 1.04, ! "BinaryVersion": 1.04, "Description": "SpamBayes Outlook Addin", ! "Date": "March 2005", ! "Full Description": "%(Description)s Version 1.0.4 (%(Date)s)", "Full Description Binary": ! "%(Description)s Binary Version 1.0.4 (%(Date)s)", # Note this means we can change the download page later, and old # versions will still go to the new page. *************** *** 53,63 **** # Note these version numbers also currently don't appear in the # "description" strings below - see above ! "Version": 1.03, ! "BinaryVersion": 1.03, "Description": "SpamBayes POP3 Proxy", ! "Date": "January 2005", ! "Full Description": """%(Description)s Version 1.0.3 (%(Date)s)""", "Full Description Binary": ! """%(Description)s Binary Version 1.0.3 (%(Date)s)""", # Note this means we can change the download page later, and old # versions will still go to the new page. --- 53,63 ---- # Note these version numbers also currently don't appear in the # "description" strings below - see above ! "Version": 1.04, ! "BinaryVersion": 1.04, "Description": "SpamBayes POP3 Proxy", ! "Date": "March 2005", ! "Full Description": """%(Description)s Version 1.0.4 (%(Date)s)""", "Full Description Binary": ! """%(Description)s Binary Version 1.0.4 (%(Date)s)""", # Note this means we can change the download page later, and old # versions will still go to the new page. From anadelonbrin at users.sourceforge.net Wed Mar 23 00:23:55 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Mar 23 00:23:57 2005 Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.44.4.10,1.44.4.11 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23871 Modified Files: Tag: release_1_0-branch CHANGELOG.txt Log Message: Missed a change. Index: CHANGELOG.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v retrieving revision 1.44.4.10 retrieving revision 1.44.4.11 diff -C2 -d -r1.44.4.10 -r1.44.4.11 *** CHANGELOG.txt 22 Mar 2005 23:16:00 -0000 1.44.4.10 --- CHANGELOG.txt 22 Mar 2005 23:23:53 -0000 1.44.4.11 *************** *** 4,7 **** --- 4,8 ---- ============= Tony Meyer 09/03/2005 Use a blocking socket when connecting with sb_server, so that with Python 2.4 we don't end up with never-ending reports of errors. + Tony Meyer 07/02/2005 sb_server: When non-verbose, only report unique connection errors once per hour. Release 1.0.3 From anadelonbrin at users.sourceforge.net Thu Mar 24 06:21:46 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Mar 24 06:21:50 2005 Subject: [Spambayes-checkins] website/sigs spambayes-1.0.4.exe.asc, NONE, 1.1 spambayes-1.0.4.tar.gz.asc, NONE, 1.1 spambayes-1.0.4.zip.asc, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/website/sigs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23063/sigs Added Files: spambayes-1.0.4.exe.asc spambayes-1.0.4.tar.gz.asc spambayes-1.0.4.zip.asc Log Message: Update for 1.0.4 --- NEW FILE: spambayes-1.0.4.exe.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBCQk4PVcUzCvI/cyoRApcFAKDkZoMcTlaub9+9zL2ckkhiElUfTgCg21Ly rPYnottwc8y1ST/3fEmGE20= =x8J1 -----END PGP SIGNATURE----- --- NEW FILE: spambayes-1.0.4.tar.gz.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBCQk4FVcUzCvI/cyoRAhIeAJ0XoL1mA4pOt1A9fY/SlPMQABcFlwCg/QcK p4gUcalZj3z8eJ0FUyeCpEU= =XyVj -----END PGP SIGNATURE----- --- NEW FILE: spambayes-1.0.4.zip.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBCQk3+VcUzCvI/cyoRAkGMAKD5T4MOKUo18OX1pqBboC+IgvNIXgCfeCnw U/VoOEW+YlI+yLAJZUoLRvM= =QPQy -----END PGP SIGNATURE----- From anadelonbrin at users.sourceforge.net Thu Mar 24 06:21:46 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Mar 24 06:21:50 2005 Subject: [Spambayes-checkins] website download.ht, 1.34, 1.35 index.ht, 1.38, 1.39 reply.txt, 1.18, 1.19 windows.ht, 1.44, 1.45 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23063 Modified Files: download.ht index.ht reply.txt windows.ht Log Message: Update for 1.0.4 Index: download.ht =================================================================== RCS file: /cvsroot/spambayes/website/download.ht,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** download.ht 28 Jan 2005 02:08:26 -0000 1.34 --- download.ht 24 Mar 2005 05:21:43 -0000 1.35 *************** *** 3,7 **** Author: SpamBayes !

Version 1.0.3 of the SpamBayes project is now available.

This is a bugfix release - it is funtionally identical to 1.0, but includes fixes for a number of bugs. We expect it to prove to be quite stable and --- 3,7 ---- Author: SpamBayes !

Version 1.0.4 of the SpamBayes project is now available.

This is a bugfix release - it is funtionally identical to 1.0, but includes fixes for a number of bugs. We expect it to prove to be quite stable and *************** *** 11,16 **** spambayes@python.org. !

You may like to view the release notes ! or the files that make up this release. --- 11,16 ---- spambayes@python.org. !

You may like to view the release notes ! or the files that make up this release. *************** *** 48,65 ****

--- 48,65 ---- Index: index.ht =================================================================== RCS file: /cvsroot/spambayes/website/index.ht,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** index.ht 28 Jan 2005 02:08:27 -0000 1.38 --- index.ht 24 Mar 2005 05:21:43 -0000 1.39 *************** *** 5,9 ****

News

!

SpamBayes 1.0.3 is now available! (This includes both the source archives and a Windows binary installer).

See the download page for more.

--- 5,9 ----

News

!

SpamBayes 1.0.4 is now available! (This includes both the source archives and a Windows binary installer).

See the download page for more.

Index: reply.txt =================================================================== RCS file: /cvsroot/spambayes/website/reply.txt,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** reply.txt 28 Jan 2005 02:08:27 -0000 1.18 --- reply.txt 24 Mar 2005 05:21:43 -0000 1.19 *************** *** 48,53 **** ----------------------------------------------- ! Please ensure that you have the latest version. As of January 28, 2005, ! this is 1.0.3 for both the source and for the binary installer (for the Outlook plug-in and sb_server). If you are still having trouble, try looking at the bug reports that are currently open: --- 48,53 ---- ----------------------------------------------- ! Please ensure that you have the latest version. As of March 24, 2005, ! this is 1.0.4 for both the source and for the binary installer (for the Outlook plug-in and sb_server). If you are still having trouble, try looking at the bug reports that are currently open: Index: windows.ht =================================================================== RCS file: /cvsroot/spambayes/website/windows.ht,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** windows.ht 28 Jan 2005 02:08:27 -0000 1.44 --- windows.ht 24 Mar 2005 05:21:43 -0000 1.45 *************** *** 11,17 ****

Latest Release

!

The latest release is 1.0.3 - see the ! release notes ! or download the installation program.

--- 11,17 ----

Latest Release

!

The latest release is 1.0.4 - see the ! release notes ! or download the installation program.

*************** *** 45,59 ****
    !
  1. The Python installer, available from the download page of the Python website. You should choose the latest stable release (that is, the latest release with no letters in its version).
  2. !
  3. Mark Hammond's pywin32 extensions. Choose the version which corresponds to the version of Python you downloaded.
  4. !
  5. The SpamBayes source, either as a zip file or via --- 45,59 ----
      !
    1. The Python installer, available from the download page of the Python website. You should choose the latest stable release (that is, the latest release with no letters in its version).
    2. !
    3. Mark Hammond's pywin32 extensions. Choose the version which corresponds to the version of Python you downloaded.
    4. !
    5. The SpamBayes source, either as a zip file or via *************** *** 74,78 ****

      Windows users using other mail clients and retrieving mail via POP3 can download the same ! installation program and use it to install a binary version of sb_server, including a tray application.

      --- 74,78 ----

      Windows users using other mail clients and retrieving mail via POP3 can download the same ! installation program and use it to install a binary version of sb_server, including a tray application.

      From anadelonbrin at users.sourceforge.net Thu Mar 24 06:28:05 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Mar 24 06:28:08 2005 Subject: [Spambayes-checkins] spambayes/spambayes __init__.py, 1.11.4.8, 1.11.4.9 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26330/spambayes Modified Files: Tag: release_1_0-branch __init__.py Log Message: 1.0.4 is done. Index: __init__.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/__init__.py,v retrieving revision 1.11.4.8 retrieving revision 1.11.4.9 diff -C2 -d -r1.11.4.8 -r1.11.4.9 *** __init__.py 22 Mar 2005 23:17:43 -0000 1.11.4.8 --- __init__.py 24 Mar 2005 05:28:02 -0000 1.11.4.9 *************** *** 1,3 **** # package marker. ! __version__ = '1.0.4' --- 1,3 ---- # package marker. ! __version__ = '1.0.4+' From anadelonbrin at users.sourceforge.net Tue Mar 29 05:38:36 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 05:38:39 2005 Subject: [Spambayes-checkins] spambayes MANIFEST.in,1.10,1.11 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16737 Modified Files: MANIFEST.in Log Message: No longer need *.spec or *.iss files in Outlook2000 directory. Index: MANIFEST.in =================================================================== RCS file: /cvsroot/spambayes/spambayes/MANIFEST.in,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** MANIFEST.in 11 Nov 2004 01:48:43 -0000 1.10 --- MANIFEST.in 29 Mar 2005 03:38:33 -0000 1.11 *************** *** 4,8 **** recursive-include pspam *.py *.txt *.ini *.sh recursive-include contrib *.py *.sh *.txt *.el *rc ! recursive-include Outlook2000 *.py *.txt *.ini *.html *.bmp *.rc *.h *.jpg *.rtf *.spec *.iss recursive-include utilities *.py *.txt recursive-include scripts *.py *.txt --- 4,8 ---- recursive-include pspam *.py *.txt *.ini *.sh recursive-include contrib *.py *.sh *.txt *.el *rc ! recursive-include Outlook2000 *.py *.txt *.ini *.html *.bmp *.rc *.h *.jpg *.rtf recursive-include utilities *.py *.txt recursive-include scripts *.py *.txt *************** *** 10,12 **** recursive-include windows *.py *.txt *.h *.rc *.ico *.html *.iss include *.txt *.py MANIFEST.in *.sh - --- 10,11 ---- From anadelonbrin at users.sourceforge.net Tue Mar 29 05:51:25 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 05:51:28 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.54,1.55 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23902/scripts Modified Files: sb_imapfilter.py Log Message: Add [ 1169939 ] Make sb_imapfilter use CRAM MD5 authentication If available, use CRAM-MD5 authentication when logging in. I don't have access to an IMAP server that supports this, so can't verify that it works (it doesn't break my AUTH=Login, at least). It looks good though, so it seems worth adding to 1.1a1 to me. Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** sb_imapfilter.py 16 Mar 2005 03:35:02 -0000 1.54 --- sb_imapfilter.py 29 Mar 2005 03:51:23 -0000 1.55 *************** *** 53,56 **** --- 53,58 ---- servers I have access to offer any alternative method, however. If someone's does, then it would be nice to offer this. + Thanks to #1169939 we now support CRAM_MD5 if available. It'd still + be good to support others, though. o Usernames should be able to be literals as well as quoted strings. This might help if the username/password has special characters like *************** *** 80,83 **** --- 82,86 ---- import time import sys + import hmac import getopt import types *************** *** 192,200 **** return "".join(buffer) def login(self, username, pwd): """Log in to the IMAP server, catching invalid username/password.""" assert self.connected, "Must be connected before logging in." try: ! BaseIMAP.login(self, username, pwd) # superclass login except BaseIMAP.error, e: msg = "There was an error logging in to the IMAP server." \ --- 195,216 ---- return "".join(buffer) + def authenticate_cram_md5(self, username, pwd): + """Authenticate (login) with CRAM-MD5. + + See RFC 2195 and SpamBayes patch #1169939 + """ + def cram_md5(response): + return " ".join([username, + hmac.HMAC(pwd, response).hexdigest()]) + self.authenticate('CRAM-MD5', cram_md5) + def login(self, username, pwd): """Log in to the IMAP server, catching invalid username/password.""" assert self.connected, "Must be connected before logging in." try: ! if 'AUTH=CRAM-MD5' in self.capabilities: ! self.authenticate_cram_md5(username, pwd) ! else: ! BaseIMAP.login(self, username, pwd) # superclass login except BaseIMAP.error, e: msg = "There was an error logging in to the IMAP server." \ From anadelonbrin at users.sourceforge.net Tue Mar 29 07:32:58 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 07:33:01 2005 Subject: [Spambayes-checkins] spambayes/spambayes classifier.py,1.30,1.31 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8242/spambayes Modified Files: classifier.py Log Message: Fix [ 1166146 ] Tokenizer fails on bad URL Index: classifier.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/classifier.py,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** classifier.py 16 Mar 2005 03:30:13 -0000 1.30 --- classifier.py 29 Mar 2005 05:32:56 -0000 1.31 *************** *** 679,682 **** --- 679,687 ---- # it's only two entries, plus one for each type of http error # encountered, so it's pretty neglible. + # If there is no content in the URL, then just return immediately. + # "http://)" will trigger this. + if not url: + return ["url:non_resolving"] + from spambayes.tokenizer import Tokenizer From anadelonbrin at users.sourceforge.net Tue Mar 29 07:40:05 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 07:40:11 2005 Subject: [Spambayes-checkins] spambayes/languages/es/DIALOGS dialogs.rc, 1.1, 1.2 i18n_dialogs.py, 1.1, 1.2 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13325/languages/es/DIALOGS Modified Files: dialogs.rc i18n_dialogs.py Log Message: Add (untranslated) Notifications tab to the Manager dialog so that the translated dialogs work properly. If translaters are reading this, please do the translation and give me the new version! Index: dialogs.rc =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/es/DIALOGS/dialogs.rc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dialogs.rc 4 Jan 2005 01:05:12 -0000 1.1 --- dialogs.rc 29 Mar 2005 05:40:03 -0000 1.2 *************** *** 348,351 **** --- 348,376 ---- END + IDD_NOTIFICATIONS DIALOGEX 0, 0, 248, 257 + STYLE DS_SETFONT | WS_CHILD | WS_CAPTION + CAPTION "Notifications" + FONT 8, "Tahoma", 0, 0, 0x0 + BEGIN + GROUPBOX "New Mail Sounds",IDC_STATIC,7,3,241,229 + CONTROL "Enable new mail notification sounds",IDC_ENABLE_SOUNDS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,129,10 + LTEXT "Good sound:",IDC_STATIC,14,31,42,8 + EDITTEXT IDC_HAM_SOUND,14,40,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_HAM_SOUND,192,40,50,14 + LTEXT "Unsure sound:",IDC_STATIC,14,58,48,8 + EDITTEXT IDC_UNSURE_SOUND,14,67,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_UNSURE_SOUND,192,67,50,14 + LTEXT "Spam sound:",IDC_STATIC,14,85,42,8 + EDITTEXT IDC_SPAM_SOUND,14,94,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_SPAM_SOUND,192,94,50,14 + LTEXT "Time to wait for additional messages:",IDC_STATIC,14, + 116,142,8 + CONTROL "",IDC_ACCUMULATE_DELAY_SLIDER,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,127,148,22 + EDITTEXT IDC_ACCUMULATE_DELAY_TEXT,163,133,40,14,ES_AUTOHSCROLL + LTEXT "seconds",IDC_STATIC,205,136,28,8 + END + ///////////////////////////////////////////////////////////////////////////// Index: i18n_dialogs.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/es/DIALOGS/i18n_dialogs.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** i18n_dialogs.py 4 Jan 2005 01:05:12 -0000 1.1 --- i18n_dialogs.py 29 Mar 2005 05:40:03 -0000 1.2 *************** *** 1,6 **** #c:\spambayes\languages\es\DIALOGS\i18n_dialogs.py #This is a generated file. Please edit c:\spambayes\languages\es\DIALOGS\dialogs.rc instead. ! _rc_size_=32565 ! _rc_mtime_=1104799958 try: _ --- 1,6 ---- #c:\spambayes\languages\es\DIALOGS\i18n_dialogs.py #This is a generated file. Please edit c:\spambayes\languages\es\DIALOGS\dialogs.rc instead. ! _rc_size_=33884 ! _rc_mtime_=1112074520 try: _ *************** *** 9,15 **** return s class FakeParser: ! dialogs = {'IDD_MANAGER': [[_('SpamBayes Manager'), (0, 0, 275, 308), -1865940928, 1024, (8, 'Tahoma')], [128, _('Close'), 1, (216, 287, 50, 14), 1342177281], [128, _('Cancel'), 2, (155, 287, 50, 14), 1073741824], ['SysTabControl32', '', 1068, (8, 7, 258, 276), 1342177280], [128, _('About'), 1072, (8, 287, 50, 14), 1342177280]], 'IDD_DIAGNOSTIC': [[_('Diagnostics'), (0, 0, 183, 98), -1865940928, 1024, (8, 'Tahoma')], [130, _('These advanced options are for diagnostic or debugging purposes only. You should only change these options if specifically asked to, or you know exactly what they mean.'), -1, (5, 3, 174, 36), 1342177280], [130, _('Log file verbosity'), -1, (5, 44, 56, 8), 1342177280], [129, '', 1061, (73, 42, 40, 14), 1350566016], [128, _('View log...'), 1093, (129, 41, 50, 14), 1342177280], [128, _('Save Spam Score'), 1048, (5, 63, 72, 10), 1342242819], [128, _('Cancel'), 2, (69, 79, 50, 14), 1073741824], [128, _('Close'), 1, (129, 79, 50, 14), 1342177281]], 'IDD_FILTER_SPAM': [[_('Spam'), (0, 0, 251, 147), 1355284672, None, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 20, 177, 12), 1342312972], [128, _('Browse...'), 1039, (194, 19, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 43, 237, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 52, 212, 10), 1342177280], ['msctls_trackbar32', '', 1023, (13, 62, 165, 22), 1342242821], [129, '', 1024, (184, 63, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 82, 107, 10), 1342177280], [133, '', 1025, (13, 93, 55, 40), 1344339971], [130, _('to folder'), -1, (75, 95, 31, 10), 1342177280], [130, _('Folder names...'), 1027, (120, 93, 59, 14), 1342312972], [128, _('Browse'), 1028, (184, 93, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 110, 81, 10), 1342242819]], 'IDD_TRAINING': [[_('Training'), (0, 0, 252, 257), 1355284672, 1024, (8, 'Tahoma')], [128, '', -1, (5, 1, 243, 113), 1342177287], [130, _('Folders with known good messages.'), -1, (11, 11, 131, 11), 1342177280], [130, '', 1002, (11, 21, 175, 12), 1342181900], [128, _('&Browse...'), 1099, (192, 20, 50, 14), 1342177280], [130, _('Folders with spam or other junk messages.'), -1, (11, 36, 171, 9), 1342177280], [130, _('Static'), 1003, (11, 46, 174, 12), 1342312972], [128, _('Brow&se...'), 1005, (192, 46, 50, 14), 1342177280], [128, _('Score &messages after training'), 1008, (11, 64, 111, 10), 1342242819], [128, _('&Rebuild entire database'), 1007, (137, 64, 92, 10), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (11, 76, 231, 11), 1350565888], [128, _('&Start Training'), 1006, (11, 91, 54, 14), 1342193664], [130, _('training status training status training status training status training status training status training status '), 1001, (75, 89, 149, 17), 1342177280], [128, _('Incremental Training'), -1, (4, 117, 244, 87), 1342177287], [128, _('Train that a message is good when it is moved from a spam folder back to the Inbox.'), 1010, (11, 127, 204, 18), 1342251011], [130, _("Clicking 'Not Spam' button should"), -1, (10, 148, 115, 10), 1342177280], [133, '', 1075, (127, 145, 114, 54), 1344339971], [128, _('Train that a message is spam when it is moved to the spam folder.'), 1011, (11, 163, 204, 16), 1342251011], [130, _("Clicking 'Spam' button should"), -1, (10, 183, 104, 10), 1342177280], [133, '', 1074, (127, 180, 114, 54), 1344339971]], 'IDD_WIZARD': [[_('SpamBayes Configuration Wizard'), (0, 0, 384, 190), -1865940800, 1024, (8, 'Tahoma')], [128, _('Cancel'), 2, (328, 173, 50, 14), 1342177280], [128, _('<< Back'), 1069, (216, 173, 50, 14), 1342177280], [128, _('Next>>,Finish'), 1077, (269, 173, 50, 14), 1342177281], [130, '', 1078, (75, 4, 303, 167), 1342177298], [130, '125', 1092, (0, 0, 69, 190), 1342177294]], 'IDD_WIZARD_FOLDERS_WATCH': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1039, (225, 134, 50, 14), 1342177280], [130, _('Folders that receive new messages'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes needs to know what folders are used to receive new messages. In most cases, this will be your Inbox, but you may also specify additional folders to be watched for spam.'), -1, (20, 21, 247, 25), 1342177280], [130, _('The following folders will be watched for new messages. Use the Browse button to change the list, or Next if the list of folders is correct.'), -1, (20, 79, 247, 20), 1342177280], [130, _('If you use the Outlook rule wizard to move messages into folders, you may like to select these folders in addition to your inbox.'), -1, (20, 51, 241, 20), 1342177280], [129, '', 1038, (20, 100, 195, 48), 1350568068]], 'IDD_WIZARD_FINISHED_TRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes has been successfully trained and configured. You should find the system is immediately effective at filtering spam.'), 1035, (20, 35, 247, 26), 1342177280], [130, _("Even though SpamBayes has been trained, it does continue to learn - please ensure you regularly check your Unsure folder, and use the 'Spam' or 'Not Spam' buttons as appropriate."), -1, (20, 68, 249, 30), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 104, 148, 9), 1342177280]], 'IDD_WIZARD_FOLDERS_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1099, (208, 49, 60, 15), 1342177280], [130, _('Training'), -1, (20, 4, 247, 10), 1342177280], [130, _('Please select the folders with the pre-sorted good messages and the folders with the pre-sorted spam messages.'), -1, (20, 16, 243, 16), 1342177280], [129, '', 1083, (20, 49, 179, 14), 1350568064], [130, _('Examples of Spam, or unwanted messages can be found in'), -1, (20, 71, 198, 8), 1342177280], [129, '', 1027, (20, 81, 177, 14), 1350568064], [130, _('Examples of good messages can be found in'), -1, (20, 38, 153, 8), 1342177280], [128, _('Browse...'), 1005, (208, 81, 60, 15), 1342177280], [130, _('If you have not pre-sorted your messages, or already have training information you wish to keep, please select the Back button and indicate you have not prepared for SpamBayes.'), -1, (20, 128, 243, 26), 1342177280], [128, _('Score messages when training is complete'), 1008, (20, 108, 163, 16), 1342242819]], 'IDD_WIZARD_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Training'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is training on your good and spam messages.'), -1, (20, 22, 247, 16), 1342177280], ['msctls_progress32', '', 1000, (20, 45, 255, 11), 1350565888], [130, _('(progress text)'), 1001, (20, 61, 257, 10), 1342177280]], 'IDD_WIZARD_FINISHED_TRAIN_LATER': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration suspended'), -1, (20, 4, 247, 14), 1342177280], [130, _('To perform initial training, you should create a folder that contains only examples of good messages, and another that contains only examples of spam.'), -1, (20, 17, 247, 27), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 145, 148, 9), 1342177280], [130, _('For examples of good messages, you may like to use your Inbox - however, it is important you remove all spam from this folder before you commence'), -1, (20, 42, 247, 26), 1342177280], [130, _('training. If you have too much spam in your Inbox, you may like to create a temporary folder and copy some examples to it.'), -1, (20, 58, 247, 17), 1342177280], [130, _('For examples of spam messages, you may like to look through your Deleted Items folder, and your Inbox. However, you will not be able to specify the Deleted Items folder as examples of spam, so you will need to move them to a folder you create.'), -1, (20, 80, 247, 35), 1342177280], [130, _('When you are finished, open the SpamBayes Manager via the SpamBayes toolbar, and re-start the Configuration Wizard.'), -1, (20, 121, 245, 17), 1342177280]], 'IDD_FOLDER_SELECTOR': [[_('Dialog'), (0, 0, 247, 215), -1865940800, None, (8, 'Tahoma')], [130, _('&Folders:'), -1, (7, 7, 47, 9), 1342177280], ['SysTreeView32', '', 1040, (7, 21, 172, 140), 1350631735], [128, _('(sub)'), 1041, (7, 167, 126, 9), 1342242819], [130, _('(status1)'), 1043, (7, 180, 220, 9), 1342177280], [130, _('(status2)'), 1044, (7, 194, 220, 9), 1342177280], [128, _('OK'), 1, (190, 21, 50, 14), 1342177281], [128, _('Cancel'), 2, (190, 39, 50, 14), 1342177280], [128, _('C&lear All'), 1042, (190, 58, 50, 14), 1342177280], [128, _('&New folder'), 1046, (190, 77, 50, 14), 1342177280]], 'IDD_STATISTICS': [[_('Statistics'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('Statistics'), -1, (7, 3, 241, 229), 1342177287], [130, _('some stats\\nand some more\\nline 3\\nline 4\\nline 5'), 1095, (12, 12, 230, 204), 1342177280], [128, _('Reset Statistics'), 1096, (178, 238, 70, 14), 1342177280], [130, _('Last reset:'), -1, (7, 241, 36, 8), 1342177280], [130, _('<<>>'), 1097, (47, 241, 107, 8), 1342177280]], 'IDD_ADVANCED': [[_('Advanced'), (0, 0, 248, 257), 1355284672, 1024, (8, 'Tahoma')], [128, _('Filter timer'), -1, (7, 3, 234, 117), 1342177287], ['msctls_trackbar32', '', 1056, (16, 36, 148, 22), 1342242821], [130, _('Processing start delay'), -1, (16, 26, 101, 8), 1342177280], [129, '', 1057, (165, 39, 40, 14), 1350566016], [130, _('seconds'), -1, (208, 41, 28, 8), 1342177280], ['msctls_trackbar32', '', 1058, (16, 73, 148, 22), 1342242821], [130, _('Delay between processing items'), -1, (16, 62, 142, 8), 1342177280], [129, '', 1059, (165, 79, 40, 14), 1350566016], [130, _('seconds'), -1, (207, 82, 28, 8), 1342177280], [128, _('Only for folders that receive new mail'), 1060, (16, 100, 217, 10), 1342242819], [128, _('Show Data Folder'), 1071, (7, 238, 70, 14), 1342177280], [128, _('Enable background filtering'), 1091, (16, 12, 162, 10), 1342242819], [128, _('Diagnostics...'), 1080, (171, 238, 70, 14), 1342177280]], 'IDD_WIZARD_FINISHED_UNCONFIGURED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration cancelled'), -1, (20, 4, 247, 14), 1342177280], [130, _('The main SpamBayes options will now be displayed. You must define your folders and enable SpamBayes before it will begin filtering mail.'), -1, (20, 29, 247, 16), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 139, 148, 9), 1342177280]], 'IDD_WIZARD_WELCOME': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Welcome to the SpamBayes configuration wizard'), -1, (20, 4, 191, 14), 1342177280], [130, _('This wizard will help you configure the SpamBayes Outlook addin. Please indicate how you have prepared for this application.'), -1, (20, 20, 255, 18), 1342177280], [128, _("I haven't prepared for SpamBayes at all."), 1081, (20, 42, 190, 11), 1342309385], [128, _('I have already sorted good messages (ham) and spam messages into folders that are suitable for training purposes.'), -1, (20, 59, 255, 18), 1342186505], [128, _('I would prefer to configure SpamBayes manually.'), -1, (20, 82, 187, 12), 1342178313], [130, _('If you would like more information about training and configuring SpamBayes, click the About button.'), -1, (20, 103, 185, 20), 1342177280], [128, _('About...'), 1017, (215, 104, 60, 15), 1342177280], [130, _('If you cancel the wizard, you can access it again via the SpamBayes Manager, available from the SpamBayes toolbar.'), -1, (20, 137, 232, 17), 1342177280]], 'IDD_FILTER_NOW': [[_('Filter Now'), (0, 0, 244, 185), -1865940928, 1024, (8, 'Tahoma')], [130, _('Filter the following folders'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1036, (7, 20, 172, 12), 1342181900], [128, _('Browse...'), 1037, (187, 19, 50, 14), 1342177280], [128, _('Filter action'), -1, (7, 38, 230, 40), 1342308359], [128, _('Perform all filter actions'), 1019, (15, 49, 126, 10), 1342373897], [128, _("Score messages, but don't perform filter action"), 1018, (15, 62, 203, 10), 1342177289], [128, _('Restrict the filter to'), -1, (7, 84, 230, 35), 1342308359], [128, _('Unread mail'), 1020, (15, 94, 149, 9), 1342242819], [128, _('Mail never previously spam filtered'), 1021, (15, 106, 149, 9), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (7, 129, 230, 11), 1350565888], [130, _('Static'), 1001, (7, 144, 227, 10), 1342177280], [128, _('Start Filtering'), 1006, (7, 161, 52, 14), 1342177281], [128, _('Close'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('SpamBayes will not be effective until it is trained.'), -1, (11, 8, 191, 14), 1342177280], [128, _('About Training...'), 1017, (209, 140, 65, 15), 1342177280], [130, _('SpamBayes is a system that learns about good and bad mail based on examples you provide. It comes with no built-in rules, so must have some training information before it will be effective.'), -1, (11, 21, 263, 30), 1342177280], [130, _("In this case, SpamBayes will begin by filtering all mail to an 'Unsure' folder. You can then use the 'Spam' and 'Not Spam' buttons to train each message as it arrives. Slowly SpamBayes will learn about your mail."), -1, (22, 61, 252, 29), 1342177280], [130, _('This option will close the wizard, and provide instructions how to sort your mail. You will then be able to configure SpamBayes and have it be immediately effective at filtering your mail'), -1, (22, 106, 252, 27), 1342177280], [130, _('For more information, click the About Training button.'), -1, (11, 143, 187, 12), 1342177280], [128, _('I want to continue without training, and let SpamBayes learn as it goes'), 1088, (11, 50, 263, 11), 1342308361], [128, _('I will pre-sort some good and spam messages, and configure SpamBayes later'), 1089, (11, 92, 263, 11), 1342177289]], 'IDD_FILTER_UNSURE': [[_('Possible Spam'), (0, 0, 249, 124), 1355284672, None, (8, 'Tahoma')], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 11, 212, 10), 1342177280], ['msctls_trackbar32', '', 1029, (12, 18, 165, 20), 1342242821], [129, '', 1030, (183, 24, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 38, 107, 10), 1342177280], [133, '', 1031, (12, 49, 55, 40), 1344339971], [130, _('to folder'), -1, (74, 52, 31, 10), 1342177280], [130, _('(folder name)'), 1033, (119, 49, 59, 14), 1342312972], [128, _('&Browse'), 1034, (183, 49, 50, 14), 1342177280], [128, _('Mark possible spam as read'), 1051, (12, 70, 101, 10), 1342242819]], 'IDD_WIZARD_FINISHED_UNTRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is now configured and ready to start learning about your Spam'), -1, (20, 22, 247, 16), 1342177280], [130, _("As SpamBayes has not been trained, all new mail will arrive in your Unsure folder. As each message arrives, you should use the 'Spam' or 'Not Spam' toolbar buttons as appropriate."), -1, (20, 42, 247, 27), 1342177280], [130, _("If you wish to speed up the training process, you can move all the existing Spam from your Inbox to the new Spam folder, then select 'Training' from the SpamBayes manager."), -1, (20, 83, 247, 31), 1342177280], [130, _('As you train, you will find the accuracy of SpamBayes increases.'), -1, (20, 69, 247, 15), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 121, 148, 9), 1342177280]], 'IDD_GENERAL': [[_('General'), (0, 0, 253, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('SpamBayes Version Here'), 1009, (6, 54, 242, 8), 1342177280], [130, _("SpamBayes requiere entrenamiento previo para ser efectivo. Cliquee en la solapa 'Entrenamiento' o use el Asistente de Configuraci\xf3n para entrenar."), -1, (6, 67, 242, 17), 1342177280], [130, _('Estado de la base de datos de entrenamiento:'), -1, (6, 90, 222, 8), 1342177280], [130, _('123 spam messages; 456 good messages\\r\\nLine2\\r\\nLine3'), 1035, (6, 101, 242, 27), 1342181376], [128, _('Habilitar SpamBayes'), 1013, (6, 173, 97, 11), 1342242819], [130, _('Certain spam is moved to Folder1\\nPossible spam is moved too'), 1014, (6, 146, 242, 19), 1342181376], [128, _('Reiniciar la Configuraci\xf3n...'), 1073, (6, 238, 106, 15), 1342177280], [128, _('Asistente de Configuraci\xf3n...'), 1070, (142, 238, 106, 15), 1342177280], [130, _('Estado del filtro:'), -1, (6, 135, 222, 8), 1342177280], [130, '1062', 1063, (0, 2, 275, 52), 1342179342]], 'IDD_FILTER': [[_('Filtering'), (0, 0, 249, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 4, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 16, 177, 12), 1342312972], [128, _('Browse...'), 1039, (192, 14, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 33, 235, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 42, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1023, (13, 52, 165, 22), 1342242821], [129, '', 1024, (184, 53, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 72, 107, 10), 1342177280], [133, '', 1025, (12, 83, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 85, 28, 10), 1342177280], [130, _('Folder names...'), 1027, (102, 83, 77, 14), 1342312972], [128, _('Browse'), 1028, (184, 83, 50, 14), 1342177280], [128, _('Possible Spam'), -1, (6, 117, 235, 81), 1342177287], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 128, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1029, (12, 135, 165, 20), 1342242821], [129, '', 1030, (183, 141, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 155, 107, 10), 1342177280], [133, '', 1031, (12, 166, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 169, 27, 10), 1342177280], [130, _('(folder name)'), 1033, (102, 166, 77, 14), 1342312972], [128, _('&Browse'), 1034, (184, 166, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 100, 81, 10), 1342242819], [128, _('Mark possible spam as read'), 1051, (12, 186, 101, 10), 1342242819], [128, _('Certain Good'), -1, (6, 203, 235, 48), 1342177287], [130, _('These messages should be:'), -1, (12, 215, 107, 10), 1342177280], [133, '', 1032, (12, 228, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 230, 27, 10), 1342177280], [130, _('(folder name)'), 1083, (102, 228, 77, 14), 1342312972], [128, _('&Browse'), 1099, (184, 228, 50, 14), 1342177280]], 'IDD_WIZARD_FOLDERS_REST': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1005, (208, 85, 60, 15), 1342177280], [130, _('Spam and Unsure Folders'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes uses two folders to manage your Spam - a folder where 'certain' spam is stored, and another for unsure messages."), -1, (20, 20, 247, 22), 1342177280], [130, _('If you enter a folder name and it does not exist, it will be automatically created. If you would prefer to select an existing folder, click the Browse button.'), -1, (20, 44, 243, 24), 1342177280], [129, '', 1027, (20, 85, 179, 14), 1350566016], [130, _('Unsure messages will be delivered to a folder named'), -1, (20, 105, 186, 12), 1342177280], [129, '', 1033, (20, 117, 177, 14), 1350566016], [130, _('Spam will be delivered to a folder named'), -1, (20, 72, 137, 8), 1342177280], [128, _('Browse...'), 1034, (208, 117, 60, 15), 1342177280]]} ! ids = {'IDC_DELAY1_SLIDER': 1056, 'IDC_ABOUT_BTN': 1072, 'IDD_MANAGER': 101, 'IDD_DIAGNOSTIC': 113, 'IDD_TRAINING': 102, 'IDC_DELAY2_TEXT': 1059, 'IDC_DELAY1_TEXT': 1057, 'IDD_WIZARD': 114, 'IDC_STATIC_HAM': 1002, 'IDC_PROGRESS_TEXT': 1001, 'IDD_GENERAL': 108, 'IDC_TAB': 1068, 'IDC_FOLDER_UNSURE': 1033, 'IDC_VERBOSE_LOG': 1061, 'IDC_EDIT1': 1094, 'IDC_BROWSE': 1037, 'IDC_BACK_BTN': 1069, 'IDD_WIZARD_FINISHED_UNCONFIGURED': 119, 'IDC_ACTION_CERTAIN': 1025, 'IDC_BUT_ACT_ALL': 1019, 'IDD_FILTER_NOW': 104, 'IDC_MARK_SPAM_AS_READ': 1047, 'IDC_RECOVER_RS': 1075, 'IDC_STATIC': -1, 'IDC_PAGE_PLACEHOLDER': 1078, 'IDC_BROWSE_WATCH': 1039, 'IDC_FOLDER_HAM': 1083, 'IDD_WIZARD_FOLDERS_REST': 117, 'IDC_SHOW_DATA_FOLDER': 1071, 'IDC_BUT_ACT_SCORE': 1018, '_APS_NEXT_RESOURCE_VALUE': 128, '_APS_NEXT_SYMED_VALUE': 101, 'IDC_SLIDER_CERTAIN': 1023, 'IDC_BUT_UNREAD': 1020, 'IDC_BUT_ABOUT': 1017, 'IDC_BUT_RESCORE': 1008, 'IDC_BUT_SEARCHSUB': 1041, 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER': 1010, 'IDC_LAST_RESET_DATE': 1097, 'IDD_WIZARD_FOLDERS_TRAIN': 120, 'IDC_BUT_FILTER_ENABLE': 1013, 'IDC_PROGRESS': 1000, 'IDD_WIZARD_FINISHED_TRAINED': 122, 'IDD_FOLDER_SELECTOR': 105, 'IDD_STATISTICS': 107, 'IDC_LIST_FOLDERS': 1040, 'IDB_SBWIZLOGO': 125, 'IDC_BUT_VIEW_LOG': 1093, 'IDC_STATUS2': 1044, 'IDC_STATUS1': 1043, 'IDCANCEL': 2, 'IDC_BROWSE_HAM': 1099, 'IDC_BROWSE_SPAM': 1005, 'IDD_WIZARD_FINISHED_UNTRAINED': 116, 'IDC_MARK_UNSURE_AS_READ': 1051, 'IDC_BUT_WIZARD': 1070, 'IDC_VERSION': 1009, 'IDC_FOLDER_NAMES': 1036, 'IDC_BUT_TIMER_ENABLED': 1091, 'IDC_SLIDER_UNSURE': 1029, 'IDC_BUT_NEW': 1046, 'IDC_FOLDER_WATCH': 1038, 'IDC_BUT_UNTRAINED': 1088, 'IDC_STATIC_SPAM': 1003, 'IDC_EDIT_UNSURE': 1030, 'IDC_BUT_CLEARALL': 1042, 'IDC_BUT_UNSEEN': 1021, 'IDD_WIZARD_FOLDERS_WATCH': 118, 'IDC_EDIT_CERTAIN': 1024, 'IDC_BUT_FILTER_DEFINE': 1016, 'IDC_FORWARD_BTN': 1077, '_APS_NEXT_CONTROL_VALUE': 1100, 'IDC_INBOX_TIMER_ONLY': 1060, 'IDD_ADVANCED': 106, 'IDC_WIZ_GRAPHIC': 1092, 'IDD_FILTER_UNSURE': 111, 'IDC_DEL_SPAM_RS': 1074, 'IDB_FOLDERS': 127, 'IDC_BUT_PREPARATION': 1081, 'IDC_DELAY2_SLIDER': 1058, 'IDC_SAVE_SPAM_SCORE': 1048, 'IDC_FOLDER_CERTAIN': 1027, 'IDB_SBLOGO': 1062, 'IDC_BROWSE_UNSURE': 1034, 'IDC_STATISTICS': 1095, 'IDC_BUT_RESET_STATS': 1096, 'IDC_BUT_TRAIN_TO_SPAM_FOLDER': 1011, 'IDD_FILTER_SPAM': 110, 'IDC_BUT_RESET': 1073, 'IDC_ACTION_UNSURE': 1031, 'IDD_WIZARD_TRAIN': 121, 'IDD_WIZARD_FINISHED_TRAIN_LATER': 124, 'IDC_ACTION_HAM': 1032, 'IDC_BUT_REBUILD': 1007, '_APS_NEXT_COMMAND_VALUE': 40001, 'IDD_WIZARD_TRAINING_IS_IMPORTANT': 123, 'IDC_TRAINING_STATUS': 1035, 'IDD_WIZARD_WELCOME': 115, 'IDC_BUT_TRAIN': 1089, 'IDC_START': 1006, 'IDD_FILTER': 103, 'IDC_LOGO_GRAPHIC': 1063, 'IDC_FILTER_STATUS': 1014, 'IDOK': 1, 'IDC_BROWSE_CERTAIN': 1028, 'IDC_BUT_SHOW_DIAGNOSTICS': 1080, 'IDC_BUT_TRAIN_NOW': 1012} ! names = {1024: 'IDC_EDIT_CERTAIN', 1: 'IDOK', 2: 'IDCANCEL', 1027: 'IDC_FOLDER_CERTAIN', 1028: 'IDC_BROWSE_CERTAIN', 1029: 'IDC_SLIDER_UNSURE', 1030: 'IDC_EDIT_UNSURE', 1031: 'IDC_ACTION_UNSURE', 1032: 'IDC_ACTION_HAM', 1033: 'IDC_FOLDER_UNSURE', 1034: 'IDC_BROWSE_UNSURE', 1035: 'IDC_TRAINING_STATUS', 1036: 'IDC_FOLDER_NAMES', 1037: 'IDC_BROWSE', 1038: 'IDC_FOLDER_WATCH', 1039: 'IDC_BROWSE_WATCH', 1040: 'IDC_LIST_FOLDERS', 1041: 'IDC_BUT_SEARCHSUB', 1042: 'IDC_BUT_CLEARALL', 1043: 'IDC_STATUS1', 1044: 'IDC_STATUS2', 1046: 'IDC_BUT_NEW', 1047: 'IDC_MARK_SPAM_AS_READ', 1048: 'IDC_SAVE_SPAM_SCORE', 1051: 'IDC_MARK_UNSURE_AS_READ', 1056: 'IDC_DELAY1_SLIDER', 1057: 'IDC_DELAY1_TEXT', 1058: 'IDC_DELAY2_SLIDER', 1059: 'IDC_DELAY2_TEXT', 1060: 'IDC_INBOX_TIMER_ONLY', 1061: 'IDC_VERBOSE_LOG', 1062: 'IDB_SBLOGO', 1063: 'IDC_LOGO_GRAPHIC', 1068: 'IDC_TAB', 1069: 'IDC_BACK_BTN', 1070: 'IDC_BUT_WIZARD', 1071: 'IDC_SHOW_DATA_FOLDER', 1072: 'IDC_ABOUT_BTN', 1073: 'IDC_BUT_RESET', 1074: 'IDC_DEL_SPAM_RS', 1075: 'IDC_RECOVER_RS', 1077: 'IDC_FORWARD_BTN', 1078: 'IDC_PAGE_PLACEHOLDER', 1080: 'IDC_BUT_SHOW_DIAGNOSTICS', 1081: 'IDC_BUT_PREPARATION', 1083: 'IDC_FOLDER_HAM', 1088: 'IDC_BUT_UNTRAINED', 1089: 'IDC_BUT_TRAIN', 1091: 'IDC_BUT_TIMER_ENABLED', 1025: 'IDC_ACTION_CERTAIN', 1093: 'IDC_BUT_VIEW_LOG', 1094: 'IDC_EDIT1', 1095: 'IDC_STATISTICS', 1096: 'IDC_BUT_RESET_STATS', 1097: 'IDC_LAST_RESET_DATE', 1098: 'IDC_FOLDER_HAM', 1099: 'IDC_BROWSE_HAM', 1100: '_APS_NEXT_CONTROL_VALUE', 101: 'IDD_MANAGER', 102: 'IDD_TRAINING', 103: 'IDD_FILTER', 104: 'IDD_FILTER_NOW', 105: 'IDD_FOLDER_SELECTOR', 106: 'IDD_ADVANCED', 107: 'IDD_STATISTICS', 108: 'IDD_GENERAL', 110: 'IDD_FILTER_SPAM', 111: 'IDD_FILTER_UNSURE', 113: 'IDD_DIAGNOSTIC', 114: 'IDD_WIZARD', 115: 'IDD_WIZARD_WELCOME', 116: 'IDD_WIZARD_FINISHED_UNTRAINED', 117: 'IDD_WIZARD_FOLDERS_REST', 118: 'IDD_WIZARD_FOLDERS_WATCH', 119: 'IDD_WIZARD_FINISHED_UNCONFIGURED', 120: 'IDD_WIZARD_FOLDERS_TRAIN', 121: 'IDD_WIZARD_TRAIN', 122: 'IDD_WIZARD_FINISHED_TRAINED', 123: 'IDD_WIZARD_TRAINING_IS_IMPORTANT', 124: 'IDD_WIZARD_FINISHED_TRAIN_LATER', 125: 'IDB_SBWIZLOGO', 127: 'IDB_FOLDERS', 128: '_APS_NEXT_RESOURCE_VALUE', 40001: '_APS_NEXT_COMMAND_VALUE', 1092: 'IDC_WIZ_GRAPHIC', 1000: 'IDC_PROGRESS', 1001: 'IDC_PROGRESS_TEXT', 1002: 'IDC_STATIC_HAM', 1003: 'IDC_STATIC_SPAM', 1004: 'IDC_BROWSE_HAM', 1005: 'IDC_BROWSE_SPAM', 1006: 'IDC_START', 1007: 'IDC_BUT_REBUILD', 1008: 'IDC_BUT_RESCORE', 1009: 'IDC_VERSION', 1010: 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER', 1011: 'IDC_BUT_TRAIN_TO_SPAM_FOLDER', 1012: 'IDC_BUT_TRAIN_NOW', 1013: 'IDC_BUT_FILTER_ENABLE', 1014: 'IDC_FILTER_STATUS', 1016: 'IDC_BUT_FILTER_DEFINE', 1017: 'IDC_BUT_ABOUT', 1018: 'IDC_BUT_ACT_SCORE', 1019: 'IDC_BUT_ACT_ALL', 1020: 'IDC_BUT_UNREAD', 1021: 'IDC_BUT_UNSEEN', -1: 'IDC_STATIC', 1023: 'IDC_SLIDER_CERTAIN'} bitmaps = {'IDB_SBWIZLOGO': 'sbwizlogo.bmp', 'IDB_SBLOGO': 'sblogo.bmp', 'IDB_FOLDERS': 'folders.bmp'} def ParseDialogs(s): --- 9,15 ---- return s class FakeParser: ! dialogs = {'IDD_MANAGER': [[_('SpamBayes Manager'), (0, 0, 275, 308), -1865940928, 1024, (8, 'Tahoma')], [128, _('Close'), 1, (216, 287, 50, 14), 1342177281], [128, _('Cancel'), 2, (155, 287, 50, 14), 1073741824], ['SysTabControl32', '', 1068, (8, 7, 258, 276), 1342177280], [128, _('About'), 1072, (8, 287, 50, 14), 1342177280]], 'IDD_DIAGNOSTIC': [[_('Diagnostics'), (0, 0, 183, 98), -1865940928, 1024, (8, 'Tahoma')], [130, _('These advanced options are for diagnostic or debugging purposes only. You should only change these options if specifically asked to, or you know exactly what they mean.'), -1, (5, 3, 174, 36), 1342177280], [130, _('Log file verbosity'), -1, (5, 44, 56, 8), 1342177280], [129, '', 1061, (73, 42, 40, 14), 1350566016], [128, _('View log...'), 1093, (129, 41, 50, 14), 1342177280], [128, _('Save Spam Score'), 1048, (5, 63, 72, 10), 1342242819], [128, _('Cancel'), 2, (69, 79, 50, 14), 1073741824], [128, _('Close'), 1, (129, 79, 50, 14), 1342177281]], 'IDD_FILTER_SPAM': [[_('Spam'), (0, 0, 251, 147), 1355284672, None, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 20, 177, 12), 1342312972], [128, _('Browse...'), 1039, (194, 19, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 43, 237, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 52, 212, 10), 1342177280], ['msctls_trackbar32', '', 1023, (13, 62, 165, 22), 1342242821], [129, '', 1024, (184, 63, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 82, 107, 10), 1342177280], [133, '', 1025, (13, 93, 55, 40), 1344339971], [130, _('to folder'), -1, (75, 95, 31, 10), 1342177280], [130, _('Folder names...'), 1027, (120, 93, 59, 14), 1342312972], [128, _('Browse'), 1028, (184, 93, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 110, 81, 10), 1342242819]], 'IDD_TRAINING': [[_('Training'), (0, 0, 252, 257), 1355284672, 1024, (8, 'Tahoma')], [128, '', -1, (5, 1, 243, 113), 1342177287], [130, _('Folders with known good messages.'), -1, (11, 11, 131, 11), 1342177280], [130, '', 1002, (11, 21, 175, 12), 1342181900], [128, _('&Browse...'), 1004, (192, 20, 50, 14), 1342177280], [130, _('Folders with spam or other junk messages.'), -1, (11, 36, 171, 9), 1342177280], [130, _('Static'), 1003, (11, 46, 174, 12), 1342312972], [128, _('Brow&se...'), 1005, (192, 46, 50, 14), 1342177280], [128, _('Score &messages after training'), 1008, (11, 64, 111, 10), 1342242819], [128, _('&Rebuild entire database'), 1007, (137, 64, 92, 10), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (11, 76, 231, 11), 1350565888], [128, _('&Start Training'), 1006, (11, 91, 54, 14), 1342193664], [130, _('training status training status training status training status training status training status training status '), 1001, (75, 89, 149, 17), 1342177280], [128, _('Incremental Training'), -1, (4, 117, 244, 87), 1342177287], [128, _('Train that a message is good when it is moved from a spam folder back to the Inbox.'), 1010, (11, 127, 204, 18), 1342251011], [130, _("Clicking 'Not Spam' button should"), -1, (10, 148, 115, 10), 1342177280], [133, '', 1075, (127, 145, 114, 54), 1344339971], [128, _('Train that a message is spam when it is moved to the spam folder.'), 1011, (11, 163, 204, 16), 1342251011], [130, _("Clicking 'Spam' button should"), -1, (10, 183, 104, 10), 1342177280], [133, '', 1074, (127, 180, 114, 54), 1344339971]], 'IDD_WIZARD': [[_('SpamBayes Configuration Wizard'), (0, 0, 384, 190), -1865940800, 1024, (8, 'Tahoma')], [128, _('Cancel'), 2, (328, 173, 50, 14), 1342177280], [128, _('<< Back'), 1069, (216, 173, 50, 14), 1342177280], [128, _('Next>>,Finish'), 1077, (269, 173, 50, 14), 1342177281], [130, '', 1078, (75, 4, 303, 167), 1342177298], [130, '125', 1092, (0, 0, 69, 190), 1342177294]], 'IDD_WIZARD_FOLDERS_WATCH': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1039, (225, 134, 50, 14), 1342177280], [130, _('Folders that receive new messages'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes needs to know what folders are used to receive new messages. In most cases, this will be your Inbox, but you may also specify additional folders to be watched for spam.'), -1, (20, 21, 247, 25), 1342177280], [130, _('The following folders will be watched for new messages. Use the Browse button to change the list, or Next if the list of folders is correct.'), -1, (20, 79, 247, 20), 1342177280], [130, _('If you use the Outlook rule wizard to move messages into folders, you may like to select these folders in addition to your inbox.'), -1, (20, 51, 241, 20), 1342177280], [129, '', 1038, (20, 100, 195, 48), 1350568068]], 'IDD_WIZARD_FINISHED_TRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes has been successfully trained and configured. You should find the system is immediately effective at filtering spam.'), 1035, (20, 35, 247, 26), 1342177280], [130, _("Even though SpamBayes has been trained, it does continue to learn - please ensure you regularly check your Unsure folder, and use the 'Spam' or 'Not Spam' buttons as appropriate."), -1, (20, 68, 249, 30), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 104, 148, 9), 1342177280]], 'IDD_WIZARD_FOLDERS_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1004, (208, 49, 60, 15), 1342177280], [130, _('Training'), -1, (20, 4, 247, 10), 1342177280], [130, _('Please select the folders with the pre-sorted good messages and the folders with the pre-sorted spam messages.'), -1, (20, 16, 243, 16), 1342177280], [129, '', 1083, (20, 49, 179, 14), 1350568064], [130, _('Examples of Spam, or unwanted messages can be found in'), -1, (20, 71, 198, 8), 1342177280], [129, '', 1027, (20, 81, 177, 14), 1350568064], [130, _('Examples of good messages can be found in'), -1, (20, 38, 153, 8), 1342177280], [128, _('Browse...'), 1005, (208, 81, 60, 15), 1342177280], [130, _('If you have not pre-sorted your messages, or already have training information you wish to keep, please select the Back button and indicate you have not prepared for SpamBayes.'), -1, (20, 128, 243, 26), 1342177280], [128, _('Score messages when training is complete'), 1008, (20, 108, 163, 16), 1342242819]], 'IDD_WIZARD_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Training'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is training on your good and spam messages.'), -1, (20, 22, 247, 16), 1342177280], ['msctls_progress32', '', 1000, (20, 45, 255, 11), 1350565888], [130, _('(progress text)'), 1001, (20, 61, 257, 10), 1342177280]], 'IDD_WIZARD_FINISHED_TRAIN_LATER': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration suspended'), -1, (20, 4, 247, 14), 1342177280], [130, _('To perform initial training, you should create a folder that contains only examples of good messages, and another that contains only examples of spam.'), -1, (20, 17, 247, 27), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 145, 148, 9), 1342177280], [130, _('For examples of good messages, you may like to use your Inbox - however, it is important you remove all spam from this folder before you commence'), -1, (20, 42, 247, 26), 1342177280], [130, _('training. If you have too much spam in your Inbox, you may like to create a temporary folder and copy some examples to it.'), -1, (20, 58, 247, 17), 1342177280], [130, _('For examples of spam messages, you may like to look through your Deleted Items folder, and your Inbox. However, you will not be able to specify the Deleted Items folder as examples of spam, so you will need to move them to a folder you create.'), -1, (20, 80, 247, 35), 1342177280], [130, _('When you are finished, open the SpamBayes Manager via the SpamBayes toolbar, and re-start the Configuration Wizard.'), -1, (20, 121, 245, 17), 1342177280]], 'IDD_FOLDER_SELECTOR': [[_('Dialog'), (0, 0, 247, 215), -1865940800, None, (8, 'Tahoma')], [130, _('&Folders:'), -1, (7, 7, 47, 9), 1342177280], ['SysTreeView32', '', 1040, (7, 21, 172, 140), 1350631735], [128, _('(sub)'), 1041, (7, 167, 126, 9), 1342242819], [130, _('(status1)'), 1043, (7, 180, 220, 9), 1342177280], [130, _('(status2)'), 1044, (7, 194, 220, 9), 1342177280], [128, _('OK'), 1, (190, 21, 50, 14), 1342177281], [128, _('Cancel'), 2, (190, 39, 50, 14), 1342177280], [128, _('C&lear All'), 1042, (190, 58, 50, 14), 1342177280], [128, _('&New folder'), 1046, (190, 77, 50, 14), 1342177280]], 'IDD_STATISTICS': [[_('Statistics'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('Statistics'), -1, (7, 3, 241, 229), 1342177287], [130, _('some stats\\nand some more\\nline 3\\nline 4\\nline 5'), 1095, (12, 12, 230, 204), 1342177280], [128, _('Reset Statistics'), 1096, (178, 238, 70, 14), 1342177280], [130, _('Last reset:'), -1, (7, 241, 36, 8), 1342177280], [130, _('<<>>'), 1097, (47, 241, 107, 8), 1342177280]], 'IDD_ADVANCED': [[_('Advanced'), (0, 0, 248, 257), 1355284672, 1024, (8, 'Tahoma')], [128, _('Filter timer'), -1, (7, 3, 234, 117), 1342177287], ['msctls_trackbar32', '', 1056, (16, 36, 148, 22), 1342242821], [130, _('Processing start delay'), -1, (16, 26, 101, 8), 1342177280], [129, '', 1057, (165, 39, 40, 14), 1350566016], [130, _('seconds'), -1, (208, 41, 28, 8), 1342177280], ['msctls_trackbar32', '', 1058, (16, 73, 148, 22), 1342242821], [130, _('Delay between processing items'), -1, (16, 62, 142, 8), 1342177280], [129, '', 1059, (165, 79, 40, 14), 1350566016], [130, _('seconds'), -1, (207, 82, 28, 8), 1342177280], [128, _('Only for folders that receive new mail'), 1060, (16, 100, 217, 10), 1342242819], [128, _('Show Data Folder'), 1071, (7, 238, 70, 14), 1342177280], [128, _('Enable background filtering'), 1091, (16, 12, 162, 10), 1342242819], [128, _('Diagnostics...'), 1080, (171, 238, 70, 14), 1342177280]], 'IDD_WIZARD_FINISHED_UNCONFIGURED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration cancelled'), -1, (20, 4, 247, 14), 1342177280], [130, _('The main SpamBayes options will now be displayed. You must define your folders and enable SpamBayes before it will begin filtering mail.'), -1, (20, 29, 247, 16), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 139, 148, 9), 1342177280]], 'IDD_WIZARD_WELCOME': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Welcome to the SpamBayes configuration wizard'), -1, (20, 4, 191, 14), 1342177280], [130, _('This wizard will help you configure the SpamBayes Outlook addin. Please indicate how you have prepared for this application.'), -1, (20, 20, 255, 18), 1342177280], [128, _("I haven't prepared for SpamBayes at all."), 1081, (20, 42, 190, 11), 1342309385], [128, _('I have already sorted good messages (ham) and spam messages into folders that are suitable for training purposes.'), -1, (20, 59, 255, 18), 1342186505], [128, _('I would prefer to configure SpamBayes manually.'), -1, (20, 82, 187, 12), 1342178313], [130, _('If you would like more information about training and configuring SpamBayes, click the About button.'), -1, (20, 103, 185, 20), 1342177280], [128, _('About...'), 1017, (215, 104, 60, 15), 1342177280], [130, _('If you cancel the wizard, you can access it again via the SpamBayes Manager, available from the SpamBayes toolbar.'), -1, (20, 137, 232, 17), 1342177280]], 'IDD_FILTER_NOW': [[_('Filter Now'), (0, 0, 244, 185), -1865940928, 1024, (8, 'Tahoma')], [130, _('Filter the following folders'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1036, (7, 20, 172, 12), 1342181900], [128, _('Browse...'), 1037, (187, 19, 50, 14), 1342177280], [128, _('Filter action'), -1, (7, 38, 230, 40), 1342308359], [128, _('Perform all filter actions'), 1019, (15, 49, 126, 10), 1342373897], [128, _("Score messages, but don't perform filter action"), 1018, (15, 62, 203, 10), 1342177289], [128, _('Restrict the filter to'), -1, (7, 84, 230, 35), 1342308359], [128, _('Unread mail'), 1020, (15, 94, 149, 9), 1342242819], [128, _('Mail never previously spam filtered'), 1021, (15, 106, 149, 9), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (7, 129, 230, 11), 1350565888], [130, _('Static'), 1001, (7, 144, 227, 10), 1342177280], [128, _('Start Filtering'), 1006, (7, 161, 52, 14), 1342177281], [128, _('Close'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('SpamBayes will not be effective until it is trained.'), -1, (11, 8, 191, 14), 1342177280], [128, _('About Training...'), 1017, (209, 140, 65, 15), 1342177280], [130, _('SpamBayes is a system that learns about good and bad mail based on examples you provide. It comes with no built-in rules, so must have some training information before it will be effective.'), -1, (11, 21, 263, 30), 1342177280], [130, _("In this case, SpamBayes will begin by filtering all mail to an 'Unsure' folder. You can then use the 'Spam' and 'Not Spam' buttons to train each message as it arrives. Slowly SpamBayes will learn about your mail."), -1, (22, 61, 252, 29), 1342177280], [130, _('This option will close the wizard, and provide instructions how to sort your mail. You will then be able to configure SpamBayes and have it be immediately effective at filtering your mail'), -1, (22, 106, 252, 27), 1342177280], [130, _('For more information, click the About Training button.'), -1, (11, 143, 187, 12), 1342177280], [128, _('I want to continue without training, and let SpamBayes learn as it goes'), 1088, (11, 50, 263, 11), 1342308361], [128, _('I will pre-sort some good and spam messages, and configure SpamBayes later'), 1089, (11, 92, 263, 11), 1342177289]], 'IDD_FILTER_UNSURE': [[_('Possible Spam'), (0, 0, 249, 124), 1355284672, None, (8, 'Tahoma')], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 11, 212, 10), 1342177280], ['msctls_trackbar32', '', 1029, (12, 18, 165, 20), 1342242821], [129, '', 1030, (183, 24, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 38, 107, 10), 1342177280], [133, '', 1031, (12, 49, 55, 40), 1344339971], [130, _('to folder'), -1, (74, 52, 31, 10), 1342177280], [130, _('(folder name)'), 1033, (119, 49, 59, 14), 1342312972], [128, _('&Browse'), 1034, (183, 49, 50, 14), 1342177280], [128, _('Mark possible spam as read'), 1051, (12, 70, 101, 10), 1342242819]], 'IDD_WIZARD_FINISHED_UNTRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is now configured and ready to start learning about your Spam'), -1, (20, 22, 247, 16), 1342177280], [130, _("As SpamBayes has not been trained, all new mail will arrive in your Unsure folder. As each message arrives, you should use the 'Spam' or 'Not Spam' toolbar buttons as appropriate."), -1, (20, 42, 247, 27), 1342177280], [130, _("If you wish to speed up the training process, you can move all the existing Spam from your Inbox to the new Spam folder, then select 'Training' from the SpamBayes manager."), -1, (20, 83, 247, 31), 1342177280], [130, _('As you train, you will find the accuracy of SpamBayes increases.'), -1, (20, 69, 247, 15), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 121, 148, 9), 1342177280]], 'IDD_GENERAL': [[_('General'), (0, 0, 253, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('SpamBayes Version Here'), 1009, (6, 54, 242, 8), 1342177280], [130, _("SpamBayes requiere entrenamiento previo para ser efectivo. Cliquee en la solapa 'Entrenamiento' o use el Asistente de Configuraci\xf3n para entrenar."), -1, (6, 67, 242, 17), 1342177280], [130, _('Estado de la base de datos de entrenamiento:'), -1, (6, 90, 222, 8), 1342177280], [130, _('123 spam messages; 456 good messages\\r\\nLine2\\r\\nLine3'), 1035, (6, 101, 242, 27), 1342181376], [128, _('Habilitar SpamBayes'), 1013, (6, 173, 97, 11), 1342242819], [130, _('Certain spam is moved to Folder1\\nPossible spam is moved too'), 1014, (6, 146, 242, 19), 1342181376], [128, _('Reiniciar la Configuraci\xf3n...'), 1073, (6, 238, 106, 15), 1342177280], [128, _('Asistente de Configuraci\xf3n...'), 1070, (142, 238, 106, 15), 1342177280], [130, _('Estado del filtro:'), -1, (6, 135, 222, 8), 1342177280], [130, '1062', 1063, (0, 2, 275, 52), 1342179342]], 'IDD_FILTER': [[_('Filtering'), (0, 0, 249, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 4, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 16, 177, 12), 1342312972], [128, _('Browse...'), 1039, (192, 14, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 33, 235, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 42, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1023, (13, 52, 165, 22), 1342242821], [129, '', 1024, (184, 53, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 72, 107, 10), 1342177280], [133, '', 1025, (12, 83, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 85, 28, 10), 1342177280], [130, _('Folder names...'), 1027, (102, 83, 77, 14), 1342312972], [128, _('Browse'), 1028, (184, 83, 50, 14), 1342177280], [128, _('Possible Spam'), -1, (6, 117, 235, 81), 1342177287], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 128, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1029, (12, 135, 165, 20), 1342242821], [129, '', 1030, (183, 141, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 155, 107, 10), 1342177280], [133, '', 1031, (12, 166, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 169, 27, 10), 1342177280], [130, _('(folder name)'), 1033, (102, 166, 77, 14), 1342312972], [128, _('&Browse'), 1034, (184, 166, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 100, 81, 10), 1342242819], [128, _('Mark possible spam as read'), 1051, (12, 186, 101, 10), 1342242819], [128, _('Certain Good'), -1, (6, 203, 235, 48), 1342177287], [130, _('These messages should be:'), -1, (12, 215, 107, 10), 1342177280], [133, '', 1032, (12, 228, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 230, 27, 10), 1342177280], [130, _('(folder name)'), 1083, (102, 228, 77, 14), 1342312972], [128, _('&Browse'), 1004, (184, 228, 50, 14), 1342177280]], 'IDD_NOTIFICATIONS': [[_('Notifications'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('New Mail Sounds'), -1, (7, 3, 241, 229), 1342177287], [128, _('Enable new mail notification sounds'), 1098, (14, 17, 129, 10), 1342242819], [130, _('Good sound:'), -1, (14, 31, 42, 8), 1342177280], [129, '', 1094, (14, 40, 174, 14), 1350566016], [128, _('Browse...'), 1101, (192, 40, 50, 14), 1342177280], [130, _('Unsure sound:'), -1, (14, 58, 48, 8), 1342177280], [129, '', 1095, (14, 67, 174, 14), 1350566016], [128, _('Browse...'), 1102, (192, 67, 50, 14), 1342177280], [130, _('Spam sound:'), -1, (14, 85, 42, 8), 1342177280], [129, '', 1096, (14, 94, 174, 14), 1350566016], [128, _('Browse...'), 1103, (192, 94, 50, 14), 1342177280], [130, _('Time to wait for additional messages:'), -1, (14, 116, 142, 8), 1342177280], ['msctls_trackbar32', '', 1099, (14, 127, 148, 22), 1342242821], [129, '', 1100, (163, 133, 40, 14), 1350566016], [130, _('seconds'), -1, (205, 136, 28, 8), 1342177280]], 'IDD_WIZARD_FOLDERS_REST': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1005, (208, 85, 60, 15), 1342177280], [130, _('Spam and Unsure Folders'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes uses two folders to manage your Spam - a folder where 'certain' spam is stored, and another for unsure messages."), -1, (20, 20, 247, 22), 1342177280], [130, _('If you enter a folder name and it does not exist, it will be automatically created. If you would prefer to select an existing folder, click the Browse button.'), -1, (20, 44, 243, 24), 1342177280], [129, '', 1027, (20, 85, 179, 14), 1350566016], [130, _('Unsure messages will be delivered to a folder named'), -1, (20, 105, 186, 12), 1342177280], [129, '', 1033, (20, 117, 177, 14), 1350566016], [130, _('Spam will be delivered to a folder named'), -1, (20, 72, 137, 8), 1342177280], [128, _('Browse...'), 1034, (208, 117, 60, 15), 1342177280]]} ! ids = {'IDC_DELAY1_SLIDER': 1056, 'IDC_PROGRESS': 1000, 'IDD_MANAGER': 101, 'IDD_DIAGNOSTIC': 113, 'IDD_TRAINING': 102, 'IDC_DELAY2_TEXT': 1059, 'IDC_DELAY1_TEXT': 1057, 'IDD_WIZARD': 114, 'IDC_BROWSE_SPAM_SOUND': 1103, 'IDC_STATIC_HAM': 1002, 'IDC_PROGRESS_TEXT': 1001, 'IDD_GENERAL': 108, 'IDC_BROWSE_UNSURE_SOUND': 1102, 'IDC_TAB': 1068, 'IDC_FOLDER_UNSURE': 1033, 'IDC_VERBOSE_LOG': 1061, 'IDC_EDIT1': 1094, 'IDC_BROWSE': 1037, 'IDC_BACK_BTN': 1069, 'IDD_WIZARD_FINISHED_UNCONFIGURED': 119, 'IDC_ACTION_CERTAIN': 1025, 'IDC_BUT_ACT_ALL': 1019, 'IDD_FILTER_NOW': 104, 'IDC_BROWSE_HAM_SOUND': 1101, 'IDC_MARK_SPAM_AS_READ': 1047, 'IDC_RECOVER_RS': 1075, 'IDC_STATIC': -1, 'IDC_PAGE_PLACEHOLDER': 1078, 'IDC_BROWSE_WATCH': 1039, 'IDC_ACCUMULATE_DELAY_TEXT': 1100, 'IDC_FOLDER_HAM': 1083, 'IDD_WIZARD_FOLDERS_REST': 117, 'IDC_SHOW_DATA_FOLDER': 1071, 'IDC_BUT_ACT_SCORE': 1018, '_APS_NEXT_RESOURCE_VALUE': 129, '_APS_NEXT_SYMED_VALUE': 101, 'IDC_SLIDER_CERTAIN': 1023, 'IDC_BUT_UNREAD': 1020, 'IDC_BUT_ABOUT': 1017, 'IDC_BUT_RESCORE': 1008, 'IDC_BUT_SEARCHSUB': 1041, 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER': 1010, 'IDC_LAST_RESET_DATE': 1097, 'IDD_WIZARD_FOLDERS_TRAIN': 120, 'IDC_BUT_FILTER_ENABLE': 1013, 'IDC_ABOUT_BTN': 1072, 'IDD_WIZARD_FINISHED_TRAINED': 122, 'IDD_FOLDER_SELECTOR': 105, 'IDD_STATISTICS': 107, 'IDC_LIST_FOLDERS': 1040, 'IDB_SBWIZLOGO': 125, 'IDC_BUT_VIEW_LOG': 1093, 'IDC_STATUS2': 1044, 'IDC_STATUS1': 1043, 'IDCANCEL': 2, 'IDC_BROWSE_HAM': 1004, 'IDC_BROWSE_SPAM': 1005, 'IDD_WIZARD_FINISHED_UNTRAINED': 116, 'IDC_MARK_UNSURE_AS_READ': 1051, 'IDC_BROWSE_HAM_SOUND2': 1103, 'IDC_BUT_WIZARD': 1070, 'IDC_VERSION': 1009, 'IDC_FOLDER_NAMES': 1036, 'IDC_BUT_TIMER_ENABLED': 1091, 'IDC_SLIDER_UNSURE': 1029, 'IDC_BUT_NEW': 1046, 'IDC_FOLDER_WATCH': 1038, 'IDC_BUT_UNTRAINED': 1088, 'IDC_STATIC_SPAM': 1003, 'IDC_EDIT_UNSURE': 1030, 'IDC_BUT_CLEARALL': 1042, 'IDC_BUT_UNSEEN': 1021, 'IDD_WIZARD_FOLDERS_WATCH': 118, 'IDC_HAM_SOUND': 1094, 'IDC_EDIT_CERTAIN': 1024, 'IDC_BUT_FILTER_DEFINE': 1016, 'IDC_FORWARD_BTN': 1077, '_APS_NEXT_CONTROL_VALUE': 1102, 'IDC_INBOX_TIMER_ONLY': 1060, 'IDD_ADVANCED': 106, 'IDC_WIZ_GRAPHIC': 1092, 'IDD_FILTER_UNSURE': 40002, 'IDC_DEL_SPAM_RS': 1074, 'IDB_FOLDERS': 127, 'IDC_BUT_PREPARATION': 1081, 'IDC_DELAY2_SLIDER': 1058, 'IDC_ACCUMULATE_DELAY_SLIDER': 1099, 'IDC_SAVE_SPAM_SCORE': 1048, 'IDC_FOLDER_CERTAIN': 1027, 'IDB_SBLOGO': 1062, 'IDC_BROWSE_UNSURE': 1034, 'IDC_STATISTICS': 1095, 'IDC_BUT_RESET_STATS': 1096, 'IDC_BUT_TRAIN_TO_SPAM_FOLDER': 1011, 'IDD_FILTER_SPAM': 110, 'IDC_BUT_RESET': 1073, 'IDD_NOTIFICATIONS': 128, 'IDC_ACTION_UNSURE': 1031, 'IDD_WIZARD_TRAIN': 121, 'IDD_WIZARD_FINISHED_TRAIN_LATER': 124, 'IDC_ACTION_HAM': 1032, 'IDC_BUT_REBUILD': 1007, '_APS_NEXT_COMMAND_VALUE': 40001, 'IDC_ENABLE_SOUNDS': 1098, 'IDC_SPAM_SOUND': 1096, 'IDC_UNSURE_SOUND': 1095, 'IDD_WIZARD_TRAINING_IS_IMPORTANT': 123, 'IDC_TRAINING_STATUS': 1035, 'IDD_WIZARD_WELCOME': 115, 'IDC_BUT_TRAIN': 1089, 'IDC_START': 1006, 'IDD_FILTER': 103, 'IDC_LOGO_GRAPHIC': 1063, 'IDC_FILTER_STATUS': 1014, 'IDOK': 1, 'IDC_BROWSE_CERTAIN': 1028, 'IDC_BUT_SHOW_DIAGNOSTICS': 1080, 'IDC_BUT_TRAIN_NOW': 1012} ! names = {1024: 'IDC_EDIT_CERTAIN', 1: 'IDOK', 2: 'IDCANCEL', 1027: 'IDC_FOLDER_CERTAIN', 1028: 'IDC_BROWSE_CERTAIN', 1029: 'IDC_SLIDER_UNSURE', 1030: 'IDC_EDIT_UNSURE', 1031: 'IDC_ACTION_UNSURE', 1032: 'IDC_ACTION_HAM', 1033: 'IDC_FOLDER_UNSURE', 1034: 'IDC_BROWSE_UNSURE', 1035: 'IDC_TRAINING_STATUS', 1036: 'IDC_FOLDER_NAMES', 1037: 'IDC_BROWSE', 1038: 'IDC_FOLDER_WATCH', 1039: 'IDC_BROWSE_WATCH', 1040: 'IDC_LIST_FOLDERS', 1041: 'IDC_BUT_SEARCHSUB', 1042: 'IDC_BUT_CLEARALL', 1043: 'IDC_STATUS1', 1044: 'IDC_STATUS2', 1046: 'IDC_BUT_NEW', 1047: 'IDC_MARK_SPAM_AS_READ', 1048: 'IDC_SAVE_SPAM_SCORE', 1051: 'IDC_MARK_UNSURE_AS_READ', 1056: 'IDC_DELAY1_SLIDER', 1057: 'IDC_DELAY1_TEXT', 1058: 'IDC_DELAY2_SLIDER', 1059: 'IDC_DELAY2_TEXT', 1060: 'IDC_INBOX_TIMER_ONLY', 1061: 'IDC_VERBOSE_LOG', 1062: 'IDB_SBLOGO', 1063: 'IDC_LOGO_GRAPHIC', 1068: 'IDC_TAB', 1069: 'IDC_BACK_BTN', 1070: 'IDC_BUT_WIZARD', 1071: 'IDC_SHOW_DATA_FOLDER', 1072: 'IDC_ABOUT_BTN', 1073: 'IDC_BUT_RESET', 1074: 'IDC_DEL_SPAM_RS', 1075: 'IDC_RECOVER_RS', 1077: 'IDC_FORWARD_BTN', 1078: 'IDC_PAGE_PLACEHOLDER', 1080: 'IDC_BUT_SHOW_DIAGNOSTICS', 1081: 'IDC_BUT_PREPARATION', 1083: 'IDC_FOLDER_HAM', 1088: 'IDC_BUT_UNTRAINED', 1089: 'IDC_BUT_TRAIN', 40002: 'IDD_FILTER_UNSURE', 1091: 'IDC_BUT_TIMER_ENABLED', 1025: 'IDC_ACTION_CERTAIN', 1093: 'IDC_BUT_VIEW_LOG', 1094: 'IDC_EDIT1', 1095: 'IDC_STATISTICS', 1096: 'IDC_BUT_RESET_STATS', 1097: 'IDC_LAST_RESET_DATE', 1098: 'IDC_ENABLE_SOUNDS', 1099: 'IDC_ACCUMULATE_DELAY_SLIDER', 1100: 'IDC_ACCUMULATE_DELAY_TEXT', 1101: 'IDC_BROWSE_HAM_SOUND', 1102: 'IDC_BROWSE_UNSURE_SOUND', 1103: 'IDC_BROWSE_HAM_SOUND2', 101: 'IDD_MANAGER', 102: 'IDD_TRAINING', 103: 'IDD_FILTER', 104: 'IDD_FILTER_NOW', 105: 'IDD_FOLDER_SELECTOR', 106: 'IDD_ADVANCED', 107: 'IDD_STATISTICS', 108: 'IDD_GENERAL', 110: 'IDD_FILTER_SPAM', 113: 'IDD_DIAGNOSTIC', 114: 'IDD_WIZARD', 115: 'IDD_WIZARD_WELCOME', 116: 'IDD_WIZARD_FINISHED_UNTRAINED', 117: 'IDD_WIZARD_FOLDERS_REST', 118: 'IDD_WIZARD_FOLDERS_WATCH', 119: 'IDD_WIZARD_FINISHED_UNCONFIGURED', 120: 'IDD_WIZARD_FOLDERS_TRAIN', 121: 'IDD_WIZARD_TRAIN', 122: 'IDD_WIZARD_FINISHED_TRAINED', 123: 'IDD_WIZARD_TRAINING_IS_IMPORTANT', 124: 'IDD_WIZARD_FINISHED_TRAIN_LATER', 125: 'IDB_SBWIZLOGO', 127: 'IDB_FOLDERS', 128: 'IDD_NOTIFICATIONS', 129: '_APS_NEXT_RESOURCE_VALUE', 40001: '_APS_NEXT_COMMAND_VALUE', 1092: 'IDC_WIZ_GRAPHIC', 1000: 'IDC_PROGRESS', 1001: 'IDC_PROGRESS_TEXT', 1002: 'IDC_STATIC_HAM', 1003: 'IDC_STATIC_SPAM', 1004: 'IDC_BROWSE_HAM', 1005: 'IDC_BROWSE_SPAM', 1006: 'IDC_START', 1007: 'IDC_BUT_REBUILD', 1008: 'IDC_BUT_RESCORE', 1009: 'IDC_VERSION', 1010: 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER', 1011: 'IDC_BUT_TRAIN_TO_SPAM_FOLDER', 1012: 'IDC_BUT_TRAIN_NOW', 1013: 'IDC_BUT_FILTER_ENABLE', 1014: 'IDC_FILTER_STATUS', 1016: 'IDC_BUT_FILTER_DEFINE', 1017: 'IDC_BUT_ABOUT', 1018: 'IDC_BUT_ACT_SCORE', 1019: 'IDC_BUT_ACT_ALL', 1020: 'IDC_BUT_UNREAD', 1021: 'IDC_BUT_UNSEEN', -1: 'IDC_STATIC', 1023: 'IDC_SLIDER_CERTAIN'} bitmaps = {'IDB_SBWIZLOGO': 'sbwizlogo.bmp', 'IDB_SBLOGO': 'sblogo.bmp', 'IDB_FOLDERS': 'folders.bmp'} def ParseDialogs(s): From anadelonbrin at users.sourceforge.net Tue Mar 29 07:40:06 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 07:40:11 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR/DIALOGS dialogs.rc, 1.1, 1.2 i18n_dialogs.py, 1.1, 1.2 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13325/languages/es_AR/DIALOGS Modified Files: dialogs.rc i18n_dialogs.py Log Message: Add (untranslated) Notifications tab to the Manager dialog so that the translated dialogs work properly. If translaters are reading this, please do the translation and give me the new version! Index: dialogs.rc =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/es_AR/DIALOGS/dialogs.rc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dialogs.rc 4 Jan 2005 01:05:47 -0000 1.1 --- dialogs.rc 29 Mar 2005 05:40:03 -0000 1.2 *************** *** 348,351 **** --- 348,376 ---- END + IDD_NOTIFICATIONS DIALOGEX 0, 0, 248, 257 + STYLE DS_SETFONT | WS_CHILD | WS_CAPTION + CAPTION "Notifications" + FONT 8, "Tahoma", 0, 0, 0x0 + BEGIN + GROUPBOX "New Mail Sounds",IDC_STATIC,7,3,241,229 + CONTROL "Enable new mail notification sounds",IDC_ENABLE_SOUNDS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,129,10 + LTEXT "Good sound:",IDC_STATIC,14,31,42,8 + EDITTEXT IDC_HAM_SOUND,14,40,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_HAM_SOUND,192,40,50,14 + LTEXT "Unsure sound:",IDC_STATIC,14,58,48,8 + EDITTEXT IDC_UNSURE_SOUND,14,67,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_UNSURE_SOUND,192,67,50,14 + LTEXT "Spam sound:",IDC_STATIC,14,85,42,8 + EDITTEXT IDC_SPAM_SOUND,14,94,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_SPAM_SOUND,192,94,50,14 + LTEXT "Time to wait for additional messages:",IDC_STATIC,14, + 116,142,8 + CONTROL "",IDC_ACCUMULATE_DELAY_SLIDER,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,127,148,22 + EDITTEXT IDC_ACCUMULATE_DELAY_TEXT,163,133,40,14,ES_AUTOHSCROLL + LTEXT "seconds",IDC_STATIC,205,136,28,8 + END + ///////////////////////////////////////////////////////////////////////////// Index: i18n_dialogs.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/es_AR/DIALOGS/i18n_dialogs.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** i18n_dialogs.py 4 Jan 2005 01:05:48 -0000 1.1 --- i18n_dialogs.py 29 Mar 2005 05:40:03 -0000 1.2 *************** *** 1,6 **** #c:\spambayes\languages\es_AR\DIALOGS\i18n_dialogs.py #This is a generated file. Please edit c:\spambayes\languages\es_AR\DIALOGS\dialogs.rc instead. ! _rc_size_=32565 ! _rc_mtime_=1104800527 try: _ --- 1,6 ---- #c:\spambayes\languages\es_AR\DIALOGS\i18n_dialogs.py #This is a generated file. Please edit c:\spambayes\languages\es_AR\DIALOGS\dialogs.rc instead. ! _rc_size_=33884 ! _rc_mtime_=1112074549 try: _ *************** *** 9,15 **** return s class FakeParser: ! dialogs = {'IDD_MANAGER': [[_('SpamBayes Manager'), (0, 0, 275, 308), -1865940928, 1024, (8, 'Tahoma')], [128, _('Close'), 1, (216, 287, 50, 14), 1342177281], [128, _('Cancel'), 2, (155, 287, 50, 14), 1073741824], ['SysTabControl32', '', 1068, (8, 7, 258, 276), 1342177280], [128, _('About'), 1072, (8, 287, 50, 14), 1342177280]], 'IDD_DIAGNOSTIC': [[_('Diagnostics'), (0, 0, 183, 98), -1865940928, 1024, (8, 'Tahoma')], [130, _('These advanced options are for diagnostic or debugging purposes only. You should only change these options if specifically asked to, or you know exactly what they mean.'), -1, (5, 3, 174, 36), 1342177280], [130, _('Log file verbosity'), -1, (5, 44, 56, 8), 1342177280], [129, '', 1061, (73, 42, 40, 14), 1350566016], [128, _('View log...'), 1093, (129, 41, 50, 14), 1342177280], [128, _('Save Spam Score'), 1048, (5, 63, 72, 10), 1342242819], [128, _('Cancel'), 2, (69, 79, 50, 14), 1073741824], [128, _('Close'), 1, (129, 79, 50, 14), 1342177281]], 'IDD_FILTER_SPAM': [[_('Spam'), (0, 0, 251, 147), 1355284672, None, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 20, 177, 12), 1342312972], [128, _('Browse...'), 1039, (194, 19, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 43, 237, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 52, 212, 10), 1342177280], ['msctls_trackbar32', '', 1023, (13, 62, 165, 22), 1342242821], [129, '', 1024, (184, 63, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 82, 107, 10), 1342177280], [133, '', 1025, (13, 93, 55, 40), 1344339971], [130, _('to folder'), -1, (75, 95, 31, 10), 1342177280], [130, _('Folder names...'), 1027, (120, 93, 59, 14), 1342312972], [128, _('Browse'), 1028, (184, 93, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 110, 81, 10), 1342242819]], 'IDD_TRAINING': [[_('Training'), (0, 0, 252, 257), 1355284672, 1024, (8, 'Tahoma')], [128, '', -1, (5, 1, 243, 113), 1342177287], [130, _('Folders with known good messages.'), -1, (11, 11, 131, 11), 1342177280], [130, '', 1002, (11, 21, 175, 12), 1342181900], [128, _('&Browse...'), 1099, (192, 20, 50, 14), 1342177280], [130, _('Folders with spam or other junk messages.'), -1, (11, 36, 171, 9), 1342177280], [130, _('Static'), 1003, (11, 46, 174, 12), 1342312972], [128, _('Brow&se...'), 1005, (192, 46, 50, 14), 1342177280], [128, _('Score &messages after training'), 1008, (11, 64, 111, 10), 1342242819], [128, _('&Rebuild entire database'), 1007, (137, 64, 92, 10), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (11, 76, 231, 11), 1350565888], [128, _('&Start Training'), 1006, (11, 91, 54, 14), 1342193664], [130, _('training status training status training status training status training status training status training status '), 1001, (75, 89, 149, 17), 1342177280], [128, _('Incremental Training'), -1, (4, 117, 244, 87), 1342177287], [128, _('Train that a message is good when it is moved from a spam folder back to the Inbox.'), 1010, (11, 127, 204, 18), 1342251011], [130, _("Clicking 'Not Spam' button should"), -1, (10, 148, 115, 10), 1342177280], [133, '', 1075, (127, 145, 114, 54), 1344339971], [128, _('Train that a message is spam when it is moved to the spam folder.'), 1011, (11, 163, 204, 16), 1342251011], [130, _("Clicking 'Spam' button should"), -1, (10, 183, 104, 10), 1342177280], [133, '', 1074, (127, 180, 114, 54), 1344339971]], 'IDD_WIZARD': [[_('SpamBayes Configuration Wizard'), (0, 0, 384, 190), -1865940800, 1024, (8, 'Tahoma')], [128, _('Cancel'), 2, (328, 173, 50, 14), 1342177280], [128, _('<< Back'), 1069, (216, 173, 50, 14), 1342177280], [128, _('Next>>,Finish'), 1077, (269, 173, 50, 14), 1342177281], [130, '', 1078, (75, 4, 303, 167), 1342177298], [130, '125', 1092, (0, 0, 69, 190), 1342177294]], 'IDD_WIZARD_FOLDERS_WATCH': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1039, (225, 134, 50, 14), 1342177280], [130, _('Folders that receive new messages'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes needs to know what folders are used to receive new messages. In most cases, this will be your Inbox, but you may also specify additional folders to be watched for spam.'), -1, (20, 21, 247, 25), 1342177280], [130, _('The following folders will be watched for new messages. Use the Browse button to change the list, or Next if the list of folders is correct.'), -1, (20, 79, 247, 20), 1342177280], [130, _('If you use the Outlook rule wizard to move messages into folders, you may like to select these folders in addition to your inbox.'), -1, (20, 51, 241, 20), 1342177280], [129, '', 1038, (20, 100, 195, 48), 1350568068]], 'IDD_WIZARD_FINISHED_TRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes has been successfully trained and configured. You should find the system is immediately effective at filtering spam.'), 1035, (20, 35, 247, 26), 1342177280], [130, _("Even though SpamBayes has been trained, it does continue to learn - please ensure you regularly check your Unsure folder, and use the 'Spam' or 'Not Spam' buttons as appropriate."), -1, (20, 68, 249, 30), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 104, 148, 9), 1342177280]], 'IDD_WIZARD_FOLDERS_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1099, (208, 49, 60, 15), 1342177280], [130, _('Training'), -1, (20, 4, 247, 10), 1342177280], [130, _('Please select the folders with the pre-sorted good messages and the folders with the pre-sorted spam messages.'), -1, (20, 16, 243, 16), 1342177280], [129, '', 1083, (20, 49, 179, 14), 1350568064], [130, _('Examples of Spam, or unwanted messages can be found in'), -1, (20, 71, 198, 8), 1342177280], [129, '', 1027, (20, 81, 177, 14), 1350568064], [130, _('Examples of good messages can be found in'), -1, (20, 38, 153, 8), 1342177280], [128, _('Browse...'), 1005, (208, 81, 60, 15), 1342177280], [130, _('If you have not pre-sorted your messages, or already have training information you wish to keep, please select the Back button and indicate you have not prepared for SpamBayes.'), -1, (20, 128, 243, 26), 1342177280], [128, _('Score messages when training is complete'), 1008, (20, 108, 163, 16), 1342242819]], 'IDD_WIZARD_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Training'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is training on your good and spam messages.'), -1, (20, 22, 247, 16), 1342177280], ['msctls_progress32', '', 1000, (20, 45, 255, 11), 1350565888], [130, _('(progress text)'), 1001, (20, 61, 257, 10), 1342177280]], 'IDD_WIZARD_FINISHED_TRAIN_LATER': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration suspended'), -1, (20, 4, 247, 14), 1342177280], [130, _('To perform initial training, you should create a folder that contains only examples of good messages, and another that contains only examples of spam.'), -1, (20, 17, 247, 27), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 145, 148, 9), 1342177280], [130, _('For examples of good messages, you may like to use your Inbox - however, it is important you remove all spam from this folder before you commence'), -1, (20, 42, 247, 26), 1342177280], [130, _('training. If you have too much spam in your Inbox, you may like to create a temporary folder and copy some examples to it.'), -1, (20, 58, 247, 17), 1342177280], [130, _('For examples of spam messages, you may like to look through your Deleted Items folder, and your Inbox. However, you will not be able to specify the Deleted Items folder as examples of spam, so you will need to move them to a folder you create.'), -1, (20, 80, 247, 35), 1342177280], [130, _('When you are finished, open the SpamBayes Manager via the SpamBayes toolbar, and re-start the Configuration Wizard.'), -1, (20, 121, 245, 17), 1342177280]], 'IDD_FOLDER_SELECTOR': [[_('Dialog'), (0, 0, 247, 215), -1865940800, None, (8, 'Tahoma')], [130, _('&Folders:'), -1, (7, 7, 47, 9), 1342177280], ['SysTreeView32', '', 1040, (7, 21, 172, 140), 1350631735], [128, _('(sub)'), 1041, (7, 167, 126, 9), 1342242819], [130, _('(status1)'), 1043, (7, 180, 220, 9), 1342177280], [130, _('(status2)'), 1044, (7, 194, 220, 9), 1342177280], [128, _('OK'), 1, (190, 21, 50, 14), 1342177281], [128, _('Cancel'), 2, (190, 39, 50, 14), 1342177280], [128, _('C&lear All'), 1042, (190, 58, 50, 14), 1342177280], [128, _('&New folder'), 1046, (190, 77, 50, 14), 1342177280]], 'IDD_STATISTICS': [[_('Statistics'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('Statistics'), -1, (7, 3, 241, 229), 1342177287], [130, _('some stats\\nand some more\\nline 3\\nline 4\\nline 5'), 1095, (12, 12, 230, 204), 1342177280], [128, _('Reset Statistics'), 1096, (178, 238, 70, 14), 1342177280], [130, _('Last reset:'), -1, (7, 241, 36, 8), 1342177280], [130, _('<<>>'), 1097, (47, 241, 107, 8), 1342177280]], 'IDD_ADVANCED': [[_('Advanced'), (0, 0, 248, 257), 1355284672, 1024, (8, 'Tahoma')], [128, _('Filter timer'), -1, (7, 3, 234, 117), 1342177287], ['msctls_trackbar32', '', 1056, (16, 36, 148, 22), 1342242821], [130, _('Processing start delay'), -1, (16, 26, 101, 8), 1342177280], [129, '', 1057, (165, 39, 40, 14), 1350566016], [130, _('seconds'), -1, (208, 41, 28, 8), 1342177280], ['msctls_trackbar32', '', 1058, (16, 73, 148, 22), 1342242821], [130, _('Delay between processing items'), -1, (16, 62, 142, 8), 1342177280], [129, '', 1059, (165, 79, 40, 14), 1350566016], [130, _('seconds'), -1, (207, 82, 28, 8), 1342177280], [128, _('Only for folders that receive new mail'), 1060, (16, 100, 217, 10), 1342242819], [128, _('Show Data Folder'), 1071, (7, 238, 70, 14), 1342177280], [128, _('Enable background filtering'), 1091, (16, 12, 162, 10), 1342242819], [128, _('Diagnostics...'), 1080, (171, 238, 70, 14), 1342177280]], 'IDD_WIZARD_FINISHED_UNCONFIGURED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration cancelled'), -1, (20, 4, 247, 14), 1342177280], [130, _('The main SpamBayes options will now be displayed. You must define your folders and enable SpamBayes before it will begin filtering mail.'), -1, (20, 29, 247, 16), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 139, 148, 9), 1342177280]], 'IDD_WIZARD_WELCOME': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Welcome to the SpamBayes configuration wizard'), -1, (20, 4, 191, 14), 1342177280], [130, _('This wizard will help you configure the SpamBayes Outlook addin. Please indicate how you have prepared for this application.'), -1, (20, 20, 255, 18), 1342177280], [128, _("I haven't prepared for SpamBayes at all."), 1081, (20, 42, 190, 11), 1342309385], [128, _('I have already sorted good messages (ham) and spam messages into folders that are suitable for training purposes.'), -1, (20, 59, 255, 18), 1342186505], [128, _('I would prefer to configure SpamBayes manually.'), -1, (20, 82, 187, 12), 1342178313], [130, _('If you would like more information about training and configuring SpamBayes, click the About button.'), -1, (20, 103, 185, 20), 1342177280], [128, _('About...'), 1017, (215, 104, 60, 15), 1342177280], [130, _('If you cancel the wizard, you can access it again via the SpamBayes Manager, available from the SpamBayes toolbar.'), -1, (20, 137, 232, 17), 1342177280]], 'IDD_FILTER_NOW': [[_('Filter Now'), (0, 0, 244, 185), -1865940928, 1024, (8, 'Tahoma')], [130, _('Filter the following folders'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1036, (7, 20, 172, 12), 1342181900], [128, _('Browse...'), 1037, (187, 19, 50, 14), 1342177280], [128, _('Filter action'), -1, (7, 38, 230, 40), 1342308359], [128, _('Perform all filter actions'), 1019, (15, 49, 126, 10), 1342373897], [128, _("Score messages, but don't perform filter action"), 1018, (15, 62, 203, 10), 1342177289], [128, _('Restrict the filter to'), -1, (7, 84, 230, 35), 1342308359], [128, _('Unread mail'), 1020, (15, 94, 149, 9), 1342242819], [128, _('Mail never previously spam filtered'), 1021, (15, 106, 149, 9), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (7, 129, 230, 11), 1350565888], [130, _('Static'), 1001, (7, 144, 227, 10), 1342177280], [128, _('Start Filtering'), 1006, (7, 161, 52, 14), 1342177281], [128, _('Close'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('SpamBayes will not be effective until it is trained.'), -1, (11, 8, 191, 14), 1342177280], [128, _('About Training...'), 1017, (209, 140, 65, 15), 1342177280], [130, _('SpamBayes is a system that learns about good and bad mail based on examples you provide. It comes with no built-in rules, so must have some training information before it will be effective.'), -1, (11, 21, 263, 30), 1342177280], [130, _("In this case, SpamBayes will begin by filtering all mail to an 'Unsure' folder. You can then use the 'Spam' and 'Not Spam' buttons to train each message as it arrives. Slowly SpamBayes will learn about your mail."), -1, (22, 61, 252, 29), 1342177280], [130, _('This option will close the wizard, and provide instructions how to sort your mail. You will then be able to configure SpamBayes and have it be immediately effective at filtering your mail'), -1, (22, 106, 252, 27), 1342177280], [130, _('For more information, click the About Training button.'), -1, (11, 143, 187, 12), 1342177280], [128, _('I want to continue without training, and let SpamBayes learn as it goes'), 1088, (11, 50, 263, 11), 1342308361], [128, _('I will pre-sort some good and spam messages, and configure SpamBayes later'), 1089, (11, 92, 263, 11), 1342177289]], 'IDD_FILTER_UNSURE': [[_('Possible Spam'), (0, 0, 249, 124), 1355284672, None, (8, 'Tahoma')], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 11, 212, 10), 1342177280], ['msctls_trackbar32', '', 1029, (12, 18, 165, 20), 1342242821], [129, '', 1030, (183, 24, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 38, 107, 10), 1342177280], [133, '', 1031, (12, 49, 55, 40), 1344339971], [130, _('to folder'), -1, (74, 52, 31, 10), 1342177280], [130, _('(folder name)'), 1033, (119, 49, 59, 14), 1342312972], [128, _('&Browse'), 1034, (183, 49, 50, 14), 1342177280], [128, _('Mark possible spam as read'), 1051, (12, 70, 101, 10), 1342242819]], 'IDD_WIZARD_FINISHED_UNTRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is now configured and ready to start learning about your Spam'), -1, (20, 22, 247, 16), 1342177280], [130, _("As SpamBayes has not been trained, all new mail will arrive in your Unsure folder. As each message arrives, you should use the 'Spam' or 'Not Spam' toolbar buttons as appropriate."), -1, (20, 42, 247, 27), 1342177280], [130, _("If you wish to speed up the training process, you can move all the existing Spam from your Inbox to the new Spam folder, then select 'Training' from the SpamBayes manager."), -1, (20, 83, 247, 31), 1342177280], [130, _('As you train, you will find the accuracy of SpamBayes increases.'), -1, (20, 69, 247, 15), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 121, 148, 9), 1342177280]], 'IDD_GENERAL': [[_('General'), (0, 0, 253, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('SpamBayes Version Here'), 1009, (6, 54, 242, 8), 1342177280], [130, _("SpamBayes requiere entrenamiento previo para ser efectivo. Cliquee en la solapa 'Entrenamiento' o use el Asistente de Configuraci\xf3n para entrenar."), -1, (6, 67, 242, 17), 1342177280], [130, _('Estado de la base de datos de entrenamiento:'), -1, (6, 90, 222, 8), 1342177280], [130, _('123 spam messages; 456 good messages\\r\\nLine2\\r\\nLine3'), 1035, (6, 101, 242, 27), 1342181376], [128, _('Habilitar SpamBayes'), 1013, (6, 173, 97, 11), 1342242819], [130, _('Certain spam is moved to Folder1\\nPossible spam is moved too'), 1014, (6, 146, 242, 19), 1342181376], [128, _('Reiniciar la Configuraci\xf3n...'), 1073, (6, 238, 106, 15), 1342177280], [128, _('Asistente de Configuraci\xf3n...'), 1070, (142, 238, 106, 15), 1342177280], [130, _('Estado del filtro:'), -1, (6, 135, 222, 8), 1342177280], [130, '1062', 1063, (0, 2, 275, 52), 1342179342]], 'IDD_FILTER': [[_('Filtering'), (0, 0, 249, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 4, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 16, 177, 12), 1342312972], [128, _('Browse...'), 1039, (192, 14, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 33, 235, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 42, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1023, (13, 52, 165, 22), 1342242821], [129, '', 1024, (184, 53, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 72, 107, 10), 1342177280], [133, '', 1025, (12, 83, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 85, 28, 10), 1342177280], [130, _('Folder names...'), 1027, (102, 83, 77, 14), 1342312972], [128, _('Browse'), 1028, (184, 83, 50, 14), 1342177280], [128, _('Possible Spam'), -1, (6, 117, 235, 81), 1342177287], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 128, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1029, (12, 135, 165, 20), 1342242821], [129, '', 1030, (183, 141, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 155, 107, 10), 1342177280], [133, '', 1031, (12, 166, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 169, 27, 10), 1342177280], [130, _('(folder name)'), 1033, (102, 166, 77, 14), 1342312972], [128, _('&Browse'), 1034, (184, 166, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 100, 81, 10), 1342242819], [128, _('Mark possible spam as read'), 1051, (12, 186, 101, 10), 1342242819], [128, _('Certain Good'), -1, (6, 203, 235, 48), 1342177287], [130, _('These messages should be:'), -1, (12, 215, 107, 10), 1342177280], [133, '', 1032, (12, 228, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 230, 27, 10), 1342177280], [130, _('(folder name)'), 1083, (102, 228, 77, 14), 1342312972], [128, _('&Browse'), 1099, (184, 228, 50, 14), 1342177280]], 'IDD_WIZARD_FOLDERS_REST': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1005, (208, 85, 60, 15), 1342177280], [130, _('Spam and Unsure Folders'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes uses two folders to manage your Spam - a folder where 'certain' spam is stored, and another for unsure messages."), -1, (20, 20, 247, 22), 1342177280], [130, _('If you enter a folder name and it does not exist, it will be automatically created. If you would prefer to select an existing folder, click the Browse button.'), -1, (20, 44, 243, 24), 1342177280], [129, '', 1027, (20, 85, 179, 14), 1350566016], [130, _('Unsure messages will be delivered to a folder named'), -1, (20, 105, 186, 12), 1342177280], [129, '', 1033, (20, 117, 177, 14), 1350566016], [130, _('Spam will be delivered to a folder named'), -1, (20, 72, 137, 8), 1342177280], [128, _('Browse...'), 1034, (208, 117, 60, 15), 1342177280]]} ! ids = {'IDC_DELAY1_SLIDER': 1056, 'IDC_ABOUT_BTN': 1072, 'IDD_MANAGER': 101, 'IDD_DIAGNOSTIC': 113, 'IDD_TRAINING': 102, 'IDC_DELAY2_TEXT': 1059, 'IDC_DELAY1_TEXT': 1057, 'IDD_WIZARD': 114, 'IDC_STATIC_HAM': 1002, 'IDC_PROGRESS_TEXT': 1001, 'IDD_GENERAL': 108, 'IDC_TAB': 1068, 'IDC_FOLDER_UNSURE': 1033, 'IDC_VERBOSE_LOG': 1061, 'IDC_EDIT1': 1094, 'IDC_BROWSE': 1037, 'IDC_BACK_BTN': 1069, 'IDD_WIZARD_FINISHED_UNCONFIGURED': 119, 'IDC_ACTION_CERTAIN': 1025, 'IDC_BUT_ACT_ALL': 1019, 'IDD_FILTER_NOW': 104, 'IDC_MARK_SPAM_AS_READ': 1047, 'IDC_RECOVER_RS': 1075, 'IDC_STATIC': -1, 'IDC_PAGE_PLACEHOLDER': 1078, 'IDC_BROWSE_WATCH': 1039, 'IDC_FOLDER_HAM': 1083, 'IDD_WIZARD_FOLDERS_REST': 117, 'IDC_SHOW_DATA_FOLDER': 1071, 'IDC_BUT_ACT_SCORE': 1018, '_APS_NEXT_RESOURCE_VALUE': 128, '_APS_NEXT_SYMED_VALUE': 101, 'IDC_SLIDER_CERTAIN': 1023, 'IDC_BUT_UNREAD': 1020, 'IDC_BUT_ABOUT': 1017, 'IDC_BUT_RESCORE': 1008, 'IDC_BUT_SEARCHSUB': 1041, 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER': 1010, 'IDC_LAST_RESET_DATE': 1097, 'IDD_WIZARD_FOLDERS_TRAIN': 120, 'IDC_BUT_FILTER_ENABLE': 1013, 'IDC_PROGRESS': 1000, 'IDD_WIZARD_FINISHED_TRAINED': 122, 'IDD_FOLDER_SELECTOR': 105, 'IDD_STATISTICS': 107, 'IDC_LIST_FOLDERS': 1040, 'IDB_SBWIZLOGO': 125, 'IDC_BUT_VIEW_LOG': 1093, 'IDC_STATUS2': 1044, 'IDC_STATUS1': 1043, 'IDCANCEL': 2, 'IDC_BROWSE_HAM': 1099, 'IDC_BROWSE_SPAM': 1005, 'IDD_WIZARD_FINISHED_UNTRAINED': 116, 'IDC_MARK_UNSURE_AS_READ': 1051, 'IDC_BUT_WIZARD': 1070, 'IDC_VERSION': 1009, 'IDC_FOLDER_NAMES': 1036, 'IDC_BUT_TIMER_ENABLED': 1091, 'IDC_SLIDER_UNSURE': 1029, 'IDC_BUT_NEW': 1046, 'IDC_FOLDER_WATCH': 1038, 'IDC_BUT_UNTRAINED': 1088, 'IDC_STATIC_SPAM': 1003, 'IDC_EDIT_UNSURE': 1030, 'IDC_BUT_CLEARALL': 1042, 'IDC_BUT_UNSEEN': 1021, 'IDD_WIZARD_FOLDERS_WATCH': 118, 'IDC_EDIT_CERTAIN': 1024, 'IDC_BUT_FILTER_DEFINE': 1016, 'IDC_FORWARD_BTN': 1077, '_APS_NEXT_CONTROL_VALUE': 1100, 'IDC_INBOX_TIMER_ONLY': 1060, 'IDD_ADVANCED': 106, 'IDC_WIZ_GRAPHIC': 1092, 'IDD_FILTER_UNSURE': 111, 'IDC_DEL_SPAM_RS': 1074, 'IDB_FOLDERS': 127, 'IDC_BUT_PREPARATION': 1081, 'IDC_DELAY2_SLIDER': 1058, 'IDC_SAVE_SPAM_SCORE': 1048, 'IDC_FOLDER_CERTAIN': 1027, 'IDB_SBLOGO': 1062, 'IDC_BROWSE_UNSURE': 1034, 'IDC_STATISTICS': 1095, 'IDC_BUT_RESET_STATS': 1096, 'IDC_BUT_TRAIN_TO_SPAM_FOLDER': 1011, 'IDD_FILTER_SPAM': 110, 'IDC_BUT_RESET': 1073, 'IDC_ACTION_UNSURE': 1031, 'IDD_WIZARD_TRAIN': 121, 'IDD_WIZARD_FINISHED_TRAIN_LATER': 124, 'IDC_ACTION_HAM': 1032, 'IDC_BUT_REBUILD': 1007, '_APS_NEXT_COMMAND_VALUE': 40001, 'IDD_WIZARD_TRAINING_IS_IMPORTANT': 123, 'IDC_TRAINING_STATUS': 1035, 'IDD_WIZARD_WELCOME': 115, 'IDC_BUT_TRAIN': 1089, 'IDC_START': 1006, 'IDD_FILTER': 103, 'IDC_LOGO_GRAPHIC': 1063, 'IDC_FILTER_STATUS': 1014, 'IDOK': 1, 'IDC_BROWSE_CERTAIN': 1028, 'IDC_BUT_SHOW_DIAGNOSTICS': 1080, 'IDC_BUT_TRAIN_NOW': 1012} ! names = {1024: 'IDC_EDIT_CERTAIN', 1: 'IDOK', 2: 'IDCANCEL', 1027: 'IDC_FOLDER_CERTAIN', 1028: 'IDC_BROWSE_CERTAIN', 1029: 'IDC_SLIDER_UNSURE', 1030: 'IDC_EDIT_UNSURE', 1031: 'IDC_ACTION_UNSURE', 1032: 'IDC_ACTION_HAM', 1033: 'IDC_FOLDER_UNSURE', 1034: 'IDC_BROWSE_UNSURE', 1035: 'IDC_TRAINING_STATUS', 1036: 'IDC_FOLDER_NAMES', 1037: 'IDC_BROWSE', 1038: 'IDC_FOLDER_WATCH', 1039: 'IDC_BROWSE_WATCH', 1040: 'IDC_LIST_FOLDERS', 1041: 'IDC_BUT_SEARCHSUB', 1042: 'IDC_BUT_CLEARALL', 1043: 'IDC_STATUS1', 1044: 'IDC_STATUS2', 1046: 'IDC_BUT_NEW', 1047: 'IDC_MARK_SPAM_AS_READ', 1048: 'IDC_SAVE_SPAM_SCORE', 1051: 'IDC_MARK_UNSURE_AS_READ', 1056: 'IDC_DELAY1_SLIDER', 1057: 'IDC_DELAY1_TEXT', 1058: 'IDC_DELAY2_SLIDER', 1059: 'IDC_DELAY2_TEXT', 1060: 'IDC_INBOX_TIMER_ONLY', 1061: 'IDC_VERBOSE_LOG', 1062: 'IDB_SBLOGO', 1063: 'IDC_LOGO_GRAPHIC', 1068: 'IDC_TAB', 1069: 'IDC_BACK_BTN', 1070: 'IDC_BUT_WIZARD', 1071: 'IDC_SHOW_DATA_FOLDER', 1072: 'IDC_ABOUT_BTN', 1073: 'IDC_BUT_RESET', 1074: 'IDC_DEL_SPAM_RS', 1075: 'IDC_RECOVER_RS', 1077: 'IDC_FORWARD_BTN', 1078: 'IDC_PAGE_PLACEHOLDER', 1080: 'IDC_BUT_SHOW_DIAGNOSTICS', 1081: 'IDC_BUT_PREPARATION', 1083: 'IDC_FOLDER_HAM', 1088: 'IDC_BUT_UNTRAINED', 1089: 'IDC_BUT_TRAIN', 1091: 'IDC_BUT_TIMER_ENABLED', 1025: 'IDC_ACTION_CERTAIN', 1093: 'IDC_BUT_VIEW_LOG', 1094: 'IDC_EDIT1', 1095: 'IDC_STATISTICS', 1096: 'IDC_BUT_RESET_STATS', 1097: 'IDC_LAST_RESET_DATE', 1098: 'IDC_FOLDER_HAM', 1099: 'IDC_BROWSE_HAM', 1100: '_APS_NEXT_CONTROL_VALUE', 101: 'IDD_MANAGER', 102: 'IDD_TRAINING', 103: 'IDD_FILTER', 104: 'IDD_FILTER_NOW', 105: 'IDD_FOLDER_SELECTOR', 106: 'IDD_ADVANCED', 107: 'IDD_STATISTICS', 108: 'IDD_GENERAL', 110: 'IDD_FILTER_SPAM', 111: 'IDD_FILTER_UNSURE', 113: 'IDD_DIAGNOSTIC', 114: 'IDD_WIZARD', 115: 'IDD_WIZARD_WELCOME', 116: 'IDD_WIZARD_FINISHED_UNTRAINED', 117: 'IDD_WIZARD_FOLDERS_REST', 118: 'IDD_WIZARD_FOLDERS_WATCH', 119: 'IDD_WIZARD_FINISHED_UNCONFIGURED', 120: 'IDD_WIZARD_FOLDERS_TRAIN', 121: 'IDD_WIZARD_TRAIN', 122: 'IDD_WIZARD_FINISHED_TRAINED', 123: 'IDD_WIZARD_TRAINING_IS_IMPORTANT', 124: 'IDD_WIZARD_FINISHED_TRAIN_LATER', 125: 'IDB_SBWIZLOGO', 127: 'IDB_FOLDERS', 128: '_APS_NEXT_RESOURCE_VALUE', 40001: '_APS_NEXT_COMMAND_VALUE', 1092: 'IDC_WIZ_GRAPHIC', 1000: 'IDC_PROGRESS', 1001: 'IDC_PROGRESS_TEXT', 1002: 'IDC_STATIC_HAM', 1003: 'IDC_STATIC_SPAM', 1004: 'IDC_BROWSE_HAM', 1005: 'IDC_BROWSE_SPAM', 1006: 'IDC_START', 1007: 'IDC_BUT_REBUILD', 1008: 'IDC_BUT_RESCORE', 1009: 'IDC_VERSION', 1010: 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER', 1011: 'IDC_BUT_TRAIN_TO_SPAM_FOLDER', 1012: 'IDC_BUT_TRAIN_NOW', 1013: 'IDC_BUT_FILTER_ENABLE', 1014: 'IDC_FILTER_STATUS', 1016: 'IDC_BUT_FILTER_DEFINE', 1017: 'IDC_BUT_ABOUT', 1018: 'IDC_BUT_ACT_SCORE', 1019: 'IDC_BUT_ACT_ALL', 1020: 'IDC_BUT_UNREAD', 1021: 'IDC_BUT_UNSEEN', -1: 'IDC_STATIC', 1023: 'IDC_SLIDER_CERTAIN'} bitmaps = {'IDB_SBWIZLOGO': 'sbwizlogo.bmp', 'IDB_SBLOGO': 'sblogo.bmp', 'IDB_FOLDERS': 'folders.bmp'} def ParseDialogs(s): --- 9,15 ---- return s class FakeParser: ! dialogs = {'IDD_MANAGER': [[_('SpamBayes Manager'), (0, 0, 275, 308), -1865940928, 1024, (8, 'Tahoma')], [128, _('Close'), 1, (216, 287, 50, 14), 1342177281], [128, _('Cancel'), 2, (155, 287, 50, 14), 1073741824], ['SysTabControl32', '', 1068, (8, 7, 258, 276), 1342177280], [128, _('About'), 1072, (8, 287, 50, 14), 1342177280]], 'IDD_DIAGNOSTIC': [[_('Diagnostics'), (0, 0, 183, 98), -1865940928, 1024, (8, 'Tahoma')], [130, _('These advanced options are for diagnostic or debugging purposes only. You should only change these options if specifically asked to, or you know exactly what they mean.'), -1, (5, 3, 174, 36), 1342177280], [130, _('Log file verbosity'), -1, (5, 44, 56, 8), 1342177280], [129, '', 1061, (73, 42, 40, 14), 1350566016], [128, _('View log...'), 1093, (129, 41, 50, 14), 1342177280], [128, _('Save Spam Score'), 1048, (5, 63, 72, 10), 1342242819], [128, _('Cancel'), 2, (69, 79, 50, 14), 1073741824], [128, _('Close'), 1, (129, 79, 50, 14), 1342177281]], 'IDD_FILTER_SPAM': [[_('Spam'), (0, 0, 251, 147), 1355284672, None, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 20, 177, 12), 1342312972], [128, _('Browse...'), 1039, (194, 19, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 43, 237, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 52, 212, 10), 1342177280], ['msctls_trackbar32', '', 1023, (13, 62, 165, 22), 1342242821], [129, '', 1024, (184, 63, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 82, 107, 10), 1342177280], [133, '', 1025, (13, 93, 55, 40), 1344339971], [130, _('to folder'), -1, (75, 95, 31, 10), 1342177280], [130, _('Folder names...'), 1027, (120, 93, 59, 14), 1342312972], [128, _('Browse'), 1028, (184, 93, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 110, 81, 10), 1342242819]], 'IDD_TRAINING': [[_('Training'), (0, 0, 252, 257), 1355284672, 1024, (8, 'Tahoma')], [128, '', -1, (5, 1, 243, 113), 1342177287], [130, _('Folders with known good messages.'), -1, (11, 11, 131, 11), 1342177280], [130, '', 1002, (11, 21, 175, 12), 1342181900], [128, _('&Browse...'), 1004, (192, 20, 50, 14), 1342177280], [130, _('Folders with spam or other junk messages.'), -1, (11, 36, 171, 9), 1342177280], [130, _('Static'), 1003, (11, 46, 174, 12), 1342312972], [128, _('Brow&se...'), 1005, (192, 46, 50, 14), 1342177280], [128, _('Score &messages after training'), 1008, (11, 64, 111, 10), 1342242819], [128, _('&Rebuild entire database'), 1007, (137, 64, 92, 10), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (11, 76, 231, 11), 1350565888], [128, _('&Start Training'), 1006, (11, 91, 54, 14), 1342193664], [130, _('training status training status training status training status training status training status training status '), 1001, (75, 89, 149, 17), 1342177280], [128, _('Incremental Training'), -1, (4, 117, 244, 87), 1342177287], [128, _('Train that a message is good when it is moved from a spam folder back to the Inbox.'), 1010, (11, 127, 204, 18), 1342251011], [130, _("Clicking 'Not Spam' button should"), -1, (10, 148, 115, 10), 1342177280], [133, '', 1075, (127, 145, 114, 54), 1344339971], [128, _('Train that a message is spam when it is moved to the spam folder.'), 1011, (11, 163, 204, 16), 1342251011], [130, _("Clicking 'Spam' button should"), -1, (10, 183, 104, 10), 1342177280], [133, '', 1074, (127, 180, 114, 54), 1344339971]], 'IDD_WIZARD': [[_('SpamBayes Configuration Wizard'), (0, 0, 384, 190), -1865940800, 1024, (8, 'Tahoma')], [128, _('Cancel'), 2, (328, 173, 50, 14), 1342177280], [128, _('<< Back'), 1069, (216, 173, 50, 14), 1342177280], [128, _('Next>>,Finish'), 1077, (269, 173, 50, 14), 1342177281], [130, '', 1078, (75, 4, 303, 167), 1342177298], [130, '125', 1092, (0, 0, 69, 190), 1342177294]], 'IDD_WIZARD_FOLDERS_WATCH': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1039, (225, 134, 50, 14), 1342177280], [130, _('Folders that receive new messages'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes needs to know what folders are used to receive new messages. In most cases, this will be your Inbox, but you may also specify additional folders to be watched for spam.'), -1, (20, 21, 247, 25), 1342177280], [130, _('The following folders will be watched for new messages. Use the Browse button to change the list, or Next if the list of folders is correct.'), -1, (20, 79, 247, 20), 1342177280], [130, _('If you use the Outlook rule wizard to move messages into folders, you may like to select these folders in addition to your inbox.'), -1, (20, 51, 241, 20), 1342177280], [129, '', 1038, (20, 100, 195, 48), 1350568068]], 'IDD_WIZARD_FINISHED_TRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes has been successfully trained and configured. You should find the system is immediately effective at filtering spam.'), 1035, (20, 35, 247, 26), 1342177280], [130, _("Even though SpamBayes has been trained, it does continue to learn - please ensure you regularly check your Unsure folder, and use the 'Spam' or 'Not Spam' buttons as appropriate."), -1, (20, 68, 249, 30), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 104, 148, 9), 1342177280]], 'IDD_WIZARD_FOLDERS_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1004, (208, 49, 60, 15), 1342177280], [130, _('Training'), -1, (20, 4, 247, 10), 1342177280], [130, _('Please select the folders with the pre-sorted good messages and the folders with the pre-sorted spam messages.'), -1, (20, 16, 243, 16), 1342177280], [129, '', 1083, (20, 49, 179, 14), 1350568064], [130, _('Examples of Spam, or unwanted messages can be found in'), -1, (20, 71, 198, 8), 1342177280], [129, '', 1027, (20, 81, 177, 14), 1350568064], [130, _('Examples of good messages can be found in'), -1, (20, 38, 153, 8), 1342177280], [128, _('Browse...'), 1005, (208, 81, 60, 15), 1342177280], [130, _('If you have not pre-sorted your messages, or already have training information you wish to keep, please select the Back button and indicate you have not prepared for SpamBayes.'), -1, (20, 128, 243, 26), 1342177280], [128, _('Score messages when training is complete'), 1008, (20, 108, 163, 16), 1342242819]], 'IDD_WIZARD_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Training'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is training on your good and spam messages.'), -1, (20, 22, 247, 16), 1342177280], ['msctls_progress32', '', 1000, (20, 45, 255, 11), 1350565888], [130, _('(progress text)'), 1001, (20, 61, 257, 10), 1342177280]], 'IDD_WIZARD_FINISHED_TRAIN_LATER': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration suspended'), -1, (20, 4, 247, 14), 1342177280], [130, _('To perform initial training, you should create a folder that contains only examples of good messages, and another that contains only examples of spam.'), -1, (20, 17, 247, 27), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 145, 148, 9), 1342177280], [130, _('For examples of good messages, you may like to use your Inbox - however, it is important you remove all spam from this folder before you commence'), -1, (20, 42, 247, 26), 1342177280], [130, _('training. If you have too much spam in your Inbox, you may like to create a temporary folder and copy some examples to it.'), -1, (20, 58, 247, 17), 1342177280], [130, _('For examples of spam messages, you may like to look through your Deleted Items folder, and your Inbox. However, you will not be able to specify the Deleted Items folder as examples of spam, so you will need to move them to a folder you create.'), -1, (20, 80, 247, 35), 1342177280], [130, _('When you are finished, open the SpamBayes Manager via the SpamBayes toolbar, and re-start the Configuration Wizard.'), -1, (20, 121, 245, 17), 1342177280]], 'IDD_FOLDER_SELECTOR': [[_('Dialog'), (0, 0, 247, 215), -1865940800, None, (8, 'Tahoma')], [130, _('&Folders:'), -1, (7, 7, 47, 9), 1342177280], ['SysTreeView32', '', 1040, (7, 21, 172, 140), 1350631735], [128, _('(sub)'), 1041, (7, 167, 126, 9), 1342242819], [130, _('(status1)'), 1043, (7, 180, 220, 9), 1342177280], [130, _('(status2)'), 1044, (7, 194, 220, 9), 1342177280], [128, _('OK'), 1, (190, 21, 50, 14), 1342177281], [128, _('Cancel'), 2, (190, 39, 50, 14), 1342177280], [128, _('C&lear All'), 1042, (190, 58, 50, 14), 1342177280], [128, _('&New folder'), 1046, (190, 77, 50, 14), 1342177280]], 'IDD_STATISTICS': [[_('Statistics'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('Statistics'), -1, (7, 3, 241, 229), 1342177287], [130, _('some stats\\nand some more\\nline 3\\nline 4\\nline 5'), 1095, (12, 12, 230, 204), 1342177280], [128, _('Reset Statistics'), 1096, (178, 238, 70, 14), 1342177280], [130, _('Last reset:'), -1, (7, 241, 36, 8), 1342177280], [130, _('<<>>'), 1097, (47, 241, 107, 8), 1342177280]], 'IDD_ADVANCED': [[_('Advanced'), (0, 0, 248, 257), 1355284672, 1024, (8, 'Tahoma')], [128, _('Filter timer'), -1, (7, 3, 234, 117), 1342177287], ['msctls_trackbar32', '', 1056, (16, 36, 148, 22), 1342242821], [130, _('Processing start delay'), -1, (16, 26, 101, 8), 1342177280], [129, '', 1057, (165, 39, 40, 14), 1350566016], [130, _('seconds'), -1, (208, 41, 28, 8), 1342177280], ['msctls_trackbar32', '', 1058, (16, 73, 148, 22), 1342242821], [130, _('Delay between processing items'), -1, (16, 62, 142, 8), 1342177280], [129, '', 1059, (165, 79, 40, 14), 1350566016], [130, _('seconds'), -1, (207, 82, 28, 8), 1342177280], [128, _('Only for folders that receive new mail'), 1060, (16, 100, 217, 10), 1342242819], [128, _('Show Data Folder'), 1071, (7, 238, 70, 14), 1342177280], [128, _('Enable background filtering'), 1091, (16, 12, 162, 10), 1342242819], [128, _('Diagnostics...'), 1080, (171, 238, 70, 14), 1342177280]], 'IDD_WIZARD_FINISHED_UNCONFIGURED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Configuration cancelled'), -1, (20, 4, 247, 14), 1342177280], [130, _('The main SpamBayes options will now be displayed. You must define your folders and enable SpamBayes before it will begin filtering mail.'), -1, (20, 29, 247, 16), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 139, 148, 9), 1342177280]], 'IDD_WIZARD_WELCOME': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Welcome to the SpamBayes configuration wizard'), -1, (20, 4, 191, 14), 1342177280], [130, _('This wizard will help you configure the SpamBayes Outlook addin. Please indicate how you have prepared for this application.'), -1, (20, 20, 255, 18), 1342177280], [128, _("I haven't prepared for SpamBayes at all."), 1081, (20, 42, 190, 11), 1342309385], [128, _('I have already sorted good messages (ham) and spam messages into folders that are suitable for training purposes.'), -1, (20, 59, 255, 18), 1342186505], [128, _('I would prefer to configure SpamBayes manually.'), -1, (20, 82, 187, 12), 1342178313], [130, _('If you would like more information about training and configuring SpamBayes, click the About button.'), -1, (20, 103, 185, 20), 1342177280], [128, _('About...'), 1017, (215, 104, 60, 15), 1342177280], [130, _('If you cancel the wizard, you can access it again via the SpamBayes Manager, available from the SpamBayes toolbar.'), -1, (20, 137, 232, 17), 1342177280]], 'IDD_FILTER_NOW': [[_('Filter Now'), (0, 0, 244, 185), -1865940928, 1024, (8, 'Tahoma')], [130, _('Filter the following folders'), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1036, (7, 20, 172, 12), 1342181900], [128, _('Browse...'), 1037, (187, 19, 50, 14), 1342177280], [128, _('Filter action'), -1, (7, 38, 230, 40), 1342308359], [128, _('Perform all filter actions'), 1019, (15, 49, 126, 10), 1342373897], [128, _("Score messages, but don't perform filter action"), 1018, (15, 62, 203, 10), 1342177289], [128, _('Restrict the filter to'), -1, (7, 84, 230, 35), 1342308359], [128, _('Unread mail'), 1020, (15, 94, 149, 9), 1342242819], [128, _('Mail never previously spam filtered'), 1021, (15, 106, 149, 9), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (7, 129, 230, 11), 1350565888], [130, _('Static'), 1001, (7, 144, 227, 10), 1342177280], [128, _('Start Filtering'), 1006, (7, 161, 52, 14), 1342177281], [128, _('Close'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('SpamBayes will not be effective until it is trained.'), -1, (11, 8, 191, 14), 1342177280], [128, _('About Training...'), 1017, (209, 140, 65, 15), 1342177280], [130, _('SpamBayes is a system that learns about good and bad mail based on examples you provide. It comes with no built-in rules, so must have some training information before it will be effective.'), -1, (11, 21, 263, 30), 1342177280], [130, _("In this case, SpamBayes will begin by filtering all mail to an 'Unsure' folder. You can then use the 'Spam' and 'Not Spam' buttons to train each message as it arrives. Slowly SpamBayes will learn about your mail."), -1, (22, 61, 252, 29), 1342177280], [130, _('This option will close the wizard, and provide instructions how to sort your mail. You will then be able to configure SpamBayes and have it be immediately effective at filtering your mail'), -1, (22, 106, 252, 27), 1342177280], [130, _('For more information, click the About Training button.'), -1, (11, 143, 187, 12), 1342177280], [128, _('I want to continue without training, and let SpamBayes learn as it goes'), 1088, (11, 50, 263, 11), 1342308361], [128, _('I will pre-sort some good and spam messages, and configure SpamBayes later'), 1089, (11, 92, 263, 11), 1342177289]], 'IDD_FILTER_UNSURE': [[_('Possible Spam'), (0, 0, 249, 124), 1355284672, None, (8, 'Tahoma')], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 11, 212, 10), 1342177280], ['msctls_trackbar32', '', 1029, (12, 18, 165, 20), 1342242821], [129, '', 1030, (183, 24, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 38, 107, 10), 1342177280], [133, '', 1031, (12, 49, 55, 40), 1344339971], [130, _('to folder'), -1, (74, 52, 31, 10), 1342177280], [130, _('(folder name)'), 1033, (119, 49, 59, 14), 1342312972], [128, _('&Browse'), 1034, (183, 49, 50, 14), 1342177280], [128, _('Mark possible spam as read'), 1051, (12, 70, 101, 10), 1342242819]], 'IDD_WIZARD_FINISHED_UNTRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Congratulations'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes is now configured and ready to start learning about your Spam'), -1, (20, 22, 247, 16), 1342177280], [130, _("As SpamBayes has not been trained, all new mail will arrive in your Unsure folder. As each message arrives, you should use the 'Spam' or 'Not Spam' toolbar buttons as appropriate."), -1, (20, 42, 247, 27), 1342177280], [130, _("If you wish to speed up the training process, you can move all the existing Spam from your Inbox to the new Spam folder, then select 'Training' from the SpamBayes manager."), -1, (20, 83, 247, 31), 1342177280], [130, _('As you train, you will find the accuracy of SpamBayes increases.'), -1, (20, 69, 247, 15), 1342177280], [130, _('Click Finish to close the wizard.'), -1, (20, 121, 148, 9), 1342177280]], 'IDD_GENERAL': [[_('General'), (0, 0, 253, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('SpamBayes Version Here'), 1009, (6, 54, 242, 8), 1342177280], [130, _("SpamBayes requiere entrenamiento previo para ser efectivo. Cliquee en la solapa 'Entrenamiento' o use el Asistente de Configuraci\xf3n para entrenar."), -1, (6, 67, 242, 17), 1342177280], [130, _('Estado de la base de datos de entrenamiento:'), -1, (6, 90, 222, 8), 1342177280], [130, _('123 spam messages; 456 good messages\\r\\nLine2\\r\\nLine3'), 1035, (6, 101, 242, 27), 1342181376], [128, _('Habilitar SpamBayes'), 1013, (6, 173, 97, 11), 1342242819], [130, _('Certain spam is moved to Folder1\\nPossible spam is moved too'), 1014, (6, 146, 242, 19), 1342181376], [128, _('Reiniciar la Configuraci\xf3n...'), 1073, (6, 238, 106, 15), 1342177280], [128, _('Asistente de Configuraci\xf3n...'), 1070, (142, 238, 106, 15), 1342177280], [130, _('Estado del filtro:'), -1, (6, 135, 222, 8), 1342177280], [130, '1062', 1063, (0, 2, 275, 52), 1342179342]], 'IDD_FILTER': [[_('Filtering'), (0, 0, 249, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('Filter the following folders as messages arrive'), -1, (8, 4, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 16, 177, 12), 1342312972], [128, _('Browse...'), 1039, (192, 14, 50, 14), 1342177280], [128, _('Certain Spam'), -1, (7, 33, 235, 80), 1342177287], [130, _('To be considered certain spam, a message must score at least'), -1, (13, 42, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1023, (13, 52, 165, 22), 1342242821], [129, '', 1024, (184, 53, 51, 14), 1350566016], [130, _('and these messages should be:'), -1, (13, 72, 107, 10), 1342177280], [133, '', 1025, (12, 83, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 85, 28, 10), 1342177280], [130, _('Folder names...'), 1027, (102, 83, 77, 14), 1342312972], [128, _('Browse'), 1028, (184, 83, 50, 14), 1342177280], [128, _('Possible Spam'), -1, (6, 117, 235, 81), 1342177287], [130, _('To be considered uncertain, a message must score at least'), -1, (12, 128, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1029, (12, 135, 165, 20), 1342242821], [129, '', 1030, (183, 141, 54, 14), 1350566016], [130, _('and these messages should be:'), -1, (12, 155, 107, 10), 1342177280], [133, '', 1031, (12, 166, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 169, 27, 10), 1342177280], [130, _('(folder name)'), 1033, (102, 166, 77, 14), 1342312972], [128, _('&Browse'), 1034, (184, 166, 50, 14), 1342177280], [128, _('Mark spam as read'), 1047, (13, 100, 81, 10), 1342242819], [128, _('Mark possible spam as read'), 1051, (12, 186, 101, 10), 1342242819], [128, _('Certain Good'), -1, (6, 203, 235, 48), 1342177287], [130, _('These messages should be:'), -1, (12, 215, 107, 10), 1342177280], [133, '', 1032, (12, 228, 55, 40), 1344339971], [130, _('to folder'), -1, (71, 230, 27, 10), 1342177280], [130, _('(folder name)'), 1083, (102, 228, 77, 14), 1342312972], [128, _('&Browse'), 1004, (184, 228, 50, 14), 1342177280]], 'IDD_NOTIFICATIONS': [[_('Notifications'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('New Mail Sounds'), -1, (7, 3, 241, 229), 1342177287], [128, _('Enable new mail notification sounds'), 1098, (14, 17, 129, 10), 1342242819], [130, _('Good sound:'), -1, (14, 31, 42, 8), 1342177280], [129, '', 1094, (14, 40, 174, 14), 1350566016], [128, _('Browse...'), 1101, (192, 40, 50, 14), 1342177280], [130, _('Unsure sound:'), -1, (14, 58, 48, 8), 1342177280], [129, '', 1095, (14, 67, 174, 14), 1350566016], [128, _('Browse...'), 1102, (192, 67, 50, 14), 1342177280], [130, _('Spam sound:'), -1, (14, 85, 42, 8), 1342177280], [129, '', 1096, (14, 94, 174, 14), 1350566016], [128, _('Browse...'), 1103, (192, 94, 50, 14), 1342177280], [130, _('Time to wait for additional messages:'), -1, (14, 116, 142, 8), 1342177280], ['msctls_trackbar32', '', 1099, (14, 127, 148, 22), 1342242821], [129, '', 1100, (163, 133, 40, 14), 1350566016], [130, _('seconds'), -1, (205, 136, 28, 8), 1342177280]], 'IDD_WIZARD_FOLDERS_REST': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Browse...'), 1005, (208, 85, 60, 15), 1342177280], [130, _('Spam and Unsure Folders'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes uses two folders to manage your Spam - a folder where 'certain' spam is stored, and another for unsure messages."), -1, (20, 20, 247, 22), 1342177280], [130, _('If you enter a folder name and it does not exist, it will be automatically created. If you would prefer to select an existing folder, click the Browse button.'), -1, (20, 44, 243, 24), 1342177280], [129, '', 1027, (20, 85, 179, 14), 1350566016], [130, _('Unsure messages will be delivered to a folder named'), -1, (20, 105, 186, 12), 1342177280], [129, '', 1033, (20, 117, 177, 14), 1350566016], [130, _('Spam will be delivered to a folder named'), -1, (20, 72, 137, 8), 1342177280], [128, _('Browse...'), 1034, (208, 117, 60, 15), 1342177280]]} ! ids = {'IDC_DELAY1_SLIDER': 1056, 'IDC_PROGRESS': 1000, 'IDD_MANAGER': 101, 'IDD_DIAGNOSTIC': 113, 'IDD_TRAINING': 102, 'IDC_DELAY2_TEXT': 1059, 'IDC_DELAY1_TEXT': 1057, 'IDD_WIZARD': 114, 'IDC_BROWSE_SPAM_SOUND': 1103, 'IDC_STATIC_HAM': 1002, 'IDC_PROGRESS_TEXT': 1001, 'IDD_GENERAL': 108, 'IDC_BROWSE_UNSURE_SOUND': 1102, 'IDC_TAB': 1068, 'IDC_FOLDER_UNSURE': 1033, 'IDC_VERBOSE_LOG': 1061, 'IDC_EDIT1': 1094, 'IDC_BROWSE': 1037, 'IDC_BACK_BTN': 1069, 'IDD_WIZARD_FINISHED_UNCONFIGURED': 119, 'IDC_ACTION_CERTAIN': 1025, 'IDC_BUT_ACT_ALL': 1019, 'IDD_FILTER_NOW': 104, 'IDC_BROWSE_HAM_SOUND': 1101, 'IDC_MARK_SPAM_AS_READ': 1047, 'IDC_RECOVER_RS': 1075, 'IDC_STATIC': -1, 'IDC_PAGE_PLACEHOLDER': 1078, 'IDC_BROWSE_WATCH': 1039, 'IDC_ACCUMULATE_DELAY_TEXT': 1100, 'IDC_FOLDER_HAM': 1083, 'IDD_WIZARD_FOLDERS_REST': 117, 'IDC_SHOW_DATA_FOLDER': 1071, 'IDC_BUT_ACT_SCORE': 1018, '_APS_NEXT_RESOURCE_VALUE': 129, '_APS_NEXT_SYMED_VALUE': 101, 'IDC_SLIDER_CERTAIN': 1023, 'IDC_BUT_UNREAD': 1020, 'IDC_BUT_ABOUT': 1017, 'IDC_BUT_RESCORE': 1008, 'IDC_BUT_SEARCHSUB': 1041, 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER': 1010, 'IDC_LAST_RESET_DATE': 1097, 'IDD_WIZARD_FOLDERS_TRAIN': 120, 'IDC_BUT_FILTER_ENABLE': 1013, 'IDC_ABOUT_BTN': 1072, 'IDD_WIZARD_FINISHED_TRAINED': 122, 'IDD_FOLDER_SELECTOR': 105, 'IDD_STATISTICS': 107, 'IDC_LIST_FOLDERS': 1040, 'IDB_SBWIZLOGO': 125, 'IDC_BUT_VIEW_LOG': 1093, 'IDC_STATUS2': 1044, 'IDC_STATUS1': 1043, 'IDCANCEL': 2, 'IDC_BROWSE_HAM': 1004, 'IDC_BROWSE_SPAM': 1005, 'IDD_WIZARD_FINISHED_UNTRAINED': 116, 'IDC_MARK_UNSURE_AS_READ': 1051, 'IDC_BROWSE_HAM_SOUND2': 1103, 'IDC_BUT_WIZARD': 1070, 'IDC_VERSION': 1009, 'IDC_FOLDER_NAMES': 1036, 'IDC_BUT_TIMER_ENABLED': 1091, 'IDC_SLIDER_UNSURE': 1029, 'IDC_BUT_NEW': 1046, 'IDC_FOLDER_WATCH': 1038, 'IDC_BUT_UNTRAINED': 1088, 'IDC_STATIC_SPAM': 1003, 'IDC_EDIT_UNSURE': 1030, 'IDC_BUT_CLEARALL': 1042, 'IDC_BUT_UNSEEN': 1021, 'IDD_WIZARD_FOLDERS_WATCH': 118, 'IDC_HAM_SOUND': 1094, 'IDC_EDIT_CERTAIN': 1024, 'IDC_BUT_FILTER_DEFINE': 1016, 'IDC_FORWARD_BTN': 1077, '_APS_NEXT_CONTROL_VALUE': 1102, 'IDC_INBOX_TIMER_ONLY': 1060, 'IDD_ADVANCED': 106, 'IDC_WIZ_GRAPHIC': 1092, 'IDD_FILTER_UNSURE': 40002, 'IDC_DEL_SPAM_RS': 1074, 'IDB_FOLDERS': 127, 'IDC_BUT_PREPARATION': 1081, 'IDC_DELAY2_SLIDER': 1058, 'IDC_ACCUMULATE_DELAY_SLIDER': 1099, 'IDC_SAVE_SPAM_SCORE': 1048, 'IDC_FOLDER_CERTAIN': 1027, 'IDB_SBLOGO': 1062, 'IDC_BROWSE_UNSURE': 1034, 'IDC_STATISTICS': 1095, 'IDC_BUT_RESET_STATS': 1096, 'IDC_BUT_TRAIN_TO_SPAM_FOLDER': 1011, 'IDD_FILTER_SPAM': 110, 'IDC_BUT_RESET': 1073, 'IDD_NOTIFICATIONS': 128, 'IDC_ACTION_UNSURE': 1031, 'IDD_WIZARD_TRAIN': 121, 'IDD_WIZARD_FINISHED_TRAIN_LATER': 124, 'IDC_ACTION_HAM': 1032, 'IDC_BUT_REBUILD': 1007, '_APS_NEXT_COMMAND_VALUE': 40001, 'IDC_ENABLE_SOUNDS': 1098, 'IDC_SPAM_SOUND': 1096, 'IDC_UNSURE_SOUND': 1095, 'IDD_WIZARD_TRAINING_IS_IMPORTANT': 123, 'IDC_TRAINING_STATUS': 1035, 'IDD_WIZARD_WELCOME': 115, 'IDC_BUT_TRAIN': 1089, 'IDC_START': 1006, 'IDD_FILTER': 103, 'IDC_LOGO_GRAPHIC': 1063, 'IDC_FILTER_STATUS': 1014, 'IDOK': 1, 'IDC_BROWSE_CERTAIN': 1028, 'IDC_BUT_SHOW_DIAGNOSTICS': 1080, 'IDC_BUT_TRAIN_NOW': 1012} ! names = {1024: 'IDC_EDIT_CERTAIN', 1: 'IDOK', 2: 'IDCANCEL', 1027: 'IDC_FOLDER_CERTAIN', 1028: 'IDC_BROWSE_CERTAIN', 1029: 'IDC_SLIDER_UNSURE', 1030: 'IDC_EDIT_UNSURE', 1031: 'IDC_ACTION_UNSURE', 1032: 'IDC_ACTION_HAM', 1033: 'IDC_FOLDER_UNSURE', 1034: 'IDC_BROWSE_UNSURE', 1035: 'IDC_TRAINING_STATUS', 1036: 'IDC_FOLDER_NAMES', 1037: 'IDC_BROWSE', 1038: 'IDC_FOLDER_WATCH', 1039: 'IDC_BROWSE_WATCH', 1040: 'IDC_LIST_FOLDERS', 1041: 'IDC_BUT_SEARCHSUB', 1042: 'IDC_BUT_CLEARALL', 1043: 'IDC_STATUS1', 1044: 'IDC_STATUS2', 1046: 'IDC_BUT_NEW', 1047: 'IDC_MARK_SPAM_AS_READ', 1048: 'IDC_SAVE_SPAM_SCORE', 1051: 'IDC_MARK_UNSURE_AS_READ', 1056: 'IDC_DELAY1_SLIDER', 1057: 'IDC_DELAY1_TEXT', 1058: 'IDC_DELAY2_SLIDER', 1059: 'IDC_DELAY2_TEXT', 1060: 'IDC_INBOX_TIMER_ONLY', 1061: 'IDC_VERBOSE_LOG', 1062: 'IDB_SBLOGO', 1063: 'IDC_LOGO_GRAPHIC', 1068: 'IDC_TAB', 1069: 'IDC_BACK_BTN', 1070: 'IDC_BUT_WIZARD', 1071: 'IDC_SHOW_DATA_FOLDER', 1072: 'IDC_ABOUT_BTN', 1073: 'IDC_BUT_RESET', 1074: 'IDC_DEL_SPAM_RS', 1075: 'IDC_RECOVER_RS', 1077: 'IDC_FORWARD_BTN', 1078: 'IDC_PAGE_PLACEHOLDER', 1080: 'IDC_BUT_SHOW_DIAGNOSTICS', 1081: 'IDC_BUT_PREPARATION', 1083: 'IDC_FOLDER_HAM', 1088: 'IDC_BUT_UNTRAINED', 1089: 'IDC_BUT_TRAIN', 40002: 'IDD_FILTER_UNSURE', 1091: 'IDC_BUT_TIMER_ENABLED', 1025: 'IDC_ACTION_CERTAIN', 1093: 'IDC_BUT_VIEW_LOG', 1094: 'IDC_EDIT1', 1095: 'IDC_STATISTICS', 1096: 'IDC_BUT_RESET_STATS', 1097: 'IDC_LAST_RESET_DATE', 1098: 'IDC_ENABLE_SOUNDS', 1099: 'IDC_ACCUMULATE_DELAY_SLIDER', 1100: 'IDC_ACCUMULATE_DELAY_TEXT', 1101: 'IDC_BROWSE_HAM_SOUND', 1102: 'IDC_BROWSE_UNSURE_SOUND', 1103: 'IDC_BROWSE_HAM_SOUND2', 101: 'IDD_MANAGER', 102: 'IDD_TRAINING', 103: 'IDD_FILTER', 104: 'IDD_FILTER_NOW', 105: 'IDD_FOLDER_SELECTOR', 106: 'IDD_ADVANCED', 107: 'IDD_STATISTICS', 108: 'IDD_GENERAL', 110: 'IDD_FILTER_SPAM', 113: 'IDD_DIAGNOSTIC', 114: 'IDD_WIZARD', 115: 'IDD_WIZARD_WELCOME', 116: 'IDD_WIZARD_FINISHED_UNTRAINED', 117: 'IDD_WIZARD_FOLDERS_REST', 118: 'IDD_WIZARD_FOLDERS_WATCH', 119: 'IDD_WIZARD_FINISHED_UNCONFIGURED', 120: 'IDD_WIZARD_FOLDERS_TRAIN', 121: 'IDD_WIZARD_TRAIN', 122: 'IDD_WIZARD_FINISHED_TRAINED', 123: 'IDD_WIZARD_TRAINING_IS_IMPORTANT', 124: 'IDD_WIZARD_FINISHED_TRAIN_LATER', 125: 'IDB_SBWIZLOGO', 127: 'IDB_FOLDERS', 128: 'IDD_NOTIFICATIONS', 129: '_APS_NEXT_RESOURCE_VALUE', 40001: '_APS_NEXT_COMMAND_VALUE', 1092: 'IDC_WIZ_GRAPHIC', 1000: 'IDC_PROGRESS', 1001: 'IDC_PROGRESS_TEXT', 1002: 'IDC_STATIC_HAM', 1003: 'IDC_STATIC_SPAM', 1004: 'IDC_BROWSE_HAM', 1005: 'IDC_BROWSE_SPAM', 1006: 'IDC_START', 1007: 'IDC_BUT_REBUILD', 1008: 'IDC_BUT_RESCORE', 1009: 'IDC_VERSION', 1010: 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER', 1011: 'IDC_BUT_TRAIN_TO_SPAM_FOLDER', 1012: 'IDC_BUT_TRAIN_NOW', 1013: 'IDC_BUT_FILTER_ENABLE', 1014: 'IDC_FILTER_STATUS', 1016: 'IDC_BUT_FILTER_DEFINE', 1017: 'IDC_BUT_ABOUT', 1018: 'IDC_BUT_ACT_SCORE', 1019: 'IDC_BUT_ACT_ALL', 1020: 'IDC_BUT_UNREAD', 1021: 'IDC_BUT_UNSEEN', -1: 'IDC_STATIC', 1023: 'IDC_SLIDER_CERTAIN'} bitmaps = {'IDB_SBWIZLOGO': 'sbwizlogo.bmp', 'IDB_SBLOGO': 'sblogo.bmp', 'IDB_FOLDERS': 'folders.bmp'} def ParseDialogs(s): From anadelonbrin at users.sourceforge.net Tue Mar 29 07:40:06 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 07:40:11 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR/DIALOGS dialogs.rc, 1.2, 1.3 i18n_dialogs.py, 1.2, 1.3 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13325/languages/fr_FR/DIALOGS Modified Files: dialogs.rc i18n_dialogs.py Log Message: Add (untranslated) Notifications tab to the Manager dialog so that the translated dialogs work properly. If translaters are reading this, please do the translation and give me the new version! Index: dialogs.rc =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS/dialogs.rc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** dialogs.rc 4 Jan 2005 01:49:46 -0000 1.2 --- dialogs.rc 29 Mar 2005 05:40:03 -0000 1.3 *************** *** 355,358 **** --- 355,383 ---- END + IDD_NOTIFICATIONS DIALOGEX 0, 0, 248, 257 + STYLE DS_SETFONT | WS_CHILD | WS_CAPTION + CAPTION "Notifications" + FONT 8, "Tahoma", 0, 0, 0x0 + BEGIN + GROUPBOX "New Mail Sounds",IDC_STATIC,7,3,241,229 + CONTROL "Enable new mail notification sounds",IDC_ENABLE_SOUNDS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,129,10 + LTEXT "Good sound:",IDC_STATIC,14,31,42,8 + EDITTEXT IDC_HAM_SOUND,14,40,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_HAM_SOUND,192,40,50,14 + LTEXT "Unsure sound:",IDC_STATIC,14,58,48,8 + EDITTEXT IDC_UNSURE_SOUND,14,67,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_UNSURE_SOUND,192,67,50,14 + LTEXT "Spam sound:",IDC_STATIC,14,85,42,8 + EDITTEXT IDC_SPAM_SOUND,14,94,174,14,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",IDC_BROWSE_SPAM_SOUND,192,94,50,14 + LTEXT "Time to wait for additional messages:",IDC_STATIC,14, + 116,142,8 + CONTROL "",IDC_ACCUMULATE_DELAY_SLIDER,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,127,148,22 + EDITTEXT IDC_ACCUMULATE_DELAY_TEXT,163,133,40,14,ES_AUTOHSCROLL + LTEXT "seconds",IDC_STATIC,205,136,28,8 + END + IDD_GENERAL DIALOGEX 0, 0, 253, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU Index: i18n_dialogs.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS/i18n_dialogs.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** i18n_dialogs.py 4 Jan 2005 01:49:46 -0000 1.2 --- i18n_dialogs.py 29 Mar 2005 05:40:03 -0000 1.3 *************** *** 1,6 **** #c:\spambayes\languages\fr_FR\DIALOGS\i18n_dialogs.py #This is a generated file. Please edit c:\spambayes\languages\fr_FR\DIALOGS\dialogs.rc instead. ! _rc_size_=32455 ! _rc_mtime_=1104803220 try: _ --- 1,6 ---- #c:\spambayes\languages\fr_FR\DIALOGS\i18n_dialogs.py #This is a generated file. Please edit c:\spambayes\languages\fr_FR\DIALOGS\dialogs.rc instead. ! _rc_size_=33774 ! _rc_mtime_=1112074577 try: _ *************** *** 9,15 **** return s class FakeParser: ! dialogs = {'IDD_MANAGER': [[_('SpamBayes Manager'), (0, 0, 275, 308), -1865940928, 1024, (8, 'Tahoma')], [128, _('Fermer'), 1, (216, 287, 50, 14), 1342177281], [128, _('Annuler'), 2, (155, 287, 50, 14), 1073741824], ['SysTabControl32', '', 1068, (8, 7, 258, 276), 1342177280], [128, _('A propos...'), 1072, (8, 287, 50, 14), 1342177280]], 'IDD_DIAGNOSTIC': [[_('Diagnostiques'), (0, 0, 201, 98), -1865940928, 1024, (8, 'Tahoma')], [130, _('Ces options avanc\xe9es sont fournies \xe0 des fins de diagnostiques et d\xe9boguage seulement. Vous ne devriez changer les valeurs que sur demande ou si vous savez exactement ce que vous faites.'), -1, (5, 3, 192, 36), 1342177280], [130, _('Verbosit\xe9 du log'), -1, (5, 44, 56, 8), 1342177280], [129, '', 1061, (73, 42, 40, 14), 1350566016], [128, _('Voir le fichier de log...'), 1093, (122, 41, 75, 14), 1342177280], [128, _('Enregistrer la note attribu\xe9e'), 1048, (5, 63, 72, 10), 1342242819], [128, _('Annuler'), 2, (69, 79, 50, 14), 1073741824], [128, _('Fermer'), 1, (147, 79, 50, 14), 1342177281]], 'IDD_FILTER_SPAM': [[_('Spam'), (0, 0, 251, 147), 1355284672, None, (8, 'Tahoma')], [130, _("Dossiers \xe0 filtrer lors de l'arriv\xe9e de nouveaux messages"), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 20, 177, 12), 1342312972], [128, _('&Parcourir...'), 1039, (194, 19, 50, 14), 1342177280], [128, _('Spam s\xfbr'), -1, (7, 43, 237, 80), 1342177287], [130, _("Pour \xeatre consid\xe9r\xe9 comme un spam, un message doit obtenir une note d'au moins"), -1, (13, 52, 212, 10), 1342177280], ['msctls_trackbar32', '', 1023, (13, 62, 165, 22), 1342242821], [129, '', 1024, (184, 63, 51, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (13, 82, 107, 10), 1342177280], [133, '', 1025, (13, 93, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (75, 95, 31, 10), 1342177280], [130, _('Folder names...'), 1027, (120, 93, 59, 14), 1342312972], [128, _('P&arcourir...'), 1028, (184, 93, 50, 14), 1342177280], [128, _('Marquer les messages comme &lus'), 1047, (13, 110, 81, 10), 1342242819]], 'IDD_TRAINING': [[_('Entra\xeenement'), (0, 0, 252, 257), 1355284672, 1024, (8, 'Tahoma')], [128, '', -1, (5, 1, 243, 113), 1342177287], [130, _('Dossiers contenant les bons messages'), -1, (11, 11, 124, 8), 1342177280], [130, '', 1002, (11, 21, 175, 12), 1342181900], [128, _('&Parcourir...'), 1099, (192, 20, 50, 14), 1342177280], [130, _('Dossiers contenant les messages non sollicit\xe9s'), -1, (11, 36, 171, 9), 1342177280], [130, _('Static'), 1003, (11, 46, 174, 12), 1342312972], [128, _('P&arcourir...'), 1005, (192, 46, 50, 14), 1342177280], [128, _("Attribuer une note aux messages apr\xe8s l'entra\xeenement"), 1008, (11, 64, 111, 10), 1342242819], [128, _('&Reconstruire toute la base'), 1007, (137, 64, 92, 10), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (11, 76, 231, 11), 1350565888], [128, _("&Commencer l'entra\xeenement"), 1006, (11, 91, 90, 14), 1342193664], [130, _('status entra\xeenement status entra\xeenement status entra\xeenement status entra\xeenement status entra\xeenements status entra\xeenement status entra\xeenement'), 1001, (106, 89, 135, 17), 1342177280], [128, _('Entra\xeenement incremental'), -1, (4, 117, 244, 87), 1342177287], [128, _("D\xe9placer un message d'un dossier spam \xe0 la 'Bo\xeete de r\xe9ception' participe \xe0 l'entra\xeenement."), 1010, (11, 127, 204, 18), 1342251011], [130, _("Lors d'un click sur 'Ce n'est pas du spam'"), -1, (10, 148, 129, 8), 1342177280], [133, '', 1075, (142, 145, 99, 54), 1344339971], [128, _("D\xe9placer un message d'un dossier de la 'Bo\xeete de r\xe9ception' au dossier 'Spam' participe \xe0 l'entra\xeenement."), 1011, (11, 163, 204, 16), 1342251011], [130, _("Lors d'un click sur 'C'est du spam'"), -1, (10, 183, 106, 8), 1342177280], [133, '', 1074, (127, 180, 114, 54), 1344339971]], 'IDD_WIZARD': [[_('Assistant de configuration SpamBayes'), (0, 0, 384, 190), -1865940800, 1024, (8, 'Tahoma')], [128, _('Annuler'), 2, (328, 173, 50, 14), 1342177280], [128, _('<< Pr\xe9c\xe9dent'), 1069, (204, 173, 50, 14), 1342177280], [128, _('Suivant>>,Fin'), 1077, (259, 173, 52, 14), 1342177281], [130, '', 1078, (75, 4, 303, 167), 1342177298], [130, '125', 1092, (0, 0, 69, 190), 1342177294]], 'IDD_WIZARD_FOLDERS_WATCH': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Parcourir...'), 1039, (225, 134, 50, 14), 1342177280], [130, _('Dossiers recevant les nouveaux messages'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes a besoin de connaitre les dossiers utilis\xe9s pour r\xe9ceptionner les nouveaux messages. En g\xe9n\xe9ral, il s'agit du dossier 'Bo\xeete de r\xe9ception', mais vous pouvez en pr\xe9ciser d'autres \xe0 filtrer."), -1, (20, 21, 247, 25), 1342177280], [130, _('Les dossiers suivants seront filtr\xe9s. Uiliser le bouton Parcourir pour changer la liste puis cliquer sur Suivant.'), -1, (20, 79, 247, 20), 1342177280], [130, _("Astuce : si vous utilisez des r\xe8gles d'aiguillage de messages, vous devriez ajouter les dossiers destination \xe0 la liste."), -1, (20, 51, 241, 20), 1342177280], [129, '', 1038, (20, 100, 195, 48), 1350568068]], 'IDD_WIZARD_FINISHED_TRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Bravo !'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes s'est entra\xeen\xe9 et est maintenant param\xe9tr\xe9. Les premiers r\xe9sultats sont observables d\xe8s maintenant !"), 1035, (20, 35, 247, 26), 1342177280], [130, _("Bien que SpamBayes ce soit entra\xeen\xe9, il continue \xe0 apprendre. Pensez \xe0 r\xe9guli\xe8rement v\xe9rifier le contenu du dossier 'Douteux', et utilisez les boutons 'C'est du spam' et 'Ce n'est pas du spam'."), -1, (20, 68, 249, 30), 1342177280], [130, _("Cliquer sur Fin pour fermer l'assistant."), -1, (20, 104, 148, 9), 1342177280]], 'IDD_WIZARD_FOLDERS_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Parcourir...'), 1099, (208, 49, 60, 15), 1342177280], [130, _('Entra\xeenement'), -1, (20, 4, 247, 10), 1342177280], [130, _('S\xe9lectionner les dossiers contenant les messages pr\xe9-tri\xe9s, un pour les spams et un pour les bons messages.'), -1, (20, 16, 243, 16), 1342177280], [129, '', 1083, (20, 49, 179, 14), 1350568064], [130, _('Des exemples de messages spams ou ind\xe9sirables figurent dans le dossier'), -1, (20, 71, 198, 8), 1342177280], [129, '', 1027, (20, 81, 177, 14), 1350568064], [130, _('Des exemples de bons messages figurent dans le dossier'), -1, (20, 38, 153, 8), 1342177280], [128, _('Parcourir...'), 1005, (208, 81, 60, 15), 1342177280], [130, _("Si vous n'avez pas de messages pr\xe9-tri\xe9s ou que vous avez d\xe9j\xe0 pratiqu\xe9 l'entra\xeenement ou voulez garder la base, cliquer sur Pr\xe9c\xe9dent et choisissez l'option 'Je n'ai rien pr\xe9par\xe9 du tout'."), -1, (20, 128, 243, 26), 1342177280], [128, _("Attribuer une note aux messages lorsque l'entra\xeenement est termin\xe9."), 1008, (20, 108, 163, 16), 1342242819]], 'IDD_WIZARD_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Entra\xeenement'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes s'entra\xeene sur vos bons messages et sur les spams."), -1, (20, 22, 247, 16), 1342177280], ['msctls_progress32', '', 1000, (20, 45, 255, 11), 1350565888], [130, _('(progress text)'), 1001, (20, 61, 257, 10), 1342177280]], 'IDD_WIZARD_FINISHED_TRAIN_LATER': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Param\xe9trage abandonn\xe9'), -1, (20, 4, 247, 14), 1342177280], [130, _("Pour effectuer l'entra\xeenement initial, vous devriez cr\xe9er deux dossiers, un contenant de bons messages et un autre des messages non sollicit\xe9s."), -1, (20, 17, 247, 27), 1342177280], [130, _("Cliquer sur Fin pour quitter l'assistant."), -1, (20, 145, 148, 9), 1342177280], [130, _("Pour des exemples de bons messages, vous pouvez utiliser votre 'Bo\xeete de r\xe9ception' mais vous evez \xeatre S\xdbR qu'elle ne contient aucun message non sollicit\xe9"), -1, (20, 42, 247, 26), 1342177280], [130, _('Si faire ce tri \xe9tait trop fastidieux, cr\xe9ez simplement un dossier temporaire en mettant quelques messages en exemple.'), -1, (20, 58, 247, 17), 1342177280], [130, _("Pour des exemples de messages non sollicit\xe9s vous pouvez utiliser le dossier 'El\xe9ments supprim\xe9s'. Si faire ce tri \xe9tait trop fastidieux, cr\xe9ez simplement un dossier temporaire en mettant quelques messages en exemple."), -1, (20, 80, 247, 35), 1342177280], [130, _("Lorsque vous aurez termin\xe9, ouvrez le SpamBayes Manager via la barre d'outil SpamBayes, et red\xe9marrez l'assistant."), -1, (20, 121, 245, 17), 1342177280]], 'IDD_FOLDER_SELECTOR': [[_('Dialog'), (0, 0, 253, 215), -1865940800, None, (8, 'Tahoma')], [130, _('&Dossiers :'), -1, (7, 7, 47, 9), 1342177280], ['SysTreeView32', '', 1040, (7, 21, 172, 140), 1350631735], [128, _('(sub)'), 1041, (7, 167, 126, 9), 1342242819], [130, _('(status1)'), 1043, (7, 180, 220, 9), 1342177280], [130, _('(status2)'), 1044, (7, 194, 220, 9), 1342177280], [128, _('OK'), 1, (190, 21, 57, 14), 1342177281], [128, _('Annuler'), 2, (190, 39, 57, 14), 1342177280], [128, _('&Tout effacer'), 1042, (190, 58, 57, 14), 1342177280], [128, _('&Nouveau dossier'), 1046, (190, 77, 58, 14), 1342177280]], 'IDD_STATISTICS': [[_('Statistiques'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('Statistiques'), -1, (7, 3, 241, 229), 1342177287], [130, _('some stats\\nand some more\\nline 3\\nline 4\\nline 5'), 1095, (12, 12, 230, 204), 1342177280], [128, _('Remise \xe0 0 des statistiques'), 1096, (156, 238, 92, 14), 1342177280], [130, _('Derni\xe8re remise \xe0 0 :'), -1, (7, 241, 36, 8), 1342177280], [130, _('<<>>'), 1097, (47, 241, 107, 8), 1342177280]], 'IDD_ADVANCED': [[_('Avanc\xe9'), (0, 0, 248, 257), 1355284672, 1024, (8, 'Tahoma')], [128, _('D\xe9lais de filtrage'), -1, (7, 3, 234, 117), 1342177287], ['msctls_trackbar32', '', 1056, (16, 36, 148, 22), 1342242821], [130, _('D\xe9lai avant filtrage'), -1, (16, 26, 101, 8), 1342177280], [129, '', 1057, (165, 39, 40, 14), 1350566016], [130, _('secondes'), -1, (208, 41, 28, 8), 1342177280], ['msctls_trackbar32', '', 1058, (16, 73, 148, 22), 1342242821], [130, _('D\xe9lai de filtrage entre deux messages'), -1, (16, 62, 142, 8), 1342177280], [129, '', 1059, (165, 79, 40, 14), 1350566016], [130, _('secondes'), -1, (207, 82, 28, 8), 1342177280], [128, _('Seulement pour les dossiers qui re\xe7oivent de nouveaux messages'), 1060, (16, 100, 217, 10), 1342242819], [128, _('Afficher le r\xe9pertoire de donn\xe9es'), 1071, (7, 238, 111, 14), 1342177280], [128, _('Activer le filtrage en t\xe2che de fond'), 1091, (16, 12, 162, 10), 1342242819], [128, _('Diagnostiques...'), 1080, (171, 238, 70, 14), 1342177280]], 'IDD_WIZARD_FINISHED_UNCONFIGURED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Annulation du param\xe9trage'), -1, (20, 4, 247, 14), 1342177280], [130, _("L'\xe9cran principal de SpamBayes va maintenant \xeatre affich\xe9. Vous devez d\xe9finir les dossiers et activer SpamBayes pour commencer \xe0 filtrer les messages."), -1, (20, 29, 247, 16), 1342177280], [130, _("Cliquer sur Fin pour quitter l'assistant."), -1, (20, 139, 148, 9), 1342177280]], 'IDD_WIZARD_WELCOME': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _("Bienvenue dans l'assistant de param\xe9trage de SpamBayes"), -1, (20, 4, 191, 14), 1342177280], [130, _('Cet assistant va vous guider dans le param\xe9trage du module SpamBayes pour Outlook. Merci de pr\xe9ciser o\xf9 vous en \xeates pour le param\xe9trage.'), -1, (20, 20, 255, 18), 1342177280], [128, _("Je n'ai rien pr\xe9par\xe9 du tout pour SpamBayes."), 1081, (20, 42, 190, 11), 1342309385], [128, _("J'ai d\xe9j\xe0 filtr\xe9 les bon messages (ham) et les mauvais (spam) dans des dossiers s\xe9par\xe9s adapt\xe9s \xe0 l'entra\xeenement."), -1, (20, 59, 255, 18), 1342186505], [128, _('Je pr\xe9f\xe8re me d\xe9brouiller tout seul pour configurer SpamBayes.'), -1, (20, 82, 187, 12), 1342178313], [130, _("Pour plus d'informations sur l'entra\xeenement et le param\xe9trage de SpamBayes, cliquer sur le bouton A propos."), -1, (20, 103, 185, 26), 1342177280], [128, _('A propos...'), 1017, (215, 104, 60, 15), 1342177280], [130, _("Si vous quittez l'assistant, vous pouvez le relancer \xe0 partir du SpamBayes Manager, disponible sur la barre d'outil SpamBayes."), -1, (20, 137, 232, 17), 1342177280]], 'IDD_FILTER_NOW': [[_('Filtrer maintenant'), (0, 0, 244, 185), -1865940928, 1024, (8, 'Tahoma')], [130, _('Filtrer les dossiers suivants'), -1, (8, 9, 168, 11), 1342177280], [130, _('Dossiers...\\nLine 2'), 1036, (7, 20, 172, 12), 1342181900], [128, _('Parcourir...'), 1037, (187, 19, 50, 14), 1342177280], [128, _('Filtres et actions'), -1, (7, 38, 230, 40), 1342308359], [128, _('Effectuer les actions (aiguillage du message)'), 1019, (15, 49, 126, 10), 1342373897], [128, _("Attribuer une note mais ne pas effectuer d'action"), 1018, (15, 62, 203, 10), 1342177289], [128, _('Restrendre le filtre'), -1, (7, 84, 230, 35), 1342308359], [128, _('Aux messages non lus'), 1020, (15, 94, 149, 9), 1342242819], [128, _("Aux messages qui n'ont pas eu de note attribu\xe9e"), 1021, (15, 106, 149, 9), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (7, 129, 230, 11), 1350565888], [130, _('Static'), 1001, (7, 144, 227, 10), 1342177280], [128, _('D\xe9marrer le filtrage'), 1006, (7, 161, 67, 14), 1342177281], [128, _('Fermer'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 328, 156), 1354760384, 1024, (8, 'Tahoma')], [130, _("SpamBayes ne fonctionnera pas tant qu'il ne s'est pas entra\xeen\xe9."), -1, (11, 8, 312, 14), 1342177280], [128, _("A propos de l'entra\xeenement..."), 1017, (258, 135, 65, 15), 1342177280], [130, _("SpamBayes est un syst\xe8me qui apprend \xe0 reconna\xeetre les bons et les mauvais messages \xe0 partir des exemples que vous lui donnez. A la base, il ne dispose d'aucun filtres, il doit donc \xeatre entra\xeen\xe9 pour devenir effectif."), -1, (11, 21, 312, 30), 1342177280], [130, _("Pour commencer, SpamBayes va aiguiller tous vos messages dans le dossier 'Douteux'. L'entra\xeenement est simple : pour chaque message, vous sp\xe9cifiez alors s'il s'agit de spam ou non \xe0 partir des boutons 'C'est du spam' et 'Ce n'est pas du spam'. Petit \xe0 pete????ctls_progress32"), -1, (22, 61, 301, 35), 1342177280], [130, _("Cette option fermera l'assistant et vous dire comment aiguiller vos messages. Vous pourrez param\xe9trer SpamBayes et le rendre actif imm\xe9diatement sur vos messages"), -1, (22, 113, 301, 27), 1342177280], [130, _("Pour plus d'information, cliquer sur le bouton A propos de l'entra\xeenement."), -1, (11, 137, 234, 8), 1342177280], [128, _("Je veux stopper l'entra\xeenement et laisser SpamBayes apprendre sur les nouveaux messages"), 1088, (11, 50, 312, 11), 1342308361], [128, _('Je vais effectuer le pr\xe9-tri moi-m\xeame (bon / spam) et param\xe9trer SpamBayes plus tard'), 1089, (11, 98, 312, 11), 1342177289]], 'IDD_FILTER_UNSURE': [[_('Messages douteux'), (0, 0, 249, 124), 1355284672, None, (8, 'Tahoma')], [130, _("Pour \xeatre consid\xe9r\xe9 comme douteux, un message doit obtenir une note d'au moins"), -1, (12, 11, 212, 10), 1342177280], ['msctls_trackbar32', '', 1029, (12, 18, 165, 20), 1342242821], [129, '', 1030, (183, 24, 54, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (12, 38, 107, 10), 1342177280], [133, '', 1031, (12, 49, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (74, 52, 31, 10), 1342177280], [130, _('(folder name)'), 1033, (119, 49, 59, 14), 1342312972], [128, _('Pa&rcourir'), 1034, (183, 49, 50, 14), 1342177280], [128, _('Marquer les messages l&us'), 1051, (12, 70, 101, 10), 1342242819]], 'IDD_WIZARD_FINISHED_UNTRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Bravo !'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes est maintenant param\xe9tr\xe9 et pr\xeat \xe0 filtrer sur vos messages'), -1, (20, 22, 247, 16), 1342177280], [130, _("Comme SpamBayes ne s'est pas encore entra\xeen\xe9, tous les messages vont \xeatre rang\xe9s dans le dossier Douteux (Unsure). Pour chacun des messages, vous devez cliquer soit sur 'C'est du Spam' soit sur 'Ce n'est pas du Spam'."), -1, (20, 42, 247, 27), 1342177280], [130, _("Pour acc\xe9l\xe9rer l'entra\xeenement, vous pouvez d\xe9placer manuellement tous les spams de votre 'Bo\xeete de r\xe9ception' dans le dossier 'Spam', et alors s\xe9lectionner 'Entra\xeenement' depuis le SpamBayes manager."), -1, (20, 83, 247, 31), 1342177280], [130, _("Plus le programme s'entra\xeene et plus la fiabilit\xe9 augmente. Notez qu'apr\xe8s seulement quelques messages le r\xe9sultat est \xe9tonnant."), -1, (20, 69, 247, 15), 1342177280], [130, _("Cliquer sur Fin pour sortir de l'assistant."), -1, (20, 121, 148, 9), 1342177280]], 'IDD_GENERAL': [[_('General'), (0, 0, 253, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('SpamBayes Version'), 1009, (6, 54, 242, 8), 1342177280], [130, _("SpamBayes a besoin de s'entra\xeener avant d'\xeatre activ\xe9. Cliquer sur l'onglet 'Entra\xeenement', ou utilisez l'assistant en vous laissant guider."), -1, (6, 67, 242, 17), 1342177280], [130, _("Status de la base d'entra\xeenement :"), -1, (6, 90, 222, 8), 1342177280], [130, _('123 spams ; 456 bons messages\\r\\nLine2\\r\\nLine3'), 1035, (6, 101, 242, 27), 1342181376], [128, _('Activer SpamBayes'), 1013, (6, 221, 97, 11), 1342242819], [130, _('Les messages classifi\xe9s comme spam sont aiguill\xe9s dans le dossier Folder1\\nLes messages douteux sont \xe9galement aiguill\xe9s'), 1014, (6, 146, 242, 67), 1342181376], [128, _('Revenir au param\xe9trage initial...'), 1073, (6, 238, 109, 14), 1342177280], [128, _('Assistant...'), 1070, (142, 238, 106, 15), 1342177280], [130, _('Status des filtres :'), -1, (6, 135, 222, 8), 1342177280], [130, '1062', 1063, (0, 2, 275, 52), 1342179342]], 'IDD_FILTER': [[_('Filtrage'), (0, 0, 249, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('Filtrer les dossiers suivant lors de la r\xe9ception de nouveaux messages'), -1, (8, 4, 168, 11), 1342177280], [130, _('Dossiers...\\nLine 2'), 1038, (7, 16, 177, 12), 1342312972], [128, _('Parcourir...'), 1039, (192, 14, 50, 14), 1342177280], [128, _('Spam s\xfbr'), -1, (7, 33, 235, 80), 1342177287], [130, _("Pour \xeatre consid\xe9r\xe9 comme un spam, un message doit obtenir une note d'au moins"), -1, (13, 42, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1023, (13, 52, 165, 22), 1342242821], [129, '', 1024, (184, 53, 51, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (13, 72, 107, 10), 1342177280], [133, '', 1025, (12, 83, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (71, 85, 28, 10), 1342177280], [130, _('Folder names...'), 1027, (102, 83, 77, 14), 1342312972], [128, _('&Parcourir'), 1028, (184, 83, 50, 14), 1342177280], [128, _('Message douteux'), -1, (6, 117, 235, 81), 1342177287], [130, _("Pour \xeatre consid\xe9r\xe9 comme douteux, un message doit obtenir une note d'au moins"), -1, (12, 128, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1029, (12, 135, 165, 20), 1342242821], [129, '', 1030, (183, 141, 54, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (12, 155, 107, 10), 1342177280], [133, '', 1031, (12, 166, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (71, 169, 48, 8), 1342177280], [130, _('(folder name)'), 1033, (122, 166, 57, 14), 1342312972], [128, _('P&arcourir'), 1034, (184, 166, 50, 14), 1342177280], [128, _('Marquer les spams comme lus'), 1047, (13, 100, 81, 10), 1342242819], [128, _('Marquer les messages douteux comme lus'), 1051, (12, 186, 101, 10), 1342242819], [128, _('Bons messages'), -1, (6, 203, 235, 48), 1342177287], [130, _('Ces messages doivent \xeatre :'), -1, (12, 215, 107, 10), 1342177280], [133, '', 1032, (12, 228, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (71, 230, 48, 8), 1342177280], [130, _('(folder name)'), 1083, (122, 228, 57, 14), 1342312972], [128, _('Pa&rcourir...'), 1099, (184, 228, 50, 14), 1342177280]], 'IDD_WIZARD_FOLDERS_REST': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Parcourir...'), 1005, (208, 85, 60, 15), 1342177280], [130, _('Dossiers Spam et Douteux'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes utilise deux dossiers pour g\xe9rer le spam. Un dossier 's\xfbr' pour stocker le spam et un dossier 'douteux' qu'il vous faudra aiguiller manuellement."), -1, (20, 20, 247, 22), 1342177280], [130, _("Si vous entrez un nom de dossier qui n'existe pas, il va \xeatre cr\xe9\xe9 automatiquement. Pour choisir un dossier existant, cliquer sur Parcourir."), -1, (20, 44, 243, 24), 1342177280], [129, '', 1027, (20, 85, 179, 14), 1350566016], [130, _('Les messages douteux vont \xeatre rang\xe9s dans le dossier nomm\xe9'), -1, (20, 105, 186, 12), 1342177280], [129, '', 1033, (20, 117, 177, 14), 1350566016], [130, _('Les messages spam vont \xeatre rang\xe9s dans le dossier nomm\xe9'), -1, (20, 72, 137, 8), 1342177280], [128, _('Parcourir...'), 1034, (208, 117, 60, 15), 1342177280]]} ! ids = {'IDC_DELAY1_SLIDER': 1056, 'IDC_ABOUT_BTN': 1072, 'IDD_MANAGER': 101, 'IDD_DIAGNOSTIC': 113, 'IDD_TRAINING': 102, 'IDC_DELAY2_TEXT': 1059, 'IDC_DELAY1_TEXT': 1057, 'IDD_WIZARD': 114, 'IDC_STATIC_HAM': 1002, 'IDC_PROGRESS_TEXT': 1001, 'IDD_GENERAL': 108, 'IDC_TAB': 1068, 'IDC_FOLDER_UNSURE': 1033, 'IDC_VERBOSE_LOG': 1061, 'IDC_EDIT1': 1094, 'IDC_BROWSE': 1037, 'IDC_BACK_BTN': 1069, 'IDD_WIZARD_FINISHED_UNCONFIGURED': 119, 'IDC_ACTION_CERTAIN': 1025, 'IDC_BUT_ACT_ALL': 1019, 'IDD_FILTER_NOW': 104, 'IDC_MARK_SPAM_AS_READ': 1047, 'IDC_RECOVER_RS': 1075, 'IDC_STATIC': -1, 'IDC_PAGE_PLACEHOLDER': 1078, 'IDC_BROWSE_WATCH': 1039, 'IDC_FOLDER_HAM': 1083, 'IDD_WIZARD_FOLDERS_REST': 117, 'IDC_SHOW_DATA_FOLDER': 1071, 'IDC_BUT_ACT_SCORE': 1018, '_APS_NEXT_RESOURCE_VALUE': 128, '_APS_NEXT_SYMED_VALUE': 101, 'IDC_SLIDER_CERTAIN': 1023, 'IDC_BUT_UNREAD': 1020, 'IDC_BUT_ABOUT': 1017, 'IDC_BUT_RESCORE': 1008, 'IDC_BUT_SEARCHSUB': 1041, 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER': 1010, 'IDC_LAST_RESET_DATE': 1097, 'IDD_WIZARD_FOLDERS_TRAIN': 120, 'IDC_BUT_FILTER_ENABLE': 1013, 'IDC_PROGRESS': 1000, 'IDD_WIZARD_FINISHED_TRAINED': 122, 'IDD_FOLDER_SELECTOR': 105, 'IDD_STATISTICS': 107, 'IDC_LIST_FOLDERS': 1040, 'IDB_SBWIZLOGO': 125, 'IDC_BUT_VIEW_LOG': 1093, 'IDC_STATUS2': 1044, 'IDC_STATUS1': 1043, 'IDCANCEL': 2, 'IDC_BROWSE_HAM': 1099, 'IDC_BROWSE_SPAM': 1005, 'IDD_WIZARD_FINISHED_UNTRAINED': 116, 'IDC_MARK_UNSURE_AS_READ': 1051, 'IDC_BUT_WIZARD': 1070, 'IDC_VERSION': 1009, 'IDC_FOLDER_NAMES': 1036, 'IDC_BUT_TIMER_ENABLED': 1091, 'IDC_SLIDER_UNSURE': 1029, 'IDC_BUT_NEW': 1046, 'IDC_FOLDER_WATCH': 1038, 'IDC_BUT_UNTRAINED': 1088, 'IDC_STATIC_SPAM': 1003, 'IDC_EDIT_UNSURE': 1030, 'IDC_BUT_CLEARALL': 1042, 'IDC_BUT_UNSEEN': 1021, 'IDD_WIZARD_FOLDERS_WATCH': 118, 'IDC_EDIT_CERTAIN': 1024, 'IDC_BUT_FILTER_DEFINE': 1016, 'IDC_FORWARD_BTN': 1077, '_APS_NEXT_CONTROL_VALUE': 1100, 'IDC_INBOX_TIMER_ONLY': 1060, 'IDD_ADVANCED': 106, 'IDC_WIZ_GRAPHIC': 1092, 'IDD_FILTER_UNSURE': 111, 'IDC_DEL_SPAM_RS': 1074, 'IDB_FOLDERS': 127, 'IDC_BUT_PREPARATION': 1081, 'IDC_DELAY2_SLIDER': 1058, 'IDC_SAVE_SPAM_SCORE': 1048, 'IDC_FOLDER_CERTAIN': 1027, 'IDB_SBLOGO': 1062, 'IDC_BROWSE_UNSURE': 1034, 'IDC_STATISTICS': 1095, 'IDC_BUT_RESET_STATS': 1096, 'IDC_BUT_TRAIN_TO_SPAM_FOLDER': 1011, 'IDD_FILTER_SPAM': 110, 'IDC_BUT_RESET': 1073, 'IDC_ACTION_UNSURE': 1031, 'IDD_WIZARD_TRAIN': 121, 'IDD_WIZARD_FINISHED_TRAIN_LATER': 124, 'IDC_ACTION_HAM': 1032, 'IDC_BUT_REBUILD': 1007, '_APS_NEXT_COMMAND_VALUE': 40001, 'IDD_WIZARD_TRAINING_IS_IMPORTANT': 123, 'IDC_TRAINING_STATUS': 1035, 'IDD_WIZARD_WELCOME': 115, 'IDC_BUT_TRAIN': 1089, 'IDC_START': 1006, 'IDD_FILTER': 103, 'IDC_LOGO_GRAPHIC': 1063, 'IDC_FILTER_STATUS': 1014, 'IDOK': 1, 'IDC_BROWSE_CERTAIN': 1028, 'IDC_BUT_SHOW_DIAGNOSTICS': 1080, 'IDC_BUT_TRAIN_NOW': 1012} ! names = {1024: 'IDC_EDIT_CERTAIN', 1: 'IDOK', 2: 'IDCANCEL', 1027: 'IDC_FOLDER_CERTAIN', 1028: 'IDC_BROWSE_CERTAIN', 1029: 'IDC_SLIDER_UNSURE', 1030: 'IDC_EDIT_UNSURE', 1031: 'IDC_ACTION_UNSURE', 1032: 'IDC_ACTION_HAM', 1033: 'IDC_FOLDER_UNSURE', 1034: 'IDC_BROWSE_UNSURE', 1035: 'IDC_TRAINING_STATUS', 1036: 'IDC_FOLDER_NAMES', 1037: 'IDC_BROWSE', 1038: 'IDC_FOLDER_WATCH', 1039: 'IDC_BROWSE_WATCH', 1040: 'IDC_LIST_FOLDERS', 1041: 'IDC_BUT_SEARCHSUB', 1042: 'IDC_BUT_CLEARALL', 1043: 'IDC_STATUS1', 1044: 'IDC_STATUS2', 1046: 'IDC_BUT_NEW', 1047: 'IDC_MARK_SPAM_AS_READ', 1048: 'IDC_SAVE_SPAM_SCORE', 1051: 'IDC_MARK_UNSURE_AS_READ', 1056: 'IDC_DELAY1_SLIDER', 1057: 'IDC_DELAY1_TEXT', 1058: 'IDC_DELAY2_SLIDER', 1059: 'IDC_DELAY2_TEXT', 1060: 'IDC_INBOX_TIMER_ONLY', 1061: 'IDC_VERBOSE_LOG', 1062: 'IDB_SBLOGO', 1063: 'IDC_LOGO_GRAPHIC', 1068: 'IDC_TAB', 1069: 'IDC_BACK_BTN', 1070: 'IDC_BUT_WIZARD', 1071: 'IDC_SHOW_DATA_FOLDER', 1072: 'IDC_ABOUT_BTN', 1073: 'IDC_BUT_RESET', 1074: 'IDC_DEL_SPAM_RS', 1075: 'IDC_RECOVER_RS', 1077: 'IDC_FORWARD_BTN', 1078: 'IDC_PAGE_PLACEHOLDER', 1080: 'IDC_BUT_SHOW_DIAGNOSTICS', 1081: 'IDC_BUT_PREPARATION', 1083: 'IDC_FOLDER_HAM', 1088: 'IDC_BUT_UNTRAINED', 1089: 'IDC_BUT_TRAIN', 1091: 'IDC_BUT_TIMER_ENABLED', 1025: 'IDC_ACTION_CERTAIN', 1093: 'IDC_BUT_VIEW_LOG', 1094: 'IDC_EDIT1', 1095: 'IDC_STATISTICS', 1096: 'IDC_BUT_RESET_STATS', 1097: 'IDC_LAST_RESET_DATE', 1098: 'IDC_FOLDER_HAM', 1099: 'IDC_BROWSE_HAM', 1100: '_APS_NEXT_CONTROL_VALUE', 101: 'IDD_MANAGER', 102: 'IDD_TRAINING', 103: 'IDD_FILTER', 104: 'IDD_FILTER_NOW', 105: 'IDD_FOLDER_SELECTOR', 106: 'IDD_ADVANCED', 107: 'IDD_STATISTICS', 108: 'IDD_GENERAL', 110: 'IDD_FILTER_SPAM', 111: 'IDD_FILTER_UNSURE', 113: 'IDD_DIAGNOSTIC', 114: 'IDD_WIZARD', 115: 'IDD_WIZARD_WELCOME', 116: 'IDD_WIZARD_FINISHED_UNTRAINED', 117: 'IDD_WIZARD_FOLDERS_REST', 118: 'IDD_WIZARD_FOLDERS_WATCH', 119: 'IDD_WIZARD_FINISHED_UNCONFIGURED', 120: 'IDD_WIZARD_FOLDERS_TRAIN', 121: 'IDD_WIZARD_TRAIN', 122: 'IDD_WIZARD_FINISHED_TRAINED', 123: 'IDD_WIZARD_TRAINING_IS_IMPORTANT', 124: 'IDD_WIZARD_FINISHED_TRAIN_LATER', 125: 'IDB_SBWIZLOGO', 127: 'IDB_FOLDERS', 128: '_APS_NEXT_RESOURCE_VALUE', 40001: '_APS_NEXT_COMMAND_VALUE', 1092: 'IDC_WIZ_GRAPHIC', 1000: 'IDC_PROGRESS', 1001: 'IDC_PROGRESS_TEXT', 1002: 'IDC_STATIC_HAM', 1003: 'IDC_STATIC_SPAM', 1004: 'IDC_BROWSE_HAM', 1005: 'IDC_BROWSE_SPAM', 1006: 'IDC_START', 1007: 'IDC_BUT_REBUILD', 1008: 'IDC_BUT_RESCORE', 1009: 'IDC_VERSION', 1010: 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER', 1011: 'IDC_BUT_TRAIN_TO_SPAM_FOLDER', 1012: 'IDC_BUT_TRAIN_NOW', 1013: 'IDC_BUT_FILTER_ENABLE', 1014: 'IDC_FILTER_STATUS', 1016: 'IDC_BUT_FILTER_DEFINE', 1017: 'IDC_BUT_ABOUT', 1018: 'IDC_BUT_ACT_SCORE', 1019: 'IDC_BUT_ACT_ALL', 1020: 'IDC_BUT_UNREAD', 1021: 'IDC_BUT_UNSEEN', -1: 'IDC_STATIC', 1023: 'IDC_SLIDER_CERTAIN'} bitmaps = {'IDB_SBWIZLOGO': 'sbwizlogo.bmp', 'IDB_SBLOGO': 'sblogo.bmp', 'IDB_FOLDERS': 'folders.bmp'} def ParseDialogs(s): --- 9,15 ---- return s class FakeParser: ! dialogs = {'IDD_MANAGER': [[_('SpamBayes Manager'), (0, 0, 275, 308), -1865940928, 1024, (8, 'Tahoma')], [128, _('Fermer'), 1, (216, 287, 50, 14), 1342177281], [128, _('Annuler'), 2, (155, 287, 50, 14), 1073741824], ['SysTabControl32', '', 1068, (8, 7, 258, 276), 1342177280], [128, _('A propos...'), 1072, (8, 287, 50, 14), 1342177280]], 'IDD_DIAGNOSTIC': [[_('Diagnostiques'), (0, 0, 201, 98), -1865940928, 1024, (8, 'Tahoma')], [130, _('Ces options avanc\xe9es sont fournies \xe0 des fins de diagnostiques et d\xe9boguage seulement. Vous ne devriez changer les valeurs que sur demande ou si vous savez exactement ce que vous faites.'), -1, (5, 3, 192, 36), 1342177280], [130, _('Verbosit\xe9 du log'), -1, (5, 44, 56, 8), 1342177280], [129, '', 1061, (73, 42, 40, 14), 1350566016], [128, _('Voir le fichier de log...'), 1093, (122, 41, 75, 14), 1342177280], [128, _('Enregistrer la note attribu\xe9e'), 1048, (5, 63, 72, 10), 1342242819], [128, _('Annuler'), 2, (69, 79, 50, 14), 1073741824], [128, _('Fermer'), 1, (147, 79, 50, 14), 1342177281]], 'IDD_FILTER_SPAM': [[_('Spam'), (0, 0, 251, 147), 1355284672, None, (8, 'Tahoma')], [130, _("Dossiers \xe0 filtrer lors de l'arriv\xe9e de nouveaux messages"), -1, (8, 9, 168, 11), 1342177280], [130, _('Folder names...\\nLine 2'), 1038, (7, 20, 177, 12), 1342312972], [128, _('&Parcourir...'), 1039, (194, 19, 50, 14), 1342177280], [128, _('Spam s\xfbr'), -1, (7, 43, 237, 80), 1342177287], [130, _("Pour \xeatre consid\xe9r\xe9 comme un spam, un message doit obtenir une note d'au moins"), -1, (13, 52, 212, 10), 1342177280], ['msctls_trackbar32', '', 1023, (13, 62, 165, 22), 1342242821], [129, '', 1024, (184, 63, 51, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (13, 82, 107, 10), 1342177280], [133, '', 1025, (13, 93, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (75, 95, 31, 10), 1342177280], [130, _('Folder names...'), 1027, (120, 93, 59, 14), 1342312972], [128, _('P&arcourir...'), 1028, (184, 93, 50, 14), 1342177280], [128, _('Marquer les messages comme &lus'), 1047, (13, 110, 81, 10), 1342242819]], 'IDD_TRAINING': [[_('Entra\xeenement'), (0, 0, 252, 257), 1355284672, 1024, (8, 'Tahoma')], [128, '', -1, (5, 1, 243, 113), 1342177287], [130, _('Dossiers contenant les bons messages'), -1, (11, 11, 124, 8), 1342177280], [130, '', 1002, (11, 21, 175, 12), 1342181900], [128, _('&Parcourir...'), 1004, (192, 20, 50, 14), 1342177280], [130, _('Dossiers contenant les messages non sollicit\xe9s'), -1, (11, 36, 171, 9), 1342177280], [130, _('Static'), 1003, (11, 46, 174, 12), 1342312972], [128, _('P&arcourir...'), 1005, (192, 46, 50, 14), 1342177280], [128, _("Attribuer une note aux messages apr\xe8s l'entra\xeenement"), 1008, (11, 64, 111, 10), 1342242819], [128, _('&Reconstruire toute la base'), 1007, (137, 64, 92, 10), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (11, 76, 231, 11), 1350565888], [128, _("&Commencer l'entra\xeenement"), 1006, (11, 91, 90, 14), 1342193664], [130, _('status entra\xeenement status entra\xeenement status entra\xeenement status entra\xeenement status entra\xeenements status entra\xeenement status entra\xeenement'), 1001, (106, 89, 135, 17), 1342177280], [128, _('Entra\xeenement incremental'), -1, (4, 117, 244, 87), 1342177287], [128, _("D\xe9placer un message d'un dossier spam \xe0 la 'Bo\xeete de r\xe9ception' participe \xe0 l'entra\xeenement."), 1010, (11, 127, 204, 18), 1342251011], [130, _("Lors d'un click sur 'Ce n'est pas du spam'"), -1, (10, 148, 129, 8), 1342177280], [133, '', 1075, (142, 145, 99, 54), 1344339971], [128, _("D\xe9placer un message d'un dossier de la 'Bo\xeete de r\xe9ception' au dossier 'Spam' participe \xe0 l'entra\xeenement."), 1011, (11, 163, 204, 16), 1342251011], [130, _("Lors d'un click sur 'C'est du spam'"), -1, (10, 183, 106, 8), 1342177280], [133, '', 1074, (127, 180, 114, 54), 1344339971]], 'IDD_WIZARD': [[_('Assistant de configuration SpamBayes'), (0, 0, 384, 190), -1865940800, 1024, (8, 'Tahoma')], [128, _('Annuler'), 2, (328, 173, 50, 14), 1342177280], [128, _('<< Pr\xe9c\xe9dent'), 1069, (204, 173, 50, 14), 1342177280], [128, _('Suivant>>,Fin'), 1077, (259, 173, 52, 14), 1342177281], [130, '', 1078, (75, 4, 303, 167), 1342177298], [130, '125', 1092, (0, 0, 69, 190), 1342177294]], 'IDD_WIZARD_FOLDERS_WATCH': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Parcourir...'), 1039, (225, 134, 50, 14), 1342177280], [130, _('Dossiers recevant les nouveaux messages'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes a besoin de connaitre les dossiers utilis\xe9s pour r\xe9ceptionner les nouveaux messages. En g\xe9n\xe9ral, il s'agit du dossier 'Bo\xeete de r\xe9ception', mais vous pouvez en pr\xe9ciser d'autres \xe0 filtrer."), -1, (20, 21, 247, 25), 1342177280], [130, _('Les dossiers suivants seront filtr\xe9s. Uiliser le bouton Parcourir pour changer la liste puis cliquer sur Suivant.'), -1, (20, 79, 247, 20), 1342177280], [130, _("Astuce : si vous utilisez des r\xe8gles d'aiguillage de messages, vous devriez ajouter les dossiers destination \xe0 la liste."), -1, (20, 51, 241, 20), 1342177280], [129, '', 1038, (20, 100, 195, 48), 1350568068]], 'IDD_WIZARD_FINISHED_TRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Bravo !'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes s'est entra\xeen\xe9 et est maintenant param\xe9tr\xe9. Les premiers r\xe9sultats sont observables d\xe8s maintenant !"), 1035, (20, 35, 247, 26), 1342177280], [130, _("Bien que SpamBayes ce soit entra\xeen\xe9, il continue \xe0 apprendre. Pensez \xe0 r\xe9guli\xe8rement v\xe9rifier le contenu du dossier 'Douteux', et utilisez les boutons 'C'est du spam' et 'Ce n'est pas du spam'."), -1, (20, 68, 249, 30), 1342177280], [130, _("Cliquer sur Fin pour fermer l'assistant."), -1, (20, 104, 148, 9), 1342177280]], 'IDD_WIZARD_FOLDERS_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Parcourir...'), 1004, (208, 49, 60, 15), 1342177280], [130, _('Entra\xeenement'), -1, (20, 4, 247, 10), 1342177280], [130, _('S\xe9lectionner les dossiers contenant les messages pr\xe9-tri\xe9s, un pour les spams et un pour les bons messages.'), -1, (20, 16, 243, 16), 1342177280], [129, '', 1083, (20, 49, 179, 14), 1350568064], [130, _('Des exemples de messages spams ou ind\xe9sirables figurent dans le dossier'), -1, (20, 71, 198, 8), 1342177280], [129, '', 1027, (20, 81, 177, 14), 1350568064], [130, _('Des exemples de bons messages figurent dans le dossier'), -1, (20, 38, 153, 8), 1342177280], [128, _('Parcourir...'), 1005, (208, 81, 60, 15), 1342177280], [130, _("Si vous n'avez pas de messages pr\xe9-tri\xe9s ou que vous avez d\xe9j\xe0 pratiqu\xe9 l'entra\xeenement ou voulez garder la base, cliquer sur Pr\xe9c\xe9dent et choisissez l'option 'Je n'ai rien pr\xe9par\xe9 du tout'."), -1, (20, 128, 243, 26), 1342177280], [128, _("Attribuer une note aux messages lorsque l'entra\xeenement est termin\xe9."), 1008, (20, 108, 163, 16), 1342242819]], 'IDD_WIZARD_TRAIN': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Entra\xeenement'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes s'entra\xeene sur vos bons messages et sur les spams."), -1, (20, 22, 247, 16), 1342177280], ['msctls_progress32', '', 1000, (20, 45, 255, 11), 1350565888], [130, _('(progress text)'), 1001, (20, 61, 257, 10), 1342177280]], 'IDD_WIZARD_FINISHED_TRAIN_LATER': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Param\xe9trage abandonn\xe9'), -1, (20, 4, 247, 14), 1342177280], [130, _("Pour effectuer l'entra\xeenement initial, vous devriez cr\xe9er deux dossiers, un contenant de bons messages et un autre des messages non sollicit\xe9s."), -1, (20, 17, 247, 27), 1342177280], [130, _("Cliquer sur Fin pour quitter l'assistant."), -1, (20, 145, 148, 9), 1342177280], [130, _("Pour des exemples de bons messages, vous pouvez utiliser votre 'Bo\xeete de r\xe9ception' mais vous evez \xeatre S\xdbR qu'elle ne contient aucun message non sollicit\xe9"), -1, (20, 42, 247, 26), 1342177280], [130, _('Si faire ce tri \xe9tait trop fastidieux, cr\xe9ez simplement un dossier temporaire en mettant quelques messages en exemple.'), -1, (20, 58, 247, 17), 1342177280], [130, _("Pour des exemples de messages non sollicit\xe9s vous pouvez utiliser le dossier 'El\xe9ments supprim\xe9s'. Si faire ce tri \xe9tait trop fastidieux, cr\xe9ez simplement un dossier temporaire en mettant quelques messages en exemple."), -1, (20, 80, 247, 35), 1342177280], [130, _("Lorsque vous aurez termin\xe9, ouvrez le SpamBayes Manager via la barre d'outil SpamBayes, et red\xe9marrez l'assistant."), -1, (20, 121, 245, 17), 1342177280]], 'IDD_FOLDER_SELECTOR': [[_('Dialog'), (0, 0, 253, 215), -1865940800, None, (8, 'Tahoma')], [130, _('&Dossiers :'), -1, (7, 7, 47, 9), 1342177280], ['SysTreeView32', '', 1040, (7, 21, 172, 140), 1350631735], [128, _('(sub)'), 1041, (7, 167, 126, 9), 1342242819], [130, _('(status1)'), 1043, (7, 180, 220, 9), 1342177280], [130, _('(status2)'), 1044, (7, 194, 220, 9), 1342177280], [128, _('OK'), 1, (190, 21, 57, 14), 1342177281], [128, _('Annuler'), 2, (190, 39, 57, 14), 1342177280], [128, _('&Tout effacer'), 1042, (190, 58, 57, 14), 1342177280], [128, _('&Nouveau dossier'), 1046, (190, 77, 58, 14), 1342177280]], 'IDD_STATISTICS': [[_('Statistiques'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('Statistiques'), -1, (7, 3, 241, 229), 1342177287], [130, _('some stats\\nand some more\\nline 3\\nline 4\\nline 5'), 1095, (12, 12, 230, 204), 1342177280], [128, _('Remise \xe0 0 des statistiques'), 1096, (156, 238, 92, 14), 1342177280], [130, _('Derni\xe8re remise \xe0 0 :'), -1, (7, 241, 36, 8), 1342177280], [130, _('<<>>'), 1097, (47, 241, 107, 8), 1342177280]], 'IDD_ADVANCED': [[_('Avanc\xe9'), (0, 0, 248, 257), 1355284672, 1024, (8, 'Tahoma')], [128, _('D\xe9lais de filtrage'), -1, (7, 3, 234, 117), 1342177287], ['msctls_trackbar32', '', 1056, (16, 36, 148, 22), 1342242821], [130, _('D\xe9lai avant filtrage'), -1, (16, 26, 101, 8), 1342177280], [129, '', 1057, (165, 39, 40, 14), 1350566016], [130, _('secondes'), -1, (208, 41, 28, 8), 1342177280], ['msctls_trackbar32', '', 1058, (16, 73, 148, 22), 1342242821], [130, _('D\xe9lai de filtrage entre deux messages'), -1, (16, 62, 142, 8), 1342177280], [129, '', 1059, (165, 79, 40, 14), 1350566016], [130, _('secondes'), -1, (207, 82, 28, 8), 1342177280], [128, _('Seulement pour les dossiers qui re\xe7oivent de nouveaux messages'), 1060, (16, 100, 217, 10), 1342242819], [128, _('Afficher le r\xe9pertoire de donn\xe9es'), 1071, (7, 238, 111, 14), 1342177280], [128, _('Activer le filtrage en t\xe2che de fond'), 1091, (16, 12, 162, 10), 1342242819], [128, _('Diagnostiques...'), 1080, (171, 238, 70, 14), 1342177280]], 'IDD_WIZARD_FINISHED_UNCONFIGURED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Annulation du param\xe9trage'), -1, (20, 4, 247, 14), 1342177280], [130, _("L'\xe9cran principal de SpamBayes va maintenant \xeatre affich\xe9. Vous devez d\xe9finir les dossiers et activer SpamBayes pour commencer \xe0 filtrer les messages."), -1, (20, 29, 247, 16), 1342177280], [130, _("Cliquer sur Fin pour quitter l'assistant."), -1, (20, 139, 148, 9), 1342177280]], 'IDD_WIZARD_WELCOME': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _("Bienvenue dans l'assistant de param\xe9trage de SpamBayes"), -1, (20, 4, 191, 14), 1342177280], [130, _('Cet assistant va vous guider dans le param\xe9trage du module SpamBayes pour Outlook. Merci de pr\xe9ciser o\xf9 vous en \xeates pour le param\xe9trage.'), -1, (20, 20, 255, 18), 1342177280], [128, _("Je n'ai rien pr\xe9par\xe9 du tout pour SpamBayes."), 1081, (20, 42, 190, 11), 1342309385], [128, _("J'ai d\xe9j\xe0 filtr\xe9 les bon messages (ham) et les mauvais (spam) dans des dossiers s\xe9par\xe9s adapt\xe9s \xe0 l'entra\xeenement."), -1, (20, 59, 255, 18), 1342186505], [128, _('Je pr\xe9f\xe8re me d\xe9brouiller tout seul pour configurer SpamBayes.'), -1, (20, 82, 187, 12), 1342178313], [130, _("Pour plus d'informations sur l'entra\xeenement et le param\xe9trage de SpamBayes, cliquer sur le bouton A propos."), -1, (20, 103, 185, 26), 1342177280], [128, _('A propos...'), 1017, (215, 104, 60, 15), 1342177280], [130, _("Si vous quittez l'assistant, vous pouvez le relancer \xe0 partir du SpamBayes Manager, disponible sur la barre d'outil SpamBayes."), -1, (20, 137, 232, 17), 1342177280]], 'IDD_FILTER_NOW': [[_('Filtrer maintenant'), (0, 0, 244, 185), -1865940928, 1024, (8, 'Tahoma')], [130, _('Filtrer les dossiers suivants'), -1, (8, 9, 168, 11), 1342177280], [130, _('Dossiers...\\nLine 2'), 1036, (7, 20, 172, 12), 1342181900], [128, _('Parcourir...'), 1037, (187, 19, 50, 14), 1342177280], [128, _('Filtres et actions'), -1, (7, 38, 230, 40), 1342308359], [128, _('Effectuer les actions (aiguillage du message)'), 1019, (15, 49, 126, 10), 1342373897], [128, _("Attribuer une note mais ne pas effectuer d'action"), 1018, (15, 62, 203, 10), 1342177289], [128, _('Restrendre le filtre'), -1, (7, 84, 230, 35), 1342308359], [128, _('Aux messages non lus'), 1020, (15, 94, 149, 9), 1342242819], [128, _("Aux messages qui n'ont pas eu de note attribu\xe9e"), 1021, (15, 106, 149, 9), 1342242819], ['msctls_progress32', _('Progress1'), 1000, (7, 129, 230, 11), 1350565888], [130, _('Static'), 1001, (7, 144, 227, 10), 1342177280], [128, _('D\xe9marrer le filtrage'), 1006, (7, 161, 67, 14), 1342177281], [128, _('Fermer'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 328, 156), 1354760384, 1024, (8, 'Tahoma')], [130, _("SpamBayes ne fonctionnera pas tant qu'il ne s'est pas entra\xeen\xe9."), -1, (11, 8, 312, 14), 1342177280], [128, _("A propos de l'entra\xeenement..."), 1017, (258, 135, 65, 15), 1342177280], [130, _("SpamBayes est un syst\xe8me qui apprend \xe0 reconna\xeetre les bons et les mauvais messages \xe0 partir des exemples que vous lui donnez. A la base, il ne dispose d'aucun filtres, il doit donc \xeatre entra\xeen\xe9 pour devenir effectif."), -1, (11, 21, 312, 30), 1342177280], [130, _("Pour commencer, SpamBayes va aiguiller tous vos messages dans le dossier 'Douteux'. L'entra\xeenement est simple : pour chaque message, vous sp\xe9cifiez alors s'il s'agit de spam ou non \xe0 partir des boutons 'C'est du spam' et 'Ce n'est pas du spam'. Petit \xe0 pete????ctls_progress32"), -1, (22, 61, 301, 35), 1342177280], [130, _("Cette option fermera l'assistant et vous dire comment aiguiller vos messages. Vous pourrez param\xe9trer SpamBayes et le rendre actif imm\xe9diatement sur vos messages"), -1, (22, 113, 301, 27), 1342177280], [130, _("Pour plus d'information, cliquer sur le bouton A propos de l'entra\xeenement."), -1, (11, 137, 234, 8), 1342177280], [128, _("Je veux stopper l'entra\xeenement et laisser SpamBayes apprendre sur les nouveaux messages"), 1088, (11, 50, 312, 11), 1342308361], [128, _('Je vais effectuer le pr\xe9-tri moi-m\xeame (bon / spam) et param\xe9trer SpamBayes plus tard'), 1089, (11, 98, 312, 11), 1342177289]], 'IDD_FILTER_UNSURE': [[_('Messages douteux'), (0, 0, 249, 124), 1355284672, None, (8, 'Tahoma')], [130, _("Pour \xeatre consid\xe9r\xe9 comme douteux, un message doit obtenir une note d'au moins"), -1, (12, 11, 212, 10), 1342177280], ['msctls_trackbar32', '', 1029, (12, 18, 165, 20), 1342242821], [129, '', 1030, (183, 24, 54, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (12, 38, 107, 10), 1342177280], [133, '', 1031, (12, 49, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (74, 52, 31, 10), 1342177280], [130, _('(folder name)'), 1033, (119, 49, 59, 14), 1342312972], [128, _('Pa&rcourir'), 1034, (183, 49, 50, 14), 1342177280], [128, _('Marquer les messages l&us'), 1051, (12, 70, 101, 10), 1342242819]], 'IDD_WIZARD_FINISHED_UNTRAINED': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _('Bravo !'), -1, (20, 4, 247, 14), 1342177280], [130, _('SpamBayes est maintenant param\xe9tr\xe9 et pr\xeat \xe0 filtrer sur vos messages'), -1, (20, 22, 247, 16), 1342177280], [130, _("Comme SpamBayes ne s'est pas encore entra\xeen\xe9, tous les messages vont \xeatre rang\xe9s dans le dossier Douteux (Unsure). Pour chacun des messages, vous devez cliquer soit sur 'C'est du Spam' soit sur 'Ce n'est pas du Spam'."), -1, (20, 42, 247, 27), 1342177280], [130, _("Pour acc\xe9l\xe9rer l'entra\xeenement, vous pouvez d\xe9placer manuellement tous les spams de votre 'Bo\xeete de r\xe9ception' dans le dossier 'Spam', et alors s\xe9lectionner 'Entra\xeenement' depuis le SpamBayes manager."), -1, (20, 83, 247, 31), 1342177280], [130, _("Plus le programme s'entra\xeene et plus la fiabilit\xe9 augmente. Notez qu'apr\xe8s seulement quelques messages le r\xe9sultat est \xe9tonnant."), -1, (20, 69, 247, 15), 1342177280], [130, _("Cliquer sur Fin pour sortir de l'assistant."), -1, (20, 121, 148, 9), 1342177280]], 'IDD_GENERAL': [[_('General'), (0, 0, 253, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('SpamBayes Version'), 1009, (6, 54, 242, 8), 1342177280], [130, _("SpamBayes a besoin de s'entra\xeener avant d'\xeatre activ\xe9. Cliquer sur l'onglet 'Entra\xeenement', ou utilisez l'assistant en vous laissant guider."), -1, (6, 67, 242, 17), 1342177280], [130, _("Status de la base d'entra\xeenement :"), -1, (6, 90, 222, 8), 1342177280], [130, _('123 spams ; 456 bons messages\\r\\nLine2\\r\\nLine3'), 1035, (6, 101, 242, 27), 1342181376], [128, _('Activer SpamBayes'), 1013, (6, 221, 97, 11), 1342242819], [130, _('Les messages classifi\xe9s comme spam sont aiguill\xe9s dans le dossier Folder1\\nLes messages douteux sont \xe9galement aiguill\xe9s'), 1014, (6, 146, 242, 67), 1342181376], [128, _('Revenir au param\xe9trage initial...'), 1073, (6, 238, 109, 14), 1342177280], [128, _('Assistant...'), 1070, (142, 238, 106, 15), 1342177280], [130, _('Status des filtres :'), -1, (6, 135, 222, 8), 1342177280], [130, '1062', 1063, (0, 2, 275, 52), 1342179342]], 'IDD_FILTER': [[_('Filtrage'), (0, 0, 249, 257), 1355284672, 1024, (8, 'Tahoma')], [130, _('Filtrer les dossiers suivant lors de la r\xe9ception de nouveaux messages'), -1, (8, 4, 168, 11), 1342177280], [130, _('Dossiers...\\nLine 2'), 1038, (7, 16, 177, 12), 1342312972], [128, _('Parcourir...'), 1039, (192, 14, 50, 14), 1342177280], [128, _('Spam s\xfbr'), -1, (7, 33, 235, 80), 1342177287], [130, _("Pour \xeatre consid\xe9r\xe9 comme un spam, un message doit obtenir une note d'au moins"), -1, (13, 42, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1023, (13, 52, 165, 22), 1342242821], [129, '', 1024, (184, 53, 51, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (13, 72, 107, 10), 1342177280], [133, '', 1025, (12, 83, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (71, 85, 28, 10), 1342177280], [130, _('Folder names...'), 1027, (102, 83, 77, 14), 1342312972], [128, _('&Parcourir'), 1028, (184, 83, 50, 14), 1342177280], [128, _('Message douteux'), -1, (6, 117, 235, 81), 1342177287], [130, _("Pour \xeatre consid\xe9r\xe9 comme douteux, un message doit obtenir une note d'au moins"), -1, (12, 128, 212, 10), 1342177280], ['msctls_trackbar32', _('Slider1'), 1029, (12, 135, 165, 20), 1342242821], [129, '', 1030, (183, 141, 54, 14), 1350566016], [130, _('et ces messages doivent \xeatre :'), -1, (12, 155, 107, 10), 1342177280], [133, '', 1031, (12, 166, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (71, 169, 48, 8), 1342177280], [130, _('(folder name)'), 1033, (122, 166, 57, 14), 1342312972], [128, _('P&arcourir'), 1034, (184, 166, 50, 14), 1342177280], [128, _('Marquer les spams comme lus'), 1047, (13, 100, 81, 10), 1342242819], [128, _('Marquer les messages douteux comme lus'), 1051, (12, 186, 101, 10), 1342242819], [128, _('Bons messages'), -1, (6, 203, 235, 48), 1342177287], [130, _('Ces messages doivent \xeatre :'), -1, (12, 215, 107, 10), 1342177280], [133, '', 1032, (12, 228, 55, 40), 1344339971], [130, _('dans le dossier'), -1, (71, 230, 48, 8), 1342177280], [130, _('(folder name)'), 1083, (122, 228, 57, 14), 1342312972], [128, _('Pa&rcourir...'), 1004, (184, 228, 50, 14), 1342177280]], 'IDD_NOTIFICATIONS': [[_('Notifications'), (0, 0, 248, 257), 1354760256, None, (8, 'Tahoma')], [128, _('New Mail Sounds'), -1, (7, 3, 241, 229), 1342177287], [128, _('Enable new mail notification sounds'), 1098, (14, 17, 129, 10), 1342242819], [130, _('Good sound:'), -1, (14, 31, 42, 8), 1342177280], [129, '', 1094, (14, 40, 174, 14), 1350566016], [128, _('Browse...'), 1101, (192, 40, 50, 14), 1342177280], [130, _('Unsure sound:'), -1, (14, 58, 48, 8), 1342177280], [129, '', 1095, (14, 67, 174, 14), 1350566016], [128, _('Browse...'), 1102, (192, 67, 50, 14), 1342177280], [130, _('Spam sound:'), -1, (14, 85, 42, 8), 1342177280], [129, '', 1096, (14, 94, 174, 14), 1350566016], [128, _('Browse...'), 1103, (192, 94, 50, 14), 1342177280], [130, _('Time to wait for additional messages:'), -1, (14, 116, 142, 8), 1342177280], ['msctls_trackbar32', '', 1099, (14, 127, 148, 22), 1342242821], [129, '', 1100, (163, 133, 40, 14), 1350566016], [130, _('seconds'), -1, (205, 136, 28, 8), 1342177280]], 'IDD_WIZARD_FOLDERS_REST': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [128, _('Parcourir...'), 1005, (208, 85, 60, 15), 1342177280], [130, _('Dossiers Spam et Douteux'), -1, (20, 4, 247, 14), 1342177280], [130, _("SpamBayes utilise deux dossiers pour g\xe9rer le spam. Un dossier 's\xfbr' pour stocker le spam et un dossier 'douteux' qu'il vous faudra aiguiller manuellement."), -1, (20, 20, 247, 22), 1342177280], [130, _("Si vous entrez un nom de dossier qui n'existe pas, il va \xeatre cr\xe9\xe9 automatiquement. Pour choisir un dossier existant, cliquer sur Parcourir."), -1, (20, 44, 243, 24), 1342177280], [129, '', 1027, (20, 85, 179, 14), 1350566016], [130, _('Les messages douteux vont \xeatre rang\xe9s dans le dossier nomm\xe9'), -1, (20, 105, 186, 12), 1342177280], [129, '', 1033, (20, 117, 177, 14), 1350566016], [130, _('Les messages spam vont \xeatre rang\xe9s dans le dossier nomm\xe9'), -1, (20, 72, 137, 8), 1342177280], [128, _('Parcourir...'), 1034, (208, 117, 60, 15), 1342177280]]} ! ids = {'IDC_DELAY1_SLIDER': 1056, 'IDC_PROGRESS': 1000, 'IDD_MANAGER': 101, 'IDD_DIAGNOSTIC': 113, 'IDD_TRAINING': 102, 'IDC_DELAY2_TEXT': 1059, 'IDC_DELAY1_TEXT': 1057, 'IDD_WIZARD': 114, 'IDC_BROWSE_SPAM_SOUND': 1103, 'IDC_STATIC_HAM': 1002, 'IDC_PROGRESS_TEXT': 1001, 'IDD_GENERAL': 108, 'IDC_BROWSE_UNSURE_SOUND': 1102, 'IDC_TAB': 1068, 'IDC_FOLDER_UNSURE': 1033, 'IDC_VERBOSE_LOG': 1061, 'IDC_EDIT1': 1094, 'IDC_BROWSE': 1037, 'IDC_BACK_BTN': 1069, 'IDD_WIZARD_FINISHED_UNCONFIGURED': 119, 'IDC_ACTION_CERTAIN': 1025, 'IDC_BUT_ACT_ALL': 1019, 'IDD_FILTER_NOW': 104, 'IDC_BROWSE_HAM_SOUND': 1101, 'IDC_MARK_SPAM_AS_READ': 1047, 'IDC_RECOVER_RS': 1075, 'IDC_STATIC': -1, 'IDC_PAGE_PLACEHOLDER': 1078, 'IDC_BROWSE_WATCH': 1039, 'IDC_ACCUMULATE_DELAY_TEXT': 1100, 'IDC_FOLDER_HAM': 1083, 'IDD_WIZARD_FOLDERS_REST': 117, 'IDC_SHOW_DATA_FOLDER': 1071, 'IDC_BUT_ACT_SCORE': 1018, '_APS_NEXT_RESOURCE_VALUE': 129, '_APS_NEXT_SYMED_VALUE': 101, 'IDC_SLIDER_CERTAIN': 1023, 'IDC_BUT_UNREAD': 1020, 'IDC_BUT_ABOUT': 1017, 'IDC_BUT_RESCORE': 1008, 'IDC_BUT_SEARCHSUB': 1041, 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER': 1010, 'IDC_LAST_RESET_DATE': 1097, 'IDD_WIZARD_FOLDERS_TRAIN': 120, 'IDC_BUT_FILTER_ENABLE': 1013, 'IDC_ABOUT_BTN': 1072, 'IDD_WIZARD_FINISHED_TRAINED': 122, 'IDD_FOLDER_SELECTOR': 105, 'IDD_STATISTICS': 107, 'IDC_LIST_FOLDERS': 1040, 'IDB_SBWIZLOGO': 125, 'IDC_BUT_VIEW_LOG': 1093, 'IDC_STATUS2': 1044, 'IDC_STATUS1': 1043, 'IDCANCEL': 2, 'IDC_BROWSE_HAM': 1004, 'IDC_BROWSE_SPAM': 1005, 'IDD_WIZARD_FINISHED_UNTRAINED': 116, 'IDC_MARK_UNSURE_AS_READ': 1051, 'IDC_BROWSE_HAM_SOUND2': 1103, 'IDC_BUT_WIZARD': 1070, 'IDC_VERSION': 1009, 'IDC_FOLDER_NAMES': 1036, 'IDC_BUT_TIMER_ENABLED': 1091, 'IDC_SLIDER_UNSURE': 1029, 'IDC_BUT_NEW': 1046, 'IDC_FOLDER_WATCH': 1038, 'IDC_BUT_UNTRAINED': 1088, 'IDC_STATIC_SPAM': 1003, 'IDC_EDIT_UNSURE': 1030, 'IDC_BUT_CLEARALL': 1042, 'IDC_BUT_UNSEEN': 1021, 'IDD_WIZARD_FOLDERS_WATCH': 118, 'IDC_HAM_SOUND': 1094, 'IDC_EDIT_CERTAIN': 1024, 'IDC_BUT_FILTER_DEFINE': 1016, 'IDC_FORWARD_BTN': 1077, '_APS_NEXT_CONTROL_VALUE': 1102, 'IDC_INBOX_TIMER_ONLY': 1060, 'IDD_ADVANCED': 106, 'IDC_WIZ_GRAPHIC': 1092, 'IDD_FILTER_UNSURE': 40002, 'IDC_DEL_SPAM_RS': 1074, 'IDB_FOLDERS': 127, 'IDC_BUT_PREPARATION': 1081, 'IDC_DELAY2_SLIDER': 1058, 'IDC_ACCUMULATE_DELAY_SLIDER': 1099, 'IDC_SAVE_SPAM_SCORE': 1048, 'IDC_FOLDER_CERTAIN': 1027, 'IDB_SBLOGO': 1062, 'IDC_BROWSE_UNSURE': 1034, 'IDC_STATISTICS': 1095, 'IDC_BUT_RESET_STATS': 1096, 'IDC_BUT_TRAIN_TO_SPAM_FOLDER': 1011, 'IDD_FILTER_SPAM': 110, 'IDC_BUT_RESET': 1073, 'IDD_NOTIFICATIONS': 128, 'IDC_ACTION_UNSURE': 1031, 'IDD_WIZARD_TRAIN': 121, 'IDD_WIZARD_FINISHED_TRAIN_LATER': 124, 'IDC_ACTION_HAM': 1032, 'IDC_BUT_REBUILD': 1007, '_APS_NEXT_COMMAND_VALUE': 40001, 'IDC_ENABLE_SOUNDS': 1098, 'IDC_SPAM_SOUND': 1096, 'IDC_UNSURE_SOUND': 1095, 'IDD_WIZARD_TRAINING_IS_IMPORTANT': 123, 'IDC_TRAINING_STATUS': 1035, 'IDD_WIZARD_WELCOME': 115, 'IDC_BUT_TRAIN': 1089, 'IDC_START': 1006, 'IDD_FILTER': 103, 'IDC_LOGO_GRAPHIC': 1063, 'IDC_FILTER_STATUS': 1014, 'IDOK': 1, 'IDC_BROWSE_CERTAIN': 1028, 'IDC_BUT_SHOW_DIAGNOSTICS': 1080, 'IDC_BUT_TRAIN_NOW': 1012} ! names = {1024: 'IDC_EDIT_CERTAIN', 1: 'IDOK', 2: 'IDCANCEL', 1027: 'IDC_FOLDER_CERTAIN', 1028: 'IDC_BROWSE_CERTAIN', 1029: 'IDC_SLIDER_UNSURE', 1030: 'IDC_EDIT_UNSURE', 1031: 'IDC_ACTION_UNSURE', 1032: 'IDC_ACTION_HAM', 1033: 'IDC_FOLDER_UNSURE', 1034: 'IDC_BROWSE_UNSURE', 1035: 'IDC_TRAINING_STATUS', 1036: 'IDC_FOLDER_NAMES', 1037: 'IDC_BROWSE', 1038: 'IDC_FOLDER_WATCH', 1039: 'IDC_BROWSE_WATCH', 1040: 'IDC_LIST_FOLDERS', 1041: 'IDC_BUT_SEARCHSUB', 1042: 'IDC_BUT_CLEARALL', 1043: 'IDC_STATUS1', 1044: 'IDC_STATUS2', 1046: 'IDC_BUT_NEW', 1047: 'IDC_MARK_SPAM_AS_READ', 1048: 'IDC_SAVE_SPAM_SCORE', 1051: 'IDC_MARK_UNSURE_AS_READ', 1056: 'IDC_DELAY1_SLIDER', 1057: 'IDC_DELAY1_TEXT', 1058: 'IDC_DELAY2_SLIDER', 1059: 'IDC_DELAY2_TEXT', 1060: 'IDC_INBOX_TIMER_ONLY', 1061: 'IDC_VERBOSE_LOG', 1062: 'IDB_SBLOGO', 1063: 'IDC_LOGO_GRAPHIC', 1068: 'IDC_TAB', 1069: 'IDC_BACK_BTN', 1070: 'IDC_BUT_WIZARD', 1071: 'IDC_SHOW_DATA_FOLDER', 1072: 'IDC_ABOUT_BTN', 1073: 'IDC_BUT_RESET', 1074: 'IDC_DEL_SPAM_RS', 1075: 'IDC_RECOVER_RS', 1077: 'IDC_FORWARD_BTN', 1078: 'IDC_PAGE_PLACEHOLDER', 1080: 'IDC_BUT_SHOW_DIAGNOSTICS', 1081: 'IDC_BUT_PREPARATION', 1083: 'IDC_FOLDER_HAM', 1088: 'IDC_BUT_UNTRAINED', 1089: 'IDC_BUT_TRAIN', 40002: 'IDD_FILTER_UNSURE', 1091: 'IDC_BUT_TIMER_ENABLED', 1025: 'IDC_ACTION_CERTAIN', 1093: 'IDC_BUT_VIEW_LOG', 1094: 'IDC_EDIT1', 1095: 'IDC_STATISTICS', 1096: 'IDC_BUT_RESET_STATS', 1097: 'IDC_LAST_RESET_DATE', 1098: 'IDC_ENABLE_SOUNDS', 1099: 'IDC_ACCUMULATE_DELAY_SLIDER', 1100: 'IDC_ACCUMULATE_DELAY_TEXT', 1101: 'IDC_BROWSE_HAM_SOUND', 1102: 'IDC_BROWSE_UNSURE_SOUND', 1103: 'IDC_BROWSE_HAM_SOUND2', 101: 'IDD_MANAGER', 102: 'IDD_TRAINING', 103: 'IDD_FILTER', 104: 'IDD_FILTER_NOW', 105: 'IDD_FOLDER_SELECTOR', 106: 'IDD_ADVANCED', 107: 'IDD_STATISTICS', 108: 'IDD_GENERAL', 110: 'IDD_FILTER_SPAM', 113: 'IDD_DIAGNOSTIC', 114: 'IDD_WIZARD', 115: 'IDD_WIZARD_WELCOME', 116: 'IDD_WIZARD_FINISHED_UNTRAINED', 117: 'IDD_WIZARD_FOLDERS_REST', 118: 'IDD_WIZARD_FOLDERS_WATCH', 119: 'IDD_WIZARD_FINISHED_UNCONFIGURED', 120: 'IDD_WIZARD_FOLDERS_TRAIN', 121: 'IDD_WIZARD_TRAIN', 122: 'IDD_WIZARD_FINISHED_TRAINED', 123: 'IDD_WIZARD_TRAINING_IS_IMPORTANT', 124: 'IDD_WIZARD_FINISHED_TRAIN_LATER', 125: 'IDB_SBWIZLOGO', 127: 'IDB_FOLDERS', 128: 'IDD_NOTIFICATIONS', 129: '_APS_NEXT_RESOURCE_VALUE', 40001: '_APS_NEXT_COMMAND_VALUE', 1092: 'IDC_WIZ_GRAPHIC', 1000: 'IDC_PROGRESS', 1001: 'IDC_PROGRESS_TEXT', 1002: 'IDC_STATIC_HAM', 1003: 'IDC_STATIC_SPAM', 1004: 'IDC_BROWSE_HAM', 1005: 'IDC_BROWSE_SPAM', 1006: 'IDC_START', 1007: 'IDC_BUT_REBUILD', 1008: 'IDC_BUT_RESCORE', 1009: 'IDC_VERSION', 1010: 'IDC_BUT_TRAIN_FROM_SPAM_FOLDER', 1011: 'IDC_BUT_TRAIN_TO_SPAM_FOLDER', 1012: 'IDC_BUT_TRAIN_NOW', 1013: 'IDC_BUT_FILTER_ENABLE', 1014: 'IDC_FILTER_STATUS', 1016: 'IDC_BUT_FILTER_DEFINE', 1017: 'IDC_BUT_ABOUT', 1018: 'IDC_BUT_ACT_SCORE', 1019: 'IDC_BUT_ACT_ALL', 1020: 'IDC_BUT_UNREAD', 1021: 'IDC_BUT_UNSEEN', -1: 'IDC_STATIC', 1023: 'IDC_SLIDER_CERTAIN'} bitmaps = {'IDB_SBWIZLOGO': 'sbwizlogo.bmp', 'IDB_SBLOGO': 'sblogo.bmp', 'IDB_FOLDERS': 'folders.bmp'} def ParseDialogs(s): From anadelonbrin at users.sourceforge.net Tue Mar 29 07:50:11 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 07:50:14 2005 Subject: [Spambayes-checkins] spambayes/windows pop3proxy_service.py, 1.18, 1.19 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17728/windows Modified Files: pop3proxy_service.py Log Message: Don't log to text files, but to the service log, as is appropriate. Work around a problem that occurs if thetre is a zlib.dll in the SYSTEM32 directory. When installing, create a directory for the data, unless there is already a configuration file. This directory is called "SpamBayesData" and is in the same directory as the install script. When running, if this directory exists, then use it. This is preferable behaviour for a service. Index: pop3proxy_service.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/pop3proxy_service.py,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** pop3proxy_service.py 16 Jul 2004 02:02:33 -0000 1.18 --- pop3proxy_service.py 29 Mar 2005 05:50:06 -0000 1.19 *************** *** 11,15 **** # * To remove the service: "pop3proxy_service.py remove" ! # This module is part of the spambayes project, which is Copyright 2002 # The Python Software Foundation and is covered by the Python Software # Foundation license. --- 11,15 ---- # * To remove the service: "pop3proxy_service.py remove" ! # This module is part of the spambayes project, which is Copyright 2002-4 # The Python Software Foundation and is covered by the Python Software # Foundation license. *************** *** 17,21 **** # Originally written by Mark Hammond. ! import sys, os # Messages from pop3proxy will go nowhere when executed as a service --- 17,110 ---- # Originally written by Mark Hammond. ! import os ! import sys ! import logging ! ! import servicemanager ! try: ! servicemanager.LogInfoMsg(os.getcwd()) ! servicemanager.LogInfoMsg(__file__) ! servicemanager.LogInfoMsg(sys.argv[0]) ! except: ! pass ! ! class ServiceEventLogHandler(logging.Handler): ! """Dispatches logging events to the win32 services event log. ! ! Requires pywin32. ! """ ! import servicemanager ! def emit(self, record): ! """Emit a record. ! ! If a formatter is specified, it is used to format the record. ! This record is then written to the win32 services event log, ! with the type set to the appropriate type based on the level. ! """ ! try: ! servicemgr = self.servicemanager ! level = record.levelno ! msg = self.format(record) ! if level >= logging.ERROR: ! servicemgr.LogErrorMsg(msg) ! elif level >= logging.WARNING: ! servicemgr.LogWarningMsg(msg) ! elif level >= logging.INFO: ! servicemgr.LogInfoMsg(msg) ! elif level >= logging.DEBUG: ! # What should we do with this? It's very low-level ! # to be going into the log, but then it only gets ! # added if the logger's level is set low enough. ! # For now, nothing (absorb), and reconsider this ! # when we are actually using the logging module properly. ! pass ! else: ! # Really low; just absorb these for now. ! pass ! except: ! self.handleError(record) ! ! def handleError(self, record): ! """ ! Handle errors which occur during an emit() call. ! ! sys.stderr does nowwhere, so redirect this into the event log, too. ! """ ! if raiseExceptions: ! try: ! import cStringIO as StringIO ! except ImportError: ! import StringIO ! import traceback ! ei = sys.exc_info() ! msg = StringIO.StringIO() ! traceback.print_exception(ei[0], ei[1], ei[2], None, msg) ! msg.seek(0) ! self.servicemanager.LogErrorMsg(msg) ! del ei ! ! ! class ServiceEventLogHandlerWrapper(object): ! """Pretend that the ServiceEventLogHandler is a file-like object, ! so we can use it while we don't use the proper logging module.""" ! def __init__(self, service_name, level=logging.INFO): ! self.log = ServiceEventLogHandler() ! self.name = service_name ! self.level = level ! self.data = "" ! def write(self, data): ! # This could use the higher-up stuff, but don't for now. ! # Buffer until newline. ! self.data += data ! if '\n' not in data: ! return ! # Skip blank lines ! if not self.data.strip(): ! return ! record = logging.LogRecord(self.name, self.level, "", "", ! self.data, None, None) ! self.log.emit(record) ! self.data = "" ! # Messages from pop3proxy will go nowhere when executed as a service *************** *** 28,48 **** # No console - if we are running from Python sources, # redirect to win32traceutil, but if running from a binary ! # install, redirect to a log file. # Want to move to logging module later, so for now, we # hack together a simple logging strategy. if hasattr(sys, "frozen"): ! temp_dir = win32api.GetTempPath() ! for i in range(3,0,-1): ! try: os.unlink(os.path.join(temp_dir, "SpamBayesService%d.log" % (i+1))) ! except os.error: pass ! try: ! os.rename( ! os.path.join(temp_dir, "SpamBayesService%d.log" % i), ! os.path.join(temp_dir, "SpamBayesService%d.log" % (i+1)) ! ) ! except os.error: pass ! # Open this log, as unbuffered so crashes still get written. ! sys.stdout = open(os.path.join(temp_dir,"SpamBayesService1.log"), "wt", 0) ! sys.stderr = sys.stdout else: import win32traceutil --- 117,131 ---- # No console - if we are running from Python sources, # redirect to win32traceutil, but if running from a binary ! # install, redirect to the services event log. ! # We used to redirect to log files (in the temp folder, in ! # the form SpamBayesService%d.log), but that is apparently ! # not necessarily a good place, so we moved to the official ! # location. # Want to move to logging module later, so for now, we # hack together a simple logging strategy. if hasattr(sys, "frozen"): ! sys.stdout = ServiceEventLogHandlerWrapper("pop3proxy") ! sys.stderr = ServiceEventLogHandlerWrapper("pop3proxy", ! logging.ERROR) else: import win32traceutil *************** *** 70,76 **** sys.path.insert(0, sb_dir) sys.path.insert(-1, sb_scripts_dir) ! # and change directory here, so pop3proxy uses the default # config file etc ! os.chdir(sb_dir) # Rest of the standard Python modules we use. --- 153,180 ---- sys.path.insert(0, sb_dir) sys.path.insert(-1, sb_scripts_dir) ! # and change directory here, so sb_server uses the correct # config file etc ! # If the "SpamBayesData" directory that we create exists, change to ! # that, otherwise into the spambayes directory itself. ! if os.path.exists(os.path.join(sb_dir, "SpamBayesData")): ! os.chdir(os.path.join(sb_dir, "SpamBayesData")) ! else: ! os.chdir(sb_dir) ! ! # Fix to handle problem if there is a zlib.dll in the SYSTEM32 directory. ! # (The Python DLL directory must come before that in sys.path) ! # This is a bit hackish, but shouldn't do any real harm. ! from win32com.shell import shell, shellcon ! sys32path = shell.SHGetFolderPath(0, shellcon.CSIDL_SYSTEM, 0, 0) ! for path in sys.path[:-1]: ! if path == sys32path: ! sys.path.remove(path) ! assert path not in sys.path, \ ! "Please remove multiple copies of windows\system32 in path" ! sys.path.append(path) # put it at the *end* ! del sys32path ! del shell ! del shellcon ! del path # Rest of the standard Python modules we use. *************** *** 115,119 **** errCode = winerror.ERROR_SERVICE_SPECIFIC_ERROR self.ReportServiceStatus(win32service.SERVICE_STOPPED, ! win32ExitCode=errCode, svcExitCode = 1) return assert not sb_server.state.launchUI, "Service can't launch a UI" --- 219,223 ---- errCode = winerror.ERROR_SERVICE_SPECIFIC_ERROR self.ReportServiceStatus(win32service.SERVICE_STOPPED, ! win32ExitCode=errCode, svcExitCode=1) return assert not sb_server.state.launchUI, "Service can't launch a UI" *************** *** 191,193 **** --- 295,309 ---- if __name__=='__main__': + if "install" in sys.argv: + # Installing the service also creates a directory (if it does not + # already exist) in which the data will be placed, unless an + # existing configuration file can be found. + from spambayes.Options import optionsPathname + if not os.path.exists(optionsPathname): + data_directory = os.path.join(os.path.dirname(sys.argv[0]), + "..", "SpamBayesData") + data_directory = os.path.abspath(data_directory) + if not os.path.exists(data_directory): + print "Creating data directory at", data_directory + os.makedirs(data_directory) win32serviceutil.HandleCommandLine(Service) From anadelonbrin at users.sourceforge.net Tue Mar 29 07:59:29 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 07:59:32 2005 Subject: [Spambayes-checkins] spambayes/windows pop3proxy_tray.py,1.23,1.24 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23547/windows Modified Files: pop3proxy_tray.py Log Message: Add Help menuitem, which at the moment just opens up the troubleshooting guide. Index: pop3proxy_tray.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/pop3proxy_tray.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** pop3proxy_tray.py 23 Dec 2004 18:14:33 -0000 1.23 --- pop3proxy_tray.py 29 Mar 2005 05:59:25 -0000 1.24 *************** *** 137,140 **** --- 137,145 ---- 1029 : ("Check for latest version", self.CheckVersion), 1030 : ("-", None), + # This could become a submenu, like the Outlook plug-in has, at + # some point, if necessary. For the moment, the only help is a + # simple troubleshooting guide, so we'll just open that. + 1031 : ("Help", self.GetHelp), + 1032 : ("-", None), 1099 : ("Exit SpamBayes", self.OnExit), } *************** *** 505,508 **** --- 510,542 ---- self.ShowMessage("SpamBayes is not running.") + def GetHelp(self): + # We don't need to be running for this. + self.ShowHTML("troubleshooting.html") + + def ShowHTML(self, url): + """Displays the main SpamBayes documentation in your Web browser""" + # Stolen from Outlook's Manager.py + import sys, os, urllib + if urllib.splittype(url)[0] is None: # just a file spec + if hasattr(sys, "frozen"): + # New binary is in ../docs/sb_server relative to executable. + fname = os.path.join(os.path.dirname(sys.argv[0]), + "..", "docs", "sb_server", url) + if not os.path.isfile(fname): + # Still support same directory as to the executable. + fname = os.path.join(os.path.dirname(sys.argv[0]), url) + else: + # ../windows/docs dir + fname = os.path.join(os.path.dirname(__file__), "docs", url) + fname = os.path.abspath(fname) + if not os.path.isfile(fname): + self.ShowMessage("Can't find "+url) + return + url = fname + # else assume it is valid! + SetWaitCursor(1) + os.startfile(url) + SetWaitCursor(0) + def CheckVersion(self): # Stolen, with few modifications, from addin.py From anadelonbrin at users.sourceforge.net Tue Mar 29 08:57:32 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 08:57:36 2005 Subject: [Spambayes-checkins] spambayes/windows spambayes.iss,1.20,1.21 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21528/windows Modified Files: spambayes.iss Log Message: Optionally install imapfilter. Optionally install the plug-in for all users. Use a custom tasks page to handle the more complicated tasks we have now. Index: spambayes.iss =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** spambayes.iss 31 Jan 2005 22:21:34 -0000 1.20 --- spambayes.iss 29 Mar 2005 06:57:29 -0000 1.21 *************** *** 22,25 **** --- 22,27 ---- Source: "py2exe\dist\lib\*.*"; DestDir: "{app}\lib"; Flags: ignoreversion Source: "py2exe\dist\bin\python24.dll"; DestDir: "{app}\bin"; Flags: ignoreversion + ; Needed when built with Python 2.4. This must be manually copied to this directory + ; from wherever it is being sourced from. ; Source: "py2exe\dist\bin\msvcr71.dll"; DestDir: "{app}\bin"; Flags: ignoreversion *************** *** 41,44 **** --- 43,48 ---- Source: "py2exe\dist\docs\sb_server\*.*"; DestDir: "{app}\docs\sb_server"; Check: InstallingProxy; Flags: recursesubdirs + Source: "py2exe\dist\bin\sb_imapfilter.exe"; DestDir: "{app}\bin"; Check: InstallingIMAP; Flags: ignoreversion + ; There is a problem attempting to get Inno to unregister our DLL. If we mark our DLL ; as 'regserver', it installs and registers OK, but at uninstall time, it unregisters *************** *** 53,63 **** ; a special case for that). We do both a single-user registration and then the all-user, because ; that keeps the script much simpler, and it doesn't do any harm. ! ;Filename: "{app}\bin\outlook_addin_register.exe"; Parameters: "HKEY_LOCAL_MACHINE"; StatusMsg: "Registering Outlook Addin for all users"; Check: OutlookAllUsers; [UninstallRun] ! Filename: "{app}\bin\outlook_addin_register.exe"; Parameters: "--unregister"; StatusMsg: "Unregistering Outlook Addin";Check: InstallingOutlook; ! ! [Tasks] ! Name: startup; Description: "Execute SpamBayes each time Windows starts"; ! Name: desktop; Description: "Add an icon to the desktop"; Flags: unchecked; [Run] --- 57,63 ---- ; a special case for that). We do both a single-user registration and then the all-user, because ; that keeps the script much simpler, and it doesn't do any harm. ! Filename: "{app}\bin\outlook_addin_register.exe"; Parameters: "HKEY_LOCAL_MACHINE"; StatusMsg: "Registering Outlook Addin for all users"; Check: InstallOutlookAllUsers; [UninstallRun] ! Filename: "{app}\bin\outlook_addin_register.exe"; Parameters: "--unregister"; StatusMsg: "Unregistering Outlook Addin"; Check: InstallingOutlook; [Run] *************** *** 65,76 **** [Icons] ! Name: "{group}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: InstallingProxy ! Name: "{userdesktop}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: InstallingProxy; Tasks: desktop ! Name: "{userstartup}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: InstallingProxy; Tasks: startup Name: "{group}\About SpamBayes"; Filename: "{app}\docs\sb_server\readme_proxy.html"; Check: InstallingProxy; Name: "{group}\Troubleshooting Guide"; Filename: "{app}\docs\sb_server\troubleshooting.html"; Check: InstallingProxy; ! Name: "{group}\SpamBayes Outlook Addin\About SpamBayes"; Filename: "{app}\docs\outlook\about.html"; Check: InstallingOutlook ! Name: "{group}\SpamBayes Outlook Addin\Troubleshooting Guide"; Filename: "{app}\docs\outlook\docs\troubleshooting.html"; Check: InstallingOutlook [UninstallDelete] --- 65,79 ---- [Icons] ! Name: "{group}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: InstallingProxy; ! Name: "{userdesktop}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: DesktopIcon; ! Name: "{userstartup}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: StartupProxy; Name: "{group}\About SpamBayes"; Filename: "{app}\docs\sb_server\readme_proxy.html"; Check: InstallingProxy; Name: "{group}\Troubleshooting Guide"; Filename: "{app}\docs\sb_server\troubleshooting.html"; Check: InstallingProxy; ! Name: "{group}\SpamBayes IMAP Filter Web Interface"; Filename: "{app}\sb_imapfilter.exe"; Parameters: "-b"; Check: InstallingIMAP; ! Name: "{userstartup}\SpamBayes IMAP Filter"; Filename: "{app}\bin\sb_imapfilter.exe"; Parameters: "-c -t"; Check: StartupIMAP; ! ! Name: "{group}\SpamBayes Outlook Addin\About SpamBayes"; Filename: "{app}\docs\outlook\about.html"; Check: InstallingOutlook; ! Name: "{group}\SpamBayes Outlook Addin\Troubleshooting Guide"; Filename: "{app}\docs\outlook\docs\troubleshooting.html"; Check: InstallingOutlook; [UninstallDelete] *************** *** 78,83 **** [Code] var ! InstallOutlook, InstallProxy: Boolean; WarnedNoOutlook, WarnedBoth : Boolean; function InstallingOutlook() : Boolean; --- 81,87 ---- [Code] var ! InstallOutlook, InstallProxy, InstallIMAP: Boolean; WarnedNoOutlook, WarnedBoth : Boolean; + startup, desktop, allusers, startup_imap : Boolean; // Tasks function InstallingOutlook() : Boolean; *************** *** 89,92 **** --- 93,117 ---- Result := InstallProxy; end; + function InstallingIMAP() : Boolean; + begin + Result := InstallIMAP; + end; + + function StartupProxy() : Boolean; + begin + Result := startup; + end; + function DesktopIcon() : Boolean; + begin + Result := desktop; + end; + function InstallOutlookAllUsers() : Boolean; + begin + Result := allusers; + end; + function StartupIMAP() : Boolean; + begin + Result := startup_imap; + end; function IsOutlookInstalled() : Boolean; *************** *** 139,159 **** if IsOutlookInstalled() then begin InstallOutlook := True; ! InstallProxy := False end else begin InstallOutlook := False; InstallProxy := True; end; end; // Inno has a pretty primitive "Components/Tasks" concept that ! // doesn't quite fit what we want - so we create a custom wizard page. var ComponentsPage: TInputOptionWizardPage; procedure InitializeWizard; begin ! { Create the pages } ComponentsPage := CreateInputOptionPage(wpWelcome, --- 164,191 ---- if IsOutlookInstalled() then begin InstallOutlook := True; ! InstallProxy := False; ! InstallIMAP := False; end else begin InstallOutlook := False; InstallProxy := True; + InstallIMAP := False; end; + startup := False; + desktop := False; + allusers := False; + startup_imap := False; end; // Inno has a pretty primitive "Components/Tasks" concept that ! // doesn't quite fit what we want - so we create custom wizard pages. var ComponentsPage: TInputOptionWizardPage; + TasksPage: TInputOptionWizardPage; procedure InitializeWizard; begin ! { Create the Components page } ComponentsPage := CreateInputOptionPage(wpWelcome, *************** *** 167,170 **** --- 199,203 ---- ComponentsPage.Add('Microsoft Outlook Addin (Outlook does not appear to be installed)'); ComponentsPage.Add('Server/Proxy Application, for all other POP based mail clients, including Outlook Express'); + ComponentsPage.Add('IMAP Filter Application, for all other IMAP based mail clients'); { Set default values based on whether or not Outlook is installed. } *************** *** 172,181 **** if InstallOutlook then ComponentsPage.Values[0] := True else ComponentsPage.Values[0] := False; if InstallProxy then ComponentsPage.Values[1] := True else ComponentsPage.Values[1] := False; ! end; ! function ShouldSkipPage(PageID: Integer): Boolean; ! begin ! { Skip pages that shouldn't be shown } ! Result := (PageID = wpSelectTasks) and (not InstallProxy); end; --- 205,216 ---- if InstallOutlook then ComponentsPage.Values[0] := True else ComponentsPage.Values[0] := False; if InstallProxy then ComponentsPage.Values[1] := True else ComponentsPage.Values[1] := False; ! if InstallIMAP then ComponentsPage.Values[2] := True else ComponentsPage.Values[2] := False; ! { Create the Tasks page. Note that this is empty and gets replaced later. } ! TasksPage := CreateInputOptionPage(ComponentsPage.ID, ! 'Select additional tasks', ! 'Which additional tasks should be performed?', ! 'Select the components you would like Setup to perform while installing SpamBayes, then click Next.', ! False, False); end; *************** *** 185,191 **** --- 220,243 ---- begin { Validate certain pages before allowing the user to proceed } + if CurPageID = TasksPage.ID then begin + I := 0; + if InstallOutlook then begin + allusers := TasksPage.Values[I]; + I := I + 1; + end; + if InstallProxy then begin + startup := TasksPage.Values[I]; + desktop := TasksPage.Values[I+1]; + I := I + 2; + end; + if InstallIMAP then begin + startup_imap := TasksPage.Values[I]; + I := I + 1; + end; + end; if CurPageID = ComponentsPage.ID then begin InstallOutlook := ComponentsPage.Values[0]; InstallProxy := ComponentsPage.Values[1]; + InstallIMAP := ComponentsPage.Values[2]; if InstallOutlook and not IsOutlookInstalled and not WarnedNoOutlook then begin *************** *** 201,207 **** end else Result := False; ! end else if InstallOutlook and InstallProxy and not WarnedBoth then begin if MsgBox( ! 'You have selected to install both the Outlook Addin and the Server/Proxy Applications.' + #13 + #13 + 'Unless you regularly use both Outlook and another mailer on the same system,' + #13 + 'you do not need both applications.' + #13 + #13 + --- 253,259 ---- end else Result := False; ! end else if InstallOutlook and (InstallProxy or InstallIMAP) and not WarnedBoth then begin if MsgBox( ! 'You have selected to install both the Outlook Addin and the Server/Proxy/IMAP Applications.' + #13 + #13 + 'Unless you regularly use both Outlook and another mailer on the same system,' + #13 + 'you do not need both applications.' + #13 + #13 + *************** *** 212,216 **** end else Result := False; ! end else if not InstallOutlook and not InstallProxy then begin MsgBox('You must select one of the applications.', mbError, MB_OK); Result := False; --- 264,268 ---- end else Result := False; ! end else if not InstallOutlook and not InstallProxy and not InstallIMAP then begin MsgBox('You must select one of the applications.', mbError, MB_OK); Result := False; *************** *** 218,223 **** // we got to here, we are OK. Result := True; ! end else ! Result := True; end; --- 270,291 ---- // we got to here, we are OK. Result := True; ! ! // Generate the Tasks page based on the component selections. ! TasksPage.Free(); ! TasksPage := CreateInputOptionPage(ComponentsPage.ID, ! 'Select additional tasks', ! 'Which additional tasks should be performed?', ! 'Select the components you would like Setup to perform while installing SpamBayes, then click Next.', ! False, False); ! if InstallOutlook then ! TasksPage.Add('Register add-in for all users'); ! if InstallProxy then begin ! TasksPage.Add('Execute SpamBayes each time Windows starts'); ! TasksPage.Add('Add an icon to the desktop'); ! end; ! if InstallIMAP then ! TasksPage.Add('Automatically execute IMAP filter periodically'); ! end else ! Result := True; end; *************** *** 231,239 **** if InstallOutlook then S := S + Space + 'Outlook Addin' + NewLine if InstallProxy then S := S + Space + 'Server/Proxy Application' + NewLine S := S + NewLine; S := S + MemoDirInfo + NewLine + NewLine; S := S + MemoGroupInfo + NewLine + NewLine; ! S := S + MemoTasksInfo; Result := S; --- 299,313 ---- if InstallOutlook then S := S + Space + 'Outlook Addin' + NewLine if InstallProxy then S := S + Space + 'Server/Proxy Application' + NewLine + if InstallIMAP then S := S + Space + 'IMAP Filter Application' + NewLine S := S + NewLine; S := S + MemoDirInfo + NewLine + NewLine; S := S + MemoGroupInfo + NewLine + NewLine; ! ! S := S + 'Additional Tasks:' + NewLine; ! if startup then S := S + Space + 'Run Proxy on Startup' + NewLine ! if desktop then S := S + Space + 'Install Proxy Desktop Icon' + NewLine ! if allusers then S := S + Space + 'Install Addin for all users' + NewLine ! if startup_imap then S := S + Space + 'Automatically run Filter' + NewLine Result := S; From anadelonbrin at users.sourceforge.net Tue Mar 29 09:16:48 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 09:16:51 2005 Subject: [Spambayes-checkins] spambayes/spambayes message.py,1.67,1.68 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32706/spambayes Modified Files: message.py Log Message: Expose the mange_from option for flattening message objects. Index: message.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/message.py,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** message.py 4 Jan 2005 03:06:06 -0000 1.67 --- message.py 29 Mar 2005 07:16:45 -0000 1.68 *************** *** 99,102 **** --- 99,103 ---- import email.Parser import email.Header + import email.Generator from spambayes import storage *************** *** 355,359 **** return CRLF_RE.sub('\r\n', data) ! def as_string(self, unixfrom=False): # The email package stores line endings in the "internal" Python # format ('\n'). It is up to whoever transmits that information to --- 356,360 ---- return CRLF_RE.sub('\r\n', data) ! def as_string(self, unixfrom=False, mangle_from_=True): # The email package stores line endings in the "internal" Python # format ('\n'). It is up to whoever transmits that information to *************** *** 362,367 **** # append function), but does not, so we do it here try: ! return self._force_CRLF(\ ! email.Message.Message.as_string(self, unixfrom)) except TypeError: parts = [] --- 363,370 ---- # append function), but does not, so we do it here try: ! fp = StringIO.StringIO() ! g = email.Generator.Generator(fp, mangle_from_=mangle_from_) ! g.flatten(self, unixfrom) ! return self._force_CRLF(fp.getvalue()) except TypeError: parts = [] From anadelonbrin at users.sourceforge.net Tue Mar 29 09:18:33 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Mar 29 09:18:35 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.55,1.56 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1393/scripts Modified Files: sb_imapfilter.py Log Message: Improve cram-md5 authentication. Don't mangle from lines. See also: http://mail.python.org/pipermail/spambayes/2005-February/016327.html Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** sb_imapfilter.py 29 Mar 2005 03:51:23 -0000 1.55 --- sb_imapfilter.py 29 Mar 2005 07:18:30 -0000 1.56 *************** *** 82,86 **** import time import sys - import hmac import getopt import types --- 82,85 ---- *************** *** 195,208 **** return "".join(buffer) - def authenticate_cram_md5(self, username, pwd): - """Authenticate (login) with CRAM-MD5. - - See RFC 2195 and SpamBayes patch #1169939 - """ - def cram_md5(response): - return " ".join([username, - hmac.HMAC(pwd, response).hexdigest()]) - self.authenticate('CRAM-MD5', cram_md5) - def login(self, username, pwd): """Log in to the IMAP server, catching invalid username/password.""" --- 194,197 ---- *************** *** 210,214 **** try: if 'AUTH=CRAM-MD5' in self.capabilities: ! self.authenticate_cram_md5(username, pwd) else: BaseIMAP.login(self, username, pwd) # superclass login --- 199,203 ---- try: if 'AUTH=CRAM-MD5' in self.capabilities: ! self.login_cram_md5(username, pwd) else: BaseIMAP.login(self, username, pwd) # superclass login *************** *** 586,593 **** # the case where the data was unparsable, so we haven't done any # filtering, and we are not actually a proper email.Message object. if self.invalid: return self._force_CRLF(self.invalid_content) else: ! return message.SBHeaderMessage.as_string(self, unixfrom) recent_re = re.compile(r"\\Recent ?| ?\\Recent") --- 575,585 ---- # the case where the data was unparsable, so we haven't done any # filtering, and we are not actually a proper email.Message object. + # We also don't mangle the from line; the server must take care of + # this. if self.invalid: return self._force_CRLF(self.invalid_content) else: ! return message.SBHeaderMessage.as_string(self, unixfrom, ! mangle_from_=False) recent_re = re.compile(r"\\Recent ?| ?\\Recent")