PITimer important fix! ASCII-art start ...

git-svn-id: svn://db.shs.com.ru/pip@94 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-04-14 14:46:46 +00:00
parent 86f25eddde
commit 2fd1bdfe53
15 changed files with 215 additions and 57 deletions

View File

@@ -173,6 +173,10 @@ void PIKbdListener::readKeyboard() {
case 40: ret = 1; ke.key = DownArrow; break;
case 45: ret = 1; ke.key = Insert; break;
case 46: ret = 1; ke.key = Delete; break;
case '\r':
case '\n': ret = 1; ke.key = Return; break;
case ' ': ret = 1; ke.key = Space; break;
case '\t': ret = 1; ke.key = Tab; break;
case 112: ret = 1; ke.key = F1; break;
case 113: ret = 1; ke.key = F2; break;
case 114: ret = 1; ke.key = F3; break;
@@ -185,7 +189,15 @@ void PIKbdListener::readKeyboard() {
case 121: ret = 1; ke.key = F10; break;
case 122: ret = 1; ke.key = F11; break;
case 123: ret = 1; ke.key = F12; break;
default: ret = 1; ke.key = rc[0] = (shift ? char(toupper(ker.uChar.AsciiChar)) : ker.uChar.AsciiChar); break;
default:
ret = 1;
rc[0] = 1;
{
PIChar ch = PIChar::fromConsole(ker.uChar.AsciiChar);
if (shift) ch = ch.toUpper();
ke.key = ch.unicode16Code();
}
break;
}
if (ke.key == 0) {piMSleep(10); return;}
} else {piMSleep(10); return;}
@@ -212,7 +224,7 @@ void PIKbdListener::readKeyboard() {
cout << endl;*/
if (rc[0] == 0) {piMSleep(10); return;}
if (ret < 0 || ret > 7) {piMSleep(10); return;}
if (ret == 1) ke.key = rc[0];
if (ret == 1) ke.key = PIChar::fromConsole(rc[0]).unicode16Code();
int mod(0);
// 2 - shift 1
// 3 - alt 2
@@ -257,6 +269,8 @@ void PIKbdListener::readKeyboard() {
}
}
}
if (ke.key == 0 && ret > 1)
ke.key = PIChar(rc).unicode16Code();
#endif
if ((rc[0] == '\n' || rc[0] == '\r') && ret == 1)
ke.key = Return;

View File

@@ -88,6 +88,7 @@ TileList::TileList(const PIString & n): PIScreenTile(n) {
focus_flags = CanHasFocus | NextByArrowsHorizontal | NextByTab;
lhei = offset = cur = 0;
selection_mode = NoSelection;
vert_line = PIChar::fromUTF8("");
}
@@ -127,7 +128,7 @@ void TileList::drawEvent(PIScreenDrawer * d) {
d->drawText(rx, y + i - is + 1, r.first, cc, sel ? Blue : Default, cf);
}
int cx = x + width - 1;
d->drawLine(cx, y + 1, cx, y + height - 2, '|', Green);
d->drawLine(cx, y + 1, cx, y + height - 2, vert_line, Green);
if (content.size_s() > 1)
d->drawPixel(cx, y + piRound(float(cur) / (content.size_s() - 1) * (lhei - 1)) + 1, ' ', Green, Green);
if (ie < content.size_s()) d->drawText(x, y + height - 1, PIString(" \\/ ").repeat(width / 4), Green, Default, Bold);

View File

@@ -64,6 +64,7 @@ protected:
void drawEvent(PIScreenDrawer * d);
bool keyEvent(PIKbdListener::KeyEvent key);
int lhei;
PIChar vert_line;
};