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

📄 logconf.py

📁 xen虚拟机源代码安装包
💻 PY
📖 第 1 页 / 共 5 页
字号:
            self.focus_set()    def hideControls(self):        if self.listvisible:            self.popup.withdraw()            global _popup            _popup = None            self.listvisible = 0        if self.edititem:            self.ph.setPropValue(self.editprop.name, self.editor.get())            self.itemconfig(self.valitems[self.editrow], text=self.editprop.getValueText())            self.delete(self.edititem)            self.edititem = None        if self.btnitem:            self.delete(self.btnitem)            self.btnitem = None    def onClick(self, event):        row = event.y / self.rowheight        self.hideControls()        if row < len(self.pnames):            wid = int(self.cget('width'))            hei = self.rowheight            prop = self.props[row]            if not self.ph.isReadonly(self.pnames[row]):                self.editrow = row                self.editprop = prop                choices = prop.getChoices()                if choices != None:                    val = prop.getValue()                    self.list.setContents(choices, val)                    self.listy = row * hei + self.rowheight                    self.btnitem = self.create_window(wid - hei, row * hei, width=hei, height=hei, window=self.button, anchor='nw', tags='button')                else:                    self.editor.delete(0, END)                    self.editor.insert(0, prop.getValueText())                    self.editor.select_range(0, END)                    self.edititem = self.create_window(self.namewidth + 1, row * hei, width=wid - self.namewidth, height = hei + 1, window=self.editor, anchor='nw', tags='editor')                    self.editor.focus_set()    def onConfigure(self, event):        self.hideControls()        self.drawLines(event.width, event.height)        self.configure(width=event.width, height=event.height)    def onEdit(self):        wid = int(self.cget('width'))        #self.listitem = self.create_window(self.namewidth + 1, self.listy, width=wid - self.namewidth - 1, height = self.rowheight * 3, window=self.list, anchor='nw', tags='list')        w = wid - self.namewidth - 1        h = self.rowheight * 5        x = self.winfo_rootx() + self.namewidth + 1        y = self.winfo_rooty() + self.listy        s = "%dx%d+%d+%d" % (w, h, x, y)        self.popup.deiconify()        self.popup.lift()        self.popup.focus_set()        self.listvisible = 1        self.list.focus_set()        #For some reason with 1.5.2 (Windows), making the geometry call        #immediately following the assignment to s doesn't work. So we        #do it here        self.popup.geometry(s)        global _popup        _popup = self.popup    def onListChange(self, val):        self.ph.setPropValue(self.editprop.name, val)        self.itemconfig(self.valitems[self.editrow], text=self.editprop.getValueText())        if type(val) != types.ListType:            self.hideControls()class PropertyEditor(Frame):    def __init__(self, parent, *args, **kwargs):        Frame.__init__(self, parent)        self.parent = parent        nw = kwargs.get("namewidth", 120)        rh = kwargs.get("rowheight", 16)        wid = kwargs.get("width", 300)        hei = kwargs.get("height", 60)        self.header = PropertyHeader(self, namewidth=nw, rowheight=rh, height=14, highlightthickness=0)        self.body = PropertyCanvas(self, namewidth=nw, rowheight=rh, width=wid, height=hei, background='white', highlightthickness=0)        self.header.pack(side=TOP, fill=X)        self.body.pack(side=BOTTOM, fill=BOTH, expand=1)    def setPropertyHolder(self, ph):        self.body.setPropertyHolder(ph)class ADUPanel(Frame):    def __init__(self, parent):        Frame.__init__(self, parent)        self.parent = parent        self.add = Button(self, text="New", command=parent.onAdd)        self.add.pack(side=LEFT) #, fill=X, expand=1)        self.rmv = Button(self, text="Delete", command=parent.onDelete)        self.rmv.pack(side=LEFT) #, fill=X, expand=1)        #self.upd = Button(self, text="Update", command=parent.onUpdate)        #self.upd.pack(side=RIGHT, fill=X, expand=1)class ScrollList(Frame):    def __init__(self, parent, *args, **kwargs):        Frame.__init__(self, parent)        self.parent = parent        self.sb = Scrollbar(self, orient=VERTICAL)        kwargs["yscrollcommand"] = self.sb.set        self.list = apply(Listbox, (self,) + args, kwargs)        self.sb.config(command=self.list.yview)        self.sb.pack(side=RIGHT, fill=Y)        self.list.pack(side=LEFT, fill=BOTH,expand=1)def sortqn(log1, log2):    qn1 = log1.getQualifiedName()    qn2 = log2.getQualifiedName()    if qn1 == "(root)":        rv = -1    elif qn2 == "(root)":        rv = 1    else:        rv = cmp(qn1, qn2)    return rvdef sortn(obj1, obj2):    return cmp(obj1.getPropValue("name"), obj2.getPropValue("name"))class LoggerPanel(Frame):    def __init__(self, parent):        Frame.__init__(self, parent)        self.parent = parent        label = Label(self, text="Loggers:")        label.grid(row=0, column=0, sticky='w')        self.slist = ScrollList(self, height=15, background='white')        self.slist.list.bind('<ButtonRelease-1>', self.onListChange)        self.slist.grid(row=1, column=0, sticky="nsew")        self.adu = ADUPanel(self)        self.adu.grid(row=2, column=0, sticky="we")        label = Label(self, text="Properties of selected logger:")        label.grid(row=3, column=0, sticky='w')        self.pe = PropertyEditor(self, height=120, borderwidth=1)        self.pe.grid(row=4, column=0, sticky='nsew')        self.columnconfigure(0, weight=1)        self.rowconfigure(1, weight=3)        self.rowconfigure(4, weight=1)    def setConfig(self, config):        self.config = config        #populate list of loggers        llist = config.getLoggers()        llist.sort(sortqn)        self.slist.list.delete(0, END)        self.pe.body.clear()        self.names = []        for logger in llist:            self.names.append(logger.getPropValue("name"))            self.slist.list.insert(END, logger.getQualifiedName())    def onAdd(self):        items = self.slist.list.curselection()        if not len(items):            showerror("No Parent Selected", "You haven't selected a parent logger.")        else:            idx = int(items[0])            parent = self.config.getLogger(self.names[idx])            log = self.config.getLogger(None)            log.onChannelChanged = self.onChannelChanged            log.setPropValue("parent", parent.getPropValue("name"))            self.names.insert(1 + idx, log.getPropValue("name"))            self.slist.list.insert(1 + idx, log.getQualifiedName())            self.slist.list.select_clear(0, END)            self.slist.list.select_set(1 + idx)            self.pe.setPropertyHolder(log)    def onDelete(self):        items = self.slist.list.curselection()        if not len(items):            showerror("No Item Selected", "You haven't selected anything to delete.")        else:            idx = int(items[0])            name = self.slist.list.get(idx)            if name == "(root)":                showerror("Root Item Selected", "You cannot delete the root logger.")            else:                resp = askyesno("Logger Deletion", "Are you sure you want to delete logger '%s'?" % name)                if resp:                    #self.config.removeLogger(self.names[idx])                    log = self.config.getLogger(self.names[idx])                    log.deleted = 1                    self.slist.list.delete(idx)                    del self.names[idx]                    self.pe.body.clear()    def onChannelChanged(self, nm, chname):        i = self.names.index(nm)        sel = i        while i < len(self.names):            log = self.config.getLogger(self.names[i])            self.slist.list.delete(i)            self.slist.list.insert(i, log.getQualifiedName())            i = i + 1        self.slist.list.select_clear(0, END)        self.slist.list.select_set(sel)    def onListChange(self, event):        self.pe.body.hideControls()        items = self.slist.list.curselection()        idx = int(items[0])        name = self.names[idx]        log = self.config.getLogger(name)        self.pe.setPropertyHolder(log)class HandlerPanel(Frame):    def __init__(self, parent):        Frame.__init__(self, parent)        self.parent = parent        label = Label(self, text="Handlers:")        label.grid(row=0, column=0, sticky='w')        self.slist = ScrollList(self, height=6, background='white')        self.slist.list.bind('<ButtonRelease-1>', self.onListChange)        self.slist.grid(row=1, column=0, sticky="nsew")        self.adu = ADUPanel(self)        self.adu.grid(row=2, column=0, sticky="we")        label = Label(self, text="Properties of selected handler:")        label.grid(row=3, column=0, sticky='w')        self.pe = PropertyEditor(self, height=90, borderwidth=1)        self.pe.grid(row=4, column=0, sticky='nsew')        self.columnconfigure(0, weight=1)        self.rowconfigure(1, weight=1)        self.rowconfigure(4, weight=1)    def setConfig(self, config):        self.config = config        #populate list of handlers        hlist = config.getHandlers()        hlist.sort(sortn)        self.slist.list.delete(0, END)        self.pe.body.clear()        for hand in hlist:            hand.onPropListChanged = self.onPropListChanged            self.slist.list.insert(END, hand.getPropValue("name"))    def onAdd(self):        self.pe.body.hideControls()        hand = self.config.getHandler(None)        self.slist.list.insert(END, hand.getProp("name").getValueText())        self.slist.list.select_clear(0, END)        self.slist.list.select_set(END)        hand.onPropListChanged = self.onPropListChanged        self.pe.setPropertyHolder(hand)    def onDelete(self):        items = self.slist.list.curselection()        if not len(items):            showerror("No Item Selected", "You haven't selected anything to delete")        else:            name = self.slist.list.get(int(items[0]))            log = self.config.handlerIsUsed(name)            if log:                showerror("Handler in use",                          "The handler '%s' is being used by logger '%s'"\                          ", so it cannot be deleted." % (                          name, log))            else:                self.config.removeHandler(name)                self.slist.list.delete(items)                self.pe.body.clear()    def onUpdate(self):        print "handler update"    def onListChange(self, event):        self.pe.body.hideControls()        items = self.slist.list.curselection()        name = self.slist.list.get(int(items[0]))        hand = self.config.getHandler(name)        self.pe.setPropertyHolder(hand)    def onPropListChanged(self, newhand):        newhand.onPropListChanged = self.onPropListChanged        self.pe.setPropertyHolder(newhand)class FormatterPanel(Frame):    def __init__(self, parent):        Frame.__init__(self, parent)        self.parent = parent        label = Label(self, text="Formatters:")        label.grid(row=0, column=0, sticky='w')        self.slist = ScrollList(self, height=4, background='white')        self.slist.list.bind('<ButtonRelease-1>', self.onListChange)        self.slist.grid(row=1, column=0, sticky="nsew")        self.adu = ADUPanel(self)        self.adu.grid(row=2, column=0, sticky="ew")        label = Label(self, text="Properties of selected formatter:")        label.grid(row=3, column=0, sticky='w')        self.pe = PropertyEditor(self, height=60, borderwidth=1)        self.pe.grid(row=4, column=0, sticky='nsew')        self.columnconfigure(0, weight=1)        self.rowconfigure(1, weight=1)        self.rowconfigure(4, weight=1)    def setConfig(self, config):        self.config = config        #populate list of formatters        flist = config.getFormatters()        flist.sort(sortn)        self.slist.list.delete(0, END)        self.pe.body.clear()        for form in flist:            self.slist.list.insert(END, form.getPropValue("name"))    def onAdd(self):        self.pe.body.hideControls()        fmt = self.config.getFormatter(None)        self.slist.list.insert(END, fmt.getProp("name").getValueText())        self.slist.list.select_clear(0, END)        i = self.slist.list.size()        self.slist.list.select_set(i - 1)        self.pe.setPropertyHolder(fmt)    def onDelete(self):        self.pe.body.hideControls()        items = self.slist.list.curselection()        if not len(items):            showerror("No Item Selected", "You haven't selected anything to delete")        else:            name = self.slist.list.get(int(items[0]))            h = self.config.formatterIsUsed(name)            if h:                showerror("Formatter in use",                          "The formatter '%s' is being used by handler '%s'"\                          ", so it cannot be deleted." % (                          name, h))            else:                self.config.removeFormatter(name)                self.slist.list.delete(items)                self.pe.body.clear()    def onUpdate(self):        self.pe.body.hideControls()    def onListChange(self, event):        self.pe.body.hideControls()        items = self.slist.list.curselection()        name = self.slist.list.get(int(items[0]))        fmt = self.config.getFormatter(name)        self.pe.setPropertyHolder(fmt)class FilterPanel(Frame):    def __init__(self, parent):        Frame.__init__(self, parent)        self.parent = parent

⌨️ 快捷键说明

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