38 |
#define DISP_LR 0x251B |
#define DISP_LR 0x251B |
39 |
|
|
40 |
/* FIXME: These should be dynamically obtained from a terminal. */ |
/* FIXME: These should be dynamically obtained from a terminal. */ |
41 |
#define TERM_WIDTH (80 - 1) |
#define TERM_WIDTH 80 |
42 |
#define TERM_HEIGHT 25 |
#define TERM_HEIGHT 25 |
43 |
|
|
44 |
/* The number of lines of "GRUB version..." at the top. */ |
/* The number of lines of "GRUB version..." at the top. */ |
51 |
#define TERM_SCROLL_WIDTH 1 |
#define TERM_SCROLL_WIDTH 1 |
52 |
|
|
53 |
/* The Y position of the top border. */ |
/* The Y position of the top border. */ |
54 |
#define TERM_TOP_BORDER_Y (TERM_MARGIN + TERM_HEIGHT + TERM_MARGIN) |
#define TERM_TOP_BORDER_Y (TERM_MARGIN + TERM_INFO_HEIGHT + TERM_MARGIN) |
55 |
|
|
56 |
/* The X position of the left border. */ |
/* The X position of the left border. */ |
57 |
#define TERM_LEFT_BORDER_X TERM_MARGIN |
#define TERM_LEFT_BORDER_X TERM_MARGIN |
98 |
grub_putcode (DISP_HLINE); |
grub_putcode (DISP_HLINE); |
99 |
grub_putcode (DISP_UR); |
grub_putcode (DISP_UR); |
100 |
|
|
101 |
i = 1; |
for (i = 0; i < (unsigned) TERM_NUM_ENTRIES; i++) |
|
while (1) |
|
102 |
{ |
{ |
103 |
grub_gotoxy (TERM_MARGIN, TERM_TOP_BORDER_Y + i); |
grub_gotoxy (TERM_MARGIN, TERM_TOP_BORDER_Y + i + 1); |
|
|
|
|
if (i > (unsigned) TERM_NUM_ENTRIES) |
|
|
break; |
|
|
|
|
104 |
grub_putcode (DISP_VLINE); |
grub_putcode (DISP_VLINE); |
105 |
grub_gotoxy (TERM_MARGIN + TERM_BORDER_WIDTH - 1, TERM_TOP_BORDER_Y + i); |
grub_gotoxy (TERM_MARGIN + TERM_BORDER_WIDTH - 1, TERM_TOP_BORDER_Y + i + 1); |
106 |
grub_putcode (DISP_VLINE); |
grub_putcode (DISP_VLINE); |
|
|
|
|
i++; |
|
107 |
} |
} |
108 |
|
|
109 |
|
grub_gotoxy (TERM_MARGIN, TERM_TOP_BORDER_Y + TERM_NUM_ENTRIES + 1); |
110 |
grub_putcode (DISP_LL); |
grub_putcode (DISP_LL); |
111 |
for (i = 0; i < TERM_BORDER_WIDTH - 2; i++) |
for (i = 0; i < TERM_BORDER_WIDTH - 2; i++) |
112 |
grub_putcode (DISP_HLINE); |
grub_putcode (DISP_HLINE); |
113 |
grub_putcode (DISP_LR); |
grub_putcode (DISP_LR); |
114 |
|
|
115 |
grub_setcolorstate (GRUB_TERM_COLOR_STANDARD); |
grub_setcolorstate (GRUB_TERM_COLOR_STANDARD); |
116 |
|
|
117 |
|
grub_gotoxy (TERM_MARGIN, TERM_TOP_BORDER_Y + TERM_NUM_ENTRIES + TERM_MARGIN + 1); |
118 |
} |
} |
119 |
|
|
120 |
static void |
static void |
168 |
grub_gotoxy (TERM_LEFT_BORDER_X + TERM_MARGIN, y); |
grub_gotoxy (TERM_LEFT_BORDER_X + TERM_MARGIN, y); |
169 |
grub_putchar (' '); |
grub_putchar (' '); |
170 |
for (x = TERM_LEFT_BORDER_X + TERM_MARGIN + 1; |
for (x = TERM_LEFT_BORDER_X + TERM_MARGIN + 1; |
171 |
x < TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH - 1; |
x < TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH - TERM_MARGIN; |
172 |
x++) |
x++) |
173 |
{ |
{ |
174 |
if (*title && x <= TERM_LEFT_BORDER_X + TERM_ENTRY_WIDTH + 1) |
if (*title && x <= TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH - TERM_MARGIN - 1) |
175 |
{ |
{ |
176 |
if (x == TERM_LEFT_BORDER_X + TERM_ENTRY_WIDTH + 1) |
if (x == TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH - TERM_MARGIN - 1) |
177 |
grub_putcode (DISP_RIGHT); |
grub_putcode (DISP_RIGHT); |
178 |
else |
else |
179 |
grub_putchar (*title++); |
grub_putchar (*title++); |
192 |
grub_menu_entry_t e; |
grub_menu_entry_t e; |
193 |
int i; |
int i; |
194 |
|
|
195 |
grub_gotoxy (TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH + TERM_MARGIN, |
grub_gotoxy (TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH, |
196 |
TERM_FIRST_ENTRY_Y); |
TERM_FIRST_ENTRY_Y); |
197 |
|
|
198 |
if (first) |
if (first) |
209 |
e = e->next; |
e = e->next; |
210 |
} |
} |
211 |
|
|
212 |
grub_gotoxy (TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH + TERM_MARGIN, |
grub_gotoxy (TERM_LEFT_BORDER_X + TERM_BORDER_WIDTH, |
213 |
TERM_TOP_BORDER_Y + TERM_NUM_ENTRIES); |
TERM_TOP_BORDER_Y + TERM_NUM_ENTRIES); |
214 |
|
|
215 |
if (e) |
if (e) |