diff options
Diffstat (limited to 'buildtools/qmake/trollprojectwidget.h')
-rw-r--r-- | buildtools/qmake/trollprojectwidget.h | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/buildtools/qmake/trollprojectwidget.h b/buildtools/qmake/trollprojectwidget.h new file mode 100644 index 00000000..19595f78 --- /dev/null +++ b/buildtools/qmake/trollprojectwidget.h @@ -0,0 +1,218 @@ +/*************************************************************************** +* Copyright (C) 2001 by Bernd Gehrmann * +* [email protected] * +* Copyright (C) 2002 by Jakob Simon-Gaarde * +* [email protected] * +* Copyright (C) 2002-2003 by Alexander Dymo * +* [email protected] * +* Copyright (C) 2003 by Thomas Hasart * +* [email protected] * +* Copyright (C) 2006 by Andreas Pakulat * +* [email protected] * +* * +* 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 _TROLLPROJECTWIDGET_H_ +#define _TROLLPROJECTWIDGET_H_ + +#include <qdict.h> +#include <qlistview.h> +#include <qmap.h> +#include <qstrlist.h> +#include <qvbox.h> +#include <qtoolbutton.h> +#include <kiconloader.h> +#include <klocale.h> +#include <kdeversion.h> +#include <qbutton.h> +#include <qfileinfo.h> +#include <qptrlist.h> +#include "choosesubprojectdlg.h" +#include "newwidgetdlg.h" +#include "domutil.h" +#include "qmakescopeitem.h" + +class TrollProjectPart; +class KListView; +class ProjectConfigurationDlg; + +class TrollProjectWidget : public QVBox +{ + Q_OBJECT + +public: + TrollProjectWidget( TrollProjectPart *part ); + ~TrollProjectWidget(); + + void openProject( const QString &dirName ); + void closeProject(); + + /** + * A list of the (relative) names of all subprojects (== subdirectories). + */ + //QStringList allSubprojects(); + /** + * 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(); + /** + * The directory of the currently active subproject. + */ + QString subprojectDirectory(); + /** + * The directory of the currently active subproject. + */ + QString getCurrentTarget(); + + QString getCurrentDestDir(); + + QString getCurrentOutputFilename(); + + void addFileToCurrentSubProject( GroupItem *titem, const QString &filename ); + void addFileToCurrentSubProject( GroupItem::GroupType gtype, const QString &filename ); + void addFiles( QStringList &files, bool relativeToProjectRoot = true ); + void emitAddedFile( const QString &name ); + void emitRemovedFile( const QString &name ); + + QString getUiFileLink( const QString &path, const QString& filename ); + bool isTMakeProject(); + + enum TrollProjectView { SubprojectView, DetailsView }; + void setLastFocusedView( TrollProjectView view ); + enum SaveType { AlwaysSave, NeverSave, Ask }; + QMakeScopeItem* currentSubproject(); + + bool showFilenamesOnly() const; + bool showVariablesInTree() const; + +public slots: + void slotBuildTarget(); + void slotInstallTarget(); + void slotRebuildTarget(); + void slotCleanTarget(); + void slotDistCleanTarget(); + void slotExecuteTarget(); + + void slotBuildProject(); + void slotInstallProject(); + void slotRebuildProject(); + void slotCleanProject(); + void slotDistCleanProject(); + void slotExecuteProject(); + + void slotBuildOpenFile(); + void slotBuildSelectedFile(); + + void slotConfigureProject(); + void slotAddFiles(); + void slotNewFile(); + void slotRemoveFile(); + +protected: + virtual void focusInEvent( QFocusEvent *e ); + +private slots: + void slotOverviewSelectionChanged( QListViewItem *item ); + void slotOverviewContextMenu( KListView *, QListViewItem *item, const QPoint &p ); + void slotDetailsSelectionChanged( QListViewItem* ); + void slotDetailsExecuted( QListViewItem *item ); + void slotDetailsContextMenu( KListView *, QListViewItem *item, const QPoint &p ); + void slotExcludeFileFromScopeButton(); + void slotAddSubproject( QMakeScopeItem *spitem = 0 ); + void slotRemoveSubproject( QMakeScopeItem *spitem = 0 ); + void slotCreateScope( QMakeScopeItem *spitem = 0 ); + void slotRemoveScope( QMakeScopeItem *spitem = 0 ); + void slotDisableSubproject( QMakeScopeItem* spitem = 0 ); + void slotProjectDirty( const QString& ); + + void createQMakeScopeItems(); + +private: + void cleanDetailView( QMakeScopeItem *item ); + void runClean( QMakeScopeItem*, const QString& ); + void buildProjectDetailTree( QMakeScopeItem *item, KListView *listviewControl ); + void removeFile( QMakeScopeItem *spitem, FileItem *fitem ); + void addSubprojectToItem( QMakeScopeItem*, const QString& ); + void setupContext(); + // void parseScope(QMakeScopeItem *item,QString scopeString, Scope *scope); + GroupItem* getInstallRoot( QMakeScopeItem *item ); + GroupItem* getInstallObject( QMakeScopeItem *item, const QString& objectname ); + QString constructMakeCommandLine( Scope* s = 0 ); + + void createMakefileIfMissing( const QString &dir, QMakeScopeItem *item ); + + void runQMakeRecursive( QMakeScopeItem* proj); + void buildFile( QMakeScopeItem* spitem, FileItem* fitem); + + /*fileName: full base file name like QFileInfo::baseName ( true )*/ + QPtrList<QMakeScopeItem> findSubprojectForFile( QFileInfo fi ); + void findSubprojectForFile( QPtrList<QMakeScopeItem> &list, QMakeScopeItem * item, QString absFilePath ); + QMakeScopeItem* findSubprojectForPath( const QString& ); + // QString makeEnvironment(); + + TrollProjectWidget::SaveType dialogSaveBehaviour() const; + + QMakeScopeItem *findSubprojectForScope( QMakeScopeItem *scope ); + + void reloadProjectFromFile( QMakeScopeItem* item ); + QMap<QString,QString> qmakeEnvironment() const; + + QVBox *overviewContainer; + KListView *overview; + QHBox *projectTools; + QToolButton *addSubdirButton; + QToolButton *createScopeButton; + + QToolButton *buildProjectButton; + QToolButton *rebuildProjectButton; + QToolButton *executeProjectButton; + + QToolButton *buildTargetButton; + QToolButton *rebuildTargetButton; + QToolButton *executeTargetButton; + + QToolButton *buildFileButton; + QToolButton *projectconfButton; + + QVBox *detailContainer; + KListView *details; + QHBox *fileTools; + QToolButton *addfilesButton; + QToolButton *newfileButton; + QToolButton *removefileButton; + QToolButton *excludeFileFromScopeButton; + + DomUtil::PairList m_subclasslist; + QMakeScopeItem *m_shownSubproject; + QMakeScopeItem *m_rootSubproject; + Scope* m_rootScope; + TrollProjectPart *m_part; + ProjectConfigurationDlg* m_configDlg; + + TrollProjectView m_lastFocusedView; + + bool m_filesCached; + bool m_showFilenamesOnly; + bool m_showVariablesInTree; + QStringList m_allFilesCache; + + friend class ChooseSubprojectDlg; + friend class ProjectConfigurationDlg; +}; + +#endif + +// kate: space-indent on; indent-width 4; tab-width 4; replace-tabs on |