diff options
Diffstat (limited to 'src/hyper/keyin.pamphlet')
-rw-r--r-- | src/hyper/keyin.pamphlet | 340 |
1 files changed, 0 insertions, 340 deletions
diff --git a/src/hyper/keyin.pamphlet b/src/hyper/keyin.pamphlet deleted file mode 100644 index c1e5f267..00000000 --- a/src/hyper/keyin.pamphlet +++ /dev/null @@ -1,340 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/keyin} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{keyin.h} -<<keyin.h>>= -<<license>> -#ifndef _KEYIN_H_ -#define _KEYIN_H_ 1 - -extern int in_cursor_height; -extern int in_cursor_width; -extern int out_cursor_height; -extern int out_cursor_width; -extern int in_cursor_y; -extern int out_cursor_y; -extern int start_x; -extern int start_y; -extern int simple_box_width; - -extern int gInInsertMode; - -extern unsigned int ModifiersMask; -extern unsigned int ShiftModMask; - - -#endif -@ -\section{keyin.c} -<<keyin.c>>= -/****************************************************************************** - * - * keyin.c: - * - * Copyright The Numerical Algorithms Group Limited 1991, 1992, 1993. - * - ****************************************************************************/ -#define _KEYIN_C -#include "axiom-c-macros.h" -#include "useproto.h" -#include "debug.h" - - -#include "hyper.h" -#include "keyin.h" -#include "event.h" -#include "dialog.h" -#include "parse.h" -#include "parse-aux.h" -#include "scrollbar.h" - -#include "all_hyper_proto.H1" -#include <X11/keysym.h> - - -#define min(x,y) ( (x<y)?(x):(y)) - -int in_cursor_height; -int in_cursor_width; -int out_cursor_height; -int out_cursor_width; -int in_cursor_y; -int out_cursor_y; -int start_x; -int start_y; -int simple_box_width; -int gInInsertMode = 0; - -unsigned int ModifiersMask = ShiftMask | LockMask | ControlMask - | Mod1Mask | Mod2Mask | Mod3Mask - | Mod4Mask | Mod5Mask; - -unsigned int ShiftModMask = LockMask | ControlMask - | Mod1Mask | Mod2Mask | Mod3Mask - | Mod4Mask | Mod5Mask; - - -/* - * Since the user can't tell me directly what name to use here, I am going to - * let it be a default property. This way the user can link to whatever page - * he/she wants. If it is a link right to the quit page, then I will just - * quit right away. Otherwise I will try to find the page, and display it. - */ - -static char *protected_quit; - -HyperLink *quitLink; /** the global link to the quit page ***/ - -void -handle_key(XEvent *event) -{ - char key_buffer[20]; - int key_buffer_size = 20; - KeySym keysym; - XComposeStatus compstatus; - int charcount; - int display_again = 0; - char *name; - char *filename; - /*char *head = "echo htadd -l ";*/ - /*char *blank1 = " ";*/ - /*char *blank2 = " \n";*/ - char buffer[180]; - FILE *filehandle; - - charcount = XLookupString((XKeyEvent *)event, key_buffer, key_buffer_size, &keysym ,&compstatus); /* 5 args */ - - key_buffer[charcount] = '\0'; - switch (keysym) { - case XK_Prior: - case XK_F29: - scrollUpPage(); - break; - case XK_Next: - case XK_F35: - scrollDownPage(); - break; - case XK_F3: - case XK_F12: - quitHyperDoc(); - break; - case XK_F5: - if (event->xkey.state & ShiftMask) { - name = gWindow->page->name; - filename = gWindow->page->filename; - sprintf(buffer, "htadd -l %s\n", filename); - system(buffer); - filehandle = (FILE *) hash_find(&gFileHashTable, filename); - fclose(filehandle); - hash_delete(&gFileHashTable, filename); - gWindow->fMacroHashTable = - (HashTable *) halloc(sizeof(HashTable), "macro hash"); - hash_init( - gWindow->fMacroHashTable, - MacroHashSize, - (EqualFunction ) string_equal, - (HashcodeFunction) string_hash); - gWindow->fPatchHashTable = (HashTable *) halloc(sizeof(HashTable), "patch hash"); - hash_init( - gWindow->fPatchHashTable, - PatchHashSize, - (EqualFunction ) string_equal, - (HashcodeFunction) string_hash); - gWindow->fPasteHashTable = (HashTable *) halloc(sizeof(HashTable), "paste hash"); - hash_init(gWindow->fPasteHashTable, - PasteHashSize, - (EqualFunction ) string_equal, - (HashcodeFunction) string_hash); - gWindow->fCondHashTable = (HashTable *) halloc(sizeof(HashTable), "cond hash"); - hash_init( - gWindow->fCondHashTable, - CondHashSize, - (EqualFunction ) string_equal, - (HashcodeFunction) string_hash); - gWindow->fPageHashTable = (HashTable *) halloc(sizeof(HashTable), "page hash"); - hash_init( - gWindow->fPageHashTable, - PageHashSize, - (EqualFunction ) string_equal, - (HashcodeFunction) string_hash); - make_special_pages(gWindow->fPageHashTable); - read_ht_db( - gWindow->fPageHashTable, - gWindow->fMacroHashTable, - gWindow->fPatchHashTable); - gWindow->page = (HyperDocPage *) hash_find(gWindow->fPageHashTable, name); - if (gWindow->page == NULL) { - fprintf(stderr, "lose...gWindow->page for %s is null\n", name); - exit(-1); - } - display_again = 1; - } - break; - case XK_F9: - make_window_link(KeyDefsHelpPage); - break; - case XK_Tab: - if (event->xkey.state & ShiftMask) - prev_input_focus(); - else if (event->xkey.state & ModifiersMask) - BeepAtTheUser(); - else - next_input_focus(); - break; - case XK_Return: - if (!(event->xkey.state & ShiftMask)) { - next_input_focus(); - break; - } - - /* next ones fall through to input area handling */ - - case XK_Escape: - if (!gWindow->page->current_item) - break; - case XK_F1: - if (!gWindow->page->current_item) { - gWindow->page->helppage = alloc_string(NoMoreHelpPage); - helpForHyperDoc(); - break; - } - case XK_Home: - if (!gWindow->page->current_item) { - scrollToFirstPage(); - break; - } - case XK_Up: - if (!gWindow->page->current_item) { - scrollUp(); - break; - } - case XK_Down: - if (!gWindow->page->current_item) { - scrollDown(); - break; - } - - default: - display_again = 0; - dialog(event, keysym, key_buffer); - XFlush(gXDisplay); - break; - } - - if (display_again) { - display_page(gWindow->page); - gWindow->fWindowHashTable = gWindow->page->fLinkHashTable; - } -} - - -/* - * This routine initializes some of the variables needed by the input - * strings, and boxes. - */ - -void -init_keyin(void) -{ - char *prop; - - /* - * First set all the values for when the active cursor is in the window - */ - - in_cursor_height = 2; - in_cursor_y = gInputFont->max_bounds.ascent + - gInputFont->max_bounds.descent; - in_cursor_width = gInputFont->max_bounds.width; - - /* - * Now for when the cursor is empty - */ - - out_cursor_height = gInputFont->max_bounds.ascent + - gInputFont->max_bounds.descent; - out_cursor_y = 2; - out_cursor_width = in_cursor_width; - - start_x = 5; - - start_y = gInputFont->max_bounds.ascent; - - /* - * Find out How big I should make the simple boxes - */ - - simple_box_width = XTextWidth(gInputFont, "X", 1) + 5; - - prop = XGetDefault(gXDisplay, gArgv[0], "ProtectedQuit"); - - if (prop == NULL) { - protected_quit = (char *) halloc(strlen("ProtectedPage") + 1, - "protected_quit"); - strcpy(protected_quit, "ProtectedPage"); - } - else { - protected_quit = (char *) halloc(strlen(prop) + 1, "protected_quit"); - strcpy(protected_quit, prop); - } - - -} -@ -\section{License} -<<license>>= -/* -Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - - Neither the name of The Numerical ALgorithms Group Ltd. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -@ -<<*>>= -<<license>> -<<keyin.c>> -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} - - - - |