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/parts/appwizard/appwizarddlg.h

210 lines
5.7 KiB

/***************************************************************************
* Copyright (C) 2001 by Bernd Gehrmann *
* bernd@kdevelop.org *
* Copyright (C) 2001 by Sandy Meier *
* smeier@kdevelop.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 _APPWIZARDDIALOG_H_
#define _APPWIZARDDIALOG_H_
class AppWizardPart;
class QMultiLineEdit;
class QRadioButton;
class KTempFile;
class QWidgetStack;
class QVBox;
class KPopupMenu;
class QHBoxLayout;
class KArchiveDirectory;
class KArchiveFile;
class ProfileSupport;
#include <qptrlist.h>
#include <qdict.h>
#include <klineedit.h>
#include <qlabel.h>
#include <qstringlist.h>
#include <klistview.h>
#include <kiconview.h>
#include "kdevversioncontrol.h"
#include "kdevvcsintegrator.h"
#include "appwizarddlgbase.h"
#include "vcs_form.h"
//#include "autoform.h"
#include "kdevlicense.h"
namespace PropertyLib {
class PropertyList;
class PropertyEditor;
}
struct installFile
{
QString source;
QString dest;
QString option;
bool process;
bool isXML;
};
struct installArchive
{
QString source;
QString dest;
QString option;
bool process;
};
struct installDir
{
QString dir;
QString option;
int perms;
};
struct ApplicationInfo
{
QString templateName;
QString name;
QString comment;
QString icon;
QString category;
QString defaultDestDir;
QString fileTemplates;
QStringList openFilesAfterGeneration;
QString templateFile;
QMap<QString,QString> subMap;
QMap<QString,QString> subMapXML;
QStringList includes;
//QMap<autoKey,QVariant> subValues;
PropertyLib::PropertyList *propValues;
QValueList<installFile> fileList;
QValueList<installArchive> archList;
QValueList<installDir> dirList;
QString customUI;
QString message;
QString finishCmd;
QString finishCmdDir;
QString sourceArchive;
//! item pointer to the listview
QListViewItem *item;
//! pointer to favourite icon (NULL if there isn't one)
QIconViewItem *favourite;
ApplicationInfo()
: item( 0 ), favourite( 0 )
{}
};
struct AppWizardFileTemplate
{
QString suffix;
QString style;
QMultiLineEdit *edit;
AppWizardFileTemplate()
: edit( 0 )
{}
};
class AppWizardDialog : public AppWizardDialogBase
{
Q_OBJECT
public:
AppWizardDialog( AppWizardPart *part, QWidget *parent=0, const char *name=0 );
~AppWizardDialog();
QString getProjectName() { return appname_edit->text(); }
QString getProjectLocation() { return finalLoc_label->text(); }
protected:
virtual void accept();
virtual QDict<KDevLicense> licenses();
void loadLicenses();
protected slots:
virtual void templatesTreeViewClicked(QListViewItem*);
virtual void textChanged();
virtual void licenseChanged();
virtual void destButtonClicked(const QString&);
virtual void projectNameChanged();
virtual void projectLocationChanged();
virtual void favouritesIconViewClicked( QIconViewItem * );
virtual void templatesContextMenu(QListViewItem*, const QPoint&, int);
virtual void favouritesContextMenu(QIconViewItem* item, const QPoint& point);
virtual void addTemplateToFavourites();
virtual void done(int r);
virtual void removeFavourite();
virtual void pageChanged();
private: //methods
ApplicationInfo *templateForItem(QListViewItem *item);
void insertCategoryIntoTreeView(const QString &completeCategoryPath);
void loadVcs();
void updateNextButtons();
void populateFavourites();
void addFavourite(QListViewItem* item, QString favouriteName="");
ApplicationInfo* findFavouriteInfo(QIconViewItem* item);
void unpackArchive( const KArchiveDirectory *dir, const QString &dest, bool process );
bool copyFile( const installFile& file );
bool copyFile( const QString &source, const QString &dest, bool isXML, bool process );
QString kdevRoot(const QString &templateName ) const;
void openAfterGeneration();
void setPermissions(const KArchiveFile *source, QString dest);
void setPermissions(const installFile &file);
void checkAndHideItems(QListView *view);
bool checkAndHideItems(QListViewItem *item);
private: //data
QPtrList<ApplicationInfo> m_appsInfo;
QValueList<AppWizardFileTemplate> m_fileTemplates;
//! Store the category name and the pointer in the treeview
QDict<QListViewItem> m_categoryMap;
QValueList<QListViewItem*> m_categoryItems;
//! A list of currently available version control systems
// QDict<KDevVersionControl> m_availVcs;
QHBoxLayout *m_custom_options_layout;
PropertyLib::PropertyEditor *m_customOptions;
AppWizardPart *m_part;
QWidget *m_lastPage;
QPtrList<KTempFile> m_tempFiles;
ApplicationInfo* m_pCurrentAppInfo;
bool m_projectLocationWasChanged;
VcsForm *m_vcsForm;
bool m_pathIsValid;
KPopupMenu* m_favouritesMenu;
KPopupMenu* m_templatesMenu;
QDict<KDevLicense> m_licenses;
QDict<KDevVCSIntegrator> m_integrators;
QMap<int, VCSDialog*> m_integratorDialogs;
ProfileSupport *m_profileSupport;
public slots:
virtual void showTemplates(bool all);
};
#endif
// kate: indent-width 4; replace-tabs off; tab-width 4; space-indent off;