#include "pikbdlistener.h" #include "piconnection.h" #include "piconfig.h" #include "piscreentiles.h" #include "piscreen.h" #include "piethernet.h" #include "piintrospection.h" #include "pifile.h" #include "piterminal.h" #include "piserial.h" PIConnection conn; TilePICout cout_tile; const char conn_config[] = "[connection]\n\ device.test = ser://COM54:115200 #s\n\ device.test.disconnectTimeout = 3.00000000 #f\n\ []\n"; class TileTerminal: public PIScreenTile { public: TileTerminal(PITerminal * t) { focus_flags = PIScreenTypes::CanHasFocus; term = t; } private: void drawEvent(PIScreenDrawer * d) { //piCout << "draw" << visible; if (!term) return; PIVector > c = term->content(); d->fillRect(x_, y_, x_ + width_, y_ + height_, c); } bool keyEvent(PIKbdListener::KeyEvent key) { //return false; if (key.key == '~') { cout_tile.content.clear(); return true; } if (!term) return false; term->write(key); } void resizeEvent(int w, int h) { if (!term) return; term->resize(w, h); } PITerminal * term; }; int main (int argc, char * argv[]) { /*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(&cout_tile); 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); screen->rootTile()->takeTile(&cout_tile); delete screen; } return 0; }