You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/buildtools/custommakefiles/customprojectpart.h

159 lines
5.6 KiB

/***************************************************************************
* Copyright (C) 2001-2002 by Bernd Gehrmann *
* bernd@kdevelop.org *
* Copyright (C) 2007 by Andreas Pakulat *
* apaku@gmx.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef _CUSTOMPROJECTPART_H_
#define _CUSTOMPROJECTPART_H_
#include <qdict.h>
#include <qguardedptr.h>
#include <qmap.h>
#include <qdatetime.h>
#include <qvaluestack.h>
#include <kdevbuildtool.h>
class QListViewItem;
class QPopupMenu;
class QStringList;
class KDialogBase;
class CustomProjectWidget;
class Context;
class KSelectAction;
class CustomProjectPart : public KDevBuildTool
{
Q_OBJECT
public:
CustomProjectPart( QObject *parent, const char *name, const QStringList & );
~CustomProjectPart();
QStringList allMakeEnvironments() const;
QString currentMakeEnvironment() const;
bool isDirty();
QStringList distFiles() const;
virtual void openProject( const QString &dirName, const QString &projectName );
virtual void closeProject();
virtual QString projectDirectory() const;
virtual QString projectName() const;
virtual QString mainProgram() const;
virtual QString activeDirectory() const;
virtual QStringList allFiles() const;
virtual void addFile( const QString &fileName );
virtual void addFiles( const QStringList& fileList );
virtual void removeFile( const QString &fileName );
virtual void removeFiles( const QStringList &fileList );
virtual QString buildDirectory() const;
virtual QString runDirectory() const;
virtual QString debugArguments() const;
virtual QString runArguments() const;
virtual DomUtil::PairList runEnvironmentVars() const;
QString relativeToProject( const QString& ) const;
private slots:
void populateProject();
void projectConfigWidget( KDialogBase *dlg );
void contextMenu( QPopupMenu *popup, const Context *context );
void slotAddToProject();
void slotRemoveFromProject();
void slotAddToProjectRecursive();
void slotRemoveFromProjectRecursive();
void addNewFilesToProject( const QStringList& );
void slotChangeBlacklist();
void slotChooseActiveDirectory();
void slotBuild();
void slotBuildActiveDir();
void slotCompileFile();
void slotInstall();
void slotInstallActiveDir();
void slotInstallWithKdesu();
void slotClean();
void slotExecute();
void updateTargetMenu();
void targetMenuActivated( int id );
void targetObjectFilesMenuActivated( int id );
void targetOtherFilesMenuActivated( int id );
void updateMakeEnvironmentsMenu();
void makeEnvironmentsMenuActivated( int id );
void slotCommandFinished( const QString& command );
void slotCommandFailed( const QString& command );
private:
bool containsNonProjectFiles( const QString& url );
QStringList projectFilesInDir( const QString& dir );
bool containsProjectFiles( const QString& url );
bool isProjectFileType( const QString& absFile ) const;
bool isInBlacklist( const QString& ) const;
void cleanFileList();
void setFiletypes( const QStringList& );
void findNewFiles( const QString& dir, QStringList& list) const;
QStringList filetypes() const;
QStringList blacklist() const;
void updateBlacklist( const QStringList& );
void saveProject();
void startMakeCommand( const QString &dir, const QString &target, bool withKdesu = false );
void parseMakefile( const QString& file );
QString makeEnvironment() const;
void putEnvVarsInVarMap();
void switchBlacklistEntry(const QString& );
bool isInProject( const QString& fileName ) const;
void addToProject( const QString& fileName );
void removeFromProject( const QString& fileName );
/**
* @brief Set of all the project's files.
*
* @bug
* Due to deficiency in QT3,
* we have to use a map with next-to-useless element value,
* keyed by the file name,
* as a set-container replacement.
*/
typedef QMap<QString, bool> ProjectFilesSet;
QString m_projectDirectory;
QString m_projectName;
QString m_filelistDir;
/** All the sources (files and directories) of this project. */
ProjectFilesSet m_sourceFilesSet;
QPopupMenu *m_targetMenu;
QPopupMenu *m_targetObjectFilesMenu;
QPopupMenu *m_targetOtherFilesMenu;
KSelectAction *m_makeEnvironmentsSelector;
QStringList m_targets;
QStringList m_targetsObjectFiles;
QStringList m_targetsOtherFiles;
QStringList m_contextAddFiles;
QStringList m_contextRemoveFiles;
QString m_contextDirName;
QMap<QString, QDateTime> m_timestamp;
bool m_executeAfterBuild;
QString m_buildCommand;
bool m_lastCompilationFailed;
QMap<QString, int> m_parsedMakefiles;
QValueStack<QString> m_makefilesToParse;
QMap<QString, QString> m_makefileVars;
bool m_recursive;
bool m_first_recursive;
};
#endif
// kate: space-indent on; indent-width 4; tab-width 4; replace-tabs on