Changeset 344 in Sophya for trunk/SophyaPI/PIext/nobjmgr.cc
- Timestamp:
- Aug 2, 1999, 6:52:49 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/nobjmgr.cc
r339 r344 42 42 // include nobjmgr.h 43 43 // 44 // Cette classe fournit les services nécéssaire àla gestion des objets44 // Cette classe fournit les services nécéssaires à la gestion des objets 45 45 // (l'ensemble des objets PPersist de PEIDA++) au sein du programme 46 46 // d'analyse interactive *piapp* . Elle constitue en outre l'interface … … 58 58 // ...... Gestion des objets nommes, variables globales ............ 59 59 struct nobj_diritem { 60 int id; 61 int nobj; 60 int id; // Directory Id 61 int nobj; // Number of objects in directory 62 bool lock; // True -> directory locked, No Add, del or rename 63 bool keepold; // True -> When duplicate object name, old object moved to /old 62 64 }; 63 65 … … 65 67 66 68 struct nobj_item { 67 AnyDataObj* obj; 68 NObjMgrAdapter* obja; 69 int oid; 70 int dirid; 71 list<int> wrsid; 69 AnyDataObj* obj; // Object pointer 70 NObjMgrAdapter* obja; // Object adapter pointer 71 int oid; // object Id 72 int dirid; // Directory Id 73 list<int> wrsid; // List of Window Resource Id (Drawer, PIBaseWdg, ...) 74 // (for PIStdImgApp) 72 75 bool operator==(nobj_item const& b) const 73 76 { return (this->obj == b.obj); } … … 116 119 string dirn = "home"; 117 120 CreateDir(dirn); 121 SetKeepOldDirAtt(dirn, true); 118 122 dirn = "tmp"; 119 123 CreateDir(dirn); 124 SetKeepOldDirAtt(dirn, false); 120 125 dirn = "old"; 121 126 CreateDir(dirn); 127 SetKeepOldDirAtt(dirn, false); 122 128 dirn = "home"; 123 129 SetCurrentDir(dirn); … … 179 185 180 186 /* --Methode-- */ 181 voidNamedObjMgr::CreateDir(string & dirname)187 bool NamedObjMgr::CreateDir(string & dirname) 182 188 { 183 189 if ( !CheckDirName(dirname) ) { 184 190 cout << "NamedObjMgr::CreateDir( " << dirname << ") Error - Invalid name !" << endl; 185 return ;191 return(false); 186 192 } 187 193 NObjDirList::iterator it = myDirs->find(dirname); 188 194 if (it != myDirs->end()) { 189 195 cout << "NamedObjMgr::CreateDir( " << dirname << ") Error - Existing directory !" << endl; 190 return ;196 return(false); 191 197 } 192 198 myDirId++; … … 194 200 di.id = myDirId; 195 201 di.nobj = 0; 202 di.lock = false; 203 di.keepold = false; 196 204 (*myDirs)[dirname] = di; 197 205 if (myImgApp) { … … 200 208 } 201 209 cout << "NamedObjMgr::CreateDir() " << dirname << " Created " << endl; 202 } 203 204 /* --Methode-- */ 205 void NamedObjMgr::DeleteDir(string & dirname) 210 return(true); 211 } 212 213 /* --Methode-- */ 214 bool NamedObjMgr::DeleteDir(string & dirname) 206 215 { 207 216 if ( !CheckDirName(dirname) ) { 208 217 cout << "NamedObjMgr::DeleteDir( " << dirname << ") Error - Invalid name !" << endl; 209 return ;218 return(false); 210 219 } 211 220 NObjDirList::iterator it = myDirs->find(dirname); 212 221 if (it == myDirs->end()) { 213 222 cout << "NamedObjMgr::DeleteDir( " << dirname << ") Error - No such directory !" << endl; 214 return ;223 return(false); 215 224 } 216 225 if ((*it).second.nobj > 0) { 217 226 cout << "NamedObjMgr::DeleteDir() " << dirname << " not empty ! " << endl; 218 return; 227 return(false); 228 } 229 if ((*it).second.lock ) { 230 cout << "NamedObjMgr::DeleteDir() " << dirname << " locked ! " << endl; 231 return(false); 219 232 } 220 233 if ((*it).second.id < 50) { 221 234 cout << "NamedObjMgr::DeleteDir() " << dirname << " cannot be deleted ! " << endl; 222 return ;235 return(false); 223 236 } 224 237 … … 227 240 myDirs->erase(it); 228 241 cout << "amedObjMgr::DeleteDir() " << dirname << " deleted " << endl; 229 } 230 231 /* --Methode-- */ 232 void NamedObjMgr::SetCurrentDir(string & dirname) 242 return(true); 243 } 244 245 /* --Methode-- */ 246 void NamedObjMgr::LockDir(string & dirname) 247 { 248 if ( !CheckDirName(dirname) ) return; 249 NObjDirList::iterator it = myDirs->find(dirname); 250 if (it == myDirs->end()) return; 251 (*it).second.lock = true; 252 cout << "NamedObjMgr::LockDir() " << dirname << " Locked " << endl; 253 return; 254 } 255 256 /* --Methode-- */ 257 void NamedObjMgr::UnlockDir(string & dirname) 258 { 259 if ( !CheckDirName(dirname) ) return; 260 NObjDirList::iterator it = myDirs->find(dirname); 261 if (it == myDirs->end()) return; 262 (*it).second.lock = true; 263 cout << "NamedObjMgr::UnlockDir() " << dirname << " Unlocked " << endl; 264 return; 265 } 266 267 /* --Methode-- */ 268 void NamedObjMgr::SetKeepOldDirAtt(string & dirname, bool keepold) 269 { 270 if ( !CheckDirName(dirname) ) return; 271 NObjDirList::iterator it = myDirs->find(dirname); 272 if (it == myDirs->end()) return; 273 (*it).second.keepold = keepold; 274 cout << "NamedObjMgr::SetKeepOldDirAtt() " << dirname << " -> "; 275 if ( keepold ) cout << " True " << endl; 276 else cout << " False " << endl; 277 return; 278 } 279 280 281 /* --Methode-- */ 282 bool NamedObjMgr::SetCurrentDir(string & dirname) 233 283 { 234 284 if ( !CheckDirName(dirname) ) { 235 285 cout << "NamedObjMgr::SetCurrentDir( " << dirname << ") Error - Invalid name !" << endl; 236 return ;286 return(false); 237 287 } 238 288 NObjDirList::iterator it = myDirs->find(dirname); 239 289 if (it == myDirs->end()) { 240 290 cout << "NamedObjMgr::SetCurrentDir( " << dirname << ") Error - No such directory !" << endl; 241 return ;291 return(false); 242 292 } 243 293 *currDir = dirname; 244 294 cout << "NamedObjMgr::SetCurrentDir() -> " << dirname << endl; 295 return(true); 245 296 } 246 297 … … 262 313 if (csh_parse(cn.c_str(), patt.c_str()) == 0) continue; 263 314 k++; 264 cout << k << "- " << (*it).first << " (NbObj= " << (*it).second.nobj << ")" << endl; 315 cout << k << "- " << (*it).first; 316 if ( (*it).second.lock ) cout << " Locked " ; 317 if ( (*it).second.keepold ) cout << " KeepOld " ; 318 cout << " (Id= " << (*it).second.id << " NbObj= " << (*it).second.nobj << ")" << endl; 319 265 320 } 266 321 } … … 311 366 312 367 /* --Methode-- */ 313 voidNamedObjMgr::AddObj(AnyDataObj* obj, string & nom, bool crd)314 { 315 316 if (obj == NULL) return ;368 bool NamedObjMgr::AddObj(AnyDataObj* obj, string & nom, bool crd) 369 { 370 371 if (obj == NULL) return(false); 317 372 // On verifie si l'objet est deja dans la liste 318 373 NObjList::iterator it; … … 320 375 if ((*it).second.obj == obj) { 321 376 cout << "NamedObjMgr::AddObj() Object already present with name " << (*it).first << endl; 322 return ;377 return(false); 323 378 } 324 379 } … … 330 385 if (!crd) { 331 386 cout << "NamedObjMgr::AddObj() No " << nrep << " Directory " << endl; 332 return ;387 return(false); 333 388 } 334 389 else { CreateDir(nrep); did = myDirId; } … … 342 397 343 398 nom = '/' + nrep + '/' + nobj; 399 NObjDirList::iterator itr = myDirs->find(nrep); 400 if ((*itr).second.lock) { 401 cout << "NamedObjMgr::AddObj() " << nrep << " Locked Directory " << endl; 402 return(false); 403 } 344 404 it = myObjs->find(nom); 345 405 if (it != myObjs->end()) { // l'objet existe deja 346 if (nrep == "tmp") { // Les objets de /tmp sont jetes 347 cout << "NamedObjMgr::AddObj() - Replacing " << nom << endl; 348 DelObj(nom); 349 } 350 else { // On met l'ancien objet dans /old 406 if ( (*itr).second.keepold ) { // On met l'ancien objet dans /old 351 407 string on,od; 352 408 // ParseObjectName((*it).first, od, on); … … 355 411 RenameObj(nom, nomnew); 356 412 } 413 else { // Sinon, on remplace l'objet 414 cout << "NamedObjMgr::AddObj() - Replacing " << nom << endl; 415 DelObj(nom); 416 } 357 417 } 358 418 … … 364 424 (*myObjs)[nom] = no; 365 425 366 NObjDirList::iterator itr = myDirs->find(nrep);367 426 (*itr).second.nobj++; 368 427 369 428 cout << "NamedObjMgr::AddObj() Object " << nom << " ( " 370 429 << typeid(*obj).name() << " ) added (Total= " << myObjs->size() << ")" << endl; 371 return ;372 } 373 374 /* --Methode-- */ 375 voidNamedObjMgr::RenameObj(string & nom, string& nomnew)430 return(true); 431 } 432 433 /* --Methode-- */ 434 bool NamedObjMgr::RenameObj(string & nom, string& nomnew) 376 435 { 377 436 string n1,r1,n2,r2; 378 ParseObjectName(nom, r1, n1); 437 int dids = ParseObjectName(nom, r1, n1); 438 NObjDirList::iterator itr1 = myDirs->find(r1); 379 439 int did = ParseObjectName(nomnew, r2, n2); 440 NObjDirList::iterator itr2 = myDirs->find(r2); 441 380 442 if (did == 0) { 381 443 cout << "NamedObjMgr::RenameObj() Error - No " << r2 << " directory !" << endl; 382 return ;444 return(false); 383 445 } 384 446 nom = '/' + r1 + '/' + n1; … … 387 449 if (it1 == myObjs->end()) { 388 450 cout << "NamedObjMgr::RenameObj() Error - No " << nom << " object !" << endl; 389 return ;451 return(false); 390 452 } 391 453 NObjList::iterator it2 = myObjs->find(nomnew); 392 454 if (it2 != myObjs->end()) { 393 455 cout << "NamedObjMgr::RenameObj() Error - Object " << nomnew << " exist !" << endl; 394 return; 395 } 456 return(false); 457 } 458 459 if ( (*itr1).second.lock || (*itr2).second.lock ) { 460 cout << "NamedObjMgr::RenameObj() Error - Source or destination directory locked !" 461 << endl; 462 return(false); 463 } 464 396 465 397 466 nobj_item no = (*it1).second; … … 404 473 (*itr).second.nobj++; 405 474 cout << "NamedObjMgr::RenameObj() - Object " << nom << " renamed to " << nomnew << endl; 406 return ;407 } 408 409 /* --Methode-- */ 410 voidNamedObjMgr::DelObj(string & nom, bool fgd)475 return(true); 476 } 477 478 /* --Methode-- */ 479 bool NamedObjMgr::DelObj(string & nom, bool fgd) 411 480 { 412 481 string n1,r1; … … 414 483 nom = '/' + r1 + '/' + n1; 415 484 NObjList::iterator it = myObjs->find(nom); 416 if (it == myObjs->end()) return; 485 if (it == myObjs->end()) return(false); 486 NObjDirList::iterator itr = myDirs->find(r1); 487 if ( (*itr).second.lock ) { 488 cout << "NamedObjMgr::DelObj() Error - Locked directory " << r1 << endl; 489 return(false); 490 } 417 491 list<int>::iterator ii; 418 492 if (myImgApp) { … … 425 499 426 500 myObjs->erase(it); 427 NObjDirList::iterator itr = myDirs->find(r1);428 501 (*itr).second.nobj--; 429 502 430 503 if (fgd) cout << "NamedObjMgr::DelObj() Object " << nom << " deleted (Total= " << myObjs->size() << ")" << endl; 431 504 else cout << "NamedObjMgr::DelObj() Object " << nom << " removed (Total= " << myObjs->size() << ")" << endl; 432 return ;433 } 434 435 /* --Methode-- */ 436 voidNamedObjMgr::DelObj_Id(int oid)505 return(true); 506 } 507 508 /* --Methode-- */ 509 bool NamedObjMgr::DelObj_Id(int oid) 437 510 { 438 511 NObjList::iterator it; … … 444 517 break; 445 518 } 446 if (of) DelObj(nom, true); 519 if (of) return(DelObj(nom, true)); 520 else return(false); 447 521 } 448 522 … … 786 860 int opt = servnobjm->DecodeDispOption(dopt, fgsr); 787 861 862 string n1,r1; 863 ParseObjectName(nom, r1, n1); 864 788 865 if (dr) { 789 866 PIDrawer3D * dr3 = dynamic_cast<PIDrawer3D *>(dr); 790 if(dr3) wrsid = myImgApp->Disp3DDrawer(dr3, n om, opt);791 else wrsid = myImgApp->DispScDrawer( dr, n om, opt);792 } 793 else if (arr) wrsid = myImgApp->DispImage(arr, n om, opt);867 if(dr3) wrsid = myImgApp->Disp3DDrawer(dr3, n1, opt); 868 else wrsid = myImgApp->DispScDrawer( dr, n1, opt); 869 } 870 else if (arr) wrsid = myImgApp->DispImage(arr, n1, opt); 794 871 795 872 if(wrsid != 0) { … … 821 898 } 822 899 900 string n1,r1; 901 ParseObjectName(nom, r1, n1); 902 823 903 int wrsid = 0; 824 904 bool fgsr = true; 825 905 int opt = servnobjm->DecodeDispOption(dopt, fgsr); 826 wrsid = myImgApp->DispImage(arr, n om, opt);906 wrsid = myImgApp->DispImage(arr, n1, opt); 827 907 828 908 if(wrsid != 0) { … … 860 940 } 861 941 942 string n1,r1; 943 ParseObjectName(nom, r1, n1); 944 862 945 int wrsid = 0; 863 946 bool fgsr = true; 864 947 int opt = servnobjm->DecodeDispOption(dopt, fgsr); 865 948 PISurfaceDrawer* sdr = new PISurfaceDrawer(arr, true, true, true); 866 wrsid = myImgApp->Disp3DDrawer(sdr, n om, opt);949 wrsid = myImgApp->Disp3DDrawer(sdr, n1, opt); 867 950 if(wrsid >= 0) { 868 951 NObjList::iterator it = myObjs->find(nom); … … 899 982 int opt = servnobjm->DecodeDispOption(dopt, fgsr); 900 983 984 string n1,r1; 985 ParseObjectName(nom, r1, n1); 986 901 987 if ( fg3d && (nmz.length()>0) ) { // Display 3D 902 988 PINTuple3D* pin = new PINTuple3D(nt, false); … … 904 990 pin->SelectErrBar(erx.c_str(), ery.c_str(), erz.c_str()); 905 991 string titre = nmz + "%" + nmy + "%" + nmz; 906 wrsid = myImgApp->Disp3DDrawer(pin, n om, opt, titre);992 wrsid = myImgApp->Disp3DDrawer(pin, n1, opt, titre); 907 993 } 908 994 else { … … 912 998 if ( nmz.length()>0 ) pin->SelectWt(nmz.c_str()); 913 999 string titre = nmy + "%" + nmx; 914 wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n om, opt, titre);1000 wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n1, opt, titre); 915 1001 } 916 1002 … … 965 1051 if(numvary.length()>0) numvy = atoi(numvary.c_str()); 966 1052 1053 string n1,r1; 1054 ParseObjectName(nom, r1, n1); 1055 967 1056 int wrsid = 0; 968 1057 if(numvy>=0) { // display 3D … … 970 1059 pigfd->SelectXY(numvx,numvy); 971 1060 pigfd->SelectErrBar(errx,erry,errz); 972 wrsid = myImgApp->Disp3DDrawer(pigfd,n om,opt);1061 wrsid = myImgApp->Disp3DDrawer(pigfd,n1,opt); 973 1062 } else { // display 2D 974 1063 PIGenFitDat* pigfd = new PIGenFitDat(((GeneralFitData*)obj),false); 975 1064 pigfd->SelectX(numvx); 976 1065 pigfd->SelectErrBar(errx,erry); 977 wrsid = myImgApp->DispScDrawer((PIDrawer*)pigfd,n om,opt);1066 wrsid = myImgApp->DispScDrawer((PIDrawer*)pigfd,n1,opt); 978 1067 } 979 1068
Note:
See TracChangeset
for help on using the changeset viewer.