diff options
Diffstat (limited to 'buildtools/autotools/autoprojectwidget.h')
-rw-r--r-- | buildtools/autotools/autoprojectwidget.h | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/buildtools/autotools/autoprojectwidget.h b/buildtools/autotools/autoprojectwidget.h new file mode 100644 index 00000000..0f4a8b13 --- /dev/null +++ b/buildtools/autotools/autoprojectwidget.h @@ -0,0 +1,229 @@ +/* + KDevelop Autotools Support + Copyright (c) 2001-2002 by Bernd Gehrmann <bernd@kdevelop.org> + Copyright (c) 2002 by Victor Roeder <victor_roeder@gmx.de> + Copyright (c) 2005 by Matt Rogers <mattr@kde.org> + +*************************************************************************** +* * +* 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 _AUTOPROJECTWIDGET_H_ +#define _AUTOPROJECTWIDGET_H_ + +#include <qdict.h> +#include <qlistview.h> +#include <qmap.h> +#include <qvbox.h> +#include <qhbox.h> +#include <qlayout.h> +#include <qtoolbutton.h> +#include <kiconloader.h> +#include <klocale.h> + +#include "domutil.h" +#include "makefilehandler.h" + +class AutoProjectPart; +class AutoSubprojectView; +class AutoDetailsView; +class SubprojectItem; +class TargetItem; +class FileItem; +class KAction; +class QDomElement; +class QToolButton; +class QStringList; +class QFocusEvent; +class KListViewItem; +class QListViewItem; +class MakefileHandler; + +class AutoProjectWidget : public QVBox +{ + Q_OBJECT + friend class RemoveFileDialog; + friend class TargetOptionsDialog; // to access projectDom() via m_part->projectDom() +public: + AutoProjectWidget( AutoProjectPart *part, bool kde ); + ~AutoProjectWidget(); + + void openProject( const QString &dirName ); + void closeProject(); + + /** + * A list of the (relative) names of all subprojects (== subdirectories) + */ + QStringList allSubprojects(); + /** + * A list of all Subproject items in the overview KListView + */ + QPtrList <SubprojectItem> allSubprojectItems(); + /** + * A list of the (relative) names of all libraries + */ + QStringList allLibraries(); + /** + * A list of all files that belong to the project + **/ + QStringList allFiles(); + /** + * The top level directory of the project. + **/ + QString projectDirectory() const; + /** + * The directory of the currently shown subproject. + */ + QString subprojectDirectory(); + /** + * Are we in KDE mode? + */ + bool kdeMode() const + { + return m_kdeMode; + } + + /** + * Sets the given target active. The argument is given + * relative to the project directory. + */ + void setActiveTarget( const QString &targetPath ); + /** + * Returns the active target as path relative to + * the project directory. + */ + QString activeDirectory(); + + /** + * Adds a file to the active target. + * If the file does not contain a "/" character, it is added + * to the active target. + * If it does contain "/" character(s), ... @todo .. add to appropriate target + */ + void addFiles( const QStringList &list ); + /** + * Removes the file fileName from the directory directory. + * (not implemented currently) + */ + void removeFiles( const QStringList &list ); + + /** + * Returns the currently selected target. Returns 0 if + * no target is selected. + */ + TargetItem *selectedTarget(); + + /** + * Returns the currently selected file. Returns 0 if + * no file is selected. + */ + FileItem *selectedFile(); + + /** + * Returns the currently selected subproject (directory with Makefile.am). Returns 0 if + * no subproject is selected. + */ + SubprojectItem* selectedSubproject(); + + /** + * Creates a TargetItem instance without a parent item. + */ + TargetItem *createTargetItem( const QString &name, + const QString &prefix, const QString &primary, + bool take = true ); + /** + * Creates a FileItem instance without a parent item. + */ + FileItem *createFileItem( const QString &name, SubprojectItem *subproject ); + + /** + * Returns the Subproject that contains the Active Target. The Active Target is a special target + * to which e.g. all files are added to. + */ + SubprojectItem* activeSubproject (); + void setActiveSubproject( SubprojectItem* spitem ); + + /** + * Returns the Active Target. The Active Target is a special target + * to which e.g. all files are added to. + */ + TargetItem* activeTarget(); + + /** + * Returns the sub project item, if any, for a given path. The path supplied can be either + * absolute, or relative to the project directory. If no subproject item is found for the + * path, null is returned. + */ + SubprojectItem* subprojectItemForPath( const QString & path, bool pathIsAbsolute = false ); + + /** + * Returns the projectdir-relative path for a target item + */ + QString pathForTarget( const TargetItem *item ) const; + + /** + * Adds file fileName to target titem in subproject spitem + */ + void addToTarget( const QString & fileName, SubprojectItem* spitem, TargetItem* titem ); + + /** + * Restores the last settings of the AutoProjectWidget + */ + void restoreSession ( const QDomElement* el ); + + /** + * Saves the latest changes of the AutoProjectWidget to the session file. + */ + void saveSession ( QDomElement* el ); + + AutoSubprojectView* getSubprojectView (); + AutoDetailsView* getDetailsView (); + + + void emitAddedFile ( const QString& name ); + void emitAddedFiles( const QStringList &fileList ); + void emitRemovedFile ( const QString& name ); + void emitRemovedFiles( const QStringList &fileList ); + + void parse( SubprojectItem *item ); + + enum AutoProjectView { SubprojectView, DetailsView }; + void setLastFocusedView( AutoProjectView view ); + + MakefileHandler* makefileHandler(); + +public slots: + void slotOverviewSelectionChanged( QListViewItem *item ); + +protected: + void initOverview ( QWidget* parent ); + void initDetailview ( QWidget* parent ); + void initActions (); + + virtual void focusInEvent( QFocusEvent *e ); + +private: + + AutoSubprojectView* m_subprojectView; + AutoDetailsView* m_detailView; + + bool m_kdeMode; + AutoProjectPart *m_part; + SubprojectItem *m_activeSubproject; + TargetItem *m_activeTarget; + TargetItem *m_choosenTarget; + SubprojectItem *m_shownSubproject; + + AutoProjectView m_lastFocusedView; + + MakefileHandler *m_makefileHandler; +}; + +#endif +// kate: indent-mode csands; tab-width 4; |