From 2d7e9fc6b55e97939bdc7b6dc47f1609237e9311 Mon Sep 17 00:00:00 2001 From: xavierqet Date: Fri, 7 Sep 2007 08:42:36 +0000 Subject: [PATCH] Conversion de NewElementWizard en QWizard git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@115 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- lang/qet_en.qm | Bin 40148 -> 40415 bytes lang/qet_en.ts | 85 ++++++++++--- newelementwizard.cpp | 275 +++++++++++++------------------------------ newelementwizard.h | 24 ++-- 4 files changed, 158 insertions(+), 226 deletions(-) diff --git a/lang/qet_en.qm b/lang/qet_en.qm index e964e5df474316b6d7de34c0b773a5126ce17523..cfb165b6cf732b7c50157e27706b34a2589c1eb3 100644 GIT binary patch delta 4081 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 MWR=@i%3PoLZ$0mL<^TWy diff --git a/lang/qet_en.ts b/lang/qet_en.ts index c577d9cad..a09a6a180 100644 --- a/lang/qet_en.ts +++ b/lang/qet_en.ts @@ -949,12 +949,12 @@ Please check rights of the directory Abscissa : - + Créer un nouvel élément : Assistant Create a new element : wizard - + Erreur Error @@ -966,27 +966,27 @@ Please check rights of the directory Étape 1/5 : Sélectionnez une catégorie dans laquelle enregistrer le nouvel élément. - Step 1 of 5 : Please select a category in which to save the new element. + Step 1 of 5 : Please select a category in which to save the new element. Étape 2/5 : Indiquez le nom du fichier dans lequel enregistrer le nouvel élément. - Step 2 of 5 : Enter the filename for the new element. + Step 2 of 5 : Enter the filename for the new element. Étape 3/5 : Indiquez le ou les noms de l'élément. - Step 3 of 5 : Enter the new element name(s). + Step 3 of 5 : Enter the new element name(s). Étape 4/5 : Saisissez les dimensions du nouvel élément ainsi que la position du hotspot (point de saisie de l'élément à la souris) en considérant que l'élément est dans son orientation par défaut. - Step 4 of 5 : Enter the new element size and its hotspot position (i.e. the spot used to drag the element). Consider the element aims its default orientation. + Step 4 of 5 : Enter the new element size and its hotspot position (i.e. the spot used to drag the element). Consider the element aims its default orientation. Étape 5/5 : Indiquez les orientations possibles pour le nouvel élément. - Step 5 of 5 : Specify the the new element allowed orientations. + Step 5 of 5 : Specify the the new element allowed orientations. @@ -1009,7 +1009,7 @@ Please check rights of the directory Width : - + Nom du nouvel élément New element name @@ -1041,7 +1041,7 @@ Please check rights of the directory Précédent - Back + Back @@ -1066,33 +1066,88 @@ Please check rights of the directory Suivant - Next + Next Valider - Finish + Finish - + Vous devez entrer un nom de fichier You must enter a filename - + Vous devez sélectionner une catégorie. You must select a category. - + Vous n'êtes pas obligé de préciser l'extension *.elmt. Elle sera ajoutée automatiquement. You don't have to specify the *.elmt extension. It will be added automatically. - + nouvel_element new_element + + + &Suivant > + &Next > + + + + Étape 1/5 : Catégorie parente + Step 1 of 5 : Parent Category + + + + Sélectionnez une catégorie dans laquelle enregistrer le nouvel élément. + Select a category which to save the new element in. + + + + Étape 2/5 : Nom du fichier + Step 2 of 5 : Filename + + + + Indiquez le nom du fichier dans lequel enregistrer le nouvel élément. + Enter the name of the file for the new element. + + + + Étape 3/5 : Noms de l'élément + Step 3 of 5 : Element names + + + + Indiquez le ou les noms de l'élément. + Enter one or more names for the element. + + + + Étape 4/5 : Dimensions et point de saisie + Step 4 of 5 : Size and hotspot + + + + Saisissez les dimensions du nouvel élément ainsi que la position du hotspot (point de saisie de l'élément à la souris) en considérant que l'élément est dans son orientation par défaut. + Enter the new element size and its hotspot, considering the element is default-oriented. + + + + Étape 5/5 : Orientations + Step 5 of 5 : Orientations + + + + Indiquez les orientations possibles pour le nouvel élément. + Enter the allowed and forbidden orientations for the new element. + OrientationSetWidget diff --git a/newelementwizard.cpp b/newelementwizard.cpp index 328e8ba8c..3def284a4 100644 --- a/newelementwizard.cpp +++ b/newelementwizard.cpp @@ -12,48 +12,16 @@ @param parent QWidget parent de ce dialogue @param f flags pour le dialogue */ -NewElementWizard::NewElementWizard(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) { - setFixedSize(480, 280); - QVBoxLayout *dialog_layout = new QVBoxLayout(); - setLayout(dialog_layout); - - // chaines de caracteres utilisees sur les boutons - str_next = QString(tr("Suivant")); - str_previous = QString(tr("Pr\351c\351dent")); - str_finish = QString(tr("Valider")); - - buildStep1(); - buildStep2(); - buildStep3(); - buildStep4(); - buildStep5(); - - // dialogue itself +NewElementWizard::NewElementWizard(QWidget *parent, Qt::WindowFlags f) : QWizard(parent, f) { + setPixmap(LogoPixmap, QPixmap(":/ico/qelectrotech.png").scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation)); setWindowTitle(tr("Cr\351er un nouvel \351l\351ment : Assistant")); - - 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(); - - // boutons - QDialogButtonBox *boutons = new QDialogButtonBox(QDialogButtonBox::Cancel); - button_previous = new QPushButton(str_previous, this); - button_previous -> setEnabled(false); - button_next = new QPushButton(str_next, this); - 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); - current_state = Category; - + setButtonText(QWizard::NextButton, tr("&Suivant >")); + addPage(buildStep1()); + addPage(buildStep2()); + addPage(buildStep3()); + addPage(buildStep4()); + addPage(buildStep5()); + setFixedSize(705, 325); } /** @@ -62,164 +30,113 @@ NewElementWizard::NewElementWizard(QWidget *parent, Qt::WindowFlags f) : QDialog NewElementWizard::~NewElementWizard() { } -/** - Passe a l'etape precedente -*/ -void NewElementWizard::previous() { - switch(current_state) { - case Category: - return; - case Filename: - current_state = Category; - step1 -> show(); - step2 -> hide(); - button_previous -> setEnabled(false); - break; - case Names: - current_state = Filename; - step2 -> show(); - qle_filename -> setFocus(); - 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); - } -} - -/** - Passe a l'etape suivante -*/ -void NewElementWizard::next() { - switch(current_state) { - case Category: - if (!validStep1()) return; - current_state = Filename; - step1 -> hide(); - step2 -> show(); - qle_filename -> setFocus(); - 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; - case Dimensions: - if (!validStep4()) return; - current_state = Orientations; - step4 -> hide(); - step5 -> show(); - button_next -> setText(str_finish); - button_previous -> setEnabled(true); - break; - case Orientations: - if (!validStep5()) return; - createNewElement(); - } -} - /** Met en place l'etape 1 : Categorie */ -void NewElementWizard::buildStep1() { - step1 = new QWidget(this); - QVBoxLayout *step1_layout = new QVBoxLayout(); - QLabel *explication = new QLabel(tr("\311tape 1/5 : S\351lectionnez une cat\351gorie dans laquelle enregistrer le nouvel \351l\351ment.")); - explication -> setAlignment(Qt::AlignJustify | Qt::AlignVCenter); - explication -> setWordWrap(true); - step1_layout -> addWidget(explication); +QWizardPage *NewElementWizard::buildStep1() { + QWizardPage *page = new QWizardPage(); + page -> setProperty("WizardState", Category); + page -> setTitle(tr("\311tape 1/5 : Cat\351gorie parente")); + page -> setSubTitle(tr("S\351lectionnez une cat\351gorie dans laquelle enregistrer le nouvel \351l\351ment.")); + QVBoxLayout *layout = new QVBoxLayout(); + categories_list = new ElementsCategoriesWidget(); - step1_layout -> addWidget(categories_list); - step1 -> setLayout(step1_layout); + layout -> addWidget(categories_list); + + page -> setLayout(layout); + return(page); } /** Met en place l'etape 2 : Nom du fichier */ -void NewElementWizard::buildStep2() { - step2 = new QWidget(this); - QVBoxLayout *step2_layout = new QVBoxLayout(); - QLabel *explication1 = new QLabel(tr("\311tape 2/5 : Indiquez le nom du fichier dans lequel enregistrer le nouvel \351l\351ment.")); - explication1 -> setAlignment(Qt::AlignJustify | Qt::AlignVCenter); - explication1 -> setWordWrap(true); +QWizardPage *NewElementWizard::buildStep2() { + QWizardPage *page = new QWizardPage(); + page -> setProperty("WizardState", Filename); + page -> setTitle(tr("\311tape 2/5 : Nom du fichier")); + page -> setSubTitle(tr("Indiquez le nom du fichier dans lequel enregistrer le nouvel \351l\351ment.")); + QVBoxLayout *layout = new QVBoxLayout(); + + qle_filename = new QLineEdit(tr("nouvel_element")); + qle_filename -> selectAll(); QLabel *explication2 = new QLabel(tr("Vous n'\352tes pas oblig\351 de pr\351ciser l'extension *.elmt. Elle sera ajout\351e automatiquement.")); explication2 -> setAlignment(Qt::AlignJustify | Qt::AlignVCenter); explication2 -> setWordWrap(true); - step2_layout -> addWidget(explication1); - qle_filename = new QLineEdit(tr("nouvel_element")); - qle_filename -> selectAll(); - step2_layout -> addWidget(qle_filename); - step2_layout -> addWidget(explication2); - step2_layout -> addSpacing(100); - step2 -> setLayout(step2_layout); + layout -> addWidget(qle_filename); + layout -> addWidget(explication2); + layout -> addSpacing(100); + + page -> setLayout(layout); + return(page); } /** Met en place l'etape 3 : Noms de l'element */ -void NewElementWizard::buildStep3() { - step3 = new QWidget(this); - QVBoxLayout *step3_layout = new QVBoxLayout(); - QLabel *explication = new QLabel(tr("\311tape 3/5 : Indiquez le ou les noms de l'\351l\351ment.")); - explication -> setAlignment(Qt::AlignJustify | Qt::AlignVCenter); - explication -> setWordWrap(true); - step3_layout -> addWidget(explication); +QWizardPage *NewElementWizard::buildStep3() { + QWizardPage *page = new QWizardPage(); + page -> setProperty("WizardState", Names); + page -> setTitle(tr("\311tape 3/5 : Noms de l'\351l\351ment")); + page -> setSubTitle(tr("Indiquez le ou les noms de l'\351l\351ment.")); + QVBoxLayout *layout = new QVBoxLayout(); + element_names = new NamesListWidget(); NamesList hash_name; hash_name.addName(QLocale::system().name().left(2), tr("Nom du nouvel \351l\351ment")); element_names -> setNames(hash_name); - step3_layout -> addWidget(element_names); - step3 -> setLayout(step3_layout); + layout -> addWidget(element_names); + + page -> setLayout(layout); + return(page); } /** Met en place l'etape 4 : Dimensions et Hotspot */ -void NewElementWizard::buildStep4() { - step4 = new QWidget(this); - QVBoxLayout *step4_layout = new QVBoxLayout(step4); - QLabel *explication = new QLabel(tr("\311tape 4/5 : Saisissez les dimensions du nouvel \351l\351ment ainsi que la position du hotspot (point de saisie de l'\351l\351ment \340 la souris) en consid\351rant que l'\351l\351ment est dans son orientation par d\351faut.")); - explication -> setAlignment(Qt::AlignJustify | Qt::AlignVCenter); - explication -> setWordWrap(true); - step4_layout -> addWidget(explication); +QWizardPage *NewElementWizard::buildStep4() { + QWizardPage *page = new QWizardPage(); + page -> setProperty("WizardState", Dimensions); + page -> setTitle(tr("\311tape 4/5 : Dimensions et point de saisie")); + page -> setSubTitle(tr("Saisissez les dimensions du nouvel \351l\351ment ainsi que la position du hotspot (point de saisie de l'\351l\351ment \340 la souris) en consid\351rant que l'\351l\351ment est dans son orientation par d\351faut.")); + QVBoxLayout *layout = new QVBoxLayout(); + hotspot_editor = new HotspotEditor(); - step4_layout -> addWidget(hotspot_editor, 0); - step4_layout -> setSpacing(0); + layout -> addWidget(hotspot_editor, 0); + layout -> setSpacing(0); + + page -> setLayout(layout); + return(page); } /** Met en place l'etape 5 : orientations possibles pour le nouvel element */ -void NewElementWizard::buildStep5() { - step5 = new QWidget(this); - - QLabel *explication = new QLabel(tr("\311tape 5/5 : Indiquez les orientations possibles pour le nouvel \351l\351ment.")); - explication -> setAlignment(Qt::AlignJustify | Qt::AlignVCenter); - explication -> setWordWrap(true); +QWizardPage *NewElementWizard::buildStep5() { + QWizardPage *page = new QWizardPage(); + page -> setProperty("WizardState", Orientations); + page -> setTitle(tr("\311tape 5/5 : Orientations")); + page -> setSubTitle(tr("Indiquez les orientations possibles pour le nouvel \351l\351ment.")); + QVBoxLayout *layout = new QVBoxLayout(); orientation_set = new OrientationSetWidget(); + layout -> addWidget(orientation_set); + layout -> addSpacing(25); - QVBoxLayout *step5_layout = new QVBoxLayout(); - step5_layout -> addWidget(explication); - step5_layout -> addWidget(orientation_set); - step5_layout -> addSpacing(25); - step5 -> setLayout(step5_layout); + page -> setLayout(layout); + return(page); +} + +/// @return true si l'etape en cours est validee, false sinon +bool NewElementWizard::validateCurrentPage() { + WizardState wizard_state = static_cast(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); } /** @@ -275,35 +192,6 @@ bool NewElementWizard::validStep2() { return(true); } -/** - Valide l'etape 3 - @return true si l'etape est validee, false sinon -*/ -bool NewElementWizard::validStep3() { - // il doit y avoir au moins un nom - return(element_names -> checkOneName()); -} - -/** - Valide l'etape 4 - @return true si l'etape est validee, false sinon -*/ -bool NewElementWizard::validStep4() { - // l'editeur de hotspot se charge deja de valider tout ca - return(true); -} - -/** - 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 -*/ -bool NewElementWizard::validStep5() { - // l'editeur d'orientations se charge deja de valider tout ca - return(true); -} - /** Cree le nouvel element */ @@ -315,5 +203,4 @@ void NewElementWizard::createNewElement() { edit_new_element -> setOrientations(orientation_set -> orientationSet()); edit_new_element -> setFileName(chosen_file); edit_new_element -> show(); - accept(); } diff --git a/newelementwizard.h b/newelementwizard.h index 99df61eff..b311dfe0f 100644 --- a/newelementwizard.h +++ b/newelementwizard.h @@ -16,7 +16,7 @@ class ElementsCategoriesWidget; class NamesListWidget; class OrientationSetWidget; class HotspotEditor; -class NewElementWizard : public QDialog { +class NewElementWizard : public QWizard { Q_OBJECT // constructeurs, destructeur @@ -30,34 +30,24 @@ class NewElementWizard : public QDialog { // attributs private: enum WizardState { Category, Filename, Names, Dimensions, Orientations }; - QString str_next, str_previous, str_finish; - QWidget *step1, *step2, *step3, *step4, *step5; ElementsCategoriesWidget* categories_list; QLineEdit *qle_filename; NamesListWidget *element_names; OrientationSetWidget *orientation_set; HotspotEditor *hotspot_editor; - QPushButton *button_previous; - QPushButton *button_next; WizardState current_state; QString chosen_file; // methodes private: - void buildStep1(); - void buildStep2(); - void buildStep3(); - void buildStep4(); - void buildStep5(); + QWizardPage *buildStep1(); + QWizardPage *buildStep2(); + QWizardPage *buildStep3(); + QWizardPage *buildStep4(); + QWizardPage *buildStep5(); bool validStep1(); bool validStep2(); - bool validStep3(); - bool validStep4(); - bool validStep5(); + bool validateCurrentPage(); void createNewElement(); - - public slots: - void previous(); - void next(); }; #endif