diff --git a/elementscategorieslist.cpp b/elementscategorieslist.cpp index 0a25fb841..efe13fe75 100644 --- a/elementscategorieslist.cpp +++ b/elementscategorieslist.cpp @@ -1,5 +1,6 @@ #include #include "elementscategorieslist.h" +#include "elementscategory.h" #include "qetapp.h" /** @@ -44,77 +45,20 @@ void ElementsCategoriesList::reload() { est invalide, la fonction utilise le nom du dossier. */ void ElementsCategoriesList::addDir(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QString nom) { - QDir dossier(adr_dossier); - if (!dossier.exists()) return; - adr_dossier = dossier.canonicalPath() + "/"; + ElementsCategory category(adr_dossier); + if (!category.exists()) return; // recupere le nom de la categorie - QString nom_categorie = (nom != QString()) ? nom : categoryName(dossier); + QString nom_categorie = (nom != QString()) ? nom : category.name(); // creation du QTreeWidgetItem representant le dossier QTreeWidgetItem *qtwi_dossier = new QTreeWidgetItem(qtwi_parent, QStringList(nom_categorie)); - qtwi_dossier -> setData(0, Qt::UserRole, dossier.absolutePath()); + qtwi_dossier -> setData(0, Qt::UserRole, category.absolutePath()); qtwi_dossier -> setExpanded(true); // ajout des sous-categories / sous-dossiers - QStringList dossiers = dossier.entryList(QStringList(), QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDir::Name); - foreach(QString dossier, dossiers) addDir(qtwi_dossier, adr_dossier + dossier); -} - -/** - Methode permettant d'obtenir le nom affichable d'une categorie etant donne - son chemin (dossier). - @param directory le chemin du dossier representant la categorie - @return Le nom affichable de la categorie -*/ -QString ElementsCategoriesList::categoryName(QDir &directory) { - // en cas d'echec de la lecture du fichier de configuration - // "qet_directory", le nom du dossier est retourne - QString category_name = directory.dirName(); - // repere le chemin du fichier de configuration de la categorie - QFile directory_conf(directory.canonicalPath() + "/qet_directory"); - // verifie l'existence du fichier - if (directory_conf.exists()) { - // ouvre le fichier - if (directory_conf.open(QIODevice::ReadOnly | QIODevice::Text)) { - // recupere les deux premiers caracteres de la locale en cours du systeme - QString system_language = QLocale::system().name().left(2); - // lit le contenu du fichier dans un QDomDocument XML - QDomDocument document; - if (document.setContent(&directory_conf)) { - /* parcourt le document XML a la recherche d'un nom - par ordre de preference, on prendra : - - le nom dans la langue du systeme - - le nom en anglais - - le nom du dossier - */ - QDomElement root = document.documentElement(); - if (root.tagName() == "qet-directory") { - bool name_found = false; - // parcourt les "names" - for (QDomNode node = root.firstChild() ; !node.isNull() ; node = node.nextSibling()) { - QDomElement names = node.toElement(); - if (names.isNull() || names.tagName() != "names") continue; - // parcourt les "name" - for (QDomNode n = names.firstChild() ; !n.isNull() ; n = n.nextSibling()) { - QDomElement name = n.toElement(); - if (name.isNull() || name.tagName() != "name") continue; - if (name.attribute("lang") == system_language) { - category_name = name.text(); - name_found = true; - break; - } else if (name.attribute("lang") == "en") { - category_name = name.text(); - } - } - if (name_found) break; - } - } - } - directory_conf.close(); - } - } - return(category_name); + QStringList dossiers = category.entryList(QStringList(), QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDir::Name); + foreach(QString dossier, dossiers) addDir(qtwi_dossier, adr_dossier + dossier + "/"); } /** diff --git a/elementscategorieswidget.cpp b/elementscategorieswidget.cpp index 6be910c82..c183d0f6b 100644 --- a/elementscategorieswidget.cpp +++ b/elementscategorieswidget.cpp @@ -1,7 +1,9 @@ #include "elementscategorieswidget.h" #include "elementscategorieslist.h" +#include "elementscategoryeditor.h" +#include "elementscategory.h" -ElementsCategoriesWidget::ElementsCategoriesWidget() { +ElementsCategoriesWidget::ElementsCategoriesWidget(QWidget * parent) : QWidget(parent) { // initialise la liste des categories elementscategorieslist = new ElementsCategoriesList(this); @@ -28,14 +30,61 @@ ElementsCategoriesWidget::~ElementsCategoriesWidget() { } void ElementsCategoriesWidget::newCategory() { - + QString s_c_path = elementscategorieslist -> selectedCategoryPath(); + if (s_c_path.isNull()) return; + (new ElementsCategoryEditor(s_c_path, false, this)) -> exec(); + elementscategorieslist -> reload(); } void ElementsCategoriesWidget::editCategory() { - + QString s_c_path = elementscategorieslist -> selectedCategoryPath(); + if (s_c_path.isNull()) return; + (new ElementsCategoryEditor(s_c_path, true, this)) -> exec(); + elementscategorieslist -> reload(); } void ElementsCategoriesWidget::removeCategory() { - qDebug() << elementscategorieslist -> selectedCategoryName(); - qDebug() << elementscategorieslist -> selectedCategoryPath(); + // recupere le nom et le chemin de la categorie + QString s_c_name = elementscategorieslist -> selectedCategoryName(); + QString s_c_path = elementscategorieslist -> selectedCategoryPath(); + + if (s_c_path.isNull()) return; + + // confirmation #1 + QMessageBox::StandardButton answer_1 = QMessageBox::question( + this, + tr("Supprimer la cat\351gorie ?"), + tr("\312tes-vous s\373r de vouloir supprimer cette cat\351gorie ?\n" + "Tous les \351l\351ments et les cat\351gories contenus dans cette " + "cat\351gorie seront supprim\351s"), + QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel + ); + if (answer_1 != QMessageBox::Yes) return; + + // confirmation #2 + QMessageBox::StandardButton answer_2 = QMessageBox::question( + this, + tr("Supprimer la cat\351gorie ?"), + tr("\312tes-vous vraiment s\373r de vouloir supprimer cette " + "cat\351gorie ?\nLes changements seront d\351finitifs."), + QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel + ); + if (answer_2 != QMessageBox::Yes) return; + + // verifie l'existence de la categorie + ElementsCategory category(s_c_path); + if (!category.exists()) return; + + // supprime la categorie + if (!category.remove()) { + QMessageBox::warning( + this, + tr("Suppression de la cat\351gorie"), + tr("La suppression de la cat\351gorie a \351chou\351.\n" + "V\351rifiez vos droits sur le dossier ") + s_c_path + tr(".") + ); + } + + // recharge la liste des categories + elementscategorieslist -> reload(); } diff --git a/elementscategorieswidget.h b/elementscategorieswidget.h index 97f1e2e78..00ea0418d 100644 --- a/elementscategorieswidget.h +++ b/elementscategorieswidget.h @@ -10,7 +10,7 @@ class ElementsCategoriesWidget : public QWidget { Q_OBJECT // Constructeur, destructeur public: - ElementsCategoriesWidget(); + ElementsCategoriesWidget(QWidget * = 0); ~ElementsCategoriesWidget(); // attributs @@ -19,6 +19,8 @@ class ElementsCategoriesWidget : public QWidget { QToolBar *toolbar; // methodes + bool rmdir(const QString &); + public: inline ElementsCategoriesList &elementsCategoriesList() const { return(*elementscategorieslist); } diff --git a/elementscategory.cpp b/elementscategory.cpp new file mode 100644 index 000000000..b6e7c42a3 --- /dev/null +++ b/elementscategory.cpp @@ -0,0 +1,157 @@ +#include "elementscategory.h" +#include + +/** + Constructeur + @param path Chemin du dossier de la categorie +*/ +ElementsCategory::ElementsCategory(const QString &path) : QDir(path) { + if (path != QString()) loadNames(); +} + +/** + Destructeur +*/ +ElementsCategory::~ElementsCategory() { + +} + +/** + Supprime un repertoire recursivement. + @return true si la suppression a reussie, false sinon +*/ +bool ElementsCategory::rmdir(const QString &path) const { + QDir directory(path); + + // supprime les dossiers, recursivement + foreach (QString file, directory.entryList(QDir::AllDirs | QDir::NoDotAndDotDot)) { + if (!rmdir(directory.absolutePath() + "/" + file)) return(false); + } + + // supprime les fichiers + foreach (QString file, directory.entryList(QDir::Files | QDir::NoDotAndDotDot)) { + if (!directory.remove(file)) return(false); + } + + // supprime le dossier lui-meme + return(directory.rmdir(path)); +} + +/** + Charge la liste des noms possibles pour la categorie +*/ +void ElementsCategory::loadNames() { + // repere le chemin du fichier de configuration de la categorie + QFile directory_conf(canonicalPath() + "/qet_directory"); + + // verifie l'existence du fichier + if (!directory_conf.exists()) return; + + // ouvre le fichier + if (!directory_conf.open(QIODevice::ReadOnly | QIODevice::Text)) return; + + // lit le contenu du fichier dans un QDomDocument XML + QDomDocument document; + if (!document.setContent(&directory_conf)) return; + + // verifie la racine + QDomElement root = document.documentElement(); + if (root.tagName() != "qet-directory") return; + + // parcourt les "names" + for (QDomNode node = root.firstChild() ; !node.isNull() ; node = node.nextSibling()) { + QDomElement names = node.toElement(); + if (names.isNull() || names.tagName() != "names") continue; + // parcourt les "name" + for (QDomNode n = names.firstChild() ; !n.isNull() ; n = n.nextSibling()) { + QDomElement name = n.toElement(); + if (name.isNull() || name.tagName() != "name") continue; + category_names.insert(name.attribute("lang"), name.text()); + } + } + + // ferme le fichier + directory_conf.close(); +} + +/** + Methode permettant d'obtenir le nom affichable de cette categorie. + Par ordre de preference, on prendra : + - le nom dans la langue du systeme + - le nom en anglais + - le nom du dossier + @return Le nom affichable de la categorie +*/ +QString ElementsCategory::name() const { + // recupere les deux premiers caracteres de la locale en cours du systeme + QString system_language = QLocale::system().name().left(2); + QString category_name; + if (category_names[system_language] != QString()) { + category_name = category_names[system_language]; + } else if (category_names["en"] != QString()) { + category_name = category_names["en"]; + } else { + category_name = dirName(); + } + return(category_name); +} + +/** + @return La liste des differents noms possibles pour la categorie +*/ +QHash ElementsCategory::categoryNames() const { + return(category_names); +} + +void ElementsCategory::clearNames() { + category_names.clear(); +} + +void ElementsCategory::addName(const QString &lang, const QString &value) { + category_names.insert(lang, value); +} + +bool ElementsCategory::write() const { + + // cree le dossier de la categorie + if (!mkpath(path())) return(false); + + // prepare la structure XML + QDomDocument document; + QDomElement root = document.createElement("qet-directory"); + document.appendChild(root); + QDomElement names = document.createElement("names"); + root.appendChild(names); + foreach(QString lang, category_names.keys()) { + QDomElement name = document.createElement("name"); + name.setAttribute("lang", lang); + QDomText name_value = document.createTextNode(category_names[lang]); + name.appendChild(name_value); + names.appendChild(name); + } + + // repere le chemin du fichier de configuration de la categorie + QFile directory_conf(canonicalPath() + "/qet_directory"); + + // ouvre le fichier + if (!directory_conf.open(QIODevice::Text | QIODevice::WriteOnly)) return(false); + + // ecrit le fichier + QTextStream out(&directory_conf); + out.setCodec("UTF-8"); + out << document.toString(4); + + // ferme le fichier + directory_conf.close(); + + return(true); +} + +/** + Supprime la categorie + @return true si la suppression a reussie, false sinon +*/ +bool ElementsCategory::remove() const { + return(rmdir(absolutePath())); +} + diff --git a/elementscategory.h b/elementscategory.h new file mode 100644 index 000000000..7f40b6882 --- /dev/null +++ b/elementscategory.h @@ -0,0 +1,28 @@ +#ifndef ELEMENTS_CATEGORY_H +#define ELEMENTS_CATEGORY_H +#include +class ElementsCategory : public QDir { + // Constructeur, destructeur + public: + ElementsCategory(const QString & = QString()); + ~ElementsCategory(); + + // attributs + private: + QHash category_names; + + // methodes + private: + bool rmdir(const QString &) const; + void loadNames(); + + public: + QString name() const; + QHash categoryNames() const; + void clearNames(); + void addName(const QString &, const QString &); + bool write() const; + bool remove() const; + //bool move(const QString &new_parent); +}; +#endif diff --git a/elementscategoryeditor.cpp b/elementscategoryeditor.cpp new file mode 100644 index 000000000..03f5c35ad --- /dev/null +++ b/elementscategoryeditor.cpp @@ -0,0 +1,107 @@ +#include "elementscategoryeditor.h" +#include "elementscategory.h" + +/** + Constructeur fournissant un dialogue d'edition de categorie. + @param category_path Chemin de la categorie a editer ou de la categorie parente en cas de creation + @param edit booleen a true pour le mode edition, a false pour le mode creation + @param parent QWidget parent du dialogue +*/ +ElementsCategoryEditor::ElementsCategoryEditor(const QString &category_path, bool edit, QWidget *parent) : QDialog(parent) { + mode_edit = edit; + // dialogue basique + buildDialog(); + category = new ElementsCategory(category_path); + if (mode_edit) { + setWindowTitle(tr("\311diter une cat\351gorie")); + connect(buttons, SIGNAL(accepted()), this, SLOT(acceptUpdate())); + + // edition de categorie = affichage des noms deja existants + QHash names = category -> categoryNames(); + foreach(QString lang, names.keys()) { + QStringList qsl; + qsl << lang << names[lang]; + QTreeWidgetItem *qtwi = new QTreeWidgetItem(qsl); + qtwi -> setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); + category_names -> addTopLevelItem(qtwi); + } + } else { + setWindowTitle(tr("Cr\351er une nouvelle cat\351gorie")); + connect(buttons, SIGNAL(accepted()), this, SLOT(acceptCreation())); + + // nouvelle categorie = une ligne pre-machee + QStringList qsl; + qsl << QLocale::system().name().left(2) << tr("Nom de la nouvelle cat\351gorie"); + QTreeWidgetItem *qtwi = new QTreeWidgetItem(qsl); + category_names -> addTopLevelItem(qtwi); + category_names -> openPersistentEditor(qtwi, 1); + } +} + +/** + Destructeur +*/ +ElementsCategoryEditor::~ElementsCategoryEditor() { + delete category; +} + +/** + Bases du dialogue de creation / edition +*/ +void ElementsCategoryEditor::buildDialog() { + QVBoxLayout *editor_layout = new QVBoxLayout(); + setLayout(editor_layout); + + category_names = new QTreeWidget(); + category_names -> setColumnCount(2); + QStringList headers; + headers << tr("Langue") << tr("Nom"); + category_names -> setHeaderLabels(headers); + + buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + connect(buttons, SIGNAL(rejected()), this, SLOT(reject())); + + editor_layout -> addWidget(new QLabel(tr("Vous pouvez sp\351cifier un nom par langue pour la cat\351gorie."))); + editor_layout -> addWidget(category_names); + editor_layout -> addWidget(buttons); +} + +/** + Valide les donnees entrees par l'utilisateur lors d'une creation de + categorie +*/ +void ElementsCategoryEditor::acceptCreation() { + // il doit y avoir au moins un nom + int names_count = category_names -> topLevelItemCount(); + if (!names_count || (category_names -> topLevelItem(0) -> text(1)) == QString()) { + QMessageBox::critical( + this, + tr("La cat\351gorie doit avoir au moins un nom."), + tr("Vous devez entrer au moins un nom pour la cat\351gorie.") + ); + } + + // chargement des noms + category -> clearNames(); + for (int i = 0 ; i < names_count ; ++ i) { + category -> addName( + category_names -> topLevelItem(i) -> text(0), + category_names -> topLevelItem(i) -> text(1) + ); + } + + // cree un nom de dossier a partir du 1er nom de la categorie + QString dirname = category_names -> topLevelItem(0) -> text(1).toLower().replace(" ", "_"); + category -> setPath(category -> path() + "/" + dirname); + category -> write(); + + QDialog::accept(); +} + +/** + Valide les donnees entrees par l'utilisateur lors d'une modification de + categorie +*/ +void ElementsCategoryEditor::acceptUpdate() { + qDebug() << "acceptUpdate"; +} diff --git a/elementscategoryeditor.h b/elementscategoryeditor.h new file mode 100644 index 000000000..482797621 --- /dev/null +++ b/elementscategoryeditor.h @@ -0,0 +1,27 @@ +#ifndef ELEMENTS_CATEGORY_EDITOR_H +#define ELEMENTS_CATEGORY_EDITOR_H +#include +class ElementsCategory; +class ElementsCategoryEditor : public QDialog { + Q_OBJECT + //Constructeurs, destructeur + public: + ElementsCategoryEditor(QWidget * = 0); + ElementsCategoryEditor(const QString &, bool = true, QWidget * = 0); + ~ElementsCategoryEditor(); + + // attributs + private: + QTreeWidget *category_names; + ElementsCategory *category; + QDialogButtonBox *buttons; + bool mode_edit; + // methodes + private: + void buildDialog(); + + public slots: + void acceptCreation(); + void acceptUpdate(); +}; +#endif diff --git a/elementspanel.cpp b/elementspanel.cpp index 5e3d26ad9..d742557ba 100644 --- a/elementspanel.cpp +++ b/elementspanel.cpp @@ -1,5 +1,6 @@ #include "elementspanel.h" #include "customelement.h" +#include "elementscategory.h" /** Constructeur @@ -94,12 +95,11 @@ void ElementsPanel::startDrag(Qt::DropActions /*supportedActions*/) { est invalide, la fonction utilise le nom du dossier. */ void ElementsPanel::addDir(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QString nom) { - QDir dossier(adr_dossier); - if (!dossier.exists()) return; - adr_dossier = dossier.canonicalPath() + "/"; + ElementsCategory category(adr_dossier); + if (!category.exists()) return; // recupere le nom de la categorie - QString nom_categorie = (nom != QString()) ? nom : categoryName(dossier); + QString nom_categorie = (nom != QString()) ? nom : category.name(); // creation du QTreeWidgetItem representant le dossier QTreeWidgetItem *qtwi_dossier = new QTreeWidgetItem(qtwi_parent, QStringList(nom_categorie)); @@ -110,11 +110,11 @@ void ElementsPanel::addDir(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QS qtwi_dossier -> setExpanded(true); // ajout des sous-categories / sous-dossiers - QStringList dossiers = dossier.entryList(QStringList(), QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDir::Name); - foreach(QString dossier, dossiers) addDir(qtwi_dossier, adr_dossier + dossier); + QStringList dossiers = category.entryList(QStringList(), QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDir::Name); + foreach(QString dossier, dossiers) addDir(qtwi_dossier, adr_dossier + dossier + "/"); // ajout des elements / fichiers - QStringList fichiers = dossier.entryList(QStringList("*.elmt"), QDir::Files, QDir::Name); + QStringList fichiers = category.entryList(QStringList("*.elmt"), QDir::Files, QDir::Name); foreach(QString fichier, fichiers) addFile(qtwi_dossier, adr_dossier + fichier); } @@ -141,62 +141,6 @@ void ElementsPanel::addFile(QTreeWidgetItem *qtwi_parent, QString fichier) { qtwi -> setData(0, 42, fichier); } -/** - Methode permettant d'obtenir le nom affichable d'une categorie etant donne - son chemin (dossier). - @param directory le chemin du dossier representant la categorie - @return Le nom affichable de la categorie -*/ -QString ElementsPanel::categoryName(QDir &directory) { - // en cas d'echec de la lecture du fichier de configuration - // "qet_directory", le nom du dossier est retourne - QString category_name = directory.dirName(); - // repere le chemin du fichier de configuration de la categorie - QFile directory_conf(directory.canonicalPath() + "/qet_directory"); - // verifie l'existence du fichier - if (directory_conf.exists()) { - // ouvre le fichier - if (directory_conf.open(QIODevice::ReadOnly | QIODevice::Text)) { - // recupere les deux premiers caracteres de la locale en cours du systeme - QString system_language = QLocale::system().name().left(2); - // lit le contenu du fichier dans un QDomDocument XML - QDomDocument document; - if (document.setContent(&directory_conf)) { - /* parcourt le document XML a la recherche d'un nom - par ordre de preference, on prendra : - - le nom dans la langue du systeme - - le nom en anglais - - le nom du dossier - */ - QDomElement root = document.documentElement(); - if (root.tagName() == "qet-directory") { - bool name_found = false; - // parcourt les "names" - for (QDomNode node = root.firstChild() ; !node.isNull() ; node = node.nextSibling()) { - QDomElement names = node.toElement(); - if (names.isNull() || names.tagName() != "names") continue; - // parcourt les "name" - for (QDomNode n = names.firstChild() ; !n.isNull() ; n = n.nextSibling()) { - QDomElement name = n.toElement(); - if (name.isNull() || name.tagName() != "name") continue; - if (name.attribute("lang") == system_language) { - category_name = name.text(); - name_found = true; - break; - } else if (name.attribute("lang") == "en") { - category_name = name.text(); - } - } - if (name_found) break; - } - } - } - directory_conf.close(); - } - } - return(category_name); -} - /** Recharge l'arbre des elements */ diff --git a/newelementwizard.cpp b/newelementwizard.cpp index 302256dcd..d261ae3f5 100644 --- a/newelementwizard.cpp +++ b/newelementwizard.cpp @@ -25,12 +25,10 @@ NewElementWizard::NewElementWizard(QWidget *parent, Qt::WindowFlags f) : QDialog etape1_layout -> addLayout(grid_layout); etape1 -> setLayout(etape1_layout); - // 2eme etape : enregistrement + // 2eme etape : Categorie etape2 = new QWidget(this); QVBoxLayout *etape2_layout = new QVBoxLayout(); - etape2_layout -> addWidget(new QLabel(tr("Entrez un nom et une cat\351gorie dans laquelle enregistrer le nouvel \351l\351ment."))); - qle_nom_element = new QLineEdit(); - etape2_layout -> addWidget(qle_nom_element); + etape2_layout -> addWidget(new QLabel(tr("S\351lectionnez une cat\351gorie dans laquelle enregistrer le nouvel \351l\351ment."))); categories_list = new ElementsCategoriesWidget(); etape2_layout -> addWidget(categories_list); etape2 -> setLayout(etape2_layout); @@ -65,7 +63,7 @@ void NewElementWizard::previous() { switch(current_state) { case Dimensions: return; - case Enregistrement: + case Category: current_state = Dimensions; etape1 -> show(); etape2 -> hide(); @@ -77,13 +75,13 @@ void NewElementWizard::previous() { void NewElementWizard::next() { switch(current_state) { case Dimensions: - current_state = Enregistrement; + current_state = Category; etape1 -> hide(); etape2 -> show(); button_next -> setText(tr("Valider")); button_previous -> setEnabled(true); break; - case Enregistrement: + case Category: valid(); } } @@ -93,7 +91,7 @@ void NewElementWizard::valid() { switch(current_state) { case Dimensions: - case Enregistrement: + case Category: current_state = Dimensions; button_next -> setText(tr("Suivant")); diff --git a/newelementwizard.h b/newelementwizard.h index 2f0309221..7a2c12197 100644 --- a/newelementwizard.h +++ b/newelementwizard.h @@ -1,3 +1,6 @@ +#ifndef NEW_ELEMENT_WIZARD_H +#define NEW_ELEMENT_WIZARD_H +#include /** Cette classe represente un dialogue qui permet a l'utilisateur de specifier les premiers parametres de l'element qu'il va construire. @@ -6,8 +9,6 @@ - la hauteur - et euh... pleins de choses interessantes */ - -#include class ElementsCategoriesWidget; class NewElementWizard : public QDialog { Q_OBJECT @@ -18,12 +19,11 @@ class NewElementWizard : public QDialog { // attributs private: - enum WizardState { Dimensions, Enregistrement }; + enum WizardState { Dimensions, Category }; QSpinBox *sb_largeur; QSpinBox *sb_hauteur; QWidget *etape1; QWidget *etape2; - QLineEdit *qle_nom_element; QPushButton *button_previous; QPushButton *button_next; ElementsCategoriesWidget* categories_list; @@ -38,3 +38,4 @@ class NewElementWizard : public QDialog { void next(); void valid(); }; +#endif diff --git a/qelectrotech.pro b/qelectrotech.pro index 723eea36a..7729fa252 100644 --- a/qelectrotech.pro +++ b/qelectrotech.pro @@ -26,7 +26,9 @@ HEADERS += aboutqet.h \ newelementwizard.h \ qetapp.h \ terminal.h \ - ui_export_fichier.h + ui_export_fichier.h \ + elementscategoryeditor.h \ + elementscategory.h SOURCES += aboutqet.cpp \ borderinset.cpp \ conducer.cpp \ @@ -45,7 +47,9 @@ SOURCES += aboutqet.cpp \ main.cpp \ newelementwizard.cpp \ qetapp.cpp \ - terminal.cpp + terminal.cpp \ + elementscategoryeditor.cpp \ + elementscategory.cpp RESOURCES += qelectrotech.qrc TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts CONFIG += debug warn_on