kdevbuildsystem.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _KDEVBUILDSYSTEM_H_
00021 #define _KDEVBUILDSYSTEM_H_
00022
00023 #include <qobject.h>
00024
00025 #include <kurl.h>
00026
00027 #include <qmap.h>
00028 #include <qvariant.h>
00029 #include <qvaluelist.h>
00030 #include <qwidget.h>
00031 #include <qdom.h>
00032
00033 #include "kdevproject.h"
00034
00035 #include "propertylist.h"
00036 #include "multiproperty.h"
00037
00038 class BuildFileItem;
00039 class BuildGroupItem;
00040 class BuildTargetItem;
00041 class KDialogBase;
00042
00043 class BuildBaseItem
00044 {
00045 public:
00046 enum
00047 {
00048 Group,
00049 Target,
00050 File,
00051
00052 Custom=1000
00053 };
00054
00055 public:
00056 BuildBaseItem( int type, BuildBaseItem* parent=0 );
00057 virtual ~BuildBaseItem();
00058
00059 virtual int type() const { return m_type; }
00060 virtual QString name() const { return m_name; }
00061
00062 BuildBaseItem* parent() { return m_parent; }
00063 const BuildBaseItem* parent() const { return m_parent; }
00064
00065 PropertyLib::PropertyList& attributes() { return m_attributes; }
00066 PropertyLib::PropertyList *pAttributes() { return &m_attributes; }
00067
00068
00069 QVariant attribute( const QString& name ) { return m_attributes[name]->value(); }
00070 void setAttribute( const QString& name, const QVariant& value ) { m_attributes[name]->setValue(value); }
00071
00072 virtual QString path();
00073
00074 protected:
00075 QString m_name;
00076
00077 private:
00078 int m_type;
00079 BuildBaseItem* m_parent;
00080 PropertyLib::PropertyList m_attributes;
00081
00082 private:
00083 BuildBaseItem( const BuildBaseItem& source );
00084 void operator = ( const BuildBaseItem& source );
00085 };
00086
00087 class BuildGroupItem: public BuildBaseItem
00088 {
00089 public:
00090 BuildGroupItem( const QString& name, BuildGroupItem* parent=0 );
00091 virtual ~BuildGroupItem();
00092
00093 BuildGroupItem* parentGroup() { return m_parentGroup; }
00094 const BuildGroupItem* parentGroup() const { return m_parentGroup; }
00095
00096 void insertGroup( BuildGroupItem* group );
00097 void removeGroup( BuildGroupItem* group );
00098 BuildGroupItem* takeGroup( BuildGroupItem* group );
00099 BuildGroupItem* groupByname( const QString& groupName );
00100 QValueList<BuildGroupItem*> groups() { return m_subGroups; }
00101
00102 void insertTarget( BuildTargetItem* target );
00103 void removeTarget( BuildTargetItem* target );
00104 BuildTargetItem* takeTarget( BuildTargetItem* target );
00105 BuildTargetItem* targetByName( const QString& targetName );
00106 QValueList<BuildTargetItem*> targets() { return m_targets; }
00107
00108 private:
00109 BuildGroupItem* m_parentGroup;
00110 QValueList<BuildGroupItem*> m_subGroups;
00111 QValueList<BuildTargetItem*> m_targets;
00112
00113 private:
00114 BuildGroupItem( const BuildGroupItem& source );
00115 void operator = ( const BuildGroupItem& source );
00116 };
00117
00118 class BuildTargetItem: public BuildBaseItem
00119 {
00120 public:
00121 BuildTargetItem( const QString& name, BuildGroupItem* parent );
00122 virtual ~BuildTargetItem();
00123
00124 BuildGroupItem* parentGroup() { return m_parentGroup; }
00125 const BuildGroupItem* parentGroup() const { return m_parentGroup; }
00126
00127 void insertFile( BuildFileItem* file );
00128 void removeFile( BuildFileItem* file );
00129 BuildFileItem* takeFile( BuildFileItem* file );
00130 BuildFileItem* fileByName( const QString& fileName );
00131 QValueList<BuildFileItem*> files() { return m_files; }
00132
00133 private:
00134 BuildGroupItem* m_parentGroup;
00135 QValueList<BuildFileItem*> m_files;
00136
00137 private:
00138 BuildTargetItem( const BuildTargetItem& source );
00139 void operator = ( const BuildTargetItem& source );
00140 };
00141
00142 class BuildFileItem: public BuildBaseItem
00143 {
00144 public:
00145 BuildFileItem( const KURL& url, BuildTargetItem* parentTarget );
00146 virtual ~BuildFileItem();
00147
00148 BuildTargetItem* parentTarget() { return m_parentTarget; }
00149 const BuildTargetItem* parentTarget() const { return m_parentTarget; }
00150
00151 const KURL& url() const { return m_url; }
00152 virtual QString name() const { return m_url.fileName(); }
00153
00154 private:
00155 KURL m_url;
00156 BuildTargetItem* m_parentTarget;
00157
00158 private:
00159 BuildFileItem( const BuildFileItem& source );
00160 void operator = ( const BuildFileItem& source );
00161 };
00162
00163 class BuildItemConfigWidget: public QWidget{
00164 Q_OBJECT
00165 public:
00166 BuildItemConfigWidget(BuildBaseItem *it, QWidget *parent = 0, const char *name = 0);
00167 public slots:
00168 virtual void accept();
00169 };
00170
00171 class ProjectConfigTab: public QWidget{
00172 public:
00173 ProjectConfigTab(QWidget *parent = 0, const char *name = 0);
00174 virtual QDomDocument configuration() = 0;
00175 };
00176
00184 class KDevBuildSystem : public QObject
00185 {
00186 Q_OBJECT
00187
00188 public:
00189 KDevBuildSystem( QObject *parent=0, const char *name=0 );
00190 virtual ~KDevBuildSystem();
00191
00192 virtual void initProject(KDevProject *project);
00193 virtual KDevProject *project();
00194
00196 virtual QString buildSystemName() = 0;
00200 virtual void createBuildSystem(BuildBaseItem*) = 0;
00201
00203 virtual void build(BuildBaseItem* it = 0) = 0;
00204
00206 virtual void install(BuildBaseItem* it = 0) = 0;
00207
00209 virtual void execute(BuildBaseItem* it = 0) = 0;
00210
00212 virtual void clean(BuildBaseItem* it = 0) = 0;
00213
00215 virtual void configureBuildItem(KDialogBase *, BuildBaseItem*);
00220 virtual QValueList<ProjectConfigTab *> confWidgets() = 0;
00221
00225
00226 virtual void addDefaultBuildWidget(KDialogBase *dlg, QWidget *parent, BuildBaseItem*);
00227
00228 protected:
00229 virtual void updateDefaultBuildWidget();
00230
00231 private:
00232 KDevProject *m_project;
00233 };
00234
00235
00236 #endif
This file is part of the documentation for KDevelop Version 3.1.2.