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/autotools/autoprojectwidget.h

230 lines
6.0 KiB

/*
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;