Show Gzz.py syntax highlighted
#
# Copyright (c) 2003, Tuomas J. Lukka, Benja Fallenstein and Vesa Kaihlavirta
#
# This file is part of Gzz.
#
# Gzz is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Gzz is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# You should have received a copy of the GNU Lesser General
# Public License along with Gzz; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
#
# Running gzz
# GZZ and java
import gzz, java
# python imports
import sys
import getopt
import re
# Flags that can be passed to Gzz.py
# (prefix with '--' on the command line)
flagset = ['multiline', 'double-size', 'triple-size', 'lollipop',
'potion-bindings', 'four-lines',
'bounded-vanishing-scale']
class Gzz(java.lang.Runnable):
"""The main Gzz client class."""
transient = 0
flags = []
def run(self):
self.style = self.graphicsAPI.getTextStyle("SansSerif", java.awt.Font.PLAIN, 13);
self.views = [gzz.view.VobVanishingClient(1),
gzz.view.VobVanishingClient(0),
gzz.view.RowColView(0), gzz.view.RowColView(1),
]
self.viewSpecificBinders = java.util.HashMap()
if 'multiline' not in self.flags:
ccv = gzz.view.TextCellContentView(self.style)
self.cellContentViews = [ccv]
else:
ccv = gzz.view.LinebrokenCellContentView(self.style)
self.cellContentViews = [
gzz.view.LinebrokenCellContentView(self.style)
]
self.cellContentViews.append(gzz.view.CellMagnifier(ccv, 2))
self.cellContentViews.append(gzz.view.CellMagnifier(ccv, 3, 5))
if self.gl:
xubuoy = gzz.view.xubuoy.XuPDF_ViewBinder()
self.views.append(xubuoy)
self.viewSpecificBinders.put(xubuoy, xubuoy)
self.cellContentViews += [gzz.view.MultitypeCellContentView(
ccv, gzz.view.pagespanview.ContentView(),
gzz.view.ImageCellContentView()) for ccv in self.cellContentViews]
if 'lollipop' not in self.flags:
self.cellViews = [gzz.view.BoxCellView(cellContentView)
for cellContentView in self.cellContentViews]
else:
self.cellViews = [gzz.view.LollipopCellView(cellContentView)
for cellContentView in self.cellContentViews]
gzz.client.Fallback(self.space.getHomeCell(), self.linkSpace,
self.binder, self.dimensions, self.decorators,
self.views, self.viewSpecificBinders,
self.cellViews, self.filers)
gzz.client.AbstractUpdateManager.chg()
def parse_params(self):
for o,a in self.opts:
if o in ("-C", "--commander"):
gzz.control.commander.AwtCommander(globals())
if o in ("-t", "--transient"):
self.transient = 1
if o[2:] in flagset:
self.flags.append(o[2:])
if (not self.transient) and (not self.args):
print ""
print "Please give at least one directory to read data from"
print "or specify the -t or --transient option."
sys.exit(1)
def set_defaults(self):
self.decorators = [
gzz.view.MarkDecorator(),
gzz.view.DimDecorator(),
]
if 'potion-bindings' in self.flags:
from bindings import bindingsByMode
self.binder = gzz.client.PotionFallbackBinder(bindingsByMode)
self.decorators.append(gzz.view.PendingPotionDecorator())
else:
self.binder = gzz.view.DefaultBinder()
self.decorators.append(gzz.view.LastOpDecorator())
self.spanType = java.lang.System.getProperty("gzz.spanType")
self.spaceType = java.lang.System.getProperty("gzz.spaceType")
self.obsTrigger = gzz.impl.SimpleObsTrigger()
self.cellManager = gzz.impl.PlainCellManager()
self.linkCellManager = gzz.impl.PlainCellManager()
self.identityManager = gzz.impl.DummyIdentityManager()
self.linkIdentityManager = gzz.impl.DummyIdentityManager()
self.slicer = gzz.impl.SingleSlicer("gzz_fallback_slice")
self.linkSlicer = gzz.impl.SingleSlicer("gzz_fallback_slice_links")
self.enfMaker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()
self.cacheStorer = None
if self.spanType == None or self.spanType == "scroll":
self.spanMaker = gzz.media.impl.ScrollSpanMaker();
elif self.spanType == "transient":
self.spanMaker = gzz.media.impl.FakeSpanMaker()
else:
assert 1==0, "Invalid spanType "+self.spanType;
if self.transient:
self.storer = gzz.mediaserver.storage.TransientStorer()
else:
self.dir = java.io.File(self.args[0])
self.storer = gzz.mediaserver.storage.DirStorer(self.dir)
if not self.cacheStorer:
self.cacheStorer = gzz.mediaserver.storage.TransientStorer()
self.cacheStorer.setProperty("simplemediaserver.poolname",
# Mediaserver.CACHE_POOL_NAME)
# ??? Not in CVS
"cache")
self.pool = gzz.mediaserver.SimpleMediaserver(self.storer)
self.cachePool = gzz.mediaserver.SimpleMediaserver(self.cacheStorer)
self.mediaserver = gzz.mediaserver.MultiplexingMediaserver(self.pool, [], [self.cachePool])
self.filers = gzz.mediaserver.MediaserverFiler.Group(
gzz.slices.SliceVersion.EMPTY_VERSION, self.mediaserver,
gzz.slices.YAMLVersionFormatter.YAMLVersionFormat(self.mediaserver, self.enfMaker))
if self.spaceType == None or self.spaceType == "ModularSpace":
self.enfAligner = gzz.fuzzy.enfiladealigner.JythonEnfiladeAligner()
self.cellTexter = gzz.impl.SimpleVStreamTexter(self.spanMaker, self.enfMaker, self.enfAligner)
self.dimManager = gzz.impl.SimpleDim.SimpleDimManager()
self.version = self.filers.getFiler("gzz_fallback_slice").load()
self.space = gzz.impl.ModularSpace(self.version, self.cellTexter, self.cellManager,
self.dimManager, self.identityManager, self.slicer, self.obsTrigger)
self.linkCellTexter = gzz.impl.SimpleVStreamTexter(self.spanMaker, self.enfMaker, self.enfAligner)
self.linkDimManager = gzz.impl.SimpleDim.SimpleDimManager()
self.linkVersion = self.filers.getFiler("gzz_fallback_slice_links").load()
self.linkSpace = gzz.impl.ModularSpace(self.linkVersion, self.linkCellTexter, self.linkCellManager,
self.linkDimManager, self.linkIdentityManager, self.linkSlicer, self.obsTrigger)
self.dimensions = []
for name in ("d.1", "d.2", "d.3", "d.clone", "d.email",
"d.contain", "d.contain-list"):
attr = re.sub('(\.|-)', '_', name)
dim = self.space.getDim(getattr(gzz.zzutil.Ids, attr))
self.dimensions.append(gzz.client.Fallback.FallbackDim(name, dim))
else:
assert 1==0, "Invalid spacetype "+self.spacetype;
self.dims = {}
for d in self.dimensions:
self.dims[d.name] = d.d
self.home = self.space.getHomeCell()
self.d1, self.d2, self.d3 = [d.d for d in self.dimensions][:3]
self.graphicsAPI = gzz.client.GraphicsAPI.getInstance()
def dumpVersion(self, file):
sli = space.getSlicer()
try:
YAMLVersionFormat(pool, enfMaker).writeVersion(
FileOutputStream(File(file)),
sli.export(sli.getSlice0()))
except TypeError, t:
print t
def __init__(self, opts, args, gl):
self.opts, self.args = opts, args
self.gl = gl
self.parse_params()
self.set_defaults()
def run():
opts, args = getopt.getopt(sys.argv[1:], "Ctp"+gzz.util.dbg.short,
["test-client", "commander"]+gzz.util.dbg.long+flagset)
testclient = 0
for o,a in opts:
if o in gzz.util.dbg.all:
gzz.util.dbg.option(o,a)
if o == "--test-client":
testclient = 1
if gzz.client.GraphicsAPI.getTypeString() == "gl":
print "Running GL..."
g = Gzz(opts, args, 1)
g.graphicsAPI.startUpdateManager(g)
else:
print "Running AWT..."
g = Gzz(opts, args, 0)
g.graphicsAPI.startUpdateManager(None)
g.run()
if testclient:
sys.exit(0)
if __name__ == '__main__':
run()
See more files for this project here