~starplant/treegui/oldtreegui

« back to all changes in this revision

Viewing changes to _gui/keys.py

  • Committer: me
  • Date: 2009-03-27 07:36:55 UTC
  • Revision ID: me@centurion-20090327073655-wmo1eirlzbnkhote
 old code 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
"""
 
2
 
 
3
    This module regesters keys and converts them to user event
 
4
    this is how they key can be bound to other events 
 
5
 
 
6
"""
 
7
 
 
8
class Keys:
 
9
    """ processes keys including mouse buttons"""
 
10
    
 
11
    def __init__(self,game,keyFilename='cfg/keys.config'):
 
12
        """ create event prosessor """
 
13
        self.game = game
 
14
        self.focus = None
 
15
        self.bound = {}
 
16
        for n,line in enumerate(open(keyFilename)):
 
17
            s = line.split() 
 
18
            if s == []:
 
19
                continue
 
20
            elif line[0] != "#":
 
21
                    key,message = s                  
 
22
                    self.bound[key] = message
 
23
            else:
 
24
                print "error in keys.txt file on line %i"%n
 
25
        for event in self.bound.keys():
 
26
            self.game.accept(event,self.onKey,[event])            
 
27
        letters = "abcdefghijklmnopqrstuvwxyz"     
 
28
        symbols = "1234567890-=,./[]\\;'`"
 
29
        shifted = "!@#$%^&*()_+<>?{}|:\"~"
 
30
        work = ['enter','backspace','space']        
 
31
        self.mouseEvents = dict.fromkeys(["mouse1", "mouse2", "mouse3"])
 
32
        for mouseEvent in ["mouse1", "mouse2", "mouse3","mouse1-up","mouse2-up","mouse3-up"]:
 
33
            self.game.accept(mouseEvent,self.onKey,[mouseEvent])
 
34
        for letter in symbols+letters:
 
35
            self.game.accept(letter,self.onKey,[letter])
 
36
            self.game.accept('shift-'+letter,self.onKey,[letter.upper()])
 
37
        for event in work:
 
38
            self.game.accept(event,self.onKey,[event])
 
39
        for index,key in enumerate(symbols):
 
40
            self.game.accept('shift-'+key,self.onKey, [shifted[index]] )
 
41
        self.inputKeys = dict.fromkeys(list(letters+letters.upper()+symbols+shifted)+work)
 
42
 
 
43
    def onKey(self,key):
 
44
        """ if gui is in focus give keys to that else 
 
45
        see if they are bound to action """
 
46
        if key in ("mouse1-up","mouse2-up","mouse3-up"):
 
47
            gui.drag = None
 
48
        if key in self.mouseEvents:
 
49
            if gui.baseMouseEvent(key):
 
50
                print gui.drag
 
51
                return
 
52
        if self.focus != None and key in self.inputKeys:    
 
53
            if self.focus.onKey(key):
 
54
                return
 
55
        if key in self.bound:
 
56
            messenger.send(self.bound[key])
 
57
        
 
58
    
 
59
      
 
60
        
 
 
b'\\ No newline at end of file'