2007-04-04 02:13:14 +00:00
# include "newelementwizard.h"
# include "elementscategorieswidget.h"
2007-04-06 02:47:25 +00:00
# include "elementscategorieslist.h"
2007-04-13 11:50:16 +00:00
# include "nameslistwidget.h"
2007-06-30 17:41:07 +00:00
# include "orientationsetwidget.h"
2007-08-18 22:59:10 +00:00
# include "hotspoteditor.h"
2007-04-07 19:25:38 +00:00
# include "element.h"
2007-08-25 03:43:05 +00:00
# include "qetelementeditor.h"
2007-04-04 02:13:14 +00:00
2007-04-07 19:25:38 +00:00
/**
Constructeur
@ param parent QWidget parent de ce dialogue
@ param f flags pour le dialogue
*/
2007-09-07 08:42:36 +00:00
NewElementWizard : : NewElementWizard ( QWidget * parent , Qt : : WindowFlags f ) : QWizard ( parent , f ) {
setPixmap ( LogoPixmap , QPixmap ( " :/ico/qelectrotech.png " ) . scaled ( 64 , 64 , Qt : : KeepAspectRatio , Qt : : SmoothTransformation ) ) ;
2007-04-04 02:13:14 +00:00
setWindowTitle ( tr ( " Cr \351 er un nouvel \351 l \351 ment : Assistant " ) ) ;
2007-09-07 08:42:36 +00:00
setButtonText ( QWizard : : NextButton , tr ( " &Suivant > " ) ) ;
addPage ( buildStep1 ( ) ) ;
addPage ( buildStep2 ( ) ) ;
addPage ( buildStep3 ( ) ) ;
addPage ( buildStep4 ( ) ) ;
addPage ( buildStep5 ( ) ) ;
setFixedSize ( 705 , 325 ) ;
2007-04-04 02:13:14 +00:00
}
2007-04-07 19:25:38 +00:00
/**
Destructeur
*/
2007-04-04 02:13:14 +00:00
NewElementWizard : : ~ NewElementWizard ( ) {
}
2007-04-06 02:47:25 +00:00
/**
Met en place l ' etape 1 : Categorie
*/
2007-09-07 08:42:36 +00:00
QWizardPage * NewElementWizard : : buildStep1 ( ) {
QWizardPage * page = new QWizardPage ( ) ;
page - > setProperty ( " WizardState " , Category ) ;
page - > setTitle ( tr ( " \311 tape 1/5 : Cat \351 gorie parente " ) ) ;
page - > setSubTitle ( tr ( " S \351 lectionnez une cat \351 gorie dans laquelle enregistrer le nouvel \351 l \351 ment. " ) ) ;
QVBoxLayout * layout = new QVBoxLayout ( ) ;
2007-04-06 02:47:25 +00:00
categories_list = new ElementsCategoriesWidget ( ) ;
2007-09-07 08:42:36 +00:00
layout - > addWidget ( categories_list ) ;
page - > setLayout ( layout ) ;
return ( page ) ;
2007-04-06 02:47:25 +00:00
}
/**
Met en place l ' etape 2 : Nom du fichier
*/
2007-09-07 08:42:36 +00:00
QWizardPage * NewElementWizard : : buildStep2 ( ) {
QWizardPage * page = new QWizardPage ( ) ;
page - > setProperty ( " WizardState " , Filename ) ;
page - > setTitle ( tr ( " \311 tape 2/5 : Nom du fichier " ) ) ;
page - > setSubTitle ( tr ( " Indiquez le nom du fichier dans lequel enregistrer le nouvel \351 l \351 ment. " ) ) ;
QVBoxLayout * layout = new QVBoxLayout ( ) ;
qle_filename = new QLineEdit ( tr ( " nouvel_element " ) ) ;
qle_filename - > selectAll ( ) ;
2007-04-07 19:25:38 +00:00
QLabel * explication2 = new QLabel ( tr ( " Vous n' \352 tes pas oblig \351 de pr \351 ciser l'extension *.elmt. Elle sera ajout \351 e automatiquement. " ) ) ;
explication2 - > setAlignment ( Qt : : AlignJustify | Qt : : AlignVCenter ) ;
explication2 - > setWordWrap ( true ) ;
2007-09-07 08:42:36 +00:00
layout - > addWidget ( qle_filename ) ;
layout - > addWidget ( explication2 ) ;
layout - > addSpacing ( 100 ) ;
page - > setLayout ( layout ) ;
return ( page ) ;
2007-04-06 02:47:25 +00:00
}
/**
Met en place l ' etape 3 : Noms de l ' element
*/
2007-09-07 08:42:36 +00:00
QWizardPage * NewElementWizard : : buildStep3 ( ) {
QWizardPage * page = new QWizardPage ( ) ;
page - > setProperty ( " WizardState " , Names ) ;
page - > setTitle ( tr ( " \311 tape 3/5 : Noms de l' \351 l \351 ment " ) ) ;
page - > setSubTitle ( tr ( " Indiquez le ou les noms de l' \351 l \351 ment. " ) ) ;
QVBoxLayout * layout = new QVBoxLayout ( ) ;
2007-04-13 11:50:16 +00:00
element_names = new NamesListWidget ( ) ;
2007-04-13 15:48:00 +00:00
NamesList hash_name ;
hash_name . addName ( QLocale : : system ( ) . name ( ) . left ( 2 ) , tr ( " Nom du nouvel \351 l \351 ment " ) ) ;
2007-04-07 02:37:57 +00:00
element_names - > setNames ( hash_name ) ;
2007-09-07 08:42:36 +00:00
layout - > addWidget ( element_names ) ;
page - > setLayout ( layout ) ;
return ( page ) ;
2007-04-06 02:47:25 +00:00
}
/**
Met en place l ' etape 4 : Dimensions et Hotspot
*/
2007-09-07 08:42:36 +00:00
QWizardPage * NewElementWizard : : buildStep4 ( ) {
QWizardPage * page = new QWizardPage ( ) ;
page - > setProperty ( " WizardState " , Dimensions ) ;
page - > setTitle ( tr ( " \311 tape 4/5 : Dimensions et point de saisie " ) ) ;
page - > setSubTitle ( tr ( " Saisissez les dimensions du nouvel \351 l \351 ment ainsi que la position du hotspot (point de saisie de l' \351 l \351 ment \340 la souris) en consid \351 rant que l' \351 l \351 ment est dans son orientation par d \351 faut. " ) ) ;
QVBoxLayout * layout = new QVBoxLayout ( ) ;
2007-08-18 22:59:10 +00:00
hotspot_editor = new HotspotEditor ( ) ;
2007-09-07 08:42:36 +00:00
layout - > addWidget ( hotspot_editor , 0 ) ;
layout - > setSpacing ( 0 ) ;
page - > setLayout ( layout ) ;
return ( page ) ;
2007-04-06 02:47:25 +00:00
}
/**
Met en place l ' etape 5 : orientations possibles pour le nouvel element
*/
2007-09-07 08:42:36 +00:00
QWizardPage * NewElementWizard : : buildStep5 ( ) {
QWizardPage * page = new QWizardPage ( ) ;
page - > setProperty ( " WizardState " , Orientations ) ;
page - > setTitle ( tr ( " \311 tape 5/5 : Orientations " ) ) ;
page - > setSubTitle ( tr ( " Indiquez les orientations possibles pour le nouvel \351 l \351 ment. " ) ) ;
QVBoxLayout * layout = new QVBoxLayout ( ) ;
2007-04-07 19:25:38 +00:00
2007-06-30 17:41:07 +00:00
orientation_set = new OrientationSetWidget ( ) ;
2007-09-07 08:42:36 +00:00
layout - > addWidget ( orientation_set ) ;
layout - > addSpacing ( 25 ) ;
2007-04-07 19:25:38 +00:00
2007-09-07 08:42:36 +00:00
page - > setLayout ( layout ) ;
return ( page ) ;
}
/// @return true si l'etape en cours est validee, false sinon
bool NewElementWizard : : validateCurrentPage ( ) {
WizardState wizard_state = static_cast < WizardState > ( currentPage ( ) - > property ( " WizardState " ) . toInt ( ) ) ;
if ( wizard_state = = Category ) return ( validStep1 ( ) ) ;
else if ( wizard_state = = Filename ) return ( validStep2 ( ) ) ;
else if ( wizard_state = = Names ) return ( element_names - > checkOneName ( ) ) ; // il doit y avoir au moins un nom
else if ( wizard_state = = Orientations ) {
createNewElement ( ) ;
return ( true ) ;
}
else return ( true ) ;
2007-04-06 02:47:25 +00:00
}
2007-04-07 19:25:38 +00:00
/**
Valide l ' etape 1
@ return true si l ' etape est validee , false sinon
*/
2007-04-06 02:47:25 +00:00
bool NewElementWizard : : validStep1 ( ) {
// il doit y avoir une categorie selectionnee
bool step1_ok = categories_list - > elementsCategoriesList ( ) . selectedCategoryPath ( ) ! = QString ( ) ;
if ( ! step1_ok ) {
QMessageBox : : critical (
this ,
tr ( " Erreur " ) ,
tr ( " Vous devez s \351 lectionner une cat \351 gorie. " )
) ;
}
return ( step1_ok ) ;
}
2007-04-07 19:25:38 +00:00
/**
Valide l ' etape 2
@ return true si l ' etape est validee , false sinon
*/
2007-04-06 02:47:25 +00:00
bool NewElementWizard : : validStep2 ( ) {
QString dir_path = categories_list - > elementsCategoriesList ( ) . selectedCategoryPath ( ) ;
QString file_name = qle_filename - > text ( ) ;
// un nom doit avoir ete entre
if ( file_name = = QString ( ) ) {
QMessageBox : : critical (
this ,
tr ( " Erreur " ) ,
tr ( " Vous devez entrer un nom de fichier " )
) ;
return ( false ) ;
}
2007-04-07 02:37:57 +00:00
if ( ! file_name . endsWith ( " .elmt " ) ) file_name + = " .elmt " ;
2007-04-06 02:47:25 +00:00
// le fichier existe peut etre deja
if ( QFileInfo ( dir_path + " / " + file_name ) . exists ( ) ) {
QMessageBox : : StandardButton answer = QMessageBox : : question (
this ,
" \311 craser le fichier ? " ,
" Le fichier existe d \351 j \340 . Souhaitez-vous l' \351 craser ? " ,
QMessageBox : : Yes | QMessageBox : : No | QMessageBox : : Cancel ,
QMessageBox : : No
) ;
return ( answer = = QMessageBox : : Yes ) ;
2007-04-04 02:13:14 +00:00
}
2007-04-06 02:47:25 +00:00
2007-06-30 17:41:07 +00:00
chosen_file = dir_path + " / " + file_name ;
2007-04-06 02:47:25 +00:00
return ( true ) ;
2007-04-04 02:13:14 +00:00
}
2007-04-06 02:47:25 +00:00
2007-04-07 19:25:38 +00:00
/**
Cree le nouvel element
*/
void NewElementWizard : : createNewElement ( ) {
2007-08-25 03:43:05 +00:00
QETElementEditor * edit_new_element = new QETElementEditor ( parentWidget ( ) ) ;
2007-08-18 22:59:10 +00:00
edit_new_element - > setSize ( hotspot_editor - > elementSize ( ) ) ;
edit_new_element - > setHotspot ( hotspot_editor - > hotspot ( ) ) ;
2007-06-30 17:41:07 +00:00
edit_new_element - > setNames ( element_names - > names ( ) ) ;
edit_new_element - > setOrientations ( orientation_set - > orientationSet ( ) ) ;
edit_new_element - > setFileName ( chosen_file ) ;
edit_new_element - > show ( ) ;
2007-04-07 19:25:38 +00:00
}