KDevelop API Documentation

lib/interfaces/kdevbuildsystem.h

Go to the documentation of this file.
00001 /* This file is part of the KDE project 00002 Copyright (C) 2003 Alexander Dymo <cloudtemple@mksat.net> 00003 Copyright (C) 2003 Roberto Raggi <roberto@kdevelop.org> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 Boston, MA 02111-1307, USA. 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 //@todo adymo: implement 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
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:48 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003