git-svn-id: svn://db.shs.com.ru/pip@255 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2016-09-06 12:46:39 +00:00
parent 73cc277f23
commit d321b01f10
10 changed files with 510 additions and 69 deletions

View File

@@ -20,11 +20,24 @@ const char conn_config[] =
device.test.disconnectTimeout = 3.00000000 #f\n\
[]\n";
class Obj : public PIObject {
PIOBJECT(Obj)
public:
Obj() {
CONNECTU(&conn, dataReceivedEvent, this, recv);
private:
void drawEvent(PIScreenDrawer * d) {
//piCout << "draw" << visible;
if (!term) return;
PIVector<PIVector<PIScreenTypes::Cell> > c = term->content();
d->fillRect(x_, y_, x_ + width_, y_ + height_, c);
}
bool keyEvent(PIKbdListener::KeyEvent key) {
//piCout << "key";
//return false;
if (!term) return false;
if (PITerminal::isSpecialKey(key.key)) term->write((PIKbdListener::SpecialKey)key.key, key.modifiers);
else {
PIByteArray ba;
//ba << PIChar(key.key).toConcole1Byte();
//piCout << key.key;
ba = PIString(PIChar(key.key)).toUTF8();
term->write(ba);
}
EVENT_HANDLER1(void, keyEv, PIKbdListener::KeyEvent, k) {
piCoutObj << k.key;
@@ -49,20 +62,48 @@ const char conn_config[] =
};
int main (int argc, char * argv[]) {
screen.rootTile()->addTile(new TilePICout());
screen.enableExitCapture();
screen.rootTile()->children().front()->setFocus();
Obj * o = new Obj();
CONNECTU(&screen, keyPressed, o, keyEv)
PIString s = conn_config;
conn.configureFromString(&s);
PISerial * ser = (PISerial *)conn.deviceByName("test");
if (ser) {
piCout << ser->constructFullPath() << ser->isOpened();
ser->startThreadedWrite();
/*const char cs[] = "this is text\e";
PIByteArray ba(cs, sizeof(cs) - 1);
PIString s(ba);
piCout << ba;
piCout << s;
piCout << s.toByteArray();
return 0;*/
PIScreen * screen = 0;
if (argc > 1) screen = new PIScreen();
PITerminal term;
TileTerminal tt(&term);
if (screen) {
screen->rootTile()->addTile(&tt);
screen->rootTile()->addTile(new TilePICout());
screen->enableExitCapture();
}
tt.setFocus();
term.initialize();
piMSleep(100);
//term.write(PIString("ls -l /etc/\n").toByteArray());
//term.write(PIString("mc\n").toByteArray());
//term.write(PIString("aptitude\n").toByteArray());
if (screen) {
screen->start();
piMSleep(100);
//piCout << tt.width() << tt.height();
term.resize(tt.width(), tt.height());
screen->waitForFinish();
} else {
piMSleep(4000);
term.write(PIKbdListener::KeyEvent(PIKbdListener::Tab));
piMSleep(1000);
term.write(PIKbdListener::KeyEvent(PIKbdListener::Tab));
//term.write(PIKbdListener::KeyEvent(PIKbdListener::Space));
//term.write(PIString("exit\n").toByteArray());
term.write(PIString("Q\n").toByteArray());
piMSleep(1000);
}
if (screen) {
screen->rootTile()->takeTile(&tt);
delete screen;
}
conn.start();
screen.waitForFinish();
return 0;
}