mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-14 10:09:48 +00:00
Nuke edit_line crawled in again. Change all occurances to line_edit.
This commit is contained in:
parent
193ef50ab2
commit
8fbd0636ed
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=4655
@ -51,150 +51,3 @@ change_field(struct field field, int key)
|
||||
}
|
||||
return (next);
|
||||
}
|
||||
|
||||
int
|
||||
edit_line(WINDOW *window, int y, int x, char *field, int width, int maxlen)
|
||||
{
|
||||
int len;
|
||||
int key = 0;
|
||||
int fpos, dispos, curpos;
|
||||
int i;
|
||||
int done = 0;
|
||||
|
||||
len = strlen(field);
|
||||
if (len < width) {
|
||||
fpos = len;
|
||||
curpos = len;
|
||||
dispos = 0;
|
||||
} else {
|
||||
fpos = width;
|
||||
curpos = width;
|
||||
dispos = len - width;
|
||||
};
|
||||
|
||||
|
||||
do {
|
||||
wattrset(window, item_selected_attr);
|
||||
wmove(window, y, x);
|
||||
for (i=0; i < width; i++)
|
||||
if (i < (len - dispos))
|
||||
waddch(window, field[dispos+i]);
|
||||
else
|
||||
waddch(window, ' ');
|
||||
wmove(window, y, x + curpos);
|
||||
wrefresh(window);
|
||||
|
||||
key = wgetch(window);
|
||||
switch (key) {
|
||||
case TAB:
|
||||
case KEY_BTAB:
|
||||
case KEY_UP:
|
||||
case KEY_DOWN:
|
||||
case ESC:
|
||||
case '\n':
|
||||
case '\r':
|
||||
done = 1;
|
||||
break;
|
||||
case KEY_HOME:
|
||||
if (len < width) {
|
||||
fpos = len;
|
||||
curpos = len;
|
||||
dispos = 0;
|
||||
} else {
|
||||
fpos = width;
|
||||
curpos = width;
|
||||
dispos = len - width;
|
||||
};
|
||||
break;
|
||||
case KEY_END:
|
||||
if (len < width) {
|
||||
dispos = 0;
|
||||
curpos = len - 1;
|
||||
} else {
|
||||
dispos = len - width - 1;
|
||||
curpos = width - 1;
|
||||
}
|
||||
fpos = len - 1;
|
||||
break;
|
||||
case KEY_LEFT:
|
||||
if ((!curpos) && (!dispos)) {
|
||||
beep();
|
||||
break;
|
||||
}
|
||||
if (--curpos < 0) {
|
||||
curpos = 0;
|
||||
if (--dispos < 0)
|
||||
dispos = 0;
|
||||
}
|
||||
if (--fpos < 0)
|
||||
fpos = 0;
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
if ((curpos + dispos) == len) {
|
||||
beep();
|
||||
break;
|
||||
}
|
||||
if ((curpos == (width-1)) && (dispos == (maxlen - width -1))) {
|
||||
beep();
|
||||
break;
|
||||
}
|
||||
if (++curpos >= width) {
|
||||
curpos = width - 1;
|
||||
dispos++;
|
||||
}
|
||||
if (dispos >= len)
|
||||
dispos = len - 1;
|
||||
if (++fpos >= len) {
|
||||
fpos = len;
|
||||
}
|
||||
break;
|
||||
case KEY_BACKSPACE:
|
||||
case KEY_DC:
|
||||
if ((!curpos) && (!dispos)) {
|
||||
beep();
|
||||
break;
|
||||
}
|
||||
if (fpos > 0) {
|
||||
memmove(field+fpos-1, field+fpos, len - fpos);
|
||||
len--;
|
||||
fpos--;
|
||||
if (curpos > 0)
|
||||
--curpos;
|
||||
if (!curpos)
|
||||
--dispos;
|
||||
if (dispos < 0)
|
||||
dispos = 0;
|
||||
} else
|
||||
beep();
|
||||
break;
|
||||
default:
|
||||
if (len < maxlen - 1) {
|
||||
memmove(field+fpos+1, field+fpos, len - fpos);
|
||||
field[fpos] = key;
|
||||
len++;
|
||||
fpos++;
|
||||
if (++curpos == width) {
|
||||
--curpos;
|
||||
dispos++;
|
||||
}
|
||||
if (len == (maxlen - 1)) {
|
||||
dispos = (maxlen - width - 1);
|
||||
}
|
||||
} else
|
||||
beep();
|
||||
break;
|
||||
}
|
||||
} while (!done);
|
||||
wattrset(window, dialog_attr);
|
||||
wmove(window, y, x);
|
||||
for (i=0; i < width; i++)
|
||||
if (i < (len - dispos))
|
||||
waddch(window, field[dispos+i]);
|
||||
else
|
||||
waddch(window, ' ');
|
||||
wmove(window, y, x + curpos);
|
||||
wstandend(window);
|
||||
field[len] = 0;
|
||||
wrefresh(window);
|
||||
return (key);
|
||||
}
|
||||
|
@ -16,4 +16,3 @@ struct field {
|
||||
|
||||
int disp_fields(WINDOW *, struct field *, int);
|
||||
int change_field(struct field, int);
|
||||
int edit_line(WINDOW *, int, int, char *, int, int);
|
||||
|
@ -180,11 +180,13 @@ edit_disklabel(int disk)
|
||||
}
|
||||
|
||||
disp_fields(window, label_field, sizeof(label_field)/sizeof(struct field));
|
||||
key = edit_line(window, label_field[cur_field].y,
|
||||
label_field[cur_field].x,
|
||||
label_field[cur_field].field,
|
||||
label_field[cur_field].width,
|
||||
label_field[cur_field].maxlen);
|
||||
key = line_edit(window, label_field[cur_field].y,
|
||||
label_field[cur_field].x,
|
||||
label_field[cur_field].width,
|
||||
label_field[cur_field].maxlen,
|
||||
item_selected_attr,
|
||||
1,
|
||||
label_field[cur_field].field);
|
||||
next = change_field(label_field[cur_field], key);
|
||||
if (next == -1)
|
||||
beep();
|
||||
|
@ -254,9 +254,12 @@ get_geom_values(int disk)
|
||||
sprintf(field[2].field, "%ld", lbl->d_nsectors);
|
||||
|
||||
disp_fields(window, field, sizeof(field)/sizeof(struct field));
|
||||
key = edit_line(window, field[cur_field].y, field[cur_field].x,
|
||||
field[cur_field].field, field[cur_field].width,
|
||||
field[cur_field].maxlen);
|
||||
key = line_edit(window, field[cur_field].y, field[cur_field].x,
|
||||
field[cur_field].width,
|
||||
field[cur_field].maxlen,
|
||||
item_selected_attr,
|
||||
1,
|
||||
field[cur_field].field);
|
||||
next = change_field(field[cur_field], key);
|
||||
if (next == -1)
|
||||
beep();
|
||||
@ -353,9 +356,12 @@ edit_mbr(int disk)
|
||||
}
|
||||
|
||||
disp_fields(window, mbr_field, sizeof(mbr_field)/sizeof(struct field));
|
||||
key = edit_line(window, mbr_field[cur_field].y, mbr_field[cur_field].x,
|
||||
mbr_field[cur_field].field, mbr_field[cur_field].width,
|
||||
mbr_field[cur_field].maxlen);
|
||||
key = line_edit(window, mbr_field[cur_field].y, mbr_field[cur_field].x,
|
||||
mbr_field[cur_field].width,
|
||||
mbr_field[cur_field].maxlen,
|
||||
item_selected_attr,
|
||||
1,
|
||||
mbr_field[cur_field].field);
|
||||
|
||||
/* Propagate changes to MBR */
|
||||
for (i=0; i < NDOSPART; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user