From b03fd11b73748f73d9d10423794e6e4ff7c05ddc Mon Sep 17 00:00:00 2001 From: Yann Boucher <yann.boucher@etu.utc.fr> Date: Wed, 9 Jun 2021 23:16:09 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9solution=20d'un=20bug=20dans=20Automaton?= =?UTF-8?q?,=20qui=20inversait=20colonnes=20et=20lignes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/property.hpp | 22 +++++++++++++++++++ include/propertyvisitors.hpp | 4 ++++ .../transition_rules/totalistictransition.hpp | 1 + src/automaton.cpp | 12 +++++----- src/uibuildervisitor.cpp | 11 ++++++++++ 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/include/property.hpp b/include/property.hpp index 7a07093..42b72d6 100644 --- a/include/property.hpp +++ b/include/property.hpp @@ -159,6 +159,28 @@ public: std::string str; }; +/** +\class HelpProperty + +\brief Représente un bouton permettant l'affichage d'un manuel. +**/ +struct HelpProperty : public PropertyImpl<StringProperty> +{ +public: + //! \brief Constructeur par défaut. + HelpProperty() = default; + /** \brief Constructeur avec valeur initiale. + \param initval Valeur initiale. + **/ + HelpProperty(const std::string& initval) + : str(initval) + {} + +public: + //! \brief La chaîne de caractères contenant l'aide. + std::string str; +}; + /** \class IntegerProperty diff --git a/include/propertyvisitors.hpp b/include/propertyvisitors.hpp index 2af21eb..1651f9c 100644 --- a/include/propertyvisitors.hpp +++ b/include/propertyvisitors.hpp @@ -59,6 +59,7 @@ private: void visit(IntegerProperty& prop); void visit(CoordinateProperty& prop); void visit(PropertyList& list); + void visit(HelpProperty&); private: std::stack<QWidget*> m_widget_hierarchy; @@ -88,6 +89,7 @@ private: void visit(IntegerProperty& prop); void visit(CoordinateProperty& prop); void visit(PropertyList& list); + void visit(HelpProperty&) {} private: std::stack<QVariant> m_current_hierarchy; @@ -114,6 +116,8 @@ private: void visit(IntegerProperty& prop); void visit(CoordinateProperty& prop); void visit(PropertyList& prop); + void visit(HelpProperty&) {} + private: std::stack<QJsonValue> m_current_hierarchy; }; diff --git a/include/transition_rules/totalistictransition.hpp b/include/transition_rules/totalistictransition.hpp index 7cac023..afbeabd 100644 --- a/include/transition_rules/totalistictransition.hpp +++ b/include/transition_rules/totalistictransition.hpp @@ -130,6 +130,7 @@ private: private: mutable std::vector<TotalisticRuleEntry> m_entries; DEFINE_CONFIGURABLE_PROPERTY(StringProperty, rule_string, "Rule String"); + DEFINE_CONFIGURABLE_PROPERTY(HelpProperty, help_string, "All your base are belong to us"); }; #endif // TOTALISTICTRANSITIONRULE_HPP diff --git a/src/automaton.cpp b/src/automaton.cpp index db54b09..f353bdb 100644 --- a/src/automaton.cpp +++ b/src/automaton.cpp @@ -9,8 +9,8 @@ Automaton::~Automaton() { void Automaton::setAlphabet(const Alphabet& A) { alphabet = A; - for(int i=0; i<static_cast<int>(grid.get_rows()); ++i) { - for(int j=0; j<static_cast<int>(grid.get_col()); ++j) { + for(int i=0; i<static_cast<int>(grid.get_col()); ++i) { + for(int j=0; j<static_cast<int>(grid.get_rows()); ++j) { grid.set_cell({i,j}, 0); } } @@ -45,8 +45,8 @@ const Grid& Automaton::getGrid() const { void Automaton::setGrid(const Grid& G) { grid = G; unsigned int state; - for(int i=0; i<static_cast<int>(grid.get_rows()); ++i) { - for(int j=0; j<static_cast<int>(grid.get_col()); ++j) { + for(int i=0; i<static_cast<int>(grid.get_col()); ++i) { + for(int j=0; j<static_cast<int>(grid.get_rows()); ++j) { state = grid.get_state({i,j}); if(state >= alphabet.taille()) { grid.set_cell({i,j}, state%alphabet.taille()); @@ -57,8 +57,8 @@ void Automaton::setGrid(const Grid& G) { void Automaton::runOnce() { Grid tempGrid(grid); - for(int i=0; i<static_cast<int>(grid.get_rows()); ++i) { - for(int j=0; j<static_cast<int>(grid.get_col()); ++j) { + for(int i=0; i<static_cast<int>(grid.get_col()); ++i) { + for(int j=0; j<static_cast<int>(grid.get_rows()); ++j) { tempGrid.set_cell({i, j}, transitionRule->getState(grid.get_state({i,j}),neighbourhoodRule->getNeighborhood(grid, {i, j}))%alphabet.taille()); } } diff --git a/src/uibuildervisitor.cpp b/src/uibuildervisitor.cpp index 8529205..05a1f57 100644 --- a/src/uibuildervisitor.cpp +++ b/src/uibuildervisitor.cpp @@ -130,6 +130,17 @@ void UIBuilderVisitor::visit(CoordinateProperty &prop) [&prop](int i) { prop.c.y = i; }); } +void UIBuilderVisitor::visit(HelpProperty& prop) +{ + QPushButton* button = new QPushButton("Help", current_widget()); + add_widget("", button); + + QObject::connect(button, &QPushButton::clicked, + [&prop]() { + QMessageBox::information(NULL, "Help", QString::fromStdString(prop.str)); + }); +} + void UIBuilderVisitor::visit(PropertyList &list) { push_array_widget(list); -- GitLab