Files
pip/main.cpp

98 lines
2.4 KiB
C++

#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<PIVector<PIScreenTypes::Cell> > 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;
}