Thread View: comp.windows.misc
1 messages
1 total messages
Started by nico nieh
Wed, 03 Feb 1988 21:41
need help on Common-Window/KEE/IntelliCorp
Author: nico nieh
Date: Wed, 03 Feb 1988 21:41
Date: Wed, 03 Feb 1988 21:41
170 lines
6092 bytes
6092 bytes
I am doing some software development on KEE (Knowledge
Engineering Environment, IntelliCorp). I tried to
display a large file using Common-Window with extent
scrolling feature and each token (word) is represented as a hostspot.
Users may use mouse to pick up any token and to click a mouse button
to activate an action. It worked OK. However the scrolling
is extremely slow. I knew that I must did something stupid.
Related code is enclosed. Can any one out there give me some help?
Thanks in advance,
PS: Please forward this message to whomever who may help me out.
--------cut-------cut-------cut------------
;; -*- Mode: LISP; Syntax:Common-lisp; Package:KEE; Base:10. -*-
(defvar ww nil) ;; working window
(defvar *working-file-name* nil)
(defvar *active-hs* nil)
(defun make-fop-window ()
(setq ww (make-window-stream :left 10
:bottom 10
:width 1100
:height 800
:inner-left 10
:inner-bottom 10
:activate-p t
:title "FOP Parsing Table Generator"
:parent *kee-root-window*
:font-set (list (open-font 'fixed-width
'plain
'medium))))
)
(defvar *script-file* nil)
(defvar *text* nil)
(defun initialize-everything (file-name)
(setq *text* nil)
(setq *text* (revert-buffer-file file-name))
)
(defun fop (&optional (file-name "c.dat") (script-file "script.lisp"))
(setq *script-file* script-file)
(setq *working-file-name* file-name)
(make-fop-window)
(initialize-everything file-name)
(enable-window-stream-extent-scrolling ww)
(setf (window-stream-extent-height ww) 3000)
(setf (window-stream-repaint ww) 'test-repaint)
(setf (window-stream-button ww) 'button-fn)
(setf (window-stream-y-offset ww) 2250)
(repaint ww)
)
(defun test-repaint (window region)
(setf (window-stream-hotspot-list window) nil)
(bitblt window
(window-stream-x-offset window)
(window-stream-y-offset window)
window
(window-stream-x-offset window)
(window-stream-y-offset window)
(window-stream-inner-width window)
(window-stream-inner-height window)
boole-clr)
(setf (window-stream-x-position window) 0)
(setf (window-stream-y-position window) (- (window-stream-extent-height window)
(window-stream-ascent window)))
(write-title ww (concat "FOP working buffer "
" ---------- "
*working-file-name*))
(setq khn *text*)
(do (tmp line line-id word-id (seg-id 1)) ((null khn))
(if (< (nth 0 (car khn)) 0)
(progn
(format ww "~2D --: " seg-id)
(setq seg-id (1+ seg-id)))
(format ww "~5D: " (nth 0 (car khn))))
(setq line-id (nth 0 (car khn)))
(setq line (nth 1 (car khn)))
(setq word-id 0)
(setq tmp (break-line line))
(do (str ) ((null tmp))
(setq str (car tmp))
(if (eq '#\space (char str 0))
(format ww str)
(progn
(generate-hotspot
(window-stream-x-position window)
(window-stream-y-position window)
str line-id word-id window)
(setq word-id (1+ word-id))))
(setq tmp (cdr tmp)))
(terpri window)
(setq khn (cdr khn)))
)
(defstruct HOTSPOT region)
(defstruct (MY-HOTSPOT
(:include hotspot))
menu-to-pop-up
yes-no-menu
line-id word-id
function-to-call)
(defun generate-hotspot (x y text line-id word-id window
&optional
(function-to-call 'default-fn)
(menu insert-mark-menu)
(y-or-n-menu yes-or-no-menu))
(let* ((old-hs (window-stream-hotspot-list window))
(hs (make-my-hotspot))
(font (window-stream-font window))
(width (font-string-width font text))
(height (font-character-height font)))
(setf (window-stream-x-position window) x)
(setf (window-stream-y-position window) y)
(format window text)
(setf (my-hotspot-region hs)
(make-region :left x
:bottom (- y (window-stream-baseline window))
:width width :height height))
(setf (my-hotspot-function-to-call hs) function-to-call)
(setf (my-hotspot-menu-to-pop-up hs) menu)
(setf (my-hotspot-line-id hs) line-id)
(setf (my-hotspot-word-id hs) word-id)
(setf (my-hotspot-yes-no-menu hs) y-or-n-menu)
(setf (window-stream-hotspot-list window)
(cons hs old-hs))))
(defun button-fn (window mouse-state)
(let ((hs (hotspot-under-position window
(mouse-state-position mouse-state))))
(if hs
(progn
(setq *active-hs* hs)
(funcall (my-hotspot-function-to-call hs) window mouse-state hs))
(documentation-print "nothing is picked"))
))
(defun default-fn (window mouse-state hs)
(let ((region (my-hotspot-region hs)))
(bitblt window
(region-left region) (region-bottom region)
window
(region-left region) (region-bottom region)
(region-width region) (region-height region)
boole-c1)
(if (equal *hs-action-type* 'select-any-key-word)
(pop-up-cascading-menu-choose (my-hotspot-yes-no-menu hs))
(pop-up-cascading-menu-choose (my-hotspot-menu-to-pop-up hs)))
(bitblt window
(region-left region) (region-bottom region)
window
(region-left region) (region-bottom region)
(region-width region) (region-height region)
boole-c1)))
Ko-Haw Nieh
General Electric Company | ARPA: nieh@ge-crd.arpa
Corporate Research and Development | UUCP: nieh@moose.steinmetz.ge.com
P.O BOX 8, K1-ES224 | UUCP: {uunet!}steinmetz!nieh!crd
Schenectady, NY 12301 | 518-387-7431
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads