public
Description: Google's Webkit, ported to Python, ported to Desktops.
Homepage: http://lkcl.net/pyjamas-desktop
Clone URL: git://github.com/lkcl/pyjamas-desktop.git
pyjamas-desktop / pyjd-gtk2 / Logger.py
100644 63 lines (49 sloc) 1.651 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from ui import Grid
 
global _logger
_logger = None
 
def Logger(target="", message=""):
global _logger
if _logger == None:
_logger = LoggerCls()
if message:
_logger.write(target, message)
return _logger
 
class LoggerCls(Grid):
    def __init__(self, target="", message=""):
 
        Grid.__init__(self)
 
        self.targets=[]
        self.targets.append("app")
        #self.targets.append("ui")
        self.resize(len(self.targets)+1, 2)
        self.setBorderWidth(1)
        self.counter=0
        
        self.setHTML(0, 0, "<b>Log</b>")
        self.setText(1, 0, "app")
        for i in range(len(self.targets)):
            target=self.targets[i]
            self.setText(i+1, 0, target)
 
    def addTarget(self, target):
        self.targets.append(target)
        self.resize(len(self.targets)+1, 2)
        self.setText(len(self.targets), 0, target)
        self.setText(len(self.targets), 1, '')
        return self.targets.index(target)
        
    def write(self, target, message):
        self.counter+=1
        
        if target=='':
            target='app'
        if target in self.targets:
            target_idx=self.targets.index(target)
        else:
            target_idx = -1
        
        # add new target
        if target_idx<0:
            target_idx=self.addTarget(target)
        
        target_row=target_idx+1
        old_text=self.getHTML(target_row, 1)
        log_line="%d" % self.counter + ": " + message
 
        if old_text=='&nbsp;':
            new_text=log_line
        else:
            new_text=old_text + "<br>" + log_line
        self.setHTML(target_row, 1, new_text)