40,16 → 40,16 |
/***************************************************************************** |
* global variables and definitions * |
*****************************************************************************/ |
#define COL_TXT 0 |
#define COL_STATUSBAR1 1 |
#define COL_STATUSBAR2 2 |
#define COL_STATUSBAR3 3 |
#define COL_SCROLLBAR 4 |
#define COL_MSG 5 |
#define COL_ERR 6 |
|
/* preload the mono scheme (to be overloaded at runtime if color adapter present) */ |
static unsigned char scheme[] = {0x07, 0x70, 0x70, 0xf0, 0x70, 0x70, 0xf0}; |
// 11 524 |
static unsigned char SCHEME_TEXT = 0x07, |
SCHEME_STBAR1 = 0x70, |
SCHEME_STBAR2 = 0x70, |
SCHEME_STBAR3 = 0xf0, |
SCHEME_SCROLL = 0x70, |
SCHEME_MSG = 0x70, |
SCHEME_ERR = 0xf0; |
|
static unsigned char screenw, screenh; |
|
120,8 → 120,8 |
y = screenh - 1; |
|
/* print query string */ |
x = mdr_cout_str(y, 0, query, scheme[COL_STATUSBAR3], 40); |
mdr_cout_char_rep(y, x++, ' ', scheme[COL_STATUSBAR3], screenw - x); |
x = mdr_cout_str(y, 0, query, SCHEME_STBAR3, 40); |
mdr_cout_char_rep(y, x++, ' ', SCHEME_STBAR3, screenw - x); |
|
for (;;) { |
mdr_cout_locate(y, x + len); |
136,12 → 136,12 |
|
if ((k == 0x08) && (len > 0)) { /* BKSPC */ |
len--; |
mdr_cout_char(y, x + len, ' ', scheme[COL_STATUSBAR3]); |
mdr_cout_char(y, x + len, ' ', SCHEME_STBAR3); |
continue; |
} |
|
if ((k <= 0xff) && (k >= ' ') && (len < maxlen)) { |
mdr_cout_char(y, x + len, k, scheme[COL_STATUSBAR3]); |
mdr_cout_char(y, x + len, k, SCHEME_STBAR3); |
s[len++] = k; |
} |
|
174,29 → 174,18 |
} |
|
|
static void load_colorscheme(void) { |
scheme[COL_TXT] = 0x17; |
scheme[COL_STATUSBAR1] = 0x70; |
scheme[COL_STATUSBAR2] = 0x78; |
scheme[COL_STATUSBAR3] = 0xf0; |
scheme[COL_SCROLLBAR] = 0x70; |
scheme[COL_MSG] = 0xf0; |
scheme[COL_ERR] = 0x4f; |
} |
|
|
static void ui_basic(const struct file *db) { |
const char *s = svarlang_strid(0); /* HELP */ |
unsigned char helpcol = screenw - (strlen(s) + 4); |
|
/* fill status bar with background (without modflag as it is refreshed by ui_refresh) */ |
mdr_cout_char_rep(screenh - 1, 1, ' ', scheme[COL_STATUSBAR1], screenw - 1); |
mdr_cout_char_rep(screenh - 1, 1, ' ', SCHEME_STBAR1, screenw - 1); |
|
/* filename */ |
{ |
const char *fn = db->fname; |
if (*fn == 0) fn = svarlang_str(0, 1); |
mdr_cout_str(screenh - 1, 1, fn, scheme[COL_STATUSBAR1], screenw); |
mdr_cout_str(screenh - 1, 1, fn, SCHEME_STBAR1, screenw); |
} |
|
/* eol type */ |
203,11 → 192,11 |
{ |
const char *eoltype = "CRLF"; |
if (db->lfonly) eoltype = "LF"; |
mdr_cout_str(screenh - 1, helpcol - 5, eoltype, scheme[COL_STATUSBAR1], 5); |
mdr_cout_str(screenh - 1, helpcol - 5, eoltype, SCHEME_STBAR1, 5); |
} |
|
mdr_cout_str(screenh - 1, helpcol, " F1=", scheme[COL_STATUSBAR2], 40); |
mdr_cout_str(screenh - 1, helpcol + 4, s, scheme[COL_STATUSBAR2], 40); |
mdr_cout_str(screenh - 1, helpcol, " F1=", SCHEME_STBAR2, 40); |
mdr_cout_str(screenh - 1, helpcol + 4, s, SCHEME_STBAR2, 40); |
} |
|
|
240,17 → 229,17 |
offset = (screenw - MAXLINLEN + 2) >> 1; |
mdr_cout_cursor_hide(); |
for (i = 2; i <= 15; i++) { |
mdr_cout_char_rep(i, offset - 2, ' ', scheme[COL_STATUSBAR1], MAXLINLEN + 2); |
mdr_cout_char_rep(i, offset - 2, ' ', SCHEME_STBAR1, MAXLINLEN + 2); |
} |
|
mdr_cout_str(3, offset, svarlang_str(0, 0), scheme[COL_STATUSBAR1], MAXLINLEN); |
mdr_cout_str(3, offset, svarlang_str(0, 0), SCHEME_STBAR1, MAXLINLEN); |
for (i = 0; i <= 4; i++) { |
mdr_cout_str(5 + i, offset, svarlang_str(8, i), scheme[COL_STATUSBAR1], MAXLINLEN); |
mdr_cout_str(5 + i, offset, svarlang_str(8, i), SCHEME_STBAR1, MAXLINLEN); |
} |
mdr_cout_str(5 + 1 + i, offset, svarlang_str(8, 10), scheme[COL_STATUSBAR1], MAXLINLEN); |
mdr_cout_str(5 + 1 + i, offset, svarlang_str(8, 10), SCHEME_STBAR1, MAXLINLEN); |
|
/* Press any key */ |
mdr_cout_str(14, offset, svarlang_str(8, 11), scheme[COL_STATUSBAR1], MAXLINLEN); |
mdr_cout_str(14, offset, svarlang_str(8, 11), SCHEME_STBAR1, MAXLINLEN); |
|
keyb_getkey(); |
mdr_cout_cursor_show(); |
287,14 → 276,14 |
} else { |
limit = db->xoffset + screenw - 1; |
} |
for (i = db->xoffset; i < limit; i++) mdr_cout_char(y, x++, l->payload[i], scheme[COL_TXT]); |
for (i = db->xoffset; i < limit; i++) mdr_cout_char(y, x++, l->payload[i], SCHEME_TEXT); |
} |
|
/* write empty spaces until end of line */ |
if (x < screenw - 1) mdr_cout_char_rep(y, x, ' ', scheme[COL_TXT], screenw - 1 - x); |
if (x < screenw - 1) mdr_cout_char_rep(y, x, ' ', SCHEME_TEXT, screenw - 1 - x); |
|
#ifdef DBG_REFRESH |
mdr_cout_char(y, 0, m, scheme[COL_STATUSBAR1]); |
mdr_cout_char(y, 0, m, SCHEME_STBAR1); |
#endif |
|
if (y == screenh - 2) break; |
303,7 → 292,7 |
/* fill all lines below if empty (and they need to be redrawn) */ |
if (l == NULL) { |
while ((y < screenh - 1) && (y < uidirty.to)) { |
mdr_cout_char_rep(y++, 0, ' ', scheme[COL_TXT], screenw - 1); |
mdr_cout_char_rep(y++, 0, ' ', SCHEME_TEXT, screenw - 1); |
} |
} |
|
311,12 → 300,12 |
{ |
char flg = ' '; |
if (db->modflag) flg = '*'; |
mdr_cout_char(screenh - 1, 0, flg, scheme[COL_STATUSBAR1]); |
mdr_cout_char(screenh - 1, 0, flg, SCHEME_STBAR1); |
} |
|
/* scroll bar */ |
for (y = 0; y < (screenh - 1); y++) { |
mdr_cout_char(y, screenw - 1, SCROLL_CURSOR, scheme[COL_SCROLLBAR]); |
mdr_cout_char(y, screenw - 1, SCROLL_CURSOR, SCHEME_SCROLL); |
} |
|
/* scroll cursor */ |
330,7 → 319,7 |
col = topline * (screenh - 1) / totlines; |
} |
if (col >= screenh - 1) col = screenh - 2; |
mdr_cout_char(col, screenw - 1, ' ', scheme[COL_SCROLLBAR]); |
mdr_cout_char(col, screenw - 1, ' ', SCHEME_SCROLL); |
} |
} |
|
695,7 → 684,16 |
db = loadfile(fname); |
if (db == NULL) return(1); |
|
if (mdr_cout_init(&screenw, &screenh)) load_colorscheme(); |
if (mdr_cout_init(&screenw, &screenh)) { |
/* load color scheme if mdr_cout_init returns a color flag */ |
SCHEME_TEXT = 0x17; |
SCHEME_STBAR1 = 0x70; |
SCHEME_STBAR2 = 0x78; |
SCHEME_STBAR3 = 0xf0; |
SCHEME_SCROLL = 0x70; |
SCHEME_MSG = 0xf0; |
SCHEME_ERR = 0x4f; |
} |
ui_basic(db); |
|
for (;;) { |
721,7 → 719,7 |
ddd[5] = '0' + (db->totlines % 100) / 10; |
ddd[6] = '0' + (db->totlines % 10); |
ddd[7] = 0; |
mdr_cout_str(screenh - 1, 40, ddd, scheme[COL_STATUSBAR1], sizeof(ddd)); |
mdr_cout_str(screenh - 1, 40, ddd, SCHEME_STBAR1, sizeof(ddd)); |
} |
#endif |
|
754,7 → 752,7 |
} else if (k == 0x1B) { /* ESC */ |
if (db->modflag == 0) break; |
/* if file has been modified then ask for confirmation */ |
ui_msg(svarlang_str(0,4), svarlang_str(0,5), scheme[COL_MSG]); |
ui_msg(svarlang_str(0,4), svarlang_str(0,5), SCHEME_MSG); |
if (keyb_getkey() == '\r') break; |
|
} else if (k == 0x0D) { /* ENTER */ |
809,10 → 807,10 |
|
if (saveres == 0) { |
db->modflag = 0; |
ui_msg(svarlang_str(0, 2), NULL, scheme[COL_MSG]); |
ui_msg(svarlang_str(0, 2), NULL, SCHEME_MSG); |
mdr_bios_tickswait(11); /* 11 ticks is about 600 ms */ |
} else { |
ui_msg(svarlang_str(0, 3), NULL, scheme[COL_ERR]); |
ui_msg(svarlang_str(0, 3), NULL, SCHEME_ERR); |
mdr_bios_tickswait(36); /* 2s */ |
} |
|
856,6 → 854,7 |
if ((db->cursorposx == 0) && (db->xoffset == 0)) break; |
} |
|
#ifdef DBG_UNHKEYS |
} else { /* UNHANDLED KEY - TODO IGNORE THIS IN PRODUCTION RELEASE */ |
char buff[4]; |
const char *HEX = "0123456789ABCDEF"; |
862,10 → 861,11 |
buff[0] = HEX[(k >> 8) & 15]; |
buff[1] = HEX[(k >> 4) & 15]; |
buff[2] = HEX[k & 15]; |
mdr_cout_str(screenh - 1, 0, "UNHANDLED KEY: 0x", scheme[COL_STATUSBAR1], 17); |
mdr_cout_str(screenh - 1, 17, buff, scheme[COL_STATUSBAR1], 3); |
mdr_cout_str(screenh - 1, 0, "UNHANDLED KEY: 0x", SCHEME_STBAR1, 17); |
mdr_cout_str(screenh - 1, 17, buff, SCHEME_STBAR1, 3); |
keyb_getkey(); |
break; |
#endif |
} |
} |
|