/*************************************************************************** * Copyright (C) 2004 by David Sansome * * me@davidsansome.com * * * * 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. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef WIZARD_H #define WIZARD_H #include #include #include #include #include #include #include "logdialog.h" class HeaderListItem; struct Component { QString name; QString niceName; QString subDir; QString forceDir; bool optional; bool kdeOnly; bool gnomeOnly; QString description; QString confOptions; QMap buildTimes; bool alreadyInstalled; }; class ComponentListItem : public QCheckListItem { public: ComponentListItem(struct Component c, QListView* parent); int compare(QListViewItem* i, int col, bool ascending) const; int rtti() const { return 1001; } struct Component component; int section; }; class ActionFormat { public: ActionFormat() {} ActionFormat(QString a, QString t, QString r, int) { action=a; tool=t; regExp=r; } ~ActionFormat() {} QString action; QString tool; QRegExp regExp; }; class Wizard : public WizardBase { Q_OBJECT public: Wizard(QWidget *parent = 0, const char *name = 0); ~Wizard(); private: void createActionFormats(); void startProcess(); void nextStep(); void checkPassword(); void updateTime(QString key); QString lastTimeLine; void logLine(QString line); void errorOccured(); QString makeDirNice(QString name); QString sub(QString s); QString rootPassword; private slots: void processExited(); void readyReadStdout(); void readyReadStderr(); void kdeDirReady(); void getInstalledComponents(); void installedComponentsReady(); void cancelPressed(); void nextPressed(); void previousPressed(); void runPressed(); void logPressed(); void componentSelected(QListViewItem* item); void setProgress2Text(QString text); void setup(); void setupFromRc(); bool setupFromDir(); private: enum Stage { None, Autogen, Configure, Compile, Install, WriteUninstallInfo }; QString dir; QStringList buildOrder; QValueList selectedComponents; uint totalBTime; uint elapsedBTime; uint elapsedTime; QTime timer; QProcess* externalProcess; QProcess* kdeDirProcess; QProcess* installedComponentsProcess; QString commandLine; bool currentIsQMake; int currentComponent; enum Stage currentStage; bool needRoot; QString prefix; QStringList installedComponents; QString exec; QString desktop; QString kdeDir; LogDialog* logDialog; QMap headers; QValueList actionFormats; QStringList installedFiles; }; #endif