Update of /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29232/include/wxDevCenter Modified Files: Application.h DocView.h FileSystem.h FileSystemStandard.h Frame.h MDIFrame.h Project.h Added Files: Manager.h Removed Files: DocManager.h Log Message: Merge de la branche "manager_virtualization". Index: Project.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/Project.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Project.h 7 Mar 2005 15:23:02 -0000 1.4 --- Project.h 16 Mar 2005 14:27:36 -0000 1.5 *************** *** 30,33 **** --- 30,34 ---- #define __WXDEVCENTER_PROJECT + #include <wxDevCenter/Manager.h> #include <wxDevCenter/FileTools.h> #include <wxDevCenter/FileSystem.h> *************** *** 45,49 **** * @warning Les classes de projets doivent impérativement être RTTI-dynamiques et leurs constructeurs ne peuvent prendre aucun paramètre. */ ! class WXDC_DLL_BASE Project : public wxObject { DECLARE_DYNAMIC_CLASS(Project); --- 46,50 ---- * @warning Les classes de projets doivent impérativement être RTTI-dynamiques et leurs constructeurs ne peuvent prendre aucun paramètre. */ ! class WXDC_DLL_BASE Project : public ManagedObject { DECLARE_DYNAMIC_CLASS(Project); *************** *** 102,105 **** --- 103,107 ---- + /** Classe de patron de projet. * Utilisé pour enregistrer les différents types de projets. *************** *** 110,128 **** * - Les infos RTTI de la classe du projet. */ ! class WXDC_DLL_BASE ProjectTemplate : public wxObject { protected: - /** Nom du type de projet.*/ - wxString m_strName; - /** Description du type de projet.*/ - wxString m_strDescript; /** Chemin relatif de son icone.*/ wxString m_strIcon; - /** Extensions des fichiers du type de projet.*/ wxArrayString m_strExtArray; - - /** Informations RTTI.*/ - wxClassInfo *m_pProjectClassInfo; public: /** Constructeur par défaut. --- 112,122 ---- * - Les infos RTTI de la classe du projet. */ ! class WXDC_DLL_BASE ProjectTemplate : public ObjectTemplate<Project> { protected: /** Chemin relatif de son icone.*/ wxString m_strIcon; /** Extensions des fichiers du type de projet.*/ wxArrayString m_strExtArray; public: /** Constructeur par défaut. *************** *** 164,168 **** /** Crée un objet projet. * Ne fait que allouer la mémoire et appeler le constructeur par défaut.*/ ! Project* CreateProject(); }; --- 158,162 ---- /** Crée un objet projet. * Ne fait que allouer la mémoire et appeler le constructeur par défaut.*/ ! Project* CreateProject(){return CreateObject();} }; *************** *** 186,204 **** - - /** Définition du type tableau dynamique de patrons de projets. - */ - WX_DEFINE_USER_EXPORTED_ARRAY(ProjectTemplate*, ProjectTemplateArray, class WXDC_DLL_BASE); - - /** Gestionnaire de projets. * Enregistre les différents types de projets et gère le projet actuellement ouvert. */ ! class WXDC_DLL_BASE ProjectManager : protected ProjectTemplateArray { - protected: - /** Projet actuellement ouvert. NULL si aucun.*/ - Project* m_pCurrentProject; - public: /** Constructeur par défaut.*/ --- 180,188 ---- /** Gestionnaire de projets. * Enregistre les différents types de projets et gère le projet actuellement ouvert. */ ! class WXDC_DLL_BASE ProjectManager : public SingleObjectTemplateManager<Project, ProjectTemplate> { public: /** Constructeur par défaut.*/ *************** *** 207,212 **** ~ProjectManager(); - /** Initialisation du gestionnaire.*/ - void Initialize(); /** Finalisation du gestionnaire.*/ void Finalize(); --- 191,194 ---- *************** *** 216,224 **** * @{ */ /** Test si un projet est actuellement ouvert.*/ ! bool HasProject()const{return m_pCurrentProject!=NULL;} /** Retourne l'adresse du projet courant.*/ ! Project* GetProject(){return m_pCurrentProject;} /** Retourne l'adresse du projet courant.*/ ! const Project* GetProject()const{return m_pCurrentProject;} /** Ferme le projet en cours. * @param bForce Vrai si le projet doit être fermé impérativement. --- 198,206 ---- * @{ */ /** Test si un projet est actuellement ouvert.*/ ! bool HasProject()const{return HasObject();} /** Retourne l'adresse du projet courant.*/ ! Project& GetProject(){return GetCurrentObject();} /** Retourne l'adresse du projet courant.*/ ! const Project& GetProject()const{return GetCurrentObject();} /** Ferme le projet en cours. * @param bForce Vrai si le projet doit être fermé impérativement. *************** *** 243,255 **** /** @name Gestion des types de projets. * @{ */ - /** Nombre de type de projets.*/ - unsigned int GetProjectTemplateCount()const{return GetCount();} - /** Accès à un type de projet par son index.*/ - ProjectTemplate* GetProjectTemplate(int index){return Item(index);} - const ProjectTemplate* GetProjectTemplate(int index)const{return Item(index);} - /** Accès à l'index d'un type de projet.*/ - int GetProjectTemplateIndex(const ProjectTemplate* pTemplate); - /** Enregistre un type de projet.*/ - bool RegisterProjectType(ProjectTemplate* pTemplate); /** Retourne le wildcard de tous les types de projets. * @param bShowStarDotStar Si vrai, ajoute le wildcard "*.*". --- 225,228 ---- Index: DocView.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/DocView.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** DocView.h 7 Mar 2005 15:23:02 -0000 1.7 --- DocView.h 16 Mar 2005 14:27:36 -0000 1.8 *************** *** 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,41 **** --- 38,62 ---- // 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> *************** *** 43,51 **** { - // Déclaration des classes utilisées. class Application; class DocManager; class DocTemplate; class Archive; class ViewFrame; --- 64,72 ---- { // 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; --- 75,78 ---- *************** *** 61,64 **** --- 81,88 ---- 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; --- 104,112 ---- #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. --- 129,134 ---- 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. --- 167,172 ---- /** 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; --- 195,203 ---- ! /** ! * 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); --- 208,222 ---- 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: --- 250,253 ---- *************** *** 284,386 **** }; - /** Interface de description d'une action utilisateur. - * Classe interface decrivant une action utilisateur pouvant être annulée par une commande "Undo" - * et fournissant toutes les données pour permettre au document de revenir à l'état d'avant l'action. - */ - class WXDC_DLL_BASE Action : public wxObject - { - protected: - /** Code de référence du type d'action.*/ - unsigned int m_nCode; - public: - Action(unsigned int nCode); - /** Retourne le code de l'action.*/ - inline unsigned int GetCode()const{return m_nCode;} - /** Fixe le code de l'action.*/ - inline void SetCode(unsigned int nCode){m_nCode=nCode;} - }; - - - /** Interface "document" implémentant des actions. - * Interfaces pour les documents implémentants des actions et une pile d'actions pour le retour arrière "Undo". - */ - class WXDC_DLL_BASE ActionDocument : public Document - { - /** Déclaration de classe dynamique. Déclare la classe comme pouvant être crée dynamiquement depuis ses infos RTTI de caractère.*/ - DECLARE_DYNAMIC_CLASS(wxDevCenter::ActionDocument); - protected: - /** Définit le type tableau dynamique d'actions ActionArray.*/ - WX_DEFINE_USER_EXPORTED_ARRAY(Action*, ActionArray, class WXDC_DLL_BASE); - /** Tableau dynamique des actions.*/ - ActionArray m_ActionArray; - /** Taille maximale pour le tableau dynamique des fonctions.*/ - int m_iActionArrayMaxSize; - public: - ActionDocument(); - virtual ~ActionDocument(); - - /** Fixe le nombre maximum d'annulation d'action possible. - * Fixe la taille du tableau des dernières actions effectuées.*/ - void SetUndoListSize(int iSize); - /** Retourne le nombre maximum d'annulation d'action possible. - * Retourne la taille du tableau des dernières actions effectuées.*/ - int GetUndoListSize()const{return m_iActionArrayMaxSize;} - /** Retourne le nombre d'annulations d'actions possibles. - * Retourne le nombre d'actions contenues dans le tableau des dernières actions effectuées.*/ - int GetUndoActionCount()const{return m_ActionArray.GetCount();} - /** Annule la dernière action effectuée. - * Restore l'état du document d'avant la dernière action. - * La fonction de base supprime l'action de la liste mais ne rafraichit pas les vues attachées.*/ - virtual void Undo(); - protected: - /** Retourne la dernière action effectuée si il y en a une.*/ - Action* GetUndoAction(){return m_ActionArray.GetCount()==0?NULL:m_ActionArray[m_ActionArray.GetCount()-1];}// Retourne la dernière action. - /** Ajoute une action. - * Ajoute une action à la liste des dernières actions. - * La fonction de base ne fait qu'ajouter l'action à la liste mais n'exécute pas cette action ni ne rafraichis les vues attachées.*/ - void AddAction(Action *pAction); - }; - - - - - - /** Classe de base de déclaration de types de documents. - * Cette classe (et surtout son constructeur) devrait être suffisante. - * Vous pouvez dériver cette classe pour ajouter des traitements spécifiques (ajouts d'autres vues ...) mais il faudra absolumant appeler les fonctions de base. - */ - class WXDC_DLL_BASE DocType : public DocTemplate - { - public: - /** Constructeur par défaut. - * Les paramètres de ce constructeur devraient être suffisants dans la majorité des cas. - * @param strDocName Nom du document associé. - * @param pDocClassInfo RTTI de la classe du document. - * @param strDocDescripton Description du document. - * @param strExt Liste des extensions (sans point ni étoile) séparés par des points-virgules ';' (exemple : "txt;log" ou "bmp;png;gif;jpg;jpeg"). - * @param strViewName Nom de la vue associée. - * @param pViewClassInfo RTTI de la classe de la vue. - * @param strViewDescripton Description de la vue. - * @param strIconBundleName Nom du jeu d'icones système à utiliser. - * @param pMiniDocClassInfo RTTI de la classe de mini-document. - */ - DocType(wxString strDocName, wxClassInfo *pDocClassInfo, wxString strDocDescripton, wxString strExt, - wxString strViewName, wxClassInfo *pViewClassInfo, wxString strViewDescripton, wxString strIconBundleName, wxClassInfo *pMiniDocClassInfo = NULL); - /** Destructeur.*/ - virtual ~DocType(void); - - /** Initialisation. - * Permet d'initialiser des données spécifiques aux types de documents comme des données globales/statiques. - * Appelé avant toute création d'un document de ce type. - * @return Si faux le type de documents ne sera pas utilisé. - */ - virtual bool Initialize(); - - /** Nettoyage. - * Appelé pendant le désenregistrement du type de document (fin de l'appli ...). - * Permet de nettoyer des données spécifiques aux types de documents comme des données globales/statiques. - */ - virtual void Free(); - }; --- 299,302 ---- *************** *** 502,505 **** --- 418,784 ---- + + /** + * Patron de vue. + */ + 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; + 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; + /** @}*/ + }; + + + + + + + ////////////////////////////////////////////////////////////////////// + // 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); + /** @}*/ + + + 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" + * et fournissant toutes les données pour permettre au document de revenir à l'état d'avant l'action. + */ + class WXDC_DLL_BASE Action : public wxObject + { + protected: + /** Code de référence du type d'action.*/ + unsigned int m_nCode; + public: + Action(unsigned int nCode); + /** Retourne le code de l'action.*/ + inline unsigned int GetCode()const{return m_nCode;} + /** Fixe le code de l'action.*/ + inline void SetCode(unsigned int nCode){m_nCode=nCode;} + }; + + + /** Interface "document" implémentant des actions. + * Interfaces pour les documents implémentants des actions et une pile d'actions pour le retour arrière "Undo". + */ + class WXDC_DLL_BASE ActionDocument : public Document + { + /** Déclaration de classe dynamique. Déclare la classe comme pouvant être crée dynamiquement depuis ses infos RTT... [truncated message content] |