You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/buildtools/qmake/trollprojectwidget.h

219 lines
7.4 KiB

/***************************************************************************
* Copyright (C) 2001 by Bernd Gehrmann *
* bernd@kdevelop.org *
* Copyright (C) 2002 by Jakob Simon-Gaarde *
* jakob@jsg.dk *
* Copyright (C) 2002-2003 by Alexander Dymo *
* cloudtemple@mksat.net *
* Copyright (C) 2003 by Thomas Hasart *
* thasart@gmx.de *
* Copyright (C) 2006 by Andreas Pakulat *
* apaku@gmx.de *
* *
* 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