|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 6332 (0x18bc) Types: TextFile Names: »popup.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Src/MTAconsole/popup.c«
/* popup.c: pop up and down routines */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Src/MTAconsole/RCS/popup.c,v 5.0 90/09/20 16:20:10 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Src/MTAconsole/RCS/popup.c,v 5.0 90/09/20 16:20:10 pp Exp Locker: pp $ * * $Log: popup.c,v $ * Revision 5.0 90/09/20 16:20:10 pp * rcsforce : 5.0 public release * */ #include "console.h" extern Popup_menu *yesno, *one, *two, *three, *config, *qcontrol; extern Widget refresh_toggle, reconnect_toggle, backoff_toggle, top, mainform; extern XColor black, white; extern Pixel bg, fg; Popup_menu *currentpopup = NULL; extern Operations currentop; extern Heuristic newheur; Popup(this, op, x,y) Popup_menu *this; Operations op; int x, y; { int i; currentpopup = this; this->op = op; WidgetSet(this->popup, XtNx, x, XtNy, y, NULL); if (this != yesno && this != qcontrol) { switch (currentop) { case msgclear: case msgstart: case msgstop: case msgforce: this->selected = 1; break; default: this->selected = 0; break; } for (i = 0; i < this -> numberOftuples; i++) if (i != this -> selected) WidgetSet(this->tuple[i].text, XtNborderColor, bg, NULL); XtSetKeyboardFocus(this->form, this->tuple[this->selected].text); XtSetKeyboardFocus(top, this->tuple[this->selected].text); WidgetSet(this->tuple[this->selected].text, XtNborderColor, fg, NULL); } else XtSetKeyboardFocus(top, this->form); XtPopup(this->popup, XtGrabExclusive); } Popdown(this) Popup_menu *this; { currentpopup = NULL; if (this != NULL) { XtPopdown(this->popup); XtSetKeyboardFocus(top, mainform); } } /* \f */ /* routines to move selected fields in popups */ extern int newauth; extern Popup_menu *connectpopup; /* ARGSUSED */ void previousField(w, event, params, num_params) Widget w; XEvent *event; char **params; int num_params; { int old; if (currentpopup == NULL || currentpopup->numberOftuples < 2) return; old = currentpopup->selected; currentpopup->selected--; if (currentpopup->selected < 0) { if (currentpopup == connectpopup && newauth == False) currentpopup->selected = 1; else if (currentpopup == config) { switch(newheur) { case percentage: currentpopup->selected = MINBADMTA; break; case line: currentpopup->selected = LINEMAX; break; case all: currentpopup->selected = CONNECTMAX; break; } } else currentpopup->selected = currentpopup->numberOftuples -1; } else if (currentpopup == config && old == LINEMAX && newheur == line) currentpopup->selected = CONNECTMAX; XtSetKeyboardFocus(top, currentpopup->tuple[currentpopup->selected].text); XtSetKeyboardFocus(currentpopup->form, currentpopup->tuple[currentpopup->selected].text); WidgetSet(currentpopup->tuple[currentpopup->selected].text, XtNborderColor, fg, NULL); WidgetSet(currentpopup->tuple[old].text, XtNborderColor, bg, NULL); } /* ARGSUSED */ void thisField(w, event, params, num_params) Widget w; XEvent *event; char **params; int num_params; { int ix; if (currentpopup == NULL || currentpopup->numberOftuples < 2) return; ix = 0; while (ix < currentpopup->numberOftuples && currentpopup->tuple[ix].text != w) ix++; if (ix >= currentpopup->numberOftuples) return; WidgetSet(currentpopup->tuple[currentpopup->selected].text, XtNborderColor, bg, NULL); currentpopup->selected = ix; WidgetSet(currentpopup->tuple[currentpopup->selected].text, XtNborderColor, fg, NULL); XtSetKeyboardFocus(top, currentpopup->tuple[currentpopup->selected].text); XtSetKeyboardFocus(currentpopup->form, currentpopup->tuple[currentpopup->selected].text); } /* ARGSUSED */ void nextField(w, event, params, num_params) Widget w; XEvent *event; char **params; int num_params; { int old; if (currentpopup == NULL || currentpopup->numberOftuples < 2) return; old = currentpopup->selected; currentpopup->selected++; if (currentpopup->selected >= currentpopup->numberOftuples) currentpopup->selected = 0; if (currentpopup == connectpopup && newauth == False && currentpopup->selected > 1) currentpopup->selected = 0; if (currentpopup == config && currentpopup->selected > CONNECTMAX) { switch (newheur) { case percentage: if (currentpopup->selected > MINBADMTA) currentpopup->selected = 0; break; case line: currentpopup->selected = LINEMAX; break; case all: currentpopup->selected = 0; } } XtSetKeyboardFocus(top, currentpopup->tuple[currentpopup->selected].text); XtSetKeyboardFocus(currentpopup->form, currentpopup->tuple[currentpopup->selected].text); WidgetSet(currentpopup->tuple[currentpopup->selected].text, XtNborderColor, fg, NULL); WidgetSet(currentpopup->tuple[old].text, XtNborderColor, bg, NULL); } /* ARGSUSED */ void mymenupopdown(w, event) Widget w; XEvent *event; { Popdown(currentpopup); } extern char password[]; #define STRBUFSIZE 100 static XComposeStatus compose_status = {NULL, 0}; /* ARGSUSED */ void myinsert_char(w, event) Widget w; XKeyEvent *event; { char strbuf[STRBUFSIZE], xbuf[STRBUFSIZE]; int ix; KeySym keycode; int length, passwdlen; XtTextBlock text; length = XLookupString(event, strbuf, STRBUFSIZE, &keycode, &compose_status); if (length == 0) return; passwdlen = strlen(password); strncat(password, strbuf, length); password[length+passwdlen] = '\0'; text.length = length; for (ix = 0; ix < length; ix++) xbuf[ix] = 'X'; if (length == 1 && strbuf[0] == '\?') text.ptr = &strbuf[0]; else text.ptr = &xbuf[0]; text.firstPos = 0; XtTextReplace(w, (XtTextPosition) 0, (XtTextPosition) 0, &text); } /* ARGSUSED */ void mydelete_char(w, event) Widget w; XEvent *event; { char xbuf[STRBUFSIZE]; int ix; int passwdlen; passwdlen = strlen(password) -1; if (passwdlen >= 0) { password[passwdlen] = '\0'; for (ix = 0; ix < passwdlen; ix++) xbuf[ix] = 'X'; xbuf[passwdlen] = '\0'; textdisplay(&(connectpopup->tuple[3]), xbuf); } }