|
From: Emilien K. <cur...@us...> - 2005-03-15 21:27:51
|
Update of /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29768/include/wxDevCenter Modified Files: Tag: manager-virtualization Application.h DocView.h FileSystem.h FileSystemStandard.h Frame.h MDIFrame.h Manager.h Project.h Removed Files: Tag: manager-virtualization DocManager.h Log Message: Passage du DocManager et consorts à la nouvelle architecture des gestionnaires. Diverses modifs de l'archi des gestionnaires. Index: Project.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/Project.h,v retrieving revision 1.4.2.1 retrieving revision 1.4.2.2 diff -C2 -d -r1.4.2.1 -r1.4.2.2 *** Project.h 8 Mar 2005 17:26:27 -0000 1.4.2.1 --- Project.h 15 Mar 2005 21:27:31 -0000 1.4.2.2 *************** *** 191,196 **** ~ProjectManager(); - /** Initialisation du gestionnaire.*/ - void Initialize(); /** Finalisation du gestionnaire.*/ void Finalize(); --- 191,194 ---- Index: DocView.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/DocView.h,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -C2 -d -r1.7 -r1.7.2.1 *** DocView.h 7 Mar 2005 15:23:02 -0000 1.7 --- DocView.h 15 Mar 2005 21:27:31 -0000 1.7.2.1 *************** *** 3,7 **** * @author Cursor * ! * @brief Déclaration des classes de manipulations des documents et des vues. * * Déclaration des classes de --- 3,7 ---- * @author Cursor * ! * @brief Déclaration des classes relatives aux documents et aux vues vues. * * Déclaration des classes de *************** *** 12,15 **** --- 12,18 ---- * . * - Vues (wxDevCenter::View) + * - Patron de documents (wxDevCenter::DocTempate). + * - Gestionnaire de types de documents (wxDevCenter::DocManager) + * - Déclaration de type de document (wxDevCenter::DocType) * - Type de document. * - Mini-Documents (wxDevCenter::MiniDoc) *************** *** 35,51 **** // 02111-1307, USA. #ifndef __WXDEVCENTER_DOCVIEW #define __WXDEVCENTER_DOCVIEW #include <wxDevCenter/Frame.h> namespace wxDevCenter { - // Déclaration des classes utilisées. class Application; class DocManager; class DocTemplate; class Archive; class ViewFrame; --- 38,93 ---- // 02111-1307, USA. + /** @page DocManagerDoc Architecture du gestionnaire de documents. + * Le gestionnaire de document englobe la gestion des patrons et des objets de documents et de vues. + * Il s'occupe aussi des minidocs et minivues. + * + * Il est basé sur l'architecture des gestionnaires. + * @see Gestionnaires + * + * @section + * + */ + + #ifndef __WXDEVCENTER_DOCVIEW #define __WXDEVCENTER_DOCVIEW + #include <wx/imaglist.h> + #include <wx/hashmap.h> + #include <wx/dynarray.h> + + #include <wxDevCenter/Manager.h> + #include <wxDevCenter/FileTools.h> #include <wxDevCenter/Frame.h> + #define WXDC_DOCMANAGER_TYPE_NONE 0 + #define WXDC_DOCMANAGER_TYPE_UNKNOW 1 + #define WXDC_DOCMANAGER_TYPE_DIRECTORY 2 + #define WXDC_DOCMANAGER_TYPE_DESKTOP 3 + #define WXDC_DOCMANAGER_TYPE_HOME 4 + #define WXDC_DOCMANAGER_TYPE_DOCUMENTS 5 + #define WXDC_DOCMANAGER_TYPE_COMPUTER 6 + + #define WXDC_DOCMANAGER_TYPE_FLOPPY 7 + #define WXDC_DOCMANAGER_TYPE_HARDDRIVE 8 + #define WXDC_DOCMANAGER_TYPE_CDROM 9 + #define WXDC_DOCMANAGER_TYPE_RAMDISK 10 + #define WXDC_DOCMANAGER_TYPE_REMOTE 11 + + + #define WXDC_DOCMANAGER_TYPE_SYSCOUNT 12 + #define WXDC_DOCMANAGER_TYPE_CUSTOMFIRST 12 + #define WXDC_DOCMANAGER_TYPE_DIRFIRST 2 + + + namespace wxDevCenter { // Déclaration des classes utilisées. class Application; class DocManager; class DocTemplate; + class ViewTemplate; class Archive; class ViewFrame; *************** *** 54,58 **** // Prédéclaration des classes du fichier entete. class WXDC_DLL_BASE View; - class ViewArray; class WXDC_DLL_BASE Document; class WXDC_DLL_BASE Action; --- 96,99 ---- *************** *** 61,64 **** --- 102,109 ---- class WXDC_DLL_BASE MiniView; class WXDC_DLL_BASE MiniDoc; + + class DocManager; + class DocTemplate; + class DocTypeArray; *************** *** 80,87 **** #define IDM_EDIT_SELECTALL wxID_SELECTALL ! /** Interface "Vue". ! * Classe interface de vue pour la représentation visuelle des données des documents. ! */ ! class WXDC_DLL_BASE View : public wxPanel { friend class Application; --- 125,133 ---- #define IDM_EDIT_SELECTALL wxID_SELECTALL ! /* ! * Interface "Vue". ! * Classe interface de vue pour la représentation visuelle des données des documents. ! */ ! class WXDC_DLL_BASE View : public wxPanel, public InitializableInterface { friend class Application; *************** *** 104,110 **** MenuArray m_aMenu; ! /** Pointeur vers la structure d'association du type de vue. ! * @see ViewAssociation.*/ ! ViewAssociation *m_pViewAssociation; /** Interception des évènements menus. --- 150,155 ---- MenuArray m_aMenu; ! /** Adresse du patron de vue.*/ ! ViewTemplate *m_pViewTemplate; /** Interception des évènements menus. *************** *** 143,148 **** /** Retourne le documment auquel est attachée la vue.*/ Document* GetDocument(){return m_pDocument;} ! /** Retourne le descripteur du type de vue.*/ ! ViewAssociation* GetViewAssociation(){return m_pViewAssociation;} /** Processus post-création. --- 188,193 ---- /** Retourne le documment auquel est attachée la vue.*/ Document* GetDocument(){return m_pDocument;} ! /** Retourne le patron de la vue.*/ ! ViewTemplate* GetViewTemplate(){return m_pViewTemplate;} /** Processus post-création. *************** *** 171,184 **** ! /** Définition du type vecteur de pointeurs de vues. ! */ ! WX_DEFINE_USER_EXPORTED_ARRAY(View*, ViewArray, class WXDC_DLL_BASE); ! ! ! ! /** Interface "document" (classe de base). * Classe Interface de document à dériver pour créer des documents spécifiques. */ ! class WXDC_DLL_BASE Document : public wxObject { friend class DocManager; --- 216,224 ---- ! /** ! * Interface "document" (classe de base). * Classe Interface de document à dériver pour créer des documents spécifiques. */ ! class WXDC_DLL_BASE Document : public wxObject, public InitializableInterface { friend class DocManager; *************** *** 189,203 **** protected: /** Pointeur vers le gestionnaire de document.*/ ! DocManager *m_pDocumentManager; /** Pointeur vers le patron de document correspondant au type de ce document.*/ ! DocTemplate *m_pDocumentTemplate; /** Liste dynamique des vues attachées à ce document.*/ ! ViewArray m_ViewArray; /** Le document a-t-il été modifié ?*/ ! bool m_bIsDocumentModified; /** Nom du document.*/ ! wxString m_strName; /** Chemin du document.*/ ! FilePath m_strPath; public: Document(void); --- 229,243 ---- protected: /** Pointeur vers le gestionnaire de document.*/ ! DocManager* m_pDocumentManager; /** Pointeur vers le patron de document correspondant au type de ce document.*/ ! DocTemplate* m_pDocumentTemplate; /** Liste dynamique des vues attachées à ce document.*/ ! ObjectManager<View> m_ViewArray; /** Le document a-t-il été modifié ?*/ ! bool m_bIsDocumentModified; /** Nom du document.*/ ! wxString m_strName; /** Chemin du document.*/ ! FilePath m_strPath; public: Document(void); *************** *** 231,238 **** /** Détache une vue du document.*/ void DetachView(View *pView); - /** Détache puis détruit une vue attachée au document.*/ - void DeleteView(View *pView); - /** Détache et détruit toutes les vues attachées au document.*/ - void DeleteAllViews(); protected: --- 271,274 ---- *************** *** 284,287 **** --- 320,608 ---- }; + + + /** + * Structure d'association de vue. Structure qui stoque les informations relatives à une vue attachée. + */ + class WXDC_DLL_BASE ViewTemplate : public ObjectTemplate<View> + { + public: + /** Icones.*/ + wxString strIcons; + + /** Constructeur.*/ + ViewTemplate(wxClassInfo* pInfo, wxString strName, wxString strDescript, wxString strIcon): + ObjectTemplate<View>(pInfo, strName, strDescript), strIcons(strIcon){} + }; + + + + ////////////////////////////////////////////////////////////////////// + // DocTempate : + + /** Patron de document (document template). + * Référence un type de document avec l'ensemble de ces vues. + * A un type de document correspond : + * - un nom. + * - une description détaillée. + * - une info RTTI de la classe de document. + * - une liste d'extensions par lesquelles les fichiers serons reconnus. Les extensions sont case-insensitives. + * - une liste de vues associées. Chaque vue ayant : + * - un nom. + * - une description. + * - une info RTTI de la classe de vue. + * - une liste d'icones (éventuellement vide). + * - une info RTTI de minidoc. + * @see DocManager + * @see Document + * @see View + */ + class WXDC_DLL_BASE DocTemplate : public ObjectTemplate<Document> + { + friend class Application; + friend class DocManager; + private: + /** Gestionnaire de patron de vues.*/ + TemplateManager<View, ViewTemplate> m_ViewTemplateManager; + protected: + /** Tableau des extensions de fichiers.*/ + wxArrayString m_strExt; + /** Information RTTI du mini-document.*/ + wxClassInfo *m_pMiniDocClassInfo; + public: + /** Constructeur. + * @param strName Nom du type de document. + * @param pDocClassInfo RTTI de la classe document. + * @param strExt Première extension de fichier liée au document. Cette extension est celle par défaut. + * @param strDescription Description détaillée du document (éventuellement vide). + */ + DocTemplate(wxString strName, wxClassInfo *pDocClassInfo, wxString strExt, wxString strDescription=""); + ~DocTemplate(); + + /** @name Gestion des patrons de vues. + * @{ */ + unsigned int GetViewTemplateCount()const{return m_ViewTemplateManager.GetTemplateCount();} + int FindViewTemplate(const ViewTemplate* pTemplate)const{return m_ViewTemplateManager.FindTemplate(pTemplate);} + ViewTemplate& GetViewTemplate(unsigned int nIndex){return m_ViewTemplateManager.GetTemplate(nIndex);} + const ViewTemplate& GetViewTemplate(unsigned int nIndex)const{return m_ViewTemplateManager.GetTemplate(nIndex);} + bool RegisterViewTemplate(ViewTemplate* pTemplate){return m_ViewTemplateManager.RegisterTemplate(pTemplate);} + bool RegisterViewTemplate(ViewTemplate& Templ){return m_ViewTemplateManager.RegisterTemplate(Templ);} + bool UnregisterViewTemplate(ViewTemplate* pTempl){return m_ViewTemplateManager.UnregisterTemplate(pTempl);} + void UnregisterViewTemplate(unsigned int Index){m_ViewTemplateManager.UnregisterTemplate(Index);} + virtual View* CreateView(unsigned int Index){return m_ViewTemplateManager.CreateObjectFromTemplate(Index);} + /** @} */ + + /** @name Données complémentaires du patron de document. + * @{ */ + /** Ajout d'une extension de fichier au type de document. + * @param strExt Nouvelle extension. + * @return Vrai si l'extension est correctement ajoutée. + */ + bool AddExtension(wxString strExt); + /** Extension du document. + * @param nIndex Indice de l'extension dans le tableau des extensions.*/ + wxString GetExtension(unsigned int nIndex=0)const{return m_strExt[nIndex];} + /** Nombre d'extensions enregistrées dans le tableau des extensions.*/ + unsigned int GetExtensionCount()const{return m_strExt.Count();} + /** Wilcard du document. Sélecteur de fichiers généré à partir des extensions de fichiers associées au type de document. + * @param bShowStarDotStar ...*/ + wxString GetDocWildcard(bool bShowStarDotStar=false)const; + /** @}*/ + + + ///** @name Manipulation du Mini-document. + // * @{*/ + ///** RTTI du mini-doc.*/ + //wxClassInfo* GetMiniDocClassInfo()const{return m_pMiniDocClassInfo;} + ///** Fixe les informations RTTI du Mini-document attaché.*/ + //void SetMiniDocClassInfo(wxClassInfo *pMiniDocClassInfo){m_pMiniDocClassInfo=pMiniDocClassInfo;} + ///** @}*/ + }; + + + + + + + ////////////////////////////////////////////////////////////////////// + // DocManager + + /** Gestionnaire de documents. + * Référence les différents types de documents. + * Référence aussi tous les documents ouverts et toutes les vues ouvertes. + * Produit une liste d'icones à partir des icones de toutes les vues. + * @see DocTemplate + * @see Document + * @see View + */ + class WXDC_DLL_BASE DocManager : public MultiObjectTemplateManager<Document, DocTemplate> + { + friend class Application; + private: + /** Gestionnaire des vues.*/ + InitializableObjectManager<View> m_ViewManager; + protected: + /** Fenêtre conteneur par défaut des vues.*/ + wxWindow *m_pDefaultViewContainer; + + /** @name Manipulation des documents. + * @{*/ + public: + /** Nombre de documents.*/ + unsigned int GetDocumentCount()const{return MultiObjectTemplateManager<Document, DocTemplate>::GetObjectCount();} + /** Document par l'indice dans le tableau de référencement.*/ + const Document* GetDocument(unsigned int nIndex)const{return &(MultiObjectTemplateManager<Document, DocTemplate>::GetObject(nIndex));} + Document* GetDocument(unsigned int nIndex){return &(MultiObjectTemplateManager<Document, DocTemplate>::GetObject(nIndex));} + /** Document par son chemin.*/ + const Document* GetDocument(FilePath &strDocPath)const; + Document* GetDocument(FilePath &strDocPath); + /** Crée un document. + * Crée un document à partir de l'identifiant de son patron puis l'enregistre dans la liste des documents. + * @param nIndex Index du patron de document. + */ + Document* CreateDocument(unsigned int nIndex); + /** Ferme le document spécifié. + * Ferme un document et toutes ses vues attachées. + * Si le document a été modifié, une demande d'enregistrement est posée à l'utilisateur et le document est enregistré le cas échéant. + * @return Retourne false si l'utilisateur annule l'action.*/ + bool CloseDocument(Document *pDoc); + /** Ferme tous les documents ouverts. + * Ferme tous les documents ouverts et toutes les vues attachées. + * Si des documents sont modifiés, des demandes d'enregistrements sont posées. + * @return Retourne false si l'utilisateur annule l'action (repond "annuler" à une demande de sauvegarde).*/ + bool CloseAllDocuments(); + /** Sauvegarde les données modifiées du documents.*/ + bool SaveDocument(Document *pDoc); + protected: + /** Supprime le document spécifié. + * Le document est supposé libre de vue et sauevgardé si besoin est. + * Aucune vérification ne sera effectuée.*/ + void DeleteDocument(Document* pDocument); + /** @}*/ + + + /** @name Manipulation des patrons de documents. + * @{*/ + public: + /** Nombre de patrons de documents.*/ + unsigned int GetDocTemplateCount()const{return MultiObjectTemplateManager<Document, DocTemplate>::GetTemplateCount();} + /** Patron de document par son indice dans le tableau de référencement. + * @param nIndex Indice du type de document.*/ + const DocTemplate& GetDocTemplate(unsigned int nIndex)const{return MultiObjectTemplateManager<Document, DocTemplate>::GetTemplate(nIndex);} + DocTemplate& GetDocTemplate(unsigned int nIndex){return MultiObjectTemplateManager<Document, DocTemplate>::GetTemplate(nIndex);} + /** Retrouve l'identifiant du patron depuis son adresse.*/ + int FindDocTemplate(const DocTemplate* pTemplate)const{return MultiObjectTemplateManager<Document, DocTemplate>::FindTemplate(pTemplate);} + /** Patron de document correspondant à un nom de patron. + * @param strDocName Nom du patron de document.*/ + int GetDocTemplateFromName(wxString strDocName)const; + /** Patron de document correspondant à une extension de fichier. + * @param strExt Extension de fichier.*/ + int GetDocTemplateFromExt(wxString strExt)const; + /** Demande à l'utilisateur un type de document. + * Affiche une boite de dialogue qui permet de sélectionner un type de document. + * @return Renvoie l'identifiant du type de document sinon renvoie -1.*/ + int ChooseDocTemplate(void) const; + /** Demande à l'utilisateur un type de vue. + * Affiche une boite de dialogue qui permet de sélectionner le type de vue vis-à-vis du type de document spécifié. + * @param nDocTemplateIndex Identifiant du patron de document. + * @return Renvoie l'identifiant de la vue sinon renvoie -1.*/ + int ChooseViewType(unsigned int nDocTemplateIndex) const; + /** Enregistre les types de documents déclarés. + * Enregistres les types de documents déclarés mais pas encore enregistrés. + */ + void RegisterDocTypes(); + /** Ajoute un patron de document à la liste des patrons. + * @param Adresse du patron de document à ajouter. + * @return Indice du nouveau patron ou -1 si erreur. + */ + int RegisterDocTemplate(DocTemplate* pTemplate); + /** @}*/ + + + /** @name Manipulation des vues. + * @{*/ + /** Nombre de vues. + * @return Nombre de vues. */ + unsigned int GetViewCount()const{return m_ViewManager.GetCount();} + /** Vue par son indice du tableau des référencement. + * @return Vue demandée. */ + const View& GetView(unsigned int nIndex)const{return m_ViewManager.Item(nIndex);} + View& GetView(unsigned int nIndex){return m_ViewManager.Item(nIndex);} + /** Crée une vue. + * Crée une vue correspondant à l'indetifiant de vue spécifié et l'attache au document précisé. + * @param pDoc Document auquel attacher la vue. + * @param nViewIndex Indice de la vue correspondant au patron du type de document. + * @return Adresse de la nouvelle vue, -1 si erreur. + */ + View* CreateView(Document *pDoc, unsigned int nViewIndex); + /** Crée une vue. + * Crée une vue correspondant au patron de vue spécifié et l'attache au document précisé. + * @param pDoc Document auquel attacher la vue. + * @param pViewTemp Indice de la vue correspondant au patron du type de document. + * @return Adresse de la nouvelle vue, -1 si erreur. + */ + View* CreateView(Document *pDoc, ViewTemplate* pViewTemp); + /** Ferme la vue spécifiée. + * Si c'est la dernière vue du document attaché, demande d'enregistrer les modifications le cas échéant. + * @return Retourne false si l'utilisateur annule l'action.*/ + bool CloseView(View *pView); + /** Supprime une vue. Supprime une vue sans aucun test d'attachement aux documents. + * Enlève la vue des différentes listes et la détruit. + * Ne doit être appelée que de CloseDocument ou CloseView (ou associé).*/ + void DeleteView(View *pView); + /** @}*/ + + + + /** @name Manipulation des minidocuments et des minivues. + * @{*/ + /** Crée une MiniVue. + * @param strSourcePath Chemin vers le fichier source. + * @param pParent Adresse de la fenetre parent dans laquelle inclure la mini-vue. + * @param id Identifiant de filiation. + * @return Retourne la nouvelle mini-vue ou NULL si échoué. + */ + MiniView* CreateMiniView(FilePath strSourcePath, wxWindow* pParent, wxWindowID id=-1); + /** Retourne le mini-doc si celui si existe. + * @param strDocPath Chemin du document. + * @return Retourne l'adresse du minidoc ou NULL si aucun minidoc n'est créé pour ce fichier. + */ + MiniDoc* GetMiniDoc(FilePath strDocPath); + /** @}*/ + + + DocManager(void); + virtual ~DocManager(void); + + /** Retourne le filtrage de fichier global. + * Retourne le filtrage de tous les documents enregistrés. + * @param bShowStarDotStar Affiche l'option "Tous les fichiers (*.*)" si vrai. + * @param bShowAllRegisteredExt Affiche l'option "Tous les documents" c'est à dire tous les types de documents enregistrés si vrai. + * @return Retourne le numéro du type de document correspondant à l'extension spécifiée sinon renvoie -1.*/ + wxString GetAllWildcard(bool bShowStarDotStar=true, bool bShowAllRegisteredExt=true)const; + + + /** @name Manipulation des icones de types de documents. + * @{*/ + /** Retourne la liste d'icones du gestionnaire de document correspondant à une taille donnée. + * Chaque image est forcément carrée. + * @param iSize Taille de chaque image. + * @return Adresse de la liste d'image.*/ + wxImageList* GetImageList(int iSize); + /** Retourne le bundle d'icones associé à un identifiant de type de document. + * @param nDocType Index du type de document. + * @param nViewType Index du type de vue. + * @return Adresse du bundle et NULL si aucun. + */ + wxIconBundle* GetIconBundle(unsigned int nDocType, unsigned int nViewType); + /** @}*/ + }; + + + + + + + /** Interface de description d'une action utilisateur. * Classe interface decrivant une action utilisateur pouvant être annulée par une commande "Undo" *************** *** 352,355 **** --- 673,679 ---- class WXDC_DLL_BASE DocType : public DocTemplate { + protected: + /** Unique vue attachée.*/ + ViewTemplate m_ViewTemplate; public: /** Constructeur par défaut. Index: Manager.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/Attic/Manager.h,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -C2 -d -r1.1.2.2 -r1.1.2.3 *** Manager.h 8 Mar 2005 18:46:24 -0000 1.1.2.2 --- Manager.h 15 Mar 2005 21:27:31 -0000 1.1.2.3 *************** *** 70,78 **** #define __WXDEVCENTER_MANAGER - #include <vector> - namespace wxDevCenter { /** Classe de base de gestionnaire d'objets. * Gestion d'objets enregistrés. --- 70,145 ---- #define __WXDEVCENTER_MANAGER namespace wxDevCenter { + template<class ItemType> + class WXDC_DLL_BASE Vector : public wxObject + { + private: + /** Tableau des données.*/ + ItemType* m_pItemArray; + /** Nombre d'éléments dans le tableau.*/ + unsigned long m_lNbItem; + + /** Interroge la place mémoire allouée. + * @return le nombre d'élément stockable.*/ + unsigned long GetAlloc()const{return sizeof(m_pItemArray)/sizeof(ItemType);} + /** Réalloue le tableau pour agrandissement.*/ + void Realloc(unsigned long size) + { + if(size>GetAlloc()) + { + size = (size*5) / 4; + if(size<20) + size=20; + } + + ItemType* pNew = new ItemType[size]; + if(m_pItemArray!=NULL) + { + for(register unsigned long l=0; l<m_lNbItem; l++) + pNew[l] = m_pItemArray[l]; + delete [] m_pItemArray; + } + m_pItemArray = pNew; + } + + public: + /** Constructeur.*/ + Vector():wxObject(),m_pItemArray(NULL), m_lNbItem(0){} + /** Destructeur.*/ + virtual ~Vector(){if(m_pItemArray!=NULL)delete [] m_pItemArray;} + + /** Ajout d'un elément. + * @param item Elément à ajouter. */ + void Add(const ItemType& item) + { + Realloc(m_lNbItem+1); + m_pItemArray[m_lNbItem++] = item; + } + /** Supprime des éléments. + * @param index Index du premier élément à supprimer. + * @param number Nombre d'éléments à supprimer.*/ + void Remove(unsigned long index, unsigned long number=1) + { + unsigned long after; + for(after=index+number; after<m_lNbItem; after++, index++) + m_pItemArray[index] = m_pItemArray[after]; + m_lNbItem -= number; + } + /** Acces sur un élément.*/ + ItemType& Item(unsigned long index){return m_pItemArray[index];} + /** Acces constant sur un élément.*/ + const ItemType& Item(unsigned long index)const{return m_pItemArray[index];} + /** Acces sur un élément.*/ + ItemType& operator[](unsigned long index){return m_pItemArray[index];} + /** Acces constant sur un élément.*/ + const ItemType& operator[](unsigned long index)const{return m_pItemArray[index];} + /** Nombre d'élément.*/ + unsigned long GetCount()const{return m_lNbItem;} + }; + + + /** Classe de base de gestionnaire d'objets. * Gestion d'objets enregistrés. *************** *** 80,87 **** */ template<class ItemType> ! class WXDC_DLL_BASE ObjectManager : public wxObject, protected std::vector<ItemType*> { public: ! ObjectManager(void):wxObject(),std::vector<ItemType*>(){} virtual ~ObjectManager(void){} --- 147,154 ---- */ template<class ItemType> ! class WXDC_DLL_BASE ObjectManager : protected Vector<ItemType*> { public: ! ObjectManager(void):Vector<ItemType*>(){} virtual ~ObjectManager(void){} *************** *** 90,114 **** /** Retourne le nombre d'objets enregistrés. * @return Nombre d'objets enregistrés.*/ ! unsigned int GetCount()const{return size();} /** Recherche un objet. * @param pObj Adresse de l'objet à rechercher. * @return Index de l'objet ou -1 si non trouvé.*/ ! int Find(const ItemType* pObj)const{for(unsigned int n=0; n<size(); n++)if(pObj==at(n))return (int)n; return -1;} /** Accès à un objet. * @param nIndex Index de l'objet. * @return Référence de l'objet.*/ ! ItemType& Item(unsigned int nIndex){return *at(nIndex);} /** Accès constant à un objet. * @param nIndex Index de l'objet. * @return Référence de l'objet.*/ ! const ItemType& Item(unsigned int nIndex)const{return *at(nIndex);} /** Enregistrement d'un objet. * @param pObj Adresse de l'objet. * @return Vrai si correctement enregistré.*/ ! bool Register(ItemType* pObj){if(Find(pObj)!=-1)return false;push_back(pObj);return true;} /** Enregistrement d'un objet. * @param Obj Objet à enregistrer. * @return Vrai si correctement enregistré.*/ ! bool Register(ItemType& Obj){if(Find(&Obj)!=-1)return false;push_back(&Obj);return true;} /** Désenregistrement d'un objet. * @param pObj Adresse de l'objet. --- 157,189 ---- /** Retourne le nombre d'objets enregistrés. * @return Nombre d'objets enregistrés.*/ ! unsigned int GetCount()const{return Vector<ItemType*>::GetCount();} /** Recherche un objet. * @param pObj Adresse de l'objet à rechercher. * @return Index de l'objet ou -1 si non trouvé.*/ ! int Find(const ItemType* pObj)const{for(unsigned int n=0; n<GetCount(); n++)if(pObj==&Item(n))return (int)n; return -1;} /** Accès à un objet. * @param nIndex Index de l'objet. * @return Référence de l'objet.*/ ! ItemType& Item(unsigned int nIndex){return *(Vector<ItemType*>::Item(nIndex));} /** Accès constant à un objet. * @param nIndex Index de l'objet. * @return Référence de l'objet.*/ ! const ItemType& Item(unsigned int nIndex)const{return *(Vector<ItemType*>::Item(nIndex));} ! /** Opérateur d'accès à un objet. ! * @param nIndex Index de l'objet. ! * @return Référence de l'objet.*/ ! ItemType& operator[](unsigned int nIndex){return *(Vector<ItemType*>::Item(nIndex));} ! /** Opérateur d'accès constant à un objet. ! * @param nIndex Index de l'objet. ! * @return Référence de l'objet.*/ ! const ItemType& operator[](unsigned int nIndex)const{return *(Vector<ItemType*>::Item(nIndex));} /** Enregistrement d'un objet. * @param pObj Adresse de l'objet. * @return Vrai si correctement enregistré.*/ ! bool Register(ItemType* pObj){if(Find(pObj)!=-1)return false;Add(pObj);return true;} /** Enregistrement d'un objet. * @param Obj Objet à enregistrer. * @return Vrai si correctement enregistré.*/ ! bool Register(ItemType& Obj){if(Find(&Obj)!=-1)return false;Add(&Obj);return true;} /** Désenregistrement d'un objet. * @param pObj Adresse de l'objet. *************** *** 119,123 **** if(pos!=-1) { ! erase(begin()+pos); return true; } --- 194,198 ---- if(pos!=-1) { ! Remove(pos); return true; } *************** *** 126,130 **** /** Désenregistrement d'un objet. * @param Index Index de l'objet à supprimer.*/ ! void Unregister(unsigned int Index){erase(begin()+Index);} /** @} */ }; --- 201,205 ---- /** Désenregistrement d'un objet. * @param Index Index de l'objet à supprimer.*/ ! void Unregister(unsigned int Index){Remove(Index);} /** @} */ }; *************** *** 150,154 **** */ template<class ItemType> ! class WXDC_DLL_BASE InitializableObjectManager : public ObjectManager<ItemType> { public: --- 225,229 ---- */ template<class ItemType> ! class WXDC_DLL_BASE InitializableObjectManager : public ObjectManager<ItemType>, public InitializableInterface { public: *************** *** 180,184 **** /** Désenregistrement d'un objet. * @param Index Index de l'objet à supprimer.*/ ! void Unregister(unsigned int Index){Item(Index).Finalize();ObjectManager<ItemType>::Unregister(pObj);} /** @} */ }; --- 255,259 ---- /** Désenregistrement d'un objet. * @param Index Index de l'objet à supprimer.*/ ! void... [truncated message content] |