#include #include #include #include #include "Handle.h" #include "Task.h" #include "TaskMan.h" #include "HttpServ.h" #include "Socket.h" #include "config.h" #include "Message.h" #include "Menu.h" #include "Exceptions.h" #include "Form.h" #include "Confirm.h" #include "Table.h" #include "InPipe.h" #include "Image.h" #include "CopyJob.h" InPipe * in; class ad_t : public Action { public: ad_t() : Action("menu6") { } virtual ~ad_t() { } virtual String GetTitle() { return "Action dynamique"; } virtual Task * Do(Variables * v, Variables * hds, Handle * h) { String ut, un, shds; if (!fork()) { execlp("uptime", "uptime", NULL); } (*in) >> ut; wait(NULL); if (!fork()) { execlp("uname", "uname", "-a", NULL); } (*in) >> un; wait(NULL); for (int i = 0; i < hds->GetNb(); i++) { shds += (*hds)[i] + "
\n"; } Action * m = new Message("Action dynamique", String("Vous avez choisi l'action dynamique. L'uptime de la machine est '") + ut + "' et sa définition complète est '" + un + "'


Voici la liste des entêtes:

" + shds, ""); Task * t = m->Do(v, hds, h); Image * testimg = new Image(100, 100); testimg->Prepare(); Output * testoutput = new Output("TestImg.tga"); new CopyJob(testimg, testoutput, -1, true, true); delete m; return t; } }; Action * ad = new ad_t(); String Noms[] = {"Champ1", "Champ2", "Champ3"}; String Defaults[] = {"Default1", "Default2", 0}; String Invites[] = {"Champ 1:", "Champ 2:", "Champ 3:"}; String Options[] = {"Option1", "Option2", ""}; String ODescs[] = {"Description 1", "Description 2", ""}; String * Lists[] = {0, 0, Options}; String * Descs[] = {0, 0, ODescs}; String Titres[] = {"Titre 1", "Titre 2", "Titre 3"}; String Cells[] = {"L1C1", "L1C2", "L1C3", "L2C1", "L2C2", "L2C3", "L3C1", "L3C2", "L3C3", "L4C1", "L4C2", "L4C3"}; Action * a1 = new Message("Action 1", "Vous avez cliqué sur l'option 1 du menu", "menu1"); Action * a2 = new Table("Petite table", "menu2", Titres, Cells, 3, 4); Action * a3 = new Message("Test d'image", "Voici un test d'affichage d'image:" "
", "menu3"); Action * a4 = new Form("Test de formulaire...", "menu4", "Rentrez des trucs...", Noms, Invites, Defaults, Lists, Descs, 3); Action * a5 = new Confirm("Confirmation", "Oui ou non?", "menu5", 0, 0); Action * java = new Message("Applet JAVA", "
", "java"); Action * Liste[] = {a1, a2, a3, a4, a5, ad, java}; String Labels[] = {"Action 1", "Action 2", "Action 3", "Action 4", "Action 5", "Action dynamique", "Essai de java"}; Action * buildmenu(void) { return new Menu("Menu Principal", "start", Labels, Liste, 7); } int main(int argc, char ** argv) { int c; String port = "1500"; list testlist; testlist.push_front("poide"); in = new InPipe(); in->Hook(); String test = "poide\n", r; cout << test; cout.flush(); (*in) >> r; if (r != "poide") { cerr << "The stdout redirect has failed.\n"; exit(-1); } while ((c = getopt(argc, argv, "p:")) != EOF) { switch (c) { case 'p': port = optarg; break; default: cerr << "Usage: " << argv[0] << " [-p port]\n"; exit(-1); } } try { HttpServ h(buildmenu(), port.to_int()); TaskMan::MainLoop(); } catch (GeneralException e) { cerr << "Main function got an exception: '" << e.GetMsg() << "'.\n"; exit(-1); } catch (...) { cerr << "Unknow exception.\n" << endl; exit(-1); } delete in; exit(0); }