lib/interfaces/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 "property.h"
00036
00037
class BuildFileItem;
00038
class BuildGroupItem;
00039
class BuildTargetItem;
00040
class KDialogBase;
00041
00042 class BuildBaseItem
00043 {
00044
public:
00045
enum
00046 {
00047
Group,
00048
Target,
00049
File,
00050
00051
Custom=1000
00052 };
00053
00054
public:
00055
BuildBaseItem(
int type,
BuildBaseItem*
parent=0 );
00056
virtual ~BuildBaseItem();
00057
00058 virtual int type()
const {
return m_type; }
00059 virtual QString name()
const {
return m_name; }
00060
00061 BuildBaseItem*
parent() {
return m_parent; }
00062 const BuildBaseItem*
parent()
const {
return m_parent; }
00063
00064 const QMap<QString, PropPtr>&
attributes()
const {
return m_attributes; }
00065 QMap<QString, PropPtr> *
pAttributes() {
return &
m_attributes; }
00066
00067 bool hasAttribute(
const QString& name )
const {
return m_attributes.contains( name ); }
00068 QVariant attribute(
const QString& name )
const {
return m_attributes[ name ]->value(); }
00069 void setAttribute(
const QString& name,
const QVariant& value ) {
m_attributes[ name ]->setValue(value); }
00070
00071
virtual QString path();
00072
00073
protected:
00074 QString m_name;
00075
00076
private:
00077 int m_type;
00078 BuildBaseItem*
m_parent;
00079 QMap<QString, PropPtr> m_attributes;
00080
00081
private:
00082
BuildBaseItem(
const BuildBaseItem& source );
00083
void operator = (
const BuildBaseItem& source );
00084 };
00085
00086 class BuildGroupItem:
public BuildBaseItem
00087 {
00088
public:
00089
BuildGroupItem(
const QString& name,
BuildGroupItem* parent=0 );
00090
virtual ~BuildGroupItem();
00091
00092 BuildGroupItem*
parentGroup() {
return m_parentGroup; }
00093 const BuildGroupItem*
parentGroup()
const {
return m_parentGroup; }
00094
00095
void insertGroup(
BuildGroupItem* group );
00096
void removeGroup(
BuildGroupItem* group );
00097
BuildGroupItem* takeGroup(
BuildGroupItem* group );
00098
BuildGroupItem* groupByname(
const QString& groupName );
00099 QValueList<BuildGroupItem*> groups() {
return m_subGroups; }
00100
00101
void insertTarget(
BuildTargetItem* target );
00102
void removeTarget(
BuildTargetItem* target );
00103
BuildTargetItem* takeTarget(
BuildTargetItem* target );
00104
BuildTargetItem* targetByName(
const QString& targetName );
00105 QValueList<BuildTargetItem*> targets() {
return m_targets; }
00106
00107
private:
00108 BuildGroupItem*
m_parentGroup;
00109 QValueList<BuildGroupItem*> m_subGroups;
00110 QValueList<BuildTargetItem*> m_targets;
00111
00112
private:
00113
BuildGroupItem(
const BuildGroupItem& source );
00114
void operator = (
const BuildGroupItem& source );
00115 };
00116
00117 class BuildTargetItem:
public BuildBaseItem
00118 {
00119
public:
00120
BuildTargetItem(
const QString& name,
BuildGroupItem* parent );
00121
virtual ~BuildTargetItem();
00122
00123 BuildGroupItem*
parentGroup() {
return m_parentGroup; }
00124 const BuildGroupItem*
parentGroup()
const {
return m_parentGroup; }
00125
00126
void insertFile(
BuildFileItem* file );
00127
void removeFile(
BuildFileItem* file );
00128
BuildFileItem* takeFile(
BuildFileItem* file );
00129
BuildFileItem* fileByName(
const QString& fileName );
00130 QValueList<BuildFileItem*> files() {
return m_files; }
00131
00132
private:
00133 BuildGroupItem*
m_parentGroup;
00134 QValueList<BuildFileItem*> m_files;
00135
00136
private:
00137
BuildTargetItem(
const BuildTargetItem& source );
00138
void operator = (
const BuildTargetItem& source );
00139 };
00140
00141 class BuildFileItem:
public BuildBaseItem
00142 {
00143
public:
00144
BuildFileItem(
const KURL&
url,
BuildTargetItem*
parentTarget );
00145
virtual ~BuildFileItem();
00146
00147 BuildTargetItem*
parentTarget() {
return m_parentTarget; }
00148 const BuildTargetItem*
parentTarget()
const {
return m_parentTarget; }
00149
00150 const KURL&
url()
const {
return m_url; }
00151 virtual QString name()
const {
return m_url.
fileName(); }
00152
00153
private:
00154 KURL m_url;
00155 BuildTargetItem*
m_parentTarget;
00156
00157
private:
00158
BuildFileItem(
const BuildFileItem& source );
00159
void operator = (
const BuildFileItem& source );
00160 };
00161
00162 class BuildItemConfigWidget:
public QWidget{
00163 Q_OBJECT
00164
public:
00165
BuildItemConfigWidget(
BuildBaseItem *it,
QWidget *parent = 0,
const char *name = 0);
00166
public slots:
00167
virtual void accept();
00168 };
00169
00170 class ProjectConfigTab:
public QWidget{
00171
public:
00172
ProjectConfigTab(
QWidget *parent = 0,
const char *name = 0);
00173
virtual QDomDocument configuration() = 0;
00174 };
00175
00183 class KDevBuildSystem :
public QObject
00184 {
00185 Q_OBJECT
00186
00187
public:
00188
KDevBuildSystem(
QObject *parent=0,
const char *name=0 );
00189
virtual ~KDevBuildSystem();
00190
00191
virtual void initProject(
KDevProject *
project);
00192
virtual KDevProject *
project();
00193
00195
virtual QString buildSystemName() = 0;
00199
virtual void createBuildSystem(
BuildBaseItem*) = 0;
00200
00202
virtual void build(
BuildBaseItem* it = 0) = 0;
00203
00205
virtual void install(
BuildBaseItem* it = 0) = 0;
00206
00208
virtual void execute(
BuildBaseItem* it = 0) = 0;
00209
00211
virtual void clean(
BuildBaseItem* it = 0) = 0;
00212
00214
virtual void configureBuildItem(
KDialogBase *,
BuildBaseItem*);
00219
virtual QValueList<ProjectConfigTab *> confWidgets() = 0;
00220
00224
00225
virtual void addDefaultBuildWidget(
KDialogBase *dlg,
QWidget *parent,
BuildBaseItem*);
00226
00227
protected:
00228
virtual void updateDefaultBuildWidget();
00229
00230
private:
00231 KDevProject *
m_project;
00232 };
00233
00234
00235
#endif
This file is part of the documentation for KDevelop Version 3.0.4.