# Copyright (C) 2006-2012 Mortal Coil Games # See LICENSE for details. """ Event.LogToList is an Event Log that will (duh) send all the events to a simple list. """ from ogre.gui import CEGUI as cegui from mv3d.client.ui.cegui import UserInterface from mv3d.reporter.event import EventLog uiloaded = 0 class LogToList(EventLog): """ You need to add a docstring here ! """ def __init__(self): EventLog.__init__(self) self.maxentries = 0 #unlimited self.catchtypes = [] #any self.events = [] def initialize(self): """ You need to add a docstring here ! """ EventLog.initialize(self) self.filename = self.getOption("filename", "EventLog.txt") self.maxentries = self.getOption("maxentries", 0) self.catchtypes = self.getOption("catchtypes", []) def startLogging(self, server): """ You need to add a docstring here ! """ EventLog.startLogging(self, server) self.events = [] def stopLogging(self): """ You need to add a docstring here ! """ EventLog.stopLogging(self) self.events = [] def receiveEvent(self, e): """ You need to add a docstring here ! """ if len(self.catchtypes): if not e.category in self.catchtypes: return self.events.append(e) if self.maxentries: if len(self.events) >= self.maxentries: self.events = self.events[1 + (len(self.events) - self.maxentries):] def getEvents(self): """ You need to add a docstring here ! """ return self.events class LogToGUI(LogToList, UserInterface): """ You need to add a docstring here ! """ def __init__(self): LogToList.__init__(self) #UserInterface.__init__(self) self.el = [] self.displayed = 0 # print "guilog created" def initialize(self): """ You need to add a docstring here ! """ LogToList.initialize(self) def initializeUI(self, ui): """ You need to add a docstring here ! """ global uiloaded UserInterface.initialize(self, ui) if not uiloaded: uiloaded = 1 self.window = ui.createComponent("WindowsLook/FrameWindow", "LogWindow", [0.2, 0.2], [0.6, 0.6], [0.01, 0.01], [1.0, 1.0], 'Event Log') self.loglist = ui.createComponent("WindowsLook/MultiColumnList", "LogWindow/LogList", [0.05, 0.1], [0.9, 0.85], [0.01, 0.01], [1.0, 1.0], '') self.loglist.showVertScrollbar = True self.loglist.addColumn('Date', 0, cegui.UDim(0.2, 0)) #name, id, width ( % widget) self.loglist.addColumn('From', 1, cegui.UDim(0.2, 0)) #name, id, width ( % widget) self.loglist.addColumn('Category', 2, cegui.UDim(0.2, 0)) #name, id, width ( % widget) self.loglist.addColumn('Event', 3, cegui.UDim(0.4, 0)) #name, id, width ( % widget) self.window.addChildWindow(self.loglist) self.ui.requestUICallback(self.window, "EventCloseClicked", self.toggleVisible) def startLogging(self, server): """ You need to add a docstring here ! """ LogToList.startLogging(self, server) def stopLogging(self): """ You need to add a docstring here ! """ LogToList.stopLogging(self) def receiveEvent(self, e): """ You need to add a docstring here ! """ # print "got an event!" LogToList.receiveEvent(self, e) if self.displayed: self.addEvent(e) def start(self): """ You need to add a docstring here ! """ # print "Guilog started!" self.updateUI() if not self.displayed: self.displayed = 1 self.ui.displayWindow(self.window) def stop(self): """ You need to add a docstring here ! """ if self.displayed: self.displayed = 0 self.ui.hideWindow(self.window) def toggleVisible(self, *args): """ You need to add a docstring here ! """ if self.displayed: self.stop() else: self.start() def updateUI(self): """ You need to add a docstring here ! """ self.loglist.resetList() self.el = [] for e in self.events: self.addEvent(e) def addEvent(self, e): """ You need to add a docstring here ! """ self.el.append(self.ui.addRowToListBox(self.loglist, [e.getDate().format(), str(e.getServer()), e.getCategory(), e.getData()]))