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 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 15:10:54 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    static  QString  stringListToArrayString ( const  QStringList  & list , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           const  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-05-05 16:34:49 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void  reject ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-08-27 14:16:06 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 : 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 13:44:08 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void  openFiles ( const  GeneratorFiles  & files ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-08-27 14:16:06 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    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