|
From: Emilien K. <cur...@us...> - 2005-03-03 16:20:39
|
Update of /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28018/include/wxDevCenter Modified Files: Application.h Project.h language.h Log Message: Ajout des mécanismes primaires de gestion des projets. Index: Project.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/Project.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Project.h 3 Dec 2004 16:47:44 -0000 1.1 --- Project.h 3 Mar 2005 16:20:27 -0000 1.2 *************** *** 3,9 **** * @author Cursor * ! * @brief Déclaration de la classe de gestion du projet. * ! * Déclaration de la classe "projet" (wxDevCenter::Project) */ // --- 3,11 ---- * @author Cursor * ! * @brief Déclaration des classes de gestion des projets. * ! * Déclaration de la classe "projet" (wxDevCenter::Project). ! * Déclaration de la classe de patron de projet (wxDevCenter::ProjectTemplate). ! * Déclaration de la classe du gestionnaire de projet (wxDevCenter::ProjectManager). */ // *************** *** 28,60 **** #define __WXDEVCENTER_PROJECT namespace wxDevCenter { - class Project : public wxObject - { - friend class Application; - protected: - Project(); // Seule la classe application peut créer un objet projet - virtual ~Project(void); // Données membres : protected: - bool m_bIsActive; // Projet actif wxString m_strName; // Nom du projet ! wxString m_strPath; // Chemin - localisation du projet wxString m_strDescription; // Description du projet ! // Fonctions d'acces publique au projet : public: ! wxString GetName(){return m_strName;}; ! wxString GetPath(){return m_strPath;}; ! wxString GetDescription(){return m_strDescription;}; - bool OpenFromFile(wxString strFile); - bool Create(wxString strFile, wxString strName); - void Close(); - bool IsActive()const{return m_bIsActive;} }; --- 30,241 ---- #define __WXDEVCENTER_PROJECT + #include <wxDevCenter/FileTools.h> + #include <wxDevCenter/FileSystem.h> + + #include <wx/dynarray.h> + namespace wxDevCenter { + class ProjectTemplate; + /** Classe de base des projets. + * A dériver pour implémenter de nouveaux types de projets. + * \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) // Données membres : protected: wxString m_strName; // Nom du projet ! FilePath m_strPath; // Chemin - localisation du projet wxString m_strDescription; // Description du projet + /** Adresse du patron de projet.*/ + ProjectTemplate* m_pTemplate; + public: + Project(); + virtual ~Project(void); ! /** @name Accesseurs publiques. ! * @{ */ ! /** Nom du Projet.*/ ! wxString GetName()const{return m_strName;}; ! /** Chemin du fichier du projet.*/ ! FilePath GetPath()const{return m_strPath;}; ! /** Description du projet.*/ ! wxString GetDescription()const{return m_strDescription;}; ! /** @} */ ! ! /** Accesseur sur le patron de projet.*/ ! ProjectTemplate* GetProjectTemplate(){return m_pTemplate;} ! ! /** @name Fonction virtuelles de contrôle du projet. ! * @{ */ ! /** Méthode de création d'un nouveau projet. ! * Appelé lorsqu'un nouveau projet est créé. ! * @return Faux si erreur d'initialisation.*/ ! virtual bool OnCreateProject(); ! /** Méthode d'ouverture de projet. ! * Appelé lorqu'un projet est ouvert. ! * @param ar Archive de lecture des données du projet. ! * @return Faux si erreur de chargement.*/ ! virtual bool OnOpenProject(Archive& ar); ! /** Méthode de sauvegarde de projet. ! * Appelé lorsqu'un projet doit sauvegarder ses données. ! * @param ar Archive de sauvegarde des données du projet. ! * @return Faux si erreur de sauvegarde.*/ ! virtual bool OnSaveProject(Archive& ar); ! /** Méthode testant la possibilité de fermer un projet. ! * Appelé lors de la demande de fermeture du projet. ! * La fonction de base ferme les documents associés. ! * @return Faux pour annuler la fermeture du projet.*/ ! virtual bool CanCloseProject(); ! /** Méthode de fermeture de projet. ! * Appelé juste avant la fermeture de projet mais après la fermeture des documents attachés. ! * @return Faux si problème de fermeture.*/ ! virtual bool OnCloseProject(); ! /** @} */ ! }; ! ! ! /** Classe de patron de projet. ! * Utilisé pour enregistrer les différents types de projets. ! * Utilise les données suivantes : ! * - Un nom de type de projet. ! * - Une description du type de projet. ! * - Une icone. ! * - 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. ! * Assigne directement les données. ! * @param pProjectClassInfo Adresse des informations RTTI de la classe de projet. ! * @param strName Nom du type de projet. ! * @param strDescript Description du type de projet. ! * @param strIcon Icone du type de projet. ! * @param strExt Extensions associées au fichier de projet séparés par des point-virgules(';'). ! */ ! ProjectTemplate(wxClassInfo* pProjectClassInfo=NULL, wxString strName=wxT(""), wxString strDescript=wxT(""), wxString strIcon=wxT(""), wxString strExt=wxT("")); ! ! /** Accesseur de nom.*/ ! wxString GetName()const{return m_strName;} ! /** Accesseur de description.*/ ! wxString GetDescript()const{return m_strDescript;} ! ! /** @name Gestion des extensions de fichiers du type du projet. ! * @{ */ ! /** Ajoute des extensions de fichiers de projets. ! * @param strExt extensions séparées par des point-virgules ';'.*/ ! void AddFileProjectExtension(wxString strExt); ! /** Retourne le nombre d'extensions associées au type de projets.*/ ! unsigned int GetExtensionCount()const{return m_strExtArray.GetCount();} ! /** Retourne une extension associée au type de projets.*/ ! wxString GetExtension(unsigned int n)const{return m_strExtArray[n];} ! /** Retourne le wildcard associé au fichier du projet. ! * @param bShowStarDotStar Si vrai, ajoute l'entrée *.*.*/ ! wxString GetDocWildcard(bool bShowStarDotStar)const; ! /** @} */ ! ! /** Crée un objet projet. ! * Ne fait que allouer la mémoire et appeler le constructeur par défaut.*/ ! Project* CreateProject(); ! }; ! ! /** 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.*/ ! ProjectManager(); ! /** Destructeur.*/ ! ~ProjectManager(); ! ! /** Initialisation du gestionnaire.*/ ! void Initialize(); ! /** Finalisation du gestionnaire.*/ ! void Finalize(); ! ! ! /** @name Gestion du projet courant. ! * @{ */ ! /** 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. ! * @return Vrai si le document a été fermé et faux si la femreture n'est pas imérative et que le projet n'a pas pu se fermer. ! */ ! bool CloseProject(bool bForce=false); ! /** Ouvre un projet depuis un fichier spécifié. ! * @param strFile Chemin du fichier de projet à ouvrir. ! * @param iTemplateIndex Indice du patron de projet à utiliser. -1 si autodétection. ! * @return Faux si erreur d'ouverture.*/ ! bool OpenProject(FilePath strFile, int iTemplateIndex = -1); ! /** Crée un nouveau projet. ! * Provoque le choix d'un type de projet et le crée. ! * @param iTemplateIndex Indice du patron de projet à utiliser. -1 si autodétection. ! * @return Faux si erreur. de création.*/ ! bool CreateProject(int iTemplateIndex = -1); ! /** Sauvegarde les données du projet. ! * @return Faux si erreur de sauvegarde.*/ ! bool SaveProject(); ! /** @} */ ! ! /** @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 "*.*". ! * @param bShowAllRegisteredExt Si vrai, ajoute, le wildcard "All registered".*/ ! wxString GetAllWildcard(bool bShowStarDotStar=true, bool bShowAllRegisteredExt=true)const; ! /** Fait choisir un patron de projet à l'utilisateur. ! * @return Index du patron, -1 si annulé.*/ ! int ChooseProjectTemplate()const; ! /** Choisit un type de projet en fonction de l'extensions d'un fichier. ! * @param strFile Chemin du fichier. ! * @return Index du type de projet ou -1 si aucun ne correspond.*/ ! int ChooseProjectTemplateFromExtension(const FilePath& strFile)const; ! /** @} */ }; Index: Application.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/Application.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Application.h 12 Feb 2005 11:32:29 -0000 1.5 --- Application.h 3 Mar 2005 16:20:27 -0000 1.6 *************** *** 27,30 **** --- 27,31 ---- #include <wxDevCenter/Plugin.h> + #include <wxDevCenter/Project.h> #include <wxDevCenter/DocManager.h> #include <wxDevCenter/FileSystem.h> *************** *** 40,44 **** class MainFrame; - class Project; class DocManager; class FileSystemManager; --- 41,44 ---- *************** *** 63,68 **** { protected : ! /** Projet.*/ ! Project* m_pProject; /** Gestionnaire des plugins.*/ PluginManager m_PluginManager; --- 63,68 ---- { protected : ! /** Gestionnaire de projets.*/ ! ProjectManager m_ProjectManager; /** Gestionnaire des plugins.*/ PluginManager m_PluginManager; *************** *** 150,153 **** --- 150,155 ---- /** Charge un projet depui un fichier.*/ void LoadProject(); + /** Sauvegarde le projet.*/ + void SaveProject(); /** Ferme le projet actif.*/ void CloseProject(); *************** *** 156,160 **** bool IsProjectActive(void); /** Projet.*/ ! const Project* GetProject()const{return m_pProject;} /** @}*/ --- 158,163 ---- bool IsProjectActive(void); /** Projet.*/ ! Project* GetProject(){return m_ProjectManager.GetProject();} ! const Project* GetProject()const{return m_ProjectManager.GetProject();} /** @}*/ Index: language.h =================================================================== RCS file: /cvsroot/wxdevcenter/wxDevCenter/include/wxDevCenter/language.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** language.h 12 Feb 2005 16:54:34 -0000 1.6 --- language.h 3 Mar 2005 16:20:27 -0000 1.7 *************** *** 136,142 **** ////////////////////////////////////////////////////////////////////// // Gestion des projets ! #define WXDC_PROJECT_WILDCARD "Orx Project (*.orx)|*.orx|All files|*.*" ! #define WXDC_PROJECT_QUERY_OPEN "Choose a GameProject package file to load" ! #define WXDC_PROJECT_QUERY_SAVE "Choose a name to save your GameProject package file" #define WXDC_DOCUMENT_REQUEST_OPEN "Open document" --- 136,143 ---- ////////////////////////////////////////////////////////////////////// // Gestion des projets ! #define WXDC_PROJECT_QUERY_OPEN "Choose a project to load" ! #define WXDC_PROJECT_QUERY_SAVE "Choose a name to save your project" ! #define WXDC_PROJECT_QUERY_TYPE "Choose a project type" ! #define WXDC_DOCUMENT_REQUEST_OPEN "Open document" |