// This may look like C code, but it is really -*- C++ -*- // Classe de gestion d objets nommes pour piapp // Reza Aout 97 , Juillet,Aout 98 // CEA-DAPNIA LAL-IN2P3/CNRS #ifndef NOBJMGR_H_SEEN #define NOBJMGR_H_SEEN #include "machdefs.h" #include #include #include #include "anydataobj.h" #include "ppersist.h" #include "dvlist.h" #include "dlftypes.h" class NObjMgrAdapter; class PIStdImgApp; class Services2NObjMgr; class NamedObjMgr { public: // Constructeur et destructeur NamedObjMgr(bool fgimgapp=false); virtual ~NamedObjMgr(); virtual void SetImgApp(PIStdImgApp* app); virtual void SetVerbose(bool fg=false); // Gestion des variables globales (dans un DVList) virtual bool SetVar(string const & key, string const & val); virtual bool HasVar(string const & key); virtual bool DeleteVar(string const & key); virtual string GetVar(string const & key); virtual DVList& GetVarList(); // Gestion des repertoires (Repertoire d'objets en memoire) virtual bool CreateDir(string & dirname); virtual bool DeleteDir(string & dirname); virtual void LockDir(string & dirname); virtual void UnlockDir(string & dirname); virtual void SetKeepOldDirAtt(string & dirname, bool keepold=false); virtual bool SetCurrentDir(string & dirname); virtual void GetCurrentDir(string & dirname); virtual void ListDirs(string & patt); virtual void GetDirList(string & patt, vector& ); virtual void CleanDir(string & dirname); // Pour ajouter, supprimer et acceder aux objets virtual bool AddObj(AnyDataObj* obj, string & nom, bool crd=false); virtual bool AddObj(AnyDataObj& obj, string & nom, bool crd=false); virtual bool RenameObj(string & nom, string& nomnew); virtual bool DelObj(string & nom, bool fgd=true); virtual void DelObjects(string & patt, bool fgd=true); virtual bool DelObj_Id(int oid); virtual AnyDataObj* GetObj(string & nom); // Acces a l'adaptateur virtual NObjMgrAdapter* GetObjAdapter(string & nom); // Liste des objets virtual void ListObjs(string & patt); virtual void GetObjList(string & patt, vector& ); // Methode CopyObj() a virer probablement (Reza 30/8/200 obsolete ?) virtual bool CopyObj(string & nom, string& nomcp); // Lecture et sauvegarde des objets sur fichier virtual void ReadObj(PInPersist& s, int num=-1); virtual void ReadObj(string const & nomppf, string & nobj); virtual void ReadObj(vector & flnm_objname); virtual void ReadAll(string const & nomppf); virtual void SaveObj(string & nom, POutPersist& s, bool keeppath=false); virtual void SaveObjects(string & patt, string const& nomppf); virtual void SaveListObjects(vector &liste); virtual void SaveAll(string const& nomppf); // Info sur les objets virtual void PrintObj(string & nom, int lev=0); // Affichage des objets virtual void DisplayObj(string & nom, string dopt=""); virtual void DisplayImage(string & nom, string dopt="", bool fgimagnav=false); virtual void DisplaySurf3D(string & nom, string dopt=""); virtual void DisplayNT(string & nom, string& nmx, string& nmy, string& nmz, string& erx, string& ery, string& erz, string& wt, string& label, string& colornm, bool coloridx=false, string dopt="", bool fg3d=false); virtual void DisplayGFD(string & nom, string& numvarx, string& numvary, string& err, string dopt=""); virtual void DisplayVector(string & nomvx, string& nomvy, string dopt=""); // Acces au PIApplication et a la classe de service virtual PIStdImgApp* GetImgApp(); virtual Services2NObjMgr* GetServiceObj(); virtual string const& GetTmpDir(); virtual void SetTmpDir(string const& tmpdir); // Pour convertir un nom d'objet en identificateur d'objet (OId) virtual int NameToOId(string & nom); // Ajoute un identificateur d'objet widget/drawer/fenetre pour l'objet nom // Ces identificateurs servent lors de la destruction de l'objet nom virtual void AddWRsId(string & nom, int wrsid); // Pour utilisation par ObjMgrWind virtual void UpdateObjMgrWindow(int did); // Pour completer le nom de l'objet avec le nom du repertoire static void RemoveSpacesFromName(string & nom); static bool CheckDirName(string & nom); static int ParseObjectName(string & nom, string & nomrep, string & nomobj); // return true if name is valid static bool CheckName(string const & nom); protected: // Les methodes _P sont celles SANS ZSync() - pour un usage interne par NamedObjMgr virtual bool CreateDir_P(string & dirname); virtual void CleanDir_P(string & dirname); virtual bool AddObj_P(AnyDataObj* obj, string & nom, bool crd); virtual bool RenameObj_P(string & nom, string& nomnew); virtual bool DelObj_P(string & nom, bool fgd=true); virtual AnyDataObj* GetObj_P(string & nom); virtual NObjMgrAdapter* GetObjAdapter_P(string & nom); virtual void ReadObj_P(PInPersist& s, int num=-1); virtual void SaveObj_P(string & nom, POutPersist& s, bool keeppath=false); virtual int NameToOId_P(string & nom); virtual void AddWRsId_P(string & nom, int wrsid); virtual void UpdateObjMgrWindow_P(int did); bool _fgimgapp; // true -> cree par PIStdImgApp / pour gestion de thread }; #endif