From montanaro at users.sourceforge.net Sat Jan 1 18:46:20 2005 From: montanaro at users.sourceforge.net (Skip Montanaro) Date: Sat Jan 1 18:46:23 2005 Subject: [Spambayes-checkins] spambayes/contrib tte.py,1.14,1.15 Message-ID: Update of /cvsroot/spambayes/spambayes/contrib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17459 Modified Files: tte.py Log Message: When running through the messages that haven't been kept for training, delete messages that score properly. No sense hanging onto them. Index: tte.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/contrib/tte.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** tte.py 17 Aug 2004 17:04:42 -0000 1.14 --- tte.py 1 Jan 2005 17:46:18 -0000 1.15 *************** *** 184,189 **** while True: msg = hambone.next() ! tdict[msg["message-id"]] = True ! nhamleft += 1 except StopIteration: if nhamleft: print nhamleft, "untrained hams" --- 184,191 ---- while True: msg = hambone.next() ! score = store.spamprob(tokenize(msg)) ! if score > ham_cutoff: ! tdict[msg["message-id"]] = True ! nhamleft += 1 except StopIteration: if nhamleft: print nhamleft, "untrained hams" *************** *** 193,198 **** while True: msg = spamcan.next() ! tdict[msg["message-id"]] = True ! nspamleft += 1 except StopIteration: if nspamleft: print nspamleft, "untrained spams" --- 195,202 ---- while True: msg = spamcan.next() ! score = store.spamprob(tokenize(msg)) ! if score < spam_cutoff: ! tdict[msg["message-id"]] = True ! nspamleft += 1 except StopIteration: if nspamleft: print nspamleft, "untrained spams" From anadelonbrin at users.sourceforge.net Sun Jan 2 05:50:47 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 05:50:51 2005 Subject: [Spambayes-checkins] spambayes/languages __init__.py,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26426/languages Added Files: __init__.py Log Message: This must be a package in order for the i18n importing of ui.html to work correctly. --- NEW FILE: __init__.py --- From anadelonbrin at users.sourceforge.net Sun Jan 2 05:52:36 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 05:52:38 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000 README.txt,1.13,1.14 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26692/Outlook2000 Modified Files: README.txt Log Message: Update version information. Index: README.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/README.txt,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** README.txt 26 Nov 2004 03:06:43 -0000 1.13 --- README.txt 2 Jan 2005 04:52:17 -0000 1.14 *************** *** 1,6 **** This directory contains tools for using the classifier with Microsoft ! Outlook 2000, courtesy of Sean True and Mark Hammond. Note that you need ! Python's win32com extensions (http://starship.python.net/crew/mhammond) and ! you *must* have win32all-149 or later. Note that running "setup.py install" will *not* install the contents of this --- 1,6 ---- This directory contains tools for using the classifier with Microsoft ! Outlook 2000, 2002, and 2003, courtesy of Sean True and Mark Hammond. Note ! that you need Python's win32com extensions (http://starship.python.net/crew/mhammond) ! and you *must* have win32all-149 or later. Note that running "setup.py install" will *not* install the contents of this From anadelonbrin at users.sourceforge.net Sun Jan 2 05:55:48 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 05:55:51 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/dialogs/resources rc2py.py, 1.7, 1.8 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27777/Outlook2000/dialogs/resources Modified Files: rc2py.py Log Message: Write a handler incase gettext is not available. To convert a '0' or '1' to a bool, it must be an int first. Index: rc2py.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources/rc2py.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** rc2py.py 2 Nov 2004 21:29:36 -0000 1.7 --- rc2py.py 2 Jan 2005 04:55:46 -0000 1.8 *************** *** 25,40 **** out.write("#This is a generated file. Please edit %s instead.\n" % inputFilename) out.write("_rc_size_=%d\n_rc_mtime_=%d\n" % (in_stat[stat.ST_SIZE], in_stat[stat.ST_MTIME])) out.write("class FakeParser:\n") ! out.write("\tdialogs = "+repr(rcp.dialogs)+"\n") ! out.write("\tids = "+repr(rcp.ids)+"\n") ! out.write("\tnames = "+repr(rcp.names)+"\n") ! out.write("\tbitmaps = "+repr(rcp.bitmaps)+"\n") out.write("def ParseDialogs(s):\n") ! out.write("\treturn FakeParser()\n") out.close() if __name__=="__main__": if len(sys.argv) > 3: ! convert(sys.argv[1], sys.argv[2], bool(sys.argv[3])) elif len(sys.argv) > 2: convert(sys.argv[1], sys.argv[2], True) --- 25,41 ---- out.write("#This is a generated file. Please edit %s instead.\n" % inputFilename) out.write("_rc_size_=%d\n_rc_mtime_=%d\n" % (in_stat[stat.ST_SIZE], in_stat[stat.ST_MTIME])) + out.write("try:\n _\nexcept NameError:\n def _(s):\n return s\n") out.write("class FakeParser:\n") ! out.write(" dialogs = "+repr(rcp.dialogs)+"\n") ! out.write(" ids = "+repr(rcp.ids)+"\n") ! out.write(" names = "+repr(rcp.names)+"\n") ! out.write(" bitmaps = "+repr(rcp.bitmaps)+"\n") out.write("def ParseDialogs(s):\n") ! out.write(" return FakeParser()\n") out.close() if __name__=="__main__": if len(sys.argv) > 3: ! convert(sys.argv[1], sys.argv[2], bool(int(sys.argv[3]))) elif len(sys.argv) > 2: convert(sys.argv[1], sys.argv[2], True) From anadelonbrin at users.sourceforge.net Sun Jan 2 05:56:42 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 05:56:45 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_server.py,1.38,1.39 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27911/scripts Modified Files: sb_server.py Log Message: Prepare for i18n. Index: sb_server.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_server.py,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** sb_server.py 23 Dec 2004 18:14:32 -0000 1.38 --- sb_server.py 2 Jan 2005 04:56:40 -0000 1.39 *************** *** 116,120 **** from spambayes.FileCorpus import FileCorpus, ExpiryFileCorpus from spambayes.FileCorpus import FileMessageFactory, GzipFileMessageFactory ! from spambayes.Options import options, get_pathname_option from spambayes.UserInterface import UserInterfaceServer from spambayes.ProxyUI import ProxyUserInterface --- 116,120 ---- from spambayes.FileCorpus import FileCorpus, ExpiryFileCorpus from spambayes.FileCorpus import FileMessageFactory, GzipFileMessageFactory ! from spambayes.Options import options, get_pathname_option, _ from spambayes.UserInterface import UserInterfaceServer from spambayes.ProxyUI import ProxyUserInterface *************** *** 761,782 **** big = small = None if db_ratio > 5.0: ! big = "ham" ! small = "spam" elif db_ratio < (1/5.0): ! big = "spam" ! small = "ham" ! if big is not None: ! self.warning = "Warning: you have much more %s than %s - " \ ! "SpamBayes works best with approximately even " \ ! "numbers of ham and spam." % (big, small) else: self.warning = "" elif nspam > 0 or nham > 0: ! self.warning = "Database only has %d good and %d spam - you should " \ ! "consider performing additional training." % (nham, nspam) else: ! self.warning = "Database has no training information. SpamBayes " \ ! "will classify all messages as 'unsure', " \ ! "ready for you to train." # Add an additional warning message if the user's thresholds are # truly odd. --- 761,783 ---- big = small = None if db_ratio > 5.0: ! self.warning = _("Warning: you have much more ham than " \ ! "spam - SpamBayes works best with " \ ! "approximately even numbers of ham and " \ ! "spam.") elif db_ratio < (1/5.0): ! self.warning = _("Warning: you have much more spam than " \ ! "ham - SpamBayes works best with " \ ! "approximately even numbers of ham and " \ ! "spam.") else: self.warning = "" elif nspam > 0 or nham > 0: ! self.warning = _("Database only has %d good and %d spam - " \ ! "you should consider performing additional " \ ! "training.") % (nham, nspam) else: ! self.warning = _("Database has no training information. " \ ! "SpamBayes will classify all messages as " \ ! "'unsure', ready for you to train.") # Add an additional warning message if the user's thresholds are # truly odd. *************** *** 784,796 **** ham_cut = options["Categorization", "ham_cutoff"] if spam_cut < 0.5: ! self.warning += "
Warning: we do not recommend setting " \ ! "the spam threshold less than 0.5." if ham_cut > 0.5: ! self.warning += "
Warning: we do not recommend setting " \ ! "the ham threshold greater than 0.5." if ham_cut > spam_cut: ! self.warning += "
Warning: your ham threshold is " \ ! "higher than your spam threshold. " \ ! "Results are unpredictable." def createWorkers(self): --- 785,797 ---- ham_cut = options["Categorization", "ham_cutoff"] if spam_cut < 0.5: ! self.warning += _("
Warning: we do not recommend " \ ! "setting the spam threshold less than 0.5.") if ham_cut > 0.5: ! self.warning += _("
Warning: we do not recommend " \ ! "setting the ham threshold greater than 0.5.") if ham_cut > spam_cut: ! self.warning += _("
Warning: your ham threshold is " \ ! "higher than your spam threshold. " \ ! "Results are unpredictable.") def createWorkers(self): *************** *** 955,959 **** from urllib import urlopen, urlencode urlopen('http://localhost:%d/save' % state.uiPort, ! urlencode({'how': 'Save & shutdown'})).read() --- 956,960 ---- from urllib import urlopen, urlencode urlopen('http://localhost:%d/save' % state.uiPort, ! urlencode({'how': _('Save & shutdown')})).read() From anadelonbrin at users.sourceforge.net Sun Jan 2 05:57:17 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 05:57:19 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_notesfilter.py,1.9,1.10 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27994/scripts Modified Files: sb_notesfilter.py Log Message: Typo. Index: sb_notesfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_notesfilter.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** sb_notesfilter.py 3 Dec 2004 05:09:42 -0000 1.9 --- sb_notesfilter.py 2 Jan 2005 04:57:14 -0000 1.10 *************** *** 379,383 **** bayes.store() ! fp = open(idxname), 'wb') pickle.dump(notesindex, fp) fp.close() --- 379,383 ---- bayes.store() ! fp = open(idxname, 'wb') pickle.dump(notesindex, fp) fp.close() From anadelonbrin at users.sourceforge.net Sun Jan 2 06:00:44 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 06:00:47 2005 Subject: [Spambayes-checkins] spambayes/spambayes ImapUI.py, 1.42, 1.43 Options.py, 1.118, 1.119 ProxyUI.py, 1.57, 1.58 __init__.py, 1.14, 1.15 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28649/spambayes Modified Files: ImapUI.py Options.py ProxyUI.py __init__.py Log Message: Prepare for i18n. Index: ImapUI.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/ImapUI.py,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** ImapUI.py 23 Dec 2004 18:14:32 -0000 1.42 --- ImapUI.py 2 Jan 2005 05:00:40 -0000 1.43 *************** *** 47,51 **** import UserInterface ! from spambayes.Options import options, optionsPathname # These are the options that will be offered on the configuration page. --- 47,51 ---- import UserInterface ! from spambayes.Options import options, optionsPathname, _ # These are the options that will be offered on the configuration page. *************** *** 55,59 **** # fields/variables. parm_map = ( ! ('IMAP Options', None), ('imap', 'server'), ('imap', 'username'), --- 55,59 ---- # fields/variables. parm_map = ( ! (_('IMAP Options'), None), ('imap', 'server'), ('imap', 'username'), *************** *** 65,75 **** ('imap', 'password'), ('imap', 'use_ssl'), ! ('Header Options', None), ('Headers', 'notate_to'), ('Headers', 'notate_subject'), ! ('Storage Options', None), ('Storage', 'persistent_storage_file'), ('Storage', 'messageinfo_storage_file'), ! ('Statistics Options', None), ('Categorization', 'ham_cutoff'), ('Categorization', 'spam_cutoff'), --- 65,75 ---- ('imap', 'password'), ('imap', 'use_ssl'), ! (_('Header Options'), None), ('Headers', 'notate_to'), ('Headers', 'notate_subject'), ! (_('Storage Options'), None), ('Storage', 'persistent_storage_file'), ('Storage', 'messageinfo_storage_file'), ! (_('Statistics Options'), None), ('Categorization', 'ham_cutoff'), ('Categorization', 'spam_cutoff'), *************** *** 79,109 **** # advanced configuration page. adv_map = ( ! ('Statistics Options', None), ! ('Classifier', 'max_discriminators'), ! ('Classifier', 'minimum_prob_strength'), ! ('Classifier', 'unknown_word_prob'), ! ('Classifier', 'unknown_word_strength'), ! ('Classifier', 'use_bigrams'), ! ('Header Options', None), ! ('Headers', 'include_score'), ! ('Headers', 'header_score_digits'), ! ('Headers', 'header_score_logarithm'), ! ('Headers', 'include_thermostat'), ! ('Headers', 'include_evidence'), ! ('Headers', 'clue_mailheader_cutoff'), ! ('Storage Options', None), ! ('Storage', 'persistent_use_database'), ! ('Tokenising Options', None), ! ('Tokenizer', 'mine_received_headers'), ! ('Tokenizer', 'replace_nonascii_chars'), ! ('Tokenizer', 'summarize_email_prefixes'), ! ('Tokenizer', 'summarize_email_suffixes'), ! ('Tokenizer', 'x-pick_apart_urls'), ! ('Interface Options', None), ! ('html_ui', 'display_adv_find'), ! ('html_ui', 'allow_remote_connections'), ! ('html_ui', 'http_authentication'), ! ('html_ui', 'http_user_name'), ! ('html_ui', 'http_password'), ) --- 79,109 ---- # advanced configuration page. adv_map = ( ! (_('Statistics Options'), None), ! ('Classifier', 'max_discriminators'), ! ('Classifier', 'minimum_prob_strength'), ! ('Classifier', 'unknown_word_prob'), ! ('Classifier', 'unknown_word_strength'), ! ('Classifier', 'use_bigrams'), ! (_('Header Options'), None), ! ('Headers', 'include_score'), ! ('Headers', 'header_score_digits'), ! ('Headers', 'header_score_logarithm'), ! ('Headers', 'include_thermostat'), ! ('Headers', 'include_evidence'), ! ('Headers', 'clue_mailheader_cutoff'), ! (_('Storage Options'), None), ! ('Storage', 'persistent_use_database'), ! (_('Tokenising Options'), None), ! ('Tokenizer', 'mine_received_headers'), ! ('Tokenizer', 'replace_nonascii_chars'), ! ('Tokenizer', 'summarize_email_prefixes'), ! ('Tokenizer', 'summarize_email_suffixes'), ! ('Tokenizer', 'x-pick_apart_urls'), ! (_('Interface Options'), None), ! ('html_ui', 'display_adv_find'), ! ('html_ui', 'allow_remote_connections'), ! ('html_ui', 'http_authentication'), ! ('html_ui', 'http_user_name'), ! ('html_ui', 'http_password'), ) *************** *** 139,151 **** del statusTable.proxyDetails # This could be a bit more modular ! statusTable.configurationLink += """
     !  You can also configure folders to ! filter
and Configure folders to train""" ! findBox = self._buildBox('Word query', 'query.gif', self.html.wordQuery) if not options["html_ui", "display_adv_find"]: del findBox.advanced ! content = (self._buildBox('Status and Configuration', 'status.gif', statusTable % stateDict)+ self._buildTrainBox() + --- 139,152 ---- del statusTable.proxyDetails # This could be a bit more modular ! statusTable.configurationLink += "
    " \ ! " " + _("You can also configure" \ ! " folders to filter
and " \ ! "Configure folders to" \ ! " train") ! findBox = self._buildBox(_('Word query'), 'query.gif', self.html.wordQuery) if not options["html_ui", "display_adv_find"]: del findBox.advanced ! content = (self._buildBox(_('Status and Configuration'), 'status.gif', statusTable % stateDict)+ self._buildTrainBox() + *************** *** 153,157 **** findBox ) ! self._writePreamble("Home") self.write(content) self._writePostamble() --- 154,158 ---- findBox ) ! self._writePreamble(_("Home")) self.write(content) self._writePostamble() *************** *** 173,177 **** def onFilterfolders(self): ! self._writePreamble("Select Filter Folders") self._login_to_imap() if self.imap_logged_in: --- 174,178 ---- def onFilterfolders(self): ! self._writePreamble(_("Select Filter Folders")) self._login_to_imap() if self.imap_logged_in: *************** *** 179,185 **** content = self.html.configForm.clone() content.configFormContent = "" ! content.introduction = """This page allows you to change which ! folders are filtered, and where filtered mail ends up.""" ! content.config_submit.value = "Save Filter Folders" content.optionsPathname = optionsPathname --- 180,187 ---- content = self.html.configForm.clone() content.configFormContent = "" ! content.introduction = _("This page allows you to change " \ ! "which folders are filtered, and " \ ! "where filtered mail ends up.") ! content.config_submit.value = _("Save Filter Folders") content.optionsPathname = optionsPathname *************** *** 208,219 **** if not self.imap.connected: # Failed to connect. ! content = self._buildBox("Error", None, ! "Please check server/port details.") self.write(content) self._writePostamble() return if self.imap is None: ! content = self._buildBox("Error", None, ! """Must specify server details first.""") self.write(content) self._writePostamble() --- 210,221 ---- if not self.imap.connected: # Failed to connect. ! content = self._buildBox(_("Error"), None, ! _("Please check server/port details.")) self.write(content) self._writePostamble() return if self.imap is None: ! content = self._buildBox(_("Error"), None, ! _("Must specify server details first.")) self.write(content) self._writePostamble() *************** *** 223,228 **** username = username[0] if not username: ! content = self._buildBox("Error", None, ! """Must specify username first.""") self.write(content) self._writePostamble() --- 225,230 ---- username = username[0] if not username: ! content = self._buildBox(_("Error"), None, ! _("Must specify username first.")) self.write(content) self._writePostamble() *************** *** 233,238 **** self.imap_pwd = self.imap_pwd[0] if not self.imap_pwd: ! content = self._buildBox("Error", None, ! """Must specify password first.""") self.write(content) self._writePostamble() --- 235,240 ---- self.imap_pwd = self.imap_pwd[0] if not self.imap_pwd: ! content = self._buildBox(_("Error"), None, ! _("Must specify password first.")) self.write(content) self._writePostamble() *************** *** 242,246 **** def onTrainingfolders(self): ! self._writePreamble("Select Training Folders") self._login_to_imap() if self.imap_logged_in: --- 244,248 ---- def onTrainingfolders(self): ! self._writePreamble(_("Select Training Folders")) self._login_to_imap() if self.imap_logged_in: *************** *** 248,254 **** content = self.html.configForm.clone() content.configFormContent = "" ! content.introduction = """This page allows you to change which ! folders contain mail to train Spambayes.""" ! content.config_submit.value = "Save Training Folders" content.optionsPathname = optionsPathname --- 250,257 ---- content = self.html.configForm.clone() content.configFormContent = "" ! content.introduction = _("This page allows you to change " \ ! "which folders contain mail to " \ ! "train Spambayes.") ! content.config_submit.value = _("Save Training Folders") content.optionsPathname = optionsPathname *************** *** 263,268 **** def onChangeopts(self, **parms): backup = self.parm_ini_map ! if parms["how"] == "Save Training Folders" or \ ! parms["how"] == "Save Filter Folders": del parms["how"] self.parm_ini_map = () --- 266,271 ---- def onChangeopts(self, **parms): backup = self.parm_ini_map ! if parms["how"] == _("Save Training Folders") or \ ! parms["how"] == _("Save Filter Folders"): del parms["how"] self.parm_ini_map = () Index: Options.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v retrieving revision 1.118 retrieving revision 1.119 diff -C2 -d -r1.118 -r1.119 *** Options.py 22 Nov 2004 00:26:44 -0000 1.118 --- Options.py 2 Jan 2005 05:00:40 -0000 1.119 *************** *** 26,30 **** True, False = 1, 0 ! __all__ = ['options'] # Grab the stuff from the core options class. --- 26,35 ---- True, False = 1, 0 ! try: ! _ [...1969 lines suppressed...] ! _("""The username to give to the HTTP proxy when required. If a ! username is not necessary, simply leave blank."""), r"[\w]+", DO_NOT_RESTORE), ! ("proxy_password", _("HTTP Proxy Password"), "", ! _("""The password to give to the HTTP proxy when required. This is stored in clear text in your configuration file, so if that bothers you then don't do this. You'll need to use a proxy that doesn't need ! authentication, or do without any SpamBayes HTTP activity."""), r"[\w]+", DO_NOT_RESTORE), ! ("proxy_server", _("HTTP Proxy Server"), "", ! _("""If a spambayes application needs to use HTTP, it will try to do so through this proxy server. The port defaults to 8080, or can be ! entered with the server:port form."""), SERVER, DO_NOT_RESTORE), ! ("language", _("User Interface Language"), ("en_US",), ! _("""If possible, the user interface should use a language from this ! list (in order of preference)."""), r"\w\w(?:_\w\w)?", RESTORE), ), Index: ProxyUI.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/ProxyUI.py,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** ProxyUI.py 23 Dec 2004 18:14:32 -0000 1.57 --- ProxyUI.py 2 Jan 2005 05:00:40 -0000 1.58 *************** *** 74,78 **** import tokenizer import UserInterface ! from spambayes.Options import options from email.Iterators import typed_subpart_iterator --- 74,78 ---- import tokenizer import UserInterface ! from spambayes.Options import options, _ from email.Iterators import typed_subpart_iterator *************** *** 111,159 **** # advanced configuration page. adv_map = ( ! ('Statistics Options', None), ! ('Classifier', 'max_discriminators'), ! ('Classifier', 'minimum_prob_strength'), ! ('Classifier', 'unknown_word_prob'), ! ('Classifier', 'unknown_word_strength'), ! ('Classifier', 'use_bigrams'), ! ('Header Options', None), ! ('Headers', 'include_score'), ! ('Headers', 'header_score_digits'), ! ('Headers', 'header_score_logarithm'), ! ('Headers', 'include_thermostat'), ! ('Headers', 'include_evidence'), ! ('Headers', 'clue_mailheader_cutoff'), ! ('Storage Options', None), ! ('Storage', 'persistent_use_database'), ! ('Storage', 'cache_expiry_days'), ! ('Storage', 'cache_use_gzip'), ! ('Storage', 'ham_cache'), ! ('Storage', 'spam_cache'), ! ('Storage', 'unknown_cache'), ! ('Tokenising Options', None), ! ('Tokenizer', 'mine_received_headers'), ! ('Tokenizer', 'replace_nonascii_chars'), ! ('Tokenizer', 'summarize_email_prefixes'), ! ('Tokenizer', 'summarize_email_suffixes'), ! ('Training Options', None), ! ('Hammie', 'train_on_filter'), ! ('Interface Options', None), ! ('html_ui', 'display_headers'), ! ('html_ui', 'display_received_time'), ! ('html_ui', 'display_score'), ! ('html_ui', 'display_adv_find'), ! ('html_ui', 'default_ham_action'), ! ('html_ui', 'default_spam_action'), ! ('html_ui', 'default_unsure_action'), ! ('html_ui', 'ham_discard_level'), ! ('html_ui', 'spam_discard_level'), ! ('html_ui', 'allow_remote_connections'), ! ('html_ui', 'http_authentication'), ! ('html_ui', 'http_user_name'), ! ('html_ui', 'http_password'), ! ('pop3proxy', 'allow_remote_connections'), ! ('smtpproxy', 'allow_remote_connections'), ! ('POP3 Proxy Options', None), ! ('pop3proxy', 'retrieval_timeout'), ) --- 111,159 ---- # advanced configuration page. adv_map = ( ! (_('Statistics Options'), None), ! ('Classifier', 'max_discriminators'), ! ('Classifier', 'minimum_prob_strength'), ! ('Classifier', 'unknown_word_prob'), ! ('Classifier', 'unknown_word_strength'), ! ('Classifier', 'use_bigrams'), ! (_('Header Options'), None), ! ('Headers', 'include_score'), ! ('Headers', 'header_score_digits'), ! ('Headers', 'header_score_logarithm'), ! ('Headers', 'include_thermostat'), ! ('Headers', 'include_evidence'), ! ('Headers', 'clue_mailheader_cutoff'), ! (_('Storage Options'), None), ! ('Storage', 'persistent_use_database'), ! ('Storage', 'cache_expiry_days'), ! ('Storage', 'cache_use_gzip'), ! ('Storage', 'ham_cache'), ! ('Storage', 'spam_cache'), ! ('Storage', 'unknown_cache'), ! (_('Tokenising Options'), None), ! ('Tokenizer', 'mine_received_headers'), ! ('Tokenizer', 'replace_nonascii_chars'), ! ('Tokenizer', 'summarize_email_prefixes'), ! ('Tokenizer', 'summarize_email_suffixes'), ! (_('Training Options'), None), ! ('Hammie', 'train_on_filter'), ! (_('Interface Options'), None), ! ('html_ui', 'display_headers'), ! ('html_ui', 'display_received_time'), ! ('html_ui', 'display_score'), ! ('html_ui', 'display_adv_find'), ! ('html_ui', 'default_ham_action'), ! ('html_ui', 'default_spam_action'), ! ('html_ui', 'default_unsure_action'), ! ('html_ui', 'ham_discard_level'), ! ('html_ui', 'spam_discard_level'), ! ('html_ui', 'allow_remote_connections'), ! ('html_ui', 'http_authentication'), ! ('html_ui', 'http_user_name'), ! ('html_ui', 'http_password'), ! ('pop3proxy', 'allow_remote_connections'), ! ('smtpproxy', 'allow_remote_connections'), ! (_('POP3 Proxy Options'), None), ! ('pop3proxy', 'retrieval_timeout'), ) *************** *** 183,202 **** statusTable = self.html.statusTable.clone() if not state.servers: ! statusTable.proxyDetails = "No POP3 proxies running.
" ! findBox = self._buildBox('Word query', 'query.gif', self.html.wordQuery) if not options["html_ui", "display_adv_find"]: del findBox.advanced ! content = (self._buildBox('Status and Configuration', 'status.gif', statusTable % stateDict)+ ! self._buildBox('Train on proxied messages', 'train.gif', self.html.reviewText) + self._buildTrainBox() + self._buildClassifyBox() + findBox + ! self._buildBox('Find message', 'query.gif', self.html.findMessage) ) ! self._writePreamble("Home") self.write(content) self._writePostamble(help_topic="home_proxy") --- 183,202 ---- statusTable = self.html.statusTable.clone() if not state.servers: ! statusTable.proxyDetails = _("No POP3 proxies running.
") ! findBox = self._buildBox(_('Word query'), 'query.gif', self.html.wordQuery) if not options["html_ui", "display_adv_find"]: del findBox.advanced ! content = (self._buildBox(_('Status and Configuration'), 'status.gif', statusTable % stateDict)+ ! self._buildBox(_('Train on proxied messages'), 'train.gif', self.html.reviewText) + self._buildTrainBox() + self._buildClassifyBox() + findBox + ! self._buildBox(_('Find message'), 'query.gif', self.html.findMessage) ) ! self._writePreamble(_("Home")) self.write(content) self._writePostamble(help_topic="home_proxy") *************** *** 215,219 **** # Return a link Home. ! self.write("

OK. Return Home.

") def _keyToTimestamp(self, key): --- 215,219 ---- # Return a link Home. ! self.write(_("

OK. Return Home.

")) def _keyToTimestamp(self, key): *************** *** 310,314 **** except ValueError: score = None ! if label == 'Spam': if score is not None \ and score > options["html_ui", "spam_discard_level"]: --- 310,314 ---- except ValueError: score = None ! if label == _('Spam'): if score is not None \ and score > options["html_ui", "spam_discard_level"]: *************** *** 317,321 **** r_att = getattr(row, options["html_ui", "default_spam_action"]) ! elif label == 'Ham': if score is not None \ and score < options["html_ui", "ham_discard_level"]: --- 317,321 ---- r_att = getattr(row, options["html_ui", "default_spam_action"]) ! elif label == _('Ham'): if score is not None \ and score < options["html_ui", "ham_discard_level"]: *************** *** 375,387 **** numTrained = 0 numDeferred = 0 ! if params.get('go') != 'Refresh': for key, value in params.items(): if key.startswith('classify:'): id = key.split(':')[2] ! if value == 'spam': targetCorpus = state.spamCorpus ! elif value == 'ham': targetCorpus = state.hamCorpus ! elif value == 'discard': targetCorpus = None try: --- 375,387 ---- numTrained = 0 numDeferred = 0 ! if params.get('go') != _('Refresh'): for key, value in params.items(): if key.startswith('classify:'): id = key.split(':')[2] ! if value == _('spam'): targetCorpus = state.spamCorpus ! elif value == _('ham'): targetCorpus = state.hamCorpus ! elif value == _('discard'): targetCorpus = None try: *************** *** 408,412 **** fromCache=True) if numTrained == 0: ! self.write("

Training... ") self.flush() numTrained += 1 --- 408,412 ---- fromCache=True) if numTrained == 0: ! self.write(_("

Training... ")) self.flush() numTrained += 1 *************** *** 417,424 **** if numTrained > 0: plural = '' ! if numTrained != 1: ! plural = 's' self._doSave() ! self.write("Trained on %d message%s. " % (numTrained, plural)) self.write("
 ") --- 417,426 ---- if numTrained > 0: plural = '' ! if numTrained == 1: ! response = "Trained on one message. " ! else: ! response = "Trained on %d messages. " % (numTrained,) self._doSave() ! self.write(response) self.write("
 ") *************** *** 442,448 **** # Else if they've hit Previous or Next, display that page. ! elif params.get('go') == 'Next day': start = self._keyToTimestamp(params['next']) ! elif params.get('go') == 'Previous day': start = self._keyToTimestamp(params['prior']) --- 444,450 ---- # Else if they've hit Previous or Next, display that page. ! elif params.get('go') == _('Next day'): start = self._keyToTimestamp(params['next']) ! elif params.get('go') == _('Previous day'): start = self._keyToTimestamp(params['prior']) *************** *** 466,470 **** if key == "": error = True ! page = "

You must enter a search string.

" else: if len(keys) < max_results and \ --- 468,472 ---- if key == "": error = True ! page = _("

You must enter a search string.

") else: if len(keys) < max_results and \ *************** *** 480,484 **** # This is an expensive operation, so let the user know # that something is happening. ! self.write('

Searching...

') for corp in [state.unknownCorpus, state.hamCorpus, state.spamCorpus]: --- 482,486 ---- # This is an expensive operation, so let the user know # that something is happening. ! self.write(_('

Searching...

')) for corp in [state.unknownCorpus, state.hamCorpus, state.spamCorpus]: *************** *** 510,522 **** push((k, corp)) if len(keys): ! title = "Found message%s" % (['','s'][len(keys)>1],) keys = list(keys) else: ! page = "

Could not find any matching messages. " \ ! "Maybe they expired?

" ! title = "Did not find message" box = self._buildBox(title, 'status.gif', page) self.write(box) ! self.write(self._buildBox('Find message', 'query.gif', self.html.findMessage)) self._writePostamble() --- 512,528 ---- push((k, corp)) if len(keys): ! if len(keys) == 1: ! title = _("Found message") ! else: ! title = _("Found messages") keys = list(keys) else: ! page = _("

Could not find any matching messages. " \ ! "Maybe they expired?

") ! title = _("Did not find message") box = self._buildBox(title, 'status.gif', page) self.write(box) ! self.write(self._buildBox(_('Find message'), ! 'query.gif', self.html.findMessage)) self._writePostamble() *************** *** 616,626 **** page.table += self.html.trainRow if title == "": ! title = "Untrained messages received on %s" % date box = self._buildBox(title, None, page) # No icon, to save space. else: ! page = "

There are no untrained messages to display. " ! page += "Return Home, or " ! page += "check again.

" ! title = "No untrained messages" box = self._buildBox(title, 'status.gif', page) --- 622,632 ---- page.table += self.html.trainRow if title == "": ! title = _("Untrained messages received on %s") % date box = self._buildBox(title, None, page) # No icon, to save space. else: ! page = _("

There are no untrained messages to display. " \ ! "Return Home, or " \ ! "check again.

") ! title = _("No untrained messages") box = self._buildBox(title, 'status.gif', page) *************** *** 639,643 **** def onView(self, key, corpus): """View a message - linked from the Review page.""" ! self._writePreamble("View message", parent=('review', 'Review')) sourceCorpus = None message = None --- 645,650 ---- def onView(self, key, corpus): """View a message - linked from the Review page.""" ! self._writePreamble(_("View message"), ! parent=('review', _('Review'))) sourceCorpus = None message = None *************** *** 653,657 **** self.write("
%s
" % cgi.escape(message.as_string())) else: ! self.write("

Can't find message %r. Maybe it expired.

" % key) self._writePostamble() --- 660,664 ---- self.write("
%s
" % cgi.escape(message.as_string())) else: ! self.write(_("

Can't find message %r. Maybe it expired.

") % key) self._writePostamble() *************** *** 659,663 **** """Show clues for a message - linked from the Review page.""" tokens = bool(int(tokens)) # needs the int, as bool('0') is True ! self._writePreamble("Message clues", parent=('review', 'Review')) sourceCorpus = None message = None --- 666,671 ---- """Show clues for a message - linked from the Review page.""" tokens = bool(int(tokens)) # needs the int, as bool('0') is True ! self._writePreamble(_("Message clues"), ! parent=('review', _('Review'))) sourceCorpus = None message = None *************** *** 676,680 **** self.write(results) else: ! self.write("

Can't find message %r. Maybe it expired.

" % key) self._writePostamble() --- 684,688 ---- self.write(results) else: ! self.write(_("

Can't find message %r. Maybe it expired.

") % key) self._writePostamble() *************** *** 721,731 **** text, unused = tokenizer.crack_html_comment(text) text = tokenizer.html_re.sub(' ', text) ! text = '(this message only has an HTML body)\n' + text except StopIteration: ! text = '(this message has no text body)' if type(text) == type([]): # gotta be a 'right' way to do this ! text = "(this message is a digest of %s messages)" % (len(text)) elif text is None: ! text = "(this message has no body)" else: text = text.replace(' ', ' ') # Else they'll be quoted --- 729,739 ---- text, unused = tokenizer.crack_html_comment(text) text = tokenizer.html_re.sub(' ', text) ! text = _('(this message only has an HTML body)\n') + text except StopIteration: ! text = _('(this message has no text body)') if type(text) == type([]): # gotta be a 'right' way to do this ! text = _("(this message is a digest of %s messages)") % (len(text)) elif text is None: ! text = _("(this message has no body)") else: text = text.replace(' ', ' ') # Else they'll be quoted *************** *** 770,775 **** plist = list(parms['pop3proxy_listen_ports']) if len(slist) != len(plist): ! errmsg += '
  • The number of POP3 proxy ports specified ' + \ ! 'must match the number of servers specified
  • \n' # check for duplicate ports --- 778,783 ---- plist = list(parms['pop3proxy_listen_ports']) if len(slist) != len(plist): ! errmsg += _('
  • The number of POP3 proxy ports specified ' \ ! 'must match the number of servers specified
  • \n') # check for duplicate ports *************** *** 778,782 **** try: if plist[p] == plist[p+1]: ! errmsg += '
  • All POP3 port numbers must be unique
  • ' break except IndexError: --- 786,790 ---- try: if plist[p] == plist[p+1]: ! errmsg += _('
  • All POP3 port numbers must be unique
  • ') break except IndexError: *************** *** 787,792 **** plist = list(parms['smtpproxy_listen_ports']) if len(slist) != len(plist): ! errmsg += '
  • The number of SMTP proxy ports specified ' + \ ! 'must match the number of servers specified
  • \n' # check for duplicate ports --- 795,800 ---- plist = list(parms['smtpproxy_listen_ports']) if len(slist) != len(plist): ! errmsg += _('
  • The number of SMTP proxy ports specified ' \ ! 'must match the number of servers specified
  • \n') # check for duplicate ports *************** *** 795,799 **** try: if plist[p] == plist[p+1]: ! errmsg += '
  • All SMTP port numbers must be unique
  • ' break except IndexError: --- 803,807 ---- try: if plist[p] == plist[p+1]: ! errmsg += _('
  • All SMTP port numbers must be unique
  • ') break except IndexError: Index: __init__.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/__init__.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** __init__.py 23 Dec 2004 18:14:33 -0000 1.14 --- __init__.py 2 Jan 2005 05:00:41 -0000 1.15 *************** *** 1,4 **** # package marker. __version__ = "1.1a0" ! __date__ = "January 2005" --- 1,9 ---- # package marker. + try: + _ + except NameError: + _ = lambda arg: arg + __version__ = "1.1a0" ! __date__ = _("January 2005") From anadelonbrin at users.sourceforge.net Sun Jan 2 06:01:53 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 06:01:57 2005 Subject: [Spambayes-checkins] spambayes/spambayes UserInterface.py, 1.52, 1.53 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28819/spambayes Modified Files: UserInterface.py Log Message: Prepare for i18n. cgi.escape the configuration filename, in case it contains <, > or (most likely) & Index: UserInterface.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/UserInterface.py,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** UserInterface.py 23 Dec 2004 18:14:32 -0000 1.52 --- UserInterface.py 2 Jan 2005 05:01:50 -0000 1.53 *************** *** 89,93 **** from spambayes import Stats from spambayes import Version ! from Options import options, optionsPathname, defaults, OptionsClass IMAGES = ('helmet', 'status', 'config', 'help', --- 89,93 ---- from spambayes import Stats from spambayes import Version ! from Options import options, optionsPathname, defaults, OptionsClass, _ IMAGES = ('helmet', 'status', 'config', 'help', *************** *** 104,108 **** sect, opt = opt[1:].split(']', 1) if opt[:2].lower() == "x-" and \ ! not options.doc(sect, opt).lower().startswith("(deprecated)"): experimental_ini_map += ((sect, opt),) --- 104,108 ---- sect, opt = opt[1:].split(']', 1) if opt[:2].lower() == "x-" and \ ! not options.doc(sect, opt).lower().startswith(_("(deprecated)")): experimental_ini_map += ((sect, opt),) *************** *** 112,116 **** def __init__(self, uiPort): Dibbler.HTTPServer.__init__(self, uiPort) ! print 'User interface url is http://localhost:%d/' % (uiPort) def requestAuthenticationMode(self): --- 112,116 ---- def __init__(self, uiPort): Dibbler.HTTPServer.__init__(self, uiPort) ! print _('User interface url is http://localhost:%d/') % (uiPort) def requestAuthenticationMode(self): *************** *** 118,122 **** def getRealm(self): ! return "SpamBayes Web Interface" def isValidUser(self, name, password): --- 118,122 ---- def getRealm(self): ! return _("SpamBayes Web Interface") def isValidUser(self, name, password): *************** *** 129,133 **** def getCancelMessage(self): ! return "You must login to use SpamBayes.""" --- 129,133 ---- def getCancelMessage(self): ! return _("You must login to use SpamBayes.") *************** *** 183,189 **** # *is* Home. html.title = name ! if name == 'Home': del html.homelink ! html.pagename = "Home" elif parent: html.pagename = "> %s > %s" % \ --- 183,189 ---- # *is* Home. html.title = name ! if name == _('Home'): del html.homelink ! html.pagename = _("Home") elif parent: html.pagename = "> %s > %s" % \ *************** *** 283,287 **** results = self._buildCluesTable(message) results.classifyAnother = self._buildClassifyBox() ! self._writePreamble("Classify") self.write(results) self._writePostamble() --- 283,287 ---- results = self._buildCluesTable(message) results.classifyAnother = self._buildClassifyBox() ! self._writePreamble(_("Classify")) self.write(results) self._writePostamble() *************** *** 325,333 **** probability = self.classifier.spamprob(tokens) cluesTable = self._fillCluesTable(clues) ! head_name = "Tokens" else: (probability, clues) = self.classifier.spamprob(tokens, evidence=True) cluesTable = self._fillCluesTable(clues) ! head_name = "Clues" results = self.html.classifyResults.clone() --- 325,333 ---- probability = self.classifier.spamprob(tokens) cluesTable = self._fillCluesTable(clues) ! head_name = _("Tokens") else: (probability, clues) = self.classifier.spamprob(tokens, evidence=True) cluesTable = self._fillCluesTable(clues) ! head_name = _("Clues") results = self.html.classifyResults.clone() *************** *** 358,365 **** if subject is None: ! heading = "Original clues: (%s)" % (len(evidence),) else: ! heading = "Original clues for: %s (%s)" % (subject, ! len(evidence),) orig_results = self._buildBox(heading, 'status.gif', cluesTable) --- 358,365 ---- if subject is None: ! heading = _("Original clues: (%s)") % (len(evidence),) else: ! heading = _("Original clues for: %s (%s)") % \ ! (subject, len(evidence),) orig_results = self._buildBox(heading, 'status.gif', cluesTable) *************** *** 369,373 **** return results ! def onWordquery(self, word, query_type="basic", max_results='10', ignore_case=False): # It would be nice if the default value for max_results here --- 369,373 ---- return results ! def onWordquery(self, word, query_type=_("basic"), max_results='10', ignore_case=False): # It would be nice if the default value for max_results here *************** *** 384,397 **** query.word.value = "%s" % (word,) for q_type in [query.advanced.basic, ! query.advanced.wildcard, ! query.advanced.regex]: if query_type == q_type.id: q_type.checked = 'checked' ! if query_type != "basic": del query.advanced.max_results.disabled if ignore_case: query.advanced.ignore_case.checked = 'checked' query.advanced.max_results.value = str(max_results) ! queryBox = self._buildBox("Word query", 'query.gif', query) if not options["html_ui", "display_adv_find"]: del queryBox.advanced --- 384,397 ---- query.word.value = "%s" % (word,) for q_type in [query.advanced.basic, ! query.advanced.wildcard, ! query.advanced.regex]: if query_type == q_type.id: q_type.checked = 'checked' ! if query_type != _("basic"): del query.advanced.max_results.disabled if ignore_case: query.advanced.ignore_case.checked = 'checked' query.advanced.max_results.value = str(max_results) ! queryBox = self._buildBox(_("Word query"), 'query.gif', query) if not options["html_ui", "display_adv_find"]: del queryBox.advanced *************** *** 399,404 **** stats = [] if word == "": ! stats.append("You must enter a word.") ! elif query_type == "basic" and not ignore_case: wordinfo = self.classifier._wordinfoget(word) if wordinfo: --- 399,404 ---- stats = [] if word == "": ! stats.append(_("You must enter a word.")) ! elif query_type == _("basic") and not ignore_case: wordinfo = self.classifier._wordinfoget(word) if wordinfo: *************** *** 406,416 **** self.classifier.probability(wordinfo)) else: ! stat = "%r does not exist in the database." % \ cgi.escape(word) stats.append(stat) else: ! if query_type != "regex": word = re.escape(word) ! if query_type == "wildcard": word = word.replace("\\?", ".") word = word.replace("\\*", ".*") --- 406,416 ---- self.classifier.probability(wordinfo)) else: ! stat = _("%r does not exist in the database.") % \ cgi.escape(word) stats.append(stat) else: ! if query_type != _("regex"): word = re.escape(word) ! if query_type == _("wildcard"): word = word.replace("\\?", ".") word = word.replace("\\*", ".*") *************** *** 435,452 **** stats.append(stat) if len(stats) == 0 and max_results > 0: ! stat = "There are no words that begin with '%s' " \ ! "in the database." % (word,) stats.append(stat) elif reached_limit: ! if over_limit == 1: ! singles = ["was", "match", "is"] ! else: ! singles = ["were", "matches", "are"] ! stat = "There %s %d additional %s that %s not " \ ! "shown here." % (singles[0], over_limit, ! singles[1], singles[2]) stats.append(stat) ! self._writePreamble("Word query") if len(stats) == 1: if isinstance(stat, types.TupleType): --- 435,446 ---- stats.append(stat) if len(stats) == 0 and max_results > 0: ! stat = _("There are no words that begin with '%s' " \ ! "in the database.") % (word,) stats.append(stat) elif reached_limit: ! stat = _("Additional tokens not shown: %d") % (over_limit,) stats.append(stat) ! self._writePreamble(_("Word query")) if len(stats) == 1: if isinstance(stat, types.TupleType): *************** *** 459,465 **** stat = stats[0] word = original_word ! row = self._buildBox("Statistics for '%s'" % \ ! cgi.escape(word), ! 'status.gif', stat) self.write(row) else: --- 453,458 ---- stat = stats[0] word = original_word ! row = self._buildBox(_("Statistics for '%s'") % \ ! cgi.escape(word), 'status.gif', stat) self.write(row) else: *************** *** 477,484 **** page.multiTable += row else: ! self.write(self._buildBox("Statistics for '%s'" % \ cgi.escape(original_word), 'status.gif', stat)) ! self.write(self._buildBox("Statistics for '%s'" % \ cgi.escape(original_word), 'status.gif', page)) --- 470,477 ---- page.multiTable += row else: ! self.write(self._buildBox(_("Statistics for '%s'") % \ cgi.escape(original_word), 'status.gif', stat)) ! self.write(self._buildBox(_("Statistics for '%s'") % \ cgi.escape(original_word), 'status.gif', page)) *************** *** 488,496 **** def onTrain(self, file, text, which): """Train on an uploaded or pasted message.""" ! self._writePreamble("Train") # Upload or paste? Spam or ham? content = file or text ! isSpam = (which == 'Train as Spam') # Attempt to convert the content from a DBX file to a standard mbox --- 481,489 ---- def onTrain(self, file, text, which): """Train on an uploaded or pasted message.""" ! self._writePreamble(_("Train")) # Upload or paste? Spam or ham? content = file or text ! isSpam = (which == _('Train as Spam')) # Attempt to convert the content from a DBX file to a standard mbox *************** *** 519,523 **** # Train on the uploaded message(s). ! self.write("Training...\n") self.flush() for message in messages: --- 512,516 ---- # Train on the uploaded message(s). ! self.write("" + _("Training") + "...\n") self.flush() for message in messages: *************** *** 534,538 **** f.close() self._doSave() ! self.write("

    OK. Return Home or train again:

    ") self.write(self._buildTrainBox()) self._writePostamble() --- 527,532 ---- f.close() self._doSave() ! self.write(_("%sOK. Return %sHome%s or train again:%s") % ! ("

    ", "", "")) self.write(self._buildTrainBox()) self._writePostamble() *************** *** 567,579 **** def _doSave(self): """Saves the database.""" ! self.write("Saving... ") self.flush() self.classifier.store() ! self.write("Done.\n") def onSave(self, how): """Command handler for "Save" and "Save & shutdown".""" isShutdown = how.lower().find('shutdown') >= 0 ! self._writePreamble("Save", showImage=(not isShutdown)) self._doSave() if isShutdown: --- 561,573 ---- def _doSave(self): """Saves the database.""" ! self.write("" + _("Saving...")) self.flush() self.classifier.store() ! self.write(_("Done.") + "\n") def onSave(self, how): """Command handler for "Save" and "Save & shutdown".""" isShutdown = how.lower().find('shutdown') >= 0 ! self._writePreamble(_("Save"), showImage=(not isShutdown)) self._doSave() if isShutdown: *************** *** 596,600 **** del form.submit_ham form.action = "classify" ! return self._buildBox("Classify a message", 'classify.gif', form) def _buildTrainBox(self): --- 590,594 ---- del form.submit_ham form.action = "classify" ! return self._buildBox(_("Classify a message"), 'classify.gif', form) def _buildTrainBox(self): *************** *** 605,609 **** form = self.html.upload.clone() del form.submit_classify ! return self._buildBox("Train on a message, mbox file or dbx file", 'message.gif', form) --- 599,603 ---- form = self.html.upload.clone() del form.submit_classify ! return self._buildBox(_("Train on a message, mbox file or dbx file"), 'message.gif', form) *************** *** 615,624 **** def onExperimentalconfig(self): html = self._buildConfigPage(experimental_ini_map) ! html.title = 'Home > Experimental Configuration' ! html.pagename = '> Experimental Configuration' ! html.adv_button.name.value = "Back to basic configuration" html.adv_button.action = "config" ! html.config_submit.value = "Save experimental options" ! html.restore.value = "Restore experimental options defaults (all off)" del html.exp_button self.writeOKHeaders('text/html') --- 609,618 ---- def onExperimentalconfig(self): html = self._buildConfigPage(experimental_ini_map) ! html.title = _('Home > Experimental Configuration') ! html.pagename = _('> Experimental Configuration') ! html.adv_button.name.value = _("Back to basic configuration") html.adv_button.action = "config" ! html.config_submit.value = _("Save experimental options") ! html.restore.value = _("Restore experimental options defaults (all off)") del html.exp_button self.writeOKHeaders('text/html') *************** *** 627,636 **** def onAdvancedconfig(self): html = self._buildConfigPage(self.advanced_options_map) ! html.title = 'Home > Advanced Configuration' ! html.pagename = '> Advanced Configuration' ! html.adv_button.name.value = "Back to basic configuration" html.adv_button.action = "config" ! html.config_submit.value = "Save advanced options" ! html.restore.value = "Restore advanced options defaults" del html.exp_button self.writeOKHeaders('text/html') --- 621,630 ---- def onAdvancedconfig(self): html = self._buildConfigPage(self.advanced_options_map) ! html.title = _('Home > Advanced Configuration') ! html.pagename = _('> Advanced Configuration') ! html.adv_button.name.value = _("Back to basic configuration") html.adv_button.action = "config" ! html.config_submit.value = _("Save advanced options") ! html.restore.value = _("Restore advanced options defaults") del html.exp_button self.writeOKHeaders('text/html') *************** *** 639,644 **** def onConfig(self): html = self._buildConfigPage(self.parm_ini_map) ! html.title = 'Home > Configure' ! html.pagename = '> Configure' self.writeOKHeaders('text/html') self.write(html) --- 633,638 ---- def onConfig(self): html = self._buildConfigPage(self.parm_ini_map) ! html.title = _('Home > Configure') ! html.pagename = _('> Configure') self.writeOKHeaders('text/html') self.write(html) *************** *** 652,656 **** html.mainContent = self.html.configForm.clone() html.mainContent.configFormContent = "" ! html.mainContent.optionsPathname = optionsPathname return self._buildConfigPageBody(html, parm_map) --- 646,650 ---- html.mainContent = self.html.configForm.clone() html.mainContent.configFormContent = "" ! html.mainContent.optionsPathname = cgi.escape(optionsPathname) return self._buildConfigPageBody(html, parm_map) *************** *** 751,757 **** if options.is_boolean(sect, opt): if currentValue == "False": ! currentValue = "No" elif currentValue == "True": ! currentValue = "Yes" # XXX Something needs to be done here, otherwise really # XXX long options squeeze the help text too far to the --- 745,751 ---- if options.is_boolean(sect, opt): if currentValue == "False": ! currentValue = _("No") elif currentValue == "True": ! currentValue = _("Yes") # XXX Something needs to be done here, otherwise really # XXX long options squeeze the help text too far to the *************** *** 773,779 **** pmap = self.parm_ini_map if parms.has_key("how"): ! if parms["how"] == "Save advanced options": pmap = self.advanced_options_map ! elif parms["how"] == "Save experimental options": pmap = experimental_ini_map del parms["how"] --- 767,773 ---- pmap = self.parm_ini_map if parms.has_key("how"): ! if parms["how"] == _("Save advanced options"): pmap = self.advanced_options_map ! elif parms["how"] == _("Save experimental options"): pmap = experimental_ini_map del parms["how"] *************** *** 784,791 **** if errmsg != '': ! html.mainContent.heading = "Errors Detected" html.mainContent.boxContent = errmsg ! html.title = 'Home > Error' ! html.pagename = '> Error' self.writeOKHeaders('text/html') self.write(html) --- 778,785 ---- if errmsg != '': ! html.mainContent.heading = _("Errors Detected") html.mainContent.boxContent = errmsg ! html.title = _('Home > Error') ! html.pagename = _('> Error') self.writeOKHeaders('text/html') self.write(html) *************** *** 806,821 **** self.reReadOptions() ! html.mainContent.heading = "Options Changed" ! html.mainContent.boxContent = "%s. Return Home." \ ! % "Options changed" ! html.title = 'Home > Options Changed' ! html.pagename = '> Options Changed' self.writeOKHeaders('text/html') self.write(html) def onRestoredefaults(self, how): ! if how == "Restore advanced options defaults": self.restoreConfigDefaults(self.advanced_options_map) ! elif how == "Restore experimental options defaults (all off)": self.restoreConfigDefaults(experimental_ini_map) else: --- 800,815 ---- self.reReadOptions() ! html.mainContent.heading = _("Options Changed") ! html.mainContent.boxContent = _("Options changed. Return " \ ! "Home.") ! html.title = _('Home > Options Changed') ! html.pagename = _('> Options Changed') self.writeOKHeaders('text/html') self.write(html) def onRestoredefaults(self, how): ! if how == _("Restore advanced options defaults"): self.restoreConfigDefaults(self.advanced_options_map) ! elif how == _("Restore experimental options defaults (all off)"): self.restoreConfigDefaults(experimental_ini_map) else: *************** *** 826,834 **** html.shutdownTableCell = " " html.mainContent = self.html.headedBox.clone() ! html.mainContent.heading = "Option Defaults Restored" ! html.mainContent.boxContent = "%s. Return Home." \ ! % "Defaults restored" ! html.title = 'Home > Defaults Restored' ! html.pagename = '> Defaults Restored' self.writeOKHeaders('text/html') self.write(html) --- 820,828 ---- html.shutdownTableCell = " " html.mainContent = self.html.headedBox.clone() ! html.mainContent.heading = _("Option Defaults Restored") ! html.mainContent.boxContent = _("Defaults restored. Return " \ ! "Home.") ! html.title = _('Home > Defaults Restored') ! html.pagename = _('> Defaults Restored') self.writeOKHeaders('text/html') self.write(html) *************** *** 866,872 **** # Tim thinks that Yes/No makes more sense than True/False if options.is_boolean(sect, opt): ! if value == "No": value = False ! elif value == "Yes": value = True if options.multiple_values_allowed(sect, opt) and \ --- 860,866 ---- # Tim thinks that Yes/No makes more sense than True/False if options.is_boolean(sect, opt): ! if value == _("No"): value = False ! elif value == _("Yes"): value = True if options.multiple_values_allowed(sect, opt) and \ *************** *** 875,883 **** value = options.convert(sect, opt, value) if not options.is_valid(sect, opt, value): ! errmsg += '

  • \'%s\' is not a value valid for [%s] %s' % \ (entered_value, nice_section_name, options.display_name(sect, opt)) if type(options.valid_input(sect, opt)) == type((0,1)): ! errmsg += '. Valid values are: ' for valid in options.valid_input(sect, opt): errmsg += str(valid) + ',' --- 869,877 ---- value = options.convert(sect, opt, value) if not options.is_valid(sect, opt, value): ! errmsg += _('
  • \'%s\' is not a value valid for [%s] %s') % \ (entered_value, nice_section_name, options.display_name(sect, opt)) if type(options.valid_input(sect, opt)) == type((0,1)): ! errmsg += _('. Valid values are: ') for valid in options.valid_input(sect, opt): errmsg += str(valid) + ',' *************** *** 906,910 **** """Provide a help page, either the default if topic is not supplied, or specific to the topic given.""" ! self._writePreamble("Help") helppage = self.html.helppage.clone() if topic: --- 900,904 ---- """Provide a help page, either the default if topic is not supplied, or specific to the topic given.""" ! self._writePreamble(_("Help")) helppage = self.html.helppage.clone() if topic: *************** *** 923,934 **** def onStats(self): """Provide statistics about previous SpamBayes activity.""" ! self._writePreamble("Statistics") if self.stats: stats = self.stats.GetStats(use_html=True) ! stats = self._buildBox("Statistics", None, "

    ".join(stats)) else: ! stats = self._buildBox("Statistics", None, ! "Statistics not available") self.write(stats) self._writePostamble(help_topic="stats") --- 917,928 ---- def onStats(self): """Provide statistics about previous SpamBayes activity.""" ! self._writePreamble(_("Statistics")) if self.stats: stats = self.stats.GetStats(use_html=True) ! stats = self._buildBox(_("Statistics"), None, "

    ".join(stats)) else: ! stats = self._buildBox(_("Statistics"), None, ! _("Statistics not available")) self.write(stats) self._writePostamble(help_topic="stats") *************** *** 938,942 **** has enough information for us to help this person with their problem.""" ! self._writePreamble("Send Help Message", ("help", "Help")) report = self.html.bugreport.clone() # Prefill the report --- 932,936 ---- has enough information for us to help this person with their problem.""" ! self._writePreamble(_("Send Help Message"), ("help", _("Help"))) report = self.html.bugreport.clone() # Prefill the report *************** *** 1000,1010 **** smtp_server = None if not smtp_server: ! self.write(self._buildBox("Warning", "status.gif", ! "You will be unable to send this message from " \ "this page, as you do not have your SMTP " \ "server's details entered in your configuration. " \ "Please either enter those " \ "details, or copy the text below into your " \ ! "regular mail application.")) del report.submitrow --- 994,1004 ---- smtp_server = None if not smtp_server: ! self.write(self._buildBox(_("Warning"), "status.gif", ! _("You will be unable to send this message from " \ "this page, as you do not have your SMTP " \ "server's details entered in your configuration. " \ "Please either enter those " \ "details, or copy the text below into your " \ ! "regular mail application."))) del report.submitrow *************** *** 1025,1035 **** if not self._verifyEnteredDetails(from_addr, subject, message): ! self._writePreamble("Error", ("help", "Help")) ! self.write(self._buildBox("Error", "status.gif", ! "You must fill in the details that " \ "describe your specific problem " \ ! "before you can send the message.")) else: ! self._writePreamble("Sent", ("help", "Help")) mailer = smtplib.SMTP(options["smtpproxy", "remote_servers"][0]) --- 1019,1029 ---- if not self._verifyEnteredDetails(from_addr, subject, message): ! self._writePreamble(_("Error"), ("help", _("Help"))) ! self.write(self._buildBox(_("Error"), "status.gif", ! _("You must fill in the details that " \ "describe your specific problem " \ ! "before you can send the message."))) else: ! self._writePreamble(_("Sent"), ("help", _("Help"))) mailer = smtplib.SMTP(options["smtpproxy", "remote_servers"][0]) *************** *** 1097,1102 **** recips.append(r) mailer.sendmail(from_addr, recips, outer.as_string()) ! self.write("Sent message. Please do not send again, or " \ ! "refresh this page!") self._writePostamble() --- 1091,1096 ---- recips.append(r) mailer.sendmail(from_addr, recips, outer.as_string()) ! self.write(_("Sent message. Please do not send again, or " \ ! "refresh this page!")) self._writePostamble() *************** *** 1104,1112 **** """Ensure that the user didn't just send the form message, and at least changed the fields.""" ! if from_addr.startswith("[YOUR EMAIL ADDRESS]"): return False ! if message.endswith("[DESCRIBE YOUR PROBLEM HERE]"): return False ! if subject.endswith("[PROBLEM SUMMARY]"): return False return True --- 1098,1106 ---- """Ensure that the user didn't just send the form message, and at least changed the fields.""" ! if from_addr.startswith(_("[YOUR EMAIL ADDRESS]")): return False ! if message.endswith(_("[DESCRIBE YOUR PROBLEM HERE]")): return False ! if subject.endswith(_("[PROBLEM SUMMARY]")): return False return True From anadelonbrin at users.sourceforge.net Sun Jan 2 06:02:48 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 06:02:51 2005 Subject: [Spambayes-checkins] spambayes/spambayes UserInterface.py, 1.46.4.1, 1.46.4.2 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28947/spambayes Modified Files: Tag: release_1_0-branch UserInterface.py Log Message: Backport: cgi.escape the configuration filename, in case it contains <, > or (most likely) & Index: UserInterface.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/UserInterface.py,v retrieving revision 1.46.4.1 retrieving revision 1.46.4.2 diff -C2 -d -r1.46.4.1 -r1.46.4.2 *** UserInterface.py 10 Jun 2004 05:12:43 -0000 1.46.4.1 --- UserInterface.py 2 Jan 2005 05:02:46 -0000 1.46.4.2 *************** *** 639,643 **** html.mainContent = self.html.configForm.clone() html.mainContent.configFormContent = "" ! html.mainContent.optionsPathname = optionsPathname return self._buildConfigPageBody(html, parm_map) --- 639,643 ---- html.mainContent = self.html.configForm.clone() html.mainContent.configFormContent = "" ! html.mainContent.optionsPathname = cgi.escape(optionsPathname) return self._buildConfigPageBody(html, parm_map) From anadelonbrin at users.sourceforge.net Sun Jan 2 06:04:54 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 06:04:57 2005 Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.16,1.17 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29267 Modified Files: README-DEVEL.txt Log Message: Remove out-of-date stuff. Update script names. Add an instruction when doing a release to register with PyPI. Note that setup.py sdist will generate sizes and MD5 checksums for you. Add a section with instructions about how to make a translation. Index: README-DEVEL.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** README-DEVEL.txt 30 Nov 2004 06:05:45 -0000 1.16 --- README-DEVEL.txt 2 Jan 2005 05:04:51 -0000 1.17 *************** *** 1,3 **** ! Copyright (C) 2002 Python Software Foundation; All Rights Reserved The Python Software Foundation (PSF) holds copyright on all material --- 1,3 ---- ! Copyright (C) 2002-5 Python Software Foundation; All Rights Reserved The Python Software Foundation (PSF) holds copyright on all material *************** *** 56,63 **** On Mac OS 9 and earlier systems it is a NL character. - *NOTE* The separator character changed after the second alpha version of - the first release. Previously, if multiple files were specified in - BAYESCUSTOMIZE they were space-separated. - classifier.py The classifier, which is the soul of the method. --- 56,59 ---- *************** *** 71,96 **** A collection of statistics functions. - IMPORTANT NOTE - ============== - - The applications have all been renamed in preparation for 1.0 - the - following section refers to old application names. - - IMPORTANT NOTE - ============== - - The applications have all been renamed in preparation for 1.0 - the - following section refers to old application names. - Apps ==== ! hammie.py ! A spamassassin-like filter which uses tokenizer and classifier (above). ! ! hammiefilter.py A simpler hammie front-end that doesn't print anything. Useful for procmail filtering and scoring from your MUA. ! mboxtrain.py Trainer for Maildir, MH, or mbox mailboxes. Remembers which messages it saw the last time you ran it, and will only train on new --- 67,77 ---- A collection of statistics functions. Apps ==== ! sb_filter.py A simpler hammie front-end that doesn't print anything. Useful for procmail filtering and scoring from your MUA. ! sb_mboxtrain.py Trainer for Maildir, MH, or mbox mailboxes. Remembers which messages it saw the last time you ran it, and will only train on new *************** *** 102,106 **** server. ! pop3proxy.py A spam-classifying POP3 proxy. It adds a spam-judgment header to each mail as it's retrieved, so you can use your email client's --- 83,87 ---- server. ! sb_server.py A spam-classifying POP3 proxy. It adds a spam-judgment header to each mail as it's retrieved, so you can use your email client's *************** *** 110,122 **** Also acts as a web server providing a user interface that allows you to train the classifier, classify messages interactively, and query ! the token database. This piece will at some point be split out into a separate module. ! smtpproxy.py ! A message training SMTP proxy. It sits between your email client and ! your SMTP server and intercepts mail to set ham and spam addresses. ! All other mail is simply passed through to the SMTP server. ! mailsort.py A delivery agent that uses a CDB of word probabilities and delivers a message to one of two Maildir message folders, depending on the --- 91,103 ---- Also acts as a web server providing a user interface that allows you to train the classifier, classify messages interactively, and query ! the token database. This piece may at some point be split out into a separate module. ! If the appropriate options are set, also serves a message training ! SMTP proxy. It sits between your email client and your SMTP server ! and intercepts mail to set ham and spam addresses. ! All other mail is simply passed through to the SMTP server. ! sb_mailsort.py A delivery agent that uses a CDB of word probabilities and delivers a message to one of two Maildir message folders, depending on the *************** *** 124,139 **** device. ! hammiesrv.py A stab at making hammie into a client/server model, using XML-RPC. ! hammiecli.py ! A client for hammiesrv. ! imapfilter.py A spam-classifying and training application for use with IMAP servers. You can specify folders that contain mail to train as ham/spam, and folders that contain mail to classify, and the filter will do so. - Note that this is currently in very early development and not - recommended for production use. --- 105,118 ---- device. ! sb_xmlrpcserver.py A stab at making hammie into a client/server model, using XML-RPC. ! sb_client.py ! A client for sb_xmlrpcserver.py. ! sb_imapfilter.py A spam-classifying and training application for use with IMAP servers. You can specify folders that contain mail to train as ham/spam, and folders that contain mail to classify, and the filter will do so. *************** *** 214,218 **** Test Data Utilities =================== ! cleanarch A script to repair mbox archives by finding "Unix From" lines that should have been escaped, and escaping them. --- 193,197 ---- Test Data Utilities =================== ! cleanarch.py A script to repair mbox archives by finding "Unix From" lines that should have been escaped, and escaping them. *************** *** 505,508 **** --- 484,489 ---- o Now commit spambayes/__init__.py and tag the whole checkout - see the existing tag names for the tag name format. + o In either checkout, run "python setup.py register" to register the new + version with PyPI. o Create MD5 checksums for the files, and update download.ht with these. Tony uses wxChecksums (http://wxchecksums.sourceforge.net) for this, *************** *** 511,514 **** --- 492,497 ---- >>> print md5.md5(file("spambayes-1.0.1.exe", "rb").read()).hexdigest() o Calculate the sizes of the files, and update download.ht with these. + From release 1.1 doing a "setup.py sdist" will generate checksums + and sizes for you, and print out the results to stdout. o Create OpenPGP/PGP signatures for the files. Using GnuPG: % gpg -sab spambayes-1.0.1.zip *************** *** 577,578 **** --- 560,701 ---- o You can now follow the steps in the source release description above, from the testing step. + + Making a translation + ==================== + + Note that it is, in general, best to translate against a stable version. + This means you avoid having to repeatedly re-translate text as the + code changes. This means code that has been released via the sourceforge + system, that does not have a letter code at the end of the version (e.g. + 1.0.1, 1.1.2, but not 1.0a1, 1.1b1, or 2.1rc2). If you do want to + translate a more recent version, be sure to discuss your plans first on + spambayes-dev so that you can be warned about any planned changes. + + Translation is only feasible for 1.1 and above. No translation effort + is planned for the 1.0.x release series. + + To translate, you will need: + + o A suitable version of Python (2.2 or greater) installed. + See http://python.org/download + + o A copy of the SpamBayes source that you wish to translate. + + o Resourcepackage installed. + See http://resourcepackage.sourceforge.net + + Optional tools that may make translation easier include: + + o A copy of VC++, Visual Studio, or some other GUI tool that allows + editing of VC++ dialog resource files. + + o A GUI HTML editor. + + o A GUI gettext editor, such as poEdit. + http://poedit.sourceforge.net + + Setup + ----- + + You will need to create a directory structure as follows: + + spambayes/ # root spambayes directory + # containing contrib, utilities, + # scripts, etc + languages/ # root languages directory, + # possibly already containing + # other translations + {lang_code}/ # directory for the specific + # translation - {lang_code} is + # described below + DIALOGS/ # directory for Outlook plug-in + # dialog resources + LC_MESSAGES/ # directory for gettext managed + # strings + __init__.py # Copy of spambayes/spambayes/resources/__init__.py + + + Translation Tasks + ----------------- + + There are four translation tasks: + + o Documentation. This is the least exciting, but the most important. + If the documentation is appropriately translated, then even if elements + of the interface are not translated, users should be able to manage. + + A method of managing translated documents has yet to be created. If you + are interested in translating documentation, please contact + spambayes-dev@python.org. + + o Outlook dialogs. The majority of the Outlook plug-in interface is + handled by a VC++/Visual Studio dialog resource file pair (dialogs.h + and dialogs.rc). The plug-in code then manipulates this to create the + actual dialog. + + The easiest method of translating these dialogs is to use a tool like + VC++ or Visual Studio. Simply open the + 'spambayes\Outlook2000\dialogs\resources\dialogs.rc' file, translate the + dialog, and save the file as + 'spambayes\languages\{lang_code}\DIALOGS\dialogs.rc', where {lang_code} + is the appropriate language code for the language you have translated + into (e.g. 'en_UK', 'es', 'de_DE'). If you do not have a GUI tool to + edit the dialogs, simply open the dialogs.rc file in a text editor, + manually change the appropriate strings, and save the file as above. + Ensure that a copy of the dialogs.h file is also copied across to the + 'spambayes\languages\{lang_code}\DIALOGS' directory (this does not + need any translation). + + Once the dialogs are translated, you need to use the rc2py.py utility + to create the i18n_dialogs.py file. For example, in the + 'spambayes\Outlook2000\dialogs\resources' directory: + > rc2py.py {base}\spambayes\languages\de_DE\DIALOGS\dialogs.rc + {base}\spambayes\languages\de_DE\DIALOGS\i18n_dialogs.py 1 + Where {base} is the directory that contains the root spambayes directory. + This should create a 'i18n_dialogs.py' in the same directory as your + translated dialogs.rc file - this is the file the the Outlook plug-in + uses. + + o Web interface template file. The majority of the web interface is + created by dynamic use of a HTML template file. + + The easiest method of translating this file is to use a GUI HTML editor. + Simply open the 'spambayes/spambayes/resources/ui.html' file, translate + it as described within, and save the file as + 'spambayes/languages/{lang_code}/i18n.ui.html', where {lang_code} is + the appropriate language code as described above. If you do not have + a GUI HTML editor, or are happy editing HTML by hand, simply use your + favority HTML editor to do this task. + + Once the template file is created, resourcepackage will automatically + create the required ui_html.py file when SpamBayes is run with that + language selected. + + o Gettext managed strings. The remainder of both the Outlook plug-in + and the web interface are contained within the various Python files + that make up SpamBayes. The Python gettext module (very similar to + the GNU gettext system) is used to manage translation of these strings. + + To translate these strings, use the translation template + 'spambayes/languages/messages.pot'. You can regenerate that file, if + necessary, by running this command in the root spambayes directory: + > {python dir}\tools\i18n\pygettext.py -o languages\messages.pot + contrib\*.py Outlook2000\*.py scripts\*.py spambayes\*.py + testtools\*.py utilities\*.py windows\*.py + + You may wish to use a GUI system to create the required *.po file, + such as poEdit, but you can also do this manually with a text editor. + If your utility does not do it for you, you will also need to + compile the .po file to a .mo file. The utility msgfmt.py will do + this for you - it should be located '{python dir}\tools\i18n'. + + Testing the translation + ----------------------- + + There are two ways to set the language that SpamBayes will use: + + o If you are using Windows, change the preferred Windows language using + the Control Panel. + + o Get the [globals] language SpamBayes option to a list of the + preferred language(s). From anadelonbrin at users.sourceforge.net Sun Jan 2 06:19:27 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 2 06:19:30 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_message.py, 1.4, 1.5 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31400/spambayes/test Modified Files: test_message.py Log Message: Update to match the new way that date_modified works. Index: test_message.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_message.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** test_message.py 22 Dec 2004 01:50:12 -0000 1.4 --- test_message.py 2 Jan 2005 05:19:25 -0000 1.5 *************** *** 49,53 **** def test_persistent_state(self): ! self.assertEqual(self.msg.stored_attributes, ['c', 't']) def test_initialisation(self): --- 49,54 ---- def test_persistent_state(self): ! self.assertEqual(self.msg.stored_attributes, ['c', 't', ! 'date_modified']) def test_initialisation(self): *************** *** 569,574 **** db_version = dict(self.db.db[msg.id]) correct_version = dict(correct) ! self.assertEqual(db_version["date_modified"], time.time()) ! del db_version["date_modified"] self.assertEqual(db_version, correct_version) --- 570,574 ---- db_version = dict(self.db.db[msg.id]) correct_version = dict(correct) ! correct_version["date_modified"], time.time() self.assertEqual(db_version, correct_version) From anadelonbrin at users.sourceforge.net Mon Jan 3 07:51:46 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 3 07:51:50 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_server.py,1.39,1.40 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13766/scripts Modified Files: sb_server.py Log Message: Implement part of [ 753708 ] Support POP over SSL If the use_ssl option is on (or automatic and the POP3 server port is 995) then sb_server will try and make a SSL/TLS connection to the server, rather than a regular connection. Note that the connection between sb_server and the mail client is *not* SSL/TLS - I think that would mean we needed to have SSL/TLS server code, which doesn't look easy, and isn't in the Python stdlib. That's almost certainly a local (or at least controlled) connection, anyway, so that shouldn't matter. This *mostly* works (with Python 2.4 or 2.3.5 - 2.3.4 has an outstanding bug)). The remaining problem is that if the incoming data is larger than the buffer (4096) then the final chunk isn't received until a new command is send. This screws all sorts of things up. I can't figure out why that is though - select.select seems to ignore the remaining bit waiting (maybe select.select works differently with SSL sockets?). I'll have another crack at it tomorrow, unless someone else figures it out overnight. Index: sb_server.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_server.py,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** sb_server.py 2 Jan 2005 04:56:40 -0000 1.39 --- sb_server.py 3 Jan 2005 06:51:42 -0000 1.40 *************** *** 91,96 **** o Slightly-wordy index page; intro paragraph for each page. ! o In both stats and training results, report nham and nspam - warn if ! they're very different (for some value of 'very'). o "Links" section (on homepage?) to project homepage, mailing list, etc. --- 91,95 ---- o Slightly-wordy index page; intro paragraph for each page. ! o In both stats and training results, report nham and nspam. o "Links" section (on homepage?) to project homepage, mailing list, etc. *************** *** 102,106 **** o Graphs. Of something. Who cares what? o NNTP proxy. - o Zoe...! """ --- 101,104 ---- *************** *** 146,152 **** synchronously, because that would block the process.""" ! lineCallback = None ! ! def __init__(self, serverName, serverPort, lineCallback): Dibbler.BrighterAsyncChat.__init__(self) self.lineCallback = lineCallback --- 144,148 ---- synchronously, because that would block the process.""" ! def __init__(self, serverName, serverPort, lineCallback, ssl=False): Dibbler.BrighterAsyncChat.__init__(self) self.lineCallback = lineCallback *************** *** 154,157 **** --- 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)) *************** *** 162,165 **** --- 163,203 ---- self.lineCallback('') # "The socket's been closed." self.close() + else: + if ssl: + try: + self.ssl_socket = socket.ssl(self.socket) + except socket.sslerror, why: + if why[0] == 1: # error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol' + # Probably not SSL after all. + print >>sys.stderr, "Can't use SSL" + else: + raise + else: + self.send = self.send_ssl + self.recv = self.recv_ssl + self.socket.setblocking(0) + print self._fileno + + def send_ssl(self, data): + return self.ssl_socket.write(data) + + def recv_ssl(self, buffer_size): + try: + data = self.ssl_socket.read(buffer_size) + if not data: + # a closed connection is indicated by signaling + # a read condition, and having recv() return 0. + self.handle_close() + return '' + else: + return data + except socket.sslerror, why: + if why[0] == 6: # 'TLS/SSL connection has been closed' + self.handle_close() + return '' + elif why[0] == 2: # 'The operation did not complete (read)' + return '' + else: + raise def collect_incoming_data(self, data): *************** *** 173,176 **** --- 211,218 ---- self.lineCallback('') self.close() + try: + del self.ssl_socket, self.socket + except AttributeError: + pass *************** *** 188,192 **** """ ! def __init__(self, clientSocket, serverName, serverPort): Dibbler.BrighterAsyncChat.__init__(self, clientSocket) self.request = '' --- 230,234 ---- """ ! def __init__(self, clientSocket, serverName, serverPort, ssl=False): Dibbler.BrighterAsyncChat.__init__(self, clientSocket) self.request = '' *************** *** 207,211 **** self.serverSocket = ServerLineReader(serverName, serverPort, ! self.onServerLine) def onIncomingConnection(self, clientSocket): --- 249,253 ---- self.serverSocket = ServerLineReader(serverName, serverPort, ! self.onServerLine, ssl) def onIncomingConnection(self, clientSocket): *************** *** 345,350 **** """ ! def __init__(self, serverName, serverPort, proxyPort): ! proxyArgs = (serverName, serverPort) Dibbler.Listener.__init__(self, proxyPort, BayesProxy, proxyArgs) print 'Listener on port %s is proxying %s:%d' % \ --- 387,392 ---- """ ! def __init__(self, serverName, serverPort, proxyPort, ssl=False): ! proxyArgs = (serverName, serverPort, ssl) Dibbler.Listener.__init__(self, proxyPort, BayesProxy, proxyArgs) print 'Listener on port %s is proxying %s:%d' % \ *************** *** 384,389 **** """ ! def __init__(self, clientSocket, serverName, serverPort): ! POP3ProxyBase.__init__(self, clientSocket, serverName, serverPort) self.handlers = {'STAT': self.onStat, 'LIST': self.onList, 'RETR': self.onRetr, 'TOP': self.onTop, --- 426,432 ---- """ ! def __init__(self, clientSocket, serverName, serverPort, ssl=False): ! POP3ProxyBase.__init__(self, clientSocket, serverName, serverPort, ! ssl) self.handlers = {'STAT': self.onStat, 'LIST': self.onList, 'RETR': self.onRetr, 'TOP': self.onTop, *************** *** 897,901 **** """Create BayesProxyListeners for all the given servers.""" for (server, serverPort), proxyPort in zip(servers, proxyPorts): ! listener = BayesProxyListener(server, serverPort, proxyPort) proxyListeners.append(listener) --- 940,947 ---- """Create BayesProxyListeners for all the given servers.""" for (server, serverPort), proxyPort in zip(servers, proxyPorts): ! ssl = options["pop3proxy", "use_ssl"] ! if ssl == "automatic": ! ssl = serverPort == 995 ! listener = BayesProxyListener(server, serverPort, proxyPort, ssl) proxyListeners.append(listener) From anadelonbrin at users.sourceforge.net Mon Jan 3 07:51:48 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 3 07:51:53 2005 Subject: [Spambayes-checkins] spambayes/spambayes Options.py,1.119,1.120 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13766/spambayes Modified Files: Options.py Log Message: Implement part of [ 753708 ] Support POP over SSL If the use_ssl option is on (or automatic and the POP3 server port is 995) then sb_server will try and make a SSL/TLS connection to the server, rather than a regular connection. Note that the connection between sb_server and the mail client is *not* SSL/TLS - I think that would mean we needed to have SSL/TLS server code, which doesn't look easy, and isn't in the Python stdlib. That's almost certainly a local (or at least controlled) connection, anyway, so that shouldn't matter. This *mostly* works (with Python 2.4 or 2.3.5 - 2.3.4 has an outstanding bug)). The remaining problem is that if the incoming data is larger than the buffer (4096) then the final chunk isn't received until a new command is send. This screws all sorts of things up. I can't figure out why that is though - select.select seems to ignore the remaining bit waiting (maybe select.select works differently with SSL sockets?). I'll have another crack at it tomorrow, unless someone else figures it out overnight. Index: Options.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v retrieving revision 1.119 retrieving revision 1.120 diff -C2 -d -r1.119 -r1.120 *** Options.py 2 Jan 2005 05:00:40 -0000 1.119 --- Options.py 3 Jan 2005 06:51:43 -0000 1.120 *************** *** 788,791 **** --- 788,799 ---- used for classifications (i.e. results may be effected)."""), REAL, RESTORE), + + ("use_ssl", "Connect via a secure socket layer", False, + """Use SSL to connect to the server. This allows spambayes to connect + without sending data in plain text. + + Note that this does not check the server certificate at this point in + time.""", + (False, True, "automatic"), DO_NOT_RESTORE), ), From anadelonbrin at users.sourceforge.net Mon Jan 3 07:52:29 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 3 07:52:32 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000 config.py,1.36,1.37 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13898/Outlook2000 Modified Files: config.py Log Message: Missed a bit in the i18n change. Index: config.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/config.py,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** config.py 2 Jan 2005 04:53:37 -0000 1.36 --- config.py 3 Jan 2005 06:52:26 -0000 1.37 *************** *** 383,388 **** # End of old pickle code. - del _ - if __name__=='__main__': options = CreateConfig() --- 383,386 ---- From anadelonbrin at users.sourceforge.net Tue Jan 4 01:18:05 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:18:09 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_sb_imapfilter.py, 1.8, 1.9 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1620/spambayes/test Modified Files: test_sb_imapfilter.py Log Message: Check that the web interface is served correctly. Index: test_sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_sb_imapfilter.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** test_sb_imapfilter.py 20 Dec 2004 02:49:06 -0000 1.8 --- test_sb_imapfilter.py 4 Jan 2005 00:18:02 -0000 1.9 *************** *** 1,4 **** --- 1,5 ---- # Test sb_imapfilter script. + import re import sys import time *************** *** 18,22 **** from spambayes.Options import options from spambayes.classifier import Classifier ! from sb_imapfilter import BadIMAPResponseError from sb_imapfilter import IMAPSession, IMAPMessage, IMAPFolder, IMAPFilter --- 19,23 ---- from spambayes.Options import options from spambayes.classifier import Classifier ! from sb_imapfilter import run, BadIMAPResponseError from sb_imapfilter import IMAPSession, IMAPMessage, IMAPFolder, IMAPFilter *************** *** 758,761 **** --- 759,792 ---- + class InterfaceTest(unittest.TestCase): + def setUp(self): + print "\nThis test takes slightly over one second." + self.saved_server = options["imap", "server"] + options["imap", "server"] = "" + thread.start_new_thread(run, (True,)) + # Wait for it to be ready. + time.sleep(1) + + def tearDown(self): + options["imap", "server"] = self.saved_server + # Shutdown as though through the web UI. + from urllib import urlopen, urlencode + urlopen('http://localhost:%d/save' % options["html_ui", "port"], + urlencode({'how': _('Save & shutdown')})).read() + + def test_UI(self): + # Smoke-test the HTML UI. + httpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + httpServer.connect(('localhost', options["html_ui", "port"])) + httpServer.send("get / HTTP/1.0\r\n\r\n") + response = '' + while 1: + packet = httpServer.recv(1024) + if not packet: break + response += packet + self.assert_(re.search(r"(?s).*SpamBayes IMAP Filter.*", + response)) + + def suite(): suite = unittest.TestSuite() *************** *** 765,768 **** --- 796,800 ---- IMAPFilterTest, SFBugsTest, + InterfaceTest, ): suite.addTest(unittest.makeSuite(cls)) From anadelonbrin at users.sourceforge.net Tue Jan 4 01:19:36 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:19:39 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.50,1.51 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1932/scripts Modified Files: sb_imapfilter.py Log Message: Allow the UI to be served even if it would otherwise not be for testing purposes (this is never used by the script running regularly). Fix a typo identified by Thomas Heller. Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** sb_imapfilter.py 23 Dec 2004 18:14:32 -0000 1.50 --- sb_imapfilter.py 4 Jan 2005 00:19:34 -0000 1.51 *************** *** 978,982 **** ! def run(): try: opts, args = getopt.getopt(sys.argv[1:], 'hbPtcvl:e:i:d:p:o:') --- 978,982 ---- ! def run(force_UI=False): try: opts, args = getopt.getopt(sys.argv[1:], 'hbPtcvl:e:i:d:p:o:') *************** *** 1051,1055 **** else: pwd = None ! if not launchUI: print "You need to specify both a server and a username." sys.exit() --- 1051,1055 ---- else: pwd = None ! if not launchUI and not force_UI: print "You need to specify both a server and a username." sys.exit() *************** *** 1088,1092 **** # Load stats manager. ! stats = Stats(options, message_db) httpServer = UserInterfaceServer(options["html_ui", "port"]) --- 1088,1092 ---- # Load stats manager. ! stats = Stats.Stats(options, message_db) httpServer = UserInterfaceServer(options["html_ui", "port"]) From anadelonbrin at users.sourceforge.net Tue Jan 4 01:29:59 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:30:01 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3975/fr_FR Log Message: Directory /cvsroot/spambayes/spambayes/languages/fr_FR added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:30:22 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:30:25 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR/DIALOGS - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4129/DIALOGS Log Message: Directory /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:30:37 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:30:40 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR/LC_MESSAGES - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR/LC_MESSAGES In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4176/LC_MESSAGES Log Message: Directory /cvsroot/spambayes/spambayes/languages/fr_FR/LC_MESSAGES added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:36:25 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:36:27 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR __init__.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5363/languages/fr_FR Added Files: __init__.py Log Message: Initial French translation (currently just the Outlook dialog, excluding bits from the source code). --- NEW FILE: __init__.py --- """Design-time __init__.py for resourcepackage This is the scanning version of __init__.py for your resource modules. You replace it with a blank or doc-only init when ready to release. """ try: __file__ except NameError: pass else: import os if os.path.splitext(os.path.basename( __file__ ))[0] == "__init__": try: from resourcepackage import package, defaultgenerators generators = defaultgenerators.generators.copy() ### CUSTOMISATION POINT ## import specialised generators here, such as for wxPython #from resourcepackage import wxgenerators #generators.update( wxgenerators.generators ) except ImportError: pass else: package = package.Package( packageName = __name__, directory = os.path.dirname( os.path.abspath(__file__) ), generators = generators, ) package.scan( ### CUSTOMISATION POINT ## force true -> always re-loads from external files, otherwise ## only reloads if the file is newer than the generated .py file. # force = 1, ) From anadelonbrin at users.sourceforge.net Tue Jan 4 01:36:51 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:36:54 2005 Subject: [Spambayes-checkins] spambayes/languages/es - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5458/es Log Message: Directory /cvsroot/spambayes/spambayes/languages/es added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:37:05 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:37:08 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5504/es_AR Log Message: Directory /cvsroot/spambayes/spambayes/languages/es_AR added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:37:20 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:37:21 2005 Subject: [Spambayes-checkins] spambayes/languages/es/DIALOGS - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5598/DIALOGS Log Message: Directory /cvsroot/spambayes/spambayes/languages/es/DIALOGS added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:37:32 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:37:34 2005 Subject: [Spambayes-checkins] spambayes/languages/es/LC_MESSAGES - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es/LC_MESSAGES In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5646/LC_MESSAGES Log Message: Directory /cvsroot/spambayes/spambayes/languages/es/LC_MESSAGES added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:40:58 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:41:01 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR/DIALOGS - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6338/DIALOGS Log Message: Directory /cvsroot/spambayes/spambayes/languages/es_AR/DIALOGS added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:41:09 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:41:12 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR/LC_MESSAGES - New directory Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR/LC_MESSAGES In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6411/LC_MESSAGES Log Message: Directory /cvsroot/spambayes/spambayes/languages/es_AR/LC_MESSAGES added to the repository From anadelonbrin at users.sourceforge.net Tue Jan 4 01:42:31 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:42:34 2005 Subject: [Spambayes-checkins] spambayes/languages .cvsignore,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6610/languages Added Files: .cvsignore Log Message: Ignore pyc/pyo --- NEW FILE: .cvsignore --- *.pyc *.pyo From anadelonbrin at users.sourceforge.net Tue Jan 4 01:42:31 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:42:35 2005 Subject: [Spambayes-checkins] spambayes/languages/es .cvsignore,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6610/languages/es Added Files: .cvsignore Log Message: Ignore pyc/pyo --- NEW FILE: .cvsignore --- *.pyc *.pyo From anadelonbrin at users.sourceforge.net Tue Jan 4 01:42:32 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:42:35 2005 Subject: [Spambayes-checkins] spambayes/languages/es/DIALOGS .cvsignore, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6610/languages/es/DIALOGS Added Files: .cvsignore Log Message: Ignore pyc/pyo --- NEW FILE: .cvsignore --- *.pyc *.pyo From anadelonbrin at users.sourceforge.net Tue Jan 4 01:42:32 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:42:36 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR .cvsignore,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6610/languages/es_AR Added Files: .cvsignore Log Message: Ignore pyc/pyo --- NEW FILE: .cvsignore --- *.pyc *.pyo From anadelonbrin at users.sourceforge.net Tue Jan 4 01:42:33 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:42:38 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR/DIALOGS .cvsignore, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6610/languages/es_AR/DIALOGS Added Files: .cvsignore Log Message: Ignore pyc/pyo --- NEW FILE: .cvsignore --- *.pyc *.pyo From anadelonbrin at users.sourceforge.net Tue Jan 4 01:42:33 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:42:38 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR .cvsignore,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6610/languages/fr_FR Added Files: .cvsignore Log Message: Ignore pyc/pyo --- NEW FILE: .cvsignore --- *.pyc *.pyo From anadelonbrin at users.sourceforge.net Tue Jan 4 01:42:33 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:42:39 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR/DIALOGS .cvsignore, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6610/languages/fr_FR/DIALOGS Added Files: .cvsignore Log Message: Ignore pyc/pyo --- NEW FILE: .cvsignore --- *.pyc *.pyo From anadelonbrin at users.sourceforge.net Tue Jan 4 01:36:25 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 01:53:53 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR/DIALOGS dialogs.rc, NONE, 1.1 i18n_dialogs.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5363/languages/fr_FR/DIALOGS Added Files: dialogs.rc i18n_dialogs.py Log Message: Initial French translation (currently just the Outlook dialog, excluding bits from the source code). --- NEW FILE: dialogs.rc --- //Microsoft Developer Studio generated resource script. // #include "dialogs.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" // spambayes dialog definitions ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_FR #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_ADVANCED DIALOGEX 0, 0, 248, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Avancé" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN GROUPBOX "Délais de filtrage",IDC_STATIC,7,3,234,117 CONTROL "",IDC_DELAY1_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,36,148,22 LTEXT "Délai avant filtrage",IDC_STATIC,16,26,101,8 EDITTEXT IDC_DELAY1_TEXT,165,39,40,14,ES_AUTOHSCROLL LTEXT "secondes",IDC_STATIC,208,41,28,8 CONTROL "",IDC_DELAY2_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,73,148,22 LTEXT "Délai de filtrage entre deux messages",IDC_STATIC,16,62,142,8 EDITTEXT IDC_DELAY2_TEXT,165,79,40,14,ES_AUTOHSCROLL LTEXT "secondes",IDC_STATIC,207,82,28,8 CONTROL "Seulement pour les dossiers qui reçoivent de nouveaux messages", IDC_INBOX_TIMER_ONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,100,217,10 PUSHBUTTON "Afficher le répertoire de données",IDC_SHOW_DATA_FOLDER,7,238,70,14 CONTROL "Activer le filtrage en tâche de fond",IDC_BUT_TIMER_ENABLED, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,12,162,10 PUSHBUTTON "Diagnostiques...",IDC_BUT_SHOW_DIAGNOSTICS,171,238,70,14 END IDD_STATISTICS DIALOG DISCARDABLE 0, 0, 248, 257 STYLE WS_CHILD | WS_CAPTION CAPTION "Statistiques" FONT 8, "Tahoma" BEGIN GROUPBOX "Statistiques",IDC_STATIC,7,3,241,229 LTEXT "some stats\nand some more\nline 3\nline 4\nline 5", IDC_STATISTICS,12,12,230,204 PUSHBUTTON "Remise à 0 des statistiques",IDC_BUT_RESET_STATS,178,238,70,14 LTEXT "Dernière remise à 0 :",IDC_STATIC,7,241,36,8 LTEXT "<<>>",IDC_LAST_RESET_DATE,47,241,107,8 END IDD_MANAGER DIALOGEX 0, 0, 275, 308 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Manager" FONT 8, "Tahoma" BEGIN DEFPUSHBUTTON "Fermer",IDOK,216,287,50,14 PUSHBUTTON "Annuler",IDCANCEL,155,287,50,14,NOT WS_VISIBLE CONTROL "",IDC_TAB,"SysTabControl32",0x0,8,7,258,276 PUSHBUTTON "A propos...",IDC_ABOUT_BTN,8,287,50,14 END IDD_FILTER_SPAM DIALOGEX 0, 0, 251, 147 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU CAPTION "Spam" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "Dossiers à filtrer lors de l'arrivée de nouveaux messages", IDC_STATIC,8,9,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,7,20,177,12 PUSHBUTTON "&Parcourir...",IDC_BROWSE_WATCH,194,19,50,14 GROUPBOX "Spam sûr",IDC_STATIC,7,43,237,80 LTEXT "Pour être considéré comme un spam, un message doit obtenir une note d'au moins", IDC_STATIC,13,52,212,10 CONTROL "",IDC_SLIDER_CERTAIN,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,62,165,22 EDITTEXT IDC_EDIT_CERTAIN,184,63,51,14,ES_AUTOHSCROLL LTEXT "et ces messages doivent être :",IDC_STATIC,13,82,107,10 COMBOBOX IDC_ACTION_CERTAIN,13,93,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "dans le dossier",IDC_STATIC,75,95,31,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,120,93,59,14 PUSHBUTTON "P&arcourir...",IDC_BROWSE_CERTAIN,184,93,50,14 CONTROL "Marquer les messages comme &lus",IDC_MARK_SPAM_AS_READ,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,110,81,10 END IDD_FILTER_UNSURE DIALOGEX 0, 0, 249, 124 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU CAPTION "Messages douteux" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "Pour être considéré comme douteux, un message doit obtenir une note d'au moins", IDC_STATIC,12,11,212,10 CONTROL "",IDC_SLIDER_UNSURE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,18,165,20 EDITTEXT IDC_EDIT_UNSURE,183,24,54,14,ES_AUTOHSCROLL LTEXT "et ces messages doivent être :",IDC_STATIC,12,38,107,10 COMBOBOX IDC_ACTION_UNSURE,12,49,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "dans le dossier",IDC_STATIC,74,52,31,10 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,119,49,59,14 PUSHBUTTON "Pa&rcourir",IDC_BROWSE_UNSURE,183,49,50,14 CONTROL "Marquer les messages l&us",IDC_MARK_UNSURE_AS_READ, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,70,101,10 END IDD_DIAGNOSTIC DIALOGEX 0, 0, 183, 98 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Diagnostiques" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "Ces options avancées sont fournies à des fins de diagnostiques et déboguage seulement. Vous ne devriez changer les valeurs que sur demande ou si vous savez exactement ce que vous faites.", IDC_STATIC,5,3,174,36 LTEXT "Verbosité du log",IDC_STATIC,5,44,56,8 EDITTEXT IDC_VERBOSE_LOG,73,42,40,14,ES_AUTOHSCROLL PUSHBUTTON "Voir le fichier de log...",IDC_BUT_VIEW_LOG,129,41,50,14 CONTROL "Enregistrer la note attribuée",IDC_SAVE_SPAM_SCORE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,5,63,72,10 PUSHBUTTON "Annuler",IDCANCEL,69,79,50,14,NOT WS_VISIBLE DEFPUSHBUTTON "Fermer",IDOK,129,79,50,14 END IDD_WIZARD DIALOGEX 0, 0, 384, 190 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Assistant de configuration SpamBayes" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN PUSHBUTTON "Annuler",IDCANCEL,328,173,50,14 PUSHBUTTON "<< Précédent",IDC_BACK_BTN,216,173,50,14 DEFPUSHBUTTON "Suivant>>,Fin",IDC_FORWARD_BTN,269,173,50,14 CONTROL "",IDC_PAGE_PLACEHOLDER,"Static",SS_ETCHEDFRAME,75,4,303, 167 CONTROL 125,IDC_WIZ_GRAPHIC,"Static",SS_BITMAP,0,0,69,190 END IDD_WIZARD_WELCOME DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Bienvenue dans l'assistant de paramétrage de SpamBayes", IDC_STATIC,20,4,191,14 LTEXT "Cet assistant va vous guider dans le paramétrage du module SpamBayes pour Outlook. Merci de préciser où vous en êtes pour le paramétrage.", IDC_STATIC,20,20,255,18 CONTROL "Je n'ai rien préparé du tout pour SpamBayes.", IDC_BUT_PREPARATION,"Button",BS_AUTORADIOBUTTON | BS_TOP | WS_GROUP,20,42,190,11 CONTROL "J'ai déjà filtré les bon messages (ham) et les mauvais (spam) dans des dossiers séparés adaptés à l'entraînement.", IDC_STATIC,"Button",BS_AUTORADIOBUTTON | BS_TOP | BS_MULTILINE,20,59,255,18 CONTROL "Je préfère me débrouiller tout seul pour configurer SpamBayes.", IDC_STATIC,"Button",BS_AUTORADIOBUTTON | BS_TOP,20,82, 187,12 LTEXT "Pour plus d'informations sur l'entraînement et le paramétrage de SpamBayes, cliquer sur le bouton A propos.", IDC_STATIC,20,103,185,20 PUSHBUTTON "A propos...",IDC_BUT_ABOUT,215,104,60,15 LTEXT "Si vous quittez l'assistant, vous pouvez le relancer à partir du SpamBayes Manager, disponible sur la barre d'outil SpamBayes.", IDC_STATIC,20,137,232,17 END IDD_WIZARD_FINISHED_UNTRAINED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Bravo !",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes est maintenant paramétré et prêt à filtrer sur vos messages", IDC_STATIC,20,22,247,16 LTEXT "Comme SpamBayes ne s'est pas encore entraîné, tous les messages vont être rangés 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'.", IDC_STATIC,20,42,247,27 LTEXT "Pour accélérer l'entraînement, vous pouvez déplacer manuellement tous les spams de votre 'Boîte de réception' dans le dossier 'Spam', et alors sélectionner 'Entraînement' depuis le SpamBayes manager.", IDC_STATIC,20,83,247,31 LTEXT "Plus le programme s'entraîne et plus la fiabilité augmente. Notez qu'après seulement quelques messages le résultat est étonnant.", IDC_STATIC,20,69,247,15 LTEXT "Cliquer sur Fin pour sortir de l'assistant.",IDC_STATIC,20,121, 148,9 END IDD_WIZARD_FOLDERS_REST DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Parcourir...",IDC_BROWSE_SPAM,208,85,60,15 LTEXT "Dossiers Spam et Douteux",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes utilise deux dossiers pour gérer le spam. Un dossier 'sûr' pour stocker le spam et un dossier 'douteux' qu'il vous faudra aiguiller manuellement.", IDC_STATIC,20,20,247,22 LTEXT "Si vous entrez un nom de dossier qui n'existe pas, il va être créé automatiquement. Pour choisir un dossier existant, cliquer sur Parcourir.", IDC_STATIC,20,44,243,24 EDITTEXT IDC_FOLDER_CERTAIN,20,85,179,14,ES_AUTOHSCROLL LTEXT "Les messages douteux vont être rangés dans le dossier nommé", IDC_STATIC,20,105,186,12 EDITTEXT IDC_FOLDER_UNSURE,20,117,177,14,ES_AUTOHSCROLL LTEXT "Les messages spam vont être rangés dans le dossier nommé",IDC_STATIC,20, 72,137,8 PUSHBUTTON "Parcourir...",IDC_BROWSE_UNSURE,208,117,60,15 END IDD_WIZARD_FOLDERS_WATCH DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Parcourir...",IDC_BROWSE_WATCH,225,134,50,14 LTEXT "Dossiers recevant les nouveaux messages",IDC_STATIC,20,4,247, 14 LTEXT "SpamBayes a besoin de connaitre les dossiers utilisés pour réceptionner les nouveaux messages. En général, il s'agit du dossier 'Boîte de réception', mais vous pouvez en préciser d'autres à filtrer.", IDC_STATIC,20,21,247,25 LTEXT "Les dossiers suivants seront filtrés. Uiliser le bouton Parcourir pour changer la liste puis cliquer sur Suivant.", IDC_STATIC,20,79,247,20 LTEXT "Astuce : si vous utilisez des règles d'aiguillage de messages, vous devriez ajouter les dossiers destination à la liste.", IDC_STATIC,20,51,241,20 EDITTEXT IDC_FOLDER_WATCH,20,100,195,48,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY END IDD_WIZARD_FINISHED_UNCONFIGURED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Annulation du paramétrage",IDC_STATIC,20,4,247,14 LTEXT "L'écran principal de SpamBayes va maintenant être affiché. Vous devez définir les dossiers et activer SpamBayes pour commencer à filtrer les messages.", IDC_STATIC,20,29,247,16 LTEXT "Cliquer sur Fin pour quitter l'assistant.",IDC_STATIC,20,139, 148,9 END IDD_WIZARD_FOLDERS_TRAIN DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Parcourir...",IDC_BROWSE_HAM,208,49,60,15 LTEXT "Entraînement",IDC_STATIC,20,4,247,10 LTEXT "Sélectionner les dossiers contenant les messages pré-triés, un pour les spams et un pour les bons messages.", IDC_STATIC,20,16,243,16 EDITTEXT IDC_FOLDER_HAM,20,49,179,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "Des exemples de messages spams ou indésirables figurent dans le dossier", IDC_STATIC,20,71,198,8 EDITTEXT IDC_FOLDER_CERTAIN,20,81,177,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "Des exemples de bons messages figurent dans le dossier",IDC_STATIC, 20,38,153,8 PUSHBUTTON "Parcourir...",IDC_BROWSE_SPAM,208,81,60,15 LTEXT "Si vous n'avez pas de messages pré-triés ou que vous avez déjà pratiqué l'entraînement ou voulez garder la base, cliquer sur Précédent et choisissez l'option 'Je n'ai rien préparé du tout'.", IDC_STATIC,20,128,243,26 CONTROL "Attribuer une note aux messages lorsque l'entraînement est terminé.", IDC_BUT_RESCORE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20, 108,163,16 END IDD_WIZARD_TRAIN DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Entraînement",-1,20,4,247,14 LTEXT "SpamBayes s'entraîne sur vos bons messages et sur les spams.", -1,20,22,247,16 CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,20,45,255, 11 LTEXT "(progress text)",IDC_PROGRESS_TEXT,20,61,257,10 END IDD_WIZARD_FINISHED_TRAINED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Bravo !",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes s'est entraîné et est maintenant paramétré. Les premiers résultats sont observables dès maintenant !", IDC_TRAINING_STATUS,20,35,247,26 LTEXT "Bien que SpamBayes ce soit entraîné, il continue à apprendre. Pensez à régulièrement vérifier le contenu du dossier 'Douteux', et utilisez les boutons 'C'est du spam' et 'Ce n'est pas du spam'.", IDC_STATIC,20,68,249,30 LTEXT "Cliquer sur Fin pour fermer l'assistant.",IDC_STATIC,20,104, 148,9 END IDD_WIZARD_TRAINING_IS_IMPORTANT DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes ne fonctionnera pas tant qu'il ne s'est pas entraîné.", IDC_STATIC,11,8,191,14 PUSHBUTTON "A propos de l'entraînement...",IDC_BUT_ABOUT,209,140,65,15 LTEXT "SpamBayes est un système qui apprend à reconnaître les bons et les mauvais messages à partir des exemples que vous lui donnez. A la base, il ne dispose d'aucun filtres, il doit donc être entraîné pour devenir effectif.", IDC_STATIC,11,21,263,30 LTEXT "Pour commencer, SpamBayes va aiguiller tous vos messages dans le dossier 'Douteux'. L'entraînement est simple : pour chaque message, vous spécifiez alors s'il s'agit de spam ou non à partir des boutons 'C'est du spam' et 'Ce n'est pas du spam'. Petit à petit, SpamBayes va apprendre à aiguiller vos messages.", IDC_STATIC,22,61,252,29 LTEXT "Cette option fermera l'assistant et vous dire comment aiguiller vos messages. Vous pourrez paramétrer SpamBayes et le rendre actif immédiatement sur vos messages", IDC_STATIC,22,106,252,27 LTEXT "Pour plus d'information, cliquer sur le bouton A propos de l'entraînement.", IDC_STATIC,11,143,187,12 CONTROL "Je veux stopper l'entraînement et laisser SpamBayes apprendre sur les nouveaux messages", IDC_BUT_UNTRAINED,"Button",BS_AUTORADIOBUTTON | WS_GROUP, 11,50,263,11 CONTROL "Je vais effectuer le pré-tri moi-même (bon / spam) et paramétrer SpamBayes plus tard", IDC_BUT_TRAIN,"Button",BS_AUTORADIOBUTTON,11,92,263,11 END IDD_WIZARD_FINISHED_TRAIN_LATER DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Paramétrage abandonné",IDC_STATIC,20,4,247,14 LTEXT "Pour effectuer l'entraînement initial, vous devriez créer deux dossiers, un contenant de bons messages et un autre des messages non sollicités.", IDC_STATIC,20,17,247,27 LTEXT "Cliquer sur Fin pour quitter l'assistant.",IDC_STATIC,20,145, 148,9 LTEXT "Pour des exemples de bons messages, vous pouvez utiliser votre 'Boîte de réception' mais vous evez être SÛR qu'elle ne contient aucun message non sollicité", IDC_STATIC,20,42,247,26 LTEXT "Si faire ce tri était trop fastidieux, créez simplement un dossier temporaire en mettant quelques messages en exemple.", IDC_STATIC,20,58,247,17 LTEXT "Pour des exemples de messages non sollicités vous pouvez utiliser le dossier 'Eléments supprimés'. Si faire ce tri était trop fastidieux, créez simplement un dossier temporaire en mettant quelques messages en exemple.", IDC_STATIC,20,80,247,35 LTEXT "Lorsque vous aurez terminé, ouvrez le SpamBayes Manager via la barre d'outil SpamBayes, et redémarrez l'assistant.", IDC_STATIC,20,121,245,17 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_ADVANCED, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 241 VERTGUIDE, 16 BOTTOMMARGIN, 204 END IDD_MANAGER, DIALOG BEGIN BOTTOMMARGIN, 253 END IDD_FILTER_SPAM, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 244 TOPMARGIN, 7 BOTTOMMARGIN, 140 END IDD_FILTER_UNSURE, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 242 TOPMARGIN, 7 BOTTOMMARGIN, 117 END IDD_DIAGNOSTIC, DIALOG BEGIN LEFTMARGIN, 5 RIGHTMARGIN, 179 BOTTOMMARGIN, 93 END IDD_WIZARD, DIALOG BEGIN RIGHTMARGIN, 378 END IDD_WIZARD_WELCOME, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 275 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_UNTRAINED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FOLDERS_REST, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 268 BOTTOMMARGIN, 161 HORZGUIDE, 85 HORZGUIDE, 117 END IDD_WIZARD_FOLDERS_WATCH, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_UNCONFIGURED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FOLDERS_TRAIN, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 268 BOTTOMMARGIN, 161 HORZGUIDE, 49 HORZGUIDE, 81 END IDD_WIZARD_TRAIN, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_TRAINED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_TRAINING_IS_IMPORTANT, DIALOG BEGIN VERTGUIDE, 11 VERTGUIDE, 22 VERTGUIDE, 274 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_TRAIN_LATER, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Bitmap // IDB_SBLOGO BITMAP MOVEABLE PURE "sblogo.bmp" IDB_SBWIZLOGO BITMAP MOVEABLE PURE "sbwizlogo.bmp" #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // French (France) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA) #ifdef _WIN32 LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_FR #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_GENERAL DIALOGEX 0, 0, 253, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "General" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes Version",IDC_VERSION,6,54,242,8 LTEXT "SpamBayes a besoin de s'entraîner avant d'être activé. Cliquer sur l'onglet 'Entraînement', ou utilisez l'assistant en vous laissant guider.", IDC_STATIC,6,67,242,17 LTEXT "Status de la base d'entraînement :",IDC_STATIC,6,90,222,8 LTEXT "123 spams ; 456 bons messages\r\nLine2\r\nLine3", IDC_TRAINING_STATUS,6,101,242,27,SS_SUNKEN CONTROL "Activer SpamBayes",IDC_BUT_FILTER_ENABLE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,6,221,97,11 LTEXT "Les messages classifiés comme spam sont aiguillés dans le dossier Folder1\nLes messages douteux sont également aiguillés", IDC_FILTER_STATUS,6,146,242,67,SS_SUNKEN PUSHBUTTON "Revenir au paramétrage initial...",IDC_BUT_RESET,6,238,84,15 PUSHBUTTON "Assistant...",IDC_BUT_WIZARD,164,238,84,15 LTEXT "Status des filtres :",IDC_STATIC,6,135,222,8 CONTROL 1062,IDC_LOGO_GRAPHIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE,0,2,275,52 END IDD_TRAINING DIALOGEX 0, 0, 252, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Entraînement" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN GROUPBOX "",IDC_STATIC,5,1,243,113 LTEXT "Dossiers contenant les bons messages",IDC_STATIC,11,11,131, 11 CONTROL "",IDC_STATIC_HAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,11,21,175,12 PUSHBUTTON "&Parcourir...",IDC_BROWSE_HAM,192,20,50,14 LTEXT "Dossiers contenant les messages non sollicités",IDC_STATIC, 11,36,171,9 CONTROL "Static",IDC_STATIC_SPAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,11,46,174,12 PUSHBUTTON "P&arcourir...",IDC_BROWSE_SPAM,192,46,50,14 CONTROL "Attribuer une note aux messages après l'entraînement",IDC_BUT_RESCORE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,11,64,111,10 CONTROL "&Reconstruire toute la base",IDC_BUT_REBUILD,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,137,64,92,10 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER, 11,76,231,11 PUSHBUTTON "&Commencer l'entraînement",IDC_START,11,91,54,14,BS_NOTIFY LTEXT "status entraînement status entraînement status entraînement status entraînement status entraînements status entraînement status entraînement", IDC_PROGRESS_TEXT,75,89,149,17 GROUPBOX "Entraînement incremental",IDC_STATIC,4,117,244,87 CONTROL "Déplacer un message d'un dossier spam à la 'Boîte de réception' participe à l'entraînement.", IDC_BUT_TRAIN_FROM_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,127,204,18 LTEXT "Lors d'un click sur 'Ce n'est pas du spam'",IDC_STATIC,10,148, 115,10 COMBOBOX IDC_RECOVER_RS,127,145,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Déplacer un message d'un dossier de la 'Boîte de réception' au dossier 'Spam' participe à l'entraînement.", IDC_BUT_TRAIN_TO_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,163,204,16 LTEXT "Lors d'un click sur 'C'est du spam'",IDC_STATIC,10,183,104,10 COMBOBOX IDC_DEL_SPAM_RS,127,180,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END IDD_FILTER_NOW DIALOGEX 0, 0, 244, 185 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filtrer maintenant" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Filtrer les dossiers suivants",IDC_STATIC,8,9,168,11 CONTROL "Dossiers...\nLine 2",IDC_FOLDER_NAMES,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,7,20,172, 12 PUSHBUTTON "Parcourir...",IDC_BROWSE,187,19,50,14 GROUPBOX "Filtres et actions",IDC_STATIC,7,38,230,40,WS_GROUP CONTROL "Effectuer les actions (aiguillage du message)",IDC_BUT_ACT_ALL,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,49,126,10 CONTROL "Attribuer une note mais ne pas effectuer d'action", IDC_BUT_ACT_SCORE,"Button",BS_AUTORADIOBUTTON,15,62,203, 10 GROUPBOX "Restrendre le filtre",IDC_STATIC,7,84,230,35,WS_GROUP CONTROL "Aux messages non lus",IDC_BUT_UNREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,94,149,9 CONTROL "Aux messages qui n'ont pas eu de note attribuée",IDC_BUT_UNSEEN, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,106,149,9 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7, 129,230,11 LTEXT "Static",IDC_PROGRESS_TEXT,7,144,227,10 DEFPUSHBUTTON "Démarrer le filtrage",IDC_START,7,161,52,14 PUSHBUTTON "Fermer",IDCANCEL,187,162,50,14 END IDD_FILTER DIALOGEX 0, 0, 249, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filtrage" FONT 8, "Tahoma" BEGIN LTEXT "Filtrer les dossiers suivant lors de la réception de nouveaux messages", IDC_STATIC,8,4,168,11 CONTROL "Dossiers...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,7,16,177,12 PUSHBUTTON "Parcourir...",IDC_BROWSE_WATCH,192,14,50,14 GROUPBOX "Spam sûr",IDC_STATIC,7,33,235,80 LTEXT "Pour être considéré comme un spam, un message doit obtenir une note d'au moins", IDC_STATIC,13,42,212,10 CONTROL "Slider1",IDC_SLIDER_CERTAIN,"msctls_trackbar32", TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,52,165,22 EDITTEXT IDC_EDIT_CERTAIN,184,53,51,14,ES_AUTOHSCROLL LTEXT "et ces messages doivent être :",IDC_STATIC,13,72,107,10 COMBOBOX IDC_ACTION_CERTAIN,12,83,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "dans le dossier",IDC_STATIC,71,85,28,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,83,77,14 PUSHBUTTON "&Parcourir",IDC_BROWSE_CERTAIN,184,83,50,14 GROUPBOX "Message douteux",IDC_STATIC,6,117,235,81 LTEXT "Pour être considéré comme douteux, un message doit obtenir une note d'au moins", IDC_STATIC,12,128,212,10 CONTROL "Slider1",IDC_SLIDER_UNSURE,"msctls_trackbar32", TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,135,165,20 EDITTEXT IDC_EDIT_UNSURE,183,141,54,14,ES_AUTOHSCROLL LTEXT "et ces messages doivent être :",IDC_STATIC,12,155,107,10 COMBOBOX IDC_ACTION_UNSURE,12,166,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "dans le dossier",IDC_STATIC,71,169,27,10 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,166,77,14 PUSHBUTTON "P&arcourir",IDC_BROWSE_UNSURE,184,166,50,14 CONTROL "Marquer les spams comme lus",IDC_MARK_SPAM_AS_READ,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,100,81,10 CONTROL "Marquer les messages douteux comme lus",IDC_MARK_UNSURE_AS_READ, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,186,101,10 GROUPBOX "Bons messages",IDC_STATIC,6,203,235,48 LTEXT "Ces messages doivent être :",IDC_STATIC,12,215,107,10 COMBOBOX IDC_ACTION_HAM,12,228,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "dans le dossier",IDC_STATIC,71,230,27,10 CONTROL "(folder name)",IDC_FOLDER_HAM,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,228,77,14 PUSHBUTTON "Pa&rcourir...",IDC_BROWSE_HAM,184,228,50,14 END IDD_FOLDER_SELECTOR DIALOGEX 0, 0, 247, 215 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "&Dossiers :",IDC_STATIC,7,7,47,9 CONTROL "",IDC_LIST_FOLDERS,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_CHECKBOXES | WS_BORDER | WS_TABSTOP,7,21,172,140 CONTROL "(sub)",IDC_BUT_SEARCHSUB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,167,126,9 LTEXT "(status1)",IDC_STATUS1,7,180,220,9 LTEXT "(status2)",IDC_STATUS2,7,194,220,9 DEFPUSHBUTTON "OK",IDOK,190,21,50,14 PUSHBUTTON "Annuler",IDCANCEL,190,39,50,14 PUSHBUTTON "&Tout effacer",IDC_BUT_CLEARALL,190,58,50,14 PUSHBUTTON "&Nouveau dossier",IDC_BUT_NEW,190,77,50,14 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_GENERAL, DIALOG BEGIN RIGHTMARGIN, 248 VERTGUIDE, 6 BOTTOMMARGIN, 205 END IDD_TRAINING, DIALOG BEGIN RIGHTMARGIN, 241 VERTGUIDE, 11 VERTGUIDE, 242 BOTTOMMARGIN, 207 END IDD_FILTER_NOW, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 237 TOPMARGIN, 9 BOTTOMMARGIN, 176 END IDD_FILTER, DIALOG BEGIN BOTTOMMARGIN, 254 HORZGUIDE, 127 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Bitmap // IDB_FOLDERS BITMAP MOVEABLE PURE "folders.bmp" #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE MOVEABLE PURE BEGIN "dialogs.h\0" END 2 TEXTINCLUDE MOVEABLE PURE BEGIN "#include ""winres.h""\r\n" "// spambayes dialog definitions\r\n" "\0" END 3 TEXTINCLUDE MOVEABLE PURE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // French (France) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED --- NEW FILE: i18n_dialogs.py --- #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_=33539 _rc_mtime_=1104793737 try: _ except NameError: def _(s): 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, 183, 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, 174, 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, (129, 41, 50, 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, (129, 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, 131, 11), 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, 54, 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, (75, 89, 149, 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, 115, 10), 1342177280], [133, '', 1075, (127, 145, 114, 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, 104, 10), 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, (216, 173, 50, 14), 1342177280], [128, _('Suivant>>,Fin'), 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, _('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, 247, 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, 50, 14), 1342177281], [128, _('Annuler'), 2, (190, 39, 50, 14), 1342177280], [128, _('&Tout effacer'), 1042, (190, 58, 50, 14), 1342177280], [128, _('&Nouveau dossier'), 1046, (190, 77, 50, 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, (178, 238, 70, 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, 70, 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, 20), 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, 52, 14), 1342177281], [128, _('Fermer'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _("SpamBayes ne fonctionnera pas tant qu'il ne s'est pas entra\xeen\xe9."), -1, (11, 8, 191, 14), 1342177280], [128, _("A propos de l'entra\xeenement..."), 1017, (209, 140, 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, 263, 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 petit, SpamBayes va apprendre \xe0 aiguiller vos messages."), -1, (22, 61, 252, 29), 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, 106, 252, 27), 1342177280], [130, _("Pour plus d'information, cliquer sur le bouton A propos de l'entra\xeenement."), -1, (11, 143, 187, 12), 1342177280], [128, _("Je veux stopper l'entra\xeenement et laisser SpamBayes apprendre sur les nouveaux messages"), 1088, (11, 50, 263, 11), 1342308361], [128, _('Je vais effectuer le pr\xe9-tri moi-m\xeame (bon / spam) et param\xe9trer SpamBayes plus tard'), 1089, (11, 92, 263, 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, 84, 15), 1342177280], [128, _('Assistant...'), 1070, (164, 238, 84, 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, 27, 10), 1342177280], [130, _('(folder name)'), 1033, (102, 166, 77, 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, 27, 10), 1342177280], [130, _('(folder name)'), 1083, (102, 228, 77, 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): return FakeParser() From anadelonbrin at users.sourceforge.net Tue Jan 4 02:05:15 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:05:18 2005 Subject: [Spambayes-checkins] spambayes/languages/es __init__.py,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10869/languages/es Added Files: __init__.py Log Message: Initial Spanish translation (thanks to Hernán Foffani). This is just the General tab of the plug-in at the moment. --- NEW FILE: __init__.py --- """Design-time __init__.py for resourcepackage This is the scanning version of __init__.py for your resource modules. You replace it with a blank or doc-only init when ready to release. """ try: __file__ except NameError: pass else: import os if os.path.splitext(os.path.basename( __file__ ))[0] == "__init__": try: from resourcepackage import package, defaultgenerators generators = defaultgenerators.generators.copy() ### CUSTOMISATION POINT ## import specialised generators here, such as for wxPython #from resourcepackage import wxgenerators #generators.update( wxgenerators.generators ) except ImportError: pass else: package = package.Package( packageName = __name__, directory = os.path.dirname( os.path.abspath(__file__) ), generators = generators, ) package.scan( ### CUSTOMISATION POINT ## force true -> always re-loads from external files, otherwise ## only reloads if the file is newer than the generated .py file. # force = 1, ) From anadelonbrin at users.sourceforge.net Tue Jan 4 02:05:15 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:05:19 2005 Subject: [Spambayes-checkins] spambayes/languages/es/DIALOGS dialogs.rc, NONE, 1.1 i18n_dialogs.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10869/languages/es/DIALOGS Added Files: dialogs.rc i18n_dialogs.py Log Message: Initial Spanish translation (thanks to Hernán Foffani). This is just the General tab of the plug-in at the moment. --- NEW FILE: dialogs.rc --- //Microsoft Developer Studio generated resource script. // #include "dialogs.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" // spambayes dialog definitions ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Inglés (Estados Unidos) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_ADVANCED DIALOGEX 0, 0, 248, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Advanced" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN GROUPBOX "Filter timer",IDC_STATIC,7,3,234,117 CONTROL "",IDC_DELAY1_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,36,148,22 LTEXT "Processing start delay",IDC_STATIC,16,26,101,8 EDITTEXT IDC_DELAY1_TEXT,165,39,40,14,ES_AUTOHSCROLL LTEXT "seconds",IDC_STATIC,208,41,28,8 CONTROL "",IDC_DELAY2_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,73,148,22 LTEXT "Delay between processing items",IDC_STATIC,16,62,142,8 EDITTEXT IDC_DELAY2_TEXT,165,79,40,14,ES_AUTOHSCROLL LTEXT "seconds",IDC_STATIC,207,82,28,8 CONTROL "Only for folders that receive new mail", IDC_INBOX_TIMER_ONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,100,217,10 PUSHBUTTON "Show Data Folder",IDC_SHOW_DATA_FOLDER,7,238,70,14 CONTROL "Enable background filtering",IDC_BUT_TIMER_ENABLED, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,12,162,10 PUSHBUTTON "Diagnostics...",IDC_BUT_SHOW_DIAGNOSTICS,171,238,70,14 END IDD_STATISTICS DIALOG DISCARDABLE 0, 0, 248, 257 STYLE WS_CHILD | WS_CAPTION CAPTION "Statistics" FONT 8, "Tahoma" BEGIN GROUPBOX "Statistics",IDC_STATIC,7,3,241,229 LTEXT "some stats\nand some more\nline 3\nline 4\nline 5", IDC_STATISTICS,12,12,230,204 PUSHBUTTON "Reset Statistics",IDC_BUT_RESET_STATS,178,238,70,14 LTEXT "Last reset:",IDC_STATIC,7,241,36,8 LTEXT "<<>>",IDC_LAST_RESET_DATE,47,241,107,8 END IDD_MANAGER DIALOGEX 0, 0, 275, 308 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Manager" FONT 8, "Tahoma" BEGIN DEFPUSHBUTTON "Close",IDOK,216,287,50,14 PUSHBUTTON "Cancel",IDCANCEL,155,287,50,14,NOT WS_VISIBLE CONTROL "",IDC_TAB,"SysTabControl32",0x0,8,7,258,276 PUSHBUTTON "About",IDC_ABOUT_BTN,8,287,50,14 END IDD_FILTER_SPAM DIALOGEX 0, 0, 251, 147 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU CAPTION "Spam" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "Filter the following folders as messages arrive", IDC_STATIC,8,9,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,7,20,177,12 PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,194,19,50,14 GROUPBOX "Certain Spam",IDC_STATIC,7,43,237,80 LTEXT "To be considered certain spam, a message must score at least", IDC_STATIC,13,52,212,10 CONTROL "",IDC_SLIDER_CERTAIN,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,62,165,22 EDITTEXT IDC_EDIT_CERTAIN,184,63,51,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,13,82,107,10 COMBOBOX IDC_ACTION_CERTAIN,13,93,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,75,95,31,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,120,93,59,14 PUSHBUTTON "Browse",IDC_BROWSE_CERTAIN,184,93,50,14 CONTROL "Mark spam as read",IDC_MARK_SPAM_AS_READ,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,110,81,10 END IDD_FILTER_UNSURE DIALOGEX 0, 0, 249, 124 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU CAPTION "Possible Spam" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "To be considered uncertain, a message must score at least", IDC_STATIC,12,11,212,10 CONTROL "",IDC_SLIDER_UNSURE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,18,165,20 EDITTEXT IDC_EDIT_UNSURE,183,24,54,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,12,38,107,10 COMBOBOX IDC_ACTION_UNSURE,12,49,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,74,52,31,10 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,119,49,59,14 PUSHBUTTON "&Browse",IDC_BROWSE_UNSURE,183,49,50,14 CONTROL "Mark possible spam as read",IDC_MARK_UNSURE_AS_READ, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,70,101,10 END IDD_DIAGNOSTIC DIALOGEX 0, 0, 183, 98 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Diagnostics" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "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.", IDC_STATIC,5,3,174,36 LTEXT "Log file verbosity",IDC_STATIC,5,44,56,8 EDITTEXT IDC_VERBOSE_LOG,73,42,40,14,ES_AUTOHSCROLL PUSHBUTTON "View log...",IDC_BUT_VIEW_LOG,129,41,50,14 CONTROL "Save Spam Score",IDC_SAVE_SPAM_SCORE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,5,63,72,10 PUSHBUTTON "Cancel",IDCANCEL,69,79,50,14,NOT WS_VISIBLE DEFPUSHBUTTON "Close",IDOK,129,79,50,14 END IDD_WIZARD DIALOGEX 0, 0, 384, 190 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Configuration Wizard" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN PUSHBUTTON "Cancel",IDCANCEL,328,173,50,14 PUSHBUTTON "<< Back",IDC_BACK_BTN,216,173,50,14 DEFPUSHBUTTON "Next>>,Finish",IDC_FORWARD_BTN,269,173,50,14 CONTROL "",IDC_PAGE_PLACEHOLDER,"Static",SS_ETCHEDFRAME,75,4,303, 167 CONTROL 125,IDC_WIZ_GRAPHIC,"Static",SS_BITMAP,0,0,69,190 END IDD_WIZARD_WELCOME DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Welcome to the SpamBayes configuration wizard", IDC_STATIC,20,4,191,14 LTEXT "This wizard will help you configure the SpamBayes Outlook addin. Please indicate how you have prepared for this application.", IDC_STATIC,20,20,255,18 CONTROL "I haven't prepared for SpamBayes at all.", IDC_BUT_PREPARATION,"Button",BS_AUTORADIOBUTTON | BS_TOP | WS_GROUP,20,42,190,11 CONTROL "I have already sorted good messages (ham) and spam messages into folders that are suitable for training purposes.", IDC_STATIC,"Button",BS_AUTORADIOBUTTON | BS_TOP | BS_MULTILINE,20,59,255,18 CONTROL "I would prefer to configure SpamBayes manually.", IDC_STATIC,"Button",BS_AUTORADIOBUTTON | BS_TOP,20,82, 187,12 LTEXT "If you would like more information about training and configuring SpamBayes, click the About button.", IDC_STATIC,20,103,185,20 PUSHBUTTON "About...",IDC_BUT_ABOUT,215,104,60,15 LTEXT "If you cancel the wizard, you can access it again via the SpamBayes Manager, available from the SpamBayes toolbar.", IDC_STATIC,20,137,232,17 END IDD_WIZARD_FINISHED_UNTRAINED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Congratulations",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes is now configured and ready to start learning about your Spam", IDC_STATIC,20,22,247,16 LTEXT "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.", IDC_STATIC,20,42,247,27 LTEXT "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.", IDC_STATIC,20,83,247,31 LTEXT "As you train, you will find the accuracy of SpamBayes increases.", IDC_STATIC,20,69,247,15 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,121, 148,9 END IDD_WIZARD_FOLDERS_REST DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Browse...",IDC_BROWSE_SPAM,208,85,60,15 LTEXT "Spam and Unsure Folders",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes uses two folders to manage your Spam - a folder where 'certain' spam is stored, and another for unsure messages.", IDC_STATIC,20,20,247,22 LTEXT "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.", IDC_STATIC,20,44,243,24 EDITTEXT IDC_FOLDER_CERTAIN,20,85,179,14,ES_AUTOHSCROLL LTEXT "Unsure messages will be delivered to a folder named", IDC_STATIC,20,105,186,12 EDITTEXT IDC_FOLDER_UNSURE,20,117,177,14,ES_AUTOHSCROLL LTEXT "Spam will be delivered to a folder named",IDC_STATIC,20, 72,137,8 PUSHBUTTON "Browse...",IDC_BROWSE_UNSURE,208,117,60,15 END IDD_WIZARD_FOLDERS_WATCH DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,225,134,50,14 LTEXT "Folders that receive new messages",IDC_STATIC,20,4,247, 14 LTEXT "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.", IDC_STATIC,20,21,247,25 LTEXT "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.", IDC_STATIC,20,79,247,20 LTEXT "If you use the Outlook rule wizard to move messages into folders, you may like to select these folders in addition to your inbox.", IDC_STATIC,20,51,241,20 EDITTEXT IDC_FOLDER_WATCH,20,100,195,48,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY END IDD_WIZARD_FINISHED_UNCONFIGURED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Configuration cancelled",IDC_STATIC,20,4,247,14 LTEXT "The main SpamBayes options will now be displayed. You must define your folders and enable SpamBayes before it will begin filtering mail.", IDC_STATIC,20,29,247,16 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,139, 148,9 END IDD_WIZARD_FOLDERS_TRAIN DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Browse...",IDC_BROWSE_HAM,208,49,60,15 LTEXT "Training",IDC_STATIC,20,4,247,10 LTEXT "Please select the folders with the pre-sorted good messages and the folders with the pre-sorted spam messages.", IDC_STATIC,20,16,243,16 EDITTEXT IDC_FOLDER_HAM,20,49,179,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "Examples of Spam, or unwanted messages can be found in", IDC_STATIC,20,71,198,8 EDITTEXT IDC_FOLDER_CERTAIN,20,81,177,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "Examples of good messages can be found in",IDC_STATIC, 20,38,153,8 PUSHBUTTON "Browse...",IDC_BROWSE_SPAM,208,81,60,15 LTEXT "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.", IDC_STATIC,20,128,243,26 CONTROL "Score messages when training is complete", IDC_BUT_RESCORE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20, 108,163,16 END IDD_WIZARD_TRAIN DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Training",-1,20,4,247,14 LTEXT "SpamBayes is training on your good and spam messages.", -1,20,22,247,16 CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,20,45,255, 11 LTEXT "(progress text)",IDC_PROGRESS_TEXT,20,61,257,10 END IDD_WIZARD_FINISHED_TRAINED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Congratulations",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes has been successfully trained and configured. You should find the system is immediately effective at filtering spam.", IDC_TRAINING_STATUS,20,35,247,26 LTEXT "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.", IDC_STATIC,20,68,249,30 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,104, 148,9 END IDD_WIZARD_TRAINING_IS_IMPORTANT DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes will not be effective until it is trained.", IDC_STATIC,11,8,191,14 PUSHBUTTON "About Training...",IDC_BUT_ABOUT,209,140,65,15 LTEXT "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.", IDC_STATIC,11,21,263,30 LTEXT "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.", IDC_STATIC,22,61,252,29 LTEXT "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", IDC_STATIC,22,106,252,27 LTEXT "For more information, click the About Training button.", IDC_STATIC,11,143,187,12 CONTROL "I want to continue without training, and let SpamBayes learn as it goes", IDC_BUT_UNTRAINED,"Button",BS_AUTORADIOBUTTON | WS_GROUP, 11,50,263,11 CONTROL "I will pre-sort some good and spam messages, and configure SpamBayes later", IDC_BUT_TRAIN,"Button",BS_AUTORADIOBUTTON,11,92,263,11 END IDD_WIZARD_FINISHED_TRAIN_LATER DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Configuration suspended",IDC_STATIC,20,4,247,14 LTEXT "To perform initial training, you should create a folder that contains only examples of good messages, and another that contains only examples of spam.", IDC_STATIC,20,17,247,27 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,145, 148,9 LTEXT "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", IDC_STATIC,20,42,247,26 LTEXT "training. If you have too much spam in your Inbox, you may like to create a temporary folder and copy some examples to it.", IDC_STATIC,20,58,247,17 LTEXT "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.", IDC_STATIC,20,80,247,35 LTEXT "When you are finished, open the SpamBayes Manager via the SpamBayes toolbar, and re-start the Configuration Wizard.", IDC_STATIC,20,121,245,17 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_ADVANCED, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 241 VERTGUIDE, 16 BOTTOMMARGIN, 204 END IDD_MANAGER, DIALOG BEGIN BOTTOMMARGIN, 253 END IDD_FILTER_SPAM, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 244 TOPMARGIN, 7 BOTTOMMARGIN, 140 END IDD_FILTER_UNSURE, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 242 TOPMARGIN, 7 BOTTOMMARGIN, 117 END IDD_DIAGNOSTIC, DIALOG BEGIN LEFTMARGIN, 5 RIGHTMARGIN, 179 BOTTOMMARGIN, 93 END IDD_WIZARD, DIALOG BEGIN RIGHTMARGIN, 378 END IDD_WIZARD_WELCOME, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 275 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_UNTRAINED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FOLDERS_REST, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 268 BOTTOMMARGIN, 161 HORZGUIDE, 85 HORZGUIDE, 117 END IDD_WIZARD_FOLDERS_WATCH, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_UNCONFIGURED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FOLDERS_TRAIN, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 268 BOTTOMMARGIN, 161 HORZGUIDE, 49 HORZGUIDE, 81 END IDD_WIZARD_TRAIN, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_TRAINED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_TRAINING_IS_IMPORTANT, DIALOG BEGIN VERTGUIDE, 11 VERTGUIDE, 22 VERTGUIDE, 274 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_TRAIN_LATER, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Bitmap // IDB_SBLOGO BITMAP MOVEABLE PURE "sblogo.bmp" IDB_SBWIZLOGO BITMAP MOVEABLE PURE "sbwizlogo.bmp" #endif // Inglés (Estados Unidos) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // Inglés (Australia) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_GENERAL DIALOGEX 0, 0, 253, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "General" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes Version Here",IDC_VERSION,6,54,242,8 LTEXT "SpamBayes requiere entrenamiento previo para ser efectivo. Cliquee en la solapa 'Entrenamiento' o use el Asistente de Configuración para entrenar.", IDC_STATIC,6,67,242,17 LTEXT "Estado de la base de datos de entrenamiento:", IDC_STATIC,6,90,222,8 LTEXT "123 spam messages; 456 good messages\r\nLine2\r\nLine3", IDC_TRAINING_STATUS,6,101,242,27,SS_SUNKEN CONTROL "Habilitar SpamBayes",IDC_BUT_FILTER_ENABLE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,6,173,97,11 LTEXT "Certain spam is moved to Folder1\nPossible spam is moved too", IDC_FILTER_STATUS,6,146,242,19,SS_SUNKEN PUSHBUTTON "Reiniciar la Configuración...",IDC_BUT_RESET,6,238,106, 15 PUSHBUTTON "Asistente de Configuración...",IDC_BUT_WIZARD,142,238, 106,15 LTEXT "Estado del filtro:",IDC_STATIC,6,135,222,8 CONTROL 1062,IDC_LOGO_GRAPHIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE,0,2,275,52 END IDD_TRAINING DIALOGEX 0, 0, 252, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Training" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN GROUPBOX "",IDC_STATIC,5,1,243,113 LTEXT "Folders with known good messages.",IDC_STATIC,11,11,131, 11 CONTROL "",IDC_STATIC_HAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,11,21,175,12 PUSHBUTTON "&Browse...",IDC_BROWSE_HAM,192,20,50,14 LTEXT "Folders with spam or other junk messages.",IDC_STATIC, 11,36,171,9 CONTROL "Static",IDC_STATIC_SPAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,11,46,174,12 PUSHBUTTON "Brow&se...",IDC_BROWSE_SPAM,192,46,50,14 CONTROL "Score &messages after training",IDC_BUT_RESCORE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,11,64,111,10 CONTROL "&Rebuild entire database",IDC_BUT_REBUILD,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,137,64,92,10 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER, 11,76,231,11 PUSHBUTTON "&Start Training",IDC_START,11,91,54,14,BS_NOTIFY LTEXT "training status training status training status training status training status training status training status ", IDC_PROGRESS_TEXT,75,89,149,17 GROUPBOX "Incremental Training",IDC_STATIC,4,117,244,87 CONTROL "Train that a message is good when it is moved from a spam folder back to the Inbox.", IDC_BUT_TRAIN_FROM_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,127,204,18 LTEXT "Clicking 'Not Spam' button should",IDC_STATIC,10,148, 115,10 COMBOBOX IDC_RECOVER_RS,127,145,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Train that a message is spam when it is moved to the spam folder.", IDC_BUT_TRAIN_TO_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,163,204,16 LTEXT "Clicking 'Spam' button should",IDC_STATIC,10,183,104,10 COMBOBOX IDC_DEL_SPAM_RS,127,180,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END IDD_FILTER_NOW DIALOGEX 0, 0, 244, 185 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filter Now" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Filter the following folders",IDC_STATIC,8,9,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_NAMES,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,7,20,172, 12 PUSHBUTTON "Browse...",IDC_BROWSE,187,19,50,14 GROUPBOX "Filter action",IDC_STATIC,7,38,230,40,WS_GROUP CONTROL "Perform all filter actions",IDC_BUT_ACT_ALL,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,49,126,10 CONTROL "Score messages, but don't perform filter action", IDC_BUT_ACT_SCORE,"Button",BS_AUTORADIOBUTTON,15,62,203, 10 GROUPBOX "Restrict the filter to",IDC_STATIC,7,84,230,35,WS_GROUP CONTROL "Unread mail",IDC_BUT_UNREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,94,149,9 CONTROL "Mail never previously spam filtered",IDC_BUT_UNSEEN, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,106,149,9 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7, 129,230,11 LTEXT "Static",IDC_PROGRESS_TEXT,7,144,227,10 DEFPUSHBUTTON "Start Filtering",IDC_START,7,161,52,14 PUSHBUTTON "Close",IDCANCEL,187,162,50,14 END IDD_FILTER DIALOGEX 0, 0, 249, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filtering" FONT 8, "Tahoma" BEGIN LTEXT "Filter the following folders as messages arrive", IDC_STATIC,8,4,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,7,16,177,12 PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,192,14,50,14 GROUPBOX "Certain Spam",IDC_STATIC,7,33,235,80 LTEXT "To be considered certain spam, a message must score at least", IDC_STATIC,13,42,212,10 CONTROL "Slider1",IDC_SLIDER_CERTAIN,"msctls_trackbar32", TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,52,165,22 EDITTEXT IDC_EDIT_CERTAIN,184,53,51,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,13,72,107,10 COMBOBOX IDC_ACTION_CERTAIN,12,83,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,71,85,28,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,83,77,14 PUSHBUTTON "Browse",IDC_BROWSE_CERTAIN,184,83,50,14 GROUPBOX "Possible Spam",IDC_STATIC,6,117,235,81 LTEXT "To be considered uncertain, a message must score at least", IDC_STATIC,12,128,212,10 CONTROL "Slider1",IDC_SLIDER_UNSURE,"msctls_trackbar32", TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,135,165,20 EDITTEXT IDC_EDIT_UNSURE,183,141,54,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,12,155,107,10 COMBOBOX IDC_ACTION_UNSURE,12,166,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,71,169,27,10 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,166,77,14 PUSHBUTTON "&Browse",IDC_BROWSE_UNSURE,184,166,50,14 CONTROL "Mark spam as read",IDC_MARK_SPAM_AS_READ,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,100,81,10 CONTROL "Mark possible spam as read",IDC_MARK_UNSURE_AS_READ, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,186,101,10 GROUPBOX "Certain Good",IDC_STATIC,6,203,235,48 LTEXT "These messages should be:",IDC_STATIC,12,215,107,10 COMBOBOX IDC_ACTION_HAM,12,228,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,71,230,27,10 CONTROL "(folder name)",IDC_FOLDER_HAM,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,228,77,14 PUSHBUTTON "&Browse",IDC_BROWSE_HAM,184,228,50,14 END IDD_FOLDER_SELECTOR DIALOGEX 0, 0, 247, 215 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "&Folders:",IDC_STATIC,7,7,47,9 CONTROL "",IDC_LIST_FOLDERS,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_CHECKBOXES | WS_BORDER | WS_TABSTOP,7,21,172,140 CONTROL "(sub)",IDC_BUT_SEARCHSUB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,167,126,9 LTEXT "(status1)",IDC_STATUS1,7,180,220,9 LTEXT "(status2)",IDC_STATUS2,7,194,220,9 DEFPUSHBUTTON "OK",IDOK,190,21,50,14 PUSHBUTTON "Cancel",IDCANCEL,190,39,50,14 PUSHBUTTON "C&lear All",IDC_BUT_CLEARALL,190,58,50,14 PUSHBUTTON "&New folder",IDC_BUT_NEW,190,77,50,14 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_GENERAL, DIALOG BEGIN RIGHTMARGIN, 248 VERTGUIDE, 6 BOTTOMMARGIN, 205 END IDD_TRAINING, DIALOG BEGIN RIGHTMARGIN, 241 VERTGUIDE, 11 VERTGUIDE, 242 BOTTOMMARGIN, 207 END IDD_FILTER_NOW, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 237 TOPMARGIN, 9 BOTTOMMARGIN, 176 END IDD_FILTER, DIALOG BEGIN BOTTOMMARGIN, 254 HORZGUIDE, 127 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Bitmap // IDB_FOLDERS BITMAP MOVEABLE PURE "folders.bmp" #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE MOVEABLE PURE BEGIN "dialogs.h\0" END 2 TEXTINCLUDE MOVEABLE PURE BEGIN "#include ""winres.h""\r\n" "// spambayes dialog definitions\r\n" "\0" END 3 TEXTINCLUDE MOVEABLE PURE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // Inglés (Australia) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED --- NEW FILE: i18n_dialogs.py --- #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: _ except NameError: def _(s): 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): return FakeParser() From anadelonbrin at users.sourceforge.net Tue Jan 4 02:05:51 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:05:53 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR __init__.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10952/languages/es_AR Added Files: __init__.py Log Message: Initial Spanish (Argintina) translation (thanks to Hernán Foffani). This is just the General tab of the plug-in at the moment. --- NEW FILE: __init__.py --- """Design-time __init__.py for resourcepackage This is the scanning version of __init__.py for your resource modules. You replace it with a blank or doc-only init when ready to release. """ try: __file__ except NameError: pass else: import os if os.path.splitext(os.path.basename( __file__ ))[0] == "__init__": try: from resourcepackage import package, defaultgenerators generators = defaultgenerators.generators.copy() ### CUSTOMISATION POINT ## import specialised generators here, such as for wxPython #from resourcepackage import wxgenerators #generators.update( wxgenerators.generators ) except ImportError: pass else: package = package.Package( packageName = __name__, directory = os.path.dirname( os.path.abspath(__file__) ), generators = generators, ) package.scan( ### CUSTOMISATION POINT ## force true -> always re-loads from external files, otherwise ## only reloads if the file is newer than the generated .py file. # force = 1, ) From anadelonbrin at users.sourceforge.net Tue Jan 4 02:05:51 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:05:54 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR/DIALOGS dialogs.rc, NONE, 1.1 i18n_dialogs.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10952/languages/es_AR/DIALOGS Added Files: dialogs.rc i18n_dialogs.py Log Message: Initial Spanish (Argintina) translation (thanks to Hernán Foffani). This is just the General tab of the plug-in at the moment. --- NEW FILE: dialogs.rc --- //Microsoft Developer Studio generated resource script. // #include "dialogs.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" // spambayes dialog definitions ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Inglés (Estados Unidos) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_ADVANCED DIALOGEX 0, 0, 248, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Advanced" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN GROUPBOX "Filter timer",IDC_STATIC,7,3,234,117 CONTROL "",IDC_DELAY1_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,36,148,22 LTEXT "Processing start delay",IDC_STATIC,16,26,101,8 EDITTEXT IDC_DELAY1_TEXT,165,39,40,14,ES_AUTOHSCROLL LTEXT "seconds",IDC_STATIC,208,41,28,8 CONTROL "",IDC_DELAY2_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,73,148,22 LTEXT "Delay between processing items",IDC_STATIC,16,62,142,8 EDITTEXT IDC_DELAY2_TEXT,165,79,40,14,ES_AUTOHSCROLL LTEXT "seconds",IDC_STATIC,207,82,28,8 CONTROL "Only for folders that receive new mail", IDC_INBOX_TIMER_ONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,100,217,10 PUSHBUTTON "Show Data Folder",IDC_SHOW_DATA_FOLDER,7,238,70,14 CONTROL "Enable background filtering",IDC_BUT_TIMER_ENABLED, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,12,162,10 PUSHBUTTON "Diagnostics...",IDC_BUT_SHOW_DIAGNOSTICS,171,238,70,14 END IDD_STATISTICS DIALOG DISCARDABLE 0, 0, 248, 257 STYLE WS_CHILD | WS_CAPTION CAPTION "Statistics" FONT 8, "Tahoma" BEGIN GROUPBOX "Statistics",IDC_STATIC,7,3,241,229 LTEXT "some stats\nand some more\nline 3\nline 4\nline 5", IDC_STATISTICS,12,12,230,204 PUSHBUTTON "Reset Statistics",IDC_BUT_RESET_STATS,178,238,70,14 LTEXT "Last reset:",IDC_STATIC,7,241,36,8 LTEXT "<<>>",IDC_LAST_RESET_DATE,47,241,107,8 END IDD_MANAGER DIALOGEX 0, 0, 275, 308 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Manager" FONT 8, "Tahoma" BEGIN DEFPUSHBUTTON "Close",IDOK,216,287,50,14 PUSHBUTTON "Cancel",IDCANCEL,155,287,50,14,NOT WS_VISIBLE CONTROL "",IDC_TAB,"SysTabControl32",0x0,8,7,258,276 PUSHBUTTON "About",IDC_ABOUT_BTN,8,287,50,14 END IDD_FILTER_SPAM DIALOGEX 0, 0, 251, 147 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU CAPTION "Spam" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "Filter the following folders as messages arrive", IDC_STATIC,8,9,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,7,20,177,12 PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,194,19,50,14 GROUPBOX "Certain Spam",IDC_STATIC,7,43,237,80 LTEXT "To be considered certain spam, a message must score at least", IDC_STATIC,13,52,212,10 CONTROL "",IDC_SLIDER_CERTAIN,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,62,165,22 EDITTEXT IDC_EDIT_CERTAIN,184,63,51,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,13,82,107,10 COMBOBOX IDC_ACTION_CERTAIN,13,93,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,75,95,31,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,120,93,59,14 PUSHBUTTON "Browse",IDC_BROWSE_CERTAIN,184,93,50,14 CONTROL "Mark spam as read",IDC_MARK_SPAM_AS_READ,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,110,81,10 END IDD_FILTER_UNSURE DIALOGEX 0, 0, 249, 124 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU CAPTION "Possible Spam" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "To be considered uncertain, a message must score at least", IDC_STATIC,12,11,212,10 CONTROL "",IDC_SLIDER_UNSURE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,18,165,20 EDITTEXT IDC_EDIT_UNSURE,183,24,54,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,12,38,107,10 COMBOBOX IDC_ACTION_UNSURE,12,49,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,74,52,31,10 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,119,49,59,14 PUSHBUTTON "&Browse",IDC_BROWSE_UNSURE,183,49,50,14 CONTROL "Mark possible spam as read",IDC_MARK_UNSURE_AS_READ, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,70,101,10 END IDD_DIAGNOSTIC DIALOGEX 0, 0, 183, 98 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Diagnostics" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "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.", IDC_STATIC,5,3,174,36 LTEXT "Log file verbosity",IDC_STATIC,5,44,56,8 EDITTEXT IDC_VERBOSE_LOG,73,42,40,14,ES_AUTOHSCROLL PUSHBUTTON "View log...",IDC_BUT_VIEW_LOG,129,41,50,14 CONTROL "Save Spam Score",IDC_SAVE_SPAM_SCORE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,5,63,72,10 PUSHBUTTON "Cancel",IDCANCEL,69,79,50,14,NOT WS_VISIBLE DEFPUSHBUTTON "Close",IDOK,129,79,50,14 END IDD_WIZARD DIALOGEX 0, 0, 384, 190 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Configuration Wizard" FONT 8, "Tahoma", 400, 0, 0x1 BEGIN PUSHBUTTON "Cancel",IDCANCEL,328,173,50,14 PUSHBUTTON "<< Back",IDC_BACK_BTN,216,173,50,14 DEFPUSHBUTTON "Next>>,Finish",IDC_FORWARD_BTN,269,173,50,14 CONTROL "",IDC_PAGE_PLACEHOLDER,"Static",SS_ETCHEDFRAME,75,4,303, 167 CONTROL 125,IDC_WIZ_GRAPHIC,"Static",SS_BITMAP,0,0,69,190 END IDD_WIZARD_WELCOME DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Welcome to the SpamBayes configuration wizard", IDC_STATIC,20,4,191,14 LTEXT "This wizard will help you configure the SpamBayes Outlook addin. Please indicate how you have prepared for this application.", IDC_STATIC,20,20,255,18 CONTROL "I haven't prepared for SpamBayes at all.", IDC_BUT_PREPARATION,"Button",BS_AUTORADIOBUTTON | BS_TOP | WS_GROUP,20,42,190,11 CONTROL "I have already sorted good messages (ham) and spam messages into folders that are suitable for training purposes.", IDC_STATIC,"Button",BS_AUTORADIOBUTTON | BS_TOP | BS_MULTILINE,20,59,255,18 CONTROL "I would prefer to configure SpamBayes manually.", IDC_STATIC,"Button",BS_AUTORADIOBUTTON | BS_TOP,20,82, 187,12 LTEXT "If you would like more information about training and configuring SpamBayes, click the About button.", IDC_STATIC,20,103,185,20 PUSHBUTTON "About...",IDC_BUT_ABOUT,215,104,60,15 LTEXT "If you cancel the wizard, you can access it again via the SpamBayes Manager, available from the SpamBayes toolbar.", IDC_STATIC,20,137,232,17 END IDD_WIZARD_FINISHED_UNTRAINED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Congratulations",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes is now configured and ready to start learning about your Spam", IDC_STATIC,20,22,247,16 LTEXT "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.", IDC_STATIC,20,42,247,27 LTEXT "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.", IDC_STATIC,20,83,247,31 LTEXT "As you train, you will find the accuracy of SpamBayes increases.", IDC_STATIC,20,69,247,15 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,121, 148,9 END IDD_WIZARD_FOLDERS_REST DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Browse...",IDC_BROWSE_SPAM,208,85,60,15 LTEXT "Spam and Unsure Folders",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes uses two folders to manage your Spam - a folder where 'certain' spam is stored, and another for unsure messages.", IDC_STATIC,20,20,247,22 LTEXT "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.", IDC_STATIC,20,44,243,24 EDITTEXT IDC_FOLDER_CERTAIN,20,85,179,14,ES_AUTOHSCROLL LTEXT "Unsure messages will be delivered to a folder named", IDC_STATIC,20,105,186,12 EDITTEXT IDC_FOLDER_UNSURE,20,117,177,14,ES_AUTOHSCROLL LTEXT "Spam will be delivered to a folder named",IDC_STATIC,20, 72,137,8 PUSHBUTTON "Browse...",IDC_BROWSE_UNSURE,208,117,60,15 END IDD_WIZARD_FOLDERS_WATCH DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,225,134,50,14 LTEXT "Folders that receive new messages",IDC_STATIC,20,4,247, 14 LTEXT "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.", IDC_STATIC,20,21,247,25 LTEXT "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.", IDC_STATIC,20,79,247,20 LTEXT "If you use the Outlook rule wizard to move messages into folders, you may like to select these folders in addition to your inbox.", IDC_STATIC,20,51,241,20 EDITTEXT IDC_FOLDER_WATCH,20,100,195,48,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY END IDD_WIZARD_FINISHED_UNCONFIGURED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Configuration cancelled",IDC_STATIC,20,4,247,14 LTEXT "The main SpamBayes options will now be displayed. You must define your folders and enable SpamBayes before it will begin filtering mail.", IDC_STATIC,20,29,247,16 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,139, 148,9 END IDD_WIZARD_FOLDERS_TRAIN DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Browse...",IDC_BROWSE_HAM,208,49,60,15 LTEXT "Training",IDC_STATIC,20,4,247,10 LTEXT "Please select the folders with the pre-sorted good messages and the folders with the pre-sorted spam messages.", IDC_STATIC,20,16,243,16 EDITTEXT IDC_FOLDER_HAM,20,49,179,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "Examples of Spam, or unwanted messages can be found in", IDC_STATIC,20,71,198,8 EDITTEXT IDC_FOLDER_CERTAIN,20,81,177,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "Examples of good messages can be found in",IDC_STATIC, 20,38,153,8 PUSHBUTTON "Browse...",IDC_BROWSE_SPAM,208,81,60,15 LTEXT "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.", IDC_STATIC,20,128,243,26 CONTROL "Score messages when training is complete", IDC_BUT_RESCORE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20, 108,163,16 END IDD_WIZARD_TRAIN DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Training",-1,20,4,247,14 LTEXT "SpamBayes is training on your good and spam messages.", -1,20,22,247,16 CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,20,45,255, 11 LTEXT "(progress text)",IDC_PROGRESS_TEXT,20,61,257,10 END IDD_WIZARD_FINISHED_TRAINED DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Congratulations",IDC_STATIC,20,4,247,14 LTEXT "SpamBayes has been successfully trained and configured. You should find the system is immediately effective at filtering spam.", IDC_TRAINING_STATUS,20,35,247,26 LTEXT "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.", IDC_STATIC,20,68,249,30 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,104, 148,9 END IDD_WIZARD_TRAINING_IS_IMPORTANT DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes will not be effective until it is trained.", IDC_STATIC,11,8,191,14 PUSHBUTTON "About Training...",IDC_BUT_ABOUT,209,140,65,15 LTEXT "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.", IDC_STATIC,11,21,263,30 LTEXT "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.", IDC_STATIC,22,61,252,29 LTEXT "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", IDC_STATIC,22,106,252,27 LTEXT "For more information, click the About Training button.", IDC_STATIC,11,143,187,12 CONTROL "I want to continue without training, and let SpamBayes learn as it goes", IDC_BUT_UNTRAINED,"Button",BS_AUTORADIOBUTTON | WS_GROUP, 11,50,263,11 CONTROL "I will pre-sort some good and spam messages, and configure SpamBayes later", IDC_BUT_TRAIN,"Button",BS_AUTORADIOBUTTON,11,92,263,11 END IDD_WIZARD_FINISHED_TRAIN_LATER DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Configuration suspended",IDC_STATIC,20,4,247,14 LTEXT "To perform initial training, you should create a folder that contains only examples of good messages, and another that contains only examples of spam.", IDC_STATIC,20,17,247,27 LTEXT "Click Finish to close the wizard.",IDC_STATIC,20,145, 148,9 LTEXT "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", IDC_STATIC,20,42,247,26 LTEXT "training. If you have too much spam in your Inbox, you may like to create a temporary folder and copy some examples to it.", IDC_STATIC,20,58,247,17 LTEXT "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.", IDC_STATIC,20,80,247,35 LTEXT "When you are finished, open the SpamBayes Manager via the SpamBayes toolbar, and re-start the Configuration Wizard.", IDC_STATIC,20,121,245,17 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_ADVANCED, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 241 VERTGUIDE, 16 BOTTOMMARGIN, 204 END IDD_MANAGER, DIALOG BEGIN BOTTOMMARGIN, 253 END IDD_FILTER_SPAM, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 244 TOPMARGIN, 7 BOTTOMMARGIN, 140 END IDD_FILTER_UNSURE, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 242 TOPMARGIN, 7 BOTTOMMARGIN, 117 END IDD_DIAGNOSTIC, DIALOG BEGIN LEFTMARGIN, 5 RIGHTMARGIN, 179 BOTTOMMARGIN, 93 END IDD_WIZARD, DIALOG BEGIN RIGHTMARGIN, 378 END IDD_WIZARD_WELCOME, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 275 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_UNTRAINED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FOLDERS_REST, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 268 BOTTOMMARGIN, 161 HORZGUIDE, 85 HORZGUIDE, 117 END IDD_WIZARD_FOLDERS_WATCH, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_UNCONFIGURED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FOLDERS_TRAIN, DIALOG BEGIN VERTGUIDE, 20 VERTGUIDE, 268 BOTTOMMARGIN, 161 HORZGUIDE, 49 HORZGUIDE, 81 END IDD_WIZARD_TRAIN, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_TRAINED, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END IDD_WIZARD_TRAINING_IS_IMPORTANT, DIALOG BEGIN VERTGUIDE, 11 VERTGUIDE, 22 VERTGUIDE, 274 BOTTOMMARGIN, 161 END IDD_WIZARD_FINISHED_TRAIN_LATER, DIALOG BEGIN VERTGUIDE, 20 BOTTOMMARGIN, 161 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Bitmap // IDB_SBLOGO BITMAP MOVEABLE PURE "sblogo.bmp" IDB_SBWIZLOGO BITMAP MOVEABLE PURE "sbwizlogo.bmp" #endif // Inglés (Estados Unidos) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // Inglés (Australia) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_GENERAL DIALOGEX 0, 0, 253, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "General" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes Version Here",IDC_VERSION,6,54,242,8 LTEXT "SpamBayes requiere entrenamiento previo para ser efectivo. Cliquee en la solapa 'Entrenamiento' o use el Asistente de Configuración para entrenar.", IDC_STATIC,6,67,242,17 LTEXT "Estado de la base de datos de entrenamiento:", IDC_STATIC,6,90,222,8 LTEXT "123 spam messages; 456 good messages\r\nLine2\r\nLine3", IDC_TRAINING_STATUS,6,101,242,27,SS_SUNKEN CONTROL "Habilitar SpamBayes",IDC_BUT_FILTER_ENABLE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,6,173,97,11 LTEXT "Certain spam is moved to Folder1\nPossible spam is moved too", IDC_FILTER_STATUS,6,146,242,19,SS_SUNKEN PUSHBUTTON "Reiniciar la Configuración...",IDC_BUT_RESET,6,238,106, 15 PUSHBUTTON "Asistente de Configuración...",IDC_BUT_WIZARD,142,238, 106,15 LTEXT "Estado del filtro:",IDC_STATIC,6,135,222,8 CONTROL 1062,IDC_LOGO_GRAPHIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE,0,2,275,52 END IDD_TRAINING DIALOGEX 0, 0, 252, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Training" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN GROUPBOX "",IDC_STATIC,5,1,243,113 LTEXT "Folders with known good messages.",IDC_STATIC,11,11,131, 11 CONTROL "",IDC_STATIC_HAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,11,21,175,12 PUSHBUTTON "&Browse...",IDC_BROWSE_HAM,192,20,50,14 LTEXT "Folders with spam or other junk messages.",IDC_STATIC, 11,36,171,9 CONTROL "Static",IDC_STATIC_SPAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,11,46,174,12 PUSHBUTTON "Brow&se...",IDC_BROWSE_SPAM,192,46,50,14 CONTROL "Score &messages after training",IDC_BUT_RESCORE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,11,64,111,10 CONTROL "&Rebuild entire database",IDC_BUT_REBUILD,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,137,64,92,10 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER, 11,76,231,11 PUSHBUTTON "&Start Training",IDC_START,11,91,54,14,BS_NOTIFY LTEXT "training status training status training status training status training status training status training status ", IDC_PROGRESS_TEXT,75,89,149,17 GROUPBOX "Incremental Training",IDC_STATIC,4,117,244,87 CONTROL "Train that a message is good when it is moved from a spam folder back to the Inbox.", IDC_BUT_TRAIN_FROM_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,127,204,18 LTEXT "Clicking 'Not Spam' button should",IDC_STATIC,10,148, 115,10 COMBOBOX IDC_RECOVER_RS,127,145,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Train that a message is spam when it is moved to the spam folder.", IDC_BUT_TRAIN_TO_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,163,204,16 LTEXT "Clicking 'Spam' button should",IDC_STATIC,10,183,104,10 COMBOBOX IDC_DEL_SPAM_RS,127,180,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END IDD_FILTER_NOW DIALOGEX 0, 0, 244, 185 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filter Now" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Filter the following folders",IDC_STATIC,8,9,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_NAMES,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,7,20,172, 12 PUSHBUTTON "Browse...",IDC_BROWSE,187,19,50,14 GROUPBOX "Filter action",IDC_STATIC,7,38,230,40,WS_GROUP CONTROL "Perform all filter actions",IDC_BUT_ACT_ALL,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,49,126,10 CONTROL "Score messages, but don't perform filter action", IDC_BUT_ACT_SCORE,"Button",BS_AUTORADIOBUTTON,15,62,203, 10 GROUPBOX "Restrict the filter to",IDC_STATIC,7,84,230,35,WS_GROUP CONTROL "Unread mail",IDC_BUT_UNREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,94,149,9 CONTROL "Mail never previously spam filtered",IDC_BUT_UNSEEN, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,106,149,9 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7, 129,230,11 LTEXT "Static",IDC_PROGRESS_TEXT,7,144,227,10 DEFPUSHBUTTON "Start Filtering",IDC_START,7,161,52,14 PUSHBUTTON "Close",IDCANCEL,187,162,50,14 END IDD_FILTER DIALOGEX 0, 0, 249, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filtering" FONT 8, "Tahoma" BEGIN LTEXT "Filter the following folders as messages arrive", IDC_STATIC,8,4,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,7,16,177,12 PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,192,14,50,14 GROUPBOX "Certain Spam",IDC_STATIC,7,33,235,80 LTEXT "To be considered certain spam, a message must score at least", IDC_STATIC,13,42,212,10 CONTROL "Slider1",IDC_SLIDER_CERTAIN,"msctls_trackbar32", TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,52,165,22 EDITTEXT IDC_EDIT_CERTAIN,184,53,51,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,13,72,107,10 COMBOBOX IDC_ACTION_CERTAIN,12,83,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,71,85,28,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,83,77,14 PUSHBUTTON "Browse",IDC_BROWSE_CERTAIN,184,83,50,14 GROUPBOX "Possible Spam",IDC_STATIC,6,117,235,81 LTEXT "To be considered uncertain, a message must score at least", IDC_STATIC,12,128,212,10 CONTROL "Slider1",IDC_SLIDER_UNSURE,"msctls_trackbar32", TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,135,165,20 EDITTEXT IDC_EDIT_UNSURE,183,141,54,14,ES_AUTOHSCROLL LTEXT "and these messages should be:",IDC_STATIC,12,155,107,10 COMBOBOX IDC_ACTION_UNSURE,12,166,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,71,169,27,10 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,166,77,14 PUSHBUTTON "&Browse",IDC_BROWSE_UNSURE,184,166,50,14 CONTROL "Mark spam as read",IDC_MARK_SPAM_AS_READ,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,100,81,10 CONTROL "Mark possible spam as read",IDC_MARK_UNSURE_AS_READ, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,186,101,10 GROUPBOX "Certain Good",IDC_STATIC,6,203,235,48 LTEXT "These messages should be:",IDC_STATIC,12,215,107,10 COMBOBOX IDC_ACTION_HAM,12,228,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "to folder",IDC_STATIC,71,230,27,10 CONTROL "(folder name)",IDC_FOLDER_HAM,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,102,228,77,14 PUSHBUTTON "&Browse",IDC_BROWSE_HAM,184,228,50,14 END IDD_FOLDER_SELECTOR DIALOGEX 0, 0, 247, 215 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "&Folders:",IDC_STATIC,7,7,47,9 CONTROL "",IDC_LIST_FOLDERS,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_CHECKBOXES | WS_BORDER | WS_TABSTOP,7,21,172,140 CONTROL "(sub)",IDC_BUT_SEARCHSUB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,167,126,9 LTEXT "(status1)",IDC_STATUS1,7,180,220,9 LTEXT "(status2)",IDC_STATUS2,7,194,220,9 DEFPUSHBUTTON "OK",IDOK,190,21,50,14 PUSHBUTTON "Cancel",IDCANCEL,190,39,50,14 PUSHBUTTON "C&lear All",IDC_BUT_CLEARALL,190,58,50,14 PUSHBUTTON "&New folder",IDC_BUT_NEW,190,77,50,14 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_GENERAL, DIALOG BEGIN RIGHTMARGIN, 248 VERTGUIDE, 6 BOTTOMMARGIN, 205 END IDD_TRAINING, DIALOG BEGIN RIGHTMARGIN, 241 VERTGUIDE, 11 VERTGUIDE, 242 BOTTOMMARGIN, 207 END IDD_FILTER_NOW, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 237 TOPMARGIN, 9 BOTTOMMARGIN, 176 END IDD_FILTER, DIALOG BEGIN BOTTOMMARGIN, 254 HORZGUIDE, 127 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Bitmap // IDB_FOLDERS BITMAP MOVEABLE PURE "folders.bmp" #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE MOVEABLE PURE BEGIN "dialogs.h\0" END 2 TEXTINCLUDE MOVEABLE PURE BEGIN "#include ""winres.h""\r\n" "// spambayes dialog definitions\r\n" "\0" END 3 TEXTINCLUDE MOVEABLE PURE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // Inglés (Australia) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED --- NEW FILE: i18n_dialogs.py --- #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: _ except NameError: def _(s): 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): return FakeParser() From anadelonbrin at users.sourceforge.net Tue Jan 4 02:35:14 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:35:17 2005 Subject: [Spambayes-checkins] spambayes/languages/es_AR/LC_MESSAGES messages.mo, NONE, 1.1 messages.po, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es_AR/LC_MESSAGES In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15887/languages/es_AR/LC_MESSAGES Added Files: messages.mo messages.po Log Message: Initial Spanish (and Spanish-Argintina) translation of source code stings (just the help menu and one dialog string at the moment). Thanks again to Hernán Foffani. --- NEW FILE: messages.mo --- (This appears to be a binary file; contents omitted.) --- NEW FILE: messages.po --- msgid "" msgstr "" "Project-Id-Version: SpamBayes 1.1\n" "POT-Creation-Date: \n" "PO-Revision-Date: 2005-01-04 14:30+1200\n" "Last-Translator: Tony Meyer \n" "Language-Team: Hernán Foffani et al \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" "X-Poedit-Country: ARGENTINA\n" #: Outlook2000\addin.py:587 msgid "Are you sure you want to permanently delete all items in the \"%s\" folder?" msgstr "" #: Outlook2000\addin.py:598 msgid "The \"%s\" folder is already empty." [...3043 lines suppressed...] #: spambayes\UserInterface.py:1100 msgid "[YOUR EMAIL ADDRESS]" msgstr "" #: spambayes\UserInterface.py:1102 msgid "[DESCRIBE YOUR PROBLEM HERE]" msgstr "" #: spambayes\UserInterface.py:1104 msgid "[PROBLEM SUMMARY]" msgstr "" #: spambayes\Version.py:224 msgid "%s Version %s (%s)" msgstr "" #: spambayes\__init__.py:9 msgid "January 2005" msgstr "" From anadelonbrin at users.sourceforge.net Tue Jan 4 02:35:14 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:35:17 2005 Subject: [Spambayes-checkins] spambayes/languages/es/LC_MESSAGES messages.mo, NONE, 1.1 messages.po, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/es/LC_MESSAGES In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15887/languages/es/LC_MESSAGES Added Files: messages.mo messages.po Log Message: Initial Spanish (and Spanish-Argintina) translation of source code stings (just the help menu and one dialog string at the moment). Thanks again to Hernán Foffani. --- NEW FILE: messages.mo --- (This appears to be a binary file; contents omitted.) --- NEW FILE: messages.po --- msgid "" msgstr "" "Project-Id-Version: SpamBayes 1.1\n" "POT-Creation-Date: \n" "PO-Revision-Date: 2005-01-04 14:25+1200\n" "Last-Translator: Tony Meyer \n" "Language-Team: Hernán Foffani et al \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" #: Outlook2000\addin.py:587 msgid "Are you sure you want to permanently delete all items in the \"%s\" folder?" msgstr "" #: Outlook2000\addin.py:598 msgid "The \"%s\" folder is already empty." msgstr "" [...3042 lines suppressed...] #: spambayes\UserInterface.py:1100 msgid "[YOUR EMAIL ADDRESS]" msgstr "" #: spambayes\UserInterface.py:1102 msgid "[DESCRIBE YOUR PROBLEM HERE]" msgstr "" #: spambayes\UserInterface.py:1104 msgid "[PROBLEM SUMMARY]" msgstr "" #: spambayes\Version.py:224 msgid "%s Version %s (%s)" msgstr "" #: spambayes\__init__.py:9 msgid "January 2005" msgstr "" From anadelonbrin at users.sourceforge.net Tue Jan 4 02:51:01 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:51:03 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/dialogs/resources rcparser.py, 1.12, 1.13 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19622/Outlook2000/dialogs/resources Modified Files: rcparser.py Log Message: Look for dialogs.h in this directory if it isn't with dialogs.rc. Index: rcparser.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources/rcparser.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** rcparser.py 2 Nov 2004 21:29:37 -0000 1.12 --- rcparser.py 4 Jan 2005 01:50:59 -0000 1.13 *************** *** 145,153 **** """ hFileName = rcFileName[:-2]+"h" try: h = open(hFileName, "rU") self.parseH(h) h.close() ! except OSError: print "No .h file. ignoring." f = open(rcFileName) --- 145,162 ---- """ hFileName = rcFileName[:-2]+"h" + if not os.path.exists(hFileName): + # Translated dialogs don't need their own copy of dialogs.h, + # so look for one in this directory if there isn't one in the + # expected place. + # This will only work with Python > 2.2 and as source, but + # it shouldn't ever be run by binary users, so that shoudln't + # matter. + hFileName = os.path.join(os.path.dirname(__file__), + os.path.basename(hFileName)) try: h = open(hFileName, "rU") self.parseH(h) h.close() ! except IOError: print "No .h file. ignoring." f = open(rcFileName) From anadelonbrin at users.sourceforge.net Tue Jan 4 02:53:18 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:53:21 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/dialogs dialog_map.py, 1.46, 1.47 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20245/Outlook2000/dialogs Modified Files: dialog_map.py Log Message: Prepare for i18n. Index: dialog_map.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/dialog_map.py,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** dialog_map.py 23 Dec 2004 18:14:17 -0000 1.46 --- dialog_map.py 4 Jan 2005 01:53:15 -0000 1.47 *************** *** 33,37 **** date_string = strftime("%a, %d %b %Y %I:%M:%S %p", reset_date) else: ! date_string = "Never" win32gui.SendMessage(date_label, win32con.WM_SETTEXT, 0, date_string) --- 33,37 ---- date_string = strftime("%a, %d %b %Y %I:%M:%S %p", reset_date) else: ! date_string = _("Never") win32gui.SendMessage(date_label, win32con.WM_SETTEXT, 0, date_string) *************** *** 43,55 **** def GetPopupHelpText(self, idFrom): if idFrom == self.control_id: ! return "Displays statistics on mail processed by SpamBayes" elif idFrom == self.button_id: ! return "Resets all SpamBayes statistics to zero" elif idFrom == self.reset_date_id: ! return "The date and time when the SpamBayes statistics were last reset" def ResetStatistics(self): ! question = "This will reset all your saved statistics to zero.\r\n\r\n" \ ! "Are you sure you wish to reset the statistics?" flags = win32con.MB_ICONQUESTION | win32con.MB_YESNO | win32con.MB_DEFBUTTON2 if win32gui.MessageBox(self.window.hwnd, --- 43,55 ---- def GetPopupHelpText(self, idFrom): if idFrom == self.control_id: ! return _("Displays statistics on mail processed by SpamBayes") elif idFrom == self.button_id: ! return _("Resets all SpamBayes statistics to zero") elif idFrom == self.reset_date_id: ! return _("The date and time when the SpamBayes statistics were last reset") def ResetStatistics(self): ! question = _("This will reset all your saved statistics to zero.\r\n\r\n" \ ! "Are you sure you wish to reset the statistics?") flags = win32con.MB_ICONQUESTION | win32con.MB_YESNO | win32con.MB_DEFBUTTON2 if win32gui.MessageBox(self.window.hwnd, *************** *** 66,74 **** vstring = v.get_long_version("SpamBayes Outlook Addin") if not hasattr(sys, "frozen"): ! vstring += " from source" win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, vstring) def GetPopupHelpText(self, cid): ! return "The version of SpamBayes running" class TrainingStatusProcessor(ControlProcessor): --- 66,74 ---- vstring = v.get_long_version("SpamBayes Outlook Addin") if not hasattr(sys, "frozen"): ! vstring += _(" from source") win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, vstring) def GetPopupHelpText(self, cid): ! return _("The version of SpamBayes running") class TrainingStatusProcessor(ControlProcessor): *************** *** 78,102 **** nham = bayes.nham if nspam > 10 and nham > 10: ! db_status = "Database has %d good and %d spam." % (nham, nspam) db_ratio = nham/float(nspam) big = small = None if db_ratio > 5.0: ! big = "ham" ! small = "spam" elif db_ratio < (1/5.0): ! big = "spam" ! small = "ham" ! if big is not None: ! db_status = "%s\nWarning: you have much more %s than %s - " \ "SpamBayes works best with approximately even " \ ! "numbers of ham and spam." % (db_status, big, ! small) elif nspam > 0 or nham > 0: ! db_status = "Database only has %d good and %d spam - you should " \ ! "consider performing additional training." % (nham, nspam) else: ! db_status = "Database has no training information. SpamBayes " \ "will classify all messages as 'unsure', " \ ! "ready for you to train." win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, db_status) --- 78,99 ---- nham = bayes.nham if nspam > 10 and nham > 10: ! db_status = _("Database has %d good and %d spam.") % (nham, nspam) db_ratio = nham/float(nspam) big = small = None if db_ratio > 5.0: ! db_status = _("%s\nWarning: you have much more ham than spam - " \ ! "SpamBayes works best with approximately even " \ ! "numbers of ham and spam.") % (db_status, ) elif db_ratio < (1/5.0): ! db_status = _("%s\nWarning: you have much more spam than ham - " \ "SpamBayes works best with approximately even " \ ! "numbers of ham and spam.") % (db_status, ) elif nspam > 0 or nham > 0: ! db_status = _("Database only has %d good and %d spam - you should " \ ! "consider performing additional training.") % (nham, nspam) else: ! db_status = _("Database has no training information. SpamBayes " \ "will classify all messages as 'unsure', " \ ! "ready for you to train.") win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, db_status) *************** *** 108,118 **** nham = bayes.nham if nspam > 10 and nham > 10: ! msg = "SpamBayes has been successfully trained and configured. " \ "You should find the system is immediately effective at " \ ! "filtering spam." else: ! msg = "SpamBayes has been successfully trained and configured. " \ "However, as the number of messages trained is quite small, " \ ! "SpamBayes may take some time to become truly effective." win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, msg) --- 105,115 ---- nham = bayes.nham if nspam > 10 and nham > 10: ! msg = _("SpamBayes has been successfully trained and configured. " \ "You should find the system is immediately effective at " \ ! "filtering spam.") else: ! msg = _("SpamBayes has been successfully trained and configured. " \ "However, as the number of messages trained is quite small, " \ ! "SpamBayes may take some time to become truly effective.") win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, msg) *************** *** 171,175 **** return if not manager.config.filter.enabled: ! status = "Filtering is disabled. Select 'Enable SpamBayes' to enable." win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, status) --- 168,172 ---- return if not manager.config.filter.enabled: ! status = _("Filtering is disabled. Select 'Enable SpamBayes' to enable.") win32gui.SendMessage(self.GetControl(), win32con.WM_SETTEXT, 0, status) *************** *** 182,192 **** unsure_name = manager.FormatFolderNames( [config.unsure_folder_id], False) ! unsure_text = "unsure managed in '%s'" % (unsure_name,) else: ! unsure_text = "unsure messages untouched" watch_names = manager.FormatFolderNames( config.watch_folder_ids, config.watch_include_sub) ! filter_status = "Watching '%s'. Spam managed in '%s', %s." \ % (watch_names, certain_spam_name, --- 179,189 ---- unsure_name = manager.FormatFolderNames( [config.unsure_folder_id], False) ! unsure_text = _("unsure managed in '%s'") % (unsure_name,) else: ! unsure_text = _("unsure messages untouched") watch_names = manager.FormatFolderNames( config.watch_folder_ids, config.watch_include_sub) ! filter_status = _("Watching '%s'. Spam managed in '%s', %s.") \ % (watch_names, certain_spam_name, *************** *** 281,293 **** log_name = os.path.join(win32api.GetTempPath(), "spambayes1.log") if not os.path.exists(log_name): ! window.manager.ReportError("The log file for this session can not be located") else: cmd = 'notepad.exe "%s"' % log_name win32api.WinExec(cmd, win32con.SW_SHOW) else: ! question = "As you are running from source-code, viewing the\n" \ "log means executing a Python program. If you already\n" \ "have a viewer running, the output may appear in either.\n\n"\ ! "Do you want to execute this viewer?" if not window.manager.AskQuestion(question): return --- 278,290 ---- log_name = os.path.join(win32api.GetTempPath(), "spambayes1.log") if not os.path.exists(log_name): ! window.manager.ReportError(_("The log file for this session can not be located")) else: cmd = 'notepad.exe "%s"' % log_name win32api.WinExec(cmd, win32con.SW_SHOW) else: ! question = _("As you are running from source-code, viewing the\n" \ "log means executing a Python program. If you already\n" \ "have a viewer running, the output may appear in either.\n\n"\ ! "Do you want to execute this viewer?") if not window.manager.AskQuestion(question): return *************** *** 303,312 **** def ResetConfig(window): ! question = "This will reset all configuration options to their default values\r\n\r\n" \ "It will not reset the folders you have selected, nor your\r\n" \ "training information, but all other options will be reset\r\n" \ "and SpamBayes will need to be re-enabled before it will\r\n" \ "continue filtering.\r\n\r\n" \ ! "Are you sure you wish to reset all options?" flags = win32con.MB_ICONQUESTION | win32con.MB_YESNO | win32con.MB_DEFBUTTON2 if win32gui.MessageBox(window.hwnd, --- 300,309 ---- def ResetConfig(window): ! question = _("This will reset all configuration options to their default values\r\n\r\n" \ "It will not reset the folders you have selected, nor your\r\n" \ "training information, but all other options will be reset\r\n" \ "and SpamBayes will need to be re-enabled before it will\r\n" \ "continue filtering.\r\n\r\n" \ ! "Are you sure you wish to reset all options?") flags = win32con.MB_ICONQUESTION | win32con.MB_YESNO | win32con.MB_DEFBUTTON2 if win32gui.MessageBox(window.hwnd, *************** *** 339,343 **** def GetPopupHelpText(self, id): dd = self.window.manager.dialog_parser.dialogs[self.idd] ! return "Displays the %s dialog" % dd.caption class HiddenDialogCommand(DialogCommand): --- 336,340 ---- def GetPopupHelpText(self, id): dd = self.window.manager.dialog_parser.dialogs[self.idd] ! return _("Displays the %s dialog") % dd.caption class HiddenDialogCommand(DialogCommand): *************** *** 353,357 **** self.OnClicked(0) def GetPopupHelpText(self, id): ! return "Nothing to see here." class ShowWizardCommand(DialogCommand): --- 350,354 ---- self.OnClicked(0) def GetPopupHelpText(self, id): ! return _("Nothing to see here.") class ShowWizardCommand(DialogCommand): *************** *** 379,383 **** def WizardFinish(mgr, window): ! print "Wizard Done!" def WizardTrainer(mgr, config, progress): --- 376,380 ---- def WizardFinish(mgr, window): ! print _("Wizard Done!") def WizardTrainer(mgr, config, progress): *************** *** 399,405 **** if rescore: ! stages = ("Training", .3), ("Saving", .1), ("Scoring", .6) else: ! stages = ("Training", .9), ("Saving", .1) progress.set_stages(stages) --- 396,402 ---- if rescore: ! stages = (_("Training"), .3), (_("Saving"), .1), (_("Scoring"), .6) else: ! stages = (_("Training"), .9), (_("Saving"), .1) progress.set_stages(stages) *************** *** 426,430 **** bayes = classifier_data.bayes ! progress.set_status("Completed training with %d spam and %d good messages" \ % (bayes.nspam, bayes.nham)) finally: --- 423,427 ---- bayes = classifier_data.bayes ! progress.set_status(_("Completed training with %d spam and %d good messages") \ % (bayes.nspam, bayes.nham)) finally: *************** *** 463,467 **** (AsyncCommandProcessor, "IDC_START IDC_PROGRESS IDC_PROGRESS_TEXT", filter.filterer, ! "Start Filtering", "Stop Filtering", """IDCANCEL IDC_BUT_UNSEEN IDC_BUT_UNREAD IDC_BROWSE IDC_BUT_ACT_SCORE --- 460,464 ---- (AsyncCommandProcessor, "IDC_START IDC_PROGRESS IDC_PROGRESS_TEXT", filter.filterer, ! _("Start Filtering"), _("Stop Filtering"), """IDCANCEL IDC_BUT_UNSEEN IDC_BUT_UNREAD IDC_BROWSE IDC_BUT_ACT_SCORE *************** *** 498,502 **** (BoolButtonProcessor, "IDC_BUT_REBUILD", "Training.rebuild"), (AsyncCommandProcessor, "IDC_START IDC_PROGRESS IDC_PROGRESS_TEXT", ! train.trainer, "Start Training", "Stop", "IDOK IDCANCEL IDC_BROWSE_HAM IDC_BROWSE_SPAM " \ "IDC_BUT_REBUILD IDC_BUT_RESCORE"), --- 495,499 ---- (BoolButtonProcessor, "IDC_BUT_REBUILD", "Training.rebuild"), (AsyncCommandProcessor, "IDC_START IDC_PROGRESS IDC_PROGRESS_TEXT", ! train.trainer, _("Start Training"), _("Stop"), "IDOK IDCANCEL IDC_BROWSE_HAM IDC_BROWSE_SPAM " \ "IDC_BUT_REBUILD IDC_BUT_RESCORE"), *************** *** 506,512 **** "Training.train_manual_spam"), (ComboProcessor, "IDC_DEL_SPAM_RS", "General.delete_as_spam_message_state", ! "not change the message,mark the message as read,mark the message as unread"), (ComboProcessor, "IDC_RECOVER_RS", "General.recover_from_spam_message_state", ! "not change the message,mark the message as read,mark the message as unread"), ), --- 503,509 ---- "Training.train_manual_spam"), (ComboProcessor, "IDC_DEL_SPAM_RS", "General.delete_as_spam_message_state", ! _("not change the message,mark the message as read,mark the message as unread")), (ComboProcessor, "IDC_RECOVER_RS", "General.recover_from_spam_message_state", ! _("not change the message,mark the message as read,mark the message as unread")), ), *************** *** 520,525 **** IDC_DELAY2_TEXT IDC_DELAY2_SLIDER IDC_INBOX_TIMER_ONLY"""), ! (EditNumberProcessor, "IDC_DELAY1_TEXT IDC_DELAY1_SLIDER", "Filter.timer_start_delay", 0, 10, 20, 60), ! (EditNumberProcessor, "IDC_DELAY2_TEXT IDC_DELAY2_SLIDER", "Filter.timer_interval", 0, 10, 20, 60), (BoolButtonProcessor, "IDC_INBOX_TIMER_ONLY", "Filter.timer_only_receive_folders"), (CommandButtonProcessor, "IDC_SHOW_DATA_FOLDER", ShowDataFolder, ()), --- 517,522 ---- IDC_DELAY2_TEXT IDC_DELAY2_SLIDER IDC_INBOX_TIMER_ONLY"""), ! (EditNumberProcessor, "IDC_DELAY1_TEXT IDC_DELAY1_SLIDER", "Filter.timer_start_delay", 0.4, 10, 20, 60), ! (EditNumberProcessor, "IDC_DELAY2_TEXT IDC_DELAY2_SLIDER", "Filter.timer_interval", 0.4, 10, 20, 60), (BoolButtonProcessor, "IDC_INBOX_TIMER_ONLY", "Filter.timer_only_receive_folders"), (CommandButtonProcessor, "IDC_SHOW_DATA_FOLDER", ShowDataFolder, ()), From anadelonbrin at users.sourceforge.net Tue Jan 4 02:53:55 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 02:53:58 2005 Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.17,1.18 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20340 Modified Files: README-DEVEL.txt Log Message: Update i18n instructions: don't need to copy dialogs.h Index: README-DEVEL.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** README-DEVEL.txt 2 Jan 2005 05:04:51 -0000 1.17 --- README-DEVEL.txt 4 Jan 2005 01:53:52 -0000 1.18 *************** *** 643,649 **** edit the dialogs, simply open the dialogs.rc file in a text editor, manually change the appropriate strings, and save the file as above. - Ensure that a copy of the dialogs.h file is also copied across to the - 'spambayes\languages\{lang_code}\DIALOGS' directory (this does not - need any translation). Once the dialogs are translated, you need to use the rc2py.py utility --- 643,646 ---- From anadelonbrin at users.sourceforge.net Tue Jan 4 02:49:50 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 03:06:40 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR/DIALOGS dialogs.rc, 1.1, 1.2 i18n_dialogs.py, 1.1, 1.2 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19349/languages/fr_FR/DIALOGS Modified Files: dialogs.rc i18n_dialogs.py Log Message: Resize some of the dialog components to fit the translation. Index: dialogs.rc =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/fr_FR/DIALOGS/dialogs.rc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dialogs.rc 4 Jan 2005 00:36:22 -0000 1.1 --- dialogs.rc 4 Jan 2005 01:49:46 -0000 1.2 *************** *** 19,23 **** #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 ! LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_FR #pragma code_page(1252) #endif //_WIN32 --- 19,23 ---- #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 ! LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 *************** *** 32,36 **** EXSTYLE WS_EX_CONTEXTHELP CAPTION "Avancé" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN GROUPBOX "Délais de filtrage",IDC_STATIC,7,3,234,117 --- 32,36 ---- EXSTYLE WS_EX_CONTEXTHELP CAPTION "Avancé" ! FONT 8, "Tahoma" BEGIN GROUPBOX "Délais de filtrage",IDC_STATIC,7,3,234,117 *************** *** 42,46 **** CONTROL "",IDC_DELAY2_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,73,148,22 ! LTEXT "Délai de filtrage entre deux messages",IDC_STATIC,16,62,142,8 EDITTEXT IDC_DELAY2_TEXT,165,79,40,14,ES_AUTOHSCROLL LTEXT "secondes",IDC_STATIC,207,82,28,8 --- 42,47 ---- CONTROL "",IDC_DELAY2_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,16,73,148,22 ! LTEXT "Délai de filtrage entre deux messages",IDC_STATIC,16,62, ! 142,8 EDITTEXT IDC_DELAY2_TEXT,165,79,40,14,ES_AUTOHSCROLL LTEXT "secondes",IDC_STATIC,207,82,28,8 *************** *** 48,55 **** IDC_INBOX_TIMER_ONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,100,217,10 ! PUSHBUTTON "Afficher le répertoire de données",IDC_SHOW_DATA_FOLDER,7,238,70,14 ! CONTROL "Activer le filtrage en tâche de fond",IDC_BUT_TIMER_ENABLED, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,12,162,10 ! PUSHBUTTON "Diagnostiques...",IDC_BUT_SHOW_DIAGNOSTICS,171,238,70,14 END --- 49,59 ---- IDC_INBOX_TIMER_ONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,100,217,10 ! PUSHBUTTON "Afficher le répertoire de données",IDC_SHOW_DATA_FOLDER, ! 7,238,111,14 ! CONTROL "Activer le filtrage en tâche de fond", ! IDC_BUT_TIMER_ENABLED,"Button",BS_AUTOCHECKBOX | ! WS_TABSTOP,16,12,162,10 ! PUSHBUTTON "Diagnostiques...",IDC_BUT_SHOW_DIAGNOSTICS,171,238,70, ! 14 END *************** *** 62,66 **** LTEXT "some stats\nand some more\nline 3\nline 4\nline 5", IDC_STATISTICS,12,12,230,204 ! PUSHBUTTON "Remise à 0 des statistiques",IDC_BUT_RESET_STATS,178,238,70,14 LTEXT "Dernière remise à 0 :",IDC_STATIC,7,241,36,8 LTEXT "<<>>",IDC_LAST_RESET_DATE,47,241,107,8 --- 66,71 ---- LTEXT "some stats\nand some more\nline 3\nline 4\nline 5", IDC_STATISTICS,12,12,230,204 ! PUSHBUTTON "Remise à 0 des statistiques",IDC_BUT_RESET_STATS,156, ! 238,92,14 LTEXT "Dernière remise à 0 :",IDC_STATIC,7,241,36,8 LTEXT "<<>>",IDC_LAST_RESET_DATE,47,241,107,8 *************** *** 71,75 **** EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Manager" ! FONT 8, "Tahoma" BEGIN DEFPUSHBUTTON "Fermer",IDOK,216,287,50,14 --- 76,80 ---- EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Manager" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN DEFPUSHBUTTON "Fermer",IDOK,216,287,50,14 *************** *** 104,109 **** WS_GROUP,120,93,59,14 PUSHBUTTON "P&arcourir...",IDC_BROWSE_CERTAIN,184,93,50,14 ! CONTROL "Marquer les messages comme &lus",IDC_MARK_SPAM_AS_READ,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,13,110,81,10 END --- 109,114 ---- WS_GROUP,120,93,59,14 PUSHBUTTON "P&arcourir...",IDC_BROWSE_CERTAIN,184,93,50,14 ! CONTROL "Marquer les messages comme &lus",IDC_MARK_SPAM_AS_READ, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,110,81,10 END *************** *** 130,148 **** END ! IDD_DIAGNOSTIC DIALOGEX 0, 0, 183, 98 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Diagnostiques" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "Ces options avancées sont fournies à des fins de diagnostiques et déboguage seulement. Vous ne devriez changer les valeurs que sur demande ou si vous savez exactement ce que vous faites.", ! IDC_STATIC,5,3,174,36 LTEXT "Verbosité du log",IDC_STATIC,5,44,56,8 EDITTEXT IDC_VERBOSE_LOG,73,42,40,14,ES_AUTOHSCROLL ! PUSHBUTTON "Voir le fichier de log...",IDC_BUT_VIEW_LOG,129,41,50,14 ! CONTROL "Enregistrer la note attribuée",IDC_SAVE_SPAM_SCORE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,5,63,72,10 PUSHBUTTON "Annuler",IDCANCEL,69,79,50,14,NOT WS_VISIBLE ! DEFPUSHBUTTON "Fermer",IDOK,129,79,50,14 END --- 135,154 ---- END ! IDD_DIAGNOSTIC DIALOGEX 0, 0, 201, 98 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Diagnostiques" ! FONT 8, "Tahoma" BEGIN LTEXT "Ces options avancées sont fournies à des fins de diagnostiques et déboguage seulement. Vous ne devriez changer les valeurs que sur demande ou si vous savez exactement ce que vous faites.", ! IDC_STATIC,5,3,192,36 LTEXT "Verbosité du log",IDC_STATIC,5,44,56,8 EDITTEXT IDC_VERBOSE_LOG,73,42,40,14,ES_AUTOHSCROLL ! PUSHBUTTON "Voir le fichier de log...",IDC_BUT_VIEW_LOG,122,41,75, ! 14 ! CONTROL "Enregistrer la note attribuée",IDC_SAVE_SPAM_SCORE, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,63,72,10 PUSHBUTTON "Annuler",IDCANCEL,69,79,50,14,NOT WS_VISIBLE ! DEFPUSHBUTTON "Fermer",IDOK,147,79,50,14 END *************** *** 151,159 **** EXSTYLE WS_EX_CONTEXTHELP CAPTION "Assistant de configuration SpamBayes" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN PUSHBUTTON "Annuler",IDCANCEL,328,173,50,14 ! PUSHBUTTON "<< Précédent",IDC_BACK_BTN,216,173,50,14 ! DEFPUSHBUTTON "Suivant>>,Fin",IDC_FORWARD_BTN,269,173,50,14 CONTROL "",IDC_PAGE_PLACEHOLDER,"Static",SS_ETCHEDFRAME,75,4,303, 167 --- 157,165 ---- EXSTYLE WS_EX_CONTEXTHELP CAPTION "Assistant de configuration SpamBayes" ! FONT 8, "Tahoma" BEGIN PUSHBUTTON "Annuler",IDCANCEL,328,173,50,14 ! PUSHBUTTON "<< Précédent",IDC_BACK_BTN,204,173,50,14 ! DEFPUSHBUTTON "Suivant>>,Fin",IDC_FORWARD_BTN,259,173,52,14 CONTROL "",IDC_PAGE_PLACEHOLDER,"Static",SS_ETCHEDFRAME,75,4,303, 167 *************** *** 164,168 **** STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Bienvenue dans l'assistant de paramétrage de SpamBayes", --- 170,174 ---- STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP ! FONT 8, "Tahoma" BEGIN LTEXT "Bienvenue dans l'assistant de paramétrage de SpamBayes", *************** *** 180,184 **** 187,12 LTEXT "Pour plus d'informations sur l'entraînement et le paramétrage de SpamBayes, cliquer sur le bouton A propos.", ! IDC_STATIC,20,103,185,20 PUSHBUTTON "A propos...",IDC_BUT_ABOUT,215,104,60,15 LTEXT "Si vous quittez l'assistant, vous pouvez le relancer à partir du SpamBayes Manager, disponible sur la barre d'outil SpamBayes.", --- 186,190 ---- 187,12 LTEXT "Pour plus d'informations sur l'entraînement et le paramétrage de SpamBayes, cliquer sur le bouton A propos.", ! IDC_STATIC,20,103,185,26 PUSHBUTTON "A propos...",IDC_BUT_ABOUT,215,104,60,15 LTEXT "Si vous quittez l'assistant, vous pouvez le relancer à partir du SpamBayes Manager, disponible sur la barre d'outil SpamBayes.", *************** *** 200,205 **** LTEXT "Plus le programme s'entraîne et plus la fiabilité augmente. Notez qu'après seulement quelques messages le résultat est étonnant.", IDC_STATIC,20,69,247,15 ! LTEXT "Cliquer sur Fin pour sortir de l'assistant.",IDC_STATIC,20,121, ! 148,9 END --- 206,211 ---- LTEXT "Plus le programme s'entraîne et plus la fiabilité augmente. Notez qu'après seulement quelques messages le résultat est étonnant.", IDC_STATIC,20,69,247,15 ! LTEXT "Cliquer sur Fin pour sortir de l'assistant.",IDC_STATIC, ! 20,121,148,9 END *************** *** 219,224 **** IDC_STATIC,20,105,186,12 EDITTEXT IDC_FOLDER_UNSURE,20,117,177,14,ES_AUTOHSCROLL ! LTEXT "Les messages spam vont être rangés dans le dossier nommé",IDC_STATIC,20, ! 72,137,8 PUSHBUTTON "Parcourir...",IDC_BROWSE_UNSURE,208,117,60,15 END --- 225,230 ---- IDC_STATIC,20,105,186,12 EDITTEXT IDC_FOLDER_UNSURE,20,117,177,14,ES_AUTOHSCROLL ! LTEXT "Les messages spam vont être rangés dans le dossier nommé", ! IDC_STATIC,20,72,137,8 PUSHBUTTON "Parcourir...",IDC_BROWSE_UNSURE,208,117,60,15 END *************** *** 230,235 **** BEGIN PUSHBUTTON "Parcourir...",IDC_BROWSE_WATCH,225,134,50,14 ! LTEXT "Dossiers recevant les nouveaux messages",IDC_STATIC,20,4,247, ! 14 LTEXT "SpamBayes a besoin de connaitre les dossiers utilisés pour réceptionner les nouveaux messages. En général, il s'agit du dossier 'Boîte de réception', mais vous pouvez en préciser d'autres à filtrer.", IDC_STATIC,20,21,247,25 --- 236,241 ---- BEGIN PUSHBUTTON "Parcourir...",IDC_BROWSE_WATCH,225,134,50,14 ! LTEXT "Dossiers recevant les nouveaux messages",IDC_STATIC,20, ! 4,247,14 LTEXT "SpamBayes a besoin de connaitre les dossiers utilisés pour réceptionner les nouveaux messages. En général, il s'agit du dossier 'Boîte de réception', mais vous pouvez en préciser d'autres à filtrer.", IDC_STATIC,20,21,247,25 *************** *** 250,255 **** LTEXT "L'écran principal de SpamBayes va maintenant être affiché. Vous devez définir les dossiers et activer SpamBayes pour commencer à filtrer les messages.", IDC_STATIC,20,29,247,16 ! LTEXT "Cliquer sur Fin pour quitter l'assistant.",IDC_STATIC,20,139, ! 148,9 END --- 256,261 ---- LTEXT "L'écran principal de SpamBayes va maintenant être affiché. Vous devez définir les dossiers et activer SpamBayes pour commencer à filtrer les messages.", IDC_STATIC,20,29,247,16 ! LTEXT "Cliquer sur Fin pour quitter l'assistant.",IDC_STATIC, ! 20,139,148,9 END *************** *** 268,273 **** EDITTEXT IDC_FOLDER_CERTAIN,20,81,177,14,ES_AUTOHSCROLL | ES_READONLY ! LTEXT "Des exemples de bons messages figurent dans le dossier",IDC_STATIC, ! 20,38,153,8 PUSHBUTTON "Parcourir...",IDC_BROWSE_SPAM,208,81,60,15 LTEXT "Si vous n'avez pas de messages pré-triés ou que vous avez déjà pratiqué l'entraînement ou voulez garder la base, cliquer sur Précédent et choisissez l'option 'Je n'ai rien préparé du tout'.", --- 274,279 ---- EDITTEXT IDC_FOLDER_CERTAIN,20,81,177,14,ES_AUTOHSCROLL | ES_READONLY ! LTEXT "Des exemples de bons messages figurent dans le dossier", ! IDC_STATIC,20,38,153,8 PUSHBUTTON "Parcourir...",IDC_BROWSE_SPAM,208,81,60,15 LTEXT "Si vous n'avez pas de messages pré-triés ou que vous avez déjà pratiqué l'entraînement ou voulez garder la base, cliquer sur Précédent et choisissez l'option 'Je n'ai rien préparé du tout'.", *************** *** 301,329 **** LTEXT "Bien que SpamBayes ce soit entraîné, il continue à apprendre. Pensez à régulièrement vérifier le contenu du dossier 'Douteux', et utilisez les boutons 'C'est du spam' et 'Ce n'est pas du spam'.", IDC_STATIC,20,68,249,30 ! LTEXT "Cliquer sur Fin pour fermer l'assistant.",IDC_STATIC,20,104, ! 148,9 END ! IDD_WIZARD_TRAINING_IS_IMPORTANT DIALOGEX 0, 0, 284, 162 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes ne fonctionnera pas tant qu'il ne s'est pas entraîné.", ! IDC_STATIC,11,8,191,14 ! PUSHBUTTON "A propos de l'entraînement...",IDC_BUT_ABOUT,209,140,65,15 LTEXT "SpamBayes est un système qui apprend à reconnaître les bons et les mauvais messages à partir des exemples que vous lui donnez. A la base, il ne dispose d'aucun filtres, il doit donc être entraîné pour devenir effectif.", ! IDC_STATIC,11,21,263,30 ! LTEXT "Pour commencer, SpamBayes va aiguiller tous vos messages dans le dossier 'Douteux'. L'entraînement est simple : pour chaque message, vous spécifiez alors s'il s'agit de spam ou non à partir des boutons 'C'est du spam' et 'Ce n'est pas du spam'. Petit à petit, SpamBayes va apprendre à aiguiller vos messages.", ! IDC_STATIC,22,61,252,29 LTEXT "Cette option fermera l'assistant et vous dire comment aiguiller vos messages. Vous pourrez paramétrer SpamBayes et le rendre actif immédiatement sur vos messages", ! IDC_STATIC,22,106,252,27 LTEXT "Pour plus d'information, cliquer sur le bouton A propos de l'entraînement.", ! IDC_STATIC,11,143,187,12 CONTROL "Je veux stopper l'entraînement et laisser SpamBayes apprendre sur les nouveaux messages", IDC_BUT_UNTRAINED,"Button",BS_AUTORADIOBUTTON | WS_GROUP, ! 11,50,263,11 CONTROL "Je vais effectuer le pré-tri moi-même (bon / spam) et paramétrer SpamBayes plus tard", ! IDC_BUT_TRAIN,"Button",BS_AUTORADIOBUTTON,11,92,263,11 END --- 307,336 ---- LTEXT "Bien que SpamBayes ce soit entraîné, il continue à apprendre. Pensez à régulièrement vérifier le contenu du dossier 'Douteux', et utilisez les boutons 'C'est du spam' et 'Ce n'est pas du spam'.", IDC_STATIC,20,68,249,30 ! LTEXT "Cliquer sur Fin pour fermer l'assistant.",IDC_STATIC,20, ! 104,148,9 END ! IDD_WIZARD_TRAINING_IS_IMPORTANT DIALOGEX 0, 0, 328, 156 STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP ! FONT 8, "Tahoma" BEGIN LTEXT "SpamBayes ne fonctionnera pas tant qu'il ne s'est pas entraîné.", ! IDC_STATIC,11,8,312,14 ! PUSHBUTTON "A propos de l'entraînement...",IDC_BUT_ABOUT,258,135,65, ! 15 LTEXT "SpamBayes est un système qui apprend à reconnaître les bons et les mauvais messages à partir des exemples que vous lui donnez. A la base, il ne dispose d'aucun filtres, il doit donc être entraîné pour devenir effectif.", ! IDC_STATIC,11,21,312,30 ! LTEXT "Pour commencer, SpamBayes va aiguiller tous vos messages dans le dossier 'Douteux'. L'entraînement est simple : pour chaque message, vous spécifiez alors s'il s'agit de spam ou non à partir des boutons 'C'est du spam' et 'Ce n'est pas du spam'. Petit à pete????ctls_progress32", ! IDC_STATIC,22,61,301,35 LTEXT "Cette option fermera l'assistant et vous dire comment aiguiller vos messages. Vous pourrez paramétrer SpamBayes et le rendre actif immédiatement sur vos messages", ! IDC_STATIC,22,113,301,27 LTEXT "Pour plus d'information, cliquer sur le bouton A propos de l'entraînement.", ! IDC_STATIC,11,137,234,8 CONTROL "Je veux stopper l'entraînement et laisser SpamBayes apprendre sur les nouveaux messages", IDC_BUT_UNTRAINED,"Button",BS_AUTORADIOBUTTON | WS_GROUP, ! 11,50,312,11 CONTROL "Je vais effectuer le pré-tri moi-même (bon / spam) et paramétrer SpamBayes plus tard", ! IDC_BUT_TRAIN,"Button",BS_AUTORADIOBUTTON,11,98,312,11 END *************** *** 336,341 **** LTEXT "Pour effectuer l'entraînement initial, vous devriez créer deux dossiers, un contenant de bons messages et un autre des messages non sollicités.", IDC_STATIC,20,17,247,27 ! LTEXT "Cliquer sur Fin pour quitter l'assistant.",IDC_STATIC,20,145, ! 148,9 LTEXT "Pour des exemples de bons messages, vous pouvez utiliser votre 'Boîte de réception' mais vous evez être SÛR qu'elle ne contient aucun message non sollicité", IDC_STATIC,20,42,247,26 --- 343,348 ---- LTEXT "Pour effectuer l'entraînement initial, vous devriez créer deux dossiers, un contenant de bons messages et un autre des messages non sollicités.", IDC_STATIC,20,17,247,27 ! LTEXT "Cliquer sur Fin pour quitter l'assistant.",IDC_STATIC, ! 20,145,148,9 LTEXT "Pour des exemples de bons messages, vous pouvez utiliser votre 'Boîte de réception' mais vous evez être SÛR qu'elle ne contient aucun message non sollicité", IDC_STATIC,20,42,247,26 *************** *** 348,508 **** END - - ///////////////////////////////////////////////////////////////////////////// - // - // DESIGNINFO - // - - #ifdef APSTUDIO_INVOKED - GUIDELINES DESIGNINFO MOVEABLE PURE - BEGIN - IDD_ADVANCED, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 241 - VERTGUIDE, 16 - BOTTOMMARGIN, 204 - END - - IDD_MANAGER, DIALOG - BEGIN - BOTTOMMARGIN, 253 - END - - IDD_FILTER_SPAM, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 244 - TOPMARGIN, 7 - BOTTOMMARGIN, 140 - END - - IDD_FILTER_UNSURE, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 242 - TOPMARGIN, 7 - BOTTOMMARGIN, 117 - END - - IDD_DIAGNOSTIC, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 179 - BOTTOMMARGIN, 93 - END - - IDD_WIZARD, DIALOG - BEGIN - RIGHTMARGIN, 378 - END - - IDD_WIZARD_WELCOME, DIALOG - BEGIN - VERTGUIDE, 20 - VERTGUIDE, 275 - BOTTOMMARGIN, 161 - END - - IDD_WIZARD_FINISHED_UNTRAINED, DIALOG - BEGIN - VERTGUIDE, 20 - BOTTOMMARGIN, 161 - END - - IDD_WIZARD_FOLDERS_REST, DIALOG - BEGIN - VERTGUIDE, 20 - VERTGUIDE, 268 - BOTTOMMARGIN, 161 - HORZGUIDE, 85 - HORZGUIDE, 117 - END - - IDD_WIZARD_FOLDERS_WATCH, DIALOG - BEGIN - VERTGUIDE, 20 - BOTTOMMARGIN, 161 - END - - IDD_WIZARD_FINISHED_UNCONFIGURED, DIALOG - BEGIN - VERTGUIDE, 20 - BOTTOMMARGIN, 161 - END - - IDD_WIZARD_FOLDERS_TRAIN, DIALOG - BEGIN - VERTGUIDE, 20 - VERTGUIDE, 268 - BOTTOMMARGIN, 161 - HORZGUIDE, 49 - HORZGUIDE, 81 - END - - IDD_WIZARD_TRAIN, DIALOG - BEGIN - VERTGUIDE, 20 - BOTTOMMARGIN, 161 - END - - IDD_WIZARD_FINISHED_TRAINED, DIALOG - BEGIN - VERTGUIDE, 20 - BOTTOMMARGIN, 161 - END - - IDD_WIZARD_TRAINING_IS_IMPORTANT, DIALOG - BEGIN - VERTGUIDE, 11 - VERTGUIDE, 22 - VERTGUIDE, 274 - BOTTOMMARGIN, 161 - END - - IDD_WIZARD_FINISHED_TRAIN_LATER, DIALOG - BEGIN - VERTGUIDE, 20 - BOTTOMMARGIN, 161 - END - END - #endif // APSTUDIO_INVOKED - - - ///////////////////////////////////////////////////////////////////////////// - // - // Bitmap - // - - IDB_SBLOGO BITMAP MOVEABLE PURE "sblogo.bmp" - IDB_SBWIZLOGO BITMAP MOVEABLE PURE "sbwizlogo.bmp" - #endif // English (U.S.) resources - ///////////////////////////////////////////////////////////////////////////// - - - ///////////////////////////////////////////////////////////////////////////// - // French (France) resources - - #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA) - #ifdef _WIN32 - LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_FR - #pragma code_page(1252) - #endif //_WIN32 - - ///////////////////////////////////////////////////////////////////////////// - // - // Dialog - // - IDD_GENERAL DIALOGEX 0, 0, 253, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "General" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "SpamBayes Version",IDC_VERSION,6,54,242,8 LTEXT "SpamBayes a besoin de s'entraîner avant d'être activé. Cliquer sur l'onglet 'Entraînement', ou utilisez l'assistant en vous laissant guider.", IDC_STATIC,6,67,242,17 ! LTEXT "Status de la base d'entraînement :",IDC_STATIC,6,90,222,8 LTEXT "123 spams ; 456 bons messages\r\nLine2\r\nLine3", IDC_TRAINING_STATUS,6,101,242,27,SS_SUNKEN --- 355,369 ---- END IDD_GENERAL DIALOGEX 0, 0, 253, 257 STYLE DS_MODALFRAME | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "General" ! FONT 8, "Tahoma" BEGIN LTEXT "SpamBayes Version",IDC_VERSION,6,54,242,8 LTEXT "SpamBayes a besoin de s'entraîner avant d'être activé. Cliquer sur l'onglet 'Entraînement', ou utilisez l'assistant en vous laissant guider.", IDC_STATIC,6,67,242,17 ! LTEXT "Status de la base d'entraînement :",IDC_STATIC,6,90,222, ! 8 LTEXT "123 spams ; 456 bons messages\r\nLine2\r\nLine3", IDC_TRAINING_STATUS,6,101,242,27,SS_SUNKEN *************** *** 511,516 **** LTEXT "Les messages classifiés comme spam sont aiguillés dans le dossier Folder1\nLes messages douteux sont également aiguillés", IDC_FILTER_STATUS,6,146,242,67,SS_SUNKEN ! PUSHBUTTON "Revenir au paramétrage initial...",IDC_BUT_RESET,6,238,84,15 ! PUSHBUTTON "Assistant...",IDC_BUT_WIZARD,164,238,84,15 LTEXT "Status des filtres :",IDC_STATIC,6,135,222,8 CONTROL 1062,IDC_LOGO_GRAPHIC,"Static",SS_BITMAP | --- 372,378 ---- LTEXT "Les messages classifiés comme spam sont aiguillés dans le dossier Folder1\nLes messages douteux sont également aiguillés", IDC_FILTER_STATUS,6,146,242,67,SS_SUNKEN ! PUSHBUTTON "Revenir au paramétrage initial...",IDC_BUT_RESET,6,238, ! 109,14 ! PUSHBUTTON "Assistant...",IDC_BUT_WIZARD,142,238,106,15 LTEXT "Status des filtres :",IDC_STATIC,6,135,222,8 CONTROL 1062,IDC_LOGO_GRAPHIC,"Static",SS_BITMAP | *************** *** 522,559 **** EXSTYLE WS_EX_CONTEXTHELP CAPTION "Entraînement" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN GROUPBOX "",IDC_STATIC,5,1,243,113 ! LTEXT "Dossiers contenant les bons messages",IDC_STATIC,11,11,131, ! 11 CONTROL "",IDC_STATIC_HAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,11,21,175,12 PUSHBUTTON "&Parcourir...",IDC_BROWSE_HAM,192,20,50,14 ! LTEXT "Dossiers contenant les messages non sollicités",IDC_STATIC, ! 11,36,171,9 CONTROL "Static",IDC_STATIC_SPAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,11,46,174,12 PUSHBUTTON "P&arcourir...",IDC_BROWSE_SPAM,192,46,50,14 ! CONTROL "Attribuer une note aux messages après l'entraînement",IDC_BUT_RESCORE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,11,64,111,10 CONTROL "&Reconstruire toute la base",IDC_BUT_REBUILD,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,137,64,92,10 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER, 11,76,231,11 ! PUSHBUTTON "&Commencer l'entraînement",IDC_START,11,91,54,14,BS_NOTIFY LTEXT "status entraînement status entraînement status entraînement status entraînement status entraînements status entraînement status entraînement", ! IDC_PROGRESS_TEXT,75,89,149,17 GROUPBOX "Entraînement incremental",IDC_STATIC,4,117,244,87 CONTROL "Déplacer un message d'un dossier spam à la 'Boîte de réception' participe à l'entraînement.", IDC_BUT_TRAIN_FROM_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,127,204,18 ! LTEXT "Lors d'un click sur 'Ce n'est pas du spam'",IDC_STATIC,10,148, ! 115,10 ! COMBOBOX IDC_RECOVER_RS,127,145,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Déplacer un message d'un dossier de la 'Boîte de réception' au dossier 'Spam' participe à l'entraînement.", IDC_BUT_TRAIN_TO_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,163,204,16 ! LTEXT "Lors d'un click sur 'C'est du spam'",IDC_STATIC,10,183,104,10 COMBOBOX IDC_DEL_SPAM_RS,127,180,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP --- 384,424 ---- EXSTYLE WS_EX_CONTEXTHELP CAPTION "Entraînement" ! FONT 8, "Tahoma" BEGIN GROUPBOX "",IDC_STATIC,5,1,243,113 ! LTEXT "Dossiers contenant les bons messages",IDC_STATIC,11,11, ! 124,8 CONTROL "",IDC_STATIC_HAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,11,21,175,12 PUSHBUTTON "&Parcourir...",IDC_BROWSE_HAM,192,20,50,14 ! LTEXT "Dossiers contenant les messages non sollicités", ! IDC_STATIC,11,36,171,9 CONTROL "Static",IDC_STATIC_SPAM,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,11,46,174,12 PUSHBUTTON "P&arcourir...",IDC_BROWSE_SPAM,192,46,50,14 ! CONTROL "Attribuer une note aux messages après l'entraînement", ! IDC_BUT_RESCORE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11, ! 64,111,10 CONTROL "&Reconstruire toute la base",IDC_BUT_REBUILD,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,137,64,92,10 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER, 11,76,231,11 ! PUSHBUTTON "&Commencer l'entraînement",IDC_START,11,91,90,14, ! BS_NOTIFY LTEXT "status entraînement status entraînement status entraînement status entraînement status entraînements status entraînement status entraînement", ! IDC_PROGRESS_TEXT,106,89,135,17 GROUPBOX "Entraînement incremental",IDC_STATIC,4,117,244,87 CONTROL "Déplacer un message d'un dossier spam à la 'Boîte de réception' participe à l'entraînement.", IDC_BUT_TRAIN_FROM_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,127,204,18 ! LTEXT "Lors d'un click sur 'Ce n'est pas du spam'",IDC_STATIC, ! 10,148,129,8 ! COMBOBOX IDC_RECOVER_RS,142,145,99,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Déplacer un message d'un dossier de la 'Boîte de réception' au dossier 'Spam' participe à l'entraînement.", IDC_BUT_TRAIN_TO_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,11,163,204,16 ! LTEXT "Lors d'un click sur 'C'est du spam'",IDC_STATIC,10,183, ! 106,8 COMBOBOX IDC_DEL_SPAM_RS,127,180,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP *************** *** 564,568 **** EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filtrer maintenant" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Filtrer les dossiers suivants",IDC_STATIC,8,9,168,11 --- 429,433 ---- EXSTYLE WS_EX_CONTEXTHELP CAPTION "Filtrer maintenant" ! FONT 8, "Tahoma" BEGIN LTEXT "Filtrer les dossiers suivants",IDC_STATIC,8,9,168,11 *************** *** 572,589 **** PUSHBUTTON "Parcourir...",IDC_BROWSE,187,19,50,14 GROUPBOX "Filtres et actions",IDC_STATIC,7,38,230,40,WS_GROUP ! CONTROL "Effectuer les actions (aiguillage du message)",IDC_BUT_ACT_ALL,"Button", ! BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,49,126,10 CONTROL "Attribuer une note mais ne pas effectuer d'action", IDC_BUT_ACT_SCORE,"Button",BS_AUTORADIOBUTTON,15,62,203, 10 GROUPBOX "Restrendre le filtre",IDC_STATIC,7,84,230,35,WS_GROUP ! CONTROL "Aux messages non lus",IDC_BUT_UNREAD,"Button",BS_AUTOCHECKBOX | ! WS_TABSTOP,15,94,149,9 ! CONTROL "Aux messages qui n'ont pas eu de note attribuée",IDC_BUT_UNSEEN, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,106,149,9 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7, 129,230,11 LTEXT "Static",IDC_PROGRESS_TEXT,7,144,227,10 ! DEFPUSHBUTTON "Démarrer le filtrage",IDC_START,7,161,52,14 PUSHBUTTON "Fermer",IDCANCEL,187,162,50,14 END --- 437,456 ---- PUSHBUTTON "Parcourir...",IDC_BROWSE,187,19,50,14 GROUPBOX "Filtres et actions",IDC_STATIC,7,38,230,40,WS_GROUP ! CONTROL "Effectuer les actions (aiguillage du message)", ! IDC_BUT_ACT_ALL,"Button",BS_AUTORADIOBUTTON | WS_GROUP | ! WS_TABSTOP,15,49,126,10 CONTROL "Attribuer une note mais ne pas effectuer d'action", IDC_BUT_ACT_SCORE,"Button",BS_AUTORADIOBUTTON,15,62,203, 10 GROUPBOX "Restrendre le filtre",IDC_STATIC,7,84,230,35,WS_GROUP ! CONTROL "Aux messages non lus",IDC_BUT_UNREAD,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,15,94,149,9 ! CONTROL "Aux messages qui n'ont pas eu de note attribuée", ! IDC_BUT_UNSEEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15, ! 106,149,9 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7, 129,230,11 LTEXT "Static",IDC_PROGRESS_TEXT,7,144,227,10 ! DEFPUSHBUTTON "Démarrer le filtrage",IDC_START,7,161,67,14 PUSHBUTTON "Fermer",IDCANCEL,187,162,50,14 END *************** *** 621,651 **** TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,135,165,20 EDITTEXT IDC_EDIT_UNSURE,183,141,54,14,ES_AUTOHSCROLL ! LTEXT "et ces messages doivent être :",IDC_STATIC,12,155,107,10 COMBOBOX IDC_ACTION_UNSURE,12,166,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! LTEXT "dans le dossier",IDC_STATIC,71,169,27,10 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,166,77,14 PUSHBUTTON "P&arcourir",IDC_BROWSE_UNSURE,184,166,50,14 ! CONTROL "Marquer les spams comme lus",IDC_MARK_SPAM_AS_READ,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,13,100,81,10 ! CONTROL "Marquer les messages douteux comme lus",IDC_MARK_UNSURE_AS_READ, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,186,101,10 GROUPBOX "Bons messages",IDC_STATIC,6,203,235,48 LTEXT "Ces messages doivent être :",IDC_STATIC,12,215,107,10 COMBOBOX IDC_ACTION_HAM,12,228,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! LTEXT "dans le dossier",IDC_STATIC,71,230,27,10 CONTROL "(folder name)",IDC_FOLDER_HAM,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,228,77,14 PUSHBUTTON "Pa&rcourir...",IDC_BROWSE_HAM,184,228,50,14 END ! IDD_FOLDER_SELECTOR DIALOGEX 0, 0, 247, 215 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "&Dossiers :",IDC_STATIC,7,7,47,9 --- 488,520 ---- TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,135,165,20 EDITTEXT IDC_EDIT_UNSURE,183,141,54,14,ES_AUTOHSCROLL ! LTEXT "et ces messages doivent être :",IDC_STATIC,12,155,107, ! 10 COMBOBOX IDC_ACTION_UNSURE,12,166,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! LTEXT "dans le dossier",IDC_STATIC,71,169,48,8 CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,122,166,57,14 PUSHBUTTON "P&arcourir",IDC_BROWSE_UNSURE,184,166,50,14 ! CONTROL "Marquer les spams comme lus",IDC_MARK_SPAM_AS_READ, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,100,81,10 ! CONTROL "Marquer les messages douteux comme lus", ! IDC_MARK_UNSURE_AS_READ,"Button",BS_AUTOCHECKBOX | ! WS_TABSTOP,12,186,101,10 GROUPBOX "Bons messages",IDC_STATIC,6,203,235,48 LTEXT "Ces messages doivent être :",IDC_STATIC,12,215,107,10 COMBOBOX IDC_ACTION_HAM,12,228,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! LTEXT "dans le dossier",IDC_STATIC,71,230,48,8 CONTROL "(folder name)",IDC_FOLDER_HAM,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,122,228,57,14 PUSHBUTTON "Pa&rcourir...",IDC_BROWSE_HAM,184,228,50,14 END ! IDD_FOLDER_SELECTOR DIALOG DISCARDABLE 0, 0, 253, 215 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" ! FONT 8, "Tahoma" BEGIN LTEXT "&Dossiers :",IDC_STATIC,7,7,47,9 *************** *** 658,665 **** LTEXT "(status1)",IDC_STATUS1,7,180,220,9 LTEXT "(status2)",IDC_STATUS2,7,194,220,9 ! DEFPUSHBUTTON "OK",IDOK,190,21,50,14 ! PUSHBUTTON "Annuler",IDCANCEL,190,39,50,14 ! PUSHBUTTON "&Tout effacer",IDC_BUT_CLEARALL,190,58,50,14 ! PUSHBUTTON "&Nouveau dossier",IDC_BUT_NEW,190,77,50,14 END --- 527,534 ---- LTEXT "(status1)",IDC_STATUS1,7,180,220,9 LTEXT "(status2)",IDC_STATUS2,7,194,220,9 ! DEFPUSHBUTTON "OK",IDOK,190,21,57,14 ! PUSHBUTTON "Annuler",IDCANCEL,190,39,57,14 ! PUSHBUTTON "&Tout effacer",IDC_BUT_CLEARALL,190,58,57,14 ! PUSHBUTTON "&Nouveau dossier",IDC_BUT_NEW,190,77,58,14 END *************** *** 673,703 **** GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN ! IDD_GENERAL, DIALOG BEGIN ! RIGHTMARGIN, 248 ! VERTGUIDE, 6 ! BOTTOMMARGIN, 205 END ! IDD_TRAINING, DIALOG BEGIN ! RIGHTMARGIN, 241 ! VERTGUIDE, 11 ! VERTGUIDE, 242 ! BOTTOMMARGIN, 207 END ! IDD_FILTER_NOW, DIALOG BEGIN LEFTMARGIN, 7 ! RIGHTMARGIN, 237 ! TOPMARGIN, 9 ! BOTTOMMARGIN, 176 END ! IDD_FILTER, DIALOG BEGIN ! BOTTOMMARGIN, 254 ! HORZGUIDE, 127 END END --- 542,653 ---- GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN ! IDD_ADVANCED, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 241 ! VERTGUIDE, 16 ! BOTTOMMARGIN, 204 END ! IDD_MANAGER, DIALOG BEGIN ! BOTTOMMARGIN, 253 END ! IDD_FILTER_SPAM, DIALOG BEGIN LEFTMARGIN, 7 ! RIGHTMARGIN, 244 ! TOPMARGIN, 7 ! BOTTOMMARGIN, 140 END ! IDD_FILTER_UNSURE, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 242 ! TOPMARGIN, 7 ! BOTTOMMARGIN, 117 ! END ! ! IDD_DIAGNOSTIC, DIALOG ! BEGIN ! LEFTMARGIN, 5 ! RIGHTMARGIN, 197 ! BOTTOMMARGIN, 93 ! END ! ! IDD_WIZARD, DIALOG ! BEGIN ! RIGHTMARGIN, 378 ! END ! ! IDD_WIZARD_WELCOME, DIALOG ! BEGIN ! VERTGUIDE, 20 ! VERTGUIDE, 275 ! BOTTOMMARGIN, 161 ! END ! ! IDD_WIZARD_FINISHED_UNTRAINED, DIALOG ! BEGIN ! VERTGUIDE, 20 ! BOTTOMMARGIN, 161 ! END ! ! IDD_WIZARD_FOLDERS_REST, DIALOG ! BEGIN ! VERTGUIDE, 20 ! VERTGUIDE, 268 ! BOTTOMMARGIN, 161 ! HORZGUIDE, 85 ! HORZGUIDE, 117 ! END ! ! IDD_WIZARD_FOLDERS_WATCH, DIALOG ! BEGIN ! VERTGUIDE, 20 ! BOTTOMMARGIN, 161 ! END ! ! IDD_WIZARD_FINISHED_UNCONFIGURED, DIALOG ! BEGIN ! VERTGUIDE, 20 ! BOTTOMMARGIN, 161 ! END ! ! IDD_WIZARD_FOLDERS_TRAIN, DIALOG ! BEGIN ! VERTGUIDE, 20 ! VERTGUIDE, 268 ! BOTTOMMARGIN, 161 ! HORZGUIDE, 49 ! HORZGUIDE, 81 ! END ! ! IDD_WIZARD_TRAIN, DIALOG ! BEGIN ! VERTGUIDE, 20 ! BOTTOMMARGIN, 161 ! END ! ! IDD_WIZARD_FINISHED_TRAINED, DIALOG ! BEGIN ! VERTGUIDE, 20 ! BOTTOMMARGIN, 161 ! END ! ! IDD_WIZARD_TRAINING_IS_IMPORTANT, DIALOG ! BEGIN ! VERTGUIDE, 11 ! VERTGUIDE, 22 ! VERTGUIDE, 323 ! BOTTOMMARGIN, 155 ! END ! ! IDD_WIZARD_FINISHED_TRAIN_LATER, DIALOG ! BEGIN ! VERTGUIDE, 20 ! BOTTOMMARGIN, 161 END END *************** *** 710,713 **** --- 660,665 ---- // + IDB_SBLOGO BITMAP MOVEABLE PURE "sblogo.bmp" + IDB_SBWIZLOGO BITMAP MOVEABLE PURE "sbwizlogo.bmp" IDB_FOLDERS BITMAP MOVEABLE PURE "folders.bmp" *************** *** 738,742 **** #endif // APSTUDIO_INVOKED ! #endif // French (France) resources ///////////////////////////////////////////////////////////////////////////// --- 690,694 ---- #endif // APSTUDIO_INVOKED ! #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// Index: i18n_dialogs.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/fr_FR/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 00:36:22 -0000 1.1 --- i18n_dialogs.py 4 Jan 2005 01:49:46 -0000 1.2 *************** *** 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_=33539 ! _rc_mtime_=1104793737 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_=32455 ! _rc_mtime_=1104803220 try: _ *************** *** 9,13 **** 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, 183, 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, 174, 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, (129, 41, 50, 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, (129, 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, 131, 11), 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, 54, 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, (75, 89, 149, 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, 115, 10), 1342177280], [133, '', 1075, (127, 145, 114, 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, 104, 10), 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, (216, 173, 50, 14), 1342177280], [128, _('Suivant>>,Fin'), 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, _('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, 247, 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, 50, 14), 1342177281], [128, _('Annuler'), 2, (190, 39, 50, 14), 1342177280], [128, _('&Tout effacer'), 1042, (190, 58, 50, 14), 1342177280], [128, _('&Nouveau dossier'), 1046, (190, 77, 50, 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, (178, 238, 70, 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, 70, 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, 20), 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, 52, 14), 1342177281], [128, _('Fermer'), 2, (187, 162, 50, 14), 1342177280]], 'IDD_WIZARD_TRAINING_IS_IMPORTANT': [['', (0, 0, 284, 162), 1354760384, 1024, (8, 'Tahoma')], [130, _("SpamBayes ne fonctionnera pas tant qu'il ne s'est pas entra\xeen\xe9."), -1, (11, 8, 191, 14), 1342177280], [128, _("A propos de l'entra\xeenement..."), 1017, (209, 140, 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, 263, 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 petit, SpamBayes va apprendre \xe0 aiguiller vos messages."), -1, (22, 61, 252, 29), 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, 106, 252, 27), 1342177280], [130, _("Pour plus d'information, cliquer sur le bouton A propos de l'entra\xeenement."), -1, (11, 143, 187, 12), 1342177280], [128, _("Je veux stopper l'entra\xeenement et laisser SpamBayes apprendre sur les nouveaux messages"), 1088, (11, 50, 263, 11), 1342308361], [128, _('Je vais effectuer le pr\xe9-tri moi-m\xeame (bon / spam) et param\xe9trer SpamBayes plus tard'), 1089, (11, 92, 263, 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, 84, 15), 1342177280], [128, _('Assistant...'), 1070, (164, 238, 84, 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, 27, 10), 1342177280], [130, _('(folder name)'), 1033, (102, 166, 77, 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, 27, 10), 1342177280], [130, _('(folder name)'), 1083, (102, 228, 77, 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'} --- 9,13 ---- 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'} From anadelonbrin at users.sourceforge.net Tue Jan 4 04:04:04 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 04:04:07 2005 Subject: [Spambayes-checkins] spambayes/spambayes Options.py,1.120,1.121 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv829/spambayes Modified Files: Options.py Log Message: Fix bug idenfified by Manuel Hewitt. 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. Index: Options.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v retrieving revision 1.120 retrieving revision 1.121 diff -C2 -d -r1.120 -r1.121 *** Options.py 3 Jan 2005 06:51:43 -0000 1.120 --- Options.py 4 Jan 2005 03:04:01 -0000 1.121 *************** *** 1176,1179 **** --- 1176,1183 ---- options.load_defaults(defaults) + # Maybe we are reloading. + if optionsPathname: + options.merge_file(optionsPathname) + alternate = None if hasattr(os, 'getenv'): From anadelonbrin at users.sourceforge.net Tue Jan 4 04:04:57 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 04:05:00 2005 Subject: [Spambayes-checkins] spambayes/spambayes Options.py, 1.107.4.1, 1.107.4.2 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1026/spambayes Modified Files: Tag: release_1_0-branch Options.py Log Message: Backport Options reload bug fix. Index: Options.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v retrieving revision 1.107.4.1 retrieving revision 1.107.4.2 diff -C2 -d -r1.107.4.1 -r1.107.4.2 *** Options.py 15 Oct 2004 05:54:54 -0000 1.107.4.1 --- Options.py 4 Jan 2005 03:04:54 -0000 1.107.4.2 *************** *** 1175,1178 **** --- 1175,1182 ---- options.load_defaults(defaults) + # Maybe we are reloading. + if optionsPathname: + options.merge_file(optionsPathname) + alternate = None if hasattr(os, 'getenv'): From anadelonbrin at users.sourceforge.net Tue Jan 4 04:06:09 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 04:06:12 2005 Subject: [Spambayes-checkins] spambayes/spambayes message.py,1.66,1.67 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1291/spambayes Modified Files: message.py Log Message: If a message had no subject/to then delNotations would fail. Fix that. Index: message.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/message.py,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** message.py 23 Dec 2004 02:06:21 -0000 1.66 --- message.py 4 Jan 2005 03:06:06 -0000 1.67 *************** *** 556,581 **** """ subject = self["Subject"] ! ham = options["Headers", "header_ham_string"] + ',' ! spam = options["Headers", "header_spam_string"] + ',' ! unsure = options["Headers", "header_unsure_string"] + ',' ! if options["Headers", "notate_subject"]: ! for disp in (ham, spam, unsure): ! if subject.startswith(disp): ! self.replace_header("Subject", subject[len(disp):]) ! # Only remove one, maximum. ! break to = self["To"] ! ham = "%s@spambayes.invalid," % \ ! (options["Headers", "header_ham_string"],) ! spam = "%s@spambayes.invalid," % \ ! (options["Headers", "header_spam_string"],) ! unsure = "%s@spambayes.invalid," % \ ! (options["Headers", "header_unsure_string"],) ! if options["Headers", "notate_to"]: ! for disp in (ham, spam, unsure): ! if to.startswith(disp): ! self.replace_header("To", to[len(disp):]) ! # Only remove one, maximum. ! break def currentSBHeaders(self): --- 556,583 ---- """ subject = self["Subject"] ! if subject: ! ham = options["Headers", "header_ham_string"] + ',' ! spam = options["Headers", "header_spam_string"] + ',' ! unsure = options["Headers", "header_unsure_string"] + ',' ! if options["Headers", "notate_subject"]: ! for disp in (ham, spam, unsure): ! if subject.startswith(disp): ! self.replace_header("Subject", subject[len(disp):]) ! # Only remove one, maximum. ! break to = self["To"] ! if to: ! ham = "%s@spambayes.invalid," % \ ! (options["Headers", "header_ham_string"],) ! spam = "%s@spambayes.invalid," % \ ! (options["Headers", "header_spam_string"],) ! unsure = "%s@spambayes.invalid," % \ ! (options["Headers", "header_unsure_string"],) ! if options["Headers", "notate_to"]: ! for disp in (ham, spam, unsure): ! if to.startswith(disp): ! self.replace_header("To", to[len(disp):]) ! # Only remove one, maximum. ! break def currentSBHeaders(self): From anadelonbrin at users.sourceforge.net Tue Jan 4 04:23:26 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 04:23:30 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_message.py, 1.5, 1.6 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4230/spambayes/test Modified Files: test_message.py Log Message: Make compatible with Python 2.2. Add a test for delNotations when there is no subject/to header. Fix a bug in the delNotations only once test. If a dbm module isn't available, then skip the MessageInfoDBTest suite. Index: test_message.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_message.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** test_message.py 2 Jan 2005 05:19:25 -0000 1.5 --- test_message.py 4 Jan 2005 03:23:23 -0000 1.6 *************** *** 468,472 **** # Add a notation to the header header = self.msg[headername] ! self.assert_(disp not in header) options["Headers", "notate_%s" % (headername,)] = \ (self.ham, self.unsure, self.spam) --- 468,472 ---- # Add a notation to the header header = self.msg[headername] ! self.assertEqual(header.find(disp), -1) options["Headers", "notate_%s" % (headername,)] = \ (self.ham, self.unsure, self.spam) *************** *** 474,478 **** self.unsure:self.u_prob}[disp] self.msg.addSBHeaders(prob, self.clues) ! self.assert_(disp in self.msg[headername]) # Remove it self.msg.delNotations() --- 474,478 ---- self.unsure:self.u_prob}[disp] self.msg.addSBHeaders(prob, self.clues) ! self.assertNotEqual(self.msg[headername].find(disp), -1) # Remove it self.msg.delNotations() *************** *** 486,523 **** # Add a notation to the header header = self.msg[headername] ! self.assert_(disp not in header) options["Headers", "notate_%s" % (headername,)] = () prob = {self.ham:self.g_prob, self.spam:self.s_prob, self.unsure:self.u_prob}[disp] self.msg.addSBHeaders(prob, self.clues) ! self.assert_(disp not in self.msg[headername]) # Remove it self.msg.delNotations() self.assertEqual(self.msg[headername], header) ! def test_delNotations_only_once(self): ! # Check that only one disposition is removed, even if more than ! # one is present. for headername in ["subject", "to"]: for disp in (self.ham, self.spam, self.unsure): ! # Add a notation to the header ! header = self.msg[headername] ! self.assert_(disp not in header) options["Headers", "notate_%s" % (headername,)] = \ (self.ham, self.unsure, self.spam) - prob = {self.ham:self.g_prob, self.spam:self.s_prob, - self.unsure:self.u_prob}[disp] - self.msg.addSBHeaders(prob, self.clues) - self.assert_(disp in self.msg[headername]) - header2 = self.msg[headername] - # Add a second notation - self.msg.addSBHeaders(prob, self.clues) - self.assert_(disp in - self.msg[headername].replace(disp, "", 1)) - # Remove it self.msg.delNotations() ! self.assertEqual(self.msg[headername], header2) ! # Restore for next time round the loop ! self.msg.replace_header(headername, header) --- 486,538 ---- # Add a notation to the header header = self.msg[headername] ! self.assertEqual(header.find(disp), -1) options["Headers", "notate_%s" % (headername,)] = () prob = {self.ham:self.g_prob, self.spam:self.s_prob, self.unsure:self.u_prob}[disp] self.msg.addSBHeaders(prob, self.clues) ! self.assertEqual(self.msg[headername].find(disp), -1) # Remove it self.msg.delNotations() self.assertEqual(self.msg[headername], header) ! def test_delNotations_no_header(self): ! # Check that it works if there is no subject/to header. for headername in ["subject", "to"]: for disp in (self.ham, self.spam, self.unsure): ! del self.msg[headername] options["Headers", "notate_%s" % (headername,)] = \ (self.ham, self.unsure, self.spam) self.msg.delNotations() ! self.assertEqual(self.msg[headername], None) ! ! def test_delNotations_only_once_subject(self): ! self._test_delNotations_only_once("subject") ! ! def test_delNotations_only_once_to(self): ! self._test_delNotations_only_once("to") ! ! def _test_delNotations_only_once(self, headername): ! # Check that only one disposition is removed, even if more than ! # one is present. ! for disp in (self.ham, self.spam, self.unsure): ! # Add a notation to the header ! header = self.msg[headername] ! self.assertEqual(header.find(disp), -1) ! options["Headers", "notate_%s" % (headername,)] = \ ! (self.ham, self.unsure, self.spam) ! prob = {self.ham:self.g_prob, self.spam:self.s_prob, ! self.unsure:self.u_prob}[disp] ! self.msg.addSBHeaders(prob, self.clues) ! self.assertNotEqual(self.msg[headername].find(disp), -1) ! header2 = self.msg[headername] ! # Add a second notation ! self.msg.addSBHeaders(prob, self.clues) ! self.assertNotEqual(self.msg[headername].\ ! replace(disp, "", 1).find(disp), -1) ! # Remove it ! self.msg.delNotations() ! self.assertEqual(self.msg[headername], header2) ! # Restore for next time round the loop ! self.msg.replace_header(headername, header) *************** *** 720,729 **** def suite(): suite = unittest.TestSuite() ! for cls in (MessageTest, ! SBHeaderMessageTest, ! MessageInfoPickleTest, ! MessageInfoDBTest, ! UtilitiesTest, ! ): suite.addTest(unittest.makeSuite(cls)) return suite --- 735,757 ---- def suite(): suite = unittest.TestSuite() ! classes = (MessageTest, ! SBHeaderMessageTest, ! MessageInfoPickleTest, ! UtilitiesTest, ! ) ! from spambayes import dbmstorage ! try: ! dbmstorage.open_best() ! except dbmstorage.error: ! print "Skipping MessageInfoDBTest - no dbm module available" ! from spambayes import message ! def always_pickle(): ! return "__test.pik", "pickle" ! message.database_type = always_pickle ! except TypeError: ! # We need an argument, so TypeError will be raised ! # when it *is* available. ! classes += (MessageInfoDBTest,) ! for cls in classes: suite.addTest(unittest.makeSuite(cls)) return suite From anadelonbrin at users.sourceforge.net Tue Jan 4 04:35:53 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 04:35:56 2005 Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.50,1.51 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6079 Modified Files: CHANGELOG.txt Log Message: Bring up to date. Index: CHANGELOG.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** CHANGELOG.txt 20 Dec 2004 04:12:25 -0000 1.50 --- CHANGELOG.txt 4 Jan 2005 03:35:42 -0000 1.51 *************** *** 3,6 **** --- 3,25 ---- Release 1.1a1 ============= + 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. + Tony Meyer 04/01/2005 Add initial French and Spanish translations. + Tony Meyer 03/01/2005 Implement part of [ 753708 ] Support POP over SSL + Tony Meyer 02/01/2005 UserInterface.py: cgi.escape the configuration filename + Skip Montanaro 02/01/2005 tte.py: When running through the messages that haven't been kept for training, delete messages that score properly. + Tony Meyer 29/12/2004 Outlook: Report the last modified date in the "show clues" message. + Kenny Pitt 24/12/2004 New version numbering scheme. + Tony Meyer 23/12/2004 Outlook: Enlarge the Manager dialog and add a control to set the ham folder. + Tony Meyer 23/12/2004 Provide constants for the persistent ham/spam/unsure stings for the messageinfo db. + Kenny Pitt 23/12/2004 Add a button on the Statistics tab to reset the Outlook statistics. Also display the date when the statistics were last reset. + Tony Meyer 22/12/2004 Make Dibbler.py compatible with Python 2.2.1. + Tony Meyer 22/12/2004 FileCorpus.py: Don't use the strict keyword arg as it is deprecated. + Tony Meyer 22/12/2004 Add _() wrappers around appropriate strings in spambayes/ and scripts/. + Tony Meyer 22/12/2004 i18n.py: Add a function to load the ui.html file appropriate for the language. + Tony Meyer 22/12/2004 Merge the Outlook2000.oastats.Stats class and the spambayes.Stats.Stats class. + Tony Meyer 22/12/2004 Store a stats start date in the message database, so that we can 'reset' the statistics without removing the whole message database. + Tony Meyer 22/12/2004 Allow message.Messages to have their id specified on creation. Also allow specification of the messageinfo_db. + Kenny Pitt 21/12/2004 sb_server: Fix a bug with the new style of checking the +OK on a RETR. Tony Meyer 20/12/2004 Allow Outlook users to select their storage method in exactly the same way as other users can. Tony Meyer 20/12/2004 Outlook: add a wrapper for the ZODB (FileStorage) storage class. From anadelonbrin at users.sourceforge.net Tue Jan 4 04:36:17 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 4 04:36:20 2005 Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.44.4.6,1.44.4.7 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6178 Modified Files: Tag: release_1_0-branch CHANGELOG.txt Log Message: Bring up to date. Index: CHANGELOG.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v retrieving revision 1.44.4.6 retrieving revision 1.44.4.7 diff -C2 -d -r1.44.4.6 -r1.44.4.7 *** CHANGELOG.txt 20 Dec 2004 04:12:05 -0000 1.44.4.6 --- CHANGELOG.txt 4 Jan 2005 03:36:14 -0000 1.44.4.7 *************** *** 3,6 **** --- 3,9 ---- Release 1.0.2 ============= + 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 02/01/2005 UserInterface.py: cgi.escape the configuration filename + Tony Meyer 22/12/2004 Make Dibbler.py compatible with Python 2.2.1. Tony Meyer 17/12/2004 message.py: Change the deprecated function to work in Python 2.4. Tony Meyer 06/12/2004 Fix [ 1078923 ] Unicode support incomplete From kpitt at users.sourceforge.net Fri Jan 7 20:58:49 2005 From: kpitt at users.sourceforge.net (Kenny Pitt) Date: Fri Jan 7 20:58:53 2005 Subject: [Spambayes-checkins] spambayes/spambayes dbmstorage.py,1.11,1.12 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26748 Modified Files: dbmstorage.py Log Message: Apparently the default Python installation on NetBSD does not include the bsddb package, so maybe there are others that have the same issue. Since bsddb is the same as bsddb3 on any recent Python (2.3+), try using bsddb3 instead if we are unable to import bsddb. Index: dbmstorage.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/dbmstorage.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** dbmstorage.py 16 Dec 2003 05:06:34 -0000 1.11 --- dbmstorage.py 7 Jan 2005 19:58:37 -0000 1.12 *************** *** 17,21 **** """Open a bsddb hash. Don't use this on Windows, unless Python 2.3 or greater is used, in which case bsddb3 is actually named bsddb.""" ! import bsddb return bsddb.hashopen(*args) --- 17,24 ---- """Open a bsddb hash. Don't use this on Windows, unless Python 2.3 or greater is used, in which case bsddb3 is actually named bsddb.""" ! try: ! import bsddb ! except ImportError: ! import bsddb3 as bsddb return bsddb.hashopen(*args) From anadelonbrin at users.sourceforge.net Mon Jan 10 00:08:27 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 10 00:08:30 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/docs troubleshooting.html, 1.25, 1.26 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7273/Outlook2000/docs Modified Files: troubleshooting.html Log Message: Add in a tip about including quotes that Kenny gave to spambayes@python.org Index: troubleshooting.html =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/docs/troubleshooting.html,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** troubleshooting.html 20 Dec 2004 03:33:08 -0000 1.25 --- troubleshooting.html 9 Jan 2005 23:08:24 -0000 1.26 *************** *** 253,256 **** --- 253,262 ----     "c:\Program Files\SpamBayes\bin\outlook_addin_register.exe" hkey_local_machine
    + Note that the double-quotes in the above command are significant (and + should be typed). Because "Program Files" has a space in it, you + must surround the entire command name with quotes. Otherwise, + you'll get an error something like: +
    'c:\Program' is not recognized as an internal or external command,
    + operable program or batch file.

    If you check the installation log after performing such an install, you should see the following messages:
    From anadelonbrin at users.sourceforge.net Mon Jan 10 03:27:51 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 10 03:27:54 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR .cvsignore,1.1,1.2 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19343/languages/fr_FR Modified Files: .cvsignore Log Message: The .cvsignore file gets converted by resourcepackage - ignore it. Index: .cvsignore =================================================================== RCS file: /cvsroot/spambayes/spambayes/languages/fr_FR/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** .cvsignore 4 Jan 2005 00:42:31 -0000 1.1 --- .cvsignore 10 Jan 2005 02:27:48 -0000 1.2 *************** *** 1,2 **** --- 1,3 ---- *.pyc *.pyo + _cvsignore.py From anadelonbrin at users.sourceforge.net Mon Jan 10 03:36:23 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 10 03:36:26 2005 Subject: [Spambayes-checkins] spambayes/spambayes ImapUI.py, 1.43, 1.44 ProxyUI.py, 1.58, 1.59 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21482/spambayes Modified Files: ImapUI.py ProxyUI.py Log Message: Add the interface language to the advanced options pages. Index: ImapUI.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/ImapUI.py,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** ImapUI.py 2 Jan 2005 05:00:40 -0000 1.43 --- ImapUI.py 10 Jan 2005 02:36:20 -0000 1.44 *************** *** 106,109 **** --- 106,110 ---- ('html_ui', 'http_user_name'), ('html_ui', 'http_password'), + ('globals', 'language'), ) Index: ProxyUI.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/ProxyUI.py,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** ProxyUI.py 2 Jan 2005 05:00:40 -0000 1.58 --- ProxyUI.py 10 Jan 2005 02:36:20 -0000 1.59 *************** *** 154,157 **** --- 154,158 ---- ('pop3proxy', 'allow_remote_connections'), ('smtpproxy', 'allow_remote_connections'), + ('globals', 'language'), (_('POP3 Proxy Options'), None), ('pop3proxy', 'retrieval_timeout'), From anadelonbrin at users.sourceforge.net Mon Jan 10 03:29:39 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 10 03:54:58 2005 Subject: [Spambayes-checkins] spambayes/languages/fr_FR i18n.ui.html, NONE, 1.1 i18n_ui_html.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/languages/fr_FR In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19729/languages/fr_FR Added Files: i18n.ui.html i18n_ui_html.py Log Message: Add French translation, thanks to Nicolas --- NEW FILE: i18n.ui.html --- SpamBayes - Interface utilisateur

    Introduction

    Cette page, ui.html, définit l'aspect visuel de l'interface utilisateur du serveur SpamBayes. Les différentes parties de code HTML définies ici sont extraites et générées à l'exécution pour produire du code HTML dynamique que le serveur SpamBayes va servir - ce fichier est un ensemble de de composants HTML. PyMeldLite est le fantastique module qui fournit la correspondance entre les objets et le code HTML. Chaque partie de code HTML à réécrire est signalé par des balises du type id, et devient un objet Python pendant la phase d'exécution.

    Cette "Introduction" est une présentation de ce fichier. Elle n'a pas besoin d'être traduite et n'est jamais utilisée dans l'interface homme-machine.

    Voici un exemple du mode de fonctionnement : une boîte de dialogue avec un id de examplebox: PyMeldLite vous permet de manipuler le code HTML par programmation :

        >>> import PyMeldLite
        >>> html = open("ui.html", "rt").read()
        >>> doc = PyMeldLite.Container(html)
        >>> print doc.examplebox
        <input id="examplebox" size="10" type="text" value="exemple"/>
        >>> doc.examplebox.value = "Changé"
        >>> print doc.examplebox
        <input id="examplebox" size="10" type="text" value="Changé"/>
        

    Le code Python nécessaire à la génération de l'interface utilisateur HTML n'a pas besoin de s'embêter à concaténer des chaînes ou construire des composants HTML de zéro dans le code. L'aspect visuel est dénini uniquement par ce fichier HTML - changement de feuille de style, traduction (autres langues), ajout d'une extension à l'interface utilisateur - et tout cela très simplement.

    Les composants de l'interface utilisateur figurent ci-dessous avec leurs ids.


    headedBox

    Headed box
      Ceci est le "headedBox". La plupart des éléments de l'interface utilisateur est présentée dans des boîtes comme celle-ci. Les élements ne sont pas présentés ici ui.html pour éviter une duplication de code HTML. Telle quelle, cette section n'a pas besoin d'être traduite.
     

    Aide

    SpamBayes - Aide
      Navré, pas d'aide disponible pour cette section.

    Si vous pensez avoir découvert un bogue (bug) dans SpamBayes, ou que vous êtes perdu dans la manière de procéder (installation / mise en oeuvre, ...), vous pouvez vous adresser à la mailing list pour obtenir de l'aide. Veuillez noter que les membres de cette liste sont des volontaires qui répondent sur leur temps libre. Une réponse à vos questions peut prendre un certain temps.
     
    Si vous étiez quasiment sûr d'avoir trouvé un bogue, le mieux est de le soumettre via le Suivi SourceForge, ceci évitera d'éventuelles pertes de messages dans la possible masse de messages adressés à la liste et palier aux désagrément occasionnés par des virus qui peuvent remplir la boîte de messagerie.
     
    Lors de la soumission d'un message, merci d'être aussi précis que possible pour éviter des échanges inutiles tels que "merci de nous indiquer ceci ou cela". Il est de bonne augure d'inclure le mode opératoire nous permettant de reproduire le problème, le contenu des messages complet ayant provoqué le boque, une copie du message, ... ainsi que votre suggestion. Toute suggestion de traduction est également la bienvenue. Pour vous aider, SpamBayes peut créer un message de demande d'assistance pour vous.

    Aide - Résumé des fonctionnalités

    Résumé des fonctionnalités

    Lorsque vous commencez à utiliser SpamBayes, tous vos mails seront considérés comme 'Douteux' car SpamBayes n'a aucun moyen de reconnaître ce qui pour vous constitue un bon ou un mauvais message. Il va donc être nécessaire de lui apprendre à reconnaître les messages. Au fur et à mesure, de moins en moins de messages seront considérés comme douteux et il ne restera plus que deux catégories de messages, les bons et les mauvais. Rien que lui montrer une vingtaine d'exemple de chaque est suffisant pour obtenir de bons résultats. A un certain stades, vous constaterez même que certains messages envoyés automatiquement par des virus par exemple sont aiguillés vers le dossier réservé aux messages non sollicités.

    SpamBayes conserve une copie temporaire de tous vos messages entrants, pour que vous soyez en mesure d'utiliser n'importe quel client de messagerie. Pour chacun de ces messages, vous indiquerez à SpamBayes comment il convient de le considérer. La page affiche la liste des messages qui sont arrivés les %(cache_expiry_days) derniers jours et pour lesquels vous n'avez pas établi de classification. Pour chaque message, vous devez choisir soit de l'ignorer (pas d'apprentissage sur ce message), d'attendre (garder le message pour un apprentissage futur), ou l'utiliser pour entraîner SpamBayes (soit en tant que bon message - bon (ham), ou mauvais - spam). Pour cela, il suffit de simplement cliquer sur le cercle idoine. Pour aller plus vite, vous pouvez aussi cliquer sur le titre de la colonne pour classifier tous les messages d'un seul coup.

    Pour vous aider à déterminer la nature du message, le sujet ainsi que l'emetteur du message vous sont présentés. Bien évidemment, ces informations n'étant pas toujours suffisantes pour prendre votre décision, vous pouvez également en visualiser le contenu (en texte brut par sécurité pour éviter qu'un virus n'endommage votre système) en cliquant sur le sujet du message.

    Une fois les actions choisies sur chacun des messages, il vous suffit de cliquer sur le bouton Apprentissage figurant en bas de page. SpamBayes mettra alors à jour sa base de donnée pour intégrer votre classification et en tiendra compte sur vos prochains messages.

    SpamBayes effectue cette classification sur vos nouveaux messages en fonction de vos choix précédents. Si elle est correcte, vous pourrez choisir d'ignorer le message - c.f. le wiki SpamBayes pour une discussion sur les techniques d'apprentissage (en anglais). Vous pouvez également consulter les éléments (Tokens) contenus dans le message (pas uniquement les mots mais aussi d'autres éléments générés par SpamBayes) et les indices (Clues) utilisés par SpamBayes pour classifier le message (notez que tous les les éléments du messages ne sont pas utilisés pour la classification).

    Pour des soucis de visibilité, les nouveaux messages en attente de cette classification sont groupés par leur date d'arrivée. Des boutons Jour précédent et Jour suivant sont à votre disposition en haut de page pour changer de jour. Si un nouveau message arrive pendant que vous effectuez la classification, il ne sera pas automatiquement ajouté à la liste affichée à l'écran ; il vous faudra cliquer sur le bouton Raffraîchir en haut de page pour le voir apparaître.

    Aide - Statistiques

    SpamBayes conserve certaines informations sur la classification des messages. Cette page permet d'afficher les statistiques sur la classification des messages et l'état actuel de l'apprentissage.

    Au jour d'aujourd'hui, la page affiche le nombre de messages considérés comme bon, mauvais (spam) ou douteux, le nombre de faux négatifs et faux positifs et enfin combien de messages ont été considérés comme douteux (et comment vous les avez classifié).

    Notez que les données de cette page figurent dans la base de données "message info" utilisée par SpamBayes depuis la dernière création de la base (vous pouvez recréer la base sur demande).

    Aide - Page principale

    Ceci est la page principale d'aide sur l'interface Web de SpamBayes. Vous y trouverez l'état actuel de SpamBayes ainsi que les liens vous permettant d'accéder à vos messages ou de modifier votre configuration.

    Cette page vous permet également de pratiquer l'apprentissage initial soit à partir de messages stockés dans des fichiers mbox (Unix) ou dbx (Outlook Express), soit à partir d'un message que vous fournissez. Cliquez sur le bouton "Parcourir..." (ou collez le texte, en incluant les en-têtes), et cliquez sur le bouton approprié, soit Ceci est un bon message soit Ceci est du Spam

    De même, si vous avez un message que vous souhaitez soumettre pour analyse, vous avez une fenêtre à votre disposition. Deux solutions s'offrent à vous, un copier/coller ou "Importer..." le message. Il suffira alors de cliquer sur le bouton Analyser et une page affichant comment SpamBayes a classifié le message s'affichera.

    Pour obtenir des informations sur un mot dans la base de données dédiée aux statistiques (qui est le coeur de SpamBayes), vous pouvez utiliser le champ "Mot à analyser". Entrez alors simplement le mot à rechercher et cliquez sur le bouton Analyser ce mot. La recherche avancée vous permet d'aller plus loin car elle admet les caratères génériques et le expressions régulières.

    Vous avez également la possibilité d'obtenir des informations sur un message en partculier grâce à la copie temporaire que le système conserve avant de vous les délivrer. Ceci peut être intéressant si vous avez fait une erreur sur la classification d'un message et voulez repratiquer l'analyse. La recherche est poissible sur l'ensemble du message, que ce soit sur le sujet, les en-têtes, le corps du message ou encore les identifiants (ID) SpamBayes. Les messages correspondants sont affichées dans l'interface traditionnelle. Attention cependant, les messages qui ont expiré (les messages ont une durée de vie de %(cache_expiry_days) jours) ne peuvent plus être trouvés.


    Demande pré-remplie d'aide / soumission de bogue

    Send Help Message
    Emetteur :
    Sujet :
    Message :
    Fichier de trace à joindre :

    Status

    Le mandataire (proxy) POP3 est en écoute sur le port 1110, et relaie les données du serveur d'origine POP3 example.com.
    Connexions POP3 en cours : 0.
    Total de connexions POP3 pour cette session : 0.
    Répartition des messages analysés durant cette sessions : Spam : 0, Bons : 0, Douteux : 0.
    Répartition des messages utilisés pour l'apprentissage : Spam : 0 Bons : 0
    Statistiques complémentaires...
              Vous pouvez configurer SpamBayes
          à partir de la page de paramétrage.
    Attention : mettez votre message d'alerte ici ! Ces alertes sont insérées dynamiquement, la traduction n'est de fait pas nécessaire.

    reviewText

    Le proxy SpamBayes stocke tous les messages qu'il voit. Vous pouvez utiliser l'apprentissage sur ces messages à partir de la page de Classification des messages.


    reviewTable

    Ici sont représentés les messages que vous pouvez utiliser pour l'apprentissage. Appuyez sur le bouton approprié pour chaque message et clqiuer sur le bouton 'Apprentissage' ci-dessous. 'Mettre en attente' conserve le message ici pour remettre l'opération à plus tard. Vous pouvez également cliquer sur l'en-tête de colonne Annuler / Mettre en attente / Bon / Spam pour traiter tous les messages d'un coup. L'autre en-tête vous permet de trier les messages par type (attention, vous perdriez alors toute modification non validée faite sur la page).

              
     
    Messages reconnus comme étant du TYPE :
    Emetteur Sujet du message Reception le Annuler / En attente / Bon / Spam Score
    Richie Hindle <richie@entrian.com> Sat, 11 Sep 2003 19:03:11                  0.00% Indices | Eléments
       
        

    Import

    Vous pouvez importer un message , mbox (unix) ou dbx :
    ou coller tout un message (en incluant les en-têtes) ici :

    (Le formulaire d'import est utilisé aussi bien pour l'apprentissage que pour la classification - les éléments inutiles seront supprimés à l'exécution)


    Recherche d'un mot


    Requête simple
    Requête avec caractères génériques (*, ?)
    Requête à partir d'expressions régulières
    Ignorer la casse
    Nombre maximal de messages

    Recherche d'un message

    Chercher dans...
    Identificateur SpamBayes
    Sujet
    En-tête de message
    Corps du message
    Ignorer la casse
    Nombre maximal de messages

    Statistiques d'un mot

    Nombre de messages de type spam : 123.
    Nombre de bons messages : 456.
    Probabilité qu'un message contenant ce mot soit un spam : 0.789.
    Mot # Spam # Bon Probabilé
    spambayes 123 436 .789

    Résultat de classification

    Probabilité de spam (après) : 0.123. Probabilité de spam (avant) : 0.125.

    Voici la table des indices menant à cette probabilité
    Mot Probabilé Occurences dans un bon message Occurences dans un spam
    Mot exemple 0.123 1 2

    Retour à lapage principale ou classification d'un autre

    (La feuille de classification est ici)

    Formulaire de paramétrage

    Cette page vous permet de changer le comportement de SpamBayes relatif au traitement de vos messages. Vos choix sont stockés dans /chemin/exemple.

    Element      

    (Réservé à l'aide)

    Element
    Valeur de l'élément 
         

    (Réservé à l'aide)

    Valeur actuelle :  (valeur)
    Valeur actuelle :  (valeur)
     
    Nom du dossier / répertoire

    (Réservé à l'aide)


    Vous quittez le système

    Terminé. Merci, à bientôt.


    --- NEW FILE: i18n_ui_html.py --- # -*- coding: ISO-8859-1 -*- """Resource i18n_ui_html (from file i18n.ui.html)""" # written by resourcepackage: (1, 0, 0) source = 'i18n.ui.html' package = 'languages.fr_FR' import zlib data = zlib.decompress("xÚÝ}Ûr\033É•àó:Âÿ]\016©È\035\020\000©‹mŠ„-Q²¥Y©[#±{b¢£ƒ‘¨J\000Ù]¨‚ê\002’ê™UÌSÃ\017\ ~Ú·}ÙsÉÌʺ€\004¥¶7bÕ¶\004Ôåä9'Ï=O&N¾zþÍÙù¼}!^ž¿y-Þ~ûìõ«3\021\034ŒFÿþàl4\ z~þœo<\034Ž\017Åy.ÓB—:Ke2\032½ø:˜üö7'‹r™Ð¿JÆøo©ËD\011\035Ÿ\006ô)˜¼_Éå3y­\012q ^¥¥\ Êg2R¢*u¢\013Yª*?\031Ñ“øòR•R,Êru >Tz}\032œÉh¡\002\021eðbZž\006iv\020ñ¥Qïó/®V:W…÷Æù\ ¢\032\010@þ_e*\016ÿøû±\030éâ¯oη¡a\017Î\000Fž%=Ã\017IJ*ʃ\\­e¢c b àVQf¹Å¬(¯‰¤i\ \026_‹ŸÅ\014 \034‹?Žï\011™k™\014Dq©‹b \026*Y«RGò‰XÊ|®Óc1\026ÿõÛß”r\012\\Üá=|x–åKx¶\001à·\ ¿‘ljN‚ëQ–dù±øÝ\030þDtS\036¯5L¤Š·Ü]dk•{÷\036\037Žg3¼74¬\020Ò wp©ô|\0018N³$¦'Ö\ Z]ÒÈGRÀS&ŒÝp*Ó”\006™Êè§yžUi\014#Ec\005#=\021+\031Ç:Ÿ>r\037\017\0225\003\030‡žüö7Âý™fy¬ò\ ƒ2[Á­Õ•(2˜\0171M\000fßsÓ¬,³eçQÂ\033\005˜\020\"œ\013ýQÁs\017\036Ük]sùð\021ÝXª¢sÅóU\"C[øª\ «š„œù\000×èÝBE¨Lv®\031G\037¹ßýaŒÿ=\021—:.\027 \007îù/\"Æ\000¶ÍÃÙl&ÕøI\017\">GnåŒ\035¼ï¥þ\ ™7h\031‘7Ã\003ÈñêÊL:(\014H\007sº\020½\022:&\031ì<Ù/°æáZän€è=t\0230¤£ÌõJ]d)Ohƒ¹*Âÿ̃•\ ~\011ÖïeŸà\034ï=qÐÿ@Пô³íddmÅÉÈ\030QøHLD+Š\037\002º†Œ?‰õZD‰,ŠÓ5(œ˜;Å\012,\034¾\001\ ¶\001\014Z09Ñ˹(òè4ä+ùž…\002\014Ö<=\015å´Xê8NT8šÜO§Åê\011à\001\020\032ÐÌ@<\013v æ`«<‹«¨üZ\ .w3õ4Ʊ\007I2ÎÙRáä\004b‘«\031\014\011ßÃÉÓ(ª”NNF²lP¼”\006¾?/ŸˆJ\017Ñ\0315éh~\001î1{‘\010b\ )uzƺ\035\030r\003£ëÌô“ÅÃÉ+t\003H%\0107ÌÑÃz6V“3U–J &\003q\022e±š84èÛ@Ä›™Nu)’P\026+Ð\020\ \001ÒW©„!Ä\012®ë>V‰¸\022…Ê×øÑñu(Äkàn¬g³M\0168ª‚Á¬d^j¼¡\004ŽÊ>›\007†«:Ò Ó`½ÔU™K\ üB¨RÌ7é&ßÀçO\014#\011ÕÕ&ªH±Ê`TšZ𦈉\007õ\032X®?TJàÿÁp\031$\031H-\001kIwt\016²\000”Ít\ ´Ð %ª(E•\012•\026j‰f/Æÿñ»Q¶\\e…LË‚F\002Z™¡o¯ß¨$~\015x\033ž\022\020xw\006ÏÊ¢$d–€kb\000\017\007\ U«râº\004¸9„\004«,e\012˜\000ÛrD¼\020ÙôGU\022/\022oC\006r¶\010—9Ûdì'‘o6QŽ¬AL\012P(™lðQx®\ \000{\001sˆ“Q‰òzepbRtìÄ\002FÑÆ¥Ä\017BE¼½.\027È}…¨\022î«…,`ôzj†'£UWþ\002_D\003Ãd@>ß\024\ 0€¤9E\022Ü<\030\"_$@y\032Â8\022ðVE¦á¹ðoÈ \024˜}€\015x¥!BüQ‚¶\024FF7€\025Dƒ¾ô2HÐÜ¥:XB\ ”¤SÕÆö»\014e\021çÿJ-W\011‰Ö2#\031@ãHè§j‰L9&\012¦ÙßK\026\022ˆ~²9Lˆ\\«ˆá\001˜\026WñA¾¤®$Ÿ\ fWæ–19':]U%©~ýH@ó\004\001+èG\000‚›T\012o\023†@ƒ~\032\034Žƒ‘1#µ<ŠuV\0250]ù’f\023bƒT¯@\014ó\ †@‘`€2Ís¹\\ò\\\0347ø‚ƈ|\000Øôn\014ðxŒÿ93¿‚¹±\017÷y}\027\005>ñ=°{\035]\020û¥Ó€¼ÞÙ8˜ÀŸ“\ \021Þ™\010\015:˜—\036;¾‡&OœŠ\014dw/0&0\030ˆ /ƒ}pæ2ÞÛß\021RœE\000¨F`ˆö\031Ì´Ê÷\020è®`V9\010&\002\ \033Ö\023me`r?)ŸôK‚›í›db„þæd¤'»“äa1$h@c\0006&o‚ÿ‡\024\031\014Ú\004@Ê:NÓèðk#ÚÆX¥\ ›\010C`4†ŸÐb‘[q\026g›sC½`ˆmë\003Ò\035‚kø\033¼\005\000Á\027G²Ü`¦€¦5ZÈ¿§h¹Ñ#¥\020§±‚+½.\004\ ¡}Üä™1UŒ8úЦ+&{\031oRð–`TÐ\005Bµ5`kÿE`\017\020‘tΡéR•NØ™‘j\016Øz’9\023{²\002{\012\ ÃÃ\033•*ö\007\014Sþ˜ÁdÅ!Z9˜\021pˆøð§­\034;@C\\â;‘\0026—ù/Æ÷\027\032§\032Qi[[\014\025<ŽÜ0\0353=¯0ž\ \020‘>\000n\026hÖÐÐ\002Ϫ¼èõ`…\033\015ƒ¤œ’Þ•\015¡üÀ8˜Pü\030?C[ìáçÅ«æv`EŽ3\"\023}úYRˆÄ'ðf\ „ÉaX›µ2Ÿœ@°nÁÁÝ õ¾¹\034¢†áЧáQ8!\014!\011DÔÊ\0304\015àt †\032dí\014Æ\015Qk(z†|3lÁÇ8=\ äD\015@ýh™U\024‚q\013,ä°¼\000Ï\\\025\034–›\027\037ŽCÈí1A Ï66÷¢_ÄÓûjˆ\006\012Zal\003/ï3\005\036Ø\004P\036\ ëQ+@\021“\012\003\036Ò¨M²A¡ºInj¨\010ÐD\03362 P\010Ý7\011áRÑÔ©ƒH\017)†Ý°Ì\026\002䟂S4\002\026„Õgüƒ\021\ C_dÍAêf­ÑR \026ÅÕ*ÑQ\035ì´\002:üsŽ(`àš ’F\024;\031>Ý\022\006\015­5´b\002¡D\032Κ\024jšÚ‰Ç­Ú\ ñTÇÊ*†ËK c[aRñå*q»\026¸\001\027\006#?cìúuã\016Ú òì’Ç{°‹f 6\015½8:ªõâÁÑîz€ØáÝ\ ¬\025_Ëu¾\031ÐüÇ¡Ô\024pbÊ ‘ë$h\015a\031ö\016ÜbQ\023\0333÷Þø¡/r1šì\012\001é‘Sð\000Ójž+\014Ón£ê½¶\ \021*¤[\037Á¢gŽÅ›(«Ö*§¼cJ1õ\036@Üg­us?@'‹\031\020B¨Aþ\015õ\031\"^\010ÜÙ©JŠz!7ŒQn´Áb\ Èž\006ï,“„µq$–\021Aæ%2U­sP½áp¸?ð”œÑD¼>òg\031ƒÏ,(\006 !Àæ¤s\001†§äéȦ`ì\0324N\ 8a0%ÿã;öÃ\037Eš¡Qà\004µ\020Kˆ'r“\035Ó,\"\030cuÐJ­!æÂ\0203W\036¡˜Dæ\033Ì\032Ñ/\026UN¾P”\020\001\002Õ\032\ \000\016Å·`uè™\002ƒŸuVà\005’Œ<ªÊ\032\032ÄS)P„,€õ\020Î2¤!˜\014á*0ô\031è°ó¶Ôó#À”àã\011‹ÿ“\ £xÒ4B¾W­7n\016\007hÏ—ZUW\034ͨzlÌѳ\012R\024´gk-ñ‰äBK€UïãÑ\010\036È#5Ëò¹\032¦ª\0041„ÜB\ å£?a~±º\000Ñ{|øûñQà\013W¥×Z¼§\027ÿ‚/b™\006*Øk¶Ê\022ݬ\001q²·$6%Oƒ©š\026$C\036¦`³¢\ ¥[‚`«Æ³,\022à\033H$x\016\025ú\004\0033\011”Ç\033x2'·U\003Í¢Hbl•Â›6E_ë¼*hŠaš\020C‘cd\017l\005È.\ ç4#çZõN“\035àu–³“”Äg]P$‡‘…0€\0179°Åø\024YÁ#èë\"M\022㈆©÷\032yaŽ4\013¡St¼ð¡T\011\ ¿\025\030 Á£°è4ÆÐ5ç\031À\010\031âÄÀ³T¯L ‹Y5dÙ€\006\006}€”N£¤¢š\010'ãÙ\012#ø\014Cë´NpKÉÁ. \ \011ÖÇÖ†\022RúiòË’E‹g\025áîf\016ƒÐ\004¦J^#\014x~}¨6\010)Ad> ø¢\007²•æš€å\033Ø\011\001Ê\002ìbS\ „ì+ªùœµlˆ ÎÁ\"ú\027\021G/üF’7sÉÑ\006M¯V)Ly¥<Ö¼E®³Ý\001S’\017¼:\026êq­.µéDù†\002\017‹\ l\015ê\031`\025ñ_È4\012T¬<¡~°ñ‘np!uháU,o\017\"À[¿Û\024ÕrCÌwå\024P\017\010¨\\„±xÔò÷\027\\j\017\ &7½¼x4iE'èUÝ«ˆ<&\034 \011ÖepÐ\007d\004}å˜QQÀèy˜\022ŸC³‰ö½Àz!§À0ßñ\006BA\0238†ÏqŠ\ «+\0102¤W\014E`\030´É*ÂYÈ®\025Í}®\"Düï(*‘b%wÓKY£\006ƒÄ†3E=©R„´”Õ\032Ë[f6‡¨.k°`À\ \011AZë%º¨ì\000V®¬YÿäŠÐ\022Oü‡âi%f€\001hÀ'¼Z¡\007Dû\002qf^‘?ø¶®Ã\012\004Ê܈™\031\010M'\030=\ ƒU$c\013Á;\033†\030ocÚ<ÏrÝ4¸\003Â\014\010'€Tù,,éCñ\016Tƒ½&P·ÄÕO\023Z¯ÁùR\015†J‘¦t§0\013Ƨa\ |„VT³™.HÃ[\036\032Ç\003GYT\011d<È\017ß\017‚rĈX=?[äê#MÊß–\\g6\017{6\005”8»\006\021ì:ꚟµ\ ×&\036¿\031„\011Edª„d\027Â\004xwkKH\012Ú_ \025³\034œ*ú\0227P\012RRd\011¤\026¨\012¤¶¬LB\030±¯\005¢åpbÚ\ I\001>:Oت¡»Ïr\024\037\\ð¡\033d©œ\012˜ñh^€ó˜²\017˜“N¥\012ñ$0$DècŒb\"p厳\0330\022šk\023Ä\ ÅÚ±¥ƒyC•¡x¨ðdcíû\021R\\Ÿ´%ñW',ŠéÚŒ`¬>ɩʇ”F\0028!gX3Qµ¯n¸\004TKž<×ë\015\ N\003‘~o\026Ø/\024.ä__Äòº€ÈTå©Æ¹ú\021°§‚=ñ\005^Ab\013Æ\033L\001F\030ÂoÐ~jC=ÙK=3™!ÍŸe\002\ -\034XWC@b…0¢E¦\013\020]H\004™ÂÐÎ%ä;\031Pé¦\020¡í™¬¬A©\011\034\005Œ‘ƒ\016±nì`H\010AÑj4Ì%V~É\ \007ó;L#LS\023ð¬*«|Ÿ¢ó¤ž~|ÖIÎß±\\VÏÜ\036‘\001RC\036\034iFÃgG9prŠW÷\026r¹ï\020£Q¬a< i7\ w —[ºÇö­XAÀ1@£D–€8W\027§P$)<áP\0325:¢F‘\014×\011ܬ@΀ä )à hÐÈ\0148pj\001\002snL²¤\ ê)†6–\035vîáiR4ß,s„V¨\012´\005bÜaK©[!\001èB¼\001»´ÄB4\016•Ê²Ê›Á\012\006Ú\025®ãÔ\021K\022*\014x=\ ÏÓE«Ïi]6\001»ø\014í/\004\020= Ë\006¤ž:Åþ\016ÉYE\032nh\026Qä€\"Ò‡†íU…]¼cÏÄ!SŒ¡&\000h²³\016‹\ `X,…J\026&¶•6’ÛCÉÁ\012¥˜æ\025Û×b\023U9XÃF\011æC…üd³›†0:\030\014¦ÔøÄâº(!LÜÇÑh\016¥K¬\014\ ßjf¶g\0033­\031(%Í Œ˜\031¬¦è-}›æ\0334Ef´\023H#<Ì3\032\0323jü\023µœ<õ5íd\004W¸2*™ESI¾\024\ ­Û°\021É\010J® \022I0\025øDfJ\024\022_àÅ+Ì>ŒBk˜ê9úUž™¦u2N\0319®qþ$…Î%›\023ô\022˜`/\032Žp¸Õ\ \031©ÙLEee“ÞæH\016bŠ²Ðpx0ºÿŒ\011ÅçÙW”´l0#\006i…,•Êi\030aÓ\032käëkž{†\024Œ\0370Ó\031Od\ lmèp„\003\021\015gþÌ\024-š–é\020\0301*¦—ú'\035Lðïf\034XÇÖT\011ÔETq\032Æ“ŒYS´ Ò~×T£€CŽ•€‘\003\ Kö]Ÿ‚\030}À\000F1<¤ÇUH÷γŸTZì3eFq\012·ê`už\034…·À@Ö(+)ü%*ؾ\001~¼bààóR=G3Žì\ }\033¾\021kÁi£±Ø;KpY‚ȘÕÚÖ»¦¤U[G\037K,ž|$ëål¦\015iëšpå\005H^\001·\036Ž\034´lIÝ~¯•E\ …Ì\031³á\030cMÈ…5æ\035\034¬ö\012(ùPÎÒû¥;ãI£ò…¡žê7ج‡\034¦¨\003â¡ç\024\016£\005`Fþ+\033O#åÄC£\ ”înQéµ4÷˜òOÖÌbÍ;$\021É…¬Jk0\014Ç)™§˜\030m\004[\021Z\0207TºY \004•k\005p! Uê]æ\016Llf}\ tJ½\031TÔ®CÎv¸LËP\033¿¤ÂqÛ†–óÂM\004ÆO<±†\024ÁÏdE†©é…=+ú\016 @\020\022-´Qõ^V$H\020˜\006Ð\ E™SÞä…Ö~ÞÛÉW1A(\\Êû\036Û\033¸\011d{žj^Ù\036¯›ü¢ín‹>!Fyõ\\9Xº\011È5\003„&üekQxHö\ \003E€\000\031•\033}‰î\016Cz®tú–«­Lf’çA\003‚\037âpQé\001UÕ\032\0019–u°\"ÚÈ8ûRÍ)\012•ÿö0æÛÇ\ ˆÐd ƒ&¤\031êh\012&³Ô3B\037/ ,V\011¾¦Ò\031¤|\000\035«0ñQ6 ‰ìßæ»{ªt˜Á³kk›(ê·ÌÜt,\ Ì×ΚáÃ쉽R0qÆ-Ú’vÓq\023Gò‰UO”\022¾R÷Ã4-l¬V•&`”½üÂ1P”oêµq3Ξ\037“\ \027¥º’½Y}¤b’%íFåÀƹ\013ˆ\022®®†¼%¹Ìu\032é\025ø³­Jâ¿j˜W/\026\032\031ªÁØu\022’foyðßÕÔ\ D\015^×\0329Õk®YSfÙ\021íšq^ðÌœÇT¶ð[m¸\022\031ʈ×\032>5òg\022P*d²g3aV–r$çõP9\021ñÔ×oè\ ©ÃcZÙ`£™·•P`sŸ–\011—\0274:\003ê\031Ë›õœ2‹~Ú\024õʨé'\000¼§\031Èö·©¾bÝš^\021Z{ßTe’e?‰\ \027W+,{CÆׂîÕ—k÷ÀmoE¡>’5=##ý±e¤YpßÊ\034òž\\çÃáЈò\036õUÐ\012\012&V\030ô\017ÐzSXš\ ˆE¥\007%®\002q#ƒ²‰]{\020dR\006â²1ˆ£gpâdŠo\006}çe»\017BœñžRM¸ØšµçŠÊC\000Þ¬–!èc\012Ä\026\ \013l{üè­ƒ\017’©L®\013\023´R\000Æ °£#¥¢_gǘ¡¢î¬Ê8‰0\003‡§L\034P\025\003ªnaÑ'\037\0217)Û\000Ö2—\ _qÆc{\035|QÕ‘’\025—MÔ9K“ÁÄ\005ÌY˜\006ëjMã_mï%•\021ÙfzJV[ÌV$^8Ï%{ƒµº¬×ã+©\016»\ ÕŒB\032\032ë¢ò\032\015å{Å=¬\010™¾„(£Pͳ\012ûÍÌÕÕ=\022*B.W†·o`pjg53›óå¡xµÌ†¥^Q‚\ –ÏO\\mi\0266]G0'ú\ ut…ì +êœv¼IôšÊ…¤ê´ÈB\012‡é1Ò(9~oèö\014”˜Ä[ArYåÛ¢3ß0*\012\024\022r¬Î„“S\011ˆ´f\ Ž\032Y2m\026!Ù¹ÕÍÊ^±‡«Òl²ü\"Æ a$\007œ9a~¼ò³&4\007*…«\034–hL6€\004êÓÚ{õ|ßsž\010áus5\ ­îg.M\021É\006íE§+—ÖÂ47Ö‚ \021¸§”=!³\"e2ŒA³6†ÊÈ\035ã+oÄ^ãf––¦á&ß(NÙ\024¯\014n©\ ßR™j\037\023E»ÜJJ`\032lp\035»è‰mn\\ðzn\026Ø U;àµ[\027‘Œ\032Ë°Š×Ç;\0356ÞJžë¿Ì—¦¶t\032\024Õt‰\ …En³\000Ý\\dðÒ__œûKà'_\035\034ˆ7\022’£r¡Óy\001ÿ@Ps‰Ó]%±\000·€k‰SíË,\015Ç0\004<ƒfƒ“¯\ Ò_¥—EyÜn¡ŽNÜãp\032\000.ÉõA™ÙŽÎ\007c×ÅYʃ¥ºVùŸõ¢š\017£l˜~\014L“p`¶\016\035=~´ÂFg9\ ÕÀ¶«ÓàqÐXÄî\0147¢ž‘>\013l¡\022l¶d¸\020\022d¹.¯ƒIwcÑI¶\"©4ƒñ~±\000Bxü÷dÄwo¯Êç´\ ã[úwË{\022\023ZÞ僃FÇÍ];®îÖu5y\017Š'^Bð-ÞØ0¨Ùfµ\035\036÷ù¼°•åc~sËc½sì·\002ó¼\ Ìòly!ã8÷g\035\025Å»ñ\005â6nÊÅ]i}OõáÏ ”‰\003mþ\021\036µ¤=6¤¹Ë†°·¦“Á\031ôé\00590`±ø\036ª8«ž¶—\017UH«yº4H×[XëígòÀ\ xòcö›%‚¸^Ã\017\031ÓprÖY@s€<9ÚyC™a\0002³K\031?@Üv1ÆjòÊîƒÇZÝhÔâê¯3’!µû\ 䛋pâéjU]o¯»•_¯ÛŒ!Q¡ñƒî®¢†F”ÐÛ•7\024á\033.`׋àa]hó–ñAðÍÙ\0008|®LÝ;\011\ ¹»›7\033R\031\006¢õxK߃ß.#\\5ŒJ[ìû¹ÝêišÒ®ç‘è \007מÑ\016\020ò1„\013ŸA`Ù¹¥/‹Z²p£fÅð\ xÌÖ~k\010–Ì\002«ß=IÇ!P¬,ö¤5\024\003÷nœkW\011.)\002äµ\"#›)—Ö\005¹†xÃÚ®l­\021%|¿¹ÏÒ/\033Y\ ·\005£ð¯/Î=¿â‡ñáBDZJCNIB*‹ÐV,û‘Ãûpìû”\033\000@\020Vòûü©÷u\016ØM|\016÷\032ñ¸ýÞ[Ù°!\ z\003\003ÎD,\006óÌÃÿYU‚$‡}‡Ç\030æ\"vÍn‹\020—Y\020C\000rèKÒÈ\014ØWì‚\007X \010!\026·áàµ+|ù˜Èû;\ nZIîBø6ÞÞ\000×Ý£èR¾:D¨-'•6\014i˜ŽŽ~”kÉWÃÉhtòÕ÷gÏŸž?ýžŸŸU¦?,KÙ&ïá\ ›t:U\031-Î3³Iÿgo\027çLìÅYTÑ>eÄ£\020÷ï‹æ•a¢Òy¹\020“Sq´_¿ús““¤o§­W¿?üáIç1±\ §áÁñ\023¡Å\011½f\006€\013ÿò/ûÍÇîNW±J4\035l\003@ðíïõ\017Cœí!ÝØ\013ÃýžÃ‘P÷¦¥èôT<@zÝ\ \015À\027/’‘º¿_Tì˜æ¸€SÇÝa™½Î.U~&\013µ·¿ß}ûç›\001F\013\005¡A\014d•y¥zhø¯æ%ï«ùhþ\031\ ~ø¡ÞïJ²£]|ûÍûópÒ.#„¶¾Êe\023ÿl­]M•«ïóˆï«©\015\032¶l«„HÓVÙ\012³‹Ãn^\021Ük\013\031<\ w|Cdׄjã+ÏÒ\004.E·RçJDó®Ø–ð——×:‰”م㽄9Fß+œ·y\017¢,Ö•än’ÇtÊ\ Ní¼ekZIy‹6Z\0273“‰‘½©æÖ«a-ƶc¹H鵊/\026‰¼•‡“\026þTdyyj¡\005ˆÇ;øÂ\005ÝÄà '\ ·Ñ¶}ÎÒŒê­`Á\021vF\025Ôfõ¸6ž!ÊW8\020ás]D\020a\011&&¨¢ÎÖÑçAS3\034„õÂÅc_\000î¥\\\022\ °gx\012ÖgCÁ8Àp_GW´¦“í»ºër\031.þ:\022A H\034Þã§]ä ‘ÓqùÔ/\0023ôwÙe½?Ûž(׈Z\ ËL|‡\006¿è#Ë\035—‘Ó3½khÎø \033ßf\004ÞQ…]¼Ôi\014¦\027\017ÉéÊŸ½vk<\023¦Ï\032ô){'Tqèâ©n*~\ é!ms:{ _ÐoÛ¨2H\013TF…:þ_/þ£?ÐDôb¶&v¥ 4\ ß]€Ùýû\037\004\032¡ Ž{éû?\027\005¬Hú¡7|ÿç\"@¥T\017\001ü\036Ž&·ž^ÁV.h\013Ìx8\036ßëyÅ8 €ÿ\015&F\ ‰,¢V‘Ü÷É+Þ5@Öü?;g2–´©¡ûÖ\013³\011 e%[õ>ê±HdúÓ;³\030æg5·|íBšAº\003¤\035\024­g1\ ã†Äî\034\007vÙt³.³e\006{+~\004Ì; æÖz\027·\014v«\016È™j•d\022tÜFÚÄ©†(6bnì:b:—URj¬á\021V\ \007¸Rf½…_\0132ÛJ\033MažçÊ/°5˜\014L#kå5²\032\022Eóì=\036\035\027[-ù³a1pÕ›!ÛšóÑW\036\016{[û\ R©æ{ìŸÅã\026Äyà\005ÙÓ\020Øó\026¯ý×ësÕX6.XŸûÄår\001n4t§«…¦‡•^Ø\016oq\027pÍ\ ÞÙ\033 Öz+èÐö4†£¶¬ºêéÞkE\031d•ð\036x³á˜ûyyÁÉl`¢ÞþÞ¥'>ì‚JiFB[Í{\007ÍmFîÐ\ \013³\037¾¨\000œ^ò\031 õ¡˜û;WŽß¹F?n\023ÌJÛ<éëÔe–ÇÿV©üºV+¼„•ÐkÿÀ]h\036ÑÔI\010Ñ\016™…\ £Gî5\027™ÜŒ!°ÀN\014|®µÁ+ɄܯÀç‚y`ZËk}¶Ì\010пU¡¢\0231\016tbÎ\003Åî×?ÕBäY±zi8Æ\ nVL™š‰s¯\015%³/\013\035YrˆG\027ˆNØô¢¦\012\001æ™?„¢ë?\015\027\010`\010ÉÄY¢£Ÿ ¦°µ\0377\011Ã¥¼ºÈ\025nÐ\ +†u1Í~\012ƒnSš%€_$rª\022”\017\025\026š¹E¸?ÖÝê?h&u\022sÐÕ%ßPc\037iò£KüÝɽ‰L;j›R:\ æ\017{Ž£NÓñÞÿ\034ˆ?í\006\023r5WW7p€îÿsɧ!Û´{›)ú[«?ƒvÞäz\021ɶ\033…Þ%Ç‚Æ5f\004é\001\ 8Ñp;\025Þ[––W¼©–\032¡ñȤQv@=fZ _ó®.¸£—ÜæQ/×õ¯É÷€Yò½KŽüÃqòõ\024_ÙÔù\ •q§Ì£›©k„bÛ²öþ^¨»9\017[¼ê\013ËfY¿±v;¬\016Ýà=L_CëG\004ðP=ö+Áá£qÃ6O'gv/\003\ vƒS\023ÅôVad5æó\000u\034´Å²k±û»\035\032\006õ•élø Ñºc¡“S߀”éÓ\014›M›7hÍv³G¥Ç;\015î×\ d\003™$¦êT|&\002/êåS'@wÀ†{\010Ý\017\003ì†CÃøµ¶\"ìÐRÓ\025½-è5­_Ç\034î„ìçظ6Ç~%Ûvw»\ v4îض\005lMv÷Œ–$p™RzslxÔŠ\015·\007ƒ¡³f~Ї$vÇ–Q×ÚÕ\014¸ÛA&úö÷õ.m!¾înQÆ\ \025\\0Ãl\012{Î\032ý“p-Ê*lû?\001Å&¨|\014\004·\036R\ ˜M[…ðÈ\031Bß0 M\003\036¦\027LÆÃßÿá[Fìù\016\022PLç\033\034ôÚséæy£\035Æ\024VèÎËN\035½ÎZ\002ÈZ‚‰=\ Sà\015ΟùÜSpq\016é^§he!üÎlèüB ØTò…@êÉÛôAê©BQÇâíu}sl4%rtRÒ”=Þ-õ)zÉÉ\ qÈr¼Ë;\013÷ÊÃ\007w\037\006E-œ°¤í¢÷»×«Þ™£ÞxóªŸà÷+¿­T¼3\006¶nÙòÕ+6š¿'Wù/Å>i«\ mÔ6\017]£ê\020ß\\³´_«Òó\013Ö¯~°ØŠáuÏ_¤Õ’\001?be´Š¹št)\001Sç\035eÎÕ4,Ha/¡ä_<á3Ö\ ¸›Ž\014Ä'{\030AVg#’ƒÞPãöþ\003zâeï²ØÍ>\035\"\002WÂQ¿;‹±7\010ÓÐ<ýúÕ`~\023ExVCd·:¶\ ·’ßa -àøl³^8­-\025\035ÎS…ºhûLp\003y¸}ÙœVx\003\021m‘ï.\017t-Gû}êÒn¿xxÛK\\÷l½ut;\ Ÿ¶X\022£ãïT‰%AÜRì\032Gù÷ŸVí“+ä„*Â=\033~©O°_#Ù¶B([a\034j·¥be?ðkµ^4íÿ0ж“.ø(O:™ˆö*\ sÉß\036}Ñ8hKÐ\036\027Èè€ã¦“Ó>çŸÂam$\030?{t\030uÞ6ÎÁè†@¦a¦x+ËEJ­)#\010P—:\0359µðb¢\ [\030zVÿŽ\027=rþôÙë\027Þ3ý»•zv'¿óß‚h\033Ôü°\021-?7Z\0216\007~/ȶ²‹Í\007¹ÓÖþ2Z÷\\ûó\ çÍ‘nßÐÉÛÚŽ\036›\014\014ï7vy‚P./tª/–rÕÚ6Ö\036Ì´\012%+\020‚¨^CÛÞ„¸\025@Ï\017h¸ß\0048êpi5Ù\ {g\016cýd\016x߯µ»…+||×;WgÓ»ÌÔ¶Í ¿Î´ÙE€C,}í8¨íeã)ì³ÌþäÛ¼Ú›ö\013újªÿkî\ ¾ØE\020ºdÃË6þN&æxŽ$4+5†\015½\013è^ƒÌÿ2\006\022vÔ–0oz\015.$l­É6|ä3\022ÚÚÚ¡ÌBrž\ ððѸ\005Ç°¥¶€xöbZš\016¡½5\015³ï,çí$\031\023÷\017$ë\037…¿×p\000yòÒóì,KÀî·\"¶ZQƒ#Ì{o°µ\ Much϶ª\033Ýæ_ÉÜfYüg¾Î–X¢³\007Sðg&TNgòoiÀ\"ÔvÓ³›Ôäp<\036ÿzš2\"ŸÛ¢ø÷¤(\ €t@¼’\027‹á…ÝèÜÜöÌ\014]`\026n8Ý2Z/Ò\\ÍuA‡—7ÿxëœnðþån\027ƒááêXŽÄ\013u\020f®Æj&¹\"\ ØŽÄn!м;iïܾ\035úIMú9.>â|\003C—}\004m%Ç\"o×s™Ë5(\003»â{1¥]\014·ÐÒ»!Ýý¨B\035\ ûš\003‘Ü׫W\031þ€N½pUȵê6ï›Ê„uLãñ½¾®ü\ æbVïo\027·B\015•\027”­|Ç\037\004ö»Yóßúí\025nU\013\031ß—˜46\022ÈW­c\011ýõ'éoÆö6£Ã$\027¥\\®‚ÉkÈ+\ \037ŒÅs\025‰Ã‡Çã‡Ç\017Ž°·óÈà2ìîi\016Í¡Å———CWø\033fù|\024R¿³ûÞîëpÆî—åS!ÀF\007}[¨ñ\ „ÇÀâØ×Lû9¿®Õú1Ò4K±×\015ªñ\015~‡€fLÐ\"Ç\027WJ¼Ð\011\005·-UP©Ò¼e¶UÙU¹ì²»jlV6\ |\007p\037fò‰Ñ&\\è08›\002…ÿK+Îà€êdñ5ÿ\0367¨¥QŽÿ\013r¯a}") ### end From anadelonbrin at users.sourceforge.net Mon Jan 10 23:17:41 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 10 23:17:43 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000 addin.py,1.150,1.151 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8218/Outlook2000 Modified Files: addin.py Log Message: The call to train does the database update - don't do it ourselves, or the call to train will do nothing, thinking that the work is already done. Index: addin.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/addin.py,v retrieving revision 1.150 retrieving revision 1.151 diff -C2 -d -r1.150 -r1.151 *** addin.py 29 Dec 2004 06:22:24 -0000 1.150 --- addin.py 10 Jan 2005 22:17:38 -0000 1.151 *************** *** 703,709 **** self.manager.stats.RecordTraining(False, self.manager.score(msgstore_message)) - msgstore_message.t = True - self.manager.classifier_data.message_db.store_msg(msgstore_message) - self.manager.classifier_data.dirty = True # Record the original folder, in case this message is not where # it was after filtering, or has never been filtered. --- 703,706 ---- *************** *** 775,781 **** self.manager.stats.RecordTraining(True, self.manager.score(msgstore_message)) - msgstore_message.t = False - self.manager.classifier_data.message_db.store_msg(msgstore_message) - self.manager.classifier_data.dirty = True # Must train before moving, else we lose the message! print "Recovering to folder '%s' and ham training message '%s' - " % (restore_folder.name, subject), --- 772,775 ---- From anadelonbrin at users.sourceforge.net Mon Jan 10 23:59:55 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 10 23:59:59 2005 Subject: [Spambayes-checkins] spambayes WHAT_IS_NEW.txt,1.35.4.3,1.35.4.4 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17727 Modified Files: Tag: release_1_0-branch WHAT_IS_NEW.txt Log Message: First cut at a 1.0.2 text. Index: WHAT_IS_NEW.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v retrieving revision 1.35.4.3 retrieving revision 1.35.4.4 diff -C2 -d -r1.35.4.3 -r1.35.4.4 *** WHAT_IS_NEW.txt 23 Nov 2004 04:28:16 -0000 1.35.4.3 --- WHAT_IS_NEW.txt 10 Jan 2005 22:59:52 -0000 1.35.4.4 *************** *** 8,56 **** are no incompatible changes. ! New in 1.0.1 ! ============ ! ! o A bug with the import/export script (sb_dbexpimp.py) where merging into ! an existing database in the dbm format might lose training data has been ! fixed. Another minor bug with the script that caused an error to be ! printed when importing into a pickle file (although the import was still ! successful) has also been fixed. ! ! o The binary installer failed to offer to install a startup items shortcut, ! which is convenient for sb_server binary users. The installer will now ! do this. ! ! o sb_server users who wish to use non-standard strings for classification ! (e.g. "spambayes-ham" instead of "ham") can now use the "Notate To" and ! "Notate Subject" options. This is particularly useful for Outlook ! Express users. ! o Users of Windows extensions that automatically expand zip files (such ! as ZipMagic) should now be able to successfully use the binary versions ! of sb_server and the Outlook plug-in. ! o Checking whether a new version is available should now work for users ! who have entered proxy details in their configuration file. ! o Source code users can now use Python 2.4 with SpamBayes, although some ! DeprecationWarnings may still be generated. ! o The '-u' command line option for sb_server (letting you specify which ! port the web interface is served on) was broken, but is now fixed. ! o The tte.py (Train to Exhaustion) script now works with Python 2.3. ! o Various other minor fixes. Reported Bugs Fixed =================== ! The following bugs tracked via the SourceForge system were fixed: ! 981970, 990700, 941639, 986353, 790757, 944109, 959937, 903905, ! 1051081, 1036601, 922063, 831864, 1022848, 715248 ! A URL containing the details of these bugs can be made by appending the ! bug number to this URL: ! http://sourceforge.net/tracker/index.php?func=detail&group_id=61702&atid=498103&aid= As this is a bugfix release, no feature requests or patches tracked via the --- 8,48 ---- are no incompatible changes. ! Barring any unexpected problems with this release or the forthcoming 1.1 ! release, it is likely that this will be the last release in the 1.0.x series. ! 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. 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 *************** *** 94,97 **** --- 86,93 ---- "x-search_for_habeas_headers:True". + More information about the experimental options and how to enable them + can be found at: + http://spambayes.org/experimental.html + If you have any queries about the experimental options, please email spambayes@python.org and we will try and answer them. From kpitt at users.sourceforge.net Tue Jan 11 17:20:58 2005 From: kpitt at users.sourceforge.net (Kenny Pitt) Date: Tue Jan 11 17:21:03 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/dialogs/resources dialogs.h, 1.25, 1.26 dialogs.rc, 1.50, 1.51 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1288/Outlook2000/dialogs/resources Modified Files: dialogs.h dialogs.rc Log Message: General dialog template cleanup: Remove several unused dialog boxes. Remove a couple of duplicate symbols in the include file. Consistent usage of the DS_MODALFRAME style only for top-level dialogs. Make all resources use the same sub-language. Due to editing by developers from different countries, we had developed a mixture of English (United States) and English (Australia) resources. With apologies to Tony and Mark, I'm in the US so I standardized on English (United States). Index: dialogs.h =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources/dialogs.h,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** dialogs.h 23 Dec 2004 17:13:37 -0000 1.25 --- dialogs.h 11 Jan 2005 16:20:55 -0000 1.26 *************** *** 12,16 **** #define IDD_GENERAL 108 #define IDD_FILTER_SPAM 110 - #define IDD_FILTER_UNSURE 111 #define IDD_DIAGNOSTIC 113 #define IDD_WIZARD 114 --- 12,15 ---- *************** *** 60,66 **** #define IDC_BROWSE_UNSURE 1034 #define IDC_TRAINING_STATUS 1035 - #define IDC_FOLDER_HAM 1098 #define IDC_FOLDER_NAMES 1036 - #define IDC_BROWSE_HAM 1099 #define IDC_BROWSE 1037 #define IDC_FOLDER_WATCH 1038 --- 59,63 ---- *************** *** 112,116 **** #define _APS_NEXT_RESOURCE_VALUE 128 #define _APS_NEXT_COMMAND_VALUE 40001 ! #define _APS_NEXT_CONTROL_VALUE 1100 #define _APS_NEXT_SYMED_VALUE 101 #endif --- 109,113 ---- #define _APS_NEXT_RESOURCE_VALUE 128 #define _APS_NEXT_COMMAND_VALUE 40001 ! #define _APS_NEXT_CONTROL_VALUE 1098 #define _APS_NEXT_SYMED_VALUE 101 #endif Index: dialogs.rc =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/resources/dialogs.rc,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** dialogs.rc 23 Dec 2004 05:18:21 -0000 1.50 --- dialogs.rc 11 Jan 2005 16:20:55 -0000 1.51 *************** *** 1,3 **** ! //Microsoft Developer Studio generated resource script. // #include "dialogs.h" --- 1,3 ---- ! // Microsoft Visual C++ generated resource script. // #include "dialogs.h" *************** *** 29,36 **** IDD_ADVANCED DIALOGEX 0, 0, 248, 257 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "Advanced" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN GROUPBOX "Filter timer",IDC_STATIC,7,3,234,117 --- 29,36 ---- IDD_ADVANCED DIALOGEX 0, 0, 248, 257 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP CAPTION "Advanced" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN GROUPBOX "Filter timer",IDC_STATIC,7,3,234,117 *************** *** 54,59 **** END ! IDD_STATISTICS DIALOG DISCARDABLE 0, 0, 248, 257 ! STYLE WS_CHILD | WS_CAPTION CAPTION "Statistics" FONT 8, "Tahoma" --- 54,59 ---- END ! IDD_STATISTICS DIALOG 0, 0, 248, 257 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION CAPTION "Statistics" FONT 8, "Tahoma" *************** *** 68,75 **** IDD_MANAGER DIALOGEX 0, 0, 275, 308 ! STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Manager" ! FONT 8, "Tahoma" BEGIN DEFPUSHBUTTON "Close",IDOK,216,287,50,14 --- 68,75 ---- IDD_MANAGER DIALOGEX 0, 0, 275, 308 ! STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Manager" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN DEFPUSHBUTTON "Close",IDOK,216,287,50,14 *************** *** 79,155 **** END ! IDD_FILTER_SPAM DIALOGEX 0, 0, 251, 147 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU ! CAPTION "Spam" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN LTEXT "Filter the following folders as messages arrive", ! IDC_STATIC,8,9,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,7,20,177,12 ! PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,194,19,50,14 ! GROUPBOX "Certain Spam",IDC_STATIC,7,43,237,80 LTEXT "To be considered certain spam, a message must score at least", ! IDC_STATIC,13,52,212,10 ! CONTROL "",IDC_SLIDER_CERTAIN,"msctls_trackbar32",TBS_AUTOTICKS | ! TBS_TOP | WS_TABSTOP,13,62,165,22 ! EDITTEXT IDC_EDIT_CERTAIN,184,63,51,14,ES_AUTOHSCROLL ! LTEXT "and these messages should be:",IDC_STATIC,13,82,107,10 ! COMBOBOX IDC_ACTION_CERTAIN,13,93,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! LTEXT "to folder",IDC_STATIC,75,95,31,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,120,93,59,14 ! PUSHBUTTON "Browse",IDC_BROWSE_CERTAIN,184,93,50,14 CONTROL "Mark spam as read",IDC_MARK_SPAM_AS_READ,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,13,110,81,10 END ! IDD_FILTER_UNSURE DIALOGEX 0, 0, 249, 124 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU ! CAPTION "Possible Spam" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN ! LTEXT "To be considered uncertain, a message must score at least", ! IDC_STATIC,12,11,212,10 ! CONTROL "",IDC_SLIDER_UNSURE,"msctls_trackbar32",TBS_AUTOTICKS | ! TBS_TOP | WS_TABSTOP,12,18,165,20 ! EDITTEXT IDC_EDIT_UNSURE,183,24,54,14,ES_AUTOHSCROLL ! LTEXT "and these messages should be:",IDC_STATIC,12,38,107,10 ! COMBOBOX IDC_ACTION_UNSURE,12,49,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "to folder",IDC_STATIC,74,52,31,10 - CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", - SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | - WS_GROUP,119,49,59,14 - PUSHBUTTON "&Browse",IDC_BROWSE_UNSURE,183,49,50,14 - CONTROL "Mark possible spam as read",IDC_MARK_UNSURE_AS_READ, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,70,101,10 END ! IDD_DIAGNOSTIC DIALOGEX 0, 0, 183, 98 ! STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Diagnostics" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN ! LTEXT "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.", ! IDC_STATIC,5,3,174,36 ! LTEXT "Log file verbosity",IDC_STATIC,5,44,56,8 ! EDITTEXT IDC_VERBOSE_LOG,73,42,40,14,ES_AUTOHSCROLL ! PUSHBUTTON "View log...",IDC_BUT_VIEW_LOG,129,41,50,14 ! CONTROL "Save Spam Score",IDC_SAVE_SPAM_SCORE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,5,63,72,10 ! PUSHBUTTON "Cancel",IDCANCEL,69,79,50,14,NOT WS_VISIBLE ! DEFPUSHBUTTON "Close",IDOK,129,79,50,14 END IDD_WIZARD DIALOGEX 0, 0, 384, 190 ! STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Configuration Wizard" ! FONT 8, "Tahoma", 400, 0, 0x1 BEGIN PUSHBUTTON "Cancel",IDCANCEL,328,173,50,14 --- 79,273 ---- END ! IDD_DIAGNOSTIC DIALOGEX 0, 0, 183, 98 ! STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Diagnostics" ! FONT 8, "Tahoma", 0, 0, 0x1 ! BEGIN ! LTEXT "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.", ! IDC_STATIC,5,3,174,36 ! LTEXT "Log file verbosity",IDC_STATIC,5,44,56,8 ! EDITTEXT IDC_VERBOSE_LOG,73,42,40,14,ES_AUTOHSCROLL ! PUSHBUTTON "View log...",IDC_BUT_VIEW_LOG,129,41,50,14 ! CONTROL "Save Spam Score",IDC_SAVE_SPAM_SCORE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,5,63,72,10 ! PUSHBUTTON "Cancel",IDCANCEL,69,79,50,14,NOT WS_VISIBLE ! DEFPUSHBUTTON "Close",IDOK,129,79,50,14 ! END ! ! IDD_FILTER DIALOGEX 0, 0, 249, 257 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Filtering" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN LTEXT "Filter the following folders as messages arrive", ! IDC_STATIC,8,4,168,11 CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,7,16,177,12 ! PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,192,14,50,14 ! GROUPBOX "Certain Spam",IDC_STATIC,7,33,235,80 LTEXT "To be considered certain spam, a message must score at least", ! IDC_STATIC,13,42,212,10 ! CONTROL "Slider1",IDC_SLIDER_CERTAIN,"msctls_trackbar32", ! TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,52,165,22 ! EDITTEXT IDC_EDIT_CERTAIN,184,53,51,14,ES_AUTOHSCROLL ! LTEXT "and these messages should be:",IDC_STATIC,13,72,107,10 ! COMBOBOX IDC_ACTION_CERTAIN,12,83,55,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ! LTEXT "to folder",IDC_STATIC,71,85,28,10 CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,83,77,14 ! PUSHBUTTON "Browse",IDC_BROWSE_CERTAIN,184,83,50,14 ! GROUPBOX "Possible Spam",IDC_STATIC,6,117,235,81 ! LTEXT "To be considered uncertain, a message must score at least", ! IDC_STATIC,12,128,212,10 ! CONTROL "Slider1",IDC_SLIDER_UNSURE,"msctls_trackbar32", ! TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,135,165,20 ! EDITTEXT IDC_EDIT_UNSURE,183,141,54,14,ES_AUTOHSCROLL ! LTEXT "and these messages should be:",IDC_STATIC,12,155,107,10 ! COMBOBOX IDC_ACTION_UNSURE,12,166,55,40,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! LTEXT "to folder",IDC_STATIC,71,169,27,10 ! CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,166,77,14 ! PUSHBUTTON "&Browse",IDC_BROWSE_UNSURE,184,166,50,14 CONTROL "Mark spam as read",IDC_MARK_SPAM_AS_READ,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,13,100,81,10 ! CONTROL "Mark possible spam as read",IDC_MARK_UNSURE_AS_READ, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,186,101,10 ! GROUPBOX "Certain Good",IDC_STATIC,6,203,235,48 ! LTEXT "These messages should be:",IDC_STATIC,12,215,107,10 ! COMBOBOX IDC_ACTION_HAM,12,228,55,40,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! LTEXT "to folder",IDC_STATIC,71,230,27,10 ! CONTROL "(folder name)",IDC_FOLDER_HAM,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,228,77,14 ! PUSHBUTTON "&Browse",IDC_BROWSE_HAM,184,228,50,14 END ! IDD_GENERAL DIALOGEX 0, 0, 253, 257 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "General" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN ! LTEXT "SpamBayes Version Here",IDC_VERSION,6,54,242,8 ! LTEXT "SpamBayes requires training before it is effective. Click on the 'Training' tab, or use the Configuration Wizard to train.", ! IDC_STATIC,6,67,242,17 ! LTEXT "Training database status:",IDC_STATIC,6,90,222,8 ! LTEXT "123 spam messages; 456 good messages\r\nLine2\r\nLine3", ! IDC_TRAINING_STATUS,6,101,242,27,SS_SUNKEN ! CONTROL "Enable SpamBayes",IDC_BUT_FILTER_ENABLE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,6,221,97,11 ! LTEXT "Certain spam is moved to Folder1\nPossible spam is moved too", ! IDC_FILTER_STATUS,6,146,242,67,SS_SUNKEN ! PUSHBUTTON "Reset Configuration...",IDC_BUT_RESET,6,238,84,15 ! PUSHBUTTON "Configuration Wizard...",IDC_BUT_WIZARD,164,238,84,15 ! LTEXT "Filter status:",IDC_STATIC,6,135,222,8 ! CONTROL 1062,IDC_LOGO_GRAPHIC,"Static",SS_BITMAP | ! SS_REALSIZEIMAGE,0,2,275,52 ! END ! ! IDD_TRAINING DIALOGEX 0, 0, 252, 257 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Training" ! FONT 8, "Tahoma", 0, 0, 0x1 ! BEGIN ! GROUPBOX "",IDC_STATIC,5,1,243,113 ! LTEXT "Folders with known good messages.",IDC_STATIC,11,11,131, ! 11 ! CONTROL "",IDC_STATIC_HAM,"Static",SS_LEFTNOWORDWRAP | ! SS_CENTERIMAGE | SS_SUNKEN,11,21,175,12 ! PUSHBUTTON "&Browse...",IDC_BROWSE_HAM,192,20,50,14 ! LTEXT "Folders with spam or other junk messages.",IDC_STATIC, ! 11,36,171,9 ! CONTROL "Static",IDC_STATIC_SPAM,"Static",SS_LEFTNOWORDWRAP | ! SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,11,46,174,12 ! PUSHBUTTON "Brow&se...",IDC_BROWSE_SPAM,192,46,50,14 ! CONTROL "Score &messages after training",IDC_BUT_RESCORE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,11,64,111,10 ! CONTROL "&Rebuild entire database",IDC_BUT_REBUILD,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,137,64,92,10 ! CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER, ! 11,76,231,11 ! PUSHBUTTON "&Start Training",IDC_START,11,91,54,14,BS_NOTIFY ! LTEXT "training status training status training status training status training status training status training status ", ! IDC_PROGRESS_TEXT,75,89,149,17 ! GROUPBOX "Incremental Training",IDC_STATIC,4,117,244,87 ! CONTROL "Train that a message is good when it is moved from a spam folder back to the Inbox.", ! IDC_BUT_TRAIN_FROM_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | ! BS_MULTILINE | WS_TABSTOP,11,127,204,18 ! LTEXT "Clicking 'Not Spam' button should",IDC_STATIC,10,148, ! 115,10 ! COMBOBOX IDC_RECOVER_RS,127,145,114,54,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! CONTROL "Train that a message is spam when it is moved to the spam folder.", ! IDC_BUT_TRAIN_TO_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | ! BS_MULTILINE | WS_TABSTOP,11,163,204,16 ! LTEXT "Clicking 'Spam' button should",IDC_STATIC,10,183,104,10 ! COMBOBOX IDC_DEL_SPAM_RS,127,180,114,54,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END ! IDD_FILTER_NOW DIALOGEX 0, 0, 244, 185 ! STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Filter Now" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN ! LTEXT "Filter the following folders",IDC_STATIC,8,9,168,11 ! CONTROL "Folder names...\nLine 2",IDC_FOLDER_NAMES,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,7,20,172, ! 12 ! PUSHBUTTON "Browse...",IDC_BROWSE,187,19,50,14 ! GROUPBOX "Filter action",IDC_STATIC,7,38,230,40,WS_GROUP ! CONTROL "Perform all filter actions",IDC_BUT_ACT_ALL,"Button", ! BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,49,126,10 ! CONTROL "Score messages, but don't perform filter action", ! IDC_BUT_ACT_SCORE,"Button",BS_AUTORADIOBUTTON,15,62,203, ! 10 ! GROUPBOX "Restrict the filter to",IDC_STATIC,7,84,230,35,WS_GROUP ! CONTROL "Unread mail",IDC_BUT_UNREAD,"Button",BS_AUTOCHECKBOX | ! WS_TABSTOP,15,94,149,9 ! CONTROL "Mail never previously spam filtered",IDC_BUT_UNSEEN, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,106,149,9 ! CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7, ! 129,230,11 ! LTEXT "Static",IDC_PROGRESS_TEXT,7,144,227,10 ! DEFPUSHBUTTON "Start Filtering",IDC_START,7,161,52,14 ! PUSHBUTTON "Close",IDCANCEL,187,162,50,14 ! END ! ! IDD_FOLDER_SELECTOR DIALOGEX 0, 0, 247, 215 ! STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU ! CAPTION "Select Folder" ! FONT 8, "Tahoma", 0, 0, 0x1 ! BEGIN ! LTEXT "&Folders:",IDC_STATIC,7,7,47,9 ! CONTROL "",IDC_LIST_FOLDERS,"SysTreeView32",TVS_HASBUTTONS | ! TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | ! TVS_SHOWSELALWAYS | TVS_CHECKBOXES | WS_BORDER | ! WS_TABSTOP,7,21,172,140 ! CONTROL "(sub)",IDC_BUT_SEARCHSUB,"Button",BS_AUTOCHECKBOX | ! WS_TABSTOP,7,167,126,9 ! LTEXT "(status1)",IDC_STATUS1,7,180,220,9 ! LTEXT "(status2)",IDC_STATUS2,7,194,220,9 ! DEFPUSHBUTTON "OK",IDOK,190,21,50,14 ! PUSHBUTTON "Cancel",IDCANCEL,190,39,50,14 ! PUSHBUTTON "C&lear All",IDC_BUT_CLEARALL,190,58,50,14 ! PUSHBUTTON "&New folder",IDC_BUT_NEW,190,77,50,14 END IDD_WIZARD DIALOGEX 0, 0, 384, 190 ! STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_CONTEXTHELP CAPTION "SpamBayes Configuration Wizard" ! FONT 8, "Tahoma", 0, 0, 0x1 BEGIN PUSHBUTTON "Cancel",IDCANCEL,328,173,50,14 *************** *** 162,166 **** IDD_WIZARD_WELCOME DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 280,284 ---- IDD_WIZARD_WELCOME DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 187,191 **** IDD_WIZARD_FINISHED_UNTRAINED DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 305,309 ---- IDD_WIZARD_FINISHED_UNTRAINED DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 205,209 **** IDD_WIZARD_FOLDERS_REST DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 323,327 ---- IDD_WIZARD_FOLDERS_REST DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 225,229 **** IDD_WIZARD_FOLDERS_WATCH DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 343,347 ---- IDD_WIZARD_FOLDERS_WATCH DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 243,247 **** IDD_WIZARD_FINISHED_UNCONFIGURED DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 361,365 ---- IDD_WIZARD_FINISHED_UNCONFIGURED DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 255,259 **** IDD_WIZARD_FOLDERS_TRAIN DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 373,377 ---- IDD_WIZARD_FOLDERS_TRAIN DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 279,283 **** IDD_WIZARD_TRAIN DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 397,401 ---- IDD_WIZARD_TRAIN DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 292,296 **** IDD_WIZARD_FINISHED_TRAINED DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 410,414 ---- IDD_WIZARD_FINISHED_TRAINED DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 306,310 **** IDD_WIZARD_TRAINING_IS_IMPORTANT DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 424,428 ---- IDD_WIZARD_TRAINING_IS_IMPORTANT DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 329,333 **** IDD_WIZARD_FINISHED_TRAIN_LATER DIALOGEX 0, 0, 284, 162 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 --- 447,451 ---- IDD_WIZARD_FINISHED_TRAIN_LATER DIALOGEX 0, 0, 284, 162 ! STYLE DS_SETFONT | WS_CHILD | WS_CAPTION EXSTYLE WS_EX_CONTEXTHELP FONT 8, "Tahoma", 0, 0, 0x1 *************** *** 355,359 **** #ifdef APSTUDIO_INVOKED ! GUIDELINES DESIGNINFO MOVEABLE PURE BEGIN IDD_ADVANCED, DIALOG --- 473,477 ---- #ifdef APSTUDIO_INVOKED ! GUIDELINES DESIGNINFO BEGIN IDD_ADVANCED, DIALOG *************** *** 370,394 **** END ! IDD_FILTER_SPAM, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 244 ! TOPMARGIN, 7 ! BOTTOMMARGIN, 140 END ! IDD_FILTER_UNSURE, DIALOG BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 242 ! TOPMARGIN, 7 ! BOTTOMMARGIN, 117 END ! IDD_DIAGNOSTIC, DIALOG BEGIN ! LEFTMARGIN, 5 ! RIGHTMARGIN, 179 ! BOTTOMMARGIN, 93 END --- 488,525 ---- END ! IDD_DIAGNOSTIC, DIALOG BEGIN ! LEFTMARGIN, 5 ! RIGHTMARGIN, 179 ! BOTTOMMARGIN, 93 END ! IDD_FILTER, DIALOG BEGIN ! BOTTOMMARGIN, 254 ! HORZGUIDE, 127 END ! IDD_GENERAL, DIALOG BEGIN ! RIGHTMARGIN, 248 ! VERTGUIDE, 6 ! BOTTOMMARGIN, 205 ! END ! ! IDD_TRAINING, DIALOG ! BEGIN ! RIGHTMARGIN, 241 ! VERTGUIDE, 11 ! VERTGUIDE, 242 ! BOTTOMMARGIN, 207 ! END ! ! IDD_FILTER_NOW, DIALOG ! BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 237 ! TOPMARGIN, 9 ! BOTTOMMARGIN, 176 END *************** *** 475,714 **** // ! IDB_SBLOGO BITMAP MOVEABLE PURE "sblogo.bmp" ! IDB_SBWIZLOGO BITMAP MOVEABLE PURE "sbwizlogo.bmp" ! #endif // English (U.S.) resources ! ///////////////////////////////////////////////////////////////////////////// ! ! ! ///////////////////////////////////////////////////////////////////////////// ! // English (Australia) resources ! ! #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA) ! #ifdef _WIN32 ! LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS ! #pragma code_page(1252) ! #endif //_WIN32 ! ! ///////////////////////////////////////////////////////////////////////////// ! // ! // Dialog ! // ! ! IDD_GENERAL DIALOGEX 0, 0, 253, 257 ! STYLE DS_MODALFRAME | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "General" ! FONT 8, "Tahoma", 0, 0, 0x1 ! BEGIN ! LTEXT "SpamBayes Version Here",IDC_VERSION,6,54,242,8 ! LTEXT "SpamBayes requires training before it is effective. Click on the 'Training' tab, or use the Configuration Wizard to train.", ! IDC_STATIC,6,67,242,17 ! LTEXT "Training database status:",IDC_STATIC,6,90,222,8 ! LTEXT "123 spam messages; 456 good messages\r\nLine2\r\nLine3", ! IDC_TRAINING_STATUS,6,101,242,27,SS_SUNKEN ! CONTROL "Enable SpamBayes",IDC_BUT_FILTER_ENABLE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,6,221,97,11 ! LTEXT "Certain spam is moved to Folder1\nPossible spam is moved too", ! IDC_FILTER_STATUS,6,146,242,67,SS_SUNKEN ! PUSHBUTTON "Reset Configuration...",IDC_BUT_RESET,6,238,84,15 ! PUSHBUTTON "Configuration Wizard...",IDC_BUT_WIZARD,164,238,84,15 ! LTEXT "Filter status:",IDC_STATIC,6,135,222,8 ! CONTROL 1062,IDC_LOGO_GRAPHIC,"Static",SS_BITMAP | ! SS_REALSIZEIMAGE,0,2,275,52 ! END ! ! IDD_TRAINING DIALOGEX 0, 0, 252, 257 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Training" ! FONT 8, "Tahoma", 0, 0, 0x1 ! BEGIN ! GROUPBOX "",IDC_STATIC,5,1,243,113 ! LTEXT "Folders with known good messages.",IDC_STATIC,11,11,131, ! 11 ! CONTROL "",IDC_STATIC_HAM,"Static",SS_LEFTNOWORDWRAP | ! SS_CENTERIMAGE | SS_SUNKEN,11,21,175,12 ! PUSHBUTTON "&Browse...",IDC_BROWSE_HAM,192,20,50,14 ! LTEXT "Folders with spam or other junk messages.",IDC_STATIC, ! 11,36,171,9 ! CONTROL "Static",IDC_STATIC_SPAM,"Static",SS_LEFTNOWORDWRAP | ! SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,11,46,174,12 ! PUSHBUTTON "Brow&se...",IDC_BROWSE_SPAM,192,46,50,14 ! CONTROL "Score &messages after training",IDC_BUT_RESCORE,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,11,64,111,10 ! CONTROL "&Rebuild entire database",IDC_BUT_REBUILD,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,137,64,92,10 ! CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER, ! 11,76,231,11 ! PUSHBUTTON "&Start Training",IDC_START,11,91,54,14,BS_NOTIFY ! LTEXT "training status training status training status training status training status training status training status ", ! IDC_PROGRESS_TEXT,75,89,149,17 ! GROUPBOX "Incremental Training",IDC_STATIC,4,117,244,87 ! CONTROL "Train that a message is good when it is moved from a spam folder back to the Inbox.", ! IDC_BUT_TRAIN_FROM_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | ! BS_MULTILINE | WS_TABSTOP,11,127,204,18 ! LTEXT "Clicking 'Not Spam' button should",IDC_STATIC,10,148, ! 115,10 ! COMBOBOX IDC_RECOVER_RS,127,145,114,54,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! CONTROL "Train that a message is spam when it is moved to the spam folder.", ! IDC_BUT_TRAIN_TO_SPAM_FOLDER,"Button",BS_AUTOCHECKBOX | ! BS_MULTILINE | WS_TABSTOP,11,163,204,16 ! LTEXT "Clicking 'Spam' button should",IDC_STATIC,10,183,104,10 ! COMBOBOX IDC_DEL_SPAM_RS,127,180,114,54,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! END ! ! IDD_FILTER_NOW DIALOGEX 0, 0, 244, 185 ! STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Filter Now" ! FONT 8, "Tahoma", 0, 0, 0x1 ! BEGIN ! LTEXT "Filter the following folders",IDC_STATIC,8,9,168,11 ! CONTROL "Folder names...\nLine 2",IDC_FOLDER_NAMES,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN,7,20,172, ! 12 ! PUSHBUTTON "Browse...",IDC_BROWSE,187,19,50,14 ! GROUPBOX "Filter action",IDC_STATIC,7,38,230,40,WS_GROUP ! CONTROL "Perform all filter actions",IDC_BUT_ACT_ALL,"Button", ! BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,49,126,10 ! CONTROL "Score messages, but don't perform filter action", ! IDC_BUT_ACT_SCORE,"Button",BS_AUTORADIOBUTTON,15,62,203, ! 10 ! GROUPBOX "Restrict the filter to",IDC_STATIC,7,84,230,35,WS_GROUP ! CONTROL "Unread mail",IDC_BUT_UNREAD,"Button",BS_AUTOCHECKBOX | ! WS_TABSTOP,15,94,149,9 ! CONTROL "Mail never previously spam filtered",IDC_BUT_UNSEEN, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,106,149,9 ! CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7, ! 129,230,11 ! LTEXT "Static",IDC_PROGRESS_TEXT,7,144,227,10 ! DEFPUSHBUTTON "Start Filtering",IDC_START,7,161,52,14 ! PUSHBUTTON "Close",IDCANCEL,187,162,50,14 ! END ! ! IDD_FILTER DIALOGEX 0, 0, 249, 257 ! STYLE DS_MODALFRAME | WS_CHILD | WS_CAPTION | WS_SYSMENU ! EXSTYLE WS_EX_CONTEXTHELP ! CAPTION "Filtering" ! FONT 8, "Tahoma" ! BEGIN ! LTEXT "Filter the following folders as messages arrive", ! IDC_STATIC,8,4,168,11 ! CONTROL "Folder names...\nLine 2",IDC_FOLDER_WATCH,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,7,16,177,12 ! PUSHBUTTON "Browse...",IDC_BROWSE_WATCH,192,14,50,14 ! GROUPBOX "Certain Spam",IDC_STATIC,7,33,235,80 ! LTEXT "To be considered certain spam, a message must score at least", ! IDC_STATIC,13,42,212,10 ! CONTROL "Slider1",IDC_SLIDER_CERTAIN,"msctls_trackbar32", ! TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,13,52,165,22 ! EDITTEXT IDC_EDIT_CERTAIN,184,53,51,14,ES_AUTOHSCROLL ! LTEXT "and these messages should be:",IDC_STATIC,13,72,107,10 ! COMBOBOX IDC_ACTION_CERTAIN,12,83,55,40,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! LTEXT "to folder",IDC_STATIC,71,85,28,10 ! CONTROL "Folder names...",IDC_FOLDER_CERTAIN,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,83,77,14 ! PUSHBUTTON "Browse",IDC_BROWSE_CERTAIN,184,83,50,14 ! GROUPBOX "Possible Spam",IDC_STATIC,6,117,235,81 ! LTEXT "To be considered uncertain, a message must score at least", ! IDC_STATIC,12,128,212,10 ! CONTROL "Slider1",IDC_SLIDER_UNSURE,"msctls_trackbar32", ! TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,12,135,165,20 ! EDITTEXT IDC_EDIT_UNSURE,183,141,54,14,ES_AUTOHSCROLL ! LTEXT "and these messages should be:",IDC_STATIC,12,155,107,10 ! COMBOBOX IDC_ACTION_UNSURE,12,166,55,40,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! LTEXT "to folder",IDC_STATIC,71,169,27,10 ! CONTROL "(folder name)",IDC_FOLDER_UNSURE,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,166,77,14 ! PUSHBUTTON "&Browse",IDC_BROWSE_UNSURE,184,166,50,14 ! CONTROL "Mark spam as read",IDC_MARK_SPAM_AS_READ,"Button", ! BS_AUTOCHECKBOX | WS_TABSTOP,13,100,81,10 ! CONTROL "Mark possible spam as read",IDC_MARK_UNSURE_AS_READ, ! "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,186,101,10 ! GROUPBOX "Certain Good",IDC_STATIC,6,203,235,48 ! LTEXT "These messages should be:",IDC_STATIC,12,215,107,10 ! COMBOBOX IDC_ACTION_HAM,12,228,55,40,CBS_DROPDOWNLIST | ! WS_VSCROLL | WS_TABSTOP ! LTEXT "to folder",IDC_STATIC,71,230,27,10 ! CONTROL "(folder name)",IDC_FOLDER_HAM,"Static", ! SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | ! WS_GROUP,102,228,77,14 ! PUSHBUTTON "&Browse",IDC_BROWSE_HAM,184,228,50,14 ! END ! ! IDD_FOLDER_SELECTOR DIALOGEX 0, 0, 247, 215 ! STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU ! CAPTION "Dialog" ! FONT 8, "Tahoma", 0, 0, 0x1 ! BEGIN ! LTEXT "&Folders:",IDC_STATIC,7,7,47,9 ! CONTROL "",IDC_LIST_FOLDERS,"SysTreeView32",TVS_HASBUTTONS | ! TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | ! TVS_SHOWSELALWAYS | TVS_CHECKBOXES | WS_BORDER | ! WS_TABSTOP,7,21,172,140 ! CONTROL "(sub)",IDC_BUT_SEARCHSUB,"Button",BS_AUTOCHECKBOX | ! WS_TABSTOP,7,167,126,9 ! LTEXT "(status1)",IDC_STATUS1,7,180,220,9 ! LTEXT "(status2)",IDC_STATUS2,7,194,220,9 ! DEFPUSHBUTTON "OK",IDOK,190,21,50,14 ! PUSHBUTTON "Cancel",IDCANCEL,190,39,50,14 ! PUSHBUTTON "C&lear All",IDC_BUT_CLEARALL,190,58,50,14 ! PUSHBUTTON "&New folder",IDC_BUT_NEW,190,77,50,14 ! END ! ! ! ///////////////////////////////////////////////////////////////////////////// ! // ! // DESIGNINFO ! // ! ! #ifdef APSTUDIO_INVOKED ! GUIDELINES DESIGNINFO MOVEABLE PURE ! BEGIN ! IDD_GENERAL, DIALOG ! BEGIN ! RIGHTMARGIN, 248 ! VERTGUIDE, 6 ! BOTTOMMARGIN, 205 ! END ! ! IDD_TRAINING, DIALOG ! BEGIN ! RIGHTMARGIN, 241 ! VERTGUIDE, 11 ! VERTGUIDE, 242 ! BOTTOMMARGIN, 207 ! END ! ! IDD_FILTER_NOW, DIALOG ! BEGIN ! LEFTMARGIN, 7 ! RIGHTMARGIN, 237 ! TOPMARGIN, 9 ! BOTTOMMARGIN, 176 ! END ! ! IDD_FILTER, DIALOG ! BEGIN ! BOTTOMMARGIN, 254 ! HORZGUIDE, 127 ! END ! END ! #endif // APSTUDIO_INVOKED ! ! ! ///////////////////////////////////////////////////////////////////////////// ! // ! // Bitmap ! // ! ! IDB_FOLDERS BITMAP MOVEABLE PURE "folders.bmp" #ifdef APSTUDIO_INVOKED --- 606,612 ---- // ! IDB_SBLOGO BITMAP "sblogo.bmp" ! IDB_SBWIZLOGO BITMAP "sbwizlogo.bmp" ! IDB_FOLDERS BITMAP "folders.bmp" #ifdef APSTUDIO_INVOKED *************** *** 718,727 **** // ! 1 TEXTINCLUDE MOVEABLE PURE BEGIN "dialogs.h\0" END ! 2 TEXTINCLUDE MOVEABLE PURE BEGIN "#include ""winres.h""\r\n" --- 616,625 ---- // ! 1 TEXTINCLUDE BEGIN "dialogs.h\0" END ! 2 TEXTINCLUDE BEGIN "#include ""winres.h""\r\n" *************** *** 730,736 **** END ! 3 TEXTINCLUDE MOVEABLE PURE BEGIN - "\r\n" "\0" END --- 628,633 ---- END ! 3 TEXTINCLUDE BEGIN "\0" END *************** *** 738,754 **** #endif // APSTUDIO_INVOKED ! #endif // English (Australia) resources ! ///////////////////////////////////////////////////////////////////////////// ! ! ! ! #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// - // - // Generated from the TEXTINCLUDE 3 resource. - // - - ///////////////////////////////////////////////////////////////////////////// - #endif // not APSTUDIO_INVOKED --- 635,640 ---- #endif // APSTUDIO_INVOKED ! #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// From kpitt at users.sourceforge.net Tue Jan 11 17:23:51 2005 From: kpitt at users.sourceforge.net (Kenny Pitt) Date: Tue Jan 11 17:23:55 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/dialogs dialog_map.py, 1.47, 1.48 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1926/Outlook2000/dialogs Modified Files: dialog_map.py Log Message: 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. Index: dialog_map.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/dialog_map.py,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** dialog_map.py 4 Jan 2005 01:53:15 -0000 1.47 --- dialog_map.py 11 Jan 2005 16:23:47 -0000 1.48 *************** *** 175,190 **** config = manager.config.filter certain_spam_name = manager.FormatFolderNames( ! [config.spam_folder_id], False) if config.unsure_folder_id: unsure_name = manager.FormatFolderNames( [config.unsure_folder_id], False) ! unsure_text = _("unsure managed in '%s'") % (unsure_name,) else: ! unsure_text = _("unsure messages untouched") watch_names = manager.FormatFolderNames( config.watch_folder_ids, config.watch_include_sub) ! filter_status = _("Watching '%s'. Spam managed in '%s', %s.") \ % (watch_names, certain_spam_name, unsure_text) --- 175,197 ---- config = manager.config.filter certain_spam_name = manager.FormatFolderNames( ! [config.spam_folder_id], False) if config.unsure_folder_id: unsure_name = manager.FormatFolderNames( [config.unsure_folder_id], False) ! unsure_text = _("Unsure managed in '%s'") % (unsure_name,) else: ! unsure_text = _("Unsure messages untouched") ! if config.ham_folder_id: ! ham_name = manager.FormatFolderNames( ! [config.ham_folder_id], False) ! ham_text = _("Good managed in '%s'") % (ham_name,) ! else: ! ham_text = _("Good messages untouched") watch_names = manager.FormatFolderNames( config.watch_folder_ids, config.watch_include_sub) ! filter_status = _("Watching '%s'.\r\n%s.\r\nSpam managed in '%s'.\r\n%s.") \ % (watch_names, + ham_text, certain_spam_name, unsure_text) From anadelonbrin at users.sourceforge.net Wed Jan 12 01:55:52 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 12 01:55:56 2005 Subject: [Spambayes-checkins] spambayes WHAT_IS_NEW.txt,1.36,1.37 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18620 Modified Files: WHAT_IS_NEW.txt Log Message: First cut (still needs a lot of work) at a 1.1 version. Index: WHAT_IS_NEW.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** WHAT_IS_NEW.txt 16 Dec 2004 17:43:50 -0000 1.36 --- WHAT_IS_NEW.txt 12 Jan 2005 00:55:48 -0000 1.37 *************** *** 1,6 **** This file covers the major changes between each release. For more details, the reader is referred to the changelog (CHANGELOG.TXT in the main directory ! of the archive), or for extreme details, to the check-ins archive (see ! ) Changes are broken into sections, so that it's easier for you to find the --- 1,6 ---- This file covers the major changes between each release. For more details, the reader is referred to the changelog (CHANGELOG.TXT in the main directory ! of the source archive), or for extreme details, to the check-ins archive ! (see ). Changes are broken into sections, so that it's easier for you to find the *************** *** 8,22 **** Any actions necessary to move to this release from the previous release are ! noted in the "Transition" section. You should also read the "Incompatible ! changes" section. ! New in 1.0 Release Candiate 1 ! ============================= ! -------------------------- ! ** Incompatible changes ** ! -------------------------- ! There should be no incompatible changes (from 1.0b1) in this release. --- 8,31 ---- Any actions necessary to move to this release from the previous release are ! noted in the "Incompatible changes and Transitioning" section. ! Note that this is an alpha release, intended for those willing to try out ! very cutting edge software. It is likely that there are a few unresolved ! bugs with this release. If you would rather wait for a more stable release ! to have the new features here, please continue to use 1.0.2 until 1.1 final ! is released. ! New in 1.1 Alpha 1 ! ================== ! ! -------------------------------------------- ! ** Incompatible changes and Transitioning ** ! -------------------------------------------- ! ! There should be no incompatible changes (from 1.0.2) in this release. ! If you are transitioning from a version older than 1.0.2, please ! read the notes in the previous release notes (accessible from ! ). *************** *** 25,54 **** ------------------- Outlook Plugin -------------- ! o Default buttons in some dialogs have been corrected. ! IMAP Filter ! ----------- ! o The code that allows the filter to keep going when a message cannot ! be parsed correctly has been strengthened. If the filter crashed ! with a "TypeError" when processing some messages, this should fix ! that problem. ! o If the move_trained_[ham|spam]_to_folder options were used, this ! would wipe out the SpamBayes headers. This is now fixed. ! General ! ------- ! o Added -R/--reverse flag to tte.py ! o Fix an error that stopped the notes filter working at all in many cases. ! o sb_filter and sb_bnfilter now better handle messages that fail to ! correctly parse. ! Transition ! ========== ! If you are transitioning from a version older than 1.0b1, please ! read the notes in the previous release notes (accessible from ! ). --- 34,146 ---- ------------------- + General + ------- + o Localisations (translations of the user interface) of SpamBayes are + now available. 1.1 includes French and Spanish translations - many + thanks to the translators for their efforts. If you would like to + add a translation in a new language (or dialect), please contact the + SpamBayes development team at spambayes-dev@python.org. For Windows + users, SpamBayes will use the same language as the operating system + is set to use (if available). This can be overridden (or set, for + non-Windows users) via the configuration file. + o The version number scheme has been improved and simplified. + o Many more unittests have been added. For the end user, this should + mean that changes in later versions are much less likely to break + existing functionality. + o New storage types are available: CDBClassifier (uses a CDB database, + similar to that used by CdbClassifier, but not identical), + ZODBClassifier (uses a ZODB FileStorage object) and ZEOClassifier + (connects to a ZEO server). + o The "use bigrams" option is no longer experimental, although is still + off by default. + Outlook Plugin -------------- ! o The Manager dialog is enlarged (at least 800x600 resolution is needed ! to view it - 640x480 users will need to continue with 1.0.2) and ! enhanced to (among other things) include a new "Statistics" tab. ! o Enhance the "Show Clues" message. This now includes information about ! the last time the message was trained or classified. ! o For messages received from a local Exchange server, which have no ! Internet headers, we now generate more (and better) headers from the ! available message properties. ! o Statistics are vastly improved. More statistics are reported, and ! these are persistent across Outlook sessions. The statistics may ! be 'reset' so that they are calculated from a specified date and time. ! o Enable movement/copying of ham (good) messages, like the existing ! functionality for unsure/spam messages. ! 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 ! storage methods, in the same fashion as non-Outlook users. ! POP3 Proxy (sb_server.py) ! ------------------------- ! o POP over SSL is partially available. The connection from the mail ! client to sb_server still cannot be over SSL, but the connection ! from sb_server to the mail server can be. The latter is more likely ! to be at risk (as it is more likely to be non-local), so is the ! more important, as well as the easier to implement. ! o "Subject" (and "To") notations are removed from messages before display ! in the review pages and before training such messages. ! o The "To" header notations are in a new form, which is correctly an ! email address. ! o A particular type of malformed message (one with no header-body ! separator) would pass through SpamBayes without classification, or ! a X-Spambayes-Exception header. This is no longer the case. ! Web interface (sb_server.py and sb_imapfilter.py) ! ------------------------------------------------- ! o Improve the "More Statistics" page. More statistics are reported, and ! the statistics may be 'reset' so that they are calculated from a ! specified date and time. ! o A new option "Use bigrams" is available from the Advanced Configuration ! page. ! o Various minor fixes and improvements. + IMAP Filter (sb_imapfilter.py) + ------------------------------ + o Use the "Message-ID" header as the SpamBayes ID (when possible). This + means that the IMAP filter should not need to rewrite nearly as many + messages (hopefully, should need to rewrite no ham messages), and should + also work faster and more reliably. + o A ham folder may now be specified, like the spam and unsure folders. + o Continue on (skipping) if a folder is unable to be acccesed for training + or filtering. + o Many minor fixes and improvements. ! sb_pop3dnd.py ! ------------- ! Many improvements. Should now be useable. Binary now included. Tray ! app now included. ! o Spam classification and spam training have been separated out into ! separate folders. ! o No longer uses the web interface. Configuration is available via ! a dialog, training is via drag and drop between IMAP folders, and ! information is provided in the "Inbox" IMAP folder. ! ! New ! --- ! o Andrew Dalke's sb_culler.py script (an updated version) is now ! included in the source distribution. ! o The new hammie2cdb.py script converts standard spambayes.Storage ! databases into cdb databases usable by CdbClassifier. ! o The new postfixproxy.py script is a proxy filter for use with ! PostFix 2.1's content filter functionality. ! o The new pycksum.py script is a fuzzy checksum program. ! ! Other ! ----- ! o The sb_upload.py script's help string has been improved, and the ! -n (--null) command line option now works. The script is now also ! to train as well as upload. ! o The tte.py script has had many improvements, including Python 2.3 ! compatibility, addition of a --ratio flag, deletion of correctly ! scoring messages, an improved scoring algorithm, and improved ! detection of whether a message is a miss or not. ! o A version of sb_bnfilter that is implemented in C (for speed) is ! now available. *************** *** 56,60 **** =================== The following bugs tracked via the Sourceforge system were fixed: ! 940155, 941596, 918157 A URL containing the details of these bugs can be made by appending the --- 148,153 ---- =================== The following bugs tracked via the Sourceforge system were fixed: ! 1078923, 1022848, 831864, 922063, 1051081, 903905, 1036601, 790757, ! 944109, 959937, 943852, 941639, 986353, 990700, 933473, 981970, 1071319 A URL containing the details of these bugs can be made by appending the *************** *** 67,70 **** --- 160,164 ---- No feature requests tracked via the Sourceforge system were added for this release. + 870524, 940547, 715248, 938992, 1039057, 909088, 887984, 753708, 848365 *************** *** 73,142 **** No patches tracked via the Sourceforge system were integrated for this release. ! Newly Deprecated Options ! ======================== ! ! Since 1.0a9, SpamBayes has had a method of noting options that are ! deprecated and which will not be available in future releases (it is ! likely that options will only be deprecated for one release before being ! removed). Deprecated options will not be offered in the graphical ! interfaces (Outlook plugin and web interface), and will be listed in ! the "What's New" file (this file) for each release. ! ! Deprecated options have the same name as previously, but now begin with ! "x-" (so "extract_dow" is now "x-extract_dow"). You can continue to use ! the original name (e.g. "extract_dow") in your configuration file, but will ! receive warnings in your log file or console window. We recommend that you ! examine this output every time you upgrade SpamBayes to ensure that you are ! not using any newly deprecated options. ! ! Discussion regarding the deprecation of any particular option can be found ! in the spambayes-dev archives (at ! ). ! ! No options have been deprecated in this release. ! ! The following options are still deprecated and will be removed in the near ! future, unless testing indicates otherwise: ! o [Tokenizer] generate_time_buckets ! o [Tokenizer] extract_dow ! o [Classifier] experimental_ham_spam_imbalance_adjustment ! ! ! New Experimental Options ! ======================== ! Since 1.0a9, SpamBayes has had a method of noting options that are ! experimental and which may be removed or made permanent in future releases ! (many experimental options will only be experimental for one release before ! being removed or fully integrated). Experimental options are not exposed ! by the Outlook plugin, and are listed on a separate ! "Experimental Configuration" page in the web interface. The options will ! be listed in the "What's New" file (this file) for each release. - Experimental options begin with "x-" (as do deprecated options). If you - start using an experimental option and it later becomes permanent you can - continue to use the "x-" name in your configuration file, but will - receive warnings in your log file or console window. We recommend that you - examine this output every time you upgrade SpamBayes to ensure that you are - using the correct name for all options. ! Discussion of why experimental options and results from using them can be ! found in the spambayes-dev archives (at ! ). Ideally, we would like ! users to test these options out on their mail and let us know the results. ! This can be as simple as turning on the option and emailing ! spambayes@python.org with anecdotal results after a period of time, or the ! full testtools scripts can be used. For details about using these, please ! read the "README-DEVEL.txt" file that comes with the SpamBayes source ! archive. ! Experimental options are always turned off by default. ! No experimental options have been added in this release. ! Experimental options that are currently available (which we invite you to ! try out and report back your results) include: o [Tokenizer] x-search_for_habeas_headers o [Tokenizer] x-reduce_habeas_headers --- 167,197 ---- No patches tracked via the Sourceforge system were integrated for this release. + 1052816, 962693, 831941, 858925, 800671 ! Deprecated Options ! ================== ! No options are currently deprecated. ! Experimental Options ! ==================== ! We would like to remind users about our set of experimental options. These ! are options which we believe may be of benefit to users, but have not been ! tested throughly enough to warrent full inclusion. We would greatly ! appreciate feedback from users willing to try these options out as to their ! perceived benefit. Both source code and binary users (including Outlook) ! can try these options out. ! More information about the experimental options and how to enable them ! can be found at: ! http://spambayes.org/experimental.html ! If you have any queries about the experimental options, please email ! spambayes@python.org and we will try and answer them. ! ! Experimental options that are currently available include: o [Tokenizer] x-search_for_habeas_headers o [Tokenizer] x-reduce_habeas_headers From anadelonbrin at users.sourceforge.net Thu Jan 13 22:42:45 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 22:42:48 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py, 1.30.4.2, 1.30.4.3 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8218/scripts Modified Files: Tag: release_1_0-branch sb_imapfilter.py Log Message: Backport attempt at fix for MemoryError problems with OS X. Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.30.4.2 retrieving revision 1.30.4.3 diff -C2 -d -r1.30.4.2 -r1.30.4.3 *** sb_imapfilter.py 9 Nov 2004 22:48:41 -0000 1.30.4.2 --- sb_imapfilter.py 13 Jan 2005 21:42:42 -0000 1.30.4.3 *************** *** 215,218 **** --- 215,226 ---- self.logged_in = False + # We override the base read so that we only read a certain amount + # of data at a time. OS X and Python has problems with getting + # large amounts of memory at a time, so maybe this will be a way we + # can work around that (I don't know, and don't have a mac to test, + # but we need to try something). + self._read = self.read + self.read = self.safe_read + def login(self, username, pwd): try: *************** *** 325,328 **** --- 333,351 ---- return None + # Maximum amount of data that will be read at any one time. + MAXIMUM_SAFE_READ = 4096 + def safe_read(self, size): + """Read data from remote, but in manageable sizes.""" + data = [] + while size > 0: + if size < self.MAXIMUM_SAFE_READ: + to_collect = size + else: + to_collect = self.MAXIMUM_SAFE_READ + data.append(self._read(to_collect)) + size -= self.MAXIMUM_SAFE_READ + return "".join(data) + + class IMAPMessage(message.SBHeaderMessage): def __init__(self): From anadelonbrin at users.sourceforge.net Thu Jan 13 22:47:29 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 22:47:31 2005 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.51,1.52 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9538/scripts Modified Files: sb_imapfilter.py Log Message: Try and work around the reasonably common problems with imaplib and OS X. A MemoryError gets generated when a malloc fails trying to do a read on the socket that is too large. As a workaround, only read in manageable chunks and then join all the data together. I hope this will work, but I can't be sure. Maybe the malloc fail will simply move to the join call. I don't think this will make any noticeable difference in speed, but if it does, then MAXIMUM_SAFE_READ can be increased to something larger. If anyone out there uses sb_imapfilter from CVS with a OS X, it would be great if you could try and test this out before 1.1 and 1.0.2 are released :) Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** sb_imapfilter.py 4 Jan 2005 00:19:34 -0000 1.51 --- sb_imapfilter.py 13 Jan 2005 21:47:25 -0000 1.52 *************** *** 43,55 **** Warnings: ! o This is beta software. While we are reasonably confident that it ! should work as designed, there is a lot of difference between IMAP ! servers, and we can only test with a few. We never delete mail, ! unless you use the -e/purge option, but we do mark a lot as deleted, ! and your mail client might remove that for you. We try to only mark ! as deleted once the moved/altered message is correctly saved, but ! things might go wrong. We *strongly* recommend that you try this ! script out on mail that you can recover from somewhere else, at least ! at first. """ --- 43,52 ---- Warnings: ! o We never delete mail, unless you use the -e/purge option, but we do ! mark a lot as deleted, and your mail client might remove that for ! you. We try to only mark as deleted once the moved/altered message ! is correctly saved, but things might go wrong. We *strongly* ! recommend that you try this script out on mail that you can recover ! from somewhere else, at least at first. """ *************** *** 65,69 **** """ ! # 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. --- 62,66 ---- """ ! # 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. *************** *** 162,165 **** --- 159,170 ---- self.current_folder = None + # We override the base read so that we only read a certain amount + # of data at a time. OS X and Python has problems with getting + # large amounts of memory at a time, so maybe this will be a way we + # can work around that (I don't know, and don't have a mac to test, + # but we need to try something). + self._read = self.read + self.read = self.safe_read + def readline_timeout(self): """Read line from remote, possibly timing out.""" *************** *** 397,400 **** --- 402,419 ---- return data + # Maximum amount of data that will be read at any one time. + MAXIMUM_SAFE_READ = 4096 + def safe_read(self, size): + """Read data from remote, but in manageable sizes.""" + data = [] + while size > 0: + if size < self.MAXIMUM_SAFE_READ: + to_collect = size + else: + to_collect = self.MAXIMUM_SAFE_READ + data.append(self._read(to_collect)) + size -= self.MAXIMUM_SAFE_READ + return "".join(data) + class IMAPMessage(message.SBHeaderMessage): From anadelonbrin at users.sourceforge.net Thu Jan 13 22:48:21 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 22:48:25 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_sb_imapfilter.py, 1.9, 1.10 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9717/spambayes/test Modified Files: test_sb_imapfilter.py Log Message: Add a test for the new safe_read function. Index: test_sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_sb_imapfilter.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** test_sb_imapfilter.py 4 Jan 2005 00:18:02 -0000 1.9 --- test_sb_imapfilter.py 13 Jan 2005 21:48:15 -0000 1.10 *************** *** 11,14 **** --- 11,15 ---- import unittest import asyncore + import StringIO import sb_test_support *************** *** 530,533 **** --- 531,567 ---- self.assertEqual(data['5']["RFC822.HEADER"], headers) + def _counter(self, size): + self._count += 1 + return self._imap_file_read(size) + def test_safe_read(self): + # Ensure that safe_read only gets self.imap.MAXIMUM_SAFE_READ bytes + # at a time, and that it does collect everything. + # Setup a fake file to read from. + saved_file = self.imap.file + self.imap.file = StringIO.StringIO() + self.imap.file.write("".join(IMAP_MESSAGES.values()*10)) + self.imap.file.seek(0) + try: + # First check when the size is less than the maximum. + self.assertEqual(len(self.imap.read(\ + self.imap.MAXIMUM_SAFE_READ-1)), + self.imap.MAXIMUM_SAFE_READ-1) + # Check when the size is more than the maximum. + self.assertEqual(len(self.imap.read(\ + self.imap.MAXIMUM_SAFE_READ+1)), + self.imap.MAXIMUM_SAFE_READ+1) + # Check that the read is called once when the size is smaller. + self._count = 0 + self._imap_file_read = self.imap.file.read + self.imap.file.read = self._counter + self.imap.read(self.imap.MAXIMUM_SAFE_READ-1) + self.assertEqual(self._count, 1) + # Check that the read is called twice when the size is larger. + self._count = 0 + self.imap.read(self.imap.MAXIMUM_SAFE_READ+1) + self.assertEqual(self._count, 2) + finally: + self.imap.file = saved_file + class IMAPMessageTest(BaseIMAPFilterTest): From anadelonbrin at users.sourceforge.net Thu Jan 13 23:00:04 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 23:00:10 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_message.py, NONE, 1.6.2.1 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12575/spambayes/test Added Files: Tag: release_1_0-branch test_message.py Log Message: Backport unittests for spambayes.message (modified for 1.0.x) --- NEW FILE: test_message.py --- # Test spambayes.message module. import os import sys import math import time import email import unittest import sb_test_support sb_test_support.fix_sys_path() from spambayes.Options import options from spambayes.tokenizer import tokenize from spambayes.classifier import Classifier from spambayes.message import MessageInfoDB, msginfoDB from spambayes.message import Message, SBHeaderMessage, MessageInfoPickle # We borrow the test messages that test_sb_server uses. # I doubt it really makes much difference, but if we wanted more than # one message of each type (the tests should all handle this ok) then # Richie's hammer.py script has code for generating any number of # randomly composed email messages. from test_sb_server import good1, spam1, malformed1 try: __file__ except NameError: # Python 2.2 compatibility. __file__ = sys.argv[0] TEMP_PICKLE_NAME = os.path.join(os.path.dirname(__file__), "temp.pik") TEMP_DBM_NAME = os.path.join(os.path.dirname(__file__), "temp.dbm") # The chances of anyone having files with these names in the test # directory is minute, but we don't want to wipe anything, so make # sure that they don't already exist. Our tearDown code gets rid # of our copies (whether the tests pass or fail) so they shouldn't # be ours. for fn in [TEMP_PICKLE_NAME, TEMP_DBM_NAME]: if os.path.exists(fn): print fn, "already exists. Please remove this file before " \ "running these tests (a file by that name will be " \ "created and destroyed as part of the tests)." sys.exit(1) class MessageTest(unittest.TestCase): def setUp(self): self.msg = email.message_from_string(spam1, _class=Message) def test_persistent_state(self): self.assertEqual(self.msg.stored_attributes, ['c', 't']) def test_initialisation(self): self.assertEqual(self.msg.id, None) self.assertEqual(self.msg.c, None) self.assertEqual(self.msg.t, None) def test_setId(self): # Verify that you can't change the id. self.msg.id = "test" self.assertRaises(ValueError, self.msg.setId, "test2") # Verify that you can't set the id to None. self.msg.id = None self.assertRaises(ValueError, self.msg.setId, None) # Verify that id must be a string. self.assertRaises(TypeError, self.msg.setId, 1) self.assertRaises(TypeError, self.msg.setId, False) self.assertRaises(TypeError, self.msg.setId, []) id = "Test" self.msg.setId(id) self.assertEqual(self.msg.id, id) # Check info db _getState is called. self.msg.id = None saved = msginfoDB._getState self.done = False try: msginfoDB._getState = self._fake_setState self.msg.setId(id) self.assertEqual(self.done, True) finally: msginfoDB._getState = saved def test_getId(self): self.assertEqual(self.msg.getId(), None) id = "test" self.msg.id = id self.assertEqual(self.msg.getId(), id) def test_tokenize(self): toks = self.msg.tokenize() self.assertEqual(tuple(tokenize(spam1)), tuple(toks)) def test_force_CRLF(self): self.assert_('\r' not in good1) lines = self.msg._force_CRLF(good1).split('\n') for line in lines: if line: self.assert_(line.endswith('\r')) def test_as_string_endings(self): self.assert_('\r' not in spam1) lines = self.msg.as_string().split('\n') for line in lines: if line: self.assert_(line.endswith('\r')) def _fake_setState(self, state): self.done = True def test_modified(self): saved = msginfoDB._setState try: msginfoDB._setState = self._fake_setState self.done = False self.msg.modified() self.assertEqual(self.done, False) self.msg.id = "Test" self.msg.modified() self.assertEqual(self.done, True) finally: msginfoDB._setState = saved def test_GetClassification(self): self.msg.c = 's' self.assertEqual(self.msg.GetClassification(), options['Headers','header_spam_string']) self.msg.c = 'h' self.assertEqual(self.msg.GetClassification(), options['Headers','header_ham_string']) self.msg.c = 'u' self.assertEqual(self.msg.GetClassification(), options['Headers','header_unsure_string']) self.msg.c = 'a' self.assertEqual(self.msg.GetClassification(), None) def test_RememberClassification(self): self.msg.RememberClassification(options['Headers', 'header_spam_string']) self.assertEqual(self.msg.c, 's') self.msg.RememberClassification(options['Headers', 'header_ham_string']) self.assertEqual(self.msg.c, 'h') self.msg.RememberClassification(options['Headers', 'header_unsure_string']) self.assertEqual(self.msg.c, 'u') self.assertRaises(ValueError, self.msg.RememberClassification, "a") # Check that self.msg.modified is called. saved = self.msg.modified self.done = False try: self.msg.modified = self._fake_modified self.msg.RememberClassification(options['Headers', 'header_unsure_string']) self.assertEqual(self.done, True) finally: self.msg.modified = saved def _fake_modified(self): self.done = True def test_GetAndRememberTrained(self): t = "test" saved = self.msg.modified self.done = False try: self.msg.modified = self._fake_modified self.msg.RememberTrained(t) self.assertEqual(self.done, True) finally: self.msg.modified = saved self.assertEqual(self.msg.GetTrained(), t) class SBHeaderMessageTest(unittest.TestCase): def setUp(self): self.msg = email.message_from_string(spam1, _class=SBHeaderMessage) # Get a prob and some clues. c = Classifier() self.u_prob, clues = c.spamprob(tokenize(good1), True) c.learn(tokenize(good1), False) self.g_prob, clues = c.spamprob(tokenize(good1), True) c.unlearn(tokenize(good1), False) c.learn(tokenize(spam1), True) self.s_prob, self.clues = c.spamprob(tokenize(spam1), True) self.ham = options['Headers','header_ham_string'] self.spam = options['Headers','header_spam_string'] self.unsure = options['Headers','header_unsure_string'] self.to = "tony.meyer@gmail.com;ta-meyer@ihug.co.nz" self.msg["to"] = self.to def test_setIdFromPayload(self): id = self.msg.setIdFromPayload() self.assertEqual(id, None) self.assertEqual(self.msg.id, None) msgid = "test" msg = "".join((options['Headers','mailid_header_name'], ": ", msgid, "\r\n", good1)) msg = email.message_from_string(msg, _class=SBHeaderMessage) id = msg.setIdFromPayload() self.assertEqual(id, msgid) self.assertEqual(msg.id, msgid) def test_disposition_header_ham(self): name = options['Headers','classification_header_name'] self.msg.addSBHeaders(self.g_prob, self.clues) self.assertEqual(self.msg[name], self.ham) self.assertEqual(self.msg.GetClassification(), self.ham) def test_disposition_header_spam(self): name = options['Headers','classification_header_name'] self.msg.addSBHeaders(self.s_prob, self.clues) self.assertEqual(self.msg[name], self.spam) self.assertEqual(self.msg.GetClassification(), self.spam) def test_disposition_header_unsure(self): name = options['Headers','classification_header_name'] self.msg.addSBHeaders(self.u_prob, self.clues) self.assertEqual(self.msg[name], self.unsure) self.assertEqual(self.msg.GetClassification(), self.unsure) def test_score_header_off(self): options['Headers','include_score'] = False self.msg.addSBHeaders(self.g_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'score_header_name']], None) def test_score_header(self): options['Headers','include_score'] = True options["Headers", "header_score_digits"] = 21 options["Headers", "header_score_logarithm"] = False self.msg.addSBHeaders(self.g_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'score_header_name']], "%.21f" % (self.g_prob,)) def test_score_header_log(self): options['Headers','include_score'] = True options["Headers", "header_score_digits"] = 21 options["Headers", "header_score_logarithm"] = True self.msg.addSBHeaders(self.s_prob, self.clues) self.assert_(self.msg[options['Headers', 'score_header_name']].\ startswith("%.21f" % (self.s_prob,))) self.assert_(self.msg[options['Headers', 'score_header_name']].\ endswith(" (%d)" % (-math.log10(1.0-self.s_prob),))) def test_thermostat_header_off(self): options['Headers','include_thermostat'] = False self.msg.addSBHeaders(self.u_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'thermostat_header_name']], None) def test_thermostat_header_unsure(self): options['Headers','include_thermostat'] = True self.msg.addSBHeaders(self.u_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'thermostat_header_name']], "*****") def test_thermostat_header_spam(self): options['Headers','include_thermostat'] = True self.msg.addSBHeaders(self.s_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'thermostat_header_name']], "*********") def test_thermostat_header_ham(self): options['Headers','include_thermostat'] = True self.msg.addSBHeaders(self.g_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'thermostat_header_name']], "") def test_evidence_header(self): options['Headers', 'include_evidence'] = True options['Headers', 'clue_mailheader_cutoff'] = 0.5 # all self.msg.addSBHeaders(self.g_prob, self.clues) header = self.msg[options['Headers', 'evidence_header_name']] header_clues = [s.split(':') for s in \ [s.strip() for s in header.split(';')]] header_clues = dict([(":".join(clue[:-1])[1:-1], float(clue[-1])) \ for clue in header_clues]) for word, score in self.clues: self.assert_(word in header_clues) self.assertEqual(round(score, 2), header_clues[word]) def test_evidence_header_partial(self): options['Headers', 'include_evidence'] = True options['Headers', 'clue_mailheader_cutoff'] = 0.1 self.msg.addSBHeaders(self.g_prob, self.clues) header = self.msg[options['Headers', 'evidence_header_name']] header_clues = [s.split(':') for s in \ [s.strip() for s in header.split(';')]] header_clues = dict([(":".join(clue[:-1])[1:-1], float(clue[-1])) \ for clue in header_clues]) for word, score in self.clues: if score <= 0.1 or score >= 0.9: self.assert_(word in header_clues) self.assertEqual(round(score, 2), header_clues[word]) else: self.assert_(word not in header_clues) def test_evidence_header_empty(self): options['Headers', 'include_evidence'] = True options['Headers', 'clue_mailheader_cutoff'] = 0.0 self.msg.addSBHeaders(self.g_prob, self.clues) header = self.msg[options['Headers','evidence_header_name']] header_clues = [s.split(':') for s in \ [s.strip() for s in header.split(';')]] header_clues = dict([(":".join(clue[:-1])[1:-1], float(clue[-1])) \ for clue in header_clues]) for word, score in self.clues: if word == "*H*" or word == "*S*": self.assert_(word in header_clues) self.assertEqual(round(score, 2), header_clues[word]) else: self.assert_(word not in header_clues) def test_evidence_header_off(self): options['Headers', 'include_evidence'] = False self.msg.addSBHeaders(self.g_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'evidence_header_name']], None) def test_notate_to_off(self): options["Headers", "notate_to"] = () self.msg.addSBHeaders(self.g_prob, self.clues) self.msg.addSBHeaders(self.u_prob, self.clues) self.msg.addSBHeaders(self.s_prob, self.clues) self.assertEqual(self.msg["To"], self.to) def test_notate_to_ham(self): options["Headers", "notate_to"] = (self.ham,) self.msg.addSBHeaders(self.g_prob, self.clues) disp, orig = self.msg["To"].split(',', 1) self.assertEqual(orig, self.to) self.assertEqual(disp, self.ham) def test_notate_to_unsure(self): options["Headers", "notate_to"] = (self.ham, self.unsure) self.msg.addSBHeaders(self.u_prob, self.clues) disp, orig = self.msg["To"].split(',', 1) self.assertEqual(orig, self.to) self.assertEqual(disp, self.unsure) def test_notate_to_spam(self): options["Headers", "notate_to"] = (self.ham, self.spam, self.unsure) self.msg.addSBHeaders(self.s_prob, self.clues) disp, orig = self.msg["To"].split(',', 1) self.assertEqual(orig, self.to) self.assertEqual(disp, self.spam) def test_notate_subject_off(self): subject = self.msg["Subject"] options["Headers", "notate_subject"] = () self.msg.addSBHeaders(self.g_prob, self.clues) self.msg.addSBHeaders(self.u_prob, self.clues) self.msg.addSBHeaders(self.s_prob, self.clues) self.assertEqual(self.msg["Subject"], subject) def test_notate_subject_ham(self): subject = self.msg["Subject"] options["Headers", "notate_subject"] = (self.ham,) self.msg.addSBHeaders(self.g_prob, self.clues) disp, orig = self.msg["Subject"].split(',', 1) self.assertEqual(orig, subject) self.assertEqual(disp, self.ham) def test_notate_subject_unsure(self): subject = self.msg["Subject"] options["Headers", "notate_subject"] = (self.ham, self.unsure) self.msg.addSBHeaders(self.u_prob, self.clues) disp, orig = self.msg["Subject"].split(',', 1) self.assertEqual(orig, subject) self.assertEqual(disp, self.unsure) def test_notate_subject_spam(self): subject = self.msg["Subject"] options["Headers", "notate_subject"] = (self.ham, self.spam, self.unsure) self.msg.addSBHeaders(self.s_prob, self.clues) disp, orig = self.msg["Subject"].split(',', 1) self.assertEqual(orig, subject) self.assertEqual(disp, self.spam) def test_notate_to_changed(self): saved_ham = options["Headers", "header_ham_string"] notate_to = options.get_option("Headers", "notate_to") saved_to = notate_to.allowed_values try: options["Headers", "header_ham_string"] = "bacon" header_strings = (options["Headers", "header_ham_string"], options["Headers", "header_spam_string"], options["Headers", "header_unsure_string"]) notate_to = options.get_option("Headers", "notate_to") notate_to.allowed_values = header_strings self.ham = options["Headers", "header_ham_string"] result = self.test_notate_to_ham() # Just be sure that it's using the new value. self.assertEqual(self.msg["To"].split(',', 1)[0], "bacon") finally: # If we leave these changed, then lots of other tests will # fail. options["Headers", "header_ham_string"] = saved_ham self.ham = saved_ham notate_to.allowed_values = saved_to return result def test_id_header(self): options['Headers','add_unique_id'] = True id = "test" self.msg.id = id self.msg.addSBHeaders(self.g_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'mailid_header_name']], id) def test_id_header_off(self): options['Headers','add_unique_id'] = False id = "test" self.msg.id = id self.msg.addSBHeaders(self.g_prob, self.clues) self.assertEqual(self.msg[options['Headers', 'mailid_header_name']], None) def test_currentSBHeaders(self): sbheaders = self.msg.currentSBHeaders() self.assertEqual({}, sbheaders) headers = {options['Headers', 'classification_header_name'] : '1', options['Headers', 'mailid_header_name'] : '2', options['Headers', 'classification_header_name'] + "-ID" : '3', options['Headers', 'thermostat_header_name'] : '4', options['Headers', 'evidence_header_name'] : '5', options['Headers', 'score_header_name'] : '6', options['Headers', 'trained_header_name'] : '7', } for name, val in headers.items(): self.msg[name] = val sbheaders = self.msg.currentSBHeaders() self.assertEqual(headers, sbheaders) def test_delSBHeaders(self): headers = (options['Headers', 'classification_header_name'], options['Headers', 'mailid_header_name'], options['Headers', 'classification_header_name'] + "-ID", options['Headers', 'thermostat_header_name'], options['Headers', 'evidence_header_name'], options['Headers', 'score_header_name'], options['Headers', 'trained_header_name'],) for header in headers: self.msg[header] = "test" for header in headers: self.assert_(header in self.msg.keys()) self.msg.delSBHeaders() for header in headers: self.assert_(header not in self.msg.keys()) class MessageInfoBaseTest(unittest.TestCase): def setUp(self, fn=TEMP_PICKLE_NAME): self.db = self.klass(fn, self.mode) def test_mode(self): self.assertEqual(self.mode, self.db.mode) def test__getState_missing(self): msg = email.message_from_string(good1, _class=Message) msg.id = "Test" dummy_values = "a", "b" msg.c, msg.t = dummy_values self.db._getState(msg) self.assertEqual((msg.c, msg.t), dummy_values) def test__getState_compat(self): msg = email.message_from_string(good1, _class=Message) msg.id = "Test" dummy_values = "a", "b" self.db.db[msg.id] = dummy_values self.db._getState(msg) self.assertEqual((msg.c, msg.t), dummy_values) def test__getState(self): msg = email.message_from_string(good1, _class=Message) msg.id = "Test" dummy_values = [('a', 1), ('b', 2)] self.db.db[msg.id] = dummy_values self.db._getState(msg) for att, val in dummy_values: self.assertEqual(getattr(msg, att), val) def test__setState(self): msg = email.message_from_string(good1, _class=Message) msg.id = "Test" saved = self.db.store self.done = False try: self.db.store = self._fake_store self.db._setState(msg) finally: self.db.store = saved self.assertEqual(self.done, True) correct = [(att, getattr(msg, att)) \ for att in msg.stored_attributes] db_version = dict(self.db.db[msg.id]) correct_version = dict(correct) self.assertEqual(db_version, correct_version) def _fake_store(self): self.done = True def test__delState(self): msg = email.message_from_string(good1, _class=Message) msg.id = "Test" self.db.db[msg.id] = "test" saved = self.db.store self.done = False try: self.db.store = self._fake_store self.db._delState(msg) finally: self.db.store = saved self.assertEqual(self.done, True) self.assertRaises(KeyError, self.db.db.__getitem__, msg.id) def test_load(self): # Create a db to try and load. data = {"1" : ('a', 'b', 'c'), "2" : ('d', 'e', 'f'), "3" : "test"} for k, v in data.items(): self.db.db[k] = v self.db.store() fn = self.db.db_name self.db.close() db2 = self.klass(fn, self.mode) try: self.assertEqual(len(db2.db.keys()), len(data.keys())) for k, v in data.items(): self.assertEqual(db2.db[k], v) finally: db2.close() def test_load_new(self): # Load from a non-existing db (i.e. create new). self.assertEqual(self.db.db.keys(), []) class MessageInfoPickleTest(MessageInfoBaseTest): def setUp(self): self.mode = 1 self.klass = MessageInfoPickle MessageInfoBaseTest.setUp(self, TEMP_PICKLE_NAME) def tearDown(self): try: os.remove(TEMP_PICKLE_NAME) except OSError: pass def store(self): if self.db is not None: self.db.sync() class MessageInfoDBTest(MessageInfoBaseTest): def setUp(self): self.mode = 'c' self.klass = MessageInfoDB MessageInfoBaseTest.setUp(self, TEMP_DBM_NAME) def tearDown(self): self.db.close() try: os.remove(TEMP_DBM_NAME) except OSError: pass def store(self): if self.db is not None: self.db.sync() def _fake_close(self): self.done += 1 def test_close(self): saved_db = self.db.db.close saved_dbm = self.db.dbm.close try: self.done = 0 self.db.db.close = self._fake_close self.db.dbm.close = self._fake_close self.db.close() self.assertEqual(self.done, 2) finally: # If we don't put these back (whatever happens), then # the db isn't closed and can't be deleted in tearDown. self.db.db.close = saved_db self.db.dbm.close = saved_dbm class UtilitiesTest(unittest.TestCase): def _verify_details(self, details): loc = details.find(__file__) self.assertNotEqual(loc, -1) loc = details.find("Exception: Test") self.assertNotEqual(loc, -1) def _verify_exception_header(self, msg, details): msg = email.message_from_string(msg) details = "\r\n.".join(details.strip().split('\n')) headerName = 'X-Spambayes-Exception' header = email.Header.Header(details, header_name=headerName) self.assertEqual(msg[headerName].replace('\r\n', '\n'), str(header).replace('\r\n', '\n')) def suite(): suite = unittest.TestSuite() classes = (MessageTest, SBHeaderMessageTest, MessageInfoPickleTest, UtilitiesTest, ) from spambayes import dbmstorage try: dbmstorage.open_best() except dbmstorage.error: print "Skipping MessageInfoDBTest - no dbm module available" from spambayes import message def always_pickle(): return "__test.pik", "pickle" message.database_type = always_pickle except TypeError: # We need an argument, so TypeError will be raised # when it *is* available. classes += (MessageInfoDBTest,) for cls in classes: suite.addTest(unittest.makeSuite(cls)) return suite if __name__=='__main__': sb_test_support.unittest_main(argv=sys.argv + ['suite']) From anadelonbrin at users.sourceforge.net Thu Jan 13 23:01:35 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 23:01:38 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_sb_dbexpimp.py, NONE, 1.3.2.1 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13125/spambayes/test Added Files: Tag: release_1_0-branch test_sb_dbexpimp.py Log Message: Backport unittests for sb_dbexpimp.py --- NEW FILE: test_sb_dbexpimp.py --- # Test sb_dbexpimp script. import os import sys import unittest from spambayes.tokenizer import tokenize from spambayes.storage import open_storage from spambayes.storage import PickledClassifier, DBDictClassifier import sb_test_support sb_test_support.fix_sys_path() import sb_dbexpimp # We borrow the test messages that test_sb_server uses. # I doubt it really makes much difference, but if we wanted more than # one message of each type (the tests should all handle this ok) then # Richie's hammer.py script has code for generating any number of # randomly composed email messages. from test_sb_server import good1, spam1 try: __file__ except NameError: # Python 2.2 __file__ = sys.argv[0] TEMP_PICKLE_NAME = os.path.join(os.path.dirname(__file__), "temp.pik") TEMP_CSV_NAME = os.path.join(os.path.dirname(__file__), "temp.csv") TEMP_DBM_NAME = os.path.join(os.path.dirname(__file__), "temp.dbm") # The chances of anyone having files with these names in the test # directory is minute, but we don't want to wipe anything, so make # sure that they don't already exist. Our tearDown code gets rid # of our copies (whether the tests pass or fail) so they shouldn't # be ours. for fn in [TEMP_PICKLE_NAME, TEMP_CSV_NAME, TEMP_DBM_NAME]: if os.path.exists(fn): print fn, "already exists. Please remove this file before " \ "running these tests (a file by that name will be " \ "created and destroyed as part of the tests)." sys.exit(1) class dbexpimpTest(unittest.TestCase): def tearDown(self): try: os.remove(TEMP_PICKLE_NAME) except OSError: pass try: os.remove(TEMP_CSV_NAME) except OSError: pass try: os.remove(TEMP_DBM_NAME) except OSError: pass def test_csv_module_import(self): """Check that we don't import the old object craft csv module.""" self.assert_(hasattr(sb_dbexpimp.csv, "reader")) def test_pickle_export(self): # Create a pickled classifier to export. bayes = PickledClassifier(TEMP_PICKLE_NAME) # Stuff some messages in it so it's not empty. bayes.learn(tokenize(spam1), True) bayes.learn(tokenize(good1), False) # Save. bayes.store() # Export. sb_dbexpimp.runExport(TEMP_PICKLE_NAME, "pickle", TEMP_CSV_NAME) # Verify that the CSV holds all the original data (and, by using # the CSV module to open it, that it is valid CSV data). fp = open(TEMP_CSV_NAME, "rb") reader = sb_dbexpimp.csv.reader(fp) (nham, nspam) = reader.next() self.assertEqual(int(nham), bayes.nham) self.assertEqual(int(nspam), bayes.nspam) for (word, hamcount, spamcount) in reader: word = sb_dbexpimp.uunquote(word) self.assert_(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(int(hamcount), wi.hamcount) self.assertEqual(int(spamcount), wi.spamcount) def test_dbm_export(self): # Create a dbm classifier to export. bayes = DBDictClassifier(TEMP_DBM_NAME) # Stuff some messages in it so it's not empty. bayes.learn(tokenize(spam1), True) bayes.learn(tokenize(good1), False) # Save & Close. bayes.store() bayes.close() # Export. sb_dbexpimp.runExport(TEMP_DBM_NAME, "dbm", TEMP_CSV_NAME) # Reopen the original. bayes = open_storage(TEMP_DBM_NAME, "dbm") # Verify that the CSV holds all the original data (and, by using # the CSV module to open it, that it is valid CSV data). fp = open(TEMP_CSV_NAME, "rb") reader = sb_dbexpimp.csv.reader(fp) (nham, nspam) = reader.next() self.assertEqual(int(nham), bayes.nham) self.assertEqual(int(nspam), bayes.nspam) for (word, hamcount, spamcount) in reader: word = sb_dbexpimp.uunquote(word) self.assert_(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(int(hamcount), wi.hamcount) self.assertEqual(int(spamcount), wi.spamcount) def test_import_to_pickle(self): # Create a CSV file to import. temp = open(TEMP_CSV_NAME, "wb") temp.write("3,4\n") csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} for word, (ham, spam) in csv_data.items(): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_PICKLE_NAME, "pickle", True, TEMP_CSV_NAME) # Open the converted file and verify that it has all the data from # the CSV file (and by opening it, that it is a valid pickle). bayes = open_storage(TEMP_PICKLE_NAME, "pickle") self.assertEqual(bayes.nham, 3) self.assertEqual(bayes.nspam, 4) for word, (ham, spam) in csv_data.items(): word = sb_dbexpimp.uquote(word) self.assert_(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(wi.hamcount, ham) self.assertEqual(wi.spamcount, spam) def test_import_to_dbm(self): # Create a CSV file to import. temp = open(TEMP_CSV_NAME, "wb") temp.write("3,4\n") csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} for word, (ham, spam) in csv_data.items(): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_DBM_NAME, "dbm", True, TEMP_CSV_NAME) # Open the converted file and verify that it has all the data from # the CSV file (and by opening it, that it is a valid dbm file). bayes = open_storage(TEMP_DBM_NAME, "dbm") self.assertEqual(bayes.nham, 3) self.assertEqual(bayes.nspam, 4) for word, (ham, spam) in csv_data.items(): word = sb_dbexpimp.uquote(word) self.assert_(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(wi.hamcount, ham) self.assertEqual(wi.spamcount, spam) def test_merge_to_pickle(self): # Create a pickled classifier to merge with. bayes = PickledClassifier(TEMP_PICKLE_NAME) # Stuff some messages in it so it's not empty. bayes.learn(tokenize(spam1), True) bayes.learn(tokenize(good1), False) # Save. bayes.store() # Create a CSV file to import. nham, nspam = 3,4 temp = open(TEMP_CSV_NAME, "wb") temp.write("%d,%d\n" % (nham, nspam)) csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} for word, (ham, spam) in csv_data.items(): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_PICKLE_NAME, "pickle", False, TEMP_CSV_NAME) # Open the converted file and verify that it has all the data from # the CSV file (and by opening it, that it is a valid pickle), # and the data from the original pickle. bayes2 = open_storage(TEMP_PICKLE_NAME, "pickle") self.assertEqual(bayes2.nham, nham + bayes.nham) self.assertEqual(bayes2.nspam, nspam + bayes.nspam) words = bayes._wordinfokeys() words.extend(csv_data.keys()) for word in words: word = sb_dbexpimp.uquote(word) self.assert_(word in bayes2._wordinfokeys()) h, s = csv_data.get(word, (0,0)) wi = bayes._wordinfoget(word) if wi: h += wi.hamcount s += wi.spamcount wi2 = bayes2._wordinfoget(word) self.assertEqual(h, wi2.hamcount) self.assertEqual(s, wi2.spamcount) def test_merge_to_dbm(self): # Create a dbm classifier to merge with. bayes = DBDictClassifier(TEMP_DBM_NAME) # Stuff some messages in it so it's not empty. bayes.learn(tokenize(spam1), True) bayes.learn(tokenize(good1), False) # Save data to check against. original_nham = bayes.nham original_nspam = bayes.nspam original_data = {} for key in bayes._wordinfokeys(): original_data[key] = bayes._wordinfoget(key) # Save & Close. bayes.store() bayes.close() # Create a CSV file to import. nham, nspam = 3,4 temp = open(TEMP_CSV_NAME, "wb") temp.write("%d,%d\n" % (nham, nspam)) csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} for word, (ham, spam) in csv_data.items(): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_DBM_NAME, "dbm", False, TEMP_CSV_NAME) # Open the converted file and verify that it has all the data from # the CSV file (and by opening it, that it is a valid dbm file), # and the data from the original dbm database. bayes2 = open_storage(TEMP_DBM_NAME, "dbm") self.assertEqual(bayes2.nham, nham + original_nham) self.assertEqual(bayes2.nspam, nspam + original_nspam) words = original_data.keys()[:] words.extend(csv_data.keys()) for word in words: word = sb_dbexpimp.uquote(word) self.assert_(word in bayes2._wordinfokeys()) h, s = csv_data.get(word, (0,0)) wi = original_data.get(word, None) if wi: h += wi.hamcount s += wi.spamcount wi2 = bayes2._wordinfoget(word) self.assertEqual(h, wi2.hamcount) self.assertEqual(s, wi2.spamcount) def suite(): suite = unittest.TestSuite() for cls in (dbexpimpTest, ): suite.addTest(unittest.makeSuite(cls)) return suite if __name__=='__main__': sb_test_support.unittest_main(argv=sys.argv + ['suite']) From anadelonbrin at users.sourceforge.net Thu Jan 13 23:01:57 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 23:02:01 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_sb_filter.py, NONE, 1.1.2.1 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13184/spambayes/test Added Files: Tag: release_1_0-branch test_sb_filter.py Log Message: Backport unittests for sb_filter.py --- NEW FILE: test_sb_filter.py --- # Test sb_filter script. import os import sys import email import unittest import sb_test_support sb_test_support.fix_sys_path() from spambayes.Options import options from spambayes.tokenizer import tokenize from spambayes.storage import open_storage import sb_filter # We borrow the test messages that test_sb_server uses. # I doubt it really makes much difference, but if we wanted more than # one message of each type (the tests should all handle this ok) then # Richie's hammer.py script has code for generating any number of # randomly composed email messages. from test_sb_server import good1, spam1 good1 = email.message_from_string(good1) spam1 = email.message_from_string(spam1) try: __file__ except NameError: # Python 2.2 __file__ = sys.argv[0] TEMP_DBM_NAME = os.path.join(os.path.dirname(__file__), "temp.dbm") # The chances of anyone having a file with this name in the test # directory is minute, but we don't want to wipe anything, so make # sure that it doesn't already exist. Our tearDown code gets rid # of our copy (whether the tests pass or fail) so it shouldn't # be ours. if os.path.exists(TEMP_DBM_NAME): print TEMP_DBM_NAME, "already exists. Please remove this file " \ "before running these tests (a file by that name will be " \ "created and destroyed as part of the tests)." sys.exit(1) class HammieFilterTest(unittest.TestCase): def setUp(self): self.h = sb_filter.HammieFilter() self.h.dbname = TEMP_DBM_NAME self.h.usedb = "dbm" def tearDown(self): if self.h.h: self.h.close() try: os.remove(TEMP_DBM_NAME) except OSError: pass def _fake_store(self): self.done = True def test_open(self): mode = 'c' self.h.open(mode) self.assertEqual(self.h.mode, mode) # Check the underlying classifier exists. self.assert_(self.h.h is not None) # This can also be called when there is an # existing classifier, but we want to change # mode. Verify that we store the old database # first if we were not in readonly mode. self.done = False self.h.h.store = self._fake_store mode = 'r' self.h.open(mode) self.assertEqual(self.h.mode, mode) self.assert_(self.done) def test_close_readonly(self): # Must open with 'c' first, because otherwise it doesn't exist. self.h.open('c') self.h.open('r') self.done = False self.h.h.store = self._fake_store # Verify that the classifier is not stored if we are # in readonly mode. self.h.close() self.assert_(not self.done) self.assertEqual(self.h.h, None) def test_close(self): self.h.open('c') self.done = False self.h.h.store = self._fake_store # Verify that the classifier is stored if we are # not in readonly mode. self.h.close() self.assert_(self.done) self.assertEqual(self.h.h, None) def test_newdb(self): # Create an existing classifier. b = open_storage(TEMP_DBM_NAME, "dbm") b.learn(tokenize(spam1), True) b.learn(tokenize(good1), False) b.store() b.close() # Create the fresh classifier. self.h.newdb() # Verify that the classifier isn't open. self.assertEqual(self.h.h, None) # Verify that any existing classifier with the same name # is overwritten. b = open_storage(TEMP_DBM_NAME, "dbm") self.assertEqual(b.nham, 0) self.assertEqual(b.nspam, 0) b.close() def test_filter(self): # Verify that the msg has the classification header added. self.h.open('c') self.h.h.bayes.learn(tokenize(good1), False) self.h.h.bayes.learn(tokenize(spam1), True) self.h.h.store() result = email.message_from_string(self.h.filter(spam1)) self.assert_(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_spam_string"])) result = email.message_from_string(self.h.filter(good1)) self.assert_(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_ham_string"])) def test_filter_train(self): # Verify that the msg has the classification header # added, and that it was correctly trained. self.h.open('c') self.h.h.bayes.learn(tokenize(good1), False) self.h.h.bayes.learn(tokenize(spam1), True) self.h.h.store() result = email.message_from_string(self.h.filter_train(spam1)) self.assert_(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_spam_string"])) self.assertEqual(self.h.h.bayes.nspam, 2) result = email.message_from_string(self.h.filter_train(good1)) self.assert_(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_ham_string"])) self.assertEqual(self.h.h.bayes.nham, 2) def test_train_ham(self): # Verify that the classifier gets trained with the message. self.h.open('c') self.h.train_ham(good1) self.assertEqual(self.h.h.bayes.nham, 1) self.assertEqual(self.h.h.bayes.nspam, 0) for token in tokenize(good1): wi = self.h.h.bayes._wordinfoget(token) self.assertEqual(wi.hamcount, 1) self.assertEqual(wi.spamcount, 0) def test_train_spam(self): # Verify that the classifier gets trained with the message. self.h.open('c') self.h.train_spam(spam1) self.assertEqual(self.h.h.bayes.nham, 0) self.assertEqual(self.h.h.bayes.nspam, 1) for token in tokenize(spam1): wi = self.h.h.bayes._wordinfoget(token) self.assertEqual(wi.hamcount, 0) self.assertEqual(wi.spamcount, 1) def test_untrain_ham(self): self.h.open('c') # Put a message in the classifier to be removed. self.h.h.bayes.learn(tokenize(good1), False) # Verify that the classifier gets untrained with the message. self.h.untrain_ham(good1) self.assertEqual(self.h.h.bayes.nham, 0) self.assertEqual(self.h.h.bayes.nspam, 0) for token in tokenize(spam1): wi = self.h.h.bayes._wordinfoget(token) self.assertEqual(wi, None) def test_untrain_spam(self): self.h.open('c') # Put a message in the classifier to be removed. self.h.h.bayes.learn(tokenize(spam1), True) # Verify that the classifier gets untrained with the message. self.h.untrain_spam(spam1) self.assertEqual(self.h.h.bayes.nham, 0) self.assertEqual(self.h.h.bayes.nspam, 0) for token in tokenize(spam1): wi = self.h.h.bayes._wordinfoget(token) self.assertEqual(wi, None) def suite(): suite = unittest.TestSuite() for cls in (HammieFilterTest, ): suite.addTest(unittest.makeSuite(cls)) return suite if __name__=='__main__': sb_test_support.unittest_main(argv=sys.argv + ['suite']) From anadelonbrin at users.sourceforge.net Thu Jan 13 23:02:42 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 23:02:44 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test .cvsignore, NONE, 1.1.2.1 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13356/spambayes/test Added Files: Tag: release_1_0-branch .cvsignore Log Message: Ignore autogenerated. --- NEW FILE: .cvsignore --- *.py[co] _pop3proxy.log From anadelonbrin at users.sourceforge.net Thu Jan 13 23:07:51 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 23:07:54 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_message.py, 1.6.2.1, 1.6.2.2 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14892/spambayes/test Modified Files: Tag: release_1_0-branch test_message.py Log Message: The malformed message isn't needed in 1.0.x Index: test_message.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_message.py,v retrieving revision 1.6.2.1 retrieving revision 1.6.2.2 diff -C2 -d -r1.6.2.1 -r1.6.2.2 *** test_message.py 13 Jan 2005 21:59:51 -0000 1.6.2.1 --- test_message.py 13 Jan 2005 22:07:48 -0000 1.6.2.2 *************** *** 22,26 **** # Richie's hammer.py script has code for generating any number of # randomly composed email messages. ! from test_sb_server import good1, spam1, malformed1 try: --- 22,26 ---- # Richie's hammer.py script has code for generating any number of # randomly composed email messages. ! from test_sb_server import good1, spam1 try: From anadelonbrin at users.sourceforge.net Thu Jan 13 23:08:42 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 13 23:08:46 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_sb_server.py, NONE, 1.4.2.1 test_sb-server.py, 1.5, NONE Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15153/spambayes/test Added Files: Tag: release_1_0-branch test_sb_server.py Removed Files: Tag: release_1_0-branch test_sb-server.py Log Message: Backport updates to tests for sb_server. --- NEW FILE: test_sb_server.py --- #! /usr/bin/env python """Test the POP3 proxy is working correctly. Given no command line options, carries out a test that the POP3 proxy can be connected to, that incoming mail is classified, that pipelining is removed from the CAPA[bility] query, and that the web ui is present. The -t option runs a fake POP3 server on port 8110. This is the same server that the -z option uses, and may be separately run for other testing purposes. Usage: test_sb-server.py [options] options: -t : Runs a fake POP3 server on port 8110 (for testing). -h : Displays this help message. """ # 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. __author__ = "Richie Hindle " __credits__ = "All the Spambayes folk." try: True, False except NameError: # Maintain compatibility with Python 2.2 True, False = 1, 0 # This code originally formed a part of pop3proxy.py. If you are examining # the history of this file, you may need to go back to there. todo = """ Web training interface: o Functional tests. """ # One example of spam and one of ham - both are used to train, and are # then classified. Not a good test of the classifier, but a perfectly # good test of the POP3 proxy. The bodies of these came from the # spambayes project, and Richie added the headers because the # originals had no headers. spam1 = """From: friend@public.com Subject: Make money fast Hello tim_chandler , Want to save money ? Now is a good time to consider refinancing. Rates are low so you can cut your current payments and save money. http://64.251.22.101/interest/index%38%30%300%2E%68t%6D Take off list on site [s5] """ good1 = """From: chris@example.com Subject: ZPT and DTML Jean Jordaan wrote: > 'Fraid so ;> It contains a vintage dtml-calendar tag. > http://www.zope.org/Members/teyc/CalendarTag > > Hmm I think I see what you mean: one needn't manually pass on the > namespace to a ZPT? Yeah, Page Templates are a bit more clever, sadly, DTML methods aren't :-( Chris """ import asyncore import socket import operator import re import time import getopt import sys, os import sb_test_support sb_test_support.fix_sys_path() from spambayes import Dibbler from spambayes import tokenizer from spambayes.UserInterface import UserInterfaceServer from spambayes.ProxyUI import ProxyUserInterface from sb_server import BayesProxyListener from sb_server import state, _recreateState from spambayes.Options import options # HEADER_EXAMPLE is the longest possible header - the length of this one # is added to the size of each message. HEADER_EXAMPLE = '%s: xxxxxxxxxxxxxxxxxxxx\r\n' % \ options["Headers", "classification_header_name"] class TestListener(Dibbler.Listener): """Listener for TestPOP3Server. Works on port 8110, to co-exist with real POP3 servers.""" def __init__(self, socketMap=asyncore.socket_map): Dibbler.Listener.__init__(self, 8110, TestPOP3Server, (socketMap,), socketMap=socketMap) class TestPOP3Server(Dibbler.BrighterAsyncChat): """Minimal POP3 server, for testing purposes. Doesn't support UIDL. USER, PASS, APOP, DELE and RSET simply return "+OK" without doing anything. Also understands the 'KILL' command, to kill it, and a 'SLOW' command, to change to really slow retrieval. The mail content is the example messages above. """ def __init__(self, clientSocket, socketMap): # Grumble: asynchat.__init__ doesn't take a 'map' argument, # hence the two-stage construction. Dibbler.BrighterAsyncChat.__init__(self, map=socketMap) Dibbler.BrighterAsyncChat.set_socket(self, clientSocket, socketMap) self.maildrop = [spam1, good1] self.set_terminator('\r\n') self.okCommands = ['USER', 'PASS', 'APOP', 'NOOP', 'SLOW', 'DELE', 'RSET', 'QUIT', 'KILL'] self.handlers = {'CAPA': self.onCapa, 'STAT': self.onStat, 'LIST': self.onList, 'RETR': self.onRetr, 'TOP': self.onTop} self.push("+OK ready\r\n") self.request = '' self.push_delay = 0.0 # 0.02 is a useful value for testing. def collect_incoming_data(self, data): """Asynchat override.""" self.request = self.request + data def found_terminator(self): """Asynchat override.""" if ' ' in self.request: command, args = self.request.split(None, 1) else: command, args = self.request, '' command = command.upper() if command in self.okCommands: self.push("+OK (we hope)\r\n") if command == 'QUIT': self.close_when_done() elif command == 'KILL': self.socket.shutdown(2) self.close() raise SystemExit elif command == 'SLOW': self.push_delay = 1.0 else: handler = self.handlers.get(command, self.onUnknown) self.push_slowly(handler(command, args)) self.request = '' def push_slowly(self, response): """Sometimes we push out the response slowly to try and generate timeouts. If the delay is 0, this just does a regular push.""" if self.push_delay: for c in response.split('\n'): if c and c[-1] == '\r': self.push(c + '\n') else: # We want to trigger onServerLine, so need the '\r', # so modify the message just a wee bit. self.push(c + '\r\n') time.sleep(self.push_delay * len(c)) else: self.push(response) def onCapa(self, command, args): """POP3 CAPA command. This lies about supporting pipelining for test purposes - the POP3 proxy *doesn't* support pipelining, and we test that it correctly filters out that capability from the proxied capability list.""" lines = ["+OK Capability list follows", "PIPELINING", "TOP", ".", ""] return '\r\n'.join(lines) def onStat(self, command, args): """POP3 STAT command.""" maildropSize = reduce(operator.add, map(len, self.maildrop)) maildropSize += len(self.maildrop) * len(HEADER_EXAMPLE) return "+OK %d %d\r\n" % (len(self.maildrop), maildropSize) def onList(self, command, args): """POP3 LIST command, with optional message number argument.""" if args: try: number = int(args) except ValueError: number = -1 if 0 < number <= len(self.maildrop): return "+OK %d\r\n" % len(self.maildrop[number-1]) else: return "-ERR no such message\r\n" else: returnLines = ["+OK"] for messageIndex in range(len(self.maildrop)): size = len(self.maildrop[messageIndex]) returnLines.append("%d %d" % (messageIndex + 1, size)) returnLines.append(".") return '\r\n'.join(returnLines) + '\r\n' def _getMessage(self, number, maxLines): """Implements the POP3 RETR and TOP commands.""" if 0 < number <= len(self.maildrop): message = self.maildrop[number-1] try: headers, body = message.split('\n\n', 1) except ValueError: return "+OK %d octets\r\n%s\r\n.\r\n" % (len(message), message) bodyLines = body.split('\n')[:maxLines] message = headers + '\r\n\r\n' + '\n'.join(bodyLines) return "+OK\r\n%s\r\n.\r\n" % message else: return "-ERR no such message\r\n" def onRetr(self, command, args): """POP3 RETR command.""" try: number = int(args) except ValueError: number = -1 return self._getMessage(number, 12345) def onTop(self, command, args): """POP3 RETR command.""" try: number, lines = map(int, args.split()) except ValueError: number, lines = -1, -1 return self._getMessage(number, lines) def onUnknown(self, command, args): """Unknown POP3 command.""" return "-ERR Unknown command: %s\r\n" % repr(command) def test(): """Runs a self-test using TestPOP3Server, a minimal POP3 server that serves the example emails above. """ # Run a proxy and a test server in separate threads with separate # asyncore environments. import threading state.isTest = True testServerReady = threading.Event() def runTestServer(): testSocketMap = {} TestListener(socketMap=testSocketMap) testServerReady.set() asyncore.loop(map=testSocketMap) proxyReady = threading.Event() def runUIAndProxy(): httpServer = UserInterfaceServer(8881) proxyUI = ProxyUserInterface(state, _recreateState) httpServer.register(proxyUI) BayesProxyListener('localhost', 8110, ('', 8111)) state.bayes.learn(tokenizer.tokenize(spam1), True) state.bayes.learn(tokenizer.tokenize(good1), False) proxyReady.set() Dibbler.run() threading.Thread(target=runTestServer).start() testServerReady.wait() threading.Thread(target=runUIAndProxy).start() proxyReady.wait() # Connect to the proxy and the test server. proxy = socket.socket(socket.AF_INET, socket.SOCK_STREAM) proxy.connect(('localhost', 8111)) response = proxy.recv(100) assert response == "+OK ready\r\n" pop3Server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) pop3Server.connect(('localhost', 8110)) response = pop3Server.recv(100) assert response == "+OK ready\r\n" # Verify that the test server claims to support pipelining. pop3Server.send("capa\r\n") response = pop3Server.recv(1000) assert response.find("PIPELINING") >= 0 # Ask for the capabilities via the proxy, and verify that the proxy # is filtering out the PIPELINING capability. proxy.send("capa\r\n") response = proxy.recv(1000) assert response.find("PIPELINING") == -1 # Stat the mailbox to get the number of messages. proxy.send("stat\r\n") response = proxy.recv(100) count, totalSize = map(int, response.split()[1:3]) assert count == 2 # Loop through the messages ensuring that they have judgement # headers. for i in range(1, count+1): response = "" proxy.send("retr %d\r\n" % i) while response.find('\n.\r\n') == -1: response = response + proxy.recv(1000) assert response.find(options["Headers", "classification_header_name"]) >= 0 # Smoke-test the HTML UI. httpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM) httpServer.connect(('localhost', 8881)) httpServer.sendall("get / HTTP/1.0\r\n\r\n") response = '' while 1: packet = httpServer.recv(1000) if not packet: break response += packet assert re.search(r"(?s).*Spambayes proxy.*", response) # Kill the proxy and the test server. proxy.sendall("kill\r\n") proxy.recv(100) pop3Server.sendall("kill\r\n") pop3Server.recv(100) def run(): # Read the arguments. try: opts, args = getopt.getopt(sys.argv[1:], 'ht') except getopt.error, msg: print >>sys.stderr, str(msg) + '\n\n' + __doc__ sys.exit() state.isTest = True runSelfTest = True for opt, arg in opts: if opt == '-h': print >>sys.stderr, __doc__ sys.exit() elif opt == '-t': state.isTest = True state.runTestServer = True runSelfTest = False state.createWorkers() if runSelfTest: print "\nRunning self-test...\n" state.buildServerStrings() test() print "Self-test passed." # ...else it would have asserted. elif state.runTestServer: print "Running a test POP3 server on port 8110..." TestListener() asyncore.loop() if __name__ == '__main__': run() --- test_sb-server.py DELETED --- From anadelonbrin at users.sourceforge.net Sun Jan 16 23:08:27 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:08:30 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/docs style.css,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7591/Outlook2000/docs Added Files: style.css Log Message: Add a central style sheet to control the looks of the Outlook documentation. I am *not* attached to the styles that are defined within. If anyone cares, please consider coming up with something that looks nice and is usable. --- NEW FILE: style.css --- body { margin-left: 10%; margin-right: 10%; } h1 { color: blue; border-bottom: double; font-family: Georgia, Arial, sans-serif; margin: 1em; margin-top: 2em; } h2 { color: purple; border-bottom: solid; font-family: Georgia, Arial, sans-serif; margin: 0.5em; margin-top: 1em; } h3 { font-family: Georgia, Arial, sans-serif; margin: 0.25em; margin-top: 0.5em; } li { margin-bottom: 1em; } tt { color: #336633; } .warning { font-weight: bold; color: #550000; border: solid; padding: 1em; margin: 1em; margin-left: 10%; margin-right: 10%; } .contents { margin-left: -5%; margin-right: -5%; background-color: #eeeeee; padding: 0.5em; padding-left: 1em; padding-right: 1em; } .options { text-align: left; width: 100%; } .options-heading { font-weight: bold; } .pullout { font-weight: bold; text-align: center; font-family: Georgia, Arial, sans-serif; } From anadelonbrin at users.sourceforge.net Sun Jan 16 23:10:24 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:10:27 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/docs .cvsignore, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8192/Outlook2000/docs Added Files: .cvsignore Log Message: Ignore autogenerated. --- NEW FILE: .cvsignore --- outlook-defaults.ini spambayes-defaults.ini outlook-options.html spambayes-options.html From anadelonbrin at users.sourceforge.net Sun Jan 16 23:12:01 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:12:04 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/docs setup.py,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8581/Outlook2000/docs Added Files: setup.py Log Message: A simple script that generates documentation for the configuration options. This means we can just re-run this when we do a release and don't need to worry (much) about keeping the documentation sync'd with the code. --- NEW FILE: setup.py --- #!/usr/bin/env python """setup.py Generate any dynamic documentation for the Outlook plug-in. Typically, this involves options that can be set - dynamic generation means that the information needs only be updated in one central location, and the documentation can still stay up-to-date. """ # 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. __author__ = "Tony Meyer " __credits__ = "All the spambayes folk." import os import sys # Fix path so we can import from Outlook2000 directory. try: __file__ except NameError: # Create __file__ for Python 2.2 __file__ = sys.argv[0] # Fix __file__ for Python 2.2 & 2.3 __file__ = os.path.abspath(__file__) sys.path.append(os.path.dirname(os.path.dirname(__file__))) import config from spambayes.Options import defaults from spambayes.OptionsClass import OptionsClass from spambayes.OptionsClass import PATH, INTEGER, REAL, HEADER_NAME # Replace common regexes with human-readable names. # If the value is None, then skip those options, as they are not # human-editable. nice_regex_names = {PATH : "Filename", INTEGER : "Whole number", REAL : "Number", HEADER_NAME : "Email Header Name", config.FOLDER_ID : None, config.FIELD_NAME : "Alphanumeric characters", } table_header = """ Available options
    Logo  

    Available options

    """ def main(): outlook_config = config.CreateConfig() spambayes_config = OptionsClass() spambayes_config.load_defaults(defaults) # Create HTML pages that outline the available options. for fn, o, sects in [("outlook-options.html", outlook_config, ("General", "Filter", "Training", "Notification")), ("spambayes-options.html", spambayes_config, ("Tokenizer", "General", "Classifier", "Storage"))]: f = open(fn, "w") f.write(table_header) for sect in sects: f.write(' \n') opts = o.options_in_section(sect) opts.sort() for opt_name in opts: opt = o.get_option(sect, opt_name) # Skip experimental and deprecated. if opt_name.startswith("x-"): continue # Replace regex's with readable descriptions. if opt.allowed_values in nice_regex_names: replacement = nice_regex_names[opt.allowed_values] if replacement is None: continue opt.allowed_values = (replacement,) f.write(opt.as_documentation_string(sect)) f.write('\n') f.write("
    Section Option Name Valid Values Default Comments
    \n") f.close() # Create pre-filled configuration files with comments. for fn, o in (("outlook-defaults.ini", outlook_config), ("spambayes-defaults.ini", spambayes_config)): f = open(fn, "w") f.write(o.display(add_comments=True)) f.close() if __name__ == "__main__": main() From anadelonbrin at users.sourceforge.net Sun Jan 16 23:13:00 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:13:04 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/docs configuration.html, 1.10, 1.11 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8853/Outlook2000/docs Modified Files: configuration.html Log Message: Use the dynamically generated pages. General tidy-up and update. Describe both the Outlook and general SpamBayes configuration pages. Use the stylesheet. Index: configuration.html =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/docs/configuration.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** configuration.html 1 Oct 2004 14:31:35 -0000 1.10 --- configuration.html 16 Jan 2005 22:12:56 -0000 1.11 *************** *** 5,274 **** content="text/html; charset=ISO-8859-1"> SpamBayes Configuration ! !

    SpamBayes Configuration

    !
    ! Many SpamBayes configuration options are managed via the SpamBayes ! manager, available from the SpamBayes toolbar item.  While this ! dialog allows you to configure standard options, there are a number of ! other options that can be set manually.
    !
    ! WARNING: Please read the ! following before going any further.
    !
      !
    • To change these options, you will need to use a text editor to ! edit the main SpamBayes configuration file.  If something goes ! wrong here, you may lose your existing SpamBayes configuration.  ! Taking a copy of any files you edit is recommended.
    • !
    • SpamBayes stores all configuration options, including the list of ! folders, in this file.  Do NOT change anything you don't ! understand.  Some of these lines are extremely long - please ! ensure they remain as a single line.
      !
    • !
    • Before manually changing any configuration files, please ensure ! you have shut down Outlook - otherwise the configuration changes you ! have made will be lost if SpamBayes itself automatically saves its ! configuration.
    • !
    ! If you have any further questions, please post them to the SpamBayes ! mailing list.
    !

    About SpamBayes configuration files

    ! SpamBayes configuration options are stored in the directory \Documents and ! Settings\{username}\Application ! Data\SpamBayes\{outlook-profile-name}.ini.  Note that the ! name of the file depends on the name of your current Outlook profile; ! if you use Outlook in Internet Only mode, then the profile is generally ! named Microsoft Outlook Internet ! Settings.  This file is a standard text file, and can be ! edited with any text editor.
    !
    ! A configuration file has a number of sections, and each section ! contains a number of named values.  For example, you will find the ! following excerpt in your INI file:
    !
    [Filter]
    !
    enabled:True
    ! This defines a section named Filter, ! with value enabled set to ! value True.  The valid ! section names, value names and valid values depends on the ! option.  Note that in some cases, we will refer to options being ! in a certain section, but when you check your INI file, you will find ! no such section defined.  In this case, simply add the section ! header, and any values manually.  For example, it will not be ! uncommon for you to add a line
    !
    [General]
    ! if you need to set options in this section, as by default, your INI ! file ! will have no such section.
    !

    Additional Options

    ! The following options are supported in this version
    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! -
    Section
    !
    Option Name
    !
    Valid Values
    !
    Default
    !
    Comments
    !
    [Filter]
    !
    spam_mark_as_read
    !
    True, False
    !
    FalseDetermines if spam messages are ! marked as 'Read' as they are filtered.  This can be set to 'True' ! if the new-mail icon bothers you when the only new items are ! spam.  It can be set to 'False' if you use the 'read' state of ! these messages to determine which items you are yet to review.
    !
    [Filter]
    !
    unsure_mark_as_read
    !
    True, False
    !
    False
    !
    Determines if unsure messages ! are marked as 'Read' as they are filtered.  ! See 'spam_mark_as_read' for more details.
    [Filter]
    !
    save_spam_info
    !
    True, False
    !
    True
    !
    Determines if the spam score and ! other information be saved in ! each message as it is ! filtered or scored.  Note that if this option is disabled, then ! the Not Spam ! function may recover messages back to the Inbox rather than the folder ! it was filtered on (as the originating folder is part of the spam ! information saved.)
    !
    [General]
    !
    field_score_name
    !

    !
    Spam
    !
    The name of the field used by ! SpamBayes to record spam scores.  This should only be changed if ! you know what you are doing.
    !
    [General]
    !
    delete_as_spam_message_state
    !
    None, Read, Unread
    !
    None
    !
    Determines how to set the "Read" ! state of a message as they are manually managed by the "Spam" ! button.  By default, the 'Read' state of the message is not ! changed, but this allows you to explicitly change it to either 'read' ! or 'unread'.  Note that even if you set new messages to Read, the new mail icon in the ! taskbar does still indicates there is new mail.
    !
    [General]
    !
    recover_from_spam_message_state
    !
    None, Read, Unread
    !
    None
    !
    Determines how to set the "Read" ! state of a message as they are ! manually managed by the "Not Spam" button.  By default, ! the ! 'Read' state of the message is not changed, but this allows you to ! explicitly change it to either 'read' or 'unread'.  See the notes ! about the new mail icon above.
    !
    [General]
    !
    data_directory
    !

    !

    !
    The directory where SpamBayes ! will save its database and primary configuration file.  This ! directory name should not be enclosed in quotes, but can include spaces ! and extended characters (in which case the default windows encoding is ! assumed).  This can ! only be set in the 'early' configuration files - see below.
    !
    [General]
    !
    verbose
    !
    Number
    !
    0
    !
    The level of debug output ! generated by the program.  This output is written to the standard ! log for the application - see the troubleshooting ! guide for information on locating the log.
    !
    !
    !

    Experimental Configuration Options

    ! There are a special class of configuration options, which the SpamBayes ! developers have classified experimental.  By default, all ! experimental features will be disabled.  If you enable any ! experimental features, you do so at your own risk - these features are ! experimental for a reason (but they will generally work OK assuming ! they are listed here)
    !
    ! All experimental options are in the special [Experimental] section of your ! configuration file. Be aware that these experimental features may ! change, or be removed ! completely in later versions.  If the feature is kept for later ! versions, the configuration options will ! be moved out of the ! [Experimental] section into a ! more appropriate one, so you will need ! to change these options later. !
    !
    ! This release has no experimental options.
    !

    Multiple Configuration Files

    ! There is rudimentary support for multiple configuration files.  ! The intention of these files is to site administrators can set global ! options for all SpamBayes users.  Only some options make sense to ! store in other configuration files.
    !
    ! All options from all configuration files are "merged".  This means ! that any file can set any option, and as all options files are ! processed, all values are merged.  If multiple configuration files ! specify the same option, the value from the file last merged is ! used.  When SpamBayes writes its configuration during normal ! processing, the entire merged set of options is written.  The end ! result of this means that next time SpamBayes is run, the earlier ! configuration files will have no effect, as the last one loaded (the ! main config file written by SpamBayes) will have all values already.
    !
    ! SpamBayes processes configuration files in the following order:
      !
    • default_configuration.ini ! in the SpamBayes application directory (ie, the directory where the ! application lives).  By default, no such configuration file will ! exist.
    • !
    • default_configuration.ini ! in the directory \Documents and ! Settings\{username}\Application Data\SpamBayes.  By ! default, no such configuration file will exist.
    • !
    • SpamBayes then checks to see if a data_directory has been specified ! in a [General] section.  ! If so, this is used as the SpamBayes data directory - otherwise, the \Documents and ! Settings\{username}\Application Data\SpamBayes directory is used.
    • !
    • {outlook-profile-name}.ini ! in the data directory.  Using the name of the Outlook profile ! means that SpamBayes will work in a multi-profile environment.
    • !
    • The main SpamBayes databases are then loaded from the nominated ! data directory.
    ! --- 5,226 ---- content="text/html; charset=ISO-8859-1"> SpamBayes Configuration + ! ! ! ! ! !
    Logo  
    ! !

    SpamBayes Configuration

    ! !

    Most SpamBayes configuration options are managed via the SpamBayes ! Manager, available from the SpamBayes toolbar. While this dialog allows ! you to configure standard options, there are a number of other ! (typically advanced or experimental) options that can be set manually.

    ! !
    !

    WARNING: Please read the following before going any further:

    !
      !
    • To change these options, you will need to use a text editor to edit ! configuration files. If something goes wrong, you may lose your existing ! SpamBayes configuration (this will not effect your training data). Making ! a copy of any files you edit is recommended.
    • ! !
    • SpamBayes stores all configuration options, including the list of ! folders, in this file. Do not change anything you don't ! understand. Some of these lines are extremely long - please ensure they ! remain as a single line.
    • ! !
    • Before manually changing any configuration files, please ensure you ! have shut down Outlook - otherwise the configuration changes you have made ! will be lost if SpamBayes itself automatically saves its configuration. !
    !
    ! !

    If you have any further questions, please post them to the ! SpamBayes ! mailing list.

    ! ! ! !

    Configuration overview

    ! !

    The Outlook plug-in uses two sets of configurations - one contains ! option values specific to the Outlook plug-in, and the other contains ! option values that are also used by other SpamBayes applications. It is ! important that you edit the correct file - if you place option values in ! the wrong file, they will have no effect.

    ! !

    All options from all configuration files are "merged". This ! means that any file can set any option. If multiple configuration files ! specify the same option, the value from the file last loaded is used. When ! SpamBayes writes its configuration during normal processing, the entire ! merged set of options is written. The end result of this means that next ! time SpamBayes is run, the earlier configuration files will have no effect, ! as the last one loaded (the main config file written by SpamBayes) will ! have all values already.

    ! !

    Outlook configuration files

    ! !

    The Outlook plug-in looks for configuration files as follows:

    ! !
      !
    1. A file named default_configuration.ini in the bin ! directory in the directory you installed SpamBayes into (by default ! C:\Program Files\SpamBayes). By default, no such configuration ! file will exist.
    2. ! !
    3. A file named default_configuration.ini in a SpamBayes ! directory in the Windows Application Data directory (e.g. with ! Windows XP this is ! \Documents and Settings\{username}\Application Data\SpamBayes). ! By default, no such configuration file will exist. This is the ! default SpamBayes data ! directory.
    4. ! !
    5. A file named {outlook-profile-name}.ini in the ! data directory. ! Using the name of the Outlook profile means that SpamBayes will work in a ! multi-profile environment.
    6. !
    ! !

    General SpamBayes configuration files

    ! !

    The Outlook plug-in looks for configuration files as follows:

    ! !
      !
    1. A file named default_bayes_customize.ini in the bin ! directory in the directory you installed SpamBayes into (by default ! C:\Program Files\SpamBayes).
    2. ! !
    3. A file named default_bayes_customize.ini in a ! SpamBayes directory in the Windows Application Data ! directory (e.g. with Windows XP this is ! \Documents and Settings\{username}\Application Data\SpamBayes). ! By default, no such configuration file will exist.
    4. ! !
    5. A file named {outlook-profile-name}_bayes_customize.ini in the ! data directory. ! Using the name of the Outlook profile means that SpamBayes will work in a ! multi-profile environment. By default, no such configuration file will ! exist.
    6. !
    ! !

    Editing the configuration files

    ! !

    The configuration files are plain text files, and can be edited in any ! text editor (such as Notepad). The format for both the ! Outlook-specific configuration files and the general SpamBayes ! configuration files is the same; only the available options differ.

    ! !

    A configuration file has a number of sections, and each section ! contains a number of named values. For example:

    !
    [Filter]
    ! enabled:True
    ! save_spam_info:False
    ! 
    ! !

    Note that section, option, and (usually) values are all ! case-sensitive. In other words, General is not ! the same as general.

    ! !

    This assigns the value True to an option named ! enabled, and the value False to an option named ! save_spam_info, both in a section named Filter. ! !

    If you want to set an option in a section that doesn't exist in your ! file, just add a line with the section header above the option name. ! Likewise, if you want to set an option in a file that doesn't exist ! (e.g. default_configuration.ini), you will have to create the ! file. Notepad, or any other text editor, can be used to create and ! edit .ini files.

    ! !

    A configuration file pre-filled with all default values (for ! Outlook-specific or ! general SpamBayes) can be used ! as a starting point if you would find that easier.

    ! !

    Available options

    ! !

    You can see a list of Outlook-specific ! options, or a list of general ! SpamBayes options that can be manually set in this release.

    ! !

    Simple example - Outlook

    ! !

    A simple example to move your ! >data directory to ! a new location: C:\New Folder.

    ! !
      !
    1. Close Outlook, so that any changes made will be effective.
    2. !
    3. Look in the table above and see that ! the applicable option is called data_directory, it is in the ! General section.
    4. !
    5. This option needs to be set before the configuration file in the ! data directory is ! loaded (otherwise it is obviously too late), so it can be put in ! C:\Program Files\SpamBayes\bin\default_configuration.ini ! or in the default data directory location. This example will use the ! former.
    6. !
    7. By default this file will not exist, so use Notepad to ! create it.
    8. !
    9. The file only has two lines, like this:
    10. !
      [General]
      ! data_directory: C:\New Folder
      !

      (If more options were being set, the file would be longer.)

      !
    11. Name the file default_configuration.ini and save it in ! C:\Program Files\SpamBayes\bin.

      !
    12. Open Outlook.
    13. !
    14. To check that the new data directory is being used, click the Show ! Data Folder button on the Advanced tab of the main SpamBayes ! Manager dialog. This should open the new data directory ! (C:\New Folder, here).
    15. !
    ! !

    Simple example - SpamBayes

    ! !

    A simple example to enable the "Use Bigrams" option.

    ! !
      !
    1. Close Outlook, so that any changes made will be effective.
    2. !
    3. Look in the table above and see ! that the applicable option is called use_bigrams, it is in the ! Classifier section.
    4. !
    5. This option can be in any configuration file. This example will use ! the default_bayes_customize.ini file in the ! data directory.
    6. !
    7. By default this file will not exist, so use Notepad to ! create it.
    8. !
    9. The file only has two lines, like this:
    10. !
      [Classifier]
      ! use_bigrams: True
      !

      (If more options were being set, the file would be longer.)

      !
    11. Name the file default_bayes_customize.ini and save it in ! the SpamBayes data ! directory.

      !
    12. Open Outlook.
    13. !
    14. This option recommends retraining after enabling it, so do so via ! the Training tab of the SpamBayes Manager.
    15. ! !
    ! From anadelonbrin at users.sourceforge.net Sun Jan 16 23:15:56 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:15:58 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000 manager.py,1.106,1.107 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9583/Outlook2000 Modified Files: manager.py Log Message: Remove migrating the data directory - the need for this predates any of the combined binaries, so should be past now. 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. Index: manager.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/manager.py,v retrieving revision 1.106 retrieving revision 1.107 diff -C2 -d -r1.106 -r1.107 *** manager.py 23 Dec 2004 02:05:14 -0000 1.106 --- manager.py 16 Jan 2005 22:15:53 -0000 1.107 *************** *** 412,419 **** self.data_directory = self.windows_data_directory - # Now we have the data directory, migrate anything needed, and load - # any config from it. - self.MigrateDataDirectory() - # Get the message store before loading config, as we use the profile # name. --- 412,415 ---- *************** *** 425,429 **** # directory (version 0.8 and earlier, we copied the app one to the # user dir - that was a mistake - but supporting a version in that ! # directory wasn't). bayes_option_filenames = [] # data dir last so options there win. --- 421,427 ---- # directory (version 0.8 and earlier, we copied the app one to the # user dir - that was a mistake - but supporting a version in that ! # directory wasn't). We also look for a ! # {outlook-profile-name}_bayes_customize.ini file in the data ! # directory, to allow per-profile customisations. bayes_option_filenames = [] # data dir last so options there win. *************** *** 432,435 **** --- 430,438 ---- if os.path.isfile(look_file): bayes_option_filenames.append(look_file) + look_file = os.path.join(self.data_directory, + self.GetProfileName() + \ + "_bayes_customize.ini") + if os.path.isfile(look_file): + bayes_option_filenames.append(look_file) import_core_spambayes_stuff(bayes_option_filenames) *************** *** 551,579 **** return self.application_directory - def MigrateDataDirectory(self): - # A bit of a nod to save people doing a full retrain. - # Try and locate our files in the old location, and move - # them to the new one. - # Note that this is migrating data for very old versions of the - # plugin (before the first decent binary!). The next time it is - # touched it can die :) - self._MigrateFile("default_bayes_database.pck") - self._MigrateFile("default_bayes_database.db") - self._MigrateFile("default_message_database.pck") - self._MigrateFile("default_message_database.db") - self._MigrateFile("default_configuration.pck") - - # Copy a file from the application_directory to the data_directory. - # By default (do_move not specified), the source file is deleted. - # Pass do_move=False to leave the original file. - def _MigrateFile(self, filename): - src = os.path.join(self.application_directory, filename) - dest = os.path.join(self.data_directory, filename) - if os.path.isfile(src) and not os.path.isfile(dest): - # shutil in 2.2 and earlier don't contain 'move'. - # Win95 and Win98 don't support MoveFileEx. - shutil.copyfile(src, dest) - os.remove(src) - def FormatFolderNames(self, folder_ids, include_sub): names = [] --- 554,557 ---- *************** *** 691,699 **** self.ReportError(msg) ! def LoadConfig(self): ! # Insist on english numeric conventions in config file. ! # See addin.py, and [725466] Include a proper locale fix in Options.py ! import locale; locale.setlocale(locale.LC_NUMERIC, "C") ! profile_name = self.message_store.GetProfileName() # The profile name may include characters invalid in file names. --- 669,673 ---- self.ReportError(msg) ! def GetProfileName(self): profile_name = self.message_store.GetProfileName() # The profile name may include characters invalid in file names. *************** *** 709,722 **** print "* If you work with multiple Outlook profiles, it is recommended" print "* you upgrade - see http://starship.python.net/crew/mhammond""" ! else: ! # xxx - remove me sometime - win32all grew this post 154(ish) ! # binary never released with this, so we can be a little more brutal ! # Try and rename to current profile, silent failure ! try: ! os.rename(os.path.join(self.data_directory, "unknown_profile.ini"), ! os.path.join(self.data_directory, profile_name + ".ini")) ! except os.error: ! pass self.config_filename = os.path.join(self.data_directory, profile_name + ".ini") self.never_configured = not os.path.exists(self.config_filename) --- 683,693 ---- print "* If you work with multiple Outlook profiles, it is recommended" print "* you upgrade - see http://starship.python.net/crew/mhammond""" ! return profile_name + def LoadConfig(self): + # Insist on English numeric conventions in config file. + # See addin.py, and [725466] Include a proper locale fix in Options.py + import locale; locale.setlocale(locale.LC_NUMERIC, "C") + profile_name = self.GetProfileName() self.config_filename = os.path.join(self.data_directory, profile_name + ".ini") self.never_configured = not os.path.exists(self.config_filename) From anadelonbrin at users.sourceforge.net Sun Jan 16 23:17:25 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:17:27 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000 about.html,1.27,1.28 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9904/Outlook2000 Modified Files: about.html Log Message: General tidy-up and update. Use the stylesheet. Index: about.html =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/about.html,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** about.html 22 Dec 2003 03:17:31 -0000 1.27 --- about.html 16 Jan 2005 22:17:22 -0000 1.28 *************** *** 3,8 **** --- 3,10 ---- About SpamBayes + + *************** *** 17,162 ****

    SpamBayes Outlook Plugin

    !

    A spam filter based on statistical ! analysis of ! your personal mail.

    ! If you are new to SpamBayes, see Welcome ! To Spambayes.
    ! If you want to add the Spam field to your Outlook views, follow ! these instructions.
    ! If you need help configuring SpamBayes, see our Configuration Guide.
    ! If you are having problems with SpamBayes, please see the Troubleshooting Guide.
    !

    Other links of interest

    !

    The main SpamBayes project page.
    ! The online SpamBayes FAQ.
    ! How to make a ! donation.
    !

    !

    Tips and Common Problems
    !

    !

    Filtering in the background: ! When Outlook is under load, SpamBayes may occasionally miss some messages (as Outlook doesn't tell us they appeared), and if you use builtin Outlook rules, you may find that occasionally they also fail to filter messages (as both SpamBayes and Outlook ! "fight" over processing the message).  To overcome these problems, ! SpamBayes defaults to filtering new messages in the background.  The enabling or disabling of this feature, and the delay before ! processing new mails can be configured via the SpamBayes Manager's Advanced ! tab.

    !

    Toolbars stop working: Many ! people report that occasionally the toolbars will stop working.  See the troubleshooting guide for more details on how to fix this.

    !

    Toolbars remain after uninstall: ! If you uninstall SpamBayes, the toolbar items will remain when you next ! start Outlook.  You can delete the toolbar by right-clicking on ! it, then selecting Customize.  Our troubleshooting guide has alot more information on toolbars.

    !

    Late Breaking Problems: For ! problems reported since this version of SpamBayes was released, see the ! online frequently ! reported bugs list.
    !

    !

    Viewing and Using the Spam Score Field

    ! A custom property named Spam ! is added to all Outlook messages scored, but Outlook does not allow us ! to automatically add this to your views.  However, you can teach ! Outlook to ! display this field as a column in any table view, like the standard ! Messages view. !

    This takes some work, and has to be done again for every folder in which you want to display a Spam column - typically this will be all ! folders you are filtering, and your Spam and Unsure folders.  ! Perform the following steps
    !

    ! ! ! ! ! ! ! !
    !
      !
    • While looking at an Outlook table view (like Messages), right-click on the line with column headers (From, Subject, To, Received, ...). In the context menu that pops up, click on Field ! Chooser. A box with title Field Chooser pops up.
    • !
    • In the drop-down list at the top of the Field Chooser window, select User Defined Fields
    • !
    • Below the drop-down, you should see a rectangular ! button with a Spam label . ! This should be automatically ! created for all folders managed by the system, but if it does not appear, you will ! need to add it yourself.  To do this, perform the following steps
    • !
        !
      • In the lower left corner of the Field Chooser ! box, ! click New.... A box with title New Field pops up.
      • !
      • In the Name: box, type Spam.
      • !
      • In the Type: dropdown list, select Percent. ! This is the third choice in the dropdown list. Do not ! select any other format -- it won't work.
      • !
      • The Format: select the first entry in the list - ! "Rounded".  The Field Chooser should now look like the first image ! on the right.
        !
      • !
      • Click OK in the New Field box. Now you're back in ! the Field Chooser box, with a new Spam button shown, as the second ! figure shows.
        !
      • !
      !
    • Use your mouse to drag the Spam button to the column header ! position where you want to see the Spam column. You don't have to be precise here -- you can rearrange or resize the column later just by ! dragging it around.
    • !
    • You're done! Close the Field Chooser box.
    • !
    !

    !
    Creating the new field
    !
    !
    ! The Field Chooser after creating the field.
    !
    !
    !
    ! Outlook's standard Automatic Formatting features can also be taught how to access the value of this field; for example, you could tell Outlook to display rows with suspected spam messages in green italic. However, for whatever reason, the Outlook Rules Wizard does not allow creating rules based on user-defined fields. That's why this addin supplies its ! own filtering rules.
    !

    Installing for all users on a machine

    ! By default, SpamBayes will install itself only for the user who ! actually installed it.  If other users log onto the same machine, ! their Outlook installation will not have SpamBayes available.  Even though this is the way SpamBayes is designed, our troubleshooting guide has details ! on how you can change this.
    !
    !

    Your help is needed!

    !

    This is free software.  Please offer any help you are able ! to.  In particular, contributions to this documentation are ! welcome!  If you don't know where to start, please send a mail, indicating any ! skills you may have we could use.
    !
    !

    --- 19,162 ---- +

    SpamBayes Outlook Plugin

    !

    A spam filter based on statistical analysis of your ! personal mail.

    ! !

    If you are new to SpamBayes, see Welcome ! to SpamBayes.

    ! !

    If you want to add the Spam field to your Outlook views, ! follow these instructions.

    ! !

    If you need help configuring SpamBayes, see our ! Configuration Guide.

    ! !

    If you are having problems with SpamBayes, please see the ! Troubleshooting Guide.

    ! !

    Other links of interest

    ! ! ! !

    Your help is needed!

    !

    This is free software. Please offer any help you are able ! to. In particular, contributions to this documentation are ! welcome! If you don't know where to start, please send a mail, indicating any ! skills you may have we could use.

    ! !

    Tips and Common Problems ! !

    Filtering in the background

    !

    When Outlook is under load, SpamBayes may occasionally miss some messages (as Outlook doesn't tell us they appeared), and if you use builtin Outlook rules, you may find that occasionally they also fail to filter messages (as both SpamBayes and Outlook ! "fight" over processing the message). To overcome these problems, ! SpamBayes defaults to filtering new messages in the background. The enabling or disabling of this feature, and the delay before ! processing new mails can be configured via the SpamBayes Manager's ! Advancedtab.

    ! !

    Toolbars stop working

    !

    Many people report that occasionally the toolbars will stop working. See the troubleshooting guide for more details on how to fix this.

    ! !

    Toolbars remain after uninstall

    !

    If you uninstall SpamBayes, the toolbar items will remain when you next ! start Outlook. You can delete the toolbar by right-clicking on it, then ! selecting Customize. Our ! troubleshooting guide has a lot more information on toolbars.

    ! !

    Viewing and Using the Spam Score Field

    !

    A custom property named spam is added to all Outlook messages ! scored, but Outlook does not allow us to automatically add this to your ! views. However, you can teach Outlook to display this field as a column in ! any table view, like the standard Messages view.

    ! !

    This takes some work, and has to be done again for every folder in which you want to display a Spam column - typically this will be all ! folders you are filtering, and your Spam and Unsure folders. Perform the ! following steps:

    ! ! Creating the new field ! !
      !
    • While looking at an Outlook table view (like Messages), right-click on the line with column headers (From, Subject, To, Received, ...). In the context menu that pops up, click on Field ! Chooser. A box with title Field Chooser pops up.
    • ! !
    • In the drop-down list at the top of the Field Chooser window, ! select User Defined Fields.
    • ! !
    • Below the drop-down, you should see a rectangular button with a ! spam label. This should be automatically created for all folders managed by the system, but if it does not appear, you will ! need to add it yourself. To do this, perform the following steps:
    • ! !
        !
      • In the lower left corner of the Field Chooser box, ! click New.... A box with title New Field pops up. !
      • ! ! The Field Chooser after creating the field. ! !
      • In the Name: box, type spam.
      • !
      • In the Type: dropdown list, select Percent. ! This is the third choice in the dropdown list. Do not select any other ! format -- it won't work.
      • !
      • The Format: select the first entry in the list - ! "Rounded". The Field Chooser should now look like the first image ! on the right.
      • !
      • Click OK in the New Field box. Now you're back in ! the Field Chooser box, with a new spam button shown, ! as the second figure shows.
      • !
      ! !
    • Use your mouse to drag the spam button to the column header ! position where you want to see the spam column. You don't have to be precise here -- you can rearrange or resize the column later just by ! dragging it around.
    • ! !
    • You're done! Close the Field Chooser box.
    ! !

    Outlook's standard Automatic Formatting features can also be taught how to access the value of this field; for example, you could tell Outlook to display rows with suspected spam messages in green italic. However, for whatever reason, the Outlook Rules Wizard does not allow creating rules based on user-defined fields. That's why this addin supplies its ! own filtering rules.

    ! !

    Installing for all users on a machine

    !

    By default, SpamBayes will install itself only for the user who ! actually installed it. If other users log onto the same machine, ! their Outlook installation will not have SpamBayes available. Even though this is the way SpamBayes is designed, our troubleshooting guide has details ! on how you can change this.

    ! !

    Late Breaking Problems

    !

    For problems reported since this version of SpamBayes was released, see ! the online ! frequently ! reported bugs list.

    ! From anadelonbrin at users.sourceforge.net Sun Jan 16 23:20:25 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:20:29 2005 Subject: [Spambayes-checkins] spambayes/spambayes OptionsClass.py,1.25,1.26 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10535/spambayes Modified Files: OptionsClass.py Log Message: Add a method to generate documentation for options that suits a HTML documentation file. 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. Index: OptionsClass.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/OptionsClass.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** OptionsClass.py 2 Jun 2004 00:28:35 -0000 1.25 --- OptionsClass.py 16 Jan 2005 22:20:21 -0000 1.26 *************** *** 235,238 **** --- 235,258 ---- return strval + def as_documentation_string(self, section=None): + '''Summarise the option in a format suitable for unmodified + insertion in HTML documentation.''' + strval = [""] + if section is not None: + strval.append("\t[%s]" % (section,)) + strval.append("\t%s" % (self.name,)) + strval.append("\t%s" % \ + ", ".join([str(s) for s in self.valid_input()])) + default = self.default() + if isinstance(default, types.TupleType): + default = ", ".join([str(s) for s in default]) + else: + default = str(default) + strval.append("\t%s" % (default,)) + strval.append("\t%s: %s" \ + % (self.display_name(), self.doc())) + strval.append("\n") + return "\n".join(strval) + def write_config(self, file): '''Output value in configuration file format.''' *************** *** 697,702 **** return all ! def display(self): '''Display options in a config file form.''' output = StringIO.StringIO() keys = self._options.keys() --- 717,723 ---- return all ! def display(self, add_comments=False): '''Display options in a config file form.''' + import textwrap output = StringIO.StringIO() keys = self._options.keys() *************** *** 711,719 **** output.write("]\n") currentSection = sect self._options[sect, opt].write_config(output) return output.getvalue() ! def display_full(self, section=None, option=None): ! '''Display options including all information.''' # Given that the Options class is no longer as nice looking # as it once was, this returns all the information, i.e. --- 732,746 ---- output.write("]\n") currentSection = sect + if add_comments: + doc = self._options[sect, opt].doc() + if not doc: + doc = "No information available, sorry." + doc = re.sub(r"\s+", " ", doc) + output.write("\n# %s\n" % ("\n# ".join(textwrap.wrap(doc)),)) self._options[sect, opt].write_config(output) return output.getvalue() ! def _display_nice(self, section, option, formatter): ! '''Display a nice output of the options''' # Given that the Options class is no longer as nice looking # as it once was, this returns all the information, i.e. *************** *** 724,729 **** # is nothing more than a call to as_nice_string if section is not None and option is not None: ! output.write(self._options[section, ! option.lower()].as_nice_string(section)) return output.getvalue() --- 751,756 ---- # is nothing more than a call to as_nice_string if section is not None and option is not None: ! opt = self._options[section, option.lower()] ! output.write(getattr(opt, formatter)(section)) return output.getvalue() *************** *** 733,739 **** if section is not None and sect != section: continue ! output.write(self._options[sect, opt.lower()].as_nice_string(sect)) return output.getvalue() # These are handy references to commonly used regex/tuples defining # permitted values. Although the majority of options use one of these, --- 760,776 ---- if section is not None and sect != section: continue ! opt = self._options[sect, opt.lower()] ! output.write(getattr(opt, formatter)(sect)) return output.getvalue() + def display_full(self, section=None, option=None): + '''Display options including all information.''' + return self._display_nice(section, option, 'as_nice_string') + + def output_for_docs(self, section=None, option=None): + '''Return output suitable for inserting into documentation for + the available options.''' + return self._display_nice(section, option, 'as_documentation_string') + # These are handy references to commonly used regex/tuples defining # permitted values. Although the majority of options use one of these, From anadelonbrin at users.sourceforge.net Sun Jan 16 23:21:51 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:21:55 2005 Subject: [Spambayes-checkins] website .cvsignore,1.2,1.3 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10787 Modified Files: .cvsignore Log Message: Ignore autogenerated. Index: .cvsignore =================================================================== RCS file: /cvsroot/spambayes/website/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** .cvsignore 23 Jul 2003 15:36:02 -0000 1.2 --- .cvsignore 16 Jan 2005 22:21:49 -0000 1.3 *************** *** 1,2 **** --- 1,3 ---- *.html faq.ht + experimental_options.ht From anadelonbrin at users.sourceforge.net Sun Jan 16 23:22:16 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:22:19 2005 Subject: [Spambayes-checkins] website experimental.ht,NONE,1.1 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10929 Added Files: experimental.ht Log Message: Explain the experimental options available and how to use them. --- NEW FILE: experimental.ht --- Title: SpamBayes: Experimental Options Information. Author-Email: spambayes@python.org Author: SpamBayes

    SpamBayes Experimental Options

    We would like to remind users about our set of experimental options. These are options which we believe may be of benefit to users, but have not been tested throughly enough to warrent full inclusion. We would greatly appreciate feedback from users willing to try these options out as to their perceived benefit. Both source code and binary users (including Outlook) can try these options out.

    If you have any queries about the experimental options, please email spambayes@python.org and we will try and answer them.

    sb_server & sb_imapfilter

    To enable an experimental option, sb_server and sb_imapfilter users should click on the "Experimental Configuration" button on the main configuration page, and select the option(s) they wish to try.

    Outlook

    To enable an experimental option, Outlook plug-in users should open their "Data Directory" (via SpamBayes->SpamBayes Manager->Advanced->Show Data Folder) and open the "default_bayes_customize.ini" file in there (create one with Notepad if there isn't already one). In this file, add the options that you wish to try - for example, to enable searching for "Habeas" headers, add a line with "Tokenizer" and, below that, a line with "x-search_for_habeas_headers:True".

    More information about editing Outlook configuration files can be found by selecting SpamBayes->Help->About->Configuration from within Outlook.

    Available options

    A list of the experimental options that are available in the current release is available, as is a configuration file that is filled out with all experimental options set to their default values.

    From anadelonbrin at users.sourceforge.net Sun Jan 16 23:22:57 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:23:00 2005 Subject: [Spambayes-checkins] website Makefile,1.19,1.20 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11048 Modified Files: Makefile Log Message: Create the experimental_options.ht page. Index: Makefile =================================================================== RCS file: /cvsroot/spambayes/website/Makefile,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Makefile 30 Nov 2004 06:04:24 -0000 1.19 --- Makefile 16 Jan 2005 22:22:54 -0000 1.20 *************** *** 22,25 **** --- 22,27 ---- ') + $(shell python scripts\create_experimental_pages.py) + $(TARGETS): links.h From anadelonbrin at users.sourceforge.net Sun Jan 16 23:23:34 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:23:38 2005 Subject: [Spambayes-checkins] website developer.ht,1.12,1.13 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11181 Modified Files: developer.ht Log Message: Bring more up-to-date. Index: developer.ht =================================================================== RCS file: /cvsroot/spambayes/website/developer.ht,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** developer.ht 9 Jul 2004 00:25:23 -0000 1.12 --- developer.ht 16 Jan 2005 22:23:31 -0000 1.13 *************** *** 6,10 ****

    So you want to get involved?

    Running the code

    !

    This project works with either Python 2.2.3, Python 2.3, or on the bleeding edge of python code, available from CVS on --- 6,10 ----

    So you want to get involved?

    Running the code

    !

    This project works with Python 2.2, Python 2.3, Python 2.4, or on the bleeding edge of python code, available from CVS on *************** *** 14,56 **** the latest email package. You can get this from ! sourceforge (you'll need version 2.4.3 or later).

    The SpamBayes code itself is also available via CVS, or from the download page.

    I just want to make suggestions

    Excellent! Note though, that this project takes a very results-oriented approach to code changes - if the change doesn't produce an improvement in results from various test corpuses, it's not going to get very far.

    Note that a lot of "intuitive" approaches and ideas end up making things worse, not better - it seems that stupid beats smart in many or even most cases.

    There's a bunch of documentation on things that have already been tried available as links from the documentation page.

    So what needs to be done

    !

    In July 2004, the final 1.0 release was made. As a result, there are ! now two focuses. We would like to resolve any outstanding bugs in the 1.0 ! release, so that a 1.0.1 release (containing only bug fixes) can be ! released. At the same time, work has begun on a 1.1 release, which will ! contain much more than just bug releases.

    !

    Each developer has their own pet ideas that they'd like to implement for ! 1.1, but there are a few general areas that you could work on if you're ! stuck for ideas:

    • Internationalisation. A small number of people have expressed interest in translating the SpamBayes documentation and user interfaces ! into other languages. We're very happy for this to happen, but areas ! of the code need to be cleaned up to make this easier (and then there's ! the actual translation work).
    • Database backend. The majority of SpamBayes users use the bsddb support included with Python (a few use a pickled Python dict, and even fewer use the experimental mySQL/postgreSQL support). The bsddb solution is problematic, in that users' databases sometimes get ! corrupted, but we don't know what causes that. The general consensus ! is that (unless a bsddb expert comes along) we should move to an ! alternative database backend - perhaps ZOE/ZODB. Work on this would ! be appreciated by many.
    --- 14,70 ---- the latest email package. You can get this from ! sourceforge ! (you'll need version 2.4.3 or later - version 3.0 or later is recommended).

    +

    The SpamBayes code itself is also available via CVS, or from the download page.

    I just want to make suggestions

    +

    Excellent! Note though, that this project takes a very results-oriented approach to code changes - if the change doesn't produce an improvement in results from various test corpuses, it's not going to get very far.

    +

    Note that a lot of "intuitive" approaches and ideas end up making things worse, not better - it seems that stupid beats smart in many or even most cases.

    +

    There's a bunch of documentation on things that have already been tried available as links from the documentation page.

    So what needs to be done

    !

    1.0 was released in July 2004, and was followed up by a bugfix 1.0.1 ! release in November 2004. We intend to fix as many remaining bugs with the ! 1.0.x branch as is practical and hope to release 1.0.2 towards the end of ! January 2005. This is likely to be the final release in the 1.0.x line, ! unless there are unforeseen problems with the 1.0.2 or 1.1 releases.

    !

    Since May 2004, work has been carried out on a 1.1 release, which ! includes many improvements, as well as bug fixes, compared to the 1.0.x ! branch. We hope to release 1.1a1 for public testing at the end of January ! 2005, to be followed by at least one more alpha, at least one beta, and ! at least one release candidate. We hope that a stable 1.1 release will ! be made in April 2005, although this date is certainly not fixed.

    ! !

    The 1.1 line will be frozen for non-bugfix changes from the first ! beta release (probably early March 2005). Many of the changes desired ! by the developers have been implemented, or partly so, but there is ! still time for further improvement. There is no time limit on ! implementing bug fixes.

    ! !

    Some key work that is in progress for 1.1, which you could assist ! with (particularly in testing) includes:

    • Internationalisation. A small number of people have expressed interest in translating the SpamBayes documentation and user interfaces ! into other languages.
    • Database backend. The majority of SpamBayes users use the bsddb support included with Python (a few use a pickled Python dict, and even fewer use the experimental mySQL/postgreSQL support). The bsddb solution is problematic, in that users' databases sometimes get ! corrupted, but we don't know what causes that. New backends, particularly ! ZODB/ZEO, have been added, and the SQL backends improved.
    • !
    • Improvement in the unit testing suite.
    *************** *** 60,64 ****

    Collecting training data

    One of the tricky problems is collecting a set of data that's ! "good enough". There's a few collections of spam out on the net - note though, that using spam and ham from different sources often leads to the classifier picking up on these clues -- for instance, a different --- 74,78 ----

    Collecting training data

    One of the tricky problems is collecting a set of data that's ! "good enough" There's a few collections of spam out on the net - note though, that using spam and ham from different sources often leads to the classifier picking up on these clues -- for instance, a different From anadelonbrin at users.sourceforge.net Sun Jan 16 23:24:32 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:24:34 2005 Subject: [Spambayes-checkins] website .cvsignore,1.3,1.4 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11478 Modified Files: .cvsignore Log Message: Ignore autogenerated. Index: .cvsignore =================================================================== RCS file: /cvsroot/spambayes/website/.cvsignore,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** .cvsignore 16 Jan 2005 22:21:49 -0000 1.3 --- .cvsignore 16 Jan 2005 22:24:29 -0000 1.4 *************** *** 2,3 **** --- 2,4 ---- faq.ht experimental_options.ht + experimental.ini From anadelonbrin at users.sourceforge.net Sun Jan 16 23:25:53 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:25:57 2005 Subject: [Spambayes-checkins] website/scripts create_experimental_pages.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/website/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11783/scripts Added Files: create_experimental_pages.py Log Message: A script to dynamically generate pages about the available experimental options. --- NEW FILE: create_experimental_pages.py --- #!/usr/bin/env python """create_experimental_pages.py Generate any dynamic documentation for the experimental pages. """ # 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. __author__ = "Tony Meyer " __credits__ = "All the spambayes folk." import re import textwrap from spambayes.Options import defaults from spambayes.OptionsClass import OptionsClass from spambayes.OptionsClass import PATH, INTEGER, REAL, HEADER_NAME # Replace common regexes with human-readable names. # If the value is None, then skip those options, as they are not # human-editable. nice_regex_names = {PATH : "Filename", INTEGER : "Whole number", REAL : "Number", HEADER_NAME : "Email Header Name", r"[\S]+" : "Alphanumeric characters", } table_header = """Title: SpamBayes: Experimental Options. Author-Email: spambayes@python.org Author: SpamBayes

    Available Experimental Options

    """ def main(): options = OptionsClass() options.load_defaults(defaults) # Create HTML page that outline the available options. output = open("experimental_options.ht", "w") keys = options._options.keys() keys.sort() output.write(table_header) for sect, opt_name in keys: doc = options._options[sect, opt_name].doc() if not doc.startswith("(EXPERIMENTAL)"): continue output.write(' \n') opt = options.get_option(sect, opt_name) # Replace regex's with readable descriptions. if opt.allowed_values in nice_regex_names: replacement = nice_regex_names[opt.allowed_values] if replacement is None: continue opt.allowed_values = (replacement,) output.write(opt.as_documentation_string(sect).\ replace("(EXPERIMENTAL) ", "")) output.write('\n') output.write("
    Section Option Name Valid Values Default Comments
    \n\n") output.close() # Create pre-filled configuration file with comments. output = open("experimental.ini", "w") keys = options._options.keys() keys.sort() currentSection = None for sect, opt in keys: doc = options._options[sect, opt].doc() if doc.startswith("(EXPERIMENTAL)"): doc = doc[15:] else: continue if sect != currentSection: if currentSection is not None: output.write('\n') output.write('[') output.write(sect) output.write("]\n") currentSection = sect if not doc: doc = "No information available, sorry." doc = re.sub(r"\s+", " ", doc) output.write("\n# %s\n" % ("\n# ".join(textwrap.wrap(doc)),)) options._options[sect, opt].write_config(output) output.close() if __name__ == "__main__": main() From anadelonbrin at users.sourceforge.net Sun Jan 16 23:09:39 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun Jan 16 23:56:06 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/docs troubleshooting.html, 1.26, 1.27 welcome.html, 1.10, 1.11 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7920/Outlook2000/docs Modified Files: troubleshooting.html welcome.html Log Message: General tidy-up and updating, and change to use the stylesheet. Index: troubleshooting.html =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/docs/troubleshooting.html,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** troubleshooting.html 9 Jan 2005 23:08:24 -0000 1.26 --- troubleshooting.html 16 Jan 2005 22:09:34 -0000 1.27 *************** *** 5,14 **** content="text/html; charset=ISO-8859-1"> Troubleshooting the SpamBayes Outlook plugin

    Troubleshooting the SpamBayes Outlook addin

    ! This is a list of common problems, and hopefully their solutions.  ! Please feel free to suggest additional topics.  Currently, we have ! the following problems listed:
    • Toolbar items appear, but fail to work
    • --- 5,29 ---- content="text/html; charset=ISO-8859-1"> Troubleshooting the SpamBayes Outlook plugin + + + + + + + + +
      Logo  
      +

      Troubleshooting the SpamBayes Outlook addin

      ! !

      This is a list of common problems, and hopefully their solutions. ! Please feel free to suggest additional topics. Currently, we have ! the following problems listed:

      ! ! Some other resources that may be useful in tracking down any problems:
      ! If you must send someone a mail about SpamBayes, please ! read this first.
      !
      !

      Toolbar items appear, but fail to work

      ! If the toolbar items fail to work, we are facing one of two problems.
        !
      • The addin has failed to load.  In this case, along with the toolbars failing to work, SpamBayes will not be filtering or scoring ! any messages.  To fix this, see the Addin doesn't load instructions.
      • !
      !
        !
      • If the addin has loaded (ie, is filtering and scoring mail) but the toolbar items don't, we have struck a common problem with the ! toolbars.  Follow the instructions below.
        !
      ! First we will try deleting the toolbar, and if that fails, completely ! reset all Outlook toolbars.  Perform the following steps.
      • Right-click on any Outlook toolbar, and select Customize.
      • !
      • In the dialog that appears, ensure the Toolbars tab is selected, locate ! SpamBayes in the list of ! toolbars, and select it.
      • !
      • Click on the Delete button.  Outlook will ask for ! confirmation that you want to delete the SpamBayes toolbar.  ! Select OK.
      • !
      • Close the customize dialog.  The SpamBayes toolbar no longer ! appear.
      • !
      • Restart Outlook.  SpamBayes will re-create the toolbar.
      ! If all else fails, you can completely reset the Outlook toolbars by ! removing the file \Documents and ! Settings\{username}\Application Data\Microsoft\Outlook\outcmd.dat.  Although this is undocumented by Microsoft, we have never heard reports ! of problems.  If you are paranoid, simply rename this file so that ! you have a copy.  This has solved all toolbar problems for ! everyone who has reported one!
      !

      Addin loads with an error message

      ! In this case, when you start Outlook you receive a message indicating ! that SpamBayes could not be initialized.
      ! This means that SpamBayes has loaded, but struck an error during ! initialization.  If the information in the error message does not ! indicate the nature of the error, please report ! a bug (making sure you attach the log file)
      !

      Addin doesn't load

      ! If you start Outlook but there was no error message, the SpamBayes ! toolbar items do not work and new messages have no Spam score or ! filtering applied, then the plugin has probably become disabled.
        !
      • Check the log file.  If a log file ! for this session exists, then see if it contains an error.  If not, check the date and time of the log - it is probably a log from the ! last time it did work, so is no help to us.  If a log does exist, ! please report a bug.
        !
      • !
      !
      • Check that Outlook shows the addin as enabled.
      • !
      !
          !
        1. Start Outlook, and select Tools->Options to display the main Options ! dialog.
        2. !
        3. Select the tab labeled Other, ! then click on the Advanced ! button.
        4. !
        5. Click on the COM Add-Ins ! button.
        6. If the SpamBayes addin is not listed, then SpamBayes should be ! reinstalled (Note that running regsvr32.exe ! outlook_addin.dll or ! outlook_addin_register.exe from the SpamBayes directory may also ! solve this problem).
        7. If the SpamBayes addin is listed but not checked, then simply ! check it and close the dialog.
        8. !
        !
      !
        !
      • If you are running Outlook XP/2002/2003, ! you may find that if you go back to the dialog, the addin will still be ! unselected.  In this case, perform the following:
      • !
      !
          !
        1. Go to Help->About ! Microsoft Outlook
          !
        2. !
        3. Click the Disabled Items button.
          !
        4. !
        5. Select SpamBayes. 
        6. Click Enable.
        7. Restart Outlook.
      ! If you are running from source code, the addin will not appear in the ! above steps.  Please re-register the ! addin, as per the README.txt file. !
        !
      ! If none of that works, I am stumped! !
        !
          !
        !
      !
        !
      !

      Messages fail to filter

      ! This is when messages arrive, but have no Spam field.  Note that this is ! different from a message having an incorrect or unexpected Spam value - ! that case is covered next.  This is for messages that have a ! completely blank spam score.  To resolve this:
        !
      • Check that filtering is enabled.  Select the SpamBayes ! manager, then ensure the button Enable Filtering is checked.  If ! you are unable to select this button due to insufficient training ! information, please review the initial configuration ! documentation for information on training.
      • If only the occasional message fails to filter, then it is likely ! that the message is in a format we don't understand.  There is ! almost certainly an error listed in the log file.  Please report a bug, attaching both the log file and the message that caused the error.
      • !
      • If all messages fail to filter, we have a more serious problem, ! but again, please report ! a bug, attaching the log ! file.
      !

      Messages have ! incorrect or unexpected Spam values

      ! This is when filtering appears to work OK, except that the spam values ! are wrong.  To resolve this
      • If the messages are all scoring as "unsure", with a score of 0.5, ! then you may have lost your training database.  From the SpamBayes manager dropdown, check ! how many spam and ham have been loaded by the system.  If this ! number is very low (like zero!) then you probably need to perform a ! full ! re-train of your database.
      • If the messages have apparently random, but unexpected scores, ! then there are two possibilities; either SpamBayes is simply behaving ! what appears to be strangely, but really is correctly, or that some of ! the spam payload is invisible to SpamBayes.  In both cases, ! perform ! the following:
        • Ensure the message is selected in the Outlook preview pane, and ! from the SpamBayes manager ! dropdown, select Show Spam clues for ! current message.  This should open a new mail message with ! the clues.
        • !
        • Part of the clues shows the body of the spam message.  If this message correctly shows the spam text, then it is likely SpamBayes ! is behaving correctly.  In this case, you may wish to mail the clues to the SpamBayes mailing list for help in decoding the clues, but it is likely that SpamBayes is behaving correctly given your current ! training data.
          !
        • If it appears that part of the spam payload is missing, then you have probably stumbled across a bug - please mail the clues to the --- 40,205 ----
        • All other problems
        ! !

        Some other resources that may be useful in tracking down any problems: !

        ! ! !

        If you must send someone a mail about SpamBayes, ! please read this first.

        ! !

        Toolbar items appear, but fail to work

        !

        If the toolbar items fail to work, we are facing one of two problems. !

          !
        • The addin has failed to load. In this case, along with the toolbars failing to work, SpamBayes will not be filtering or scoring ! any messages. To fix this, see the Addin doesn't load instructions.
        • !
        • If the addin has loaded (ie, is filtering and scoring mail) but the toolbar items don't, we have struck a common problem with the ! toolbars. Follow the instructions below.
        ! !

        First we will try deleting the toolbar, and if that fails, completely ! reset all Outlook toolbars. Perform the following steps:

        • Right-click on any Outlook toolbar, and select Customize.
        • !
        • In the dialog that appears, ensure the Toolbars tab is ! selected, locate SpamBayes in the list of toolbars, and select it.
        • !
        • Click on the Delete button. Outlook will ask for confirmation that ! you want to delete the SpamBayes toolbar. Select OK.
        • !
        • Close the customize dialog. The SpamBayes toolbar no longer appear. !
        • !
        • Restart Outlook. SpamBayes will re-create the toolbar.
        ! !

        If all else fails, you can completely reset the Outlook toolbars by ! removing the file ! \Documents and Settings\{username}\Application Data\Microsoft\Outlook\outcmd.dat Although this is undocumented by Microsoft, we have never heard reports ! of problems. If you are paranoid, simply rename this file so that you have ! a copy.

        ! !

        Addin loads with an error message

        ! !

        In this case, when you start Outlook you receive a message indicating ! that SpamBayes could not be initialized.

        ! !

        This means that SpamBayes has loaded, but struck an error during ! initialization. If the information in the error message does not indicate ! the nature of the error, please report a bug ! (making sure you attach the log file).

        ! !

        Addin doesn't load

        !

        If you start Outlook but there was no error message, the SpamBayes ! toolbar items do not work and new messages have no spam score or ! filtering applied, then the plugin has probably become disabled.

        !
          !
        • Check the log file. If a log file ! for this session exists, then see if it contains an error. If not, check the date and time of the log - it is probably a log from the ! last time it did work, so is no help to us. If a log does exist, ! please report a bug.
        • Check that Outlook shows the addin as enabled.
        • !

          If you are running from source code, the addin will not appear in the ! steps below. Please re-register the addin, as per the README.txt file.

            !
          1. Start Outlook, and select Options from the Tools ! menu to display the main Options dialog.
          2. !
          3. Select the tab labeled Other, then click on the ! Advanced button.
          4. !
          5. Click on the COM Add-Ins button.
          6. If the SpamBayes addin is not listed, then SpamBayes should be ! reinstalled (Note that running regsvr32.exe outlook_addin.dll ! or bin\outlook_addin_register.exe from the SpamBayes directory ! may also solve this problem).
          7. If the SpamBayes addin is listed but not checked, then simply ! check it and close the dialog.
          8. !
          9. If you are running Outlook XP/2002/2003, ! you may find that if you go back to the dialog, the addin will still be ! unselected. In this case, perform the following:
            1. !
            2. Select About Microsoft Outlook from the Help ! menu.
            3. !
            4. Click the Disabled Items button.
            5. !
            6. Select SpamBayes.
            7. Click Enable.
            8. Restart Outlook.
          !

          If none of that works, please report a bug.

          ! !

          Messages fail to filter

          !

          This is when messages arrive, but have no spam field value. ! Note that this is different from ! a message having an ! incorrect or unexpected spam value. This is for messages that have a ! completely blank spam score. To resolve this:

            !
          • Check that filtering is enabled. Select the SpamBayes Manager, then ! ensure the button Enable Filtering is checked. If you are unable to ! select this button due to insufficient training information, please ! review the initial ! configuration documentation for information on training.
          • If only the occasional message fails to filter, then it is likely ! that the message is in a format we don't understand. There is almost ! certainly an error listed in the log file. Please ! report a bug, attaching both the ! log file and the message that caused the error. !
          • !
          • If all messages fail to filter, we have a more serious problem but ! again, please report a bug, attaching the ! log file.
          ! !

          Messages have ! incorrect or unexpected spam values

          ! !

          This is when filtering appears to work OK, except that the spam values ! are wrong. To resolve this:

          !
          • If the messages are all scoring as "unsure", with a score of 0.5, ! then you may have lost your training database. From the ! SpamBayes Manager dropdown, check how many spam and good ! messages have been loaded by the system. If this number is very low ! (like zero!) then you probably need to perform a full re-train of your ! database.
          • If the messages have apparently random, but unexpected scores, ! then there are two possibilities; either SpamBayes is simply behaving ! what appears to be strangely, but really is correctly, or that some of ! the spam payload is invisible to SpamBayes. In both cases, perform the ! following:
            • Ensure the message is selected in the Outlook preview pane, and ! from the SpamBayes Manager dropdown, select Show Spam clues ! for current message. This should open a new mail message with the ! clues.
            • !
            • Part of the clues shows the body of the spam message. If this message correctly shows the spam text, then it is likely SpamBayes ! is behaving correctly. In this case, you may wish to mail the clues to the SpamBayes mailing list for help in decoding the clues, but it is likely that SpamBayes is behaving correctly given your current ! training data.
            • If it appears that part of the spam payload is missing, then you have probably stumbled across a bug - please mail the clues to the *************** *** 208,416 ****
          !

          Resetting SpamBayes configuration

          ! In some cases, it may become necessary to reset your SpamBayes ! configuration, especially if your configuration becomes invalid.  SpamBayes attempts to detect this situation, but doesn't always get it ! right.  This section details where critical configuration files ! are stored.
          ! SpamBayes stores all configuration data in your data directory.  The ! configuration information is stored in a file called [profile name].ini, where profile name is the name of your ! Microsoft Outlook profile.  The default profile name is usually Outlook ! or Microsoft Outlook  Internet ! Settings, but Outlook can be configured to use any number of ! profiles, with any name.
          ! Note that in this directory, you will also find a file named default_bayes_customize.ini - this ! file is not used to configure ! the Outlook side of SpamBayes - look for any other .ini files in that ! directory.
          ! If you delete the configuration file, SpamBayes will be completely ! reset.  Note you will not lose your training data, only your ! configuration information.  The next time you start Outlook, the SpamBayes configuration wizard should appear, guiding you through the ! configuration process
          ! Your training data is also stored in this directory, but in files with ! a .db extension.  If you ! ever want to delete your training information, remove the two .db files in this directory.
          ! You may like to consider backing up this directory.
          !

          SpamBayes is not available for all ! users on the machine.

          ! When SpamBayes is installed, by default it is available only for the ! user who installed it.  This is to allow SpamBayes to appear in ! Microsoft Outlook's Com-Addin list, and therefore able to be activated ! and de-activated by the user inside Outlook.
          ! It is possible to register the addin so it is available to all users on a particular machine, which can be useful in enterprise arrangements ! where users have 'roaming profiles'
          ! To register SpamBayes in this way, you must log on as a user with permissions to modify the system registry, then execute the command ! (obviously with the correct path substituted):
          !     ! "c:\Program Files\SpamBayes\bin\outlook_addin_register.exe" hkey_local_machine
          ! Note that the double-quotes in the above command are significant (and should be typed). Because "Program Files" has a space in it, you ! must surround the entire command name with quotes. Otherwise, ! you'll get an error something like: !
          'c:\Program' is not recognized as an internal or external command,
          ! operable program or batch file.

          ! If you check the installation log after ! performing such an install, you should see the following messages:
          !     Registered: ! SpamBayes.OutlookAddin
          !     Registration ! complete.
          !     Registration (in ! HKEY_LOCAL_MACHINE) complete.
          ! Note the last line, which does not exist when registration is performed ! only for the current user.  Once you have performed this registration, the Addin will be available for all users - but as noted ! above, it will no longer appear in Outlook's Com-Addin list.
          !

          All other problems

          ! If you are simply unsure about what SpamBayes is doing, please send a ! mail to the SpamBayes mailing ! list ! with as much information as possible.  If you are fairly sure you ! have struck a bug, then please report it.  ! Please do not mail any of the contributors directly.
          !
          !

          Process Descriptions
          !

          ! This explains some of the processes above in more detail.
          !

          Determine your installation type.

          ! If you are running from Python source code, and installed Python, plus ! SpamBayes as separate components, then you are running the source code version.  If you ! downloaded an installer .EXE file, then you are running the binary version.
          !

          Check the log file

          ! Determine your installation type.  If you are running the source code version, then please see README.txt ! in the Outlook2000 directory.
          ! If you are running the binary version, the simplest way to get hold of ! the most recent log is to:
            !
          1. Open the SpamBayes Manager dialog (from the SpamBayes toolbar)
          2. !
          3. Click the Advanced tab.
          4. !
          5. Click the Diagnostics button.
          6. !
          7. Click the View log button.
          ! To find the log manually, you'll need to find your Windows temp directory, ! into which the SpamBayes addin writes the log. This directory is generally ! \WINDOWS\TEMP for Windows 9x, ! or \Documents and ! Settings\{username}\Local ! Settings\Temp for Windows 2000/XP.
          !
          ! Note that by default, in Windows 2000 and XP, Windows Explorer will not ! show the Local Settings ! directory, as it is hidden.  You can convince Windows Explorer to ! show this directory (and therefore allow you to see the Temp directory under it by doing ! either:
            !
          • Select the folder \Documents ! and Settings\{username}.  This directory should be ! reflected in the Address Bar.  In the Address Bar, simply type at ! the end "\Local Settings" (thereby giving that full path name), and ! press Enter.  Explorer ! will then show this folder.
          ! or
            !
          • Select Tools->Folder Options, ! select the View tab, and in ! the list, select Show hidden files ! and folders.  Select OK.  This folder will now be ! visible.  You may like to then reset this option back to the ! default value.
            !
          ! The log file for the ! most recent execution of Outlook is named spambayes1.log, the second most ! recent is named spambayes2.log, ! and so on for the four previous runs.  You can view this file with ! notepad.  Usually, you will simply see ! messages which indicate that SpamBayes is doing its job; however ! in some cases there will be errors in this file.  If there are ! errors, please report a bug.

          If the log file is very large

          ! This probably means that SpamBayes failed to process a large number of ! (or a few, large) emails.  In that case, please perform the ! following steps:
            !
          • Ensure all messages in your watch folders are marked as read
          • !
          • Restart Outlook (use Exit and ! Sign off if it is in your File ! menu)
          • Send yourself a test message, and wait for it to arrive.
          • Exit Outlook.
          ! You should have a new log file containing the error when classifying ! the test message.  If no error occurs processing the test message, ! the previous large log file will still exist (see above).  Either edit the file using a text editor to extract just the error ! information, or zip it up.  If you don't know what that means, ! please send a mail.
          !

          Locating your Data Directory

          ! SpamBayes stores all configuration and database information in a single ! directory.  By default, this directory is located under the user's ! Application Data ! directory.  You can locate this directory by ! using the Show Data Folder ! button on the Advanced tab of ! the main SpamBayes Manager dialog.
          ! If you need to locate it by hand, on ! Windows NT/2000/XP, it will probably be C:\Documents ! and Settings\[username]\Application Data\Spambayes, or on other ! versions of Windows it will probably be C:\Windows\Application Data\Spambayes.  ! Note that the Application Data folder ! may be hidden, so Windows Explorer may not show it by default, but you can enter the path into ! the Address Bar and Explorer will open it.
          ! Note that by modifying the configuration files, you can tell SpamBayes ! to store this data in any directory, so it is possible your data is ! being stored elsewhere - contact your network administrator if this ! appear to be the case.

          Report a bug

          ! All SpamBayes bugs are maintained in this ! page at sourceforge.  Please have a check of the bugs already ! reported to see if your bug has already been reported.  If not, ! open a new bug, making sure to set the Category to Outlook.  Please ensure you ! attach the log file to the bug.
          ! If you are unsure about the bug, or need any assistance, please send a ! mail.
          !
          !

          Send a mail

          ! If all else fails, you may want to send someone a mail.,  Please ! make sure you have read this document thoroughly before doing do.
          ! Your mail should be sent to the SpamBayes ! mailing ! list (spambayes@python.org)  Please ! do not mail any of the contributors directly (see "good karma" ! below).
          ! Please ensure this mail contains:
            !
          • the version of Windows you are using
          • !
          • the version of SpamBayes
          • any log files.
          ! If you also mention that you read this trouble-shooting guide and are ! still stuck, then you will be more likely to get answered!  (And ! if you can subscribe ! to this mailing list and help answer other questions, good karma ! will come your way!)
          !
          --- 207,429 ----
      ! !

      Resetting SpamBayes configuration

      ! !

      In some cases, it may become necessary to reset your SpamBayes ! configuration, especially if your configuration becomes invalid. SpamBayes attempts to detect this situation, but doesn't always get it ! right. This section details where critical configuration files ! are stored - more detailed information is ! also available.

      ! !

      SpamBayes stores all configuration data in ! your data directory. The configuration ! information is stored in a file called [profile name].ini, ! where profile name is the name of your Microsoft Outlook profile. ! The default profile name is usually Outlook or Microsoft ! Outlook Internet Settings, but Outlook can be configured to use any ! number of profiles, with any name.

      ! !

      Note that, in this directory, you may also find a file named ! default_bayes_customize.ini - this file is not ! used to configure the Outlook side of SpamBayes - look for any other .ini ! files in that directory.

      ! !

      If you delete the configuration file, SpamBayes will be completely ! reset. Note you will not lose your training data, only your ! configuration information. The next time you start Outlook, the SpamBayes configuration wizard should appear, guiding you through the ! configuration process

      ! !

      Your training data is also stored in this directory, but in files with ! a .db extension. If you ever want to delete your training ! information, remove the two .db files in this directory.

      ! !

      You may like to consider backing up this directory.

      ! !

      SpamBayes is not available for all ! users on the machine.

      ! !

      When SpamBayes is installed, by default it is available only for the ! user who installed it. This is to allow SpamBayes to appear in ! Microsoft Outlook's COM-Addin list, and therefore able to be activated ! and de-activated by the user inside Outlook.

      ! !

      It is possible to register the addin so it is available to all users on a particular machine, which can be useful in enterprise arrangements ! where users have 'roaming profiles'.

      ! !

      To register SpamBayes in this way, you must log on as a user with permissions to modify the system registry, then execute the command ! (with the correct path substituted):

      ! !

      "c:\Program Files\SpamBayes\bin\outlook_addin_register.exe" hkey_local_machine

      ! !

      Note that the double-quotes in the above command are significant (and should be typed). Because "Program Files" has a space in it, you ! must surround the entire command name with quotes. ! Otherwise, you'll get an error something like:

      ! !

      'c:\Program' is not recognized as an internal or external command, operable program or batch file.

      ! !

      If you check the installation log after ! performing such an install, you should see the following messages:

      ! !

      Registered: SpamBayes.OutlookAddin
      ! Registration complete.
      ! Registration (in HKEY_LOCAL_MACHINE) complete.

      ! !

      Note the last line, which does not exist when registration is performed ! only for the current user. Once you have performed this registration, the Addin will be available for all users - but as noted ! above, it will no longer appear in Outlook's COM-Addin list.

      ! !

      All other problems

      ! !

      If you are simply unsure about what SpamBayes is doing, please ! send a mail to the SpamBayes mailing ! list with as much information as possible. If you are fairly sure you ! have struck a bug, then please report it. ! Please do not mail any of the contributors directly.

      ! !

      Process Descriptions

      ! !

      This explains some of the processes above in more detail.

      ! !

      Determine your installation type.

      ! !

      If you are running from Python source code, and installed Python, plus ! SpamBayes as separate components, then you are running the source code ! version. If you downloaded an installer .exe file, then you are ! running the binary version.

      ! !

      Check the log file

      ! !

      Determine your installation type. If you are running the source code version, then please see README.txt ! in the Outlook2000 directory.

      ! !

      If you are running the binary version, the simplest way to get hold of ! the most recent log is to:

        !
      1. Open the SpamBayes Manager dialog (from the SpamBayes ! toolbar).
      2. !
      3. Click the Advanced tab.
      4. !
      5. Click the Diagnostics button.
      6. !
      7. Click the View log button.
      ! !

      To find the log manually, you'll need to find your Windows temp ! directory, into which the SpamBayes addin writes the log. This directory is ! generally \WINDOWS\TEMP for Windows 95, 98 and ME, or ! \Documents and Settings\{username}\Local Settings\Temp for ! Windows 2000/XP.

      ! !

      Note that by default, in Windows 2000 and XP, Windows Explorer will not ! show the Local Settings directory. You can convince Windows ! Explorer to show this directory (and therefore allow you to see the ! Temp directory under it) by doing either:

        !
      • Select the folder \Documents and Settings\{username}.
      • !

        This directory should be reflected in the Address Bar.

        !
      • In the Address Bar, simply type, at the end, \Local Settings ! (thereby giving the full path name), and press Enter.
      • !

        Windows Explorer will then show this folder.

      !

      or

        !
      • Select Folder Options from the Tools menu.
      • !
      • Select the View tab.
      • !
      • In the list, select Show hidden files and folders.
      • !
      • Select OK.
      • !

        This folder will now be visible. You may like to then reset this ! option back to the default value.

      ! !

      The log file for the most recent execution of Outlook is named ! spambayes1.log, the second most recent is named ! spambayes2.log, and so on for the four previous runs. You can view ! this file with Notepad. Usually, you will simply see messages ! which indicate that SpamBayes is doing its job; however in some cases there ! will be errors in this file. If there are errors, please ! report a bug.

      !

      If the log file is very large

      ! !

      This probably means that SpamBayes failed to process a large number of ! (or a few, large) emails. In that case, please perform the following steps: !

        !
      • Ensure all messages in your watch folders are marked as read.
      • !
      • Restart Outlook (use Exit and Sign off if it is in your ! File menu)
      • Send yourself a test message, and wait for it to arrive.
      • Exit Outlook.
      ! !

      You should have a new log file containing the error when classifying ! the test message. If no error occurs processing the test message, ! the previous large log file will still exist (see above). Either edit the file using a text editor to extract just the error ! information, or zip it up. If you don't know what that means, ! please send a mail.

      ! !

      Locating your Data Directory

      ! !

      SpamBayes stores all configuration and database information in a single ! directory. By default, this directory is located under the user's ! Application Data directory. You can locate this directory by ! using the Show Data Folder button on the Advanced tab of ! the main SpamBayes Manager dialog.

      ! !

      If you need to locate it by hand, on Windows NT/2000/XP, it will ! probably be ! C:\Documents and Settings\{username}\Application Data\Spambayes, ! or on other versions of Windows it will probably be ! C:\Windows\Application Data\Spambayes.Note that the ! Application Data folder may be hidden, so Windows Explorer may not show it by default, but you can enter the path into ! the Address Bar and Explorer will open it.

      ! !

      Note that by modifying the configuration ! files, you can tell SpamBayes to store this data in any directory, so ! it is possible your data is being stored elsewhere - contact your network ! administrator if this appears to be the case. !

      Report a bug

      ! !

      All SpamBayes bugs are maintained in on a ! page at sourceforge. Please have a check of the bugs already ! reported to see if your bug has already been reported. If not, ! open a new bug, making sure to set the Category to Outlook. Please ! ensure you attach the log file to the bug.

      ! !

      If you are unsure about the bug, or need any assistance, please ! send a mail.

      ! !

      Send a mail

      ! !

      If all else fails, you may want to send someone a mail. Please ! make sure you have read this document thoroughly before doing do.

      ! !

      Your mail should be sent to the ! SpamBayes mailing list ! (spambayes@python.org). Please do not mail any of the ! contributors directly! (see "good karma" below).

      ! !

      Please ensure this mail contains:

        !
      • the version of Windows you are using,
      • !
      • the version of SpamBayes,
      • any log files.
      ! !

      If you also mention that you read this trouble-shooting guide and are ! still stuck, then you will be more likely to get answered! (And ! if you can ! subscribe ! to this mailing list and help answer other questions, and good karma ! will come your way!)

      Index: welcome.html =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/docs/welcome.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** welcome.html 1 Oct 2004 14:31:35 -0000 1.10 --- welcome.html 16 Jan 2005 22:09:34 -0000 1.11 *************** *** 5,12 **** content="text/html; charset=ISO-8859-1"> Welcome To SpamBayes ! -
      Logo Welcome To SpamBayes + ! ! -
      Logo

      Welcome to SpamBayes

      SpamBayes is an Outlook plugin that provides a spam filter based on ! statistical analysis of ! your personal mail. Unlike many other spam detection systems, ! SpamBayes ! actually learns what you consider spam, and continually adapts as both ! your regular email and spam patterns change.

      When you first start Outlook after SpamBayes has been installed, the SpamBayes Installation Wizard will appear. This Wizard will guide --- 18,30 ---- style="width: 78px; height: 77px;">

      +

      Welcome to SpamBayes

      +

      SpamBayes is an Outlook plugin that provides a spam filter based on ! statistical analysis of your personal mail. Unlike many other spam ! detection systems, SpamBayes actually learns what you consider spam, and ! continually adapts as both your regular email and spam patterns change.

      !

      When you first start Outlook after SpamBayes has been installed, the SpamBayes Installation Wizard will appear. This Wizard will guide *************** *** 32,138 **** information which will help make SpamBayes effective from the first time you use it.

      Please remember that this is free software; please be patient, and note that there are plenty of things to improve. There are ways you can help, even if you aren't a programmer - you could help with ! this documentation, or make a donation, or ! any number of other ways - please see the main project ! page for information. The list of Frequently Asked Questions ! may also answer some of yours.

      For more information on SpamBayes, including links to the rest of ! the documentation, see About SpamBayes.

      !

      Training

      ! SpamBayes has no builtin ! rules, so anything you consider spam will be treated as spam by this ! system, even if it does not conform to the traditional definitions of ! spam. This means that SpamBayes requires training before it will be ! effective. There are two ways that this training can be done:
      • Allow SpamBayes to learn as it goes. Initially, SpamBayes ! will consider all mail items unsure, ! and each item will be used to ! train. In this scenario, SpamBayes will take some time to become ! effective. It will rarely make mistakes, but will continue to be ! unsure about items until the training information grows.
        !
      • Pre-sorting mail into two folders; one containing only examples ! of good messages, and another containing only examples of spam. ! SpamBayes will then process all these messages gathering the clues it ! uses to filter mail. Depending on how many messages you train ! on, SpamBayes will be immediately effective at correctly classifying ! your mail.

      The Installation Wizard will guide you through these options.

      It is important to note that even when SpamBayes has little training information, it rarely gets things wrong - the worst it generally does ! is to classify a message as unsure. ! However, as mentioned, the more training information SpamBayes has, the ! less it is unsure about new messages. See using the plugin below ! for more information.

      !

      Using the Plugin

      ! SpamBayes Toolbar !

      This section describes how the ! plugin operates once it is configured. You can access the SpamBayes features from the SpamBayes toolbar (shown ! to the right), but ! in general, SpamBayes will simply and silently filter your mail.

      !

      As messages arrive, they are given a spam score. This score is ! the measure of how "spammy" the system has decided a mail is, with 100% ! being certain spam, and 0% meaning the message is certainly not spam. The SpamBayes addin uses these scores to classify mail into ! one of three categories - ! certain spam, unsure, and good messages. ! Good messages are often ! known in the anti-spam community as ham.

      !

      Mail that is classified as good is never touched by this plugin - ! they ! will remain in your inbox, or be filtered normally by Outlook's builtin ! rules. Mail that is classified as either unsure or certain spam ! is moved into different folders for future review.

      !

      Outlook does not allow us to automatically add the spam score to your Outlook folder ! views - but you can do it ! manually by following these instructions.
      !

      ! There are three ways in which the system can get things wrong:
        !
      • A spam stays in your inbox. This is known as a false negative. In this case ! you can either drag the message to the Spam folder or click on the ! Spam button on the Outlook ! toolbar. In both cases, the message will be trained as spam and ! will be moved to the spam folder.
      • Any message is moved to the unsure folder. In this case, ! the system is simply unsure about the message, and moves it to the ! possible spam folder for human review. All unsure messages should ! be manually classified; good messages can either be dragged back to the ! inbox, or have the Not Spam ! toolbar button clicked, while spam messages can either be dragged to ! the ! Spam folder or have the Spam ! toolbar button (shown above) clicked. In all cases, the system ! will ! automatically ! be trained appropriately.
      • !
      • A wanted (ham) message is moved to the Spam folder. This is known ! as a false positive. In ! this case you can either drag the message back to the folder from which ! it came (generally the inbox), or click on the Not Spam ! button. In ! both cases the message will be trained as good, and moved back to the ! original folder.
      ! Note that in all cases, as you take corrective action on the mail, the system is also trained. This makes it less likely that another ! similar mail will be incorrectly classified in the future.
      !
      !
      --- 33,133 ---- information which will help make SpamBayes effective from the first time you use it.

      +

      Please remember that this is free software; please be patient, and note that there are plenty of things to improve. There are ways you can help, even if you aren't a programmer - you could help with ! this documentation, or make a ! donation, or any number of other ways - please see the ! main project page for information. ! The list of Frequently Asked ! Questions may also answer some of yours.

      !

      For more information on SpamBayes, including links to the rest of ! the documentation, see About SpamBayes.

      ! !

      Training

      !

      SpamBayes has no builtin rules, so anything you consider spam will be ! treated as spam by this system, even if it does not conform to the ! traditional definitions of spam. This means that SpamBayes requires ! training before it will be effective. There are two ways that this ! training can be done:

      !
      • Allow SpamBayes to learn as it goes. Initially, SpamBayes ! will consider all mail items unsure, and each item will be used ! to train. In this scenario, SpamBayes will take some time to become ! effective. It will rarely make mistakes, but will continue to be unsure ! about items until the training information grows. This is the ! training technique that we recommend you use.
      • !
      • Pre-sorting mail into two folders; one containing only examples ! of good messages, and another containing only examples of spam. ! SpamBayes will then process all these messages gathering the clues it ! uses to filter mail. Depending on how many messages you train ! on, SpamBayes will be immediately effective at correctly classifying ! your mail.
      +

      The Installation Wizard will guide you through these options.

      +

      It is important to note that even when SpamBayes has little training information, it rarely gets things wrong - the worst it generally does ! is to classify a message as unsure. However, as mentioned, the ! more training information SpamBayes has, the less it is unsure about new ! messages. See using the plugin, below, for more information.

      ! !

      Using the Plugin

      ! SpamBayes Toolbar !

      This section describes how the plugin operates once it is configured. You can access the SpamBayes features from the SpamBayes toolbar (shown ! to the right), but in general, SpamBayes will simply and silently filter ! your mail.

      ! !

      As messages arrive, they are given a spam score. This score is ! the measure of how "spammy" the system has decided a mail is, ! with 100% being certain spam, and 0% meaning the message is certainly not spam. The SpamBayes addin uses these scores to classify mail into ! one of three categories - certain spam, unsure, and good ! messages. Good messages are often known in the anti-spam community as ! ham.

      ! !

      Mail that is classified as good is not touched by this plugin by default ! - they will remain in your inbox, or be filtered normally by Outlook's ! builtin rules. Typically, and by default, mail that is classified as either ! unsure or certain spam is moved into different folders ! for future review.

      ! !

      Outlook does not allow us to automatically add the spam score ! to your Outlook folder views - but you can do ! it manually by following these instructions.

      ! !

      There are three ways in which the system can get things wrong:

        !
      • A spam stays in your inbox. This is known as a false ! negative. In this case you can either drag the message to the spam ! folder or click on the spam button on the Outlook toolbar. ! In both cases, the message will be trained as spam and will be moved to ! the spam folder.
      • !
      • Any message is moved to the unsure folder. In this case, ! the system is simply unsure about the message, and moves it to the ! possible spam folder for human review. All unsure messages should ! be manually classified; good messages can either be dragged back to the ! inbox, or have the Not Spam toolbar button clicked, while spam ! messages can either be dragged to the spam folder or have the ! spam toolbar button (shown above) clicked. In all cases, the ! system will automatically be trained appropriately.
      • ! !
      • A wanted (ham) message is moved to the spam folder. This is known ! as a false positive. In this case you can either drag the ! message back to the folder from which it came (generally the inbox), or ! click on the Not Spam button. In both cases the message will be ! trained as good, and moved back to the original folder.
      ! !

      Note that in all cases, as you take corrective action on the mail, the system is also trained. This makes it less likely that another ! similar mail will be incorrectly classified in the future.

      From anadelonbrin at users.sourceforge.net Mon Jan 17 03:20:23 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 17 03:20:26 2005 Subject: [Spambayes-checkins] website faq.txt,1.84,1.85 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29388 Modified Files: faq.txt Log Message: Add a FAQ with simple instructions for setting up OE. Index: faq.txt =================================================================== RCS file: /cvsroot/spambayes/website/faq.txt,v retrieving revision 1.84 retrieving revision 1.85 diff -C2 -d -r1.84 -r1.85 *** faq.txt 23 Nov 2004 00:12:44 -0000 1.84 --- faq.txt 17 Jan 2005 02:20:18 -0000 1.85 *************** *** 1254,1257 **** --- 1254,1290 ---- + How do I set up SpamBayes and Outlook Express? + ---------------------------------------------- + + 1. Download the latest version of SpamBayes from `the download page`_. + 2. Run the installer - you want "sb_server", not the Outlook plug-in. + 3. Open the SpamBayes configuration page at http://localhost:8880/config (you can do this via the tray application, or just type that address into your browser). + 4. Enter your POP3 server's name in the top box ("Remote Servers"). + 5. Enter "110" (no quotes) in the second box ("SpamBayes ports"). + 6. Tick the "unsure" and "spam" boxes in the "Notate to" option, about halfway down the page. + 7. Click the "Save configuration" button at the end of the page. + 8. Open Outlook Express. + 9. From the "Tools" menu, choose "Accounts". + 10. Select your mail account and click "Properties". + 11. Click the "Servers" tab. + 12. Change the "incoming mail server" from the name of your POP3 server to "localhost" (no quotes). + 13. Click "OK". + 14. Click "Close". + + Everything should now be setup. Try doing a send/receive - mail should + arrive as normal, but any mail that SpamBayes is unsure about will have + 'unsure,' (1.0.x) or 'unsure@spambayes.invalid' (1.1) in the recipient list, and + any mail that SpamBayes thinks is spam will have 'spam,' (1.0.x) or + 'spam@spambayes.invalid' (1.1) in the recipient list. You can use Outlook Express's + Rules Wizard to create rules that automatically move these messages to + other folders. + + If you have any more queries, please look through the rest of this FAQ, + and if you can't find the answer, ask `the mailing list`_. + + .. _the download page: download.html + .. _the mailing list: mailto:spambayes@python.org + + Known Problems & Workarounds ============================ From kpitt at users.sourceforge.net Tue Jan 18 19:23:24 2005 From: kpitt at users.sourceforge.net (Kenny Pitt) Date: Tue Jan 18 19:23:27 2005 Subject: [Spambayes-checkins] spambayes/Outlook2000/dialogs dialog_map.py, 1.48, 1.49 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3369 Modified Files: dialog_map.py Log Message: Oops. The minimum timer values were changed from 0 to 0.4 a little while back because the addin considers zero to be an invalid value. Unfortunately, the change triggers the following assert in EditNumberProcessor. """ # xxx - this wont be right if min <> 0 :( assert self.min_val == 0, "sue me" """ The assert aborts initialization of the Advanced tab in SpamBayes Manager and leaves it in an invalid state, causing a nifty error message box if you even try to leave the tab without editing anything. Until we get a chance to figure out how to make EditNumberProcessor work with non-zero minimum values, I think it's best just to set the minimums back to avoid the error. Index: dialog_map.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/dialog_map.py,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** dialog_map.py 11 Jan 2005 16:23:47 -0000 1.48 --- dialog_map.py 18 Jan 2005 18:23:10 -0000 1.49 *************** *** 524,529 **** IDC_DELAY2_TEXT IDC_DELAY2_SLIDER IDC_INBOX_TIMER_ONLY"""), ! (EditNumberProcessor, "IDC_DELAY1_TEXT IDC_DELAY1_SLIDER", "Filter.timer_start_delay", 0.4, 10, 20, 60), ! (EditNumberProcessor, "IDC_DELAY2_TEXT IDC_DELAY2_SLIDER", "Filter.timer_interval", 0.4, 10, 20, 60), (BoolButtonProcessor, "IDC_INBOX_TIMER_ONLY", "Filter.timer_only_receive_folders"), (CommandButtonProcessor, "IDC_SHOW_DATA_FOLDER", ShowDataFolder, ()), --- 524,529 ---- IDC_DELAY2_TEXT IDC_DELAY2_SLIDER IDC_INBOX_TIMER_ONLY"""), ! (EditNumberProcessor, "IDC_DELAY1_TEXT IDC_DELAY1_SLIDER", "Filter.timer_start_delay", 0, 10, 20, 60), ! (EditNumberProcessor, "IDC_DELAY2_TEXT IDC_DELAY2_SLIDER", "Filter.timer_interval", 0, 10, 20, 60), (BoolButtonProcessor, "IDC_INBOX_TIMER_ONLY", "Filter.timer_only_receive_folders"), (CommandButtonProcessor, "IDC_SHOW_DATA_FOLDER", ShowDataFolder, ()), From anadelonbrin at users.sourceforge.net Thu Jan 20 04:26:00 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 20 04:26:03 2005 Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.18,1.19 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32012 Modified Files: README-DEVEL.txt Log Message: Add a step to building a release to build dynamic documentation. Index: README-DEVEL.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** README-DEVEL.txt 4 Jan 2005 01:53:52 -0000 1.18 --- README-DEVEL.txt 20 Jan 2005 03:25:57 -0000 1.19 *************** *** 543,546 **** --- 543,548 ---- o Get hold of a fresh copy of the source (Windows line endings, presumably). + o Run the setup.up file in the spambayes/Outlook2000/docs directory + to generate the dynamic documentation. o Run sb_server and open the web interface. This gets resourcepackage to generate the needed files. From anadelonbrin at users.sourceforge.net Thu Jan 20 04:37:57 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 20 04:38:01 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_Corpus.py, NONE, 1.1 test_FileCorpus.py, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1916/spambayes/test Added Files: test_Corpus.py test_FileCorpus.py Log Message: Add unit tests for Corpus and FileCorpus modules. --- NEW FILE: test_Corpus.py --- # Test the Corpus module. import sys import time import unittest import sb_test_support sb_test_support.fix_sys_path() from spambayes.Corpus import Corpus, ExpiryCorpus, MessageFactory # We borrow the test messages that test_sb_server uses. from test_sb_server import good1, spam1, malformed1 class simple_msg(object): def __init__(self, key): self._key = key self.creation_time = time.time() self.loaded = False def createTimestamp(self): return self.creation_time def key(self): return self._key def load(self): self.loaded = True class simple_observer(object): # Just want to tell that they have been called, so raise particular # errors. def onAddMessage(self, msg, flags): raise ValueError() def onRemoveMessage(self, msg, flags): raise TypeError() class CorpusTest(unittest.TestCase): def setUp(self): self.factory = MessageFactory() self.cacheSize = 100 self.corpus = Corpus(self.factory, self.cacheSize) def test___init__(self): self.assertEqual(self.corpus.cacheSize, self.cacheSize) self.assertEqual(self.corpus.msgs, {}) self.assertEqual(self.corpus.keysInMemory, []) self.assertEqual(self.corpus.observers, []) self.assertEqual(self.corpus.factory, self.factory) def test_addObserver(self): self.corpus.addObserver(simple_observer()) self.assertRaises(ValueError, self.corpus.addMessage, simple_msg(0)) self.assertRaises(TypeError, self.corpus.removeMessage, simple_msg(1)) def test_addMessage(self): msg = simple_msg(0) self.assertEqual(self.corpus.get(0), None) self.corpus.addMessage(msg) self.assertEqual(self.corpus[0], msg) def test_removeMessage(self): msg = simple_msg(0) self.assertEqual(self.corpus.get(0), None) self.corpus.addMessage(msg) self.assertEqual(self.corpus[0], msg) self.corpus.removeMessage(msg) self.assertEqual(self.corpus.get(0), None) def test_cacheMessage(self): msg = simple_msg(0) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[0], msg) self.assert_(0 in self.corpus.keysInMemory) def test_flush_cache(self): self.corpus.cacheSize = 1 msg = simple_msg(0) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[0], msg) self.assert_(0 in self.corpus.keysInMemory) msg = simple_msg(1) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[1], msg) self.assert_(1 in self.corpus.keysInMemory) self.assert_(0 not in self.corpus.keysInMemory) def test_unCacheMessage(self): msg = simple_msg(0) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[0], msg) self.assert_(0 in self.corpus.keysInMemory) self.corpus.unCacheMessage(msg) self.assert_(0 in self.corpus.keysInMemory) def test_takeMessage(self): other_corpus = Corpus(self.factory, self.cacheSize) msg = simple_msg(0) other_corpus.addMessage(msg) self.assertEqual(self.corpus.get(0), None) self.corpus.takeMessage(0, other_corpus) self.assertEqual(msg.loaded, True) self.assertEqual(other_corpus.get(0), None) self.assertEqual(self.corpus.get(0), msg) def test_get(self): ids = [0, 1, 2] for id in ids: self.corpus.addMessage(simple_msg(id)) self.assertEqual(self.corpus.get(0).key(), 0) def test_get_fail(self): ids = [0, 1, 2] for id in ids: self.corpus.addMessage(simple_msg(id)) self.assertEqual(self.corpus.get(4), None) def test_get_default(self): ids = [0, 1, 2] for id in ids: self.corpus.addMessage(simple_msg(id)) self.assertEqual(self.corpus.get(4, "test"), "test") def test___getitem__(self): ids = [0, 1, 2] for id in ids: self.corpus.addMessage(simple_msg(id)) self.assertEqual(self.corpus[0].key(), 0) def test___getitem___fail(self): ids = [0, 1, 2] for id in ids: self.corpus.addMessage(simple_msg(id)) self.assertRaises(NotImplementedError, self.corpus.__getitem__, 4) def test_keys(self): self.assertEqual(self.corpus.keys(), []) ids = [0, 1, 2] for id in ids: self.corpus.addMessage(simple_msg(id)) self.assertEqual(self.corpus.keys(), ids) def test___iter__(self): self.assertEqual(tuple(self.corpus), ()) msgs = (simple_msg(0), simple_msg(1), simple_msg(2)) for msg in msgs: self.corpus.addMessage(msg) self.assertEqual(tuple(self.corpus), msgs) def test_makeMessage_no_content(self): key = "testmessage" self.assertRaises(NotImplementedError, self.corpus.makeMessage, key) def test_makeMessage_with_content(self): key = "testmessage" content = good1 self.assertRaises(NotImplementedError, self.corpus.makeMessage, key, content) class ExpiryCorpusTest(unittest.TestCase): def setUp(self): class Mixed(Corpus, ExpiryCorpus): def __init__(self, expireBefore, factory, cacheSize): Corpus.__init__(self, factory, cacheSize) ExpiryCorpus.__init__(self, expireBefore) self.factory = MessageFactory() self.cacheSize = 100 self.expireBefore = 10.0 self.corpus = Mixed(self.expireBefore, self.factory, self.cacheSize) def test___init___expiry(self): self.assertEqual(self.corpus.expireBefore, self.expireBefore) def test_removeExpiredMessages(self): # Put messages in to expire. expire = [simple_msg(1), simple_msg(2)] for msg in expire: self.corpus.addMessage(msg) # Ensure that we don't expire the wrong ones. self.corpus.expireBefore = 0.25 time.sleep(0.5) # Put messages in to not expire. not_expire = [simple_msg(3), simple_msg(4)] for msg in not_expire: self.corpus.addMessage(msg) # Run expiry. self.corpus.removeExpiredMessages() # Check that expired messages are gone. for msg in expire: self.assertEqual(msg in self.corpus, False) # Check that not expired messages are still there. for msg in not_expire: self.assertEqual(msg in self.corpus, True) def suite(): suite = unittest.TestSuite() clses = (CorpusTest, ExpiryCorpusTest, ) for cls in clses: suite.addTest(unittest.makeSuite(cls)) return suite if __name__=='__main__': sb_test_support.unittest_main(argv=sys.argv + ['suite']) --- NEW FILE: test_FileCorpus.py --- # Test the FileCorpus module. import os import sys import time import gzip import errno import unittest import sb_test_support sb_test_support.fix_sys_path() from spambayes import storage from spambayes.FileCorpus import ExpiryFileCorpus from spambayes.FileCorpus import FileCorpus, FileMessage, GzipFileMessage from spambayes.FileCorpus import FileMessageFactory, GzipFileMessageFactory # We borrow the test messages that test_sb_server uses. from test_sb_server import good1, spam1, malformed1 class _FactoryBaseTest(unittest.TestCase): # Subclass must define a concrete factory. factory = None def test_create_no_content(self): f = self.factory() key = "testmessage" directory = "fctesthamcorpus" msg = f.create(key, directory) self.assertEqual(msg.file_name, key) self.assertEqual(msg.directory, directory) self.assertEqual(msg.loaded, False) def test_create_with_content(self): f = self.factory() key = "testmessage" directory = "fctesthamcorpus" content = good1 msg = f.create(key, directory, content=good1) self.assertEqual(msg.file_name, key) self.assertEqual(msg.directory, directory) self.assertEqual(msg.loaded, True) self.assertEqual(msg.as_string(), good1.replace("\n", "\r\n")) class FileMessageFactoryTest(_FactoryBaseTest): factory = FileMessageFactory def test_klass(self): self.assertEqual(self.factory.klass, FileMessage) class GzipFileMessageFactoryTest(_FactoryBaseTest): factory = GzipFileMessageFactory def test_klass(self): self.assertEqual(self.factory.klass, GzipFileMessage) class _FileCorpusBaseTest(unittest.TestCase): def _setUpDirectory(self, dirname): try: os.mkdir(dirname) except OSError, e: if e[0] != errno.EEXIST: raise def setUp(self): # Make corpus directories. self._setUpDirectory('fctestspamcorpus') self._setUpDirectory('fctesthamcorpus') self._setUpDirectory('fctestunsurecorpus') def _tearDownDirectory(self, dirname): try: flist = os.listdir(dirname) except OSError, e: if e.errno != 3: 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: raise def tearDown(self): self._tearDownDirectory('fctestspamcorpus') self._tearDownDirectory('fctesthamcorpus') self._tearDownDirectory('fctestunsurecorpus') try: os.unlink('fctestmisc.bayes') except OSError, e: if e.errno != 2: raise try: os.unlink('fctestclass.bayes') except OSError, e: if e.errno != 2: raise class _FileMessageBaseTest(_FileCorpusBaseTest): # Subclass must define a concrete message klass, and wrong_klass. klass = None wrong_klass = None def setUp(self): _FileCorpusBaseTest.setUp(self) self.filename = "testmessage" self.directory = "fctestspamcorpus" fn = os.path.join(self.directory, self.filename) try: os.remove(fn) except OSError: pass f = open(fn, "w") self.created_time = time.time() f.write(spam1) f.close() self.msg = self.klass(self.filename, self.directory) # Message of wrong type, to test mixed corpus. self.wrongname = "wrongmessage" def good_as_string(): return good1 wrong_msg = self.wrong_klass(self.wrongname, self.directory) wrong_msg.as_string = good_as_string wrong_msg.store() def tearDown(self): fn = os.path.join(self.directory, self.filename) try: os.remove(fn) except OSError: pass fn = os.path.join(self.directory, self.wrongname) try: os.remove(fn) except OSError: pass _FileCorpusBaseTest.tearDown(self) def test___init__(self): self.assertEqual(self.msg.file_name, self.filename) self.assertEqual(self.msg.directory, self.directory) self.assertEqual(self.msg.loaded, False) def test_as_string(self): self.assertEqual(self.msg.as_string(), spam1.replace("\n", "\r\n")) def test_pathname(self): self.assertEqual(self.msg.pathname(), os.path.join(self.directory, self.filename)) def test_name(self): self.assertEqual(self.msg.name(), self.filename) def test_key(self): self.assertEqual(self.msg.key(), self.filename) def test_createTimestamp(self): timestamp = self.msg.createTimestamp() # As long as they are equal to the nearest second, that will do. self.assertEqual(int(timestamp), int(self.created_time)) def test_remove(self): pathname = os.path.join(self.directory, self.filename) self.assertEqual(os.path.exists(pathname), True) self.msg.remove() self.assertEqual(os.path.exists(pathname), False) def test_remove_not_there(self): pathname = os.path.join(self.directory, self.filename) self.assertEqual(os.path.exists(pathname), True) os.remove(pathname) self.msg.remove() self.assertEqual(os.path.exists(pathname), False) def test_load(self): # Load correct type. self.assertEqual(self.msg.loaded, False) self.msg.load() self.assertEqual(self.msg.loaded, True) self.assertEqual(self.msg.as_string(), spam1.replace("\n", "\r\n")) def test_load_wrong(self): # Load incorrect type. self.msg.file_name = self.wrongname self.assertEqual(self.msg.loaded, False) self.msg.load() self.assertEqual(self.msg.loaded, True) self.assertEqual(self.msg.as_string(), good1.replace("\n", "\r\n")) def test_load_already_loaded(self): # Shouldn't do anything if already loaded. self.msg.file_name = None self.msg.loaded = True # This will raise an error if a load from storage is attempted. self.msg.load() class FileMessageTest(_FileMessageBaseTest): klass = FileMessage wrong_klass = GzipFileMessage def test_store(self): def good_as_string(): return good1 self.msg.as_string = good_as_string self.msg.store() pathname = os.path.join(self.directory, self.filename) f = open(pathname) content = f.read() f.close() self.assertEqual(content, good1) class GzipFileMessageTest(_FileMessageBaseTest): klass = GzipFileMessage wrong_klass = FileMessage def test_store(self): def good_as_string(): return good1 self.msg.as_string = good_as_string self.msg.store() pathname = os.path.join(self.directory, self.filename) f = gzip.open(pathname) content = f.read() f.close() self.assertEqual(content, good1) class FileCorpusTest(_FileCorpusBaseTest): def setUp(self): _FileCorpusBaseTest.setUp(self) self.directory = 'fctesthamcorpus' self.cache_size = 100 self.factory = FileMessageFactory() self.stuff_corpus() self.corpus = FileCorpus(self.factory, self.directory, '?', self.cache_size) def stuff_corpus(self): """Put messages in the corpus""" i = 0 for content in [good1, spam1, malformed1]: self.msg = self.factory.create(str(i), self.directory, content) self.msg.store() i += 1 # Put in a message that won't match the filter. msg = self.factory.create("10", self.directory, good1) msg.store() def test___init__(self): self.assertEqual(self.corpus.directory, self.directory) self.assertEqual(self.corpus.filter, '?') self.assertEqual(self.corpus.cacheSize, self.cache_size) def test_filter(self): self.assertEqual(len(self.corpus.msgs), 3) # Try again, with all messages. self.corpus = FileCorpus(self.factory, self.directory, '*', self.cache_size) self.assertEqual(len(self.corpus.msgs), 4) def test_makeMessage_no_content(self): key = "testmake" self.corpus.makeMessage(key) def test_makeMessage_with_content(self): key = "testmake" content = spam1 msg = self.corpus.makeMessage(key, content) self.assertEqual(msg.key(), key) self.assertEqual(msg.as_string(), content.replace("\n", "\r\n")) def test_addMessage_invalid(self): class msg(object): def key(self): return 'aa' self.assertRaises(ValueError, self.corpus.addMessage, msg()) def test_addMessage(self): msg = self.factory.create("9", 'fctestspamcorpus', good1) self.corpus.addMessage(msg) self.assertEqual(msg.directory, self.directory) fn = os.path.join(self.directory, "9") f = open(fn) content = f.read() f.close() self.assertEqual(content, good1) def test_removeMessage(self): fn = self.msg.pathname() self.assertEqual(os.path.exists(fn), True) self.corpus.removeMessage(self.msg) self.assertEqual(os.path.exists(fn), False) class ExpiryFileCorpusTest(FileCorpusTest): def setUp(self): _FileCorpusBaseTest.setUp(self) self.cache_size = 100 self.directory = 'fctesthamcorpus' self.factory = FileMessageFactory() self.stuff_corpus() self.corpus = ExpiryFileCorpus(1.0, self.factory, self.directory, '?', self.cache_size) def suite(): suite = unittest.TestSuite() clses = (FileMessageFactoryTest, GzipFileMessageFactoryTest, FileMessageTest, GzipFileMessageTest, FileCorpusTest, ExpiryFileCorpusTest, ) for cls in clses: suite.addTest(unittest.makeSuite(cls)) return suite if __name__=='__main__': sb_test_support.unittest_main(argv=sys.argv + ['suite']) From anadelonbrin at users.sourceforge.net Thu Jan 20 04:39:30 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 20 04:39:32 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_sb_dbexpimp.py, 1.3, 1.4 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2321/spambayes/test Modified Files: test_sb_dbexpimp.py Log Message: Add Python 2.2 compat. Index: test_sb_dbexpimp.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_sb_dbexpimp.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** test_sb_dbexpimp.py 22 Nov 2004 00:22:54 -0000 1.3 --- test_sb_dbexpimp.py 20 Jan 2005 03:39:28 -0000 1.4 *************** *** 21,24 **** --- 21,30 ---- from test_sb_server import good1, spam1 + try: + __file__ + except NameError: + # Python 2.2 + __file__ = os.path.abspath(sys.argv[0]) + TEMP_PICKLE_NAME = os.path.join(os.path.dirname(__file__), "temp.pik") TEMP_CSV_NAME = os.path.join(os.path.dirname(__file__), "temp.csv") From anadelonbrin at users.sourceforge.net Thu Jan 20 04:41:41 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 20 04:41:43 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_sb_filter.py, 1.1, 1.2 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2853/spambayes/test Modified Files: test_sb_filter.py Log Message: Add Python 2.2 compat. Index: test_sb_filter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_sb_filter.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** test_sb_filter.py 22 Nov 2004 00:22:55 -0000 1.1 --- test_sb_filter.py 20 Jan 2005 03:41:39 -0000 1.2 *************** *** 24,27 **** --- 24,33 ---- spam1 = email.message_from_string(spam1) + try: + __file__ + except NameError: + # Python 2.2 + __file__ = os.path.abspath(sys.argv[0]) + TEMP_DBM_NAME = os.path.join(os.path.dirname(__file__), "temp.dbm") # The chances of anyone having a file with this name in the test From anadelonbrin at users.sourceforge.net Thu Jan 20 04:42:12 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 20 04:42:15 2005 Subject: [Spambayes-checkins] spambayes/spambayes/test test_stats.py, 1.2, 1.3 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2991/spambayes/test Modified Files: test_stats.py Log Message: Add Python 2.2 compat. Index: test_stats.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/test/test_stats.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** test_stats.py 22 Dec 2004 00:22:26 -0000 1.2 --- test_stats.py 20 Jan 2005 03:42:10 -0000 1.3 *************** *** 462,466 **** s = self._stuff_with_data(False) for line in s: ! self.assert_(' ' not in line) def test_from_date_empty(self): --- 462,466 ---- s = self._stuff_with_data(False) for line in s: ! self.assertEqual(line.find(' '), -1) def test_from_date_empty(self): From anadelonbrin at users.sourceforge.net Thu Jan 20 04:47:45 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 20 04:47:47 2005 Subject: [Spambayes-checkins] spambayes/spambayes Stats.py,1.14,1.15 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4274/spambayes Modified Files: Stats.py Log Message: Correct gettext wrapping of a string. Index: Stats.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Stats.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Stats.py 29 Dec 2004 06:19:38 -0000 1.14 --- Stats.py 20 Jan 2005 03:47:42 -0000 1.15 *************** *** 309,313 **** data = self._CombineSessionAndTotal() ! push(_("Messages classified: %d" % (data["num_seen"],))) if data["num_seen"] == 0: return chunks --- 309,313 ---- data = self._CombineSessionAndTotal() ! push(_("Messages classified: %d") % (data["num_seen"],)) if data["num_seen"] == 0: return chunks From anadelonbrin at users.sourceforge.net Thu Jan 20 04:49:35 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 20 04:49:38 2005 Subject: [Spambayes-checkins] spambayes/spambayes i18n.py,1.2,1.3 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4698/spambayes Modified Files: i18n.py Log Message: Update loading of gettext resources - we have one large .mo for all spambayes apps. Index: i18n.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/i18n.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** i18n.py 21 Dec 2004 23:07:17 -0000 1.2 --- i18n.py 20 Jan 2005 03:49:33 -0000 1.3 *************** *** 38,44 **** --- 38,48 ---- ## DIALOGS ## LC_MESSAGES + ## __init__.py <-- resourcepackage __init__.py + ## ui.html <-- web interface translation ## es_ES <-- specific language/country data. ## DIALOGS <-- resource dialogs ## LC_MESSAGES <-- gettext messages files + ## __init__.py <-- resourcepackage __init__.py + ## ui.html <-- web interface translation ## zn ## zn_TW *************** *** 111,115 **** def _install_gettext(self): """Set the gettext specific environment.""" ! lang = translation("outlook_addin", self.local_dir, self.current_langs_codes, fallback=True) lang.install() --- 115,119 ---- def _install_gettext(self): """Set the gettext specific environment.""" ! lang = translation("messages", self.local_dir, self.current_langs_codes, fallback=True) lang.install() From kpitt at users.sourceforge.net Thu Jan 20 17:01:07 2005 From: kpitt at users.sourceforge.net (Kenny Pitt) Date: Thu Jan 20 17:01:10 2005 Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.19,1.20 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14555 Modified Files: README-DEVEL.txt Log Message: Fix typo. Index: README-DEVEL.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** README-DEVEL.txt 20 Jan 2005 03:25:57 -0000 1.19 --- README-DEVEL.txt 20 Jan 2005 16:01:03 -0000 1.20 *************** *** 543,547 **** o Get hold of a fresh copy of the source (Windows line endings, presumably). ! o Run the setup.up file in the spambayes/Outlook2000/docs directory to generate the dynamic documentation. o Run sb_server and open the web interface. This gets resourcepackage --- 543,547 ---- o Get hold of a fresh copy of the source (Windows line endings, presumably). ! o Run the setup.py file in the spambayes/Outlook2000/docs directory to generate the dynamic documentation. o Run sb_server and open the web interface. This gets resourcepackage From anadelonbrin at users.sourceforge.net Fri Jan 21 05:34:39 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 21 05:34:42 2005 Subject: [Spambayes-checkins] spambayes/spambayes dbmstorage.py,1.12,1.13 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2687/spambayes Modified Files: dbmstorage.py Log Message: Fix [ 1106457 ] bsddb185 has to be covered in dbmstorage.py Index: dbmstorage.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/dbmstorage.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** dbmstorage.py 7 Jan 2005 19:58:37 -0000 1.12 --- dbmstorage.py 21 Jan 2005 04:34:24 -0000 1.13 *************** *** 23,26 **** --- 23,32 ---- return bsddb.hashopen(*args) + def open_db185hash(*args): + """Open a bsddb185 hash.""" + # See [ 1106457 ] bsddb185 has to be covered in dbmstorage.py + import bsddb185 + return bsddb185.hashopen(*args) + def open_gdbm(*args): """Open a gdbm database.""" *************** *** 48,51 **** --- 54,58 ---- "db3hash": open_db3hash, "dbhash": open_dbhash, + "bsddb185": open_db185hash, "gdbm": open_gdbm, } From montanaro at users.sourceforge.net Fri Jan 21 05:41:42 2005 From: montanaro at users.sourceforge.net (Skip Montanaro) Date: Fri Jan 21 05:41:46 2005 Subject: [Spambayes-checkins] spambayes/spambayes tokenizer.py,1.33,1.34 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3790 Modified Files: tokenizer.py Log Message: Work around a bug in the csv module. It will happily write csv files in which the elements contain \r characters but refuses to read them. This has been fixed in Python 2.5 but is still present in 2.3.4 and 2.4.0. It's only a problem for SpamBayes if you use sb_dbexpimp.py to export a database to a csv file then later try to import it. I believe this is the only place that a fix is necessary because \r characters can only appear in tokens generated from the Subject header. Index: tokenizer.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/tokenizer.py,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** tokenizer.py 29 Oct 2004 00:14:42 -0000 1.33 --- tokenizer.py 21 Jan 2005 04:41:40 -0000 1.34 *************** *** 1327,1330 **** --- 1327,1333 ---- if subjcharset is not None: yield 'subjectcharset:' + subjcharset + # this is a workaround for a bug in the csv module in Python + # <= 2.3.4 and 2.4.0 (fixed in 2.5) + x = x.replace('\r', ' ') for w in subject_word_re.findall(x): for t in tokenize_word(w): From anadelonbrin at users.sourceforge.net Mon Jan 24 06:56:52 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 24 06:56:56 2005 Subject: [Spambayes-checkins] spambayes/spambayes dbmstorage.py,1.13,1.14 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10963/spambayes Modified Files: dbmstorage.py Log Message: Add new part of [ 1106457 ] bsddb185 has to be covered in dbmstorage.py (Add open_db185hash to open_best) Index: dbmstorage.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/dbmstorage.py,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** dbmstorage.py 21 Jan 2005 04:34:24 -0000 1.13 --- dbmstorage.py 24 Jan 2005 05:56:37 -0000 1.14 *************** *** 42,46 **** funcs.insert(0, open_dbhash) else: ! funcs = [open_db3hash, open_dbhash, open_gdbm] for f in funcs: try: --- 42,46 ---- funcs.insert(0, open_dbhash) else: ! funcs = [open_db3hash, open_dbhash, open_gdbm, open_db185hash] for f in funcs: try: From anadelonbrin at users.sourceforge.net Tue Jan 25 22:31:28 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 25 22:31:31 2005 Subject: [Spambayes-checkins] spambayes/windows/py2exe README.txt, 1.2, 1.2.4.1 Message-ID: Update of /cvsroot/spambayes/spambayes/windows/py2exe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6170/windows/py2exe Modified Files: Tag: release_1_0-branch README.txt Log Message: Backport instructions update. Index: README.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/py2exe/README.txt,v retrieving revision 1.2 retrieving revision 1.2.4.1 diff -C2 -d -r1.2 -r1.2.4.1 *** README.txt 3 Oct 2003 00:06:56 -0000 1.2 --- README.txt 25 Jan 2005 21:31:23 -0000 1.2.4.1 *************** *** 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 Tue Jan 25 22:45:08 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 25 22:45:11 2005 Subject: [Spambayes-checkins] spambayes CHANGELOG.txt, 1.44.4.7, 1.44.4.8 WHAT_IS_NEW.txt, 1.35.4.4, 1.35.4.5 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9542 Modified Files: Tag: release_1_0-branch CHANGELOG.txt WHAT_IS_NEW.txt Log Message: Final (probably) update for 1.0.2 Index: CHANGELOG.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v retrieving revision 1.44.4.7 retrieving revision 1.44.4.8 diff -C2 -d -r1.44.4.7 -r1.44.4.8 *** CHANGELOG.txt 4 Jan 2005 03:36:14 -0000 1.44.4.7 --- CHANGELOG.txt 25 Jan 2005 21:44:57 -0000 1.44.4.8 *************** *** 3,6 **** --- 3,7 ---- Release 1.0.2 ============= + Tony Meyer 14/01/2005 Try and work around the reasonably common problems with imaplib and OS X. 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 02/01/2005 UserInterface.py: cgi.escape the configuration filename Index: WHAT_IS_NEW.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v retrieving revision 1.35.4.4 retrieving revision 1.35.4.5 diff -C2 -d -r1.35.4.4 -r1.35.4.5 *** WHAT_IS_NEW.txt 10 Jan 2005 22:59:52 -0000 1.35.4.4 --- WHAT_IS_NEW.txt 25 Jan 2005 21:45:00 -0000 1.35.4.5 *************** *** 37,40 **** --- 37,44 ---- 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 From anadelonbrin at users.sourceforge.net Tue Jan 25 23:01:18 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 25 23:01:21 2005 Subject: [Spambayes-checkins] spambayes/spambayes __init__.py, 1.11.4.4, 1.11.4.5 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13233/spambayes Modified Files: Tag: release_1_0-branch __init__.py Log Message: Prepare for 1.0.2 Index: __init__.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/__init__.py,v retrieving revision 1.11.4.4 retrieving revision 1.11.4.5 diff -C2 -d -r1.11.4.4 -r1.11.4.5 *** __init__.py 30 Nov 2004 21:44:55 -0000 1.11.4.4 --- __init__.py 25 Jan 2005 22:00:42 -0000 1.11.4.5 *************** *** 1,3 **** # package marker. ! __version__ = '1.0.1+' --- 1,3 ---- # package marker. ! __version__ = '1.0.2' From anadelonbrin at users.sourceforge.net Tue Jan 25 23:31:35 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 25 23:31:38 2005 Subject: [Spambayes-checkins] website/sigs spambayes-1.0.2.tar.gz.asc, NONE, 1.1 spambayes-1.0.2.zip.asc, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/website/sigs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20491/sigs Added Files: spambayes-1.0.2.tar.gz.asc spambayes-1.0.2.zip.asc Log Message: Add sigs for 1.0.2 source dists. --- NEW FILE: spambayes-1.0.2.tar.gz.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBB9sf/VcUzCvI/cyoRAkwTAKCYv54rSle0z26e5LDZuE9PxwCEwACfQNrN 7C614zGpHN5rukmhtxL2/eU= =zBGt -----END PGP SIGNATURE----- --- NEW FILE: spambayes-1.0.2.zip.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBB9sfoVcUzCvI/cyoRAiRkAJ9fvOvEJ/7DyqfNG+wtVyPknZYaJgCcCpXn P4UeRhrP9EPvxTKzVrn4gVs= =QpJ1 -----END PGP SIGNATURE----- From anadelonbrin at users.sourceforge.net Tue Jan 25 23:49:27 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue Jan 25 23:49:31 2005 Subject: [Spambayes-checkins] spambayes/spambayes Version.py, 1.31.4.5, 1.31.4.6 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24570/spambayes Modified Files: Tag: release_1_0-branch Version.py Log Message: Bump for 1.0.2 Index: Version.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Version.py,v retrieving revision 1.31.4.5 retrieving revision 1.31.4.6 diff -C2 -d -r1.31.4.5 -r1.31.4.6 *** Version.py 23 Nov 2004 03:39:35 -0000 1.31.4.5 --- Version.py 25 Jan 2005 22:49:10 -0000 1.31.4.6 *************** *** 38,48 **** # "description" strings below - they just need to increment # so automated version checking works. ! "Version": 1.01, ! "BinaryVersion": 1.01, "Description": "SpamBayes Outlook Addin", ! "Date": "November 2004", ! "Full Description": "%(Description)s Version 1.0.1 (%(Date)s)", "Full Description Binary": ! "%(Description)s Binary Version 1.0.1 (%(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.02, ! "BinaryVersion": 1.02, "Description": "SpamBayes Outlook Addin", ! "Date": "January 2005", ! "Full Description": "%(Description)s Version 1.0.2 (%(Date)s)", "Full Description Binary": ! "%(Description)s Binary Version 1.0.2 (%(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.01, ! "BinaryVersion": 1.01, "Description": "SpamBayes POP3 Proxy", ! "Date": "November 2004", ! "Full Description": """%(Description)s Version 1.0.1 (%(Date)s)""", "Full Description Binary": ! """%(Description)s Binary Version 1.0.1 (%(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.02, ! "BinaryVersion": 1.02, "Description": "SpamBayes POP3 Proxy", ! "Date": "January 2005", ! "Full Description": """%(Description)s Version 1.0.2 (%(Date)s)""", "Full Description Binary": ! """%(Description)s Binary Version 1.0.2 (%(Date)s)""", # Note this means we can change the download page later, and old # versions will still go to the new page. *************** *** 72,78 **** }, "IMAP Filter" : { ! "Version": 0.5, "Description": "SpamBayes IMAP Filter", ! "Date": "November 2004", "Full Description": """%(Description)s Version %(Version)s (%(Date)s)""", }, --- 72,78 ---- }, "IMAP Filter" : { ! "Version": 0.6, "Description": "SpamBayes IMAP Filter", ! "Date": "January 2005", "Full Description": """%(Description)s Version %(Version)s (%(Date)s)""", }, From anadelonbrin at users.sourceforge.net Wed Jan 26 00:12:21 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 26 00:12:23 2005 Subject: [Spambayes-checkins] spambayes/windows spambayes.iss, 1.15.4.5, 1.15.4.6 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29581/windows Modified Files: Tag: release_1_0-branch spambayes.iss Log Message: Prepare for 1.0.2 Index: spambayes.iss =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v retrieving revision 1.15.4.5 retrieving revision 1.15.4.6 diff -C2 -d -r1.15.4.5 -r1.15.4.6 *** spambayes.iss 23 Nov 2004 04:02:45 -0000 1.15.4.5 --- spambayes.iss 25 Jan 2005 23:11:33 -0000 1.15.4.6 *************** *** 5,11 **** [Setup] ; Version specific constants ! AppVerName=SpamBayes 1.0.1 ! AppVersion=1.0.1 ! OutputBaseFilename=spambayes-1.0.1 ; Normal constants. Be careful about changing 'AppName' AppName=SpamBayes --- 5,11 ---- [Setup] ; Version specific constants ! AppVerName=SpamBayes 1.0.2 ! AppVersion=1.0.2 ! OutputBaseFilename=spambayes-1.0.2 ; Normal constants. Be careful about changing 'AppName' AppName=SpamBayes From anadelonbrin at users.sourceforge.net Wed Jan 26 00:56:19 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 26 00:56:23 2005 Subject: [Spambayes-checkins] website/sigs spambayes-1.0.2.exe.asc, NONE, 1.1 spambayes-1.0.2.tar.gz.asc, 1.1, 1.2 spambayes-1.0.2.zip.asc, 1.1, 1.2 Message-ID: Update of /cvsroot/spambayes/website/sigs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5353/sigs Modified Files: spambayes-1.0.2.tar.gz.asc spambayes-1.0.2.zip.asc Added Files: spambayes-1.0.2.exe.asc Log Message: Add sig for binary and correct ones for sources. --- NEW FILE: spambayes-1.0.2.exe.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBB9tsPVcUzCvI/cyoRAvLvAKDfI+IbudbAnqIT19JSl/3tp+gZcgCgiqXO ReJtC+qS++RbeIR7E/FE5Rs= =cjFt -----END PGP SIGNATURE----- Index: spambayes-1.0.2.tar.gz.asc =================================================================== RCS file: /cvsroot/spambayes/website/sigs/spambayes-1.0.2.tar.gz.asc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** spambayes-1.0.2.tar.gz.asc 25 Jan 2005 22:31:32 -0000 1.1 --- spambayes-1.0.2.tar.gz.asc 25 Jan 2005 23:55:27 -0000 1.2 *************** *** 2,7 **** Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB9sf/VcUzCvI/cyoRAkwTAKCYv54rSle0z26e5LDZuE9PxwCEwACfQNrN ! 7C614zGpHN5rukmhtxL2/eU= ! =zBGt -----END PGP SIGNATURE----- --- 2,7 ---- Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB9tsDVcUzCvI/cyoRAhUBAJ98kwdE1tXNqnHphroZ+/eJbRRaqQCfcAIJ ! QTRS1b/Zn58X8Sd0sSxhKBY= ! =S9SL -----END PGP SIGNATURE----- Index: spambayes-1.0.2.zip.asc =================================================================== RCS file: /cvsroot/spambayes/website/sigs/spambayes-1.0.2.zip.asc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** spambayes-1.0.2.zip.asc 25 Jan 2005 22:31:32 -0000 1.1 --- spambayes-1.0.2.zip.asc 25 Jan 2005 23:55:27 -0000 1.2 *************** *** 2,7 **** Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB9sfoVcUzCvI/cyoRAiRkAJ9fvOvEJ/7DyqfNG+wtVyPknZYaJgCcCpXn ! P4UeRhrP9EPvxTKzVrn4gVs= ! =QpJ1 -----END PGP SIGNATURE----- --- 2,7 ---- Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB9tsLVcUzCvI/cyoRAtIoAJ9k9nEh5HAEkM0yNrr2To0HYTD8YACgwcFd ! 7e89m60XtburXqB2pl+DxZg= ! =cb+6 -----END PGP SIGNATURE----- From anadelonbrin at users.sourceforge.net Wed Jan 26 01:01:27 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 26 01:01:30 2005 Subject: [Spambayes-checkins] website download.ht, 1.30, 1.31 index.ht, 1.36, 1.37 reply.txt, 1.16, 1.17 windows.ht, 1.42, 1.43 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6194 Modified Files: download.ht index.ht reply.txt windows.ht Log Message: Prepare for 1.0.2 Index: download.ht =================================================================== RCS file: /cvsroot/spambayes/website/download.ht,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** download.ht 30 Nov 2004 06:03:35 -0000 1.30 --- download.ht 26 Jan 2005 00:00:34 -0000 1.31 *************** *** 3,17 **** Author: SpamBayes !

      Version 1.0.1 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 ! usable by most people. As time permits, we will endeavour ! to fix any remaining bugs and eventually a 1.0.2 release will be made. ! However, work has now begin on a 1.1 release, which may include many new ! (possibly even exciting!) features. Feedback to spambayes@python.org. !

      You may like to view the release notes ! or the files that make up this release. --- 3,16 ---- Author: SpamBayes !

      Version 1.0.2 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 ! usable by most people; as a result (and since we are hard at work on the ! upcoming 1.1 release) we expect that this will be the last release in the ! 1.0.x line. Feedback to spambayes@python.org. !

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

      --- 48,65 ---- *************** *** 80,84 **** signature(s) (above) and then run this command:

      !
      % gpg --verify spambayes-1.0.1.exe.asc

      Note that you must use the name of the signature file, and you should --- 79,83 ---- signature(s) (above) and then run this command:

      !
      % gpg --verify spambayes-1.0.2.exe.asc

      Note that you must use the name of the signature file, and you should Index: index.ht =================================================================== RCS file: /cvsroot/spambayes/website/index.ht,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** index.ht 25 Nov 2004 06:38:15 -0000 1.36 --- index.ht 26 Jan 2005 00:00:35 -0000 1.37 *************** *** 5,9 ****

      News

      !

      SpamBayes 1.0.1 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.2 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.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** reply.txt 25 Nov 2004 06:38:15 -0000 1.16 --- reply.txt 26 Jan 2005 00:00:35 -0000 1.17 *************** *** 48,53 **** ----------------------------------------------- ! Please ensure that you have the latest version. As of November 25, 2004, ! this is 1.0.1 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 January 27, 2005, ! this is 1.0.2 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.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** windows.ht 25 Nov 2004 06:38:15 -0000 1.42 --- windows.ht 26 Jan 2005 00:00:35 -0000 1.43 *************** *** 11,17 ****

      Latest Release

      !

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

      --- 11,17 ----

      Latest Release

      !

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

      *************** *** 73,78 ****

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

      --- 73,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 Wed Jan 26 05:18:55 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 26 05:18:59 2005 Subject: [Spambayes-checkins] website faq.txt,1.85,1.86 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15963 Modified Files: faq.txt Log Message: Add a FAQ about the common Outlook display refresh problem. Index: faq.txt =================================================================== RCS file: /cvsroot/spambayes/website/faq.txt,v retrieving revision 1.85 retrieving revision 1.86 diff -C2 -d -r1.85 -r1.86 *** faq.txt 17 Jan 2005 02:20:18 -0000 1.85 --- faq.txt 26 Jan 2005 04:18:42 -0000 1.86 *************** *** 1479,1482 **** --- 1479,1509 ---- + Messages don't move after clicking until I change folder + -------------------------------------------------------- + + This applies to users of the Outlook plug-in and Exchange: what you will + see is that if you click the "Delete As Spam" or "Recover From Spam" + button the message won't move until you refresh the Outlook display in some + manner (change folder, select another item, etc). + + Actually, the message is moved immediately - it's the Outlook display that + doesn't get updated, so it just looks like the message hasn't moved. + + We believe that this is an Outlook problem that we are triggering (but + we do not know of any way to work around it. Please let us know if you + have more information than we do!). If you are using Exchange 2003 you + can enable 'cached mode' and that typically fixes it. + + We suspect that this applies to particular combinations of Outlook and + Exchange versions. It seems to be newer versions of Outlook (earliest + seen so far is Outlook 2002 SP2) that are affected. + + For the moment, it appears that this is a problem with Outlook, and that + the most likely solution will be in an update to Outlook from Microsoft. + + Please don't report this as a new bug. However, if you have any additional + information about this situtation, we would love to hear it. + + Development =========== From anadelonbrin at users.sourceforge.net Wed Jan 26 23:46:54 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 26 23:46:56 2005 Subject: [Spambayes-checkins] spambayes/windows spambayes.iss, 1.15.4.6, 1.15.4.7 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11985/windows Modified Files: Tag: release_1_0-branch spambayes.iss Log Message: Build with Python 2.4, not 2.3. Index: spambayes.iss =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v retrieving revision 1.15.4.6 retrieving revision 1.15.4.7 diff -C2 -d -r1.15.4.6 -r1.15.4.7 *** spambayes.iss 25 Jan 2005 23:11:33 -0000 1.15.4.6 --- spambayes.iss 26 Jan 2005 22:46:51 -0000 1.15.4.7 *************** *** 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 --- 21,25 ---- Source: "py2exe\dist\lib\*.*"; DestDir: "{app}\lib"; Flags: ignoreversion ! Source: "py2exe\dist\bin\python24.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 Jan 26 23:52:03 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 26 23:52:06 2005 Subject: [Spambayes-checkins] website/sigs spambayes-1.0.2.exe.asc,1.1,1.2 Message-ID: Update of /cvsroot/spambayes/website/sigs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13364/sigs Modified Files: spambayes-1.0.2.exe.asc Log Message: Update checksums etc for 1.0.2 binary. Index: spambayes-1.0.2.exe.asc =================================================================== RCS file: /cvsroot/spambayes/website/sigs/spambayes-1.0.2.exe.asc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** spambayes-1.0.2.exe.asc 25 Jan 2005 23:55:37 -0000 1.1 --- spambayes-1.0.2.exe.asc 26 Jan 2005 22:52:00 -0000 1.2 *************** *** 2,7 **** Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB9tsPVcUzCvI/cyoRAvLvAKDfI+IbudbAnqIT19JSl/3tp+gZcgCgiqXO ! ReJtC+qS++RbeIR7E/FE5Rs= ! =cjFt -----END PGP SIGNATURE----- --- 2,7 ---- Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB+B7GVcUzCvI/cyoRAnY1AJ9QA7ANYVY4stXA0pogMCDAxqJDAwCfdRQk ! +bU8t9Gf9yAtfyFAKGj2WCE= ! =x5nG -----END PGP SIGNATURE----- From anadelonbrin at users.sourceforge.net Wed Jan 26 23:52:03 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed Jan 26 23:52:06 2005 Subject: [Spambayes-checkins] website download.ht,1.31,1.32 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13364 Modified Files: download.ht Log Message: Update checksums etc for 1.0.2 binary. Index: download.ht =================================================================== RCS file: /cvsroot/spambayes/website/download.ht,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** download.ht 26 Jan 2005 00:00:34 -0000 1.31 --- download.ht 26 Jan 2005 22:52:00 -0000 1.32 *************** *** 48,55 ****
        !
      • cf94b50dfcda2ce4c1cba541217714bf ! spambayes-1.0.1.exe ! (3,272,826 bytes, ! sig)
      • f463c6d06549f92f1fc5c0ddc7210696 --- 48,55 ----
          !
        • 2d28488235916cd7d6c2acd50e6fed9d ! spambayes-1.0.2.exe ! (3,604,826 bytes, ! sig)
        • f463c6d06549f92f1fc5c0ddc7210696 From anadelonbrin at users.sourceforge.net Thu Jan 27 02:41:33 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 27 02:41:36 2005 Subject: [Spambayes-checkins] spambayes/windows/py2exe setup_all.py, 1.17.4.3, 1.17.4.4 Message-ID: Update of /cvsroot/spambayes/spambayes/windows/py2exe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19132/windows/py2exe Modified Files: Tag: release_1_0-branch setup_all.py Log Message: If we build with Python 2.4, then importing bsddb will not work until we manually specify inclusion of weakref. This is either a new quirk of modulefinder, or some sort of py2exe bug or something. Index: setup_all.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/py2exe/setup_all.py,v retrieving revision 1.17.4.3 retrieving revision 1.17.4.4 diff -C2 -d -r1.17.4.3 -r1.17.4.4 *** setup_all.py 9 Nov 2004 22:37:47 -0000 1.17.4.3 --- setup_all.py 27 Jan 2005 01:41:30 -0000 1.17.4.4 *************** *** 38,42 **** packages = "spambayes.resources,encodings", excludes = "win32ui,pywin,pywin.debugger", # pywin is a package, and still seems to be included. ! includes = "dialogs.resources.dialogs", # Outlook dynamic dialogs dll_excludes = "dapi.dll,mapi32.dll", typelibs = [ --- 38,42 ---- packages = "spambayes.resources,encodings", excludes = "win32ui,pywin,pywin.debugger", # pywin is a package, and still seems to be included. ! includes = "dialogs.resources.dialogs,weakref", # Outlook dynamic dialogs dll_excludes = "dapi.dll,mapi32.dll", typelibs = [ From anadelonbrin at users.sourceforge.net Thu Jan 27 02:58:25 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 27 02:58:28 2005 Subject: [Spambayes-checkins] website download.ht,1.32,1.33 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22800 Modified Files: download.ht Log Message: Update checksums etc. Index: download.ht =================================================================== RCS file: /cvsroot/spambayes/website/download.ht,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** download.ht 26 Jan 2005 22:52:00 -0000 1.32 --- download.ht 27 Jan 2005 01:58:22 -0000 1.33 *************** *** 48,64 ****
            !
          • 2d28488235916cd7d6c2acd50e6fed9d spambayes-1.0.2.exe ! (3,604,826 bytes, sig)
          • !
          • f463c6d06549f92f1fc5c0ddc7210696 spambayes-1.0.2.tar.gz ! (696,499 bytes, sig)
          • !
          • 6d9fda7416b87e354deef8969b8e837f spambayes-1.0.2.zip ! (782,208 bytes, sig)
          • --- 48,64 ----
              !
            • 00b6abc3db4526f6f47bfb4f550e9769 spambayes-1.0.2.exe ! (3,414,543 bytes, sig)
            • !
            • 2af4ed220b49b1816496a7ea2f6c18d9 spambayes-1.0.2.tar.gz ! (696,512 bytes, sig)
            • !
            • af31f385f82c0ea46e0e1614c47e8ec2 spambayes-1.0.2.zip ! (953,903 bytes, sig)
            • From anadelonbrin at users.sourceforge.net Thu Jan 27 02:58:26 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 27 02:58:29 2005 Subject: [Spambayes-checkins] website/sigs spambayes-1.0.2.exe.asc, 1.2, 1.3 spambayes-1.0.2.tar.gz.asc, 1.2, 1.3 spambayes-1.0.2.zip.asc, 1.2, 1.3 Message-ID: Update of /cvsroot/spambayes/website/sigs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22800/sigs Modified Files: spambayes-1.0.2.exe.asc spambayes-1.0.2.tar.gz.asc spambayes-1.0.2.zip.asc Log Message: Update checksums etc. Index: spambayes-1.0.2.exe.asc =================================================================== RCS file: /cvsroot/spambayes/website/sigs/spambayes-1.0.2.exe.asc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** spambayes-1.0.2.exe.asc 26 Jan 2005 22:52:00 -0000 1.2 --- spambayes-1.0.2.exe.asc 27 Jan 2005 01:58:23 -0000 1.3 *************** *** 2,7 **** Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB+B7GVcUzCvI/cyoRAnY1AJ9QA7ANYVY4stXA0pogMCDAxqJDAwCfdRQk ! +bU8t9Gf9yAtfyFAKGj2WCE= ! =x5nG -----END PGP SIGNATURE----- --- 2,7 ---- Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB+EqGVcUzCvI/cyoRAiO8AKC1QEzqFemlT0ax3VhUDVmeoVbxygCgzv7n ! fiN9yXEHDCd0R/Mk5IMD2fk= ! =JH/o -----END PGP SIGNATURE----- Index: spambayes-1.0.2.tar.gz.asc =================================================================== RCS file: /cvsroot/spambayes/website/sigs/spambayes-1.0.2.tar.gz.asc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** spambayes-1.0.2.tar.gz.asc 25 Jan 2005 23:55:27 -0000 1.2 --- spambayes-1.0.2.tar.gz.asc 27 Jan 2005 01:58:23 -0000 1.3 *************** *** 2,7 **** Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB9tsDVcUzCvI/cyoRAhUBAJ98kwdE1tXNqnHphroZ+/eJbRRaqQCfcAIJ ! QTRS1b/Zn58X8Sd0sSxhKBY= ! =S9SL -----END PGP SIGNATURE----- --- 2,7 ---- Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB+EqLVcUzCvI/cyoRArhIAJ4pBtmM57LNAwHo+0R+HMOR9GLvXgCdHK2l ! c5XH6V8MSh/NHqg6vP0S1sY= ! =0ylp -----END PGP SIGNATURE----- Index: spambayes-1.0.2.zip.asc =================================================================== RCS file: /cvsroot/spambayes/website/sigs/spambayes-1.0.2.zip.asc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** spambayes-1.0.2.zip.asc 25 Jan 2005 23:55:27 -0000 1.2 --- spambayes-1.0.2.zip.asc 27 Jan 2005 01:58:23 -0000 1.3 *************** *** 2,7 **** Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB9tsLVcUzCvI/cyoRAtIoAJ9k9nEh5HAEkM0yNrr2To0HYTD8YACgwcFd ! 7e89m60XtburXqB2pl+DxZg= ! =cb+6 -----END PGP SIGNATURE----- --- 2,7 ---- Version: GnuPG v1.2.2 (MingW32) ! iD8DBQBB+EqRVcUzCvI/cyoRAk57AKCxhI7bacslV7W3KcrHWr+8K1bF9ACbBAHQ ! vkaILJJ+SxlVBTjRScOnMg8= ! =zueD -----END PGP SIGNATURE----- From anadelonbrin at users.sourceforge.net Thu Jan 27 03:19:24 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 27 03:19:27 2005 Subject: [Spambayes-checkins] spambayes/spambayes __init__.py, 1.11.4.5, 1.11.4.6 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26904/spambayes Modified Files: Tag: release_1_0-branch __init__.py Log Message: All ready for new checkins, although I think this branch won't see any more. Index: __init__.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/__init__.py,v retrieving revision 1.11.4.5 retrieving revision 1.11.4.6 diff -C2 -d -r1.11.4.5 -r1.11.4.6 *** __init__.py 25 Jan 2005 22:00:42 -0000 1.11.4.5 --- __init__.py 27 Jan 2005 02:19:21 -0000 1.11.4.6 *************** *** 1,3 **** # package marker. ! __version__ = '1.0.2' --- 1,3 ---- # package marker. ! __version__ = '1.0.2+' From anadelonbrin at users.sourceforge.net Thu Jan 27 03:43:20 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu Jan 27 03:43:24 2005 Subject: [Spambayes-checkins] spambayes/windows/py2exe setup_all.py, 1.19, 1.20 Message-ID: Update of /cvsroot/spambayes/spambayes/windows/py2exe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31973/windows/py2exe Modified Files: setup_all.py Log Message: Add two fixes from the 1.0 branch: adding weakref explicitly (needed for bsddb with Python 2.4) and specifying the package location (needed for a distutils change, IIRC). Index: setup_all.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/py2exe/setup_all.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** setup_all.py 16 Jul 2004 14:09:37 -0000 1.19 --- setup_all.py 27 Jan 2005 02:43:18 -0000 1.20 *************** *** 10,13 **** --- 10,15 ---- sys.path.append(os.path.join(sb_top_dir, "Outlook2000/sandbox")) + import spambayes.resources + # Generate the dialogs.py file. import dialogs *************** *** 36,40 **** packages = "spambayes.resources,encodings", excludes = "win32ui,pywin,pywin.debugger", # pywin is a package, and still seems to be included. ! includes = "dialogs.resources.dialogs", # Outlook dynamic dialogs dll_excludes = "dapi.dll,mapi32.dll", typelibs = [ --- 38,42 ---- packages = "spambayes.resources,encodings", excludes = "win32ui,pywin,pywin.debugger", # pywin is a package, and still seems to be included. ! includes = "dialogs.resources.dialogs,weakref", # Outlook dynamic dialogs dll_excludes = "dapi.dll,mapi32.dll", typelibs = [ *************** *** 147,150 **** --- 149,153 ---- setup(name="SpamBayes", packages = ["spambayes.resources"], + package_dir = {"spambayes.resources" : spambayes.resources.__path__[0]}, # We implement a COM object. com_server=[outlook_addin], From anadelonbrin at users.sourceforge.net Fri Jan 28 02:19:10 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 02:22:21 2005 Subject: [Spambayes-checkins] spambayes/spambayes ProxyUI.py, 1.45.4.1, 1.45.4.2 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20151/spambayes Modified Files: Tag: release_1_0-branch ProxyUI.py Log Message: Correct the fix for escaping subject lines - the problem was in the clues/tokens table, not the review one (and the 'fix' was double-escaping them which is not nice). Instead we need to make sure that we make the URL nicer. A message with a subject of "&<>" and a body of "<>&" works for me now, so I figure this should be fixed. Index: ProxyUI.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/ProxyUI.py,v retrieving revision 1.45.4.1 retrieving revision 1.45.4.2 diff -C2 -d -r1.45.4.1 -r1.45.4.2 *** ProxyUI.py 20 Dec 2004 03:45:39 -0000 1.45.4.1 --- ProxyUI.py 28 Jan 2005 01:19:07 -0000 1.45.4.2 *************** *** 329,333 **** else: h = self.html.reviewRow.headerValue.clone() ! h.text = cgi.escape(text) row.optionalHeadersValues += h --- 329,333 ---- else: h = self.html.reviewRow.headerValue.clone() ! h.text = text row.optionalHeadersValues += h *************** *** 343,347 **** del row.received_ ! subj = messageInfo.subjectHeader row.classify.href="showclues?key=%s&subject=%s" % (key, subj) row.tokens.href="showclues?key=%s&subject=%s&tokens=1" % (key, subj) --- 343,352 ---- del row.received_ ! # Many characters can't go in the URL or they cause problems ! # (&, ;, ?, etc). So we use the hex values for them all. ! subj_list = [] ! for c in messageInfo.subjectHeader: ! subj_list.append("%%%s" % (hex(ord(c))[2:],)) ! subj = "".join(subj_list) row.classify.href="showclues?key=%s&subject=%s" % (key, subj) row.tokens.href="showclues?key=%s&subject=%s&tokens=1" % (key, subj) From anadelonbrin at users.sourceforge.net Fri Jan 28 02:22:40 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 02:22:43 2005 Subject: [Spambayes-checkins] spambayes/windows spambayes.iss, 1.15.4.7, 1.15.4.8 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20938/windows Modified Files: Tag: release_1_0-branch spambayes.iss Log Message: 1.0.3. Need to include msvcr71.dll in the distribution (Microsoft recommend this) and install it in our bin directory, or people without it won't be able to do anything. This is a Python 2.4 change. Index: spambayes.iss =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v retrieving revision 1.15.4.7 retrieving revision 1.15.4.8 diff -C2 -d -r1.15.4.7 -r1.15.4.8 *** spambayes.iss 26 Jan 2005 22:46:51 -0000 1.15.4.7 --- spambayes.iss 28 Jan 2005 01:22:32 -0000 1.15.4.8 *************** *** 5,11 **** [Setup] ; Version specific constants ! AppVerName=SpamBayes 1.0.2 ! AppVersion=1.0.2 ! OutputBaseFilename=spambayes-1.0.2 ; Normal constants. Be careful about changing 'AppName' AppName=SpamBayes --- 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 *************** *** 22,25 **** --- 22,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 From anadelonbrin at users.sourceforge.net Fri Jan 28 02:22:41 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 02:22:44 2005 Subject: [Spambayes-checkins] spambayes/spambayes Version.py, 1.31.4.6, 1.31.4.7 __init__.py, 1.11.4.6, 1.11.4.7 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20938/spambayes Modified Files: Tag: release_1_0-branch Version.py __init__.py Log Message: 1.0.3. Need to include msvcr71.dll in the distribution (Microsoft recommend this) and install it in our bin directory, or people without it won't be able to do anything. This is a Python 2.4 change. Index: Version.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Version.py,v retrieving revision 1.31.4.6 retrieving revision 1.31.4.7 diff -C2 -d -r1.31.4.6 -r1.31.4.7 *** Version.py 25 Jan 2005 22:49:10 -0000 1.31.4.6 --- Version.py 28 Jan 2005 01:22:31 -0000 1.31.4.7 *************** *** 38,48 **** # "description" strings below - they just need to increment # so automated version checking works. ! "Version": 1.02, ! "BinaryVersion": 1.02, "Description": "SpamBayes Outlook Addin", "Date": "January 2005", ! "Full Description": "%(Description)s Version 1.0.2 (%(Date)s)", "Full Description Binary": ! "%(Description)s Binary Version 1.0.2 (%(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.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. *************** *** 53,63 **** # Note these version numbers also currently don't appear in the # "description" strings below - see above ! "Version": 1.02, ! "BinaryVersion": 1.02, "Description": "SpamBayes POP3 Proxy", "Date": "January 2005", ! "Full Description": """%(Description)s Version 1.0.2 (%(Date)s)""", "Full Description Binary": ! """%(Description)s Binary Version 1.0.2 (%(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. Index: __init__.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/__init__.py,v retrieving revision 1.11.4.6 retrieving revision 1.11.4.7 diff -C2 -d -r1.11.4.6 -r1.11.4.7 *** __init__.py 27 Jan 2005 02:19:21 -0000 1.11.4.6 --- __init__.py 28 Jan 2005 01:22:31 -0000 1.11.4.7 *************** *** 1,3 **** # package marker. ! __version__ = '1.0.2+' --- 1,3 ---- # package marker. ! __version__ = '1.0.3' From anadelonbrin at users.sourceforge.net Fri Jan 28 02:26:24 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 02:26:27 2005 Subject: [Spambayes-checkins] spambayes CHANGELOG.txt, 1.44.4.8, 1.44.4.9 WHAT_IS_NEW.txt, 1.35.4.5, 1.35.4.6 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21696 Modified Files: Tag: release_1_0-branch CHANGELOG.txt WHAT_IS_NEW.txt Log Message: 1.0.3. sigh. Index: CHANGELOG.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v retrieving revision 1.44.4.8 retrieving revision 1.44.4.9 diff -C2 -d -r1.44.4.8 -r1.44.4.9 *** CHANGELOG.txt 25 Jan 2005 21:44:57 -0000 1.44.4.8 --- CHANGELOG.txt 28 Jan 2005 01:26:20 -0000 1.44.4.9 *************** *** 1,4 **** --- 1,9 ---- [Note that all dates are in English, not American format - i.e. day/month/year] + Release 1.0.3 + ============= + 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. + Release 1.0.2 ============= Index: WHAT_IS_NEW.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v retrieving revision 1.35.4.5 retrieving revision 1.35.4.6 diff -C2 -d -r1.35.4.5 -r1.35.4.6 *** WHAT_IS_NEW.txt 25 Jan 2005 21:45:00 -0000 1.35.4.5 --- WHAT_IS_NEW.txt 28 Jan 2005 01:26:21 -0000 1.35.4.6 *************** *** 11,14 **** --- 11,27 ---- 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 ============ From anadelonbrin at users.sourceforge.net Fri Jan 28 02:28:01 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 02:28:04 2005 Subject: [Spambayes-checkins] spambayes/spambayes ProxyUI.py,1.59,1.60 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21859/spambayes Modified Files: ProxyUI.py Log Message: Correct the escaping of subject lines. Index: ProxyUI.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/ProxyUI.py,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** ProxyUI.py 10 Jan 2005 02:36:20 -0000 1.59 --- ProxyUI.py 28 Jan 2005 01:27:59 -0000 1.60 *************** *** 343,347 **** else: h = self.html.reviewRow.headerValue.clone() ! h.text = cgi.escape(text) row.optionalHeadersValues += h --- 343,347 ---- else: h = self.html.reviewRow.headerValue.clone() ! h.text = text row.optionalHeadersValues += h *************** *** 361,365 **** del row.received_ ! subj = messageInfo.subjectHeader row.classify.href="showclues?key=%s&subject=%s" % (key, subj) row.tokens.href="showclues?key=%s&subject=%s&tokens=1" % (key, subj) --- 361,370 ---- del row.received_ ! # Many characters can't go in the URL or they cause problems ! # (&, ;, ?, etc). So we use the hex values for them all. ! subj_list = [] ! for c in messageInfo.subjectHeader: ! subj_list.append("%%%s" % (hex(ord(c))[2:],)) ! subj = "".join(subj_list) row.classify.href="showclues?key=%s&subject=%s" % (key, subj) row.tokens.href="showclues?key=%s&subject=%s&tokens=1" % (key, subj) From anadelonbrin at users.sourceforge.net Fri Jan 28 02:29:00 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 02:29:03 2005 Subject: [Spambayes-checkins] spambayes/windows spambayes.iss,1.18,1.19 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22038/windows Modified Files: spambayes.iss Log Message: Distribute mscvr71.dll, which is needed with Python 2.4. Index: spambayes.iss =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** spambayes.iss 10 Nov 2004 22:08:44 -0000 1.18 --- spambayes.iss 28 Jan 2005 01:28:58 -0000 1.19 *************** *** 1,11 **** ; ! ; Inno Setup 4.x setup file for the Spambayes Binaries ; [Setup] ; Version specific constants ! AppVerName=SpamBayes 1.0rc1 ! AppVersion=0.992 ! OutputBaseFilename=spambayes-1.0rc1 ; Normal constants. Be careful about changing 'AppName' AppName=SpamBayes --- 1,11 ---- ; ! ; Inno Setup 5.x setup file for the SpamBayes Binaries ; [Setup] ; Version specific constants ! AppVerName=SpamBayes 1.1a1 ! AppVersion=1.1a1 ! OutputBaseFilename=spambayes-1.1a1 ; Normal constants. Be careful about changing 'AppName' AppName=SpamBayes *************** *** 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 --- 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\mscvr71.dll"; DestDir: "{app}\bin"; Flags: ignoreversion Source: "py2exe\dist\bin\outlook_addin.dll"; DestDir: "{app}\bin"; Check: InstallingOutlook; Flags: ignoreversion *************** *** 49,52 **** --- 50,57 ---- [Run] Filename: "{app}\bin\outlook_addin_register.exe"; StatusMsg: "Registering Outlook Addin"; Check: InstallingOutlook; + ; Possibly register for all users (unregister removes this if it is present, so we don't need + ; 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; *************** *** 242,243 **** --- 247,396 ---- Result := (CurPage = wpSelectTasks) and (not InstallProxy); end; + + + var + InstallOutlook, InstallProxy: Boolean; + WarnedNoOutlook, WarnedBoth : Boolean; + ComponentsPage: TInputQueryWizardPage; + + procedure InitializeWizard; + begin + { Create the pages } + + ComponentsPage := CreateInputQueryPage(wpWelcome, + 'Personal Information', 'Who are you?', + 'Please specify your name and the company for whom you work, then click Next.'); + UserPage.Add('Name:', False); + UserPage.Add('Company:', False); + + UsagePage := CreateInputOptionPage(UserPage.ID, + 'Personal Information', 'How will you use My Program?', + 'Please specify how you would like to use My Program, then click Next.', + True, False); + UsagePage.Add('Light mode (no ads, limited functionality)'); + UsagePage.Add('Sponsored mode (with ads, full functionality)'); + UsagePage.Add('Paid mode (no ads, full functionality)'); + + { Set default values, using settings that were stored last time if possible } + + UserPage.Values[0] := GetPreviousData('Name', ExpandConstant('{sysuserinfoname}')); + UserPage.Values[1] := GetPreviousData('Company', ExpandConstant('{sysuserinfoorg}')); + + case GetPreviousData('UsageMode', '') of + 'light': UsagePage.SelectedValueIndex := 0; + 'sponsored': UsagePage.SelectedValueIndex := 1; + 'paid': UsagePage.SelectedValueIndex := 2; + else + UsagePage.SelectedValueIndex := 1; + end; + + DataDirPage.Values[0] := GetPreviousData('DataDir', ''); + end; + + procedure RegisterPreviousData(PreviousDataKey: Integer); + var + UsageMode: String; + begin + { Store the settings so we can restore them next time } + SetPreviousData(PreviousDataKey, 'Name', UserPage.Values[0]); + SetPreviousData(PreviousDataKey, 'Company', UserPage.Values[1]); + case UsagePage.SelectedValueIndex of + 0: UsageMode := 'light'; + 1: UsageMode := 'sponsored'; + 2: UsageMode := 'paid'; + end; + SetPreviousData(PreviousDataKey, 'UsageMode', UsageMode); + SetPreviousData(PreviousDataKey, 'DataDir', DataDirPage.Values[0]); + end; + + function ShouldSkipPage(PageID: Integer): Boolean; + begin + { Skip pages that shouldn't be shown } + if (PageID = LightMsgPage.ID) and (UsagePage.SelectedValueIndex <> 0) then + Result := True + else if (PageID = KeyPage.ID) and (UsagePage.SelectedValueIndex <> 2) then + Result := True + else + Result := False; + end; + + function NextButtonClick(CurPageID: Integer): Boolean; + var + I: Integer; + begin + { Validate certain pages before allowing the user to proceed } + if CurPageID = UserPage.ID then begin + if UserPage.Values[0] = '' then begin + MsgBox('You must enter your name.', mbError, MB_OK); + Result := False; + end else begin + if DataDirPage.Values[0] = '' then + DataDirPage.Values[0] := 'C:\' + UserPage.Values[0]; + Result := True; + end; + end else if CurPageID = KeyPage.ID then begin + { Just to show how 'OutputProgress' pages work. + Always use a try..finally between the Show and Hide calls as shown below. } + ProgressPage.SetText('Authorizing registration key...', ''); + ProgressPage.SetProgress(0, 0); + ProgressPage.Show; + try + for I := 0 to 10 do begin + ProgressPage.SetProgress(I, 10); + Sleep(100); + end; + finally + ProgressPage.Hide; + end; + if KeyPage.Values[0] = 'inno' then + Result := True + else begin + MsgBox('You must enter a valid registration key. (Hint: The key is "inno".)', mbError, MB_OK); + Result := False; + end; + end else + Result := True; + end; + + function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, + MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String; + var + S: String; + begin + { Fill the 'Ready Memo' with the normal settings and the custom settings } + S := ''; + S := S + 'Personal Information:' + NewLine; + S := S + Space + UserPage.Values[0] + NewLine; + if UserPage.Values[1] <> '' then + S := S + Space + UserPage.Values[1] + NewLine; + S := S + NewLine; + + S := S + 'Usage Mode:' + NewLine + Space; + case UsagePage.SelectedValueIndex of + 0: S := S + 'Light mode'; + 1: S := S + 'Sponsored mode'; + 2: S := S + 'Paid mode'; + end; + S := S + NewLine + NewLine; + + S := S + MemoDirInfo + NewLine; + S := S + Space + DataDirPage.Values[0] + ' (personal data files)' + NewLine; + + Result := S; + end; + + function GetUser(Param: String): String; + begin + { Return a user value } + { Could also be split into separate GetUserName and GetUserCompany functions } + if Param = 'Name' then + Result := UserPage.Values[0] + else if Param = 'Company' then + Result := UserPage.Values[1]; + end; + + function GetDataDir(Param: String): String; + begin + { Return the selected DataDir } + Result := DataDirPage.Values[0]; + end; From anadelonbrin at users.sourceforge.net Fri Jan 28 02:40:12 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 02:40:35 2005 Subject: [Spambayes-checkins] website/sigs spambayes-1.0.3.exe.asc, NONE, 1.1 spambayes-1.0.3.tar.gz.asc, NONE, 1.1 spambayes-1.0.3.zip.asc, NONE, 1.1 Message-ID: Update of /cvsroot/spambayes/website/sigs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24421/sigs Added Files: spambayes-1.0.3.exe.asc spambayes-1.0.3.tar.gz.asc spambayes-1.0.3.zip.asc Log Message: 1.0.3 sigs --- NEW FILE: spambayes-1.0.3.exe.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBB+Ze+VcUzCvI/cyoRAk8dAKDLh5qUKljMkT8xyYNKY9Dh9JEI8QCaAkCe YIidvas9mGD3Ix4f88A1WvM= =WqyA -----END PGP SIGNATURE----- --- NEW FILE: spambayes-1.0.3.tar.gz.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBB+Ze6VcUzCvI/cyoRAj0RAJ0WKCWJMf7wdNETjYwl/s5vGo+N8gCfX//K EsjVoB+ITU6l9DMGV9vVSBw= =WJmP -----END PGP SIGNATURE----- --- NEW FILE: spambayes-1.0.3.zip.asc --- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (MingW32) iD8DBQBB+Ze2VcUzCvI/cyoRAnZzAKDgexjA2aUKizxeeS4sCfRNvfPe/ACgrG9z 30A4ml0KMjx757GYg3Huapk= =sdRE -----END PGP SIGNATURE----- From anadelonbrin at users.sourceforge.net Fri Jan 28 03:08:29 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Fri Jan 28 03:08:32 2005 Subject: [Spambayes-checkins] website contact.ht, 1.3, 1.4 download.ht, 1.33, 1.34 faq.txt, 1.86, 1.87 index.ht, 1.37, 1.38 reply.txt, 1.17, 1.18 windows.ht, 1.43, 1.44 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29607 Modified Files: contact.ht download.ht faq.txt index.ht reply.txt windows.ht Log Message: Update for 1.0.3 Index: contact.ht =================================================================== RCS file: /cvsroot/spambayes/website/contact.ht,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** contact.ht 2 Jan 2004 00:21:19 -0000 1.3 --- contact.ht 28 Jan 2005 02:08:26 -0000 1.4 *************** *** 5,19 ****

              Mailing lists

              !

              There are currently five mailing lists of interest. All lists are public, and all ! are publicly archived. This is normal practice for open-source projects, and you ! should be aware that all email sent to one of these addresses will be visible ! to the world:

              • The spambayes-announce ! list - a very low volume mailing list announcing new releases. This is a moderated ! mailing list: all postings to this list are subject to a human moderator's review ! before they're sent to the list. The moderator will reject off-topic messages.
              • --- 5,20 ----

                Mailing lists

                !

                There are currently five mailing lists of interest. All lists are ! public, and all are publicly archived. This is normal practice for ! open-source projects, and you should be aware that all email sent to one of ! these addresses will be visible to the world:

                • The spambayes-announce ! list - a very low volume mailing list announcing new releases. This is a ! moderated mailing list: all postings to this list are subject to a human ! moderator's review before they're sent to the list. The moderator will ! reject off-topic messages.
                • *************** *** 21,27 **** spambayes ! user list. General discussions and user queries go here. (This was also the developer list until late May, 2003). ! This list is not moderated, although "unusual" messages may get held automatically, ! for moderator review. For example, very large messages are held for review, and the moderator may reject such messages, asking you to trim their size.
                • --- 22,29 ---- spambayes ! user list. General discussions and user queries go here. (This was also the ! developer list until late May, 2003). This list is not moderated, although ! "unusual" messages may get held automatically, for moderator review. For ! example, very large messages are held for review, and the moderator may reject such messages, asking you to trim their size. *************** *** 29,45 **** The spambayes developers list spambayes-dev. This list is for discussion of spambayes development. Please don't use this for user questions ("how do I ! make SB work with Outlook version X?"), use the "spambayes" list for that. This list is ! also unmoderated.
                • CVS commit messages go to the list spambayes-checkins. ! You shouldn't send email to this list; a program running at SourceForge automatically creates and sends ! emails to this list as a result of code checkins.
                • Sourceforge tracker items (bugs, feature requests and patches) go to the list spambayes-bugs. ! You shouldn't send email to this list; a program running at SourceForge automatically creates and sends ! emails to this list as a result of changes made to tracker items.
                --- 31,49 ---- The spambayes developers list spambayes-dev. This list is for discussion of spambayes development. Please don't use this for user questions ("how do I ! make SB work with Outlook version X?"), use the "spambayes" list for that. ! This list is also unmoderated.
              • CVS commit messages go to the list spambayes-checkins. ! You shouldn't send email to this list; a program running at SourceForge ! automatically creates and sends emails to this list as a result of code ! checkins.
              • Sourceforge tracker items (bugs, feature requests and patches) go to the list spambayes-bugs. ! You shouldn't send email to this list; a program running at SourceForge ! automatically creates and sends emails to this list as a result of changes ! made to tracker items.
              *************** *** 50,55 **** page at sourceforge. Please have a check of the bugs already reported to see if your bug has already been reported.  If not, ! open a new bug. Please ensure you ! attach the log file or traceback to the bug.
              If you are unsure about the bug, or need any assistance, please send a mail.

              --- 54,59 ---- page at sourceforge. Please have a check of the bugs already reported to see if your bug has already been reported.  If not, ! open a new bug. Please ensure you attach the log file or traceback to the ! bug.
              If you are unsure about the bug, or need any assistance, please send a mail.

              Index: download.ht =================================================================== RCS file: /cvsroot/spambayes/website/download.ht,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** download.ht 27 Jan 2005 01:58:22 -0000 1.33 --- download.ht 28 Jan 2005 02:08:26 -0000 1.34 *************** *** 3,7 **** Author: SpamBayes !

              Version 1.0.2 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.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 *************** *** 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: faq.txt =================================================================== RCS file: /cvsroot/spambayes/website/faq.txt,v retrieving revision 1.86 retrieving revision 1.87 diff -C2 -d -r1.86 -r1.87 *** faq.txt 26 Jan 2005 04:18:42 -0000 1.86 --- faq.txt 28 Jan 2005 02:08:26 -0000 1.87 *************** *** 1492,1497 **** We believe that this is an Outlook problem that we are triggering (but we do not know of any way to work around it. Please let us know if you ! have more information than we do!). If you are using Exchange 2003 you ! can enable 'cached mode' and that typically fixes it. We suspect that this applies to particular combinations of Outlook and --- 1492,1497 ---- We believe that this is an Outlook problem that we are triggering (but we do not know of any way to work around it. Please let us know if you ! have more information than we do!). If you are using Exchange 2003 and ! Outlook 2003 you can enable 'cached mode' and that typically fixes it. We suspect that this applies to particular combinations of Outlook and Index: index.ht =================================================================== RCS file: /cvsroot/spambayes/website/index.ht,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** index.ht 26 Jan 2005 00:00:35 -0000 1.37 --- index.ht 28 Jan 2005 02:08:27 -0000 1.38 *************** *** 5,9 ****

              News

              !

              SpamBayes 1.0.2 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.3 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.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** reply.txt 26 Jan 2005 00:00:35 -0000 1.17 --- reply.txt 28 Jan 2005 02:08:27 -0000 1.18 *************** *** 48,53 **** ----------------------------------------------- ! Please ensure that you have the latest version. As of January 27, 2005, ! this is 1.0.2 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 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: Index: windows.ht =================================================================== RCS file: /cvsroot/spambayes/website/windows.ht,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** windows.ht 26 Jan 2005 00:00:35 -0000 1.43 --- windows.ht 28 Jan 2005 02:08:27 -0000 1.44 *************** *** 11,17 ****

              Latest Release

              !

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

              --- 11,17 ----

              Latest Release

              !

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

              *************** *** 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 Mon Jan 31 23:21:49 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Mon Jan 31 23:21:54 2005 Subject: [Spambayes-checkins] spambayes/windows spambayes.iss,1.19,1.20 Message-ID: Update of /cvsroot/spambayes/spambayes/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13136/windows Modified Files: spambayes.iss Log Message: Back out the Inno 5.x stuff that I committed by mistake, and at the same time, update for Inno 5.x thanks to Kenny. Index: spambayes.iss =================================================================== RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** spambayes.iss 28 Jan 2005 01:28:58 -0000 1.19 --- spambayes.iss 31 Jan 2005 22:21:34 -0000 1.20 *************** *** 22,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\mscvr71.dll"; DestDir: "{app}\bin"; Flags: ignoreversion Source: "py2exe\dist\bin\outlook_addin.dll"; DestDir: "{app}\bin"; Check: InstallingOutlook; Flags: ignoreversion --- 22,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 *************** *** 53,57 **** ; 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; --- 53,57 ---- ; 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; *************** *** 149,256 **** // Inno has a pretty primitive "Components/Tasks" concept that // doesn't quite fit what we want - so we create a custom wizard page. - function PromptApplications( BackClicked: Boolean): Boolean; - var - Next: Boolean; - Prompts, Values: array of String; - begin - - // First open the custom wizard page - ScriptDlgPageOpen(); - - // Set some captions - ScriptDlgPageSetCaption('Select applications to install'); - ScriptDlgPageSetSubCaption1('A number of applications are included with this package.'); - ScriptDlgPageSetSubCaption2('Select the components you wish to install.'); - - SetArrayLength(Prompts, 2); - SetArrayLength(Values, 2); - if InstallOutlook then - Prompts[0] := 'Microsoft Outlook Addin (Outlook appears to be installed)' - else - Prompts[0] := 'Microsoft Outlook Addin (Outlook does not appear to be installed)'; - Prompts[1] := 'Server/Proxy application, for all other POP based mail clients, including Outlook Express'; - - while True do begin - if InstallOutlook then Values[0] := '1' else Values[0] := '0'; - if InstallProxy then Values[1] := '1' else Values[1] := '0'; - Next:= InputOptionArray(Prompts, Values, False, False); - if not Next then Break; - InstallOutlook := (Values[0] = '1'); - InstallProxy := (Values[1] = '1'); - - if InstallOutlook and not IsOutlookInstalled and not WarnedNoOutlook then begin - if MsgBox( - 'Outlook does not appear to be installed.' + #13 + #13 + - 'This addin only works with Microsoft Outlook 2000 and later - it' + #13 + - 'does not work with Outlook Express.' + #13 + #13 + - 'If you know that Outlook is installed, you may wish to continue.' + #13 + #13 + - 'Would you like to change your selection?', - mbConfirmation, MB_YESNO) = idNo then begin - WarnedNoOutlook := True; - Break; // break check loop - end; - Continue; - end; - - 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 + - 'Would you like to change your selection?', - mbConfirmation, MB_YESNO) = idNo then begin - WarnedBoth := True; - Break; // break check loop - end; - Continue - end; - - if not InstallOutlook and not InstallProxy then begin - MsgBox('You must select one of the applications.', mbError, MB_OK); - Continue; - end - // we got to here, we are OK. - Break; - end - // See NextButtonClick and BackButtonClick: return True if the click should be allowed - if not BackClicked then - Result := Next - else - Result := not Next; - // Close the wizard page. Do a FullRestore only if the click (see above) is not allowed - ScriptDlgPageClose(not Result); - end; - - - function ScriptDlgPages(CurPage: Integer; BackClicked: Boolean): Boolean; - begin - if (not BackClicked and (CurPage = wpWelcome)) or (BackClicked and (CurPage = wpSelectDir)) then begin - // Insert a custom wizard page between two non custom pages - Result := PromptApplications( BackClicked ); - end - else - Result := True; - end; - - function NextButtonClick(CurPage: Integer): Boolean; - begin - Result := ScriptDlgPages(CurPage, False); - end; - - function BackButtonClick(CurPage: Integer): Boolean; - begin - Result := ScriptDlgPages(CurPage, True); - end; - - function SkipCurPage(CurPage: Integer): Boolean; - begin - Result := (CurPage = wpSelectTasks) and (not InstallProxy); - end; - var ! InstallOutlook, InstallProxy: Boolean; ! WarnedNoOutlook, WarnedBoth : Boolean; ! ComponentsPage: TInputQueryWizardPage; procedure InitializeWizard; --- 149,155 ---- // 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; *************** *** 258,305 **** { Create the pages } ! ComponentsPage := CreateInputQueryPage(wpWelcome, ! 'Personal Information', 'Who are you?', ! 'Please specify your name and the company for whom you work, then click Next.'); ! UserPage.Add('Name:', False); ! UserPage.Add('Company:', False); ! ! UsagePage := CreateInputOptionPage(UserPage.ID, ! 'Personal Information', 'How will you use My Program?', ! 'Please specify how you would like to use My Program, then click Next.', ! True, False); ! UsagePage.Add('Light mode (no ads, limited functionality)'); ! UsagePage.Add('Sponsored mode (with ads, full functionality)'); ! UsagePage.Add('Paid mode (no ads, full functionality)'); ! ! { Set default values, using settings that were stored last time if possible } ! ! UserPage.Values[0] := GetPreviousData('Name', ExpandConstant('{sysuserinfoname}')); ! UserPage.Values[1] := GetPreviousData('Company', ExpandConstant('{sysuserinfoorg}')); ! ! case GetPreviousData('UsageMode', '') of ! 'light': UsagePage.SelectedValueIndex := 0; ! 'sponsored': UsagePage.SelectedValueIndex := 1; ! 'paid': UsagePage.SelectedValueIndex := 2; else ! UsagePage.SelectedValueIndex := 1; ! end; ! DataDirPage.Values[0] := GetPreviousData('DataDir', ''); ! end; ! procedure RegisterPreviousData(PreviousDataKey: Integer); ! var ! UsageMode: String; ! begin ! { Store the settings so we can restore them next time } ! SetPreviousData(PreviousDataKey, 'Name', UserPage.Values[0]); ! SetPreviousData(PreviousDataKey, 'Company', UserPage.Values[1]); ! case UsagePage.SelectedValueIndex of ! 0: UsageMode := 'light'; ! 1: UsageMode := 'sponsored'; ! 2: UsageMode := 'paid'; ! end; ! SetPreviousData(PreviousDataKey, 'UsageMode', UsageMode); ! SetPreviousData(PreviousDataKey, 'DataDir', DataDirPage.Values[0]); end; --- 157,175 ---- { Create the pages } ! ComponentsPage := CreateInputOptionPage(wpWelcome, ! 'Select applications to install', ! 'A number of applications are included with this package.', ! 'Select the components you wish to install, then click Next.', ! False, False); ! if InstallOutlook then ! ComponentsPage.Add('Microsoft Outlook Addin (Outlook appears to be installed)') else ! 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'); ! { Set default values based on whether or not Outlook is installed. } ! 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; *************** *** 307,316 **** begin { Skip pages that shouldn't be shown } ! if (PageID = LightMsgPage.ID) and (UsagePage.SelectedValueIndex <> 0) then ! Result := True ! else if (PageID = KeyPage.ID) and (UsagePage.SelectedValueIndex <> 2) then ! Result := True ! else ! Result := False; end; --- 177,181 ---- begin { Skip pages that shouldn't be shown } ! Result := (PageID = wpSelectTasks) and (not InstallProxy); end; *************** *** 320,352 **** begin { Validate certain pages before allowing the user to proceed } ! if CurPageID = UserPage.ID then begin ! if UserPage.Values[0] = '' then begin ! MsgBox('You must enter your name.', mbError, MB_OK); Result := False; ! end else begin ! if DataDirPage.Values[0] = '' then ! DataDirPage.Values[0] := 'C:\' + UserPage.Values[0]; Result := True; - end; - end else if CurPageID = KeyPage.ID then begin - { Just to show how 'OutputProgress' pages work. - Always use a try..finally between the Show and Hide calls as shown below. } - ProgressPage.SetText('Authorizing registration key...', ''); - ProgressPage.SetProgress(0, 0); - ProgressPage.Show; - try - for I := 0 to 10 do begin - ProgressPage.SetProgress(I, 10); - Sleep(100); - end; - finally - ProgressPage.Hide; - end; - if KeyPage.Values[0] = 'inno' then - Result := True - else begin - MsgBox('You must enter a valid registration key. (Hint: The key is "inno".)', mbError, MB_OK); - Result := False; - end; end else Result := True; --- 185,221 ---- begin { Validate certain pages before allowing the user to proceed } ! if CurPageID = ComponentsPage.ID then begin ! InstallOutlook := ComponentsPage.Values[0]; ! InstallProxy := ComponentsPage.Values[1]; ! ! if InstallOutlook and not IsOutlookInstalled and not WarnedNoOutlook then begin ! if MsgBox( ! 'Outlook does not appear to be installed.' + #13 + #13 + ! 'This addin only works with Microsoft Outlook 2000 and later - it' + #13 + ! 'does not work with Outlook Express.' + #13 + #13 + ! 'If you know that Outlook is installed, you may wish to continue.' + #13 + #13 + ! 'Would you like to change your selection?', ! mbConfirmation, MB_YESNO) = idNo then begin ! WarnedNoOutlook := True; ! Result := True; ! 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 + ! 'Would you like to change your selection?', ! mbConfirmation, MB_YESNO) = idNo then begin ! WarnedBoth := True; ! Result := True; ! 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; ! end else ! // we got to here, we are OK. Result := True; end else Result := True; *************** *** 359,396 **** begin { Fill the 'Ready Memo' with the normal settings and the custom settings } ! S := ''; ! S := S + 'Personal Information:' + NewLine; ! S := S + Space + UserPage.Values[0] + NewLine; ! if UserPage.Values[1] <> '' then ! S := S + Space + UserPage.Values[1] + NewLine; S := S + NewLine; ! ! S := S + 'Usage Mode:' + NewLine + Space; ! case UsagePage.SelectedValueIndex of ! 0: S := S + 'Light mode'; ! 1: S := S + 'Sponsored mode'; ! 2: S := S + 'Paid mode'; ! end; ! S := S + NewLine + NewLine; ! ! S := S + MemoDirInfo + NewLine; ! S := S + Space + DataDirPage.Values[0] + ' (personal data files)' + NewLine; Result := S; end; - function GetUser(Param: String): String; - begin - { Return a user value } - { Could also be split into separate GetUserName and GetUserCompany functions } - if Param = 'Name' then - Result := UserPage.Values[0] - else if Param = 'Company' then - Result := UserPage.Values[1]; - end; - - function GetDataDir(Param: String): String; - begin - { Return the selected DataDir } - Result := DataDirPage.Values[0]; - end; --- 228,241 ---- begin { Fill the 'Ready Memo' with the normal settings and the custom settings } ! S := 'Selected applications:' + NewLine; ! 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; end;