[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz ./Gzz.py ./bindings.py gzz/client/actions.p...
From: |
Benja Fallenstein |
Subject: |
[Gzz-commits] gzz ./Gzz.py ./bindings.py gzz/client/actions.p... |
Date: |
Sun, 27 Oct 2002 19:54:13 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Benja Fallenstein <address@hidden> 02/10/27 19:54:13
Modified files:
. : Gzz.py bindings.py
gzz/client : actions.py pythonbinder.py
Log message:
Python bindings somewhat work
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/Gzz.py.diff?tr1=1.42&tr2=1.43&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/bindings.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/client/actions.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/client/pythonbinder.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
Patches:
Index: gzz/Gzz.py
diff -u gzz/Gzz.py:1.42 gzz/Gzz.py:1.43
--- gzz/Gzz.py:1.42 Sun Oct 27 19:17:54 2002
+++ gzz/Gzz.py Sun Oct 27 19:54:13 2002
@@ -74,8 +74,8 @@
else:
print "Using Python bindings"
import bindings
- self.binder = \
- gzz.client.pythonbinder.PythonBinder(bindings.normal_mode)
+ self.binder = gzz.client.pythonbinder.PythonBinder(
+ bindings.normal_mode, bindings.edit_mode, bindings.search_mode)
self.spanType = java.lang.System.getProperty("gzz.spanType")
self.spaceType = java.lang.System.getProperty("gzz.spaceType")
Index: gzz/bindings.py
diff -u gzz/bindings.py:1.2 gzz/bindings.py:1.3
--- gzz/bindings.py:1.2 Sun Oct 27 19:17:54 2002
+++ gzz/bindings.py Sun Oct 27 19:54:13 2002
@@ -9,6 +9,9 @@
from gzz.client.actions import *
+edit_mode = {}
+search_mode = {}
+
normal_mode = {
# "Meta-binding:"
@@ -92,8 +95,8 @@
'g': GoTo(1),
'G': GoTo(0),
- 'Delete': Delete(),
- 'Ctrl-Backspace': Delete(), # Macs have no "Delete" key
+ 'Delete': Delete(1),
+ 'Ctrl-Backspace': Delete(1), # Macs have no "Delete" key
Index: gzz/gzz/client/actions.py
diff -u gzz/gzz/client/actions.py:1.2 gzz/gzz/client/actions.py:1.3
--- gzz/gzz/client/actions.py:1.2 Sun Oct 27 19:17:54 2002
+++ gzz/gzz/client/actions.py Sun Oct 27 19:54:13 2002
@@ -27,11 +27,12 @@
def call(self, x):
op = x.getPendingOp()
if not op: op = Move()
+ x.setPendingOp(None)
- x = x.setDir(self.side, self.axis, self.dir)
- op.dir(self, x)
+ x.setDir(self.side, self.axis, self.dir)
+ op.dir(x)
- gzz.client.AbstractUpdateManager.prioritize(self.win.getScreen())
+ gzz.client.AbstractUpdateManager.prioritize(x.win.getScreen())
class New(DirOp):
def dir(self, x):
@@ -47,6 +48,15 @@
x.checkNew()
x.win.cursor = x.new
+class Connect(DirOp):
+ def dir(self, x):
+ if not x.getMarks():
+ x.cell.connect(x.dim, x.dir,
+ x.client.windows[1-x.side].cursor)
+ else:
+ raise gzz.client.ClientException(
+ "Sorry, connecting to marked cells is not implemented yet.")
+
class Break(DirOp):
def dir(self, x):
x.checkNew()
@@ -70,7 +80,7 @@
try:
c = x.client
c.filers.saveAll(c.space.getSlicer().exportAll())
- c.filers.saveAll(c.space.linkSpace.getSlicer().exportAll())
+ c.filers.saveAll(c.linkSpace.getSlicer().exportAll())
print "Saved."
return 1
@@ -79,6 +89,11 @@
e.printStackTrace()
return 0
+class Delete(SidedOp):
+ def call(self, x):
+ w = self.client.windows[self.side]
+ w.cursor.delete() # XXX move cursor
+
class Save(Op):
def call(self, x):
save(x)
@@ -132,7 +147,7 @@
c = x.client.windows[self.side].cursor
if c not in x.getMarkedCells():
- x.setMarks = x.getMarks() + [gzz.view.Mark(c)]
+ x.setMarks(x.getMarks() + [gzz.view.Mark(c)])
else:
x.setMarks([m for m in x.getMarks() if m.cell != c])
@@ -147,11 +162,28 @@
else:
for i in range(len(marks) - 1):
- if marks[i].cell == x.cell:
+ if marks[i].cell == w.cursor:
w.cursor = marks[i+1].cell
break
else:
- w.cursor = marks[0]
+ w.cursor = marks[0].cell
+
+class NormalMode(Op):
+ def call(self, x):
+ x.setMode('normal')
+
+class EditMode(SidedOp):
+ def call(self, x):
+ if self.side == 0:
+ x.setMode('edit 0')
+ elif self.side == 1:
+ x.setMode('edit 1')
+ else:
+ assert 0
+
+class SearchMode(Op):
+ def call(self, x):
+ x.setMode('search')
class MakeLink(Op):
def __init__(self, dir): self.dir = dir
Index: gzz/gzz/client/pythonbinder.py
diff -u gzz/gzz/client/pythonbinder.py:1.2 gzz/gzz/client/pythonbinder.py:1.3
--- gzz/gzz/client/pythonbinder.py:1.2 Sun Oct 27 19:17:54 2002
+++ gzz/gzz/client/pythonbinder.py Sun Oct 27 19:54:13 2002
@@ -1,23 +1,55 @@
import java, gzz
-class PythonBinder(gzz.client.FallbackBinder):
- def __init__(self, bindings):
- self.bindings = bindings
+MODES = ['normal', 'edit 0', 'edit 1', 'search']
- def setFallback(client):
+class PythonBinder(gzz.client.FallbackBinder):
+ def __init__(self, normal_mode, edit_mode, search_mode):
+ self.normal_mode = normal_mode
+ self.edit_mode = edit_mode
+ self.search_mode = search_mode
+
+ def setFallback(self, client):
self.client = client
pendingOp = None
+ mode = 'normal'
+
+ def getBindings(self):
+ if self.mode == 'normal':
+ return self.normal_mode
+
+ elif self.mode in ['edit 0', 'edit 1']:
+ return self.edit_mode
+
+ elif self.mode == 'search':
+ return self.search_mode
+
+ else:
+ assert 0
def keystroke(self, key, win):
+ bindings = self.getBindings()
+
try:
- op = self.bindings[key]
+ op = bindings[key]
+
except KeyError:
- print "Unbound key: ", key
- return
+ if len(key) == 1 and bindings.has_key('CHAR'):
+ op = bindings['CHAR']
+ op.key(State(self, win), key)
+
+ elif bindings.has_key('DEFAULT'):
+ op = bindings['DEFAULT']
+ op.key(State(self, win), key)
+
+ else:
+ print "Unbound key: ", key
+
+ else:
+ op.call(State(self, win))
- op.call(State(self, win))
+ gzz.client.AbstractUpdateManager.chg()
def mouse(self, event, win):
pass
@@ -33,11 +65,22 @@
self.client = binder.client
+ if self.binder.mode.startswith('edit '):
+ if self.binder.mode == 'edit 0':
+ self.editside = 0
+ elif self.binder.mode == 'edit 1':
+ self.editside = 1
+ else:
+ assert 0
+
+ self.editwin = self.client.windows[editside]
+ self.editcell = self.editwin.cursor
+
def getPendingOp(self):
- return self.client.pendingOp
+ return self.binder.pendingOp
def setPendingOp(self, op):
- self.client.pendingOp = op
+ self.binder.pendingOp = op
def getMarks(self):
return list(gzz.view.DefaultBinder.marks)
@@ -55,12 +98,16 @@
gzz.view.DefaultBinder.marks = l
gzz.view.DefaultBinder.markedCells = s
+ def setMode(self, mode):
+ assert mode in MODES
+ self.client.mode = mode
+
def setDir(self, side, axis, dir):
self.side = side
self.axis = axis
self.dir = dir
- self.win = self.client.windows[win]
+ self.win = self.client.windows[side]
self.cell = self.win.cursor
self.dim = self.win.dims[axis]
self.new = self.cell.s(self.dim, self.dir)
@@ -71,7 +118,7 @@
if not self.new:
raise gzz.client.ClientException(
"Sorry, but there's no cell %s cell '%s'" %
- [self.getDirString(), self.cell.t()])
+ (self.getDirString(), self.cell.t()))
def getDirString(self):
if self.dir < 0: dir = -1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz ./Gzz.py ./bindings.py gzz/client/actions.p...,
Benja Fallenstein <=