|
|
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);
}
}