2014-08-27 14:16:06 +02:00
/****************************************************************************
* *
2015-01-14 18:07:15 +01:00
* * Copyright ( C ) 2015 The Qt Company Ltd .
* * Contact : http : //www.qt.io/licensing
2014-08-27 14:16:06 +02:00
* *
* * This file is part of Qt Creator .
* *
* * Commercial License Usage
* * Licensees holding valid commercial Qt licenses may use this file in
* * accordance with the commercial license agreement provided with the
* * Software or , alternatively , in accordance with the terms contained in
2015-01-14 18:07:15 +01:00
* * a written agreement between you and The Qt Company . For licensing terms and
* * conditions see http : //www.qt.io/terms-conditions. For further information
2014-10-15 14:46:23 +02:00
* * use the contact form at http : //www.qt.io/contact-us.
2014-08-27 14:16:06 +02:00
* *
* * GNU Lesser General Public License Usage
* * Alternatively , this file may be used under the terms of the GNU Lesser
2014-10-15 14:46:23 +02:00
* * General Public License version 2.1 or version 3 as published by the Free
* * Software Foundation and appearing in the file LICENSE . LGPLv21 and
* * LICENSE . LGPLv3 included in the packaging of this file . Please review the
* * following information to ensure the GNU Lesser General Public License
* * requirements will be met : https : //www.gnu.org/licenses/lgpl.html and
* * http : //www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
2014-08-27 14:16:06 +02:00
* *
2015-01-14 18:07:15 +01:00
* * In addition , as a special exception , The Qt Company gives you certain additional
* * rights . These rights are described in The Qt Company LGPL Exception
2014-08-27 14:16:06 +02:00
* * version 1.1 , included in the file LGPL_EXCEPTION . txt in this package .
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifndef JSONWIZARD_H
# define JSONWIZARD_H
# include "../projectexplorer_export.h"
# include <coreplugin/generatedfile.h>
# include <utils/wizard.h>
2014-10-22 16:22:39 +02:00
# include <utils/macroexpander.h>
2014-08-27 14:16:06 +02:00
namespace ProjectExplorer {
class JsonWizardGenerator ;
// Documentation inside.
class PROJECTEXPLORER_EXPORT JsonWizard : public Utils : : Wizard
{
Q_OBJECT
public :
class GeneratorFile {
public :
GeneratorFile ( ) : generator ( 0 ) { }
GeneratorFile ( const Core : : GeneratedFile & f , JsonWizardGenerator * g ) :
file ( f ) , generator ( g )
{ }
bool isValid ( ) const { return generator ; }
Core : : GeneratedFile file ;
JsonWizardGenerator * generator ;
} ;
typedef QList < GeneratorFile > GeneratorFiles ;
2014-11-10 13:54:59 +01:00
Q_PROPERTY ( GeneratorFiles generateFileList READ generateFileList )
2014-08-27 14:16:06 +02:00
explicit JsonWizard ( QWidget * parent = 0 ) ;
~ JsonWizard ( ) ;
void addGenerator ( JsonWizardGenerator * gen ) ;
2014-10-22 16:22:39 +02:00
Utils : : MacroExpander * expander ( ) ;
2014-08-27 14:16:06 +02:00
2014-11-10 13:54:59 +01:00
GeneratorFiles generateFileList ( ) ;
void commitToFileList ( const GeneratorFiles & list ) ;
2014-08-27 14:16:06 +02:00
2014-11-21 14:06:19 +01:00
QString stringValue ( const QString & n ) const ;
2014-08-27 14:16:06 +02:00
QVariant value ( const QString & n ) const ;
void setValue ( const QString & key , const QVariant & value ) ;
2014-10-15 14:45:31 +02:00
static bool boolFromVariant ( const QVariant & v , Utils : : MacroExpander * expander ) ;
2014-08-27 14:16:06 +02:00
2014-09-18 15:20:06 +02:00
void removeAttributeFromAllFiles ( Core : : GeneratedFile : : Attribute a ) ;
2014-08-27 14:16:06 +02:00
signals :
2014-11-10 13:54:59 +01:00
void preGenerateFiles ( ) ; // emitted before files are generated (can happen several times!)
void postGenerateFiles ( const JsonWizard : : GeneratorFiles & files ) ; // emitted after commitToFileList was called.
2014-08-27 14:16:06 +02:00
void prePromptForOverwrite ( const JsonWizard : : GeneratorFiles & files ) ; // emitted before overwriting checks are done.
void preFormatFiles ( const JsonWizard : : GeneratorFiles & files ) ; // emitted before files are formatted.
void preWriteFiles ( const JsonWizard : : GeneratorFiles & files ) ; // emitted before files are written to disk.
void postProcessFiles ( const JsonWizard : : GeneratorFiles & files ) ; // emitted before files are post-processed.
void filesReady ( const JsonWizard : : GeneratorFiles & files ) ; // emitted just after files are in final state on disk.
2015-04-23 15:02:59 +02:00
void filesPolished ( const JsonWizard : : GeneratorFiles & files ) ; // emitted just after additional files (e.g. settings) not directly related to the project were created.
2014-10-15 18:18:54 +02:00
void allDone ( const JsonWizard : : GeneratorFiles & files ) ; // emitted just after the wizard is done with the files. They are ready to be opened.
2014-08-27 14:16:06 +02:00
public slots :
void accept ( ) ;
2015-01-20 14:45:03 +01:00
private slots :
void handleNewPages ( int pageId ) ;
void handleError ( const QString & message ) ;
2014-08-27 14:16:06 +02:00
private :
QList < JsonWizardGenerator * > m_generators ;
GeneratorFiles m_files ;
2014-10-22 16:22:39 +02:00
Utils : : MacroExpander m_expander ;
2014-08-27 14:16:06 +02:00
} ;
} // namespace ProjectExplorer
# endif // JSONWIZARD_H