summaryrefslogtreecommitdiffstats
path: root/buildtools/autotools/autoprojectwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'buildtools/autotools/autoprojectwidget.h')
-rw-r--r--buildtools/autotools/autoprojectwidget.h229
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;