diff options
Diffstat (limited to 'src/projectmanager.h')
-rw-r--r-- | src/projectmanager.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/projectmanager.h b/src/projectmanager.h new file mode 100644 index 00000000..1cfb07d6 --- /dev/null +++ b/src/projectmanager.h @@ -0,0 +1,111 @@ +#ifndef __PROJECTMANAGER_H__ +#define __PROJECTMANAGER_H__ + + +#include <qstring.h> +#include <qobject.h> +#include <qdict.h> + + +#include <kxmlguiclient.h> +#include <kservice.h> +#include <kurl.h> + +class KAction; +class KSelectAction; +class KService; +class ProjectInfo; +class ProjectSession; +class KRecentFilesAction; +class KDevPlugin; + + +class ProjectInfo +{ +public: + KURL m_projectURL; + QDomDocument m_document; + QString m_profileName; + QString m_projectName; + QString m_projectPlugin, m_language, m_activeLanguage, m_vcsPlugin; + QStringList m_ignoreParts, m_keywords; + + QString sessionFile() const; +}; + +/** +Project manager. +Loads and unloads projects. +*/ +class ProjectManager : public QObject, public KXMLGUIClient +{ + Q_OBJECT + +public: + + ~ProjectManager(); + + static QString projectDirectory( const QString& path, bool absolute ); + + static ProjectManager *getInstance(); + + void loadSettings(); + void saveSettings(); + void loadDefaultProject(); + + bool projectLoaded() const; + + KURL projectFile() const; + QString projectName() const; + + void createActions( KActionCollection* ac ); + + ProjectSession* projectSession() const; + +public slots: + bool loadProject( const KURL& url); + bool loadKDevelop2Project( const KURL& url); + bool closeProject( bool exiting = false ); + +private slots: + void slotOpenProject(); + void slotProjectOptions(); + + void slotLoadProject(); + + void loadLocalParts(); + +private: + ProjectManager(); + + void setupActions(); + void getGeneralInfo(); + + bool loadProjectFile(); + bool saveProjectFile(); + + bool loadProjectPart(); + void unloadProjectPart(); + + bool loadLanguageSupport(const QString& lang); + void unloadLanguageSupport(); + +// QString profileByAttributes(const QString &language, const QStringList &keywords); + + ProjectInfo *m_info; + + KAction *m_closeProjectAction, *m_projectOptionsAction; + KRecentFilesAction *m_openRecentProjectAction; + + static ProjectManager *s_instance; + + ProjectSession* m_pProjectSession; + + KDevPlugin *m_vcsPlugin; + QString m_vcsName; + + QString m_oldProfileName; +}; + + +#endif |