From 5ca6faafee63850c0b164e90a1d0c08dfee7c536 Mon Sep 17 00:00:00 2001 From: Geoff Hutchison Date: Fri, 8 Jul 2022 13:13:10 -0400 Subject: [PATCH 1/2] Ensure all rendering plugins initialize the layer manager Signed-off-by: Geoff Hutchison --- avogadro/qtplugins/crystal/crystalscene.cpp | 19 +++--------------- avogadro/qtplugins/crystal/crystalscene.h | 8 +------- avogadro/qtplugins/force/force.cpp | 22 +++++++-------------- avogadro/qtplugins/force/force.h | 11 +++++------ avogadro/qtplugins/meshes/meshes.cpp | 19 +++--------------- avogadro/qtplugins/meshes/meshes.h | 20 +++++++++---------- 6 files changed, 28 insertions(+), 71 deletions(-) diff --git a/avogadro/qtplugins/crystal/crystalscene.cpp b/avogadro/qtplugins/crystal/crystalscene.cpp index c0b586ccc..5d0067a4b 100644 --- a/avogadro/qtplugins/crystal/crystalscene.cpp +++ b/avogadro/qtplugins/crystal/crystalscene.cpp @@ -31,8 +31,10 @@ using Rendering::GroupNode; using Rendering::LineStripGeometry; CrystalScene::CrystalScene(QObject* p) - : ScenePlugin(p), m_enabled(true), m_setupWidget(nullptr) + : ScenePlugin(p), m_setupWidget(nullptr) { + m_layerManager = QtGui::PluginLayerManager(m_name); + QSettings settings; m_lineWidth = settings.value("crystal/lineWidth", 2.0).toDouble(); @@ -96,21 +98,6 @@ void CrystalScene::process(const QtGui::Molecule& molecule, GroupNode& node) } } -bool CrystalScene::isEnabled() const -{ - return m_enabled; -} - -bool CrystalScene::isActiveLayerEnabled() const -{ - return m_enabled; -} - -void CrystalScene::setEnabled(bool enable) -{ - m_enabled = enable; -} - void CrystalScene::setLineWidth(double width) { m_lineWidth = width; diff --git a/avogadro/qtplugins/crystal/crystalscene.h b/avogadro/qtplugins/crystal/crystalscene.h index e2eec207c..e3b1ba88a 100644 --- a/avogadro/qtplugins/crystal/crystalscene.h +++ b/avogadro/qtplugins/crystal/crystalscene.h @@ -35,12 +35,6 @@ class CrystalScene : public QtGui::ScenePlugin return tr("Render the unit cell boundaries."); } - bool isEnabled() const override; - - bool isActiveLayerEnabled() const override; - - void setEnabled(bool enable) override; - QWidget* setupWidget() override; private slots: @@ -48,7 +42,7 @@ private slots: void setLineWidth(double width); private: - bool m_enabled; + std::string m_name = "Crystal Lattice"; QWidget* m_setupWidget; float m_lineWidth; diff --git a/avogadro/qtplugins/force/force.cpp b/avogadro/qtplugins/force/force.cpp index 1f214f6fd..c89bc227a 100644 --- a/avogadro/qtplugins/force/force.cpp +++ b/avogadro/qtplugins/force/force.cpp @@ -28,7 +28,10 @@ using Rendering::ArrowGeometry; using Rendering::GeometryNode; using Rendering::GroupNode; -Force::Force(QObject* p) : ScenePlugin(p), m_enabled(false) {} +Force::Force(QObject* p) : ScenePlugin(p) +{ + m_layerManager = QtGui::PluginLayerManager(m_name); +} Force::~Force() {} @@ -41,6 +44,9 @@ void Force::process(const QtGui::Molecule& molecule, Rendering::GroupNode& node) arrows->identifier().molecule = &molecule; geometry->addDrawable(arrows); for (Index i = 0; i < molecule.atomCount(); ++i) { + if (!m_layerManager.atomEnabled(i)) + continue; // ignore hidden atoms + Core::Atom atom1 = molecule.atom(i); Vector3f pos1 = atom1.position3d().cast(); Vector3f forceVector = atom1.forceVector().cast(); @@ -48,19 +54,5 @@ void Force::process(const QtGui::Molecule& molecule, Rendering::GroupNode& node) } } -bool Force::isEnabled() const -{ - return m_enabled; -} - -bool Force::isActiveLayerEnabled() const -{ - return m_enabled; -} - -void Force::setEnabled(bool enable) -{ - m_enabled = enable; -} } // namespace QtPlugins } // namespace Avogadro diff --git a/avogadro/qtplugins/force/force.h b/avogadro/qtplugins/force/force.h index 0b312b05d..3f9d47a24 100644 --- a/avogadro/qtplugins/force/force.h +++ b/avogadro/qtplugins/force/force.h @@ -33,14 +33,13 @@ class Force : public QtGui::ScenePlugin "Render the force field visualizations for the atoms of the molecule."); } - bool isEnabled() const override; - - bool isActiveLayerEnabled() const override; - - void setEnabled(bool enable) override; + DefaultBehavior defaultBehavior() const override + { + return DefaultBehavior::False; + } private: - bool m_enabled; + std::string m_name = "Force"; }; } // end namespace QtPlugins diff --git a/avogadro/qtplugins/meshes/meshes.cpp b/avogadro/qtplugins/meshes/meshes.cpp index f817e1558..ef248f455 100644 --- a/avogadro/qtplugins/meshes/meshes.cpp +++ b/avogadro/qtplugins/meshes/meshes.cpp @@ -29,8 +29,10 @@ using Rendering::GeometryNode; using Rendering::GroupNode; using Rendering::MeshGeometry; -Meshes::Meshes(QObject* p) : ScenePlugin(p), m_enabled(true), m_setupWidget(nullptr) +Meshes::Meshes(QObject* p) : ScenePlugin(p), m_setupWidget(nullptr) { + m_layerManager = QtGui::PluginLayerManager(m_name); + QSettings settings; // out of 255 m_opacity = settings.value("meshes/opacity", 150).toUInt(); @@ -106,21 +108,6 @@ void Meshes::process(const QtGui::Molecule& mol, GroupNode& node) } } -bool Meshes::isEnabled() const -{ - return m_enabled; -} - -bool Meshes::isActiveLayerEnabled() const -{ - return m_enabled; -} - -void Meshes::setEnabled(bool enable) -{ - m_enabled = enable; -} - void Meshes::setOpacity(int opacity) { m_opacity = opacity; diff --git a/avogadro/qtplugins/meshes/meshes.h b/avogadro/qtplugins/meshes/meshes.h index 4866bb768..1ce27518e 100644 --- a/avogadro/qtplugins/meshes/meshes.h +++ b/avogadro/qtplugins/meshes/meshes.h @@ -24,28 +24,26 @@ class Meshes : public QtGui::ScenePlugin explicit Meshes(QObject* parent = nullptr); ~Meshes() override; - void process(const QtGui::Molecule& mol, - Rendering::GroupNode& node) override; + void process(const QtGui::Molecule& mol, Rendering::GroupNode& node) override; QString name() const override { return tr("Meshes"); } QString description() const override { return tr("Render polygon meshes."); } - bool isEnabled() const override; - - bool isActiveLayerEnabled() const override; - - void setEnabled(bool enable) override; - QWidget* setupWidget() override; + DefaultBehavior defaultBehavior() const override + { + return DefaultBehavior::False; + } + private slots: - void setColor1(const QColor &color); - void setColor2(const QColor &color); + void setColor1(const QColor& color); + void setColor2(const QColor& color); void setOpacity(int opacity); private: - bool m_enabled; + std::string m_name = "Meshes"; QWidget* m_setupWidget; unsigned char m_opacity; From 0584d16fa6d88f239f2f7f579ee1563fd2710a85 Mon Sep 17 00:00:00 2001 From: Geoff Hutchison Date: Fri, 8 Jul 2022 14:26:40 -0400 Subject: [PATCH 2/2] More work on translating layer plugin names Signed-off-by: Geoff Hutchison --- avogadro/qtgui/layermodel.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/avogadro/qtgui/layermodel.cpp b/avogadro/qtgui/layermodel.cpp index 4f3c21d7f..daa8fc73c 100644 --- a/avogadro/qtgui/layermodel.cpp +++ b/avogadro/qtgui/layermodel.cpp @@ -7,6 +7,7 @@ #include "molecule.h" #include "rwmolecule.h" +#include #include #include #include @@ -123,18 +124,27 @@ const QString LayerModel::getTranslatedName(const std::string& name) const { // This is a bad hack, but whatever.. // Put all the strings that show up as layer options + if (name == "Ball and Stick") return tr("Ball and Stick"); else if (name == "Cartoons") return tr("Cartoons", "protein ribbon / cartoon rendering"); else if (name == "Close Contacts") return tr("Close Contacts", "rendering of non-covalent close contacts"); + else if (name == "Crystal Lattice") + return tr("Crystal Lattice"); + else if (name == "Force") + return tr("Force"); else if (name == "Labels") return tr("Labels"); else if (name == "Licorice") return tr("Licorice", "stick / licorice rendering"); + else if (name == "Meshes") + return tr("Meshes"); else if (name == "Non-Covalent") return tr("Non-Covalent"); + else if (name == "Symmetry Elements") + return tr("Symmetry Elements"); else if (name == "Van der Waals") return tr("Van der Waals"); else if (name == "Van der Waals (AO)") @@ -142,7 +152,9 @@ const QString LayerModel::getTranslatedName(const std::string& name) const else if (name == "Wireframe") return tr("Wireframe"); - return QString(); + qDebug() << "LayerModel: name didn't match: " << name.c_str(); + + return QString(name.c_str()); } QModelIndex LayerModel::index(int row, int column, const QModelIndex& p) const