#include #include /* Ceci est un programme test des differents composants de PI : PEIDA Interactif */ /* Reza , 96-98 */ /* C'est ecrit n'importe comment ! */ #include "pisysdep.h" #include PIAPP_H #include PIWIN_H #include PIMENU_H #include PIOPTMENU_H #include PISTDWDG_H #include PIBWDG_H #include PIPIXMAP_H #include PIFILECHO_H #include PILIST_H #include "piscdrawwdg.h" /* int SysBeep(int n) { for(int i=0; iAppendItem("Open", 10101); m[0]->AppendItem("Close", 10102); m[0]->AppendItem("New", 10103); // m[0]->AppendItem("ScBar", 10105); m[0]->AppendItem("Quit", 10104); m[1] = new PIMenu(Menubar(),"Edit"); m[1]->AppendItem("Copier", 10201); m[1]->AppendItem("Coller", 10202); m[1]->AppendItem("Couper", 10203); m[1]->AppendCheckItem("Check It", 10205); mc[0] = new PIMenu(m[1], "Cascade"); mc[0]->AppendItem("EdeCas-1", 10221); mc[0]->AppendItem("EdeCas-2", 10222); mc[0]->AppendItem("EdeCas-3", 10223); m[1]->AppendPDMenu(mc[0]); m[2] = new PIMenu(Menubar(),"Operation"); m[2]->AppendItem("AddItem", 10301); m[2]->AppendItem("DelItemName", 10302); m[2]->AppendItem("DelItemMsg", 10303); m[3] = new PIMenu(Menubar(),"Special"); m[3]->AppendItem("Spec-Opt1", 10401); m[3]->AppendItem("Spec-Opt2", 10402); m[3]->AppendItem("Spec-Cascade", 10403); mc[1] = new PIMenu(m[3], "Spec-Cascade"); mc[1]->AppendItem("Spec-Cas-1", 10441); mc[1]->AppendItem("Spec-Cas-2", 10442); mc[1]->AppendItem("Spec-Cas-3", 10443); m[3]->AppendPDMenu(mc[1]); m[3]->AppendCheckItem("Checkable", 10414); m[4] = new PIMenu(Menubar(),"AddMenu2"); m[4]->AppendItem("option-A", 10501); m[4]->AppendItem("option-B", 10502); m[4]->AppendItem("option-C", 10503); AppendMenu(m[0]); AppendMenu(m[1]); AppendMenu(m[2]); ckb = new PICheckBox(this->MainWin(), "CheckBox", 166, 60, 20, 10, 10); text = new PIText(this->MainWin(), "TEXTE", 180, 30, 20,40); text->SetMsg(7440); label = new PILabel(this->MainWin(), "Label", 180, 20, 20,80); label->SetBorderWidth(1); bouton = new PIButton(this->MainWin(), "->Menu", 33, 60, 25, 20, 120); bouton2 = new PIButton(this->MainWin(), "Dialog", 333, 60, 25, 100, 120); bouton3 = new PIButton(this->MainWin(), "ScDraw", 433, 60, 25, 180, 120); bouton4 = new PIButton(this->MainWin(), "Pixmap", 133, 60, 25, 260, 120); bouton5 = new PIButton(this->MainWin(), "List", 533, 60, 25, 340, 120); scl = new PIScale(this->MainWin(), "Scale", 88, kSDirRtoL, 200, 20, 10, 150); scl->SetMinMax(5, 45); int psx, psy; PrefCompSz(psx, psy); cout << " Creation bouton 11 -14 avec Sx,Sy= " << psx << " , " << psy << endl; bouton11 = new PIButton(this->MainWin(), "AddMen-1", 1133, psx*1.5, psy, 20, 250); bouton12 = new PIButton(this->MainWin(), "AddMen-2", 1233, psx*1.5, psy, 40+psx*1.5, 250); stnewmen[0] = stnewmen[1] = false; bouton13 = new PIButton(this->MainWin(), "Ready/Bloc", 1333, psx*1.5, psy, 20, 300); bouton14 = new PIButton(this->MainWin(), "TS-BWdg", 1433, psx*1.5, psy, 40+psx*1.5, 300); bouton15 = new PIButton(this->MainWin(), "TS-MenuIt", 1533, psx*1.5, psy, 60+psx*3, 300); // XSync(PIXDisplay(), FALSE); // printf("Creation PIPUMenu DoIt-1... \n"); gets(ans); menu = new PIMenu(this->MainWin(), "myMenu"); // XSync(PIXDisplay(), FALSE); // printf("Apres Creation PIPUMenu -AppendItem() 1 ... \n"); gets(ans); menu->AppendItem("DoIt-1", 4401); // XSync(PIXDisplay(), FALSE); // printf("Apres Creation PIPUMenu -AppendItem() 2 ... \n"); gets(ans); menu->AppendItem("DoIt-2", 4402); menu->AppendItem("DoIt-25", 4425); menu->AppendItem("DoIt-26", 4426); menu->AppendItem("Check-33", 4433); // XSync(PIXDisplay(), FALSE); // printf("Creation PIPUMenu Copier ... \n"); gets(ans); opt = new PIOptMenu(this->MainWin(), "Option-Menu-1", 120, 25, 10, 200); opt->AppendItem("Linear", 5601); opt->AppendItem("Log.", 5602); opt->AppendItem("Sqrt", 5603); opt->AppendItem("Expon", 5604); opt->AppendItem("Polyn", 5605); string ops = "Sqrt"; opt->SetValueStr(ops); opt2 = new PIOptMenu(this->MainWin(), "Option-Menu-1", 120, 25, 150, 200); opt2->AppendItem("Copier", 80201); opt2->AppendItem("Coller", 80202); opt2->AppendItem("Couper", 80203); opt2->AppendItem("Undo", 80204); opt2->AppendItem("Select-All", 80205); } PITestApp::~PITestApp() { delete ckb; delete text; delete label; delete bouton; delete bouton2; delete bouton3; delete bouton4; delete bouton5; delete bouton11; delete bouton12; delete bouton13; delete bouton14; delete bouton15; delete menu; delete m[0]; delete m[1]; delete m[2]; delete m[3]; delete m[4]; delete mc[0]; delete mc[1]; delete opt; delete opt2; delete scl; } /* ........................................................... */ /* Classe ScSample */ /* ........................................................... */ class ScSample : public PIScDrawWdg { public: ScSample(PIContainerGen *par, char *nom, int sx=10, int sy=10, int px=0, int py=0); virtual ~ScSample(); }; static double fpol(double x) {return (0.3*x*x*x-x*x+7.);} static double fx2(double x) {return (0.5*x*x);} ScSample::ScSample(PIContainerGen *par, char *nom, int sx, int sy, int px, int py) :PIScDrawWdg(par, nom, sx, sy, px, py) { // Definition des limites SetLimits(-3,5,-10,15); // Creation et ajout d'un drawer de fonctions PIFuncDrawer* mfd = new PIFuncDrawer(fpol); mfd->SetColAtt(PI_Blue); mfd->SetLineAtt(PI_NormalLine); AddScDrawer(mfd,true); PIFuncDrawer* mfd2 = new PIFuncDrawer(fx2); mfd2->SetColAtt(PI_Red); mfd2->SetLineAtt(PI_NormalLine); AddScDrawer(mfd2,true); SetAxesFlags(kAxesDflt); } ScSample::~ScSample() { } static ScSample *scs1, *scs2, *scs3; static PIScrollBar *scb, *scb2; static PIWindow * wp3, *wp4, *wp5, *wp6; static PIPixmap * pxm; static unsigned char pixels[25000]; static PIFileChooser *pfc; static bool fgpxm = false; static bool fgt = false; static bool fgt2 = false; static bool fgt3 = false; static PIListX * pil; void PITestApp::Process(PIMessage msg, PIMsgHandler* sender, void* data) { static int x = 0; static numsg=8800; char truc[256]; sprintf(truc,"< %ld - %d (%d)>",msg,x++, (int)((PIWdgGen *)sender)->kind()); this->label->SetLabel(truc); sprintf(truc,"[%d] Msg= %ld (%d-%d) Kind=(%d) Data= (%ld - %lx)",x, msg, (int)UserMsg(msg), (int)ModMsg(msg), (int)((PIWdgGen *)sender)->kind(), (long)data, (long)data); puts(truc); if (ModMsg(msg) == PIMsg_Active) printf("Process: Setting active Wdg (%lx) \n", (long)sender); if (ModMsg(msg) == PIMsg_Close) { printf("Close Message received (Sender= %lx)\n", (long)sender); return; } msg = UserMsg(msg); if (msg == 33) { ckb->SetState(true); menu->Show(); } if (msg == 133) { if (!fgpxm) { wp3->Show(); fgpxm = true; } for (int i=0; i<25000; i++) pixels[i] = rand()%256; if ((x % 3) == 0) pxm->SetColMapId(CMAP_GREY32); if ((x % 3) == 1) pxm->SetColMapId(CMAP_COLRJ32); if ((x % 3) == 2) pxm->SetColMapId(CMAP_COLBR32); } if (msg == 333) wp4->Show(); if ( (msg == 6001) || (msg == 6002) ) wp4->Hide(); if (msg == 433) { if (fgt2) { wp5->Hide(); fgt2 = false; } else { wp5->Show(); fgt2 = true; } } if (msg == 533) { if (fgt3) { wp6->Hide(); fgt3 = false; } else { wp6->Show(); fgt3 = true; } } if ( (msg == 1133) || (msg == 1233) ) { // On ajoute ou on enleve un menu du menu-bar int idxmen = (msg-1133)/100; cout << " Add/Remove Menu idxmen= " << idxmen << " Bool= " << Menubar()->IsSensitive(m[idxmen+3]) << " ( " << stnewmen[idxmen] << ")" << endl; if ( Menubar()->IsSensitive(m[idxmen+3]) ) { Menubar()->RemoveMenu(m[idxmen+3]); stnewmen[idxmen] = false; } else { Menubar()->AppendMenu(m[idxmen+3]); stnewmen[idxmen] = true; } } if (msg == 1333) { // Changement de sensibilite de Menu-Bar (par SetBusy()) cout << " SetSens() Menubar, State= " << GetState() << endl; if (GetState() != kReadyState) SetReady(); else SetBlocked(); } if (msg == 1533) { // Changement de sensibilite de Cascade cout << " ChangeSensitivity() Cascade Bool= " << m[1]->IsSensitive("Cascade") << endl; if (m[1]->IsSensitive("Cascade") ) m[1]->SetSensitivity("Cascade", false); else m[1]->SetSensitivity("Cascade", true); } if (msg == 1433) { // Changement de sensibilite de BaseWidget (ScSample) if (scs1->IfSensitive()) scs1->SetUnSensitive(); else scs1->SetSensitive(); } // if (msg == 555) (this->menu)->Show(); if (msg == 10105) scb->SetSlSize(atoi(((char *)text->GetText().c_str()))); if (msg == 10104) Stop(); if (msg == 10101) { pfc->AcceptNewFile(false); pfc->Show(); } if (msg == 10103) { pfc->AcceptNewFile(true); pfc->Show(); } if ((msg == 10205) || (msg == 166)) { // CheckItem Menu or checkbox cout << "PITestApp::Process CheckItem/Box Menu (" << msg << ") State=" << *((bool *)data) << endl; } if (msg == 10301) { numsg++; string nit; nit = text->GetText(); m[1]->AppendItem((char *)nit.c_str(), numsg); opt2->SetValue(numsg); } if (msg == 10302) { m[1]->DeleteItem((char *)text->GetText().c_str()); } if (msg == 10303) { string nit; nit = text->GetText(); long ml = atol(nit.c_str()); m[1]->DeleteItemMsg(ml); opt2->SetValue(10201); } if (msg > 9000) printf("PITestApp::MenubarReturn: %d --> %lx \n", msg, (long)data); if (msg == 5000) { if (data) { printf("PITestApp::Process(5000) OK from PIFileChooser: %s \n", (char *)data); } else printf("PITestApp::Process(5000) Cancel from PIFileChooser (data=NULL) \n"); } if ((msg / 100) == 56) printf("PITestApp::Process(%d) : %lx \n", (int)msg, (long)data); if (msg == 8811) printf("PITestApp::Process(8811) ScrollBar( %d ) \n", *( (int*)data) ); else if (msg == 8821) printf("PITestApp::Process(8821) ScrollBar( %d ) \n", *( (int*)data) ); } int main(int narg, char *arg[]) { int mii; if (narg < 2) { printf("Usage pitst str1 [str2 ....] \n"); exit(1); } PITestApp * app; app = new PITestApp(350, 350); wp4 = new PIWindow(app, "Window-4", PIWK_dialog, 200, 200, 350, 350); PIButton bt1(wp4, "OK", 6001, 60, 30, 20, 160); PIButton bt2(wp4, "Cancel", 6002, 60, 30, 100, 160); bt1.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); bt2.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); PILabel lb1(wp4, "Editable", 40, 30, 10, 10); lb1.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); PIText tx1(wp4, "A00", 100, 30, 60, 10); tx1.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); tx1.SetText("Hello"); tx1.SetTextEditable(false); // PILabel lb2(wp4, "", 30, 20, 10, 40); PIText tx2(wp4, "A11", 180, 100, 15, 50); tx2.SetMutiLineMode(true); tx2.SetText(" Bonjour, \n Comment ca va ? \n A demain. "); tx2.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); wp3 = new PIWindow(app, "Window-3", PIWK_normal, 200, 200, 350, 350); pxm = new PIPixmap(wp3, "myPixmap", 150, 150, 10, 10); pxm->SetBinding(PIBK_fixed,PIBK_fixed,PIBK_fixed,PIBK_fixed ); pxm->SetPixmap(pixels, 150, 150); wp5 = new PIWindow(app, "Window-5", PIWK_normal, 420, 450, 200, 200); scs1 = new ScSample(wp5, "ScSample", 200, 200, 0, 0); scs1->SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); scs2 = new ScSample(wp5, "ScSample", 160, 160, 220, 20); printf("DBG-WP5 (A) , SCS2, SzC %d %d , Sz %d %d Pos %d %d \n", wp5->XSize(), wp5->YSize(), scs2->XSize(), scs2->YSize(),scs2->XPos(), scs2->YPos() ); // scs2->SetBinding(PIBK_elastic,PIBK_fixed,PIBK_fixed,PIBK_elastic); scs2->SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); printf("DBG-WP5 (B) , SCS2, SzC %d %d , Sz %d %d Pos %d %d \n", wp5->XSize(), wp5->YSize(), scs2->XSize(), scs2->YSize(),scs2->XPos(), scs2->YPos() ); scb = new PIScrollBar(wp5, "ScBar", 8811, kSDirUpDown, 15, 420, 405, 0); scb->SetBinding(PIBK_free,PIBK_fixed,PIBK_fixed,PIBK_fixed); scb->ActivateDrag(true); scb2 = new PIScrollBar(wp5, "ScBar", 8821, kSDirRtoL, 420, 15, 0, 425); scb2->SetBinding(PIBK_fixed,PIBK_free,PIBK_fixed,PIBK_fixed); scs3 = new ScSample(wp5, "ScSample", 200, 200, 100, 220); scs3->SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); pfc = new PIFileChooser(app,"FileChooser", 5000); // pfc->SetPath("/exp/eros/ImagRed/"); wp6 = new PIWindow(app, "Window-List", PIWK_normal, 200, 250, 300, 400); pil = new PIListX(wp6, "MyList", 200, 250, 0, 0); pil->SetBinding(PIBK_fixed,PIBK_fixed,PIBK_fixed,PIBK_fixed); for(mii=1; miiAppendItem(arg[mii], 3330+mii); // puts("Append-OK"); } pil->SetMultipleSelect(true); pil->SelectItem("user.cc"); // Int32 ioNumber = 100; app->Run(); delete app; exit(0); }