summaryrefslogtreecommitdiffstats
path: root/Demo/cwilib/cwilib.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/cwilib/cwilib.py')
-rwxr-xr-xDemo/cwilib/cwilib.py213
1 files changed, 0 insertions, 213 deletions
diff --git a/Demo/cwilib/cwilib.py b/Demo/cwilib/cwilib.py
deleted file mode 100755
index 2b19637..0000000
--- a/Demo/cwilib/cwilib.py
+++ /dev/null
@@ -1,213 +0,0 @@
-# Interface to the interactive CWI library catalog.
-
-import sys
-import stdwin
-from stdwinevents import *
-import select
-import telnetlib
-import vt100win
-from form import Form
-
-
-# Main program
-
-def main():
- vt = vt100win.VT100win()
- #
- host = 'biefstuk.cwi.nl'
- tn = telnetlib.Telnet(host, 0)
- #
- try:
- vt.send(tn.read_until('login: ', 10))
- tn.write('cwilib\r')
- #
- vt.send(tn.read_until('Hit <RETURN> to continue...', 10))
- tn.write('\r')
- #
- vt.send(tn.read_until('QUIT', 20))
- except EOFError:
- sys.stderr.write('Connection closed prematurely\n')
- sys.exit(1)
- #
- define_screens(vt)
- matches = vt.which_screens()
- if 'menu' not in matches:
- sys.stderr.write('Main menu does not appear\n')
- sys.exit(1)
- #
- tn.write('\r\r')
- vt.open('Progress -- CWI Library')
- vt.set_debuglevel(0)
- ui = UserInterface()
- #
- while 1:
- try:
- data = tn.read_very_eager()
- except EOFError:
- stdwin.message('Connection closed--goodbye')
- break
- if data:
- print 'send...'
- vt.send(data)
- print 'send...done'
- continue
- event = stdwin.pollevent()
- if event:
- type, window, detail = event
- if window == None and type == WE_LOST_SEL:
- window = ui.queryform.window
- event = type, window, detail
- if type == WE_CLOSE:
- break
- if window in ui.windows:
- ui.dispatch(type, window, detail)
- elif window == vt.window:
- if type == WE_NULL:
- pass
- elif type == WE_COMMAND:
- if detail == WC_RETURN:
- tn.write('\r')
- elif detail == WC_BACKSPACE:
- tn.write('\b')
- elif detail == WC_TAB:
- tn.write('\t')
- elif detail == WC_UP:
- tn.write('\033[A')
- elif detail == WC_DOWN:
- tn.write('\033[B')
- elif detail == WC_RIGHT:
- tn.write('\033[C')
- elif detail == WC_LEFT:
- tn.write('\033[D')
- else:
- print '*** Command:', detail
- elif type == WE_CHAR:
- tn.write(detail)
- elif type == WE_DRAW:
- vt.draw(detail)
- elif type in (WE_ACTIVATE, WE_DEACTIVATE):
- pass
- else:
- print '*** VT100 event:', type, detail
- else:
- print '*** Alien event:', type, window, detail
- continue
- rfd, wfd, xfd = select.select([tn, stdwin], [], [])
-
-
-# Subroutine to define our screen recognition patterns
-
-def define_screens(vt):
- vt.define_screen('menu', {
- 'title': ('search', 0, 0, 80,
- ' SEARCH FUNCTIONS +OTHER FUNCTIONS '),
- })
- vt.define_screen('search', {
- 'title': ('search', 0, 0, 80, ' Search '),
- })
- vt.define_screen('shortlist', {'title': ('search', 0, 0, 80,
- ' Short-list')})
- vt.define_screen('showrecord', {
- 'title': ('search', 0, 0, 80, ' Show record '),
- })
- vt.define_screen('timelimit', {
- 'limit': ('search', 12, 0, 80, ' TIME LIMIT '),
- })
- vt.define_screen('attention', {
- 'BASE': ('copy', 0, 0, 0, 'search'),
- 'title': ('search', 10, 0, 80, ' ATTENTION ')})
- vt.define_screen('syntaxerror', {
- 'BASE': ('copy', 0, 0, 0, 'attention'),
- 'message': ('search', 12, 0, 80, ' Syntax error'),
- })
- vt.define_screen('emptyerror', {
- 'BASE': ('copy', 0, 0, 0, 'attention'),
- 'message': ('search', 12, 0, 80,
- ' Check your input. Search at least one term'),
- })
- vt.define_screen('unsortedwarning', {
- 'BASE': ('copy', 0, 0, 0, 'attention'),
- 'message': ('search', 12, 0, 80,
- ' Number of records exceeds sort limit'),
- })
- vt.define_screen('thereismore', {
- 'BASE': ('copy', 0, 0, 0, 'showrecord'),
- 'message': ('search', 15, 0, 80,
- 'There is more within this record. Use the arrow keys'),
- })
- vt.define_screen('nofurther', {
- 'BASE': ('copy', 0, 0, 0, 'showrecord'),
- 'message': ('search', 17, 0, 80, 'You cannot go further\.'),
- })
- vt.define_screen('nofurtherback', {
- 'BASE': ('copy', 0, 0, 0, 'showrecord'),
- 'message': ('search', 17, 0, 80,
- 'You cannot go further back'),
- })
-
-
-# Class to implement our user interface.
-
-class UserInterface:
-
- def __init__(self):
- stdwin.setfont('7x14')
- self.queryform = QueryForm()
- self.listform = ListForm()
- self.recordform = RecordForm()
- self.forms = [self.queryform, self.listform, self.recordform]
- define_query_fields(self.queryform)
- self.windows = []
- for form in self.forms:
- if form.formheight > 0:
- form.open()
- self.windows.append(form.window)
-
- def __del__(self):
- self.close()
-
- def close(self):
- for form in self.forms:
- form.close()
-
- def dispatch(self, type, window, detail):
- for form in self.forms:
- if window == form.window:
- form.dispatch(type, detail)
-
-
-def define_query_fields(f):
- f.define_field('name', 'Name auth./ed.', 1, 60)
- f.define_field('title', 'Title', 4, 60)
- f.define_field('shelfmark', 'Shelf mark', 1, 60)
- f.define_field('class', 'Prim. classif.', 1, 60)
- f.define_field('series', 'Series', 1, 60)
- f.define_field('congress', 'Congr. pl./year', 1, 60)
- f.define_field('type', 'Type', 1, 60)
-
-
-class QueryForm(Form):
-
- def __init__(self):
- Form.__init__(self, 'Query form -- CWI Library')
-
- def dispatch(self, type, detail):
- if type == WE_COMMAND and detail == WC_RETURN:
- print '*** SUBMIT ***'
- else:
- Form.dispatch(self, type, detail)
-
-
-class ListForm(Form):
-
- def __init__(self):
- Form.__init__(self, 'Short list -- CWI Library')
-
-
-class RecordForm(Form):
-
- def __init__(self):
- Form.__init__(self, 'Record detail -- CWI Library')
-
-
-main()