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-04-04 02:13:14 +00:00
NewElementWizard : : NewElementWizard ( QWidget * parent , Qt : : WindowFlags f ) : QDialog ( parent , f ) {
2007-04-07 02:37:57 +00:00
setFixedSize ( 480 , 280 ) ;
2007-04-04 02:13:14 +00:00
QVBoxLayout * dialog_layout = new QVBoxLayout ( ) ;
setLayout ( dialog_layout ) ;
2007-04-06 02:47:25 +00:00
// chaines de caracteres utilisees sur les boutons
str_next = QString ( tr ( " Suivant " ) ) ;
str_previous = QString ( tr ( " Pr \351 c \351 dent " ) ) ;
str_finish = QString ( tr ( " Valider " ) ) ;
2007-04-04 02:13:14 +00:00
2007-04-06 02:47:25 +00:00
buildStep1 ( ) ;
buildStep2 ( ) ;
buildStep3 ( ) ;
buildStep4 ( ) ;
buildStep5 ( ) ;
2007-04-04 02:13:14 +00:00
// dialogue itself
setWindowTitle ( tr ( " Cr \351 er un nouvel \351 l \351 ment : Assistant " ) ) ;
2007-04-06 02:47:25 +00:00
dialog_layout - > addWidget ( step1 ) ;
dialog_layout - > addWidget ( step2 ) ;
dialog_layout - > addWidget ( step3 ) ;
dialog_layout - > addWidget ( step4 ) ;
dialog_layout - > addWidget ( step5 ) ;
step2 - > hide ( ) ;
step3 - > hide ( ) ;
step4 - > hide ( ) ;
step5 - > hide ( ) ;
2007-04-04 02:13:14 +00:00
// boutons
QDialogButtonBox * boutons = new QDialogButtonBox ( QDialogButtonBox : : Cancel ) ;
2007-04-06 02:47:25 +00:00
button_previous = new QPushButton ( str_previous , this ) ;
2007-04-04 02:13:14 +00:00
button_previous - > setEnabled ( false ) ;
2007-04-06 02:47:25 +00:00
button_next = new QPushButton ( str_next , this ) ;
2007-04-04 02:13:14 +00:00
boutons - > addButton ( button_previous , QDialogButtonBox : : ActionRole ) ;
boutons - > addButton ( button_next , QDialogButtonBox : : ActionRole ) ;
connect ( button_previous , SIGNAL ( released ( ) ) , this , SLOT ( previous ( ) ) ) ;
connect ( button_next , SIGNAL ( released ( ) ) , this , SLOT ( next ( ) ) ) ;
connect ( boutons , SIGNAL ( rejected ( ) ) , this , SLOT ( accept ( ) ) ) ;
dialog_layout - > addWidget ( boutons ) ;
2007-04-06 02:47:25 +00:00
current_state = Category ;
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-07 19:25:38 +00:00
/**
Passe a l ' etape precedente
*/
2007-04-04 02:13:14 +00:00
void NewElementWizard : : previous ( ) {
switch ( current_state ) {
2007-04-05 01:13:14 +00:00
case Category :
2007-04-06 02:47:25 +00:00
return ;
case Filename :
current_state = Category ;
step1 - > show ( ) ;
step2 - > hide ( ) ;
2007-04-04 02:13:14 +00:00
button_previous - > setEnabled ( false ) ;
2007-04-06 02:47:25 +00:00
break ;
case Names :
current_state = Filename ;
step2 - > show ( ) ;
2007-06-30 17:41:07 +00:00
qle_filename - > setFocus ( ) ;
2007-04-06 02:47:25 +00:00
step3 - > hide ( ) ;
break ;
case Dimensions :
current_state = Names ;
step3 - > show ( ) ;
step4 - > hide ( ) ;
button_next - > setText ( str_next ) ;
break ;
case Orientations :
current_state = Dimensions ;
step4 - > show ( ) ;
step5 - > hide ( ) ;
button_next - > setText ( str_next ) ;
2007-04-04 02:13:14 +00:00
}
}
2007-04-07 19:25:38 +00:00
/**
Passe a l ' etape suivante
*/
2007-04-04 02:13:14 +00:00
void NewElementWizard : : next ( ) {
switch ( current_state ) {
2007-04-06 02:47:25 +00:00
case Category :
if ( ! validStep1 ( ) ) return ;
current_state = Filename ;
step1 - > hide ( ) ;
step2 - > show ( ) ;
2007-06-30 17:41:07 +00:00
qle_filename - > setFocus ( ) ;
2007-04-06 02:47:25 +00:00
button_previous - > setEnabled ( true ) ;
break ;
case Filename :
if ( ! validStep2 ( ) ) return ;
current_state = Names ;
step2 - > hide ( ) ;
step3 - > show ( ) ;
break ;
case Names :
if ( ! validStep3 ( ) ) return ;
current_state = Dimensions ;
step3 - > hide ( ) ;
step4 - > show ( ) ;
break ;
2007-04-04 02:13:14 +00:00
case Dimensions :
2007-04-06 02:47:25 +00:00
if ( ! validStep4 ( ) ) return ;
current_state = Orientations ;
step4 - > hide ( ) ;
step5 - > show ( ) ;
button_next - > setText ( str_finish ) ;
2007-04-04 02:13:14 +00:00
button_previous - > setEnabled ( true ) ;
break ;
2007-04-06 02:47:25 +00:00
case Orientations :
if ( ! validStep5 ( ) ) return ;
2007-04-07 19:25:38 +00:00
createNewElement ( ) ;
2007-04-04 02:13:14 +00:00
}
}
2007-04-06 02:47:25 +00:00
/**
Met en place l ' etape 1 : Categorie
*/
void NewElementWizard : : buildStep1 ( ) {
step1 = new QWidget ( this ) ;
QVBoxLayout * step1_layout = new QVBoxLayout ( ) ;
2007-04-07 19:25:38 +00:00
QLabel * explication = new QLabel ( tr ( " \311 tape 1/5 : S \351 lectionnez une cat \351 gorie dans laquelle enregistrer le nouvel \351 l \351 ment. " ) ) ;
explication - > setAlignment ( Qt : : AlignJustify | Qt : : AlignVCenter ) ;
explication - > setWordWrap ( true ) ;
step1_layout - > addWidget ( explication ) ;
2007-04-06 02:47:25 +00:00
categories_list = new ElementsCategoriesWidget ( ) ;
step1_layout - > addWidget ( categories_list ) ;
step1 - > setLayout ( step1_layout ) ;
}
/**
Met en place l ' etape 2 : Nom du fichier
*/
void NewElementWizard : : buildStep2 ( ) {
step2 = new QWidget ( this ) ;
QVBoxLayout * step2_layout = new QVBoxLayout ( ) ;
2007-04-07 19:25:38 +00:00
QLabel * explication1 = new QLabel ( tr ( " \311 tape 2/5 : Indiquez le nom du fichier dans lequel enregistrer le nouvel \351 l \351 ment. " ) ) ;
explication1 - > setAlignment ( Qt : : AlignJustify | Qt : : AlignVCenter ) ;
explication1 - > setWordWrap ( true ) ;
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 ) ;
step2_layout - > addWidget ( explication1 ) ;
2007-06-30 17:41:07 +00:00
qle_filename = new QLineEdit ( tr ( " nouvel_element " ) ) ;
qle_filename - > selectAll ( ) ;
step2_layout - > addWidget ( qle_filename ) ;
2007-04-07 19:25:38 +00:00
step2_layout - > addWidget ( explication2 ) ;
step2_layout - > addSpacing ( 100 ) ;
2007-04-06 02:47:25 +00:00
step2 - > setLayout ( step2_layout ) ;
}
/**
Met en place l ' etape 3 : Noms de l ' element
*/
void NewElementWizard : : buildStep3 ( ) {
step3 = new QWidget ( this ) ;
QVBoxLayout * step3_layout = new QVBoxLayout ( ) ;
2007-04-07 19:25:38 +00:00
QLabel * explication = new QLabel ( tr ( " \311 tape 3/5 : Indiquez le ou les noms de l' \351 l \351 ment. " ) ) ;
explication - > setAlignment ( Qt : : AlignJustify | Qt : : AlignVCenter ) ;
explication - > setWordWrap ( true ) ;
step3_layout - > addWidget ( explication ) ;
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 ) ;
step3_layout - > addWidget ( element_names ) ;
2007-04-06 02:47:25 +00:00
step3 - > setLayout ( step3_layout ) ;
}
/**
Met en place l ' etape 4 : Dimensions et Hotspot
*/
void NewElementWizard : : buildStep4 ( ) {
step4 = new QWidget ( this ) ;
2007-08-18 22:59:10 +00:00
QVBoxLayout * step4_layout = new QVBoxLayout ( step4 ) ;
2007-04-07 19:25:38 +00:00
QLabel * explication = new QLabel ( tr ( " \311 tape 4/5 : 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. " ) ) ;
explication - > setAlignment ( Qt : : AlignJustify | Qt : : AlignVCenter ) ;
explication - > setWordWrap ( true ) ;
step4_layout - > addWidget ( explication ) ;
2007-08-18 22:59:10 +00:00
hotspot_editor = new HotspotEditor ( ) ;
step4_layout - > addWidget ( hotspot_editor , 0 ) ;
step4_layout - > setSpacing ( 0 ) ;
2007-04-06 02:47:25 +00:00
}
/**
Met en place l ' etape 5 : orientations possibles pour le nouvel element
*/
void NewElementWizard : : buildStep5 ( ) {
step5 = new QWidget ( this ) ;
2007-04-07 19:25:38 +00:00
QLabel * explication = new QLabel ( tr ( " \311 tape 5/5 : Indiquez les orientations possibles pour le nouvel \351 l \351 ment. " ) ) ;
explication - > setAlignment ( Qt : : AlignJustify | Qt : : AlignVCenter ) ;
explication - > setWordWrap ( true ) ;
2007-06-30 17:41:07 +00:00
orientation_set = new OrientationSetWidget ( ) ;
2007-04-07 19:25:38 +00:00
2007-04-06 02:47:25 +00:00
QVBoxLayout * step5_layout = new QVBoxLayout ( ) ;
2007-04-07 19:25:38 +00:00
step5_layout - > addWidget ( explication ) ;
2007-06-30 17:41:07 +00:00
step5_layout - > addWidget ( orientation_set ) ;
step5_layout - > addSpacing ( 25 ) ;
2007-04-06 02:47:25 +00:00
step5 - > setLayout ( step5_layout ) ;
}
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
/**
Valide l ' etape 3
@ return true si l ' etape est validee , false sinon
*/
2007-04-06 02:47:25 +00:00
bool NewElementWizard : : validStep3 ( ) {
2007-04-07 19:25:38 +00:00
// il doit y avoir au moins un nom
2007-04-07 02:37:57 +00:00
return ( element_names - > checkOneName ( ) ) ;
2007-04-06 02:47:25 +00:00
}
2007-04-07 19:25:38 +00:00
/**
Valide l ' etape 4
@ return true si l ' etape est validee , false sinon
*/
2007-04-06 02:47:25 +00:00
bool NewElementWizard : : validStep4 ( ) {
2007-08-18 22:59:10 +00:00
// l'editeur de hotspot se charge deja de valider tout ca
2007-04-06 02:47:25 +00:00
return ( true ) ;
}
2007-04-07 19:25:38 +00:00
/**
Valide l ' etape 5
Cette fonction s ' assure qu ' il y ait toujours exactement une orientation
" par defaut "
@ return true si l ' etape est validee , false sinon
*/
2007-04-06 02:47:25 +00:00
bool NewElementWizard : : validStep5 ( ) {
2007-06-30 17:41:07 +00:00
// l'editeur d'orientations se charge deja de valider tout ca
2007-04-06 02:47:25 +00:00
return ( true ) ;
}
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 ( ) ;
accept ( ) ;
2007-04-07 19:25:38 +00:00
}