/[gzz]/gzz/gzz/client/pythonbinder.py
ViewVC logotype

Diff of /gzz/gzz/client/pythonbinder.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by benja, Mon Oct 28 00:17:54 2002 UTC revision 1.3 by benja, Mon Oct 28 00:54:13 2002 UTC
# Line 1  Line 1 
1    
2  import java, gzz  import java, gzz
3    
4  class PythonBinder(gzz.client.FallbackBinder):      MODES = ['normal', 'edit 0', 'edit 1', 'search']
     def __init__(self, bindings):  
         self.bindings = bindings  
5    
6      def setFallback(client):  class PythonBinder(gzz.client.FallbackBinder):  
7        def __init__(self, normal_mode, edit_mode, search_mode):
8            self.normal_mode = normal_mode
9            self.edit_mode = edit_mode
10            self.search_mode = search_mode
11    
12        def setFallback(self, client):
13          self.client = client          self.client = client
14    
15      pendingOp = None      pendingOp = None
16        mode = 'normal'
17    
18        def getBindings(self):
19            if self.mode == 'normal':
20                return self.normal_mode
21            
22            elif self.mode in ['edit 0', 'edit 1']:
23                return self.edit_mode
24            
25            elif self.mode == 'search':
26                return self.search_mode
27            
28            else:
29                assert 0
30    
31      def keystroke(self, key, win):      def keystroke(self, key, win):
32            bindings = self.getBindings()
33            
34          try:          try:
35              op = self.bindings[key]              op = bindings[key]
36                
37          except KeyError:          except KeyError:
38              print "Unbound key: ", key              if len(key) == 1 and bindings.has_key('CHAR'):
39              return                  op = bindings['CHAR']
40                    op.key(State(self, win), key)
41    
42                elif bindings.has_key('DEFAULT'):
43                    op = bindings['DEFAULT']
44                    op.key(State(self, win), key)
45    
46                else:
47                    print "Unbound key: ", key
48            
49            else:
50                op.call(State(self, win))
51    
52          op.call(State(self, win))          gzz.client.AbstractUpdateManager.chg()
53    
54      def mouse(self, event, win):      def mouse(self, event, win):
55          pass          pass
# Line 33  class State: Line 65  class State:
65    
66          self.client = binder.client          self.client = binder.client
67    
68            if self.binder.mode.startswith('edit '):
69                if self.binder.mode == 'edit 0':
70                    self.editside = 0
71                elif self.binder.mode == 'edit 1':
72                    self.editside = 1
73                else:
74                    assert 0
75    
76                self.editwin = self.client.windows[editside]
77                self.editcell = self.editwin.cursor
78    
79      def getPendingOp(self):      def getPendingOp(self):
80          return self.client.pendingOp          return self.binder.pendingOp
81    
82      def setPendingOp(self, op):      def setPendingOp(self, op):
83          self.client.pendingOp = op          self.binder.pendingOp = op
84    
85      def getMarks(self):      def getMarks(self):
86          return list(gzz.view.DefaultBinder.marks)          return list(gzz.view.DefaultBinder.marks)
# Line 55  class State: Line 98  class State:
98          gzz.view.DefaultBinder.marks = l          gzz.view.DefaultBinder.marks = l
99          gzz.view.DefaultBinder.markedCells = s          gzz.view.DefaultBinder.markedCells = s
100    
101        def setMode(self, mode):
102            assert mode in MODES
103            self.client.mode = mode
104    
105      def setDir(self, side, axis, dir):      def setDir(self, side, axis, dir):
106          self.side = side          self.side = side
107          self.axis = axis          self.axis = axis
108          self.dir = dir          self.dir = dir
109    
110          self.win = self.client.windows[win]          self.win = self.client.windows[side]
111          self.cell = self.win.cursor          self.cell = self.win.cursor
112          self.dim = self.win.dims[axis]          self.dim = self.win.dims[axis]
113          self.new = self.cell.s(self.dim, self.dir)          self.new = self.cell.s(self.dim, self.dir)
# Line 71  class State: Line 118  class State:
118          if not self.new:          if not self.new:
119              raise gzz.client.ClientException(              raise gzz.client.ClientException(
120                  "Sorry, but there's no cell %s cell '%s'" %                  "Sorry, but there's no cell %s cell '%s'" %
121                  [self.getDirString(), self.cell.t()])                  (self.getDirString(), self.cell.t()))
122    
123      def getDirString(self):      def getDirString(self):
124          if self.dir < 0: dir = -1          if self.dir < 0: dir = -1

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26