⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 processors.py

📁 用python实现的邮件过滤器
💻 PY
字号:
# Control Processors for our dialog.# This module is part of the spambayes project, which is Copyright 2003# The Python Software Foundation and is covered by the Python Software# Foundation license.import win32gui, win32api, win32conimport commctrlimport struct, arrayfrom dlgutils import *# Cache our leaky bitmap handlesbitmap_handles = {}# A generic set of "ControlProcessors".  A control processor by itself only# does a few basic things.class ControlProcessor:    def __init__(self, window, control_ids):        self.control_id = control_ids[0]        self.other_ids = control_ids[1:]        self.window = window    def Init(self):        pass    def Done(self): # done with 'ok' - ie, save options.  May return false.        return True    def Term(self): # closing - can't fail.        pass    def GetControl(self, control_id = None):        control_id = control_id or self.control_id        try:            h = win32gui.GetDlgItem(self.window.hwnd, control_id)        except:            hparent = win32gui.GetParent(self.window.hwnd)            hparent = win32gui.GetParent(hparent)            h = win32gui.GetDlgItem(hparent, control_id)        return h    def GetPopupHelpText(self, idFrom):        return None    def OnCommand(self, wparam, lparam):        pass    def OnNotify(self, nmhdr, wparam, lparam):        pass    def GetMessages(self):        return []    def OnMessage(self, msg, wparam, lparam):        raise RuntimeError, "I don't hook any messages, so I shouldn't be called"    def OnOptionChanged(self, option):        pass    def OnRButtonUp(self, wparam, lparam):        passclass ImageProcessor(ControlProcessor):    def Init(self):        rcp = self.window.manager.dialog_parser;        bmp_id = int(win32gui.GetWindowText(self.GetControl()))        if bitmap_handles.has_key(bmp_id):            handle = bitmap_handles[bmp_id]        else:            import resources            mod_handle, mod_bmp, extra_flags = resources.GetImageParamsFromBitmapID(rcp, bmp_id)            load_flags = extra_flags|win32con.LR_COLOR|win32con.LR_SHARED            handle = win32gui.LoadImage(mod_handle, mod_bmp,                                        win32con.IMAGE_BITMAP,0,0,load_flags)            bitmap_handles[bmp_id] = handle        win32gui.SendMessage(self.GetControl(), win32con.STM_SETIMAGE, win32con.IMAGE_BITMAP, handle)    def GetPopupHelpText(self, cid):        return Noneclass ButtonProcessor(ControlProcessor):    def OnCommand(self, wparam, lparam):        code = win32api.HIWORD(wparam)        id = win32api.LOWORD(wparam)        if code == win32con.BN_CLICKED:            self.OnClicked(id)class CloseButtonProcessor(ButtonProcessor):    def OnClicked(self, id):        problem = self.window.manager.GetDisabledReason()        if problem:            q = "There appears to be a problem with SpamBayes' configuration" \                "\r\nIf you do not fix this problem, SpamBayes will be" \                " disabled.\r\n\r\n" + problem + \                "\r\n\r\nDo you wish to re-configure?"            if self.window.manager.AskQuestion(q):                return        win32gui.EndDialog(self.window.hwnd, id)    def GetPopupHelpText(self, ctrlid):        return "Closes this dialog"class CommandButtonProcessor(ButtonProcessor):    def __init__(self, window, control_ids, func, args):        assert len(control_ids)==1        self.func = func        self.args = args        ControlProcessor.__init__(self, window, control_ids)    def OnClicked(self, id):        # Bit of a hack - always pass the manager as the first arg.        args = (self.window,) + self.args        self.func(*args)    def GetPopupHelpText(self, ctrlid):        assert ctrlid == self.control_id        doc = self.func.__doc__        if doc is None:            return ""        return " ".join(doc.split())

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -